/* ╔════════════════════════════════════════════════════════════════════╗
   ║  DASHBOARD DE PROPIEDAD — estilos para el modal full-screen que     ║
   ║  reemplaza al antiguo detalle. Visualiza 6 cards por propiedad,     ║
   ║  cada uno expandible a una vista de tabla con tabs si tiene varias  ║
   ║  secciones. Sin dependencia de frameworks: tokens del proyecto +   ║
   ║  utilidades nuevas.                                                 ║
   ╚════════════════════════════════════════════════════════════════════╝ */

:root{
  /* Paleta alineada con la maqueta de referencia "Dashboard v3": grises
     entintados de índigo (no la escala slate de Tailwind que había antes). */
  --dash-bg: #F8F9FC;
  --dash-card: #FFFFFF;
  --dash-border: #E9EBF3;
  --dash-border-soft: #F1F2F8;
  --dash-ink: #111322;
  --dash-ink2: #444A63;
  --dash-ink3: #7A7F97;
  --dash-ink4: #A2A7BD;          /* apagado: placeholders, chevron, vacíos */
  /* Alias: hay 28 declaraciones escritas con guion (--dash-ink-2/-3) que sin
     esto resolvían a inherit. Se mantienen para no tocar 28 líneas. */
  --dash-ink-2: #444A63;
  --dash-ink-3: #7A7F97;
  /* ESCALA ÍNDIGO — única familia cromática del detalle de propiedad.
     Todo el color sale de acá: la jerarquía se comunica por CLARIDAD
     (más oscuro = más severo), no por matiz. Nada de verde/rojo/ámbar
     sueltos, que era lo que hacía ver la pantalla como un arlequín. */
  --dash-i-50:  #EEF0FE;
  --dash-i-100: #DFE3FB;
  --dash-i-200: #C9CEF4;
  --dash-i-300: #A5ABEF;
  --dash-i-400: #7C82E8;
  --dash-i-500: #4F46E5;
  --dash-i-600: #4338CA;
  --dash-i-700: #3730A3;
  --dash-i-800: #312E81;
  --dash-i-900: #1E1B4B;
  --dash-indigo: var(--dash-i-500);
  --dash-indigo-tint: var(--dash-i-50);
  /* Roles de la referencia que antes iban hardcodeados */
  --dash-track: #ECEEF5;         /* pista de barras de progreso */
  --dash-track-ink: var(--dash-i-700);
  --dash-pill-soft-bg: var(--dash-i-100);  /* píldora suave (plan de pago) */
  --dash-pill-soft-ink: var(--dash-i-800);
  --dash-pill-solid-bg: var(--dash-i-800); /* píldora sólida (deuda sin plan) */
  --dash-pill-solid-ink: #FFFFFF;
  --dash-thead-bg: #F8F9FC;
  --dash-row-border: #F1F2F8;
  --dash-btn-primary-border: var(--dash-i-200);
  --dash-btn-ghost-border: #DCDFEB;
  /* Los antiguos acentos semánticos ahora son escalones del índigo. Se
     conservan los NOMBRES para no tocar ~200 declaraciones; lo que cambia es
     a qué apuntan. La severidad la da el escalón, no el matiz:
       emerald (ok/calmo) → 400 · amber (atención) → 600 · rose (alerta) → 800 */
  --dash-emerald: var(--dash-i-400);
  --dash-emerald-tint: var(--dash-i-50);
  --dash-rose: var(--dash-i-800);
  --dash-rose-tint: var(--dash-i-100);
  --dash-amber: var(--dash-i-600);
  --dash-amber-tint: var(--dash-i-50);
  /* Plaques: mismo criterio, escalones del índigo en vez de gris pizarra */
  --pd-plaque-bg-1: var(--dash-i-50);
  --pd-plaque-bg-2: var(--dash-i-100);
  --pd-plaque-border: rgba(79,70,229,.22);
  --pd-plaque-icon-1: var(--dash-i-400);
  --pd-plaque-icon-2: var(--dash-i-600);
  --pd-plaque-icon-shadow: 0 4px 12px -4px rgba(79,70,229,.4);
  --pd-plaque-text-strong: var(--dash-i-900);
  --pd-plaque-text-soft: var(--dash-i-700);
  --pd-plaque-tag-bg: #fff;
  --pd-plaque-tag-border: rgba(79,70,229,.28);
  --pd-plaque-tag-text: var(--dash-i-700);
  --dash-blue: var(--dash-i-500);
  --dash-blue-tint: var(--dash-i-50);
  --dash-teal: var(--dash-i-400);
  --dash-teal-tint: var(--dash-i-50);
  --dash-slate-900: #0F172A;
  --dash-shadow: 0 1px 3px rgba(15,23,42,.08);
  --dash-shadow-lg: 0 10px 30px rgba(15,23,42,.16);
  --dash-shadow-card: 0 1px 2px rgba(38,34,98,.04), 0 4px 14px rgba(38,34,98,.05);
  --dash-r: 10px;
  --dash-r-sm: 12px;
  --dash-r-xs: 8px;
}

/* ═══════════════ SHELL DEL DASHBOARD ═══════════════ */

.pd-shell{font-size:13.5px;color:var(--dash-ink);line-height:1.5;width:100%;min-width:0}
.pd-shell *{box-sizing:border-box}

.pd-header{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:0 4px 16px;border-bottom:1px solid var(--dash-border);margin-bottom:18px}
.pd-header h1{margin:0;font-size:clamp(18px,1.8vw,24px);font-weight:800;letter-spacing:-0.01em;display:flex;align-items:center;gap:10px}
.pd-header .pd-subtitle{color:var(--dash-ink2);font-size:13px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pd-header .pd-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.pd-header .pd-badge{display:inline-flex;align-items:center;gap:4px;background:var(--dash-indigo-tint);color:var(--dash-indigo);font-size:11px;font-weight:800;padding:3px 10px;border-radius:99px;letter-spacing:0.04em;text-transform:uppercase}
.pd-header .pd-pill{display:inline-flex;align-items:center;gap:4px;background:var(--dash-emerald-tint);color:var(--dash-emerald);font-size:11px;font-weight:800;padding:3px 10px;border-radius:99px;letter-spacing:0.04em;text-transform:uppercase}

/* Grid principal: 12 columnas fluidas. Las celdas individuales definen su
   propio span (pd-col-N). En breakpoints chicos, todas ocupan 12 (full width). */
.pd-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(12px,1.2vw,20px);width:100%}
.pd-col-12{grid-column:span 12}
.pd-col-8{grid-column:span 12}
.pd-col-7{grid-column:span 12}
.pd-col-5{grid-column:span 12}
.pd-col-4{grid-column:span 12}
.pd-col-6{grid-column:span 12}
@media (min-width:760px){
  .pd-col-6{grid-column:span 6}
}
@media (min-width:1024px){
  .pd-col-8{grid-column:span 8}
  .pd-col-4{grid-column:span 4}
}
@media (min-width:1280px){
  .pd-col-7{grid-column:span 7}
  .pd-col-5{grid-column:span 5}
}
/* Ultra-wide (>1600px): los cards anchos (7/5) se sienten bien; pero evitamos
   que el contenido interno de cada card se estire a ms de 1600px para no
   generar líneas de texto incómodas. Cada card internamente se cuida. */

/* ═══════════════ CARD GENÉRICO ═══════════════ */

.pd-card{background:var(--dash-card);border:1px solid var(--dash-border);border-radius:var(--dash-r);box-shadow:var(--dash-shadow-card);overflow:hidden;display:flex;flex-direction:column}
.pd-card .pd-card-bar{height:6px;width:100%}
.pd-card .pd-card-bar.indigo{background:var(--dash-indigo)}
.pd-card .pd-card-bar.emerald{background:var(--dash-emerald)}
.pd-card .pd-card-bar.rose{background:var(--dash-rose)}

@keyframes pd-pulse{0%,100%{opacity:1}50%{opacity:.45}}
.pd-card .pd-card-bar.amber{background:linear-gradient(90deg,#475569 0%,#64748B 50%,#475569 100%)}
.pd-card .pd-card-body{padding:18px 22px 20px;display:flex;flex-direction:column;gap:14px;flex:1}
.pd-card .pd-card-foot{background:#F8FAFC;border-top:1px solid var(--dash-border-soft);padding:10px 22px;font-size:11px;color:var(--dash-ink3);display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center}
.pd-card .pd-section-title{display:flex;align-items:center;gap:8px;padding-bottom:10px;border-bottom:1px solid var(--dash-border-soft)}
.pd-card .pd-section-title .pd-stripe{height:4px;width:32px;background:var(--dash-indigo);border-radius:2px}
.pd-card .pd-section-title .pd-eyebrow{font-size:10.5px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:var(--dash-indigo)}
.pd-card .pd-card-h{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--dash-border-soft)}
.pd-card .pd-card-h .pd-eyebrow{font-size:10.5px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:var(--dash-ink3);display:flex;align-items:center;gap:6px}
.pd-card .pd-card-h h3{margin:4px 0 0;font-size:18px;font-weight:800;letter-spacing:-0.01em}
.pd-card .pd-card-h .pd-tag{font-size:11px;font-weight:800;padding:3px 10px;border-radius:99px;background:var(--dash-emerald-tint);color:var(--dash-emerald);border:1px solid rgba(79,70,229,.15)}
.pd-card .pd-card-h .pd-tag.indigo{background:var(--dash-indigo-tint);color:var(--dash-indigo);border:1px solid rgba(79,70,229,.15)}
.pd-card .pd-card-h .pd-tag.amber{background:var(--dash-amber-tint);color:var(--dash-amber);border:1px solid rgba(79,70,229,.2)}

.pd-lead{color:var(--dash-ink2);font-size:12.5px;line-height:1.55;max-width:64ch}

/* ═══════════════ HEADER DE SECCIÓN GRANDE (Tickets) ═══════════════ */

.pd-section-head{margin-bottom:6px}
.pd-section-head .pd-eyebrow{font-size:10.5px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:var(--dash-indigo);display:inline-flex;align-items:center;gap:8px}
.pd-section-head .pd-eyebrow .pd-stripe{height:4px;width:32px;background:var(--dash-indigo);border-radius:2px;display:inline-block}
.pd-section-head h2{margin:6px 0 6px;font-size:26px;font-weight:800;letter-spacing:-0.015em}
.pd-section-head p{color:var(--dash-ink2);font-size:12.5px;line-height:1.55;max-width:80ch;margin:0}

/* ═══════════════ CONTADOR MASIVO ═══════════════ */

.pd-counter{text-align:center;padding:18px 14px;border-radius:14px;background:#F8FAFC;border:1px solid var(--dash-border-soft)}
.pd-counter.danger{background:#EEF0FE;border-color:#C9CEF4}
.pd-counter.success{background:var(--dash-emerald-tint);border-color:#C9CEF4}
.pd-counter .pd-counter-num{font-size:48px;font-weight:900;letter-spacing:-0.02em;line-height:1;color:var(--dash-ink);font-variant-numeric:tabular-nums}
.pd-counter.success .pd-counter-num{color:var(--dash-emerald)}
.pd-counter.danger .pd-counter-num{color:var(--dash-rose)}
.pd-counter .pd-counter-label{font-size:10.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-ink3);margin-top:6px;display:block}
.pd-counter.success .pd-counter-label{color:var(--dash-emerald)}

/* ═══════════════ STATS / BENTO GRID ═══════════════ */

.pd-stat{background:#F8FAFC;border:1px solid var(--dash-border-soft);border-radius:12px;padding:14px 16px}
.pd-stat .pd-stat-label{font-size:10.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-ink3);display:flex;align-items:center;gap:6px}
.pd-stat .pd-stat-value{font-size:24px;font-weight:900;letter-spacing:-0.015em;margin-top:4px;font-variant-numeric:tabular-nums;color:var(--dash-ink)}
.pd-stat.success{background:var(--dash-emerald-tint);border-color:#C9CEF4}
.pd-stat.success .pd-stat-value{color:var(--dash-emerald)}
.pd-stat.warning{background:var(--dash-amber-tint);border-color:#C9CEF4}
.pd-stat.warning .pd-stat-value{color:var(--dash-amber)}
.pd-stat.danger{background:var(--dash-rose-tint);border-color:#C9CEF4}
.pd-stat.danger .pd-stat-value{color:var(--dash-rose)}
.pd-stat .pd-stat-foot{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--dash-ink3);margin-top:8px;padding-top:8px;border-top:1px solid var(--dash-border-soft)}

/* ═══════════════ SUB-ROWS (Urgente / Importante / En espera) ═══════════════ */

.pd-subrow{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-radius:8px;font-size:11.5px}
.pd-subrow.rose{background:rgba(223,227,251,.5);border:1px solid rgba(201,206,244,.5);color:#1E1B4B}
.pd-subrow.amber{background:rgba(223,227,251,.5);border:1px solid rgba(201,206,244,.5);color:#312E81}
.pd-subrow.slate{background:#F8FAFC;border:1px solid var(--dash-border-soft);color:var(--dash-ink3)}
.pd-subrow .pd-subrow-count{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-weight:800;background:rgba(255,255,255,.7);padding:1px 8px;border-radius:6px;font-size:10.5px}

/* ═══════════════ BOTONES DE CARD (click to expand) ═══════════════ */

.pd-card-click{cursor:pointer;transition:box-shadow .15s,transform .15s,border-color .15s}
.pd-card-click:hover{box-shadow:0 12px 30px -10px rgba(15,23,42,.18);transform:translateY(-1px);border-color:#CBD5E1}
.pd-card-click .pd-expand-hint{margin-left:auto;font-size:10.5px;font-weight:800;letter-spacing:0.08em;text-transform:uppercase;color:var(--dash-ink3);display:inline-flex;align-items:center;gap:4px}
.pd-card-click:hover .pd-expand-hint{color:var(--dash-indigo)}

/* ═══════════════ TABS ═══════════════ */

.pd-tabs{display:flex;flex-wrap:wrap;gap:6px;background:#F1F5F9;padding:4px;border-radius:10px;border:1px solid var(--dash-border-soft)}
.pd-tab{padding:8px 14px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--dash-ink2);background:transparent;border:0;cursor:pointer;transition:background .12s,color .12s;display:inline-flex;align-items:center;gap:6px}
.pd-tab:hover{color:var(--dash-ink)}
.pd-tab.on{background:#fff;color:var(--dash-indigo);box-shadow:0 1px 2px rgba(15,23,42,.06);border:1px solid var(--dash-border-soft)}
.pd-tab .pd-tab-count{background:rgba(79,70,229,.1);color:var(--dash-indigo);font-size:10px;padding:1px 6px;border-radius:99px;font-weight:800}
.pd-tab.on .pd-tab-count{background:var(--dash-indigo);color:#fff}
.pd-tab-panel{display:none}
.pd-tab-panel.on{display:block}

/* ═══════════════ TABLAS ═══════════════ */

.pd-tablewrap{border:1px solid var(--dash-border);border-radius:12px;overflow:hidden;background:#fff}
.pd-table{width:100%;border-collapse:collapse;font-size:12.5px}
.pd-table thead th{background:#F8FAFC;text-align:left;font-size:10.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-ink3);padding:10px 14px;border-bottom:1px solid var(--dash-border);border-right:1px solid var(--dash-border-soft);white-space:nowrap}
.pd-table thead th:last-child{border-right:0}
.pd-table thead th.right{text-align:right}
.pd-table tbody td{padding:12px 14px;border-bottom:1px solid var(--dash-border-soft);border-right:1px solid var(--dash-border-soft);color:var(--dash-ink);vertical-align:top}
.pd-table tbody td:last-child{border-right:0}
.pd-table tbody td.right{text-align:right}
.pd-table tbody td.mono{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace}
.pd-table tbody td.muted{color:var(--dash-ink2)}
.pd-table tbody td.bold{font-weight:800}
.pd-table tbody td.rose{color:var(--dash-rose);font-weight:800}
.pd-table tbody td.amber{color:var(--dash-amber);font-weight:800}
.pd-table tbody td.success{color:var(--dash-emerald);font-weight:800}
.pd-table tbody tr:last-child td{border-bottom:0}
.pd-table tbody tr:hover{background:#F8FAFC}
.pd-table tbody td.rowspan-cell{background:rgba(223,227,251,.4);color:#1E1B4B;font-weight:800;text-align:center;text-transform:uppercase;letter-spacing:0.05em;font-size:10.5px;vertical-align:middle;width:140px;border-right:1px solid var(--dash-border)}
.pd-table tbody td.rowspan-cell.amber{background:rgba(223,227,251,.4);color:#312E81}
.pd-table tbody td.rowspan-cell.blue{background:var(--dash-blue-tint);color:#1E3A8A}
.pd-table tbody td.rowspan-cell.teal{background:var(--dash-teal-tint);color:#312E81}

.pd-status{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:99px;font-size:10.5px;font-weight:800;border:1px solid transparent}
.pd-status.danger{background:var(--dash-rose-tint);color:var(--dash-rose);border-color:#C9CEF4}
.pd-status.warning{background:var(--dash-amber-tint);color:var(--dash-amber);border-color:#C9CEF4}
.pd-status.info{background:var(--dash-blue-tint);color:var(--dash-blue);border-color:#BFDBFE}
.pd-status.teal{background:var(--dash-teal-tint);color:var(--dash-teal);border-color:#C9CEF4}
.pd-status.success{background:var(--dash-emerald-tint);color:var(--dash-emerald);border-color:#C9CEF4}
.pd-status .pd-dot{width:6px;height:6px;border-radius:99px;background:currentColor;flex:none}
.pd-status.danger .pd-dot{animation:pd-pulse 1.4s ease-in-out infinite}

@keyframes pd-pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* ═══════════════ SUB-CARDS (cuadrícula interna) ═══════════════ */

.pd-subgrid{display:grid;grid-template-columns:1fr;gap:18px}
@media (min-width:760px){.pd-subgrid{grid-template-columns:1fr 1fr}}

.pd-subcard{border:1px solid var(--dash-border);border-radius:12px;background:#fff;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.pd-subcard-head{display:flex;align-items:center;gap:8px}
.pd-subcard-head .pd-iconbox{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--dash-indigo-tint);color:var(--dash-indigo)}
.pd-subcard-head .pd-iconbox.rose{background:var(--dash-rose-tint);color:var(--dash-rose)}
.pd-subcard-head .pd-iconbox.emerald{background:var(--dash-emerald-tint);color:var(--dash-emerald)}
.pd-subcard-head h4{margin:0;font-size:13.5px;font-weight:800;letter-spacing:-0.01em}

/* ═══════════════ BARRAS / CONTROLES ═══════════════ */

.pd-bar-track{position:relative;height:14px;background:#F1F5F9;border-radius:99px;border:1px solid var(--dash-border-soft);overflow:hidden}
.pd-bar-fill{height:100%;border-radius:99px;transition:width .25s ease-out}
.pd-bar-fill.success{background:linear-gradient(90deg,#7C82E8,#4F46E5)}
.pd-bar-fill.warning{background:linear-gradient(90deg,#7C82E8,#4F46E5)}
.pd-bar-fill.danger{background:linear-gradient(90deg,#7C82E8,#4F46E5)}
.pd-bar-fill.indigo{background:linear-gradient(90deg,#818CF8,#4F46E5)}
.pd-bar-tick{position:absolute;top:0;bottom:0;width:4px;background:#94A3B8;z-index:2}
.pd-bar-legend{display:flex;justify-content:space-between;font-size:10.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-ink3)}

.pd-control{background:#F8FAFC;border:1px solid var(--dash-border-soft);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.pd-control-label{display:flex;justify-content:space-between;font-size:11.5px;font-weight:600;color:var(--dash-ink)}
.pd-control-label .pd-control-value{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-weight:800;color:var(--dash-indigo)}
.pd-control-label .pd-control-value.rose{color:var(--dash-rose)}
.pd-control input[type=range]{width:100%;height:4px;background:#E2E8F0;border-radius:99px;appearance:none;outline:none}
.pd-control input[type=range]::-webkit-slider-thumb{appearance:none;width:16px;height:16px;background:#4F46E5;border-radius:99px;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.pd-control input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#4F46E5;border-radius:99px;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.2)}

/* ═══════════════ GAUGE CIRCULAR ═══════════════ */

/* El marcado real es .pd-gauge-wrap > .pd-gauge-center: no existe ningún
   ancestro .pd-gauge, así que estas reglas van sin scopear. La rotación del
   anillo la hace el propio <circle> con transform="rotate(-90 50 50)". */
.pd-gauge-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 22px}
.pd-gauge-num{font-size:28px;font-weight:900;letter-spacing:-0.02em;line-height:1;color:var(--dash-ink);display:flex;align-items:baseline;justify-content:center;gap:2px;white-space:nowrap}
.pd-gauge-num .pd-gauge-of{font-size:12px;color:var(--dash-ink3);font-weight:600}
.pd-gauge-pct{font-size:9.5px;font-weight:800;color:var(--dash-emerald);letter-spacing:0.1em;text-transform:uppercase;margin-top:2px}
.pd-gauge-wrap{position:relative;width:160px;height:160px;display:flex;align-items:center;justify-content:center;background:var(--dash-bg);border:1px solid var(--dash-border-soft);border-radius:50%;padding:8px}
/* El <svg> se emite con width/height=170 fijos y desbordaba el círculo. */
.pd-gauge-wrap > svg{width:100%;height:100%;display:block}

.pd-occ .pd-card-body{padding:14px 16px;display:flex;flex-direction:column;gap:14px;align-items:center}
.pd-occ .pd-card-h{width:100%;padding-bottom:10px}
.pd-occ .pd-card-h h3{font-size:16px}
.pd-occ-gauge-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.pd-occ-gauge-label{font-size:9.5px;font-weight:800;letter-spacing:0.16em;text-transform:uppercase;color:var(--dash-ink-3);line-height:1.2}
.pd-occ-gauge-wrap .pd-gauge-wrap{width:170px;height:170px;background:#fff;border:1px solid var(--dash-border-soft);box-shadow:0 6px 20px -10px rgba(15,23,42,.12)}
.pd-occ-gauge-wrap .pd-gauge-num{font-size:28px}
.pd-occ-gauge-wrap .pd-gauge-pct{font-size:10.5px;letter-spacing:0.14em;margin-top:4px}

/* Simulador de capacidad */
.pd-occ-sim{width:100%;display:flex;flex-direction:column;gap:8px;padding:10px 12px;background:#F8FAFC;border:1px solid var(--dash-border-soft);border-radius:10px}
.pd-occ-sim-label{font-size:9.5px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:var(--dash-ink-3);display:inline-flex;align-items:center;gap:5px;line-height:1.2}
.pd-occ-sim-label .icon{width:12px;height:12px;color:var(--dash-emerald)}
.pd-occ-sim-row{display:flex;align-items:center;gap:8px}
.pd-occ-sim-btn{width:28px;height:28px;border-radius:8px;background:#fff;border:1px solid var(--dash-border);color:var(--dash-ink-2);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;transition:background .12s,color .12s,border-color .12s}
.pd-occ-sim-btn:hover{background:var(--dash-emerald-tint);color:var(--dash-emerald);border-color:var(--dash-emerald)}
.pd-occ-sim-btn .icon{width:14px;height:14px}
.pd-occ-sim-track{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.pd-occ-sim-track input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:6px;background:linear-gradient(90deg,#4F46E5 0%,#4F46E5 var(--p,83%),#E2E8F0 var(--p,83%),#E2E8F0 100%);border-radius:99px;outline:none;cursor:pointer;border:0;padding:0;margin:0}
.pd-occ-sim-track input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid #4F46E5;box-shadow:0 2px 6px -1px rgba(79,70,229,.4);cursor:pointer;transition:transform .12s}
.pd-occ-sim-track input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}
.pd-occ-sim-track input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid #4F46E5;box-shadow:0 2px 6px -1px rgba(79,70,229,.4);cursor:pointer}
.pd-occ-sim-track input[type=range]::-moz-range-track{height:6px;background:#E2E8F0;border-radius:99px}
.pd-occ-sim-ticks{display:flex;justify-content:space-between;align-items:baseline;font-size:9.5px;font-weight:700;color:var(--dash-ink-3);line-height:1.2;letter-spacing:0.01em}
.pd-occ-sim-ticks em{color:#94a3b8;font-style:normal;font-weight:600}
.pd-occ-sim-ticks b{color:var(--dash-emerald);font-weight:900;font-size:11px;font-family:'Outfit','Inter',sans-serif}

/* ═══════════════ PANEL DARK (AI insights) ═══════════════ */

.pd-dark{background:#0F172A;color:#E2E8F0;border:1px solid #1E293B;border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:12px;box-shadow:0 12px 30px -10px rgba(0,0,0,.5)}
.pd-dark h4{font-size:11.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:#CBD5E1;margin:0;display:flex;align-items:center;gap:8px}
.pd-dark h4 .pd-dot{width:10px;height:10px;border-radius:99px;background:#4F46E5;box-shadow:0 0 0 4px rgba(79,70,229,.2);animation:pd-pulse 1.6s ease-in-out infinite}
.pd-dark p{margin:0;color:#CBD5E1;font-size:12.5px;line-height:1.6}
.pd-dark strong{color:#F8FAFC}
.pd-dark strong.indigo{color:#A5B4FC}
.pd-dark strong.success{color:#A5ABEF}
.pd-dark strong.danger{color:#A5ABEF}
.pd-dark strong.warning{color:#A5ABEF}
.pd-dark .pd-dark-list{background:rgba(15,23,42,.5);border:1px solid #1E293B;border-radius:10px;padding:12px 14px;font-size:11.5px;line-height:1.6;color:#94A3B8}
.pd-dark .pd-dark-list p{margin:0 0 6px;color:#94A3B8}
.pd-dark .pd-dark-list p:last-child{margin-bottom:0}
.pd-dark .pd-dark-list strong{color:#F1F5F9}

/* ═══════════════ CHART WRAPPERS ═══════════════ */

.pd-chart{background:#F8FAFC;border:1px solid var(--dash-border-soft);border-radius:12px;padding:10px 12px;display:flex;justify-content:center;align-items:center}
.pd-chart svg{width:100%;height:auto;display:block}
.pd-chart-title{font-size:9.5px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:var(--dash-ink3);display:block;margin-bottom:6px}

.pd-linechart-legend{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;color:var(--dash-ink3);font-weight:800;letter-spacing:0.1em;text-transform:uppercase;padding:0 4px;margin-top:4px}

/* ═══════════════ LISTA DE INQUILINOS ═══════════════ */

.pd-search{display:flex;align-items:center;gap:8px;background:#F8FAFC;border:1px solid var(--dash-border-soft);border-radius:10px;padding:6px 10px}
.pd-search input{border:0;background:transparent;outline:none;font:inherit;font-size:12.5px;color:var(--dash-ink);width:100%}
.pd-search .icon{color:var(--dash-ink3)}

.pd-inh-list{border:1px solid var(--dash-border-soft);border-radius:12px;background:#F8FAFC;max-height:200px;overflow-y:auto;padding:6px}
.pd-inh-item{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--dash-border-soft);border-radius:8px;padding:8px 10px;margin-bottom:4px}
.pd-inh-item:last-child{margin-bottom:0}
.pd-inh-avatar{width:30px;height:30px;border-radius:99px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;border:1px solid transparent;flex:none}
.pd-inh-info{flex:1;min-width:0;margin-left:8px}
.pd-inh-info b{display:block;font-size:12px;font-weight:800;color:var(--dash-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-inh-info span{font-size:10.5px;color:var(--dash-ink3);font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace}

/* ═══════════════ PLAQUE ORO (Property Registry) ═══════════════ */

.pd-plaque-wrap{padding:2px;border-radius:18px;background:linear-gradient(90deg,#475569 0%,#64748B 50%,#334155 100%);box-shadow:0 12px 30px -8px rgba(71,85,105,.4)}
.pd-plaque{background:linear-gradient(180deg,#0F172A 0%,#020617 100%);border-radius:16px;padding:18px 22px;color:#F8FAFC;position:relative;overflow:hidden}
.pd-plaque::before{content:"";position:absolute;inset:0;opacity:.05;background-image:radial-gradient(#94A3B8 1px,transparent 1px);background-size:14px 14px;pointer-events:none}
.pd-plaque-row{display:grid;grid-template-columns:1fr;gap:12px;padding:14px 0;border-top:1px solid rgba(148,163,184,.2)}
.pd-plaque-row:first-of-type{border-top:0;padding-top:0}
.pd-plaque-row:last-of-type{border-bottom:1px solid rgba(148,163,184,.2);padding-bottom:14px}
@media(min-width:640px){
  .pd-plaque-row{grid-template-columns:auto 1fr auto;align-items:center;gap:18px}
  .pd-plaque-row.first{padding-bottom:14px}
}
.pd-plaque-center{display:none}
@media(min-width:640px){.pd-plaque-center{display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:.7}}
.pd-plaque-eyebrow{font-size:8.5px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:#94A3B8;display:flex;align-items:center;gap:4px;margin-bottom:4px}
.pd-plaque-title{font-size:11.5px;font-weight:800;letter-spacing:-0.01em;text-transform:uppercase;color:#F1F5F9;line-height:1.3}
.pd-plaque-big{font-size:18px;font-weight:900;letter-spacing:0.04em;color:#fff;font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace}
.pd-plaque-big.gold{color:#94A3B8}
.pd-plaque-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding-top:14px;font-size:11.5px;color:#94A3B8}

.pd-lindero-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pd-lindero{background:#fff;border:1px solid var(--dash-border-soft);border-radius:8px;padding:8px 10px;font-size:10.5px;line-height:1.4}
.pd-lindero b{display:block;font-weight:800;color:var(--dash-ink);font-size:10px;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:2px}
.pd-lindero span{color:var(--dash-ink2);font-size:10.5px}

/* ═══════════════ FILAS DE RANKING ═══════════════ */

.pd-ranklist{border:1px solid var(--dash-border-soft);border-radius:12px;overflow:hidden;background:#F8FAFC}
.pd-rankitem{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid #fff;background:#F8FAFC;font-size:12px;transition:background .12s}
.pd-rankitem:last-child{border-bottom:0}
.pd-rankitem:hover{background:#fff}
.pd-rankitem b{font-weight:700;color:var(--dash-ink)}
.pd-rankitem .pd-rank-val{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-weight:800;color:var(--dash-ink)}
.pd-rankitem .pd-rank-tag{font-size:10px;font-weight:800;padding:2px 8px;border-radius:99px;background:var(--dash-emerald-tint);color:var(--dash-emerald);border:1px solid rgba(79,70,229,.15)}
.pd-rankitem .pd-rank-tag.danger{background:var(--dash-rose-tint);color:var(--dash-rose);border-color:rgba(79,70,229,.15)}

/* ═══════════════ ESTADO IDEAL / IDEAL STATE ═══════════════ */

.pd-ideal{padding:14px;border-radius:14px;border:1px solid #C9CEF4;background:rgba(223,227,251,.3);display:flex;align-items:flex-start;gap:10px}
.pd-ideal .icon{color:var(--dash-emerald);flex:none;margin-top:1px}
.pd-ideal b{color:var(--dash-ink);font-size:12.5px}
.pd-ideal p{color:var(--dash-ink2);font-size:11px;margin:2px 0 0;line-height:1.5}
.pd-ideal-head{display:flex;align-items:center;gap:6px;color:var(--dash-emerald);font-size:10px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase}

.pd-rules{margin-top:10px;background:rgba(255,255,255,.7);border:1px solid #C9CEF4;border-radius:10px;padding:10px 12px;font-size:10.5px;line-height:1.5;color:var(--dash-ink2)}
.pd-rules p{margin:0 0 6px;display:flex;align-items:flex-start;gap:6px}
.pd-rules p:last-child{margin-bottom:0}
.pd-rules strong{color:var(--dash-ink);font-weight:800}

.pd-bracket-pill{display:inline-flex;align-items:center;background:#DFE3FB;border:1px solid #C9CEF4;border-radius:99px;padding:2px 10px;font-size:8.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:#1E1B4B;margin:0 auto 8px;display:table;margin-left:auto;margin-right:auto}

/* ═══════════════ BOTONES ESPECIALES ═══════════════ */

.pd-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;font-size:12.5px;font-weight:700;cursor:pointer;border:1px solid transparent;transition:background .12s,color .12s,border-color .12s}
.pd-btn.ghost{background:transparent;color:var(--dash-ink2);border-color:var(--dash-border)}
.pd-btn.ghost:hover{background:#F1F5F9;color:var(--dash-ink)}
.pd-btn.indigo{background:var(--dash-indigo);color:#fff;border-color:var(--dash-indigo)}
.pd-btn.indigo:hover{background:#4338CA;border-color:#4338CA}
.pd-btn.emerald{background:var(--dash-emerald);color:#fff;border-color:var(--dash-emerald)}
.pd-btn.emerald:hover{background:#312E81;border-color:#312E81}
.pd-btn.danger{background:#fff;color:var(--dash-rose);border-color:#C9CEF4}
.pd-btn.danger:hover{background:var(--dash-rose-tint)}
.pd-btn-danger{color:var(--dash-rose)!important;border-color:rgba(79,70,229,.25)!important}
.pd-btn-danger:hover{background:var(--dash-rose-tint)!important;border-color:var(--dash-rose)!important}
.pd-btn.sm{padding:5px 10px;font-size:11.5px}

/* ═══════════════ PESTAÑA RESUMEN (mini cards 2x2 dentro de cards) ═══════════════ */

.pd-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pd-mini{background:#F8FAFC;border:1px solid var(--dash-border-soft);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.pd-mini .pd-mini-label{font-size:10px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-ink3);display:flex;align-items:center;gap:4px}
.pd-mini .pd-mini-value{font-size:18px;font-weight:900;letter-spacing:-0.01em;color:var(--dash-ink);font-variant-numeric:tabular-nums}
.pd-mini .pd-mini-foot{font-size:10.5px;color:var(--dash-ink3);margin-top:2px}

/* ═══════════════ COLLAPSE / EXPANDIR SECCIÓN ═══════════════ */

.pd-collapse-head{display:flex;align-items:center;justify-content:space-between;width:100%;background:#F8FAFC;border:0;border-bottom:1px solid var(--dash-border-soft);padding:10px 14px;font:inherit;font-size:11px;font-weight:800;letter-spacing:0.08em;text-transform:uppercase;color:var(--dash-ink2);cursor:pointer;gap:8px}
.pd-collapse-head:hover{background:#F1F5F9;color:var(--dash-ink)}
.pd-collapse-body{padding:14px 16px;background:#fff}
.pd-collapse{display:border-box;border:1px solid var(--dash-border);border-radius:12px;overflow:hidden;background:#fff}
.pd-collapse .icon{color:var(--dash-indigo)}
.pd-collapse.closed .pd-collapse-body{display:none}

/* ═══════════════ NOTAS / DOCS DUAL ═══════════════ */

.pd-dualcol{display:grid;grid-template-columns:1fr;gap:14px}
@media(min-width:760px){.pd-dualcol{grid-template-columns:1fr 1fr}}
.pd-colpanel{border:1px solid var(--dash-border);border-radius:12px;background:#F8FAFC;overflow:hidden;display:flex;flex-direction:column}
.pd-colpanel-head{background:#F8FAFC;border-bottom:1px solid var(--dash-border);padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:6px}
.pd-colpanel-head .pd-colpanel-title{font-size:11.5px;font-weight:800;letter-spacing:0.08em;text-transform:uppercase;color:var(--dash-ink2);display:flex;align-items:center;gap:6px}
.pd-colpanel-head .pd-colpanel-title .icon{color:var(--dash-indigo)}
.pd-colpanel-list{padding:6px 10px;max-height:240px;overflow-y:auto}
.pd-colpanel-list .pd-docitem,.pd-colpanel-list .pd-noteitem{padding:8px 6px;border-bottom:1px solid var(--dash-border-soft);display:flex;align-items:center;gap:8px;cursor:pointer;transition:background .12s;border-radius:6px}
.pd-colpanel-list .pd-docitem:last-child,.pd-colpanel-list .pd-noteitem:last-child{border-bottom:0}
.pd-colpanel-list .pd-docitem:hover,.pd-colpanel-list .pd-noteitem:hover{background:#fff}
.pd-colpanel-foot{padding:8px 12px;border-top:1px solid var(--dash-border);background:#F8FAFC;font-size:10.5px;color:var(--dash-ink3);text-align:center}

/* ═══════════════ TOAST / EMPTY STATE ═══════════════ */

.pd-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 14px;color:var(--dash-ink3);font-size:12px}
.pd-empty .icon{width:36px;height:36px;opacity:.4;margin-bottom:8px}

/* ═══════════════ BANNER PRÓXIMAMENTE ═══════════════ */

.pd-prox{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center;background:#F8FAFC;border:1px dashed var(--dash-border);border-radius:18px;margin:8px}
.pd-prox .pd-prox-icon{width:64px;height:64px;border-radius:18px;background:var(--dash-indigo-tint);color:var(--dash-indigo);display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.pd-prox h2{margin:0 0 8px;font-size:24px;font-weight:800;letter-spacing:-0.015em}
.pd-prox p{color:var(--dash-ink2);max-width:42ch;margin:0 0 18px;line-height:1.55}

/* ═══════════════ SCROLLBAR dentro de modal ═══════════════ */

.modal.full{overflow-y:auto}
.modal.full{display:flex;flex-direction:column}
.modal.full .pd-shell{padding:clamp(12px,1.4vw,22px);width:100%;flex:1;min-height:0;display:flex;flex-direction:column}
.modal.full .pd-modal-body{padding:clamp(10px,1.2vw,20px) clamp(4px,.8vw,8px) clamp(14px,1.6vw,28px);width:100%;flex:1;min-height:0;display:flex;flex-direction:column}
/* Cada card internamente limita su lectura con max-width donde aplica
   (tablas, párrafos largos) para que en pantallas ultra-wide las líneas
   no se estiren ms de 90ch. */

/* ═══════════════ ANIMATIONS ═══════════════ */

@keyframes pd-fadeup{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.pd-card{animation:pd-fadeup .3s ease-out both}
.pd-card:nth-child(1){animation-delay:.05s}
.pd-card:nth-child(2){animation-delay:.1s}
.pd-card:nth-child(3){animation-delay:.15s}
.pd-card:nth-child(4){animation-delay:.2s}
.pd-card:nth-child(5){animation-delay:.25s}
.pd-card:nth-child(6){animation-delay:.3s}

@media (prefers-reduced-motion:reduce){
  .pd-card{animation:none}
  .pd-status.danger .pd-dot{animation:none}
}

/* ═══════════════ CARD: ANÁLISIS DE RECAUDACIÓN ═══════════════
   CSS clonado al pixel del React reference (Tailwind) que el dueo
   pas como spec. Valores hex sacados de la paleta Tailwind v3. */

.pd-revenue{
  background:#fff;
  border-radius:16px;
  box-shadow:0 10px 35px -10px rgba(0,0,0,.06);
  border:1px solid rgba(226,232,240,.7);
  overflow:hidden;
  text-align:left;
  display:flex;
  flex-direction:column;
}

/* 1. Top accent bar (h-1.5 = 6px, bg-indigo-600) */
.pd-rev-bar{height:6px;width:100%;background:#4f46e5}

/* 2. Body (p-6 = 24px, flex flex-col gap-5 = 20px) */
.pd-rev-body{padding:24px;display:flex;flex-direction:column;gap:20px}

/* HEADER: flex justify-between items-start gap-3 pb-3 border-b slate-100 */
.pd-rev-head{display:flex;flex-direction:column;gap:12px;padding-bottom:12px;border-bottom:1px solid #f1f5f9}
@media (min-width:520px){.pd-rev-head{flex-direction:row;align-items:flex-start;justify-content:space-between}}
.pd-rev-head-l{flex:1;min-width:0}
.pd-rev-head-l > * + *{margin-top:2px}
.pd-rev-eyebrow{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:0.08em;color:#4f46e5;line-height:1.2;display:block}
.pd-rev-title{margin:2px 0 0;font-size:16px;font-weight:900;line-height:1.2;color:#0f172a;letter-spacing:-0.01em}
.pd-rev-head-r{display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap}

/* Badges (text-[10px], px-2 py-0.5, rounded-full) */
.pd-rev-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;padding:2px 8px;border-radius:9999px;line-height:1.2;white-space:nowrap;letter-spacing:0.01em}
.pd-rev-badge .icon{width:12px;height:12px;flex:none}
.pd-rev-badge-up{color:#3730A3;background:#EEF0FE;border:1px solid rgba(223,227,251,.6);box-shadow:0 1px 2px rgba(0,0,0,.04)}
.pd-rev-badge-up .icon{color:#3730A3}
.pd-rev-badge-apt{color:#334155;background:#f8fafc;border:1px solid #e2e8f0}
.pd-rev-badge-apt .icon{color:#94a3b8;width:14px;height:14px}
.pd-rev-badge-mono{font-family:'JetBrains Mono','SF Mono',ui-monospace,monospace;font-weight:600;letter-spacing:0.01em}

/* 3. COMPARATIVA: space-y-3 */
.pd-rev-compare-section{display:flex;flex-direction:column;gap:12px}
.pd-rev-divider{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #f1f5f9;padding-bottom:6px}
.pd-rev-divider-l{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:0.12em;color:#0f172a;line-height:1.2}
.pd-rev-divider-r{font-size:9px;color:#94a3b8;font-weight:500;font-family:'JetBrains Mono','SF Mono',ui-monospace,monospace;letter-spacing:0.01em}

/* Tabla comparativa Neto × Líquido, Anterior | Actual */
.pd-rev-table-section{display:flex;flex-direction:column;gap:14px}
.pd-rev-table{display:grid;grid-template-columns:max-content 1fr 1fr;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#fff}
.pd-rev-table-h{padding:10px 14px;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:0.12em;color:#64748b;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-right:1px solid #e2e8f0;line-height:1.2;display:flex;align-items:center;white-space:nowrap}
.pd-rev-table-h-row{background:#fff;color:#0f172a;font-weight:800;letter-spacing:0.04em}
.pd-rev-table-h-col{justify-content:flex-start}
.pd-rev-table-h-col--indigo{color:#4f46e5}
.pd-rev-table-h-corner{background:#f8fafc;border-right:1px solid #e2e8f0}
.pd-rev-table-c{padding:12px 14px;font-size:18px;font-weight:300;line-height:1.1;letter-spacing:-0.01em;font-family:'Outfit','Inter',sans-serif;font-variant-numeric:tabular-nums;color:#475569;border-right:1px solid #f1f5f9;border-bottom:1px solid #f1f5f9;white-space:nowrap}
.pd-rev-table-c:last-child{border-right:0}
.pd-rev-table .pd-rev-table-h:last-child,.pd-rev-table .pd-rev-table-c:nth-last-child(-n+2){border-bottom:0}
.pd-rev-table-c--prev{color:#64748b}
.pd-rev-table-c--curr{color:#4f46e5;font-weight:400}
.pd-rev-table-c--liquido{font-size:16px}

/* Switch YTD: dos tabs Neto | Líquido + el monto grande */
.pd-rev-ytd{background:linear-gradient(135deg,rgba(79,70,229,.04),rgba(79,70,229,.02));border:1px solid rgba(79,70,229,.12);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.pd-rev-ytd-switch{display:inline-flex;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:2px;align-self:flex-start}
.pd-rev-ytd-tab{appearance:none;background:transparent;border:0;padding:4px 12px;font:inherit;font-size:10.5px;font-weight:700;letter-spacing:0.04em;color:#64748b;cursor:pointer;border-radius:6px;transition:background .15s,color .15s;white-space:nowrap}
.pd-rev-ytd-tab:hover{color:#0f172a}
.pd-rev-ytd-tab.on{background:#4f46e5;color:#fff;box-shadow:0 1px 2px rgba(15,23,42,.08)}
.pd-rev-ytd-body{display:flex;flex-direction:column;gap:2px}
.pd-rev-ytd-amount{font-size:24px;font-weight:800;color:#0f172a;font-family:'Outfit','Inter',sans-serif;letter-spacing:-0.015em;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap}
.pd-rev-ytd-sub{font-size:10px;color:#94a3b8;letter-spacing:0.01em;line-height:1.3}

/* Insularius Insights: colapsable, empieza colapsado */
.pd-rev-insights{background:rgba(248,250,252,.7);border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}
.pd-rev-insights-head{width:100%;display:flex;align-items:center;gap:10px;background:transparent;border:0;padding:12px 14px;cursor:pointer;color:#475569;font:inherit;line-height:1.2;transition:background .15s;text-align:left}
.pd-rev-insights-head:hover{background:rgba(79,70,229,.05)}
.pd-rev-insights-head:focus-visible{outline:2px solid #4f46e5;outline-offset:-2px}
.pd-rev-insights-head-l{display:inline-flex;align-items:center;gap:7px;flex:none;font-size:11px;font-weight:800;letter-spacing:0.06em;text-transform:uppercase;color:#0f172a}
.pd-rev-insights-head-l .icon{width:14px;height:14px;color:#6366f1;flex:none}
.pd-rev-insights-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 6px;font-size:9.5px;font-weight:800;color:#4f46e5;background:#eef2fb;border:1px solid rgba(79,70,229,.2);border-radius:99px;font-family:'JetBrains Mono','SF Mono',monospace}
.pd-rev-insights-meta{flex:1;min-width:0;font-size:10.5px;font-weight:600;color:#475569;letter-spacing:0.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;padding-right:6px}
.pd-rev-insights-chev{width:14px;height:14px;color:#94a3b8;flex:none;transition:transform .2s ease}
.pd-rev-insights-body{border-top:1px solid rgba(226,232,240,.5);padding:6px 4px 8px;max-height:280px;overflow-y:auto}
.pd-rev-insights-body[hidden]{display:none}
.pd-rev-insights-empty{display:flex;align-items:center;gap:8px;padding:12px;font-size:11px;color:#3730A3;line-height:1.4}
.pd-rev-insights-empty .icon{color:#3730A3;flex:none}
.pd-rev-insights-list{list-style:none;margin:0;padding:0}
.pd-rev-insight{display:flex;gap:9px;padding:9px 10px;border-radius:8px;transition:background .12s;align-items:flex-start}
.pd-rev-insight:hover{background:rgba(79,70,229,.04)}
.pd-rev-insight-icon{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex:none}
.pd-rev-insight-icon .icon{width:13px;height:13px}
.pd-rev-insight--success .pd-rev-insight-icon{background:#DFE3FB;color:#312E81}
.pd-rev-insight--warning .pd-rev-insight-icon{background:#DFE3FB;color:#312E81}
.pd-rev-insight--danger .pd-rev-insight-icon{background:#DFE3FB;color:#312E81}
.pd-rev-insight--info .pd-rev-insight-icon{background:#e0e7ff;color:#4338ca}
.pd-rev-insight-body-c{flex:1;min-width:0}
.pd-rev-insight-head{display:flex;justify-content:space-between;align-items:baseline;gap:6px;margin-bottom:2px}
.pd-rev-insight-title{font-size:11.5px;font-weight:800;letter-spacing:-0.005em;line-height:1.2;color:#0f172a}
.pd-rev-insight-meta{font-size:9.5px;font-weight:700;color:#94a3b8;font-family:'JetBrains Mono','SF Mono',monospace;letter-spacing:0.01em;white-space:nowrap;flex:none}
.pd-rev-insight-desc{margin:2px 0 0;font-size:10.5px;line-height:1.5;color:#475569}

/* 5. INGRESO ÓPTIMO PROYECTADO: bg-indigo-50/20 border-indigo-100/35 p-3.5 */
.pd-rev-optimal{background:rgba(238,242,251,.2);border:1px solid rgba(224,231,255,.35);border-radius:12px;padding:14px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;text-align:left}
.pd-rev-optimal-l{flex:1;min-width:0}
.pd-rev-optimal-l > * + *{margin-top:2px}
.pd-rev-optimal-label-row{display:flex;align-items:center;gap:6px}
.pd-rev-optimal-label{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:0.12em;color:#3730a3;line-height:1.2}
.pd-rev-help{position:relative;display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;color:#818cf8;cursor:help;flex:none}
.pd-rev-help .icon{width:12px;height:12px}
.pd-rev-help-tip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);width:220px;padding:8px 10px;background:#0F172A;color:#F8FAFC;font-size:10.5px;line-height:1.45;border-radius:8px;box-shadow:0 8px 20px rgba(15,23,42,.18);opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;z-index:10;font-weight:500;letter-spacing:0;text-transform:none}
.pd-rev-help-tip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#0F172A}
.pd-rev-help:hover .pd-rev-help-tip,.pd-rev-help:focus-within .pd-rev-help-tip{opacity:1;transform:translateX(-50%) translateY(0)}
.pd-rev-optimal-sub{font-size:10px;color:#94a3b8;line-height:1;letter-spacing:0.005em}
.pd-rev-optimal-r{text-align:right;flex-shrink:0}
.pd-rev-optimal-eyebrow{display:block;font-size:8px;text-transform:uppercase;letter-spacing:0.12em;font-weight:600;color:#94a3b8;font-family:'JetBrains Mono','SF Mono',ui-monospace,monospace;line-height:1.2;margin-bottom:2px}
.pd-rev-optimal-amount{font-size:13px;font-weight:700;color:#475569;font-family:'JetBrains Mono','SF Mono',ui-monospace,monospace;letter-spacing:-0.01em;line-height:1.2;display:block;white-space:nowrap}

/* 6. CHART section: pt-2 border-t slate-100 */
.pd-rev-chart-section{padding-top:8px;border-top:1px solid #f1f5f9;display:flex;flex-direction:column;gap:12px}
.pd-rev-chart-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;min-height:20px}
.pd-rev-chart-eyebrow{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.12em;color:#94a3b8;line-height:1.2}
.pd-rev-chart-readout{font-size:10px;font-weight:700;color:#4f46e5;background:#eef2fb;border:1px solid rgba(224,231,255,.5);padding:2px 8px;border-radius:6px;font-family:'JetBrains Mono','SF Mono',ui-monospace,monospace;letter-spacing:0.01em;line-height:1.2;box-shadow:0 1px 2px rgba(0,0,0,.04);min-height:18px;min-width:80px;text-align:right;opacity:0;transition:opacity .15s}
.pd-rev-chart-readout.visible{opacity:1}
.pd-rev-chart-readout.up{color:#3730A3;background:rgba(238,240,254,1);border-color:rgba(201,206,244,.6)}
.pd-rev-chart-readout.down{color:#3730A3;background:rgba(238,240,254,1);border-color:rgba(165,171,239,.6)}

/* Chart container: bg-slate-50/50 rounded-xl p-2 border-slate-150 */
.pd-rev-chart-wrap{position:relative;background:rgba(248,250,252,.5);border:1px solid #e2e8f0;border-radius:12px;padding:8px;overflow:visible}
.pd-rev-chart-svg{width:100%;height:auto;display:block;cursor:crosshair;user-select:none;-webkit-user-select:none;overflow:visible}
.pd-rev-dot{transition:r .15s ease,fill .15s ease}

/* Tooltip del chart (oculto, preparado para futuro) */
.pd-rev-tooltip{position:absolute;pointer-events:none;background:#0F172A;color:#F8FAFC;border:1px solid #1E293B;border-radius:10px;padding:8px 12px;font-size:11px;line-height:1.3;box-shadow:0 10px 25px rgba(15,23,42,.25);opacity:0;transform:translate(-50%,-100%) translateY(-8px);transition:opacity .12s;z-index:20;white-space:nowrap;min-width:120px}
.pd-rev-tooltip-visible{opacity:1}
.pd-rev-tooltip-month{font-size:9.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#94A3B8;margin-bottom:3px}
.pd-rev-tooltip-amount{font-size:14px;font-weight:900;font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;letter-spacing:-0.01em;line-height:1.1}
.pd-rev-tooltip-delta{font-size:9.5px;font-weight:800;margin-top:4px;padding-top:4px;border-top:1px solid rgba(148,163,184,.2);font-family:monospace;letter-spacing:0.02em}
.pd-rev-tooltip-delta.up{color:#A5ABEF}
.pd-rev-tooltip-delta.down{color:#A5ABEF}

/* 7. FOOTER: px-6 py-3.5 bg-slate-50 border-t border-slate-100 */
.pd-rev-foot{padding:14px 24px;background:#f8fafc;border-top:1px solid #f1f5f9;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#64748b;gap:8px;flex-wrap:wrap}
.pd-rev-foot-l{display:flex;align-items:center;gap:8px;min-width:0;flex:1}
.pd-rev-foot-l .icon{width:14px;height:14px;color:#6366f1;flex:none}
.pd-rev-foot-name{font-weight:700;color:#334155;letter-spacing:-0.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-rev-foot-right{font-family:'JetBrains Mono','SF Mono',ui-monospace,monospace;font-size:9px;color:#94a3b8;letter-spacing:0.01em;white-space:nowrap;flex-shrink:0}

/* ═══════════════ CARD: REGISTRO (Datos Registrales de la Propiedad) ═══════════════
   Combinación de placa registral + buscador de habitantes + lista. */
.pd-reg{display:flex;flex-direction:column}
.pd-reg .pd-card-body{gap:14px}

/* Header: eyebrow + título + download button */
.pd-reg-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.pd-reg-head-l{flex:1;min-width:0}
.pd-reg-eyebrow{font-size:10.5px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:#4f46e5;display:inline-flex;align-items:center;gap:6px;line-height:1.2}
.pd-reg-eyebrow .icon{width:13px;height:13px}
.pd-reg-title{margin:4px 0 0;font-size:18px;font-weight:800;letter-spacing:-0.015em;line-height:1.2;color:#0f172a;font-family:'Outfit','Fraunces','Inter',sans-serif}

/* ══════════════════════════════════════════════════════════════════
   CARD: ESTUDIOS REGISTRALES (small) - top del side-rail
   Card rectangular compacto (~1/8 de alto) con los 3 campos clave:
   Naturaleza, Ubicacin y Valor Fiscal. Al hacer click abre el panel
   lateral con el preview del documento y opciones para subir,
   eliminar o reemplazar el PDF usando OCR. */
.pd-reg-small .pd-card-body{padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.pd-reg-small-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.pd-reg-small-eyebrow{font-size:9.5px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:var(--pd-plaque-text-soft);display:inline-flex;align-items:center;gap:5px;line-height:1.2}
.pd-reg-small-eyebrow .icon{width:12px;height:12px;color:var(--pd-plaque-icon-2)}
.pd-reg-small-pill{display:inline-flex;align-items:center;gap:4px;background:#F1F5F9;color:var(--pd-plaque-text-soft);border:1px solid var(--pd-plaque-tag-border);border-radius:99px;padding:2px 8px;font-size:9px;font-weight:800;letter-spacing:0.08em;text-transform:uppercase}
.pd-reg-small-pill .icon{width:10px;height:10px}
.pd-reg-small-title{margin:0;font-size:14.5px;font-weight:800;letter-spacing:-0.01em;line-height:1.2;color:#0f172a;font-family:'Outfit','Inter',sans-serif}
.pd-reg-small-nat{display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:linear-gradient(180deg,var(--pd-plaque-bg-1) 0%,var(--pd-plaque-bg-2) 100%);border:1px solid var(--pd-plaque-border);border-radius:8px}
.pd-reg-small-nat-label{font-size:9px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:var(--pd-plaque-text-soft);line-height:1.2}
.pd-reg-small-nat-value{font-size:11.5px;font-weight:800;color:var(--pd-plaque-text-strong);line-height:1.3;letter-spacing:-0.005em;font-family:'Outfit','Inter',sans-serif}
.pd-reg-small-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:8px}
.pd-reg-small-cell{display:flex;flex-direction:column;gap:2px;padding:7px 9px;background:#f8fafc;border:1px solid var(--dash-border-soft);border-radius:8px;min-width:0}
.pd-reg-small-cell.vf{background:linear-gradient(180deg,var(--pd-plaque-bg-1) 0%,var(--pd-plaque-bg-2) 100%);border-color:var(--pd-plaque-border)}
.pd-reg-small-cell-label{font-size:9px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-ink-3);display:inline-flex;align-items:center;gap:4px;line-height:1.2}
.pd-reg-small-cell-label .icon{width:10px;height:10px;color:var(--dash-ink-3);flex:none}
.pd-reg-small-cell.vf .pd-reg-small-cell-label{color:var(--pd-plaque-text-soft)}
.pd-reg-small-cell.vf .pd-reg-small-cell-label .icon{color:var(--pd-plaque-icon-2)}
.pd-reg-small-cell-value{font-size:11.5px;font-weight:800;color:var(--dash-ink);line-height:1.3;letter-spacing:-0.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pd-reg-small-cell-value.mono{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-size:11px}
.pd-reg-small-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0 0;border-top:1px solid var(--dash-border-soft);font-size:10.5px;color:var(--dash-ink-3);line-height:1.2}
.pd-reg-small-foot-l{display:inline-flex;align-items:center;gap:5px;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pd-reg-small-foot-l .icon{width:12px;height:12px;color:var(--dash-indigo);flex:none}
.pd-reg-small-foot-l b{color:var(--dash-ink);font-weight:800;font-size:11px;letter-spacing:-0.005em}
.pd-reg-small-foot-r{font-size:9.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-indigo);display:inline-flex;align-items:center;gap:4px;flex:none}
.pd-reg-small-arrow{transition:transform .15s}
.pd-reg-small:hover .pd-reg-small-arrow{transform:translateX(3px)}

/* ══════════════════════════════════════════════════════════════════
   CARD: HABITANTES - Placa COZINESS + search + lista residentes
   Card separado de Ocupacin. Muestra la placa gold con el conteo
   total + un buscador + la lista de residentes. */
.pd-hab .pd-card-body{padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.pd-hab-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.pd-hab-head-l{flex:1;min-width:0}
.pd-hab-eyebrow{font-size:9.5px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:var(--pd-plaque-text-soft);display:inline-flex;align-items:center;gap:5px;line-height:1.2}
.pd-hab-eyebrow .icon{width:12px;height:12px;color:var(--pd-plaque-icon-2)}
.pd-hab-title{margin:3px 0 0;font-size:14.5px;font-weight:800;letter-spacing:-0.01em;line-height:1.2;color:#0f172a;font-family:'Outfit','Inter',sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-hab-count-pill{display:inline-flex;align-items:baseline;gap:4px;background:linear-gradient(180deg,var(--pd-plaque-bg-1),var(--pd-plaque-bg-2));color:var(--pd-plaque-text-strong);border:1px solid var(--pd-plaque-border);border-radius:99px;padding:4px 11px;font-size:14px;font-weight:900;letter-spacing:-0.01em;line-height:1;flex:none;font-family:'Outfit','Inter',sans-serif}
.pd-hab-count-pill span{font-size:9px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--pd-plaque-text-soft)}
.pd-hab-body{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:stretch}

/* Placa COZINESS (slate sobrio, sin dorado) */
.pd-hab-plaque{position:relative;background:linear-gradient(180deg,var(--pd-plaque-bg-1) 0%,var(--pd-plaque-bg-2) 100%);border:1px solid var(--pd-plaque-border);border-radius:12px;padding:12px 10px 10px;text-align:center;min-width:104px;display:flex;flex-direction:column;align-items:center;gap:3px;overflow:hidden}
.pd-hab-plaque::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(71,85,105,.06) 1px,transparent 1px);background-size:12px 12px;pointer-events:none}
.pd-hab-plaque-tag{position:relative;display:inline-flex;align-items:center;gap:3px;background:var(--pd-plaque-tag-bg);border:1px solid var(--pd-plaque-tag-border);border-radius:99px;padding:2px 8px;font-size:8.5px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:var(--pd-plaque-tag-text)}
.pd-hab-plaque-tag .icon{width:9px;height:9px;color:var(--pd-plaque-icon-2)}
.pd-hab-plaque-icon{position:relative;width:36px;height:36px;border-radius:99px;background:linear-gradient(135deg,var(--pd-plaque-icon-1),var(--pd-plaque-icon-2));color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:var(--pd-plaque-icon-shadow)}
.pd-hab-plaque-icon .icon{width:18px;height:18px}
.pd-hab-plaque-eyebrow{position:relative;font-size:8.5px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:var(--pd-plaque-text-soft);line-height:1;margin-top:1px}
.pd-hab-plaque-num{position:relative;font-size:26px;font-weight:900;letter-spacing:-0.025em;line-height:1;color:var(--pd-plaque-text-strong);font-family:'Outfit','Inter',sans-serif;font-variant-numeric:tabular-nums}
.pd-hab-plaque-sub{position:relative;font-size:9px;color:var(--pd-plaque-text-soft);font-weight:600;letter-spacing:0.01em;line-height:1.2;margin-top:1px}

/* Search + list (right side) */
.pd-hab-right{display:flex;flex-direction:column;gap:8px;min-width:0}
.pd-hab-search{display:flex;align-items:center;gap:6px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:6px 10px}
.pd-hab-search .icon{width:13px;height:13px;color:#94a3b8;flex:none}
.pd-hab-search input{flex:1;border:0;background:transparent;outline:none;font:inherit;font-size:11.5px;color:#0f172a;min-width:0}
.pd-hab-search input::placeholder{color:#94a3b8}

.pd-hab-res-list{display:flex;flex-direction:column;gap:3px;max-height:170px;overflow-y:auto;padding-right:2px}
.pd-hab-res-list::-webkit-scrollbar{width:4px}
.pd-hab-res-list::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}
.pd-hab-res-list::-webkit-scrollbar-track{background:transparent}
.pd-hab-res-row{display:flex;align-items:center;gap:8px;padding:5px 7px;background:#fff;border:1px solid #f1f5f9;border-radius:7px;transition:background .12s}
.pd-hab-res-row:hover{background:#f8fafc}
.pd-hab-res-avatar{width:26px;height:26px;border-radius:99px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:9.5px;color:#fff;flex:none;letter-spacing:0.02em}
.pd-hab-res-info{flex:1;min-width:0}
.pd-hab-res-info b{display:block;font-size:11px;font-weight:800;color:#0f172a;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-hab-res-info span{font-size:9.5px;color:#94a3b8;font-family:'JetBrains Mono','SF Mono',monospace;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-hab-res-status{font-size:8.5px;font-weight:800;padding:2px 6px;border-radius:99px;letter-spacing:0.04em;flex:none;line-height:1.2}
.pd-hab-res-status--emerald{background:#DFE3FB;color:#312E81;border:1px solid rgba(79,70,229,.2)}
.pd-hab-res-status--rose{background:#DFE3FB;color:#312E81;border:1px solid rgba(79,70,229,.2)}

@media (max-width:380px){
  .pd-hab-body{grid-template-columns:1fr}
  .pd-hab-plaque{flex-direction:row;justify-content:flex-start;text-align:left;min-width:0;padding:8px 10px;gap:8px}
  .pd-hab-plaque-tag{align-self:flex-start}
  .pd-hab-plaque-icon{width:30px;height:30px}
}
.pd-reg-download{width:36px;height:36px;border-radius:10px;background:#f8fafc;border:1px solid #e2e8f0;color:#4f46e5;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;transition:background .12s,color .12s}
.pd-reg-download:hover{background:#eef2fb;color:#4338ca}
.pd-reg-download .icon{width:16px;height:16px}

/* Placa con el nombre de la propiedad (slate sobrio, sin dorado) */
.pd-reg-plaque{position:relative;background:linear-gradient(180deg,var(--pd-plaque-bg-1) 0%,var(--pd-plaque-bg-2) 100%);border:1px solid var(--pd-plaque-border);border-radius:10px;padding:14px 14px 12px;text-align:center;overflow:hidden}
.pd-reg-plaque::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(71,85,105,.06) 1px,transparent 1px);background-size:14px 14px;pointer-events:none}
.pd-reg-plaque-tag{position:relative;display:inline-flex;align-items:center;gap:4px;background:var(--pd-plaque-tag-bg);border:1px solid var(--pd-plaque-tag-border);border-radius:99px;padding:2px 8px;font-size:9px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;color:var(--pd-plaque-tag-text);margin-bottom:6px}
.pd-reg-plaque-tag .icon{width:10px;height:10px;color:var(--pd-plaque-icon-2)}
.pd-reg-plaque-icon{position:relative;width:40px;height:40px;border-radius:99px;background:linear-gradient(135deg,var(--pd-plaque-icon-1),var(--pd-plaque-icon-2));color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 6px;box-shadow:var(--pd-plaque-icon-shadow)}
.pd-reg-plaque-icon .icon{width:18px;height:18px}
.pd-reg-plaque-name{position:relative;font-size:13px;font-weight:800;letter-spacing:-0.01em;color:var(--pd-plaque-text-strong);line-height:1.2}

/* Search bar */
.pd-reg-search{display:flex;align-items:center;gap:6px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:6px 10px}
.pd-reg-search .icon{width:14px;height:14px;color:#94a3b8;flex:none}
.pd-reg-search input{flex:1;border:0;background:transparent;outline:none;font:inherit;font-size:11.5px;color:#0f172a}
.pd-reg-search input::placeholder{color:#94a3b8}

/* Lista de residentes */
.pd-reg-res-list{display:flex;flex-direction:column;gap:4px;max-height:200px;overflow-y:auto}
.pd-reg-res-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#fff;border:1px solid #f1f5f9;border-radius:8px;transition:background .12s}
.pd-reg-res-row:hover{background:#f8fafc}
.pd-reg-res-avatar{width:28px;height:28px;border-radius:99px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:10px;color:#fff;flex:none}
.pd-reg-res-info{flex:1;min-width:0}
.pd-reg-res-info b{display:block;font-size:11.5px;font-weight:800;color:#0f172a;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-reg-res-info span{font-size:10px;color:#94a3b8;font-family:'JetBrains Mono','SF Mono',monospace;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-reg-res-status{font-size:9.5px;font-weight:800;padding:2px 7px;border-radius:99px;letter-spacing:0.04em;flex:none;font-family:'Inter',sans-serif}
.pd-reg-res-status--emerald{background:#DFE3FB;color:#312E81;border:1px solid rgba(79,70,229,.2)}
.pd-reg-res-status--rose{background:#DFE3FB;color:#312E81;border:1px solid rgba(79,70,229,.2)}

/* Footer: habitantes */
.pd-reg-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:var(--pd-plaque-bg-1);border:1px solid var(--pd-plaque-border);border-radius:8px}
.pd-reg-foot-l{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1}
.pd-reg-foot-eyebrow{font-size:9px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:var(--pd-plaque-text-soft)}
.pd-reg-foot-num{font-size:20px;font-weight:900;color:var(--pd-plaque-text-strong);font-family:'Outfit','Inter',sans-serif;letter-spacing:-0.02em;line-height:1.1}
.pd-reg-foot-sub{font-size:9.5px;color:var(--pd-plaque-text-soft);font-weight:500}

/* ═══════════════ CARD: TICKETS ═══════════════
   Cola de tickets de la propiedad, separada por tipo y severidad. */
.pd-tickets{display:flex;flex-direction:column}
.pd-tickets .pd-card-body{gap:16px}

/* Header: eyebrow izquierda + pill tiempo real derecha */
.pd-tk-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}
.pd-tk-head-l{flex:1;min-width:0}
.pd-tk-eyebrow{font-size:10.5px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:#312E81;display:inline-flex;align-items:center;gap:6px;line-height:1.2}
.pd-tk-eyebrow .icon{width:13px;height:13px}
.pd-tk-head-r{flex:none}
.pd-tk-pill{display:inline-flex;align-items:center;gap:5px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:99px;padding:3px 10px;font-size:9.5px;font-weight:700;letter-spacing:0.04em;color:#475569;white-space:nowrap}
.pd-tk-pulse{width:7px;height:7px;border-radius:50%;background:#4F46E5;box-shadow:0 0 0 0 rgba(79,70,229,.6);animation:pd-tk-pulse 1.8s ease-in-out infinite;flex:none}
@keyframes pd-tk-pulse{0%,100%{box-shadow:0 0 0 0 rgba(79,70,229,.5)}50%{box-shadow:0 0 0 5px rgba(79,70,229,0)}}

/* Contador masivo: 11 con label */
.pd-tk-counter{text-align:center;padding:20px 14px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:4px}
.pd-tk-counter-num{font-size:54px;font-weight:900;letter-spacing:-0.03em;line-height:1;color:#0f172a;font-variant-numeric:tabular-nums}
.pd-tk-counter-label{font-size:9.5px;font-weight:800;letter-spacing:0.16em;text-transform:uppercase;color:#94a3b8}

/* Dos columnas: Mantenimiento | Administrativos */
.pd-tk-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:520px){.pd-tk-cols{grid-template-columns:1fr;gap:10px}}
.pd-tk-col{display:flex;flex-direction:column;gap:8px;min-width:0}
.pd-tk-col-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pd-tk-col-icon{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex:none}
.pd-tk-col-icon--rose{background:#DFE3FB;color:#312E81}
.pd-tk-col-icon--blue{background:#dbeafe;color:#1d4ed8}
.pd-tk-col-icon .icon{width:12px;height:12px}
.pd-tk-col-title{font-size:12.5px;font-weight:800;color:#0f172a;letter-spacing:-0.005em;line-height:1.2}
.pd-tk-col-count{font-size:9.5px;font-weight:700;color:#94a3b8;font-family:'JetBrains Mono','SF Mono',monospace;letter-spacing:0.02em;margin-left:auto}

/* Sub-filas de severidad (Urgente / Importante / En Espera) */
.pd-tk-subrows{display:flex;flex-direction:column;gap:4px}
.pd-tk-subrow{display:flex;justify-content:space-between;align-items:center;padding:5px 8px;border-radius:6px;font-size:10.5px;font-weight:600;line-height:1.2}
.pd-tk-subrow--rose{background:rgba(223,227,251,.45);border:1px solid rgba(165,171,239,.4);color:#1E1B4B}
.pd-tk-subrow--amber{background:rgba(223,227,251,.5);border:1px solid rgba(165,171,239,.45);color:#312E81}
.pd-tk-subrow--slate{background:#f8fafc;border:1px solid #e2e8f0;color:#475569}
.pd-tk-subrow-l{display:inline-flex;align-items:center;gap:5px;min-width:0}
.pd-tk-subrow-l .icon{width:12px;height:12px;flex:none}
.pd-tk-subrow-r{font-size:10px;font-weight:800;font-family:'JetBrains Mono','SF Mono',monospace;letter-spacing:0.01em;background:rgba(255,255,255,.7);padding:1px 6px;border-radius:4px;flex:none;margin-left:6px}

/* Nota al pie de la columna Administrativos */
.pd-tk-note{display:flex;gap:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:8px 10px;font-size:10.5px;line-height:1.5;color:#475569;margin-top:auto}
.pd-tk-note-icon{width:22px;height:22px;border-radius:5px;background:#dbeafe;color:#1d4ed8;display:flex;align-items:center;justify-content:center;flex:none}
.pd-tk-note-icon .icon{width:12px;height:12px}
.pd-tk-note-body b{color:#0f172a}

/* Bar chart de encargados (parte inferior del card) */
.pd-tk-encargados{display:flex;flex-direction:column;gap:6px}
.pd-tk-encargados-title{font-size:9.5px;font-weight:800;letter-spacing:0.16em;text-transform:uppercase;color:#94a3b8;line-height:1.2}
.pd-tk-encargados-chart{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:8px 10px}

/* ═══════════════ MOROSIDAD (distribucin completa) ═══════════════ */
/* Paleta suave de rojo exclusiva del card de morosidad. No se exporta a
   --dash-rose porque ese alias lo usan 200+ declaraciones y se quiere un
   tono calmo aquí, no un alerta agresivo. Solo se activa cuando hay
   morosidad: el estado "sano" sigue usando emerald.
     -50  fondo apenas perceptible
     -100 borde/relleno muy suave
     -200 texto/borde calmo (default en estado alerta)
     -300 un escalón más para cuando hay deuda SIN plan (sutil, no chillón) */
.pd-mor{--mor-50:#FDF1F2;--mor-100:#F4D7DA;--mor-200:#DDA4AC;--mor-300:#C5707C}
.pd-mor .pd-card-body{padding:16px 18px;display:flex;flex-direction:column;gap:12px}
/* Barra superior del card: antes era --dash-rose (índigo oscuro i-800), ahora
   un rose calmo. Cuando hay sin plan, sube un escalón a -300. */
.pd-mor .pd-card-bar.rose{background:var(--mor-200)}
.pd-mor.has-sin-plan .pd-card-bar.rose{background:var(--mor-300)}
/* Borde izquierdo de 3px como acento de severidad, aparece solo con sin plan. */
.pd-mor{position:relative}
.pd-mor.has-sin-plan::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--mor-300);border-radius:var(--dash-r) 0 0 var(--dash-r);opacity:.55}
.pd-mor-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.pd-mor-alert-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;letter-spacing:0.06em;text-transform:uppercase;color:var(--mor-200)}
/* Sin pulso: el "blink" de antes era lo que hacía el card perturbador. */
.pd-mor-alert-tag .icon{color:var(--mor-200);width:13px;height:13px}
.pd-mor-alert-tag.emerald{color:var(--dash-emerald)}
.pd-mor-alert-tag.emerald .icon{color:var(--dash-emerald)}
.pd-mor-debt-tag{font-size:10.5px;font-weight:800;letter-spacing:0.03em;background:var(--mor-50);color:var(--mor-200);border:1px solid var(--mor-100);padding:4px 9px;border-radius:99px;font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace}
.pd-mor-debt-tag.emerald{background:var(--dash-emerald-tint);color:var(--dash-emerald);border-color:rgba(79,70,229,.2)}
.pd-mor-card-main{position:relative}
.pd-mor-amount{font-size:32px;font-weight:900;letter-spacing:-0.025em;line-height:1.1;color:var(--dash-ink);font-variant-numeric:tabular-nums;font-family:'Outfit','Inter',sans-serif}
/* Con sin plan: el monto hereda el rose-200 (calmo). Sin sin plan: el monto
   se queda en ink neutro para no alarmar cuando ya hay plan de pago. */
.pd-mor.has-sin-plan .pd-mor-amount{color:var(--mor-200)}
.pd-mor-amount.emerald{color:var(--dash-emerald)}
.pd-mor-affected{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:11px;font-weight:700;letter-spacing:0.02em;text-transform:none;color:var(--mor-200);background:var(--mor-50);border:1px solid var(--mor-100);padding:4px 10px;border-radius:99px;line-height:1.3}
.pd-mor-affected.emerald{color:var(--dash-emerald);background:var(--dash-emerald-tint);border-color:rgba(79,70,229,.2)}
/* Sub-pill dentro de "afectados": separa "con plan" y "sin plan" en dos
   tags sutiles. "Sin plan" usa mor-300 (un escalón más fuerte) para que se
   note sin gritar. */
.pd-mor-affected .pd-mor-mini{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:99px;font-size:10px;font-weight:800;background:rgba(79,70,229,.06);color:var(--dash-ink-2);border:1px solid rgba(79,70,229,.12)}
.pd-mor-affected .pd-mor-mini.sin-plan{background:var(--mor-50);color:var(--mor-300);border-color:var(--mor-100)}
.pd-mor-affected .pd-mor-mini.con-plan{background:var(--dash-emerald-tint);color:var(--dash-emerald);border-color:rgba(79,70,229,.15)}
.pd-mor-distrib{padding-top:10px;border-top:1px solid var(--dash-border-soft)}
.pd-mor-distrib-title{font-size:10.5px;font-weight:800;letter-spacing:0.06em;text-transform:uppercase;color:var(--dash-ink-2);display:block;margin-bottom:8px}
.pd-mor-distrib-title.emerald{color:var(--dash-emerald)}
.pd-mor-distrib-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pd-mor-tile{background:rgba(223,227,251,.4);border:1px solid rgba(165,171,239,.4);border-radius:8px;padding:9px 11px;display:flex;flex-direction:column;justify-content:space-between;gap:4px;min-height:54px;transition:background .12s}
.pd-mor-tile:hover{background:rgba(223,227,251,.65)}
.pd-mor-tile.emerald{background:rgba(223,227,251,.4);border-color:rgba(201,206,244,.5)}
.pd-mor-tile.emerald:hover{background:rgba(223,227,251,.65)}
.pd-mor-tile-rentas{grid-column:1 / -1;background:rgba(223,227,251,.5);border-color:rgba(165,171,239,.5);min-height:58px;padding:10px 12px}
.pd-mor-tile-rentas:hover{background:rgba(223,227,251,.7)}
.pd-mor-tile-rentas.emerald{background:rgba(223,227,251,.5);border-color:rgba(201,206,244,.6)}
.pd-mor-tile-rentas.emerald:hover{background:rgba(223,227,251,.7)}
.pd-mor-tile-top{display:flex;align-items:center;justify-content:space-between;gap:6px}
.pd-mor-tile-label{font-size:11px;font-weight:700;letter-spacing:0.02em;text-transform:uppercase;color:var(--dash-ink-2);line-height:1.2}
.pd-mor-tile-count{font-size:9.5px;font-weight:800;background:rgba(79,70,229,.18);color:var(--dash-emerald);border:1px solid rgba(79,70,229,.15);padding:2px 6px;border-radius:99px;letter-spacing:0.02em}
.pd-mor-tile-count.emerald{background:rgba(79,70,229,.18);color:var(--dash-emerald);border-color:rgba(79,70,229,.2)}
/* Footer del card: antes era rojo chillón, ahora calmo con un punto a la izq. */
.pd-mor-card-foot{font-size:11px;color:var(--mor-200);font-weight:600;display:flex;align-items:center;gap:6px}
.pd-mor-card-foot-alert::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--mor-200);display:inline-block}
.pd-mor.has-sin-plan .pd-mor-card-foot-alert{color:var(--mor-300)}
.pd-mor.has-sin-plan .pd-mor-card-foot-alert::before{background:var(--mor-300)}
.pd-mor-card-foot-healthy{color:var(--dash-emerald)}
.pd-mor-card-foot-healthy::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--dash-emerald);display:inline-block}
.pd-mor-tile-amount{font-size:16px;font-weight:800;color:var(--dash-ink);font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;line-height:1.2;letter-spacing:-0.01em}
.pd-mor-tile-amount.emerald{color:var(--dash-emerald)}
/* Override que pega después de las definiciones del card-foot de arriba para
   mantener el divisor superior (border-top) y centrar el contenido. */
.pd-mor-card-foot{padding:8px 0 0;border-top:1px solid rgba(79,70,229,.18);margin-top:auto;justify-content:center}
.pd-mor-card-foot-healthy{border-top-color:rgba(79,70,229,.2)}

/* ═══════════════ PLACEHOLDER (slots para futuros cards) ═══════════════ */

.pd-placeholder{background:repeating-linear-gradient(135deg,#FAFBFC 0 12px,#F8FAFC 12px 24px);border:1px dashed var(--dash-border);box-shadow:none;border-radius:var(--dash-r);min-height:280px;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}
.pd-placeholder:hover{border-color:#94A3B8;background:repeating-linear-gradient(135deg,#F1F5F9 0 12px,#E2E8F0 12px 24px)}
.pd-placeholder-inner{display:flex;align-items:center;gap:14px;padding:18px 22px;max-width:360px;text-align:left}
.pd-placeholder-icon{width:42px;height:42px;border-radius:12px;background:#F1F5F9;color:var(--dash-ink-3);display:flex;align-items:center;justify-content:center;flex:none}
.pd-placeholder-text h4{margin:0 0 4px;font-size:14px;font-weight:800;color:var(--dash-ink-2);letter-spacing:-0.01em}
.pd-placeholder-text p{margin:0;font-size:11.5px;color:var(--dash-ink-3);line-height:1.5}

/* ═══════════════ HABITANTES CARD ═══════════════ */
.pd-res-counter{display:flex;align-items:center;gap:12px;padding:10px 12px;background:linear-gradient(135deg,#FFF7ED,#DFE3FB);border:1px solid #C9CEF4;border-radius:12px;margin-bottom:10px}
.pd-res-counter-icon{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#4F46E5,#3730A3);color:#fff;display:flex;align-items:center;justify-content:center;flex:none;box-shadow:0 4px 12px -4px rgba(79,70,229,.4)}
.pd-res-counter-icon .icon{color:#fff}
.pd-res-search{display:flex;align-items:center;gap:6px;padding:7px 10px;background:#F8FAFC;border:1px solid var(--dash-border-soft);border-radius:8px;margin-bottom:8px;font-size:11px;color:var(--dash-ink-3);font-style:italic}
.pd-res-list{display:flex;flex-direction:column;gap:1px}
.pd-res-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;background:#fff;transition:background .12s}
.pd-res-row:hover{background:#F8FAFC}
.pd-res-row + .pd-res-row{border-top:1px solid var(--dash-border-soft)}
.pd-res-av{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:10.5px;letter-spacing:0.04em;flex:none;font-family:'Outfit',sans-serif}
.pd-res-status{font-size:9.5px;font-weight:800;letter-spacing:0.04em;padding:3px 8px;border-radius:99px;text-transform:uppercase;flex:none}
.pd-res-status.rose{color:var(--dash-rose);background:var(--dash-rose-tint);border:1px solid rgba(79,70,229,.18)}
.pd-res-status.emerald{color:var(--dash-emerald);background:var(--dash-emerald-tint);border:1px solid rgba(79,70,229,.18)}

/* ═══════════════ SIDE PANEL (Estudio Registral) ═══════════════ */
.pd-side-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:1000;opacity:0;pointer-events:none;transition:opacity .2s ease;backdrop-filter:blur(2px)}
.pd-side-overlay.open{opacity:1;pointer-events:auto}
.pd-side-panel{position:absolute;top:0;right:0;bottom:0;width:min(50vw,640px);background:#fff;box-shadow:-12px 0 40px -10px rgba(15,23,42,.18);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s cubic-bezier(.2,.9,.3,1)}
.pd-side-overlay.open .pd-side-panel{transform:translateX(0)}
.pd-side-head{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 22px;border-bottom:1px solid var(--dash-border-soft);background:#fff;flex:none}
.pd-iconbtn{width:32px;height:32px;border:1px solid var(--dash-border-soft);background:#fff;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--dash-ink-2);transition:background .12s}
.pd-iconbtn:hover{background:#F1F5F9}
.pd-side-tabs{display:flex;gap:4px;padding:0 18px;border-bottom:1px solid var(--dash-border-soft);background:#F8FAFC;flex:none}
.pd-side-tab{padding:10px 14px;background:transparent;border:0;border-bottom:2px solid transparent;font:inherit;font-size:11.5px;font-weight:700;color:var(--dash-ink-2);cursor:pointer;display:inline-flex;align-items:center;gap:6px;letter-spacing:0.02em}
.pd-side-tab.on{color:var(--dash-indigo);border-bottom-color:var(--dash-indigo);background:rgba(79,70,229,.04)}
.pd-side-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 6px;font-size:9.5px;font-weight:800;background:var(--dash-rose-tint);color:var(--dash-rose);border-radius:99px}
.pd-side-body{flex:1;overflow-y:auto;padding:18px 22px;background:#F8FAFC}
.pd-side-foot{display:flex;justify-content:space-between;padding:10px 22px;border-top:1px solid var(--dash-border-soft);background:#fff;font-size:10.5px;color:var(--dash-ink-3);flex:none}
@media(max-width:900px){.pd-side-panel{width:90vw}}

/* Documento registral (mock de PDF) */
.pd-reg-doc{position:relative;background:#fff;border:1px solid var(--dash-border-soft);border-radius:8px;padding:28px 26px 32px;box-shadow:0 6px 24px -12px rgba(15,23,42,.15);font-family:Georgia,'Times New Roman',serif;color:#1F2937;overflow:hidden}
.pd-reg-doc-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-30deg);font-size:54px;font-weight:900;color:rgba(71,85,105,.07);letter-spacing:0.1em;pointer-events:none;user-select:none;white-space:nowrap}

/* Acciones del documento (subir / reemplazar / eliminar) */
.pd-reg-doc-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:linear-gradient(180deg,var(--pd-plaque-bg-1) 0%,var(--pd-plaque-bg-2) 100%);border:1px solid var(--pd-plaque-border);border-radius:10px;margin-bottom:16px;flex-wrap:wrap}
.pd-reg-doc-actions-l{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.pd-reg-doc-actions-l > .icon{width:22px;height:22px;color:var(--pd-plaque-icon-2);flex:none}
.pd-reg-doc-actions-l b{display:block;font-size:12.5px;font-weight:800;color:var(--pd-plaque-text-strong);line-height:1.2}
.pd-reg-doc-actions-l span{display:block;font-size:10.5px;color:var(--pd-plaque-text-soft);font-weight:500;line-height:1.2;letter-spacing:0.01em;margin-top:1px}
.pd-reg-doc-actions-r{display:flex;gap:6px;flex-wrap:wrap}
.pd-reg-doc-actions-r .pd-btn{font-size:10.5px;padding:5px 9px;cursor:pointer}
.pd-reg-doc-actions-r .pd-btn .icon{width:12px;height:12px}
.pd-reg-doc-actions-r .pd-btn-danger{color:var(--dash-rose);border-color:rgba(79,70,229,.25)}
.pd-reg-doc-actions-r .pd-btn-danger:hover{background:var(--dash-rose-tint);border-color:var(--dash-rose)}
.pd-reg-doc-head{display:flex;align-items:center;gap:10px;padding-bottom:14px;border-bottom:2px solid #475569;margin-bottom:14px;position:relative;z-index:1}
.pd-reg-doc-logo{width:42px;height:42px;border-radius:50%;background:#334155;color:#F1F5F9;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:13px;letter-spacing:0.05em;flex:none}
.pd-reg-doc-head > div:last-child b{display:block;font-size:11.5px;font-weight:900;color:#334155;letter-spacing:0.06em;text-transform:uppercase}
.pd-reg-doc-head > div:last-child span{font-size:9.5px;color:#6B7280;letter-spacing:0.05em;text-transform:uppercase}
.pd-reg-doc h4{font-size:11px;letter-spacing:0.14em;text-transform:uppercase;color:#334155;border-bottom:1px solid rgba(71,85,105,.2);padding-bottom:4px;margin:14px 0 8px;position:relative;z-index:1}
.pd-reg-doc-table{width:100%;border-collapse:collapse;font-size:11px;position:relative;z-index:1}
.pd-reg-doc-table td{padding:5px 8px;border-bottom:1px solid #F1F5F9;vertical-align:top}
.pd-reg-doc-table td:first-child{color:#6B7280;width:38%;font-style:italic}
.pd-reg-doc-table td:last-child{color:#1F2937}
.pd-reg-doc-table b{font-weight:900}
.pd-reg-doc-grav{list-style:none;margin:0;padding:0;font-size:11px;position:relative;z-index:1}
.pd-reg-doc-grav li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #F1F5F9}
.pd-reg-doc-stamp{margin-top:18px;text-align:center;font-size:9.5px;color:#475569;font-weight:900;letter-spacing:0.14em;padding-top:12px;border-top:1px dashed rgba(71,85,105,.3);position:relative;z-index:1}

/* Listado "Datos registrales" */
.pd-reg-list{background:#fff;border:1px solid var(--dash-border-soft);border-radius:10px;overflow:hidden}
.pd-reg-list-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:9px 14px;border-bottom:1px solid var(--dash-border-soft);font-size:12px}
.pd-reg-list-row:last-child{border-bottom:0}
.pd-reg-list-row span{color:var(--dash-ink-3);font-size:11px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;flex:none}
.pd-reg-list-row b{color:var(--dash-ink);text-align:right;font-weight:800}

/* Gravámenes */
.pd-reg-grav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pd-reg-grav-item{background:#fff;border:1px solid var(--dash-border-soft);border-radius:10px;padding:12px 14px;border-left:3px solid #94A3B8}
.pd-reg-grav-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.pd-reg-grav-head b{font-size:12.5px;font-weight:800;color:var(--dash-ink)}
.pd-reg-grav-row{display:flex;justify-content:space-between;font-size:11px;padding:3px 0;color:var(--dash-ink-2)}
.pd-reg-grav-row span{color:var(--dash-ink-3);font-weight:700;letter-spacing:0.04em;text-transform:uppercase;font-size:10px}
.pd-reg-grav-row b{color:var(--dash-ink);font-weight:800}

/* ═══════════════ INLINE MODE (en el workspace, sin modal) ═══════════════ */
.pd-inline-wrap{display:flex;flex-direction:column;gap:14px;width:100%;min-height:0}
.pd-inline-bar{position:sticky;top:0;z-index:8;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border:1px solid var(--dash-border);border-radius:14px;padding:8px 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;box-shadow:var(--dash-shadow-card,0 4px 12px -4px rgba(15,23,42,.06))}
.pd-back-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;background:#fff;border:1px solid var(--dash-border);border-radius:8px;cursor:pointer;font:inherit;font-size:12px;font-weight:700;color:var(--dash-ink-2);transition:background .12s,color .12s;flex:none}
.pd-back-btn:hover{background:var(--dash-indigo-tint);color:var(--dash-indigo);border-color:var(--dash-indigo)}
.pd-back-btn .icon{width:14px;height:14px}
.pd-inline-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.pd-inline-title > div:last-child{min-width:0}
.pd-inline-title b{display:block;font-size:15px;font-weight:800;color:var(--dash-ink);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-inline-title span{display:block;font-size:11px;color:var(--dash-ink3);font-weight:500;line-height:1.2}
.pd-inline-title-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#1B3A8F,#4F46E5);color:#fff;display:flex;align-items:center;justify-content:center;flex:none}
.pd-inline-title-icon .icon{color:#fff;width:18px;height:18px}
.pd-inline-actions{display:flex;align-items:center;gap:8px;flex:none;margin-left:auto}
.pd-inline-tag{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:var(--dash-indigo-tint);color:var(--dash-indigo);border:1px solid rgba(79,70,229,.18);border-radius:99px;font-size:10.5px;font-weight:800;letter-spacing:0.06em;text-transform:uppercase;cursor:default}
.pd-inline-tag .icon{width:12px;height:12px}

/* Cuando el dashboard va inline (dentro de .pd-inline-wrap), el shell
   interno (que PD.render ya emite) pasa a modo bloque: sin alto fijo (el
   wrap padre manda) y side-rail no sticky. Así ocupa el ancho completo
   del workspace y se ve igual al diseno de referencia. */
.pd-inline-dashboard{width:100%;min-width:0}
.pd-inline-dashboard > .pd-shell{padding:8px 4px 0;height:auto;min-height:0}
.pd-inline-dashboard .pd-grid-split{height:auto;align-items:start;grid-template-columns:minmax(0,1fr) clamp(300px,28vw,380px);gap:12px}
/* En inline mode seguimos ocultando el header KPI azul (ya est en el
   top bar) y el label 'VIGILANCIA' (redundante), pero SÍ mostramos
   el side-rail con los cards de vigilancia. */
.pd-inline-dashboard .pd-header,
.pd-inline-dashboard .pd-header-compact,
.pd-inline-dashboard .pd-kpi-strip,
.pd-inline-dashboard .pd-group-label{display:none !important}
.pd-inline-dashboard .pd-side-rail{display:flex !important;flex-direction:column !important;flex-wrap:nowrap !important;position:sticky;top:8px;max-height:calc(100vh - 100px);overflow-y:auto;overflow-x:hidden;padding-right:4px;align-items:stretch;gap:10px}
.pd-inline-dashboard .pd-side-rail > *{width:100% !important;max-width:100% !important;flex:0 0 auto}

/* ════════════════════════════════════════════════════════════
   LAYOUT COMPACTO — 5S + dashboard japonés
   - Main grid 9-col (izquierda) + side-rail 3-col (derecha)
   - Todo el contenido cabe en el primer viewport (sin scroll)
   - Densidad alta pero respiro generoso
   ════════════════════════════════════════════════════════════ */

.pd-shell-compact{padding:8px 10px;display:flex;flex-direction:column;gap:6px;height:100%;min-height:0}
.pd-grid-split{display:grid;grid-template-columns:minmax(0, 1fr) clamp(320px, 30vw, 420px);gap:10px;align-items:start;flex:1;min-height:0}
.pd-main-grid{display:flex;flex-direction:column;gap:6px;min-width:0;min-height:0;overflow:visible}
.pd-row{display:grid;grid-template-columns:repeat(12, minmax(0, 1fr));gap:10px;min-width:0}
.pd-row > div{min-width:0;min-height:0}
.pd-row > div > .pd-card{height:100%;margin:0}
.pd-side-rail{display:flex;flex-direction:column;gap:8px;position:sticky;top:6px;max-height:calc(100vh - 80px);overflow-y:auto;padding-right:4px}
.pd-side-rail::-webkit-scrollbar{width:6px}
.pd-side-rail::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:4px}
.pd-side-rail::-webkit-scrollbar-track{background:transparent}

/* ── Etiquetas de grupo (línea fina + nombre) ── */
.pd-group-label{display:flex;align-items:center;gap:6px;padding:2px 4px;font-size:9.5px;font-weight:800;letter-spacing:0.16em;text-transform:uppercase;color:var(--dash-ink-3)}
.pd-group-label .pd-group-bar{height:2px;width:18px;background:var(--dash-ink-3);border-radius:1px;display:inline-block}
.pd-group-label .pd-group-bar.rail{background:var(--dash-indigo)}
.pd-group{display:flex;flex-direction:column;gap:6px;min-width:0}
.pd-group .pd-card{margin:0}
@media (max-width:1100px){
  .pd-grid-split{grid-template-columns:1fr}
  .pd-row{grid-template-columns:repeat(6, minmax(0, 1fr))}
  .pd-row > div{grid-column:span 3 !important}
  .pd-side-rail{position:static;max-height:none}
}
@media (max-width:720px){
  .pd-row{grid-template-columns:1fr}
  .pd-row > div{grid-column:span 1 !important}
}

/* ── Header compacto con KPIs ── */
.pd-header-compact{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;background:linear-gradient(135deg,#1B3A8F 0%,#4F46E5 100%);color:#fff;border-radius:12px;gap:14px;flex-wrap:wrap;box-shadow:0 4px 16px -6px rgba(79,70,229,.3)}
.pd-header-main{display:flex;align-items:center;gap:10px;min-width:0;flex:none}
.pd-header-icon{width:34px;height:34px;border-radius:8px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;flex:none}
.pd-header-icon .icon{color:#fff}
.pd-header-titles h1{margin:0;font-size:clamp(14px,1.4vw,18px);font-weight:800;letter-spacing:-0.01em;color:#fff;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:30ch}
.pd-subtitle{margin:1px 0 0;font-size:10.5px;color:rgba(255,255,255,.7);font-weight:500;display:flex;align-items:center;gap:4px}
.pd-subtitle .icon{color:rgba(255,255,255,.7);width:11px;height:11px}
.pd-kpi-strip{display:flex;align-items:stretch;gap:0;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:9px;overflow:hidden;flex-wrap:wrap}
.pd-kpi{display:flex;flex-direction:column;gap:1px;padding:5px 12px;border-right:1px solid rgba(255,255,255,.1);min-width:0;flex:1}
.pd-kpi:last-child{border-right:0}
.pd-kpi-label{font-size:8.5px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:rgba(255,255,255,.65);display:flex;align-items:center;gap:3px}
.pd-kpi-label .icon{color:rgba(255,255,255,.65);width:10px;height:10px}
.pd-kpi-value{font-size:14px;font-weight:800;color:#fff;font-family:'JetBrains Mono',ui-monospace,monospace;letter-spacing:-0.01em;line-height:1.1;white-space:nowrap}
.pd-kpi-delta{font-size:9.5px;font-weight:800;font-family:monospace;letter-spacing:0.02em;line-height:1}
.pd-kpi-delta.up{color:#A5ABEF}
.pd-kpi-delta.down{color:#A5ABEF}
.pd-kpi-foot{font-size:9px;font-weight:600;color:rgba(255,255,255,.7);letter-spacing:0.04em;line-height:1.1}
.pd-kpi-ok .pd-kpi-value{color:#A5ABEF}
.pd-kpi-bad .pd-kpi-value{color:#A5ABEF}
.pd-kpi-status{flex:none;display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:90px}
.pd-kpi-pulse{width:8px;height:8px;border-radius:50%;background:#A5ABEF;box-shadow:0 0 0 0 rgba(165,171,239,.7);animation:pdpulse 1.6s ease-in-out infinite}
@keyframes pdpulse{0%,100%{box-shadow:0 0 0 0 rgba(165,171,239,.7)}50%{box-shadow:0 0 0 6px rgba(165,171,239,0)}}

/* ── Side-rail widgets ultra compactos ── */
.pd-rail{background:#fff;border:1px solid var(--dash-border);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:4px;box-shadow:0 2px 8px -4px rgba(15,23,42,.06);position:relative;overflow:hidden}
.pd-rail::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--dash-ink-3)}
.pd-rail.pd-sev-ok::before,.pd-rail.pd-sev-emerald::before{background:var(--dash-emerald)}
.pd-rail.pd-sev-warn::before,.pd-rail.pd-sev-amber::before{background:var(--dash-amber)}
.pd-rail.pd-sev-danger::before,.pd-rail.pd-sev-rose::before{background:var(--dash-rose)}
.pd-rail.pd-sev-indigo::before{background:var(--dash-indigo)}
.pd-rail-head{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--dash-ink-2)}
.pd-rail-head .icon{color:var(--dash-ink-3);width:12px;height:12px;flex:none}
.pd-rail-head > span:first-of-type{flex:1;min-width:0}
.pd-rail-tag{font-size:10px;font-weight:900;color:var(--dash-ink);background:#F1F5F9;border:1px solid var(--dash-border-soft);padding:1px 6px;border-radius:6px;letter-spacing:0.04em;font-family:monospace}
.pd-rail-amount{font-size:18px;font-weight:900;color:var(--dash-ink);font-family:'JetBrains Mono',ui-monospace,monospace;letter-spacing:-0.01em;line-height:1.1;padding:1px 0}
.pd-rail.pd-sev-danger .pd-rail-amount,.pd-rail.pd-sev-rose .pd-rail-amount{color:var(--dash-rose)}
.pd-rail.pd-sev-warn .pd-rail-amount,.pd-rail.pd-sev-amber .pd-rail-amount{color:var(--dash-amber)}
.pd-rail.pd-sev-ok .pd-rail-amount,.pd-rail.pd-sev-emerald .pd-rail-amount{color:var(--dash-emerald)}
.pd-rail-foot{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:9.5px;color:var(--dash-ink-3);font-weight:600;letter-spacing:0.02em;padding-top:3px;border-top:1px dashed var(--dash-border-soft)}
.pd-rail-pct{font-family:monospace;font-weight:800;color:var(--dash-ink-2)}

.pd-rail-pills{display:flex;flex-wrap:wrap;gap:3px;margin:2px 0}
.pd-pill{display:inline-flex;align-items:center;gap:3px;font-size:9.5px;font-weight:800;letter-spacing:0.04em;padding:2px 6px;border-radius:99px;text-transform:uppercase}
.pd-pill .icon{width:9px;height:9px}
.pd-pill.emerald{color:var(--dash-emerald);background:var(--dash-emerald-tint);border:1px solid rgba(79,70,229,.18)}
.pd-pill.rose{color:var(--dash-rose);background:var(--dash-rose-tint);border:1px solid rgba(79,70,229,.18)}

/* ── Score ring widget ── */
.pd-rail-score{position:relative;width:54px;height:54px;margin:2px auto 1px}
.pd-rail-ring{width:100%;height:100%;color:var(--dash-emerald)}
.pd-rail.pd-sev-amber .pd-rail-ring{color:var(--dash-amber)}
.pd-rail.pd-sev-rose .pd-rail-ring{color:var(--dash-rose)}
.pd-rail.pd-sev-indigo .pd-rail-ring{color:var(--dash-indigo)}
.pd-rail-score-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;line-height:1}
.pd-rail-score-text b{font-size:18px;font-weight:900;color:var(--dash-ink);font-family:'JetBrains Mono',ui-monospace,monospace;letter-spacing:-0.02em}
.pd-rail-score-text span{font-size:8.5px;color:var(--dash-ink-3);font-weight:700;margin-left:1px}
.pd-rail-grade{text-align:center;font-size:10px;font-weight:900;letter-spacing:0.08em;text-transform:uppercase;padding:2px 0}
.pd-rail-grade.emerald{color:var(--dash-emerald)}
.pd-rail-grade.amber{color:var(--dash-amber)}
.pd-rail-grade.rose{color:var(--dash-rose)}
.pd-rail-grade.indigo{color:var(--dash-indigo)}

/* ═══════════════ DENSIDAD JAPONESA (5S) ═══════════════
   Achicar paddings y gaps del main grid para que TODO
   quepa en el primer viewport sin scrollear. */

.pd-shell-compact .pd-card .pd-card-body{padding:10px 12px 12px;gap:6px}
.pd-shell-compact .pd-card .pd-card-foot{padding:6px 12px;font-size:9.5px}
.pd-shell-compact .pd-card-h{padding-bottom:6px !important;margin-bottom:6px !important}
.pd-shell-compact .pd-eyebrow{font-size:9px}
.pd-shell-compact .pd-card-title{font-size:13px;font-weight:800;line-height:1.15;margin:1px 0 0}
.pd-shell-compact .pd-rev-chart-wrap{padding:4px 6px 2px}
.pd-shell-compact .pd-rev-compare{padding:2px 0}
.pd-shell-compact .pd-rev-cell-label{font-size:8.5px}
.pd-shell-compact .pd-rev-cell-value{font-size:18px}
.pd-shell-compact .pd-mor .pd-card-body{padding:8px 10px;gap:6px}
.pd-shell-compact .pd-mor-amount{font-size:20px}
.pd-shell-compact .pd-mor-distrib{padding-top:4px}
.pd-shell-compact .pd-mor-tile{padding:4px 6px;min-height:34px;gap:1px}
.pd-shell-compact .pd-mor-tile-amount{font-size:11px}
.pd-shell-compact .pd-mor-tile-label{font-size:8px}
.pd-shell-compact .pd-mor-tile-count{font-size:7.5px;padding:0 4px}
.pd-shell-compact .pd-mor-card-foot{padding:3px 0 0;font-size:8.5px}
.pd-shell-compact .pd-mor-alert-tag,.pd-shell-compact .pd-mor-debt-tag{font-size:8.5px;padding:2px 6px}
.pd-shell-compact .pd-mor-affected{margin-top:3px;font-size:8.5px;padding:2px 6px}
.pd-shell-compact .pd-mor-distrib-title{font-size:8px;margin-bottom:3px}
.pd-shell-compact .pd-mor-head{margin-bottom:0}
.pd-shell-compact .pd-insights{margin:0}
.pd-shell-compact .pd-insights-head{padding:6px 8px;font-size:10px}
.pd-shell-compact .pd-insights-body{padding:0 2px 4px;max-height:none}
.pd-shell-compact .pd-insight{padding:5px 6px;gap:6px}
.pd-shell-compact .pd-insight-icon{width:20px;height:20px}
.pd-shell-compact .pd-insight-icon .icon{width:11px;height:11px}
.pd-shell-compact .pd-insight-title{font-size:10.5px}
.pd-shell-compact .pd-insight-meta{font-size:8.5px}
.pd-shell-compact .pd-insight-desc{font-size:10px;line-height:1.4;margin-top:1px}
.pd-shell-compact .pd-rev-optimal{padding:6px 0 0;margin-top:2px}
.pd-shell-compact .pd-rev-foot{padding:5px 8px}
.pd-shell-compact .pd-rev-foot-name{font-size:11.5px}
.pd-shell-compact .pd-rev-foot-addr{font-size:9px}
.pd-shell-compact .pd-rev-foot-icon{width:24px;height:24px}
.pd-shell-compact .pd-rev-foot-icon .icon{width:12px;height:12px}

/* Cards de rendimiento (yield/occupancy/history) — tamaño uniforme */
.pd-group-perf .pd-card .pd-card-body{padding:9px 11px;gap:5px}
.pd-group-perf .pd-card-bar{height:3px}
.pd-group-perf .pd-section-title{padding-bottom:5px}
.pd-group-perf h3{font-size:13px}

/* Cards de operaciones */
.pd-group-ops .pd-card .pd-card-body{padding:9px 11px;gap:5px}
.pd-group-ops .pd-card-bar{height:3px}
.pd-group-ops h3{font-size:13px}

/* Placa de Estudio Registral más compacta */
.pd-shell-compact .pd-plaque{padding:8px 10px}
.pd-shell-compact .pd-plaque-big{font-size:11.5px}
.pd-shell-compact .pd-plaque-eyebrow{font-size:8.5px}
.pd-shell-compact .pd-plaque-row + .pd-plaque-row{margin-top:6px}
.pd-shell-compact .pd-plaque-foot{padding-top:5px;margin-top:5px;font-size:9.5px}

/* ════════════════════════════════════════════════════════════════════════
   CALENDARIO DE PAGOS (0075)
   Bloque nuevo; prefijo `cal-` en todas las clases para que no choque con
   los estilos existentes. Usa los CSS variables del proyecto (--primary,
   --success, --warn, --danger, --info, --gold). Mobile-first: la grilla
   mensual se apila en 1 columna por defecto y pasa a 7 columnas ≥720px.
   ════════════════════════════════════════════════════════════════════════ */

/* Toolbar: navegación de mes + toggle de modo + CTA */
.cal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.cal-toolbar .cal-mes-titulo{font-size:16px;min-width:160px;text-align:center}
.cal-toolbar .seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.cal-toolbar .seg-btn{background:transparent;border:0;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--ink2)}
.cal-toolbar .seg-btn.on{background:var(--primary);color:#fff}

/* Grilla mensual */
.cal-grid-mes{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cal-grid-head{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg);font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:.5px}
.cal-grid-head .cal-dow{padding:8px 6px;text-align:center;border-bottom:1px solid var(--line)}
.cal-grid-body{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line)}
.cal-celda{background:var(--card);min-height:96px;padding:6px;display:flex;flex-direction:column;gap:4px;position:relative}
.cal-celda--vacia{background:var(--bg);min-height:96px}
.cal-celda--pasado{opacity:.55}
.cal-celda--hoy{box-shadow:inset 0 0 0 2px var(--primary)}
.cal-celda-num{font-size:12px;font-weight:700;color:var(--ink2);align-self:flex-end}

/* Modo lineal: lista vertical */
.cal-lineal{display:flex;flex-direction:column;gap:14px}
.cal-linea-grupo{display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}
.cal-linea-fecha{font-size:14px;display:flex;align-items:baseline;gap:6px;padding-bottom:6px;border-bottom:1px dashed var(--line)}
.cal-linea-eventos{display:flex;flex-direction:column;gap:6px}

/* Chip de evento (versión compacta, dentro de la celda del mes) */
.cal-evento{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:8px;font-size:12px;line-height:1.25;cursor:pointer;border:1px solid transparent;transition:transform .08s ease, box-shadow .12s ease;background:var(--bg);color:var(--ink)}
.cal-evento:hover{transform:translateY(-1px);box-shadow:0 2px 6px rgba(15,23,42,.08)}
.cal-evento--full{padding:10px 12px;gap:10px}
.cal-evento-emoji{font-size:14px;line-height:1}
.cal-evento--full .cal-evento-emoji{font-size:18px}
.cal-evento-titulo{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-evento-sub{font-size:12px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-evento-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.cal-evento-monto{font-weight:700;font-size:11.5px;color:var(--ink)}
.cal-evento-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.cal-evento-hora{font-size:11px;color:var(--ink2)}
.cal-evento-nombre{font-size:11px;color:var(--ink2);margin-left:4px}
.cal-evento-unidad{font-weight:600;font-size:12px;color:var(--ink2);margin-left:4px}
.cal-evento-mas{font-size:11px;color:var(--primary);text-align:center;padding:1px 0;cursor:pointer}
.cal-evento-mas a{color:inherit}

/* Estados (borde + opacidad) */
.cal-evento--pendiente{box-shadow:inset 0 0 0 2px var(--warning)}
.cal-evento--rechazado{opacity:.55;text-decoration:line-through}
.cal-evento--completado{opacity:.7}
.cal-evento--cancelado{opacity:.45;text-decoration:line-through}

/* Colores por tipo (fondo suave + borde) */
.cal-evento--pago-renta{background:#DBEAFE;border-color:#1D4ED8;color:#1E3A8A}
.cal-evento--pago-mora{background:#FEE2E2;border-color:#B91C1C;color:#7F1D1D}
.cal-evento--pago-plan{background:#FEF3C7;border-color:#B45309;color:#78350F}
.cal-evento--mantenimiento{background:#DCFCE7;border-color:#15803D;color:#14532D}
.cal-evento--cita{background:#EDE9FE;border-color:#6D28D9;color:#4C1D95}
.cal-evento--aviso-atraso{background:#FECACA;border-color:#991B1B;color:#7F1D1D}
.cal-evento--solicitud-plan-pendiente{background:#FEF3C7;border-color:#B45309;color:#78350F;text-decoration:underline;text-decoration-style:dashed}

/* Leyenda al pie */
.cal-leyenda{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--ink2)}
.cal-ley{display:inline-flex;align-items:center;gap:6px}
.cal-ley-dot{width:12px;height:12px;border-radius:4px;display:inline-block;border:1px solid var(--line)}
.cal-ley-dot.cal-evento--pago-renta{background:#DBEAFE;border-color:#1D4ED8}
.cal-ley-dot.cal-evento--pago-mora{background:#FEE2E2;border-color:#B91C1C}
.cal-ley-dot.cal-evento--pago-plan{background:#FEF3C7;border-color:#B45309}
.cal-ley-dot.cal-evento--mantenimiento{background:#DCFCE7;border-color:#15803D}
.cal-ley-dot.cal-evento--cita{background:#EDE9FE;border-color:#6D28D9}
.cal-ley-dot.cal-evento--aviso-atraso{background:#FECACA;border-color:#991B1B}
.cal-ley-dot.cal-evento--solicitud-plan-pendiente{background:#FEF3C7;border-color:#B45309}

/* Modal de detalle */
.kv-list{display:flex;flex-direction:column;gap:4px;margin:6px 0 0}
.kv{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.kv:last-child{border-bottom:0}
.kv .k{color:var(--ink2);font-weight:500}
.kv .v{color:var(--ink);font-weight:600;text-align:right}
.cal-historial{display:flex;flex-direction:column;gap:6px;padding:6px 0}
.cal-hist-line{padding:6px 8px;background:var(--bg);border-radius:6px;font-size:13px;color:var(--ink2)}

/* ────────────── CICLO 2 (calendario-ciclo2, 2026-08-04) ──────────────
   Cross-render F-1 (Recibido/A recibir/Mora), drill-down año→mes,
   vistas semana/quincena, resúmenes, "Crear plan desde mora". */

/* Estados visuales derivados de cargos (cross-render F-1). Tienen
   precedencia sobre las clases por tipo (cal-evento--pago-renta etc.). */
.cal-evento--recibido{background:#E6F1EB;border-color:#3D8C5F;color:#14532D;border-left:4px solid #3D8C5F}
.cal-evento--a-recibir{background:#E8EAF6;border-color:#3949AB;color:#1E3A8A;border-left:4px solid #3949AB}
.cal-evento--a-recibir-parcial{background:#EEF1FB;border-color:#5C6BC0;color:#283593;border-left:4px solid #5C6BC0}
.cal-evento--mora{background:#FBEAEA;border-color:#B23A48;color:#7F1D1D;border-left:4px solid #B23A48}

/* Borde con gradiente cuando hay desglose de mora (renta arriba,
   mora abajo) — UX §2.1. */
.cal-evento--con-desglose{border-image:linear-gradient(180deg,#3949AB 0 50%,#B23A48 50% 100%) 1;border-image-width:0 0 0 4px;border-image-slice:1}

/* Sub-línea con el desglose de mora dentro del chip. */
.cal-evento-sub--desglose{font-size:11px;color:var(--ink2);font-weight:500;font-style:italic;margin-top:1px}

/* CTA "Crear plan" inline en la vista lineal cuando el día tiene mora. */
.cal-crear-plan-cta{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;margin-top:6px;background:#FFF4E0;border:1px dashed #B7791F;color:#78350F;border-radius:8px;font-size:12px;cursor:pointer;transition:background .12s ease}
.cal-crear-plan-cta:hover{background:#FFE9C2}

/* Resumen agregado (Recibido / A recibir / Mora / Plan) — aparece
   arriba de la lista de eventos en mes, semana, quincena y lineal. */
.cal-resumen{display:flex;flex-wrap:wrap;gap:10px;padding:10px 12px;margin-bottom:8px;background:var(--card);border:1px solid var(--line);border-radius:10px;font-size:12px}
.cal-res{display:inline-flex;align-items:baseline;gap:4px;padding:3px 8px;border-radius:6px}
.cal-res b{font-size:11px;color:var(--ink2);text-transform:uppercase;letter-spacing:.4px}
.cal-res--recibido{background:#E6F1EB;color:#14532D}
.cal-res--a-recibir{background:#E8EAF6;color:#1E3A8A}
.cal-res--mora{background:#FBEAEA;color:#7F1D1D}
.cal-res--plan{background:#FFF4E0;color:#78350F}

/* ──── Vista semana: celda más alta para mostrar más eventos ──── */
.cal-grid-semana .cal-celda{min-height:140px}
.cal-celda--semana .cal-evento{font-size:11.5px}

/* Dow con highlight del día actual (semana). */
.cal-dow--hoy{background:var(--primary);color:#fff;border-radius:6px;padding:4px 6px}

/* ──── Vista quincena: grilla 3×5 (15 días en 3 filas de 5) ──── */
.cal-grid-quincena{display:flex;flex-direction:column;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:4px}
.cal-qc-fila{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.cal-celda--q{min-height:80px;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:3px}
.cal-celda--q .cal-evento{font-size:11px;padding:3px 4px}

/* ──── Vista año: 12 celdas-mes con drill-down ──── */
.cal-grid-anio{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}
.cal-anio-totales{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cal-anio-tot{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:10px}
.cal-anio-tot b{font-size:11px;color:var(--ink2);text-transform:uppercase;letter-spacing:.4px;font-weight:600}
.cal-anio-tot-num{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.cal-grid-body--anio{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.cal-celda--mes{cursor:pointer;transition:transform .08s ease, box-shadow .12s ease;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;min-height:96px;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:6px}
.cal-celda--mes:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(15,23,42,.1);border-color:var(--primary)}
.cal-celda--mes:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.cal-celda-mes-num{font-size:14px;font-weight:700;color:var(--ink);text-transform:capitalize}
.cal-celda-mes-meta{font-size:12px;color:var(--ink2)}
.cal-celda-mes-indicadores{display:flex;gap:4px;flex-wrap:wrap}
.cal-ind{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:700;border-radius:9px;color:#fff}
.cal-ind--mora{background:#B23A48}
.cal-ind--recibido{background:#3D8C5F}
.cal-ind--plan{background:#B7791F}

/* Mobile: 2 cols en el año en vez de 3. */
@media (max-width:720px){
  .cal-anio-totales{grid-template-columns:repeat(2,1fr)}
  .cal-grid-body--anio{grid-template-columns:repeat(2,1fr)}
}

/* ═══════════════ ACORDEÓN DEL DASHBOARD DE PROPIEDAD ═══════════════
   Grilla de tarjetas-resumen colapsables (reemplaza el grid 2-col +
   side-rail). Geometría tomada del mockup de referencia "Dashboard v3":
   3 columnas de 16px de gap, tarjeta de radio 10px, header 14/16 con
   icono 28px, eyebrow indigo 10.5px y KPI en mono a la derecha.
   Cada .pd-acc envuelve, SIN tocarlo, el render existente de cada card
   (PD.cardXxx): el header del acordeón se agrega ARRIBA, no reemplaza
   el header interno de la card. Al abrirse, la sección pasa a ocupar la
   fila completa para que el detalle se lea cómodo. */
.pd-acc-toolbar{display:flex;justify-content:flex-end;margin-bottom:0}
/* Grid de 2 filas × 3 columnas: cada card es su propia celda (pd-acc-cell).
   Antes eran 3 pilas verticales de 1+2+3 cards; eso dejaba a Recaudación
   sola en su columna con un hueco enorme debajo. Ahora las 6 cards se
   acomodan uniforme como 2 filas de 3. La altura de cada fila la define
   la card más alta de esa fila. */
.pd-acc-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:stretch}
.pd-acc-cell{display:flex;min-width:0}
.pd-acc-cell > .pd-acc{flex:1;min-width:0;width:100%}
@media (max-width:980px){ .pd-acc-list{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:640px){ .pd-acc-list{grid-template-columns:1fr} }
.pd-acc{background:var(--dash-card);border:1px solid var(--dash-border);border-radius:var(--dash-r);box-shadow:var(--dash-shadow-card);overflow:hidden;min-width:0}

.pd-acc-head{display:block;width:100%;padding:14px 16px;cursor:pointer;user-select:none;background:transparent;border:0;text-align:left;font:inherit;color:inherit}
.pd-acc-head:hover{background:#FAFBFF}
.pd-acc-row{display:flex;align-items:center;gap:12px}
.pd-acc-icon{width:28px;height:28px;border-radius:8px;background:var(--dash-indigo-tint);color:var(--dash-indigo);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.pd-acc-icon svg{width:14px;height:14px}
.pd-acc-titles{display:block;flex:1 1 0;min-width:0}
.pd-acc-eyebrow{display:block;font-size:10.5px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--dash-indigo);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-acc-title{display:block;font-size:13.5px;font-weight:600;color:var(--dash-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* min-width:0 + max-width: sin esto el flex-shrink queda anulado por el
   min-content y un KPI largo ("Ciudad Quesada, Alajuela") empujaba el
   chevron fuera del .pd-acc, que lo recortaba con su overflow:hidden. */
.pd-acc-kpi{display:block;text-align:right;flex:0 1 auto;min-width:0;max-width:45%}
.pd-acc-kpi-value{display:block;font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-size:14px;color:var(--dash-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-acc-kpi-sub{display:block;font-size:11px;color:var(--dash-indigo);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-acc-chevron{flex:0 0 auto;display:flex;align-items:center;justify-content:center;color:var(--dash-ink4);transition:transform .15s cubic-bezier(.25,.46,.45,.94)}
.pd-acc-chevron svg{width:12px;height:12px}
.pd-acc.open .pd-acc-chevron{transform:rotate(180deg)}

/* Fila de avance opcional bajo el header (p. ej. "recaudado en agosto"). */
.pd-acc-preview{display:block;margin-top:12px}
.pd-acc-prev-row{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--dash-ink3);margin-bottom:5px}
.pd-acc-prev-row b{color:var(--dash-ink);font-weight:600}
.pd-acc-prev-track{display:block;height:8px;background:var(--dash-track);border-radius:99px;overflow:hidden}
.pd-acc-prev-fill{display:block;height:100%;background:var(--dash-indigo);border-radius:99px}

.pd-acc-body{display:none;border-top:1px solid var(--dash-border-soft)}
.pd-acc.open .pd-acc-body{display:block}
/* La card interna pierde su propio marco y barra de color: el .pd-acc ya
   provee el contenedor, así se evita el doble-borde al anidarla. */
.pd-acc-body > .pd-card{border:none;box-shadow:none;border-radius:0}
.pd-acc-body > .pd-card > .pd-card-bar{display:none}
@media (max-width:640px){
  .pd-acc-head{padding:12px 14px}
  .pd-acc-row{gap:10px}
}

/* ═══════════════ INVENTARIO DE RENTAS (tabla de unidades) ═══════════════
   Va a lo ancho, debajo de la grilla, y NO scrollea por dentro: crece con
   el contenido y se recorre con el scroll normal de la página. */
.pd-inv-card{margin-top:0;background:var(--dash-card);border:1px solid var(--dash-border);border-radius:var(--dash-r);box-shadow:var(--dash-shadow-card);overflow:hidden}
.pd-inv-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px}
.pd-inv-head .pd-acc-eyebrow{display:flex;align-items:center;gap:6px}
.pd-inv-head h3{margin:1px 0 0;font-size:13.5px;font-weight:600;color:var(--dash-ink)}
.pd-inv-head-sub{font-size:11.5px;color:var(--dash-ink3)}
.pd-inv-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:10px 16px;font-size:11.5px;color:var(--dash-ink3)}
.pd-inv-foot b{color:var(--dash-ink);font-weight:600}

/* Tabla "limpia": sin bordes verticales ni scroll propio, solo reglas
   horizontales — como el mockup de referencia. */
.pd-tablewrap-flat{border:0;border-radius:0;overflow:visible;background:transparent}
/* En escritorio la tabla nunca scrollea por dentro (crece y se recorre con
   el scroll de la página). En pantallas angostas las 9 columnas no caben:
   ahí sí se permite scroll horizontal propio para no romper el layout. */
@media (max-width:780px){ .pd-tablewrap-flat{overflow-x:auto} }
.pd-table-clean{width:100%;border-collapse:collapse;font-size:12px}
.pd-table-clean thead th{background:var(--dash-thead-bg);text-align:left;font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--dash-ink3);padding:8px 16px;border-top:1px solid var(--dash-track);border-bottom:1px solid var(--dash-track);border-right:0;white-space:nowrap}
.pd-table-clean tbody td{padding:7px 16px;border-bottom:1px solid var(--dash-row-border);border-right:0;vertical-align:middle;color:var(--dash-ink);font-size:12px}
.pd-table-clean tbody tr:last-child td{border-bottom:0}
.pd-table-clean tbody tr:hover{background:#FAFBFF}
.pd-table-clean th.center,.pd-table-clean td.center{text-align:center}
.pd-table-clean th.right,.pd-table-clean td.right{text-align:right}
.pd-inv-u{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-size:11px;color:var(--dash-ink3)}
.pd-inv-tipo{color:var(--dash-ink2)}
.pd-inv-pago{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-size:11px;color:var(--dash-ink2);white-space:nowrap}
.pd-inv-hab{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-size:11px;color:var(--dash-ink2)}
.pd-inv-keys{display:flex;align-items:center;justify-content:center;gap:3px;color:var(--dash-ink3);font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-size:11px}
.pd-inv-keys svg{width:11px;height:11px}

/* Píldoras de estado / morosidad. El reset de font-weight/letter-spacing/
   text-transform es obligatorio: hay otra .pd-pill (del rail) con peso 800 y
   mayúsculas que se filtraba acá por tener la misma especificidad. */
.pd-pill{display:inline-block;font-size:10px;line-height:1.6;padding:2px 8px;border-radius:99px;white-space:nowrap;font-weight:500;letter-spacing:0;text-transform:none}
.pd-pill.muted{background:transparent;color:var(--dash-ink4)}
.pd-pill.gray{background:var(--dash-track);color:var(--dash-track-ink)}
.pd-pill.plan{background:var(--dash-pill-soft-bg);color:var(--dash-pill-soft-ink)}
.pd-pill.debt{background:var(--dash-pill-solid-bg);color:var(--dash-pill-solid-ink)}

/* nowrap + align-items:center: con `wrap` los dos botones caían en dos
   líneas y duplicaban el alto de la fila; con `stretch` (por defecto) se
   estiraban al alto de la celda. */
.pd-inv-actions{display:flex;justify-content:flex-end;align-items:center;gap:6px;flex-wrap:nowrap}
.pd-inv-btn{display:inline-flex;align-items:center;gap:5px;background:#fff;border-radius:6px;padding:4px 9px;font:inherit;font-size:11px;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}
.pd-inv-btn svg{width:11px;height:11px}
/* Modificadores con prefijo propio, NO `.wa`/`.doc` sueltos: llave.css:402
   define un `.wa{height:min(72vh,660px)}` para el panel de mensajería, y la
   colisión estiraba cada botón a 660px reventando la fila entera de la tabla. */
.pd-inv-btn--wa{border:1px solid var(--dash-btn-primary-border);color:var(--dash-indigo)}
.pd-inv-btn--wa:hover{background:var(--dash-indigo-tint)}
.pd-inv-btn--doc{border:1px solid var(--dash-btn-ghost-border);color:var(--dash-ink2)}
.pd-inv-btn--doc:hover{background:var(--dash-border-soft)}
.pd-inv-none{font-size:11px;color:var(--dash-ink4)}

/* ═══════════════ ESTÁNDARES ÚNICOS DEL DETALLE ═══════════════
   Estas reglas van al final a propósito: unifican por orden lo que antes
   cada tarjeta definía por su cuenta (6 colores de eyebrow, 3 paddings de
   body, 3 formas de dimensionar un SVG). Al agregar una tarjeta nueva no
   hay que redefinir nada de esto. */

/* 1. Un solo eyebrow. Antes: índigo, gris, rojo y 3 pesos distintos. */
.pd-eyebrow,.pd-rev-eyebrow,.pd-reg-eyebrow,.pd-reg-small-eyebrow,
.pd-hab-eyebrow,.pd-tk-eyebrow,.pd-acc-eyebrow,.pd-occ-gauge-label{
  font-size:10.5px;font-weight:600;letter-spacing:.6px;
  text-transform:uppercase;color:var(--dash-indigo)
}
/* Estos tres tienen 3 clases de especificidad (0-3-0) y ganaban a la regla
   de arriba: hay que igualarles la especificidad para neutralizarlos. */
.pd-card .pd-card-h .pd-eyebrow,
.pd-card .pd-section-title .pd-eyebrow,
.pd-shell-compact .pd-acc-body .pd-eyebrow{
  font-size:10.5px;font-weight:600;letter-spacing:.6px;color:var(--dash-indigo)
}

/* 2. Un solo padding de cuerpo dentro del acordeón. */
.pd-shell-compact .pd-acc-body .pd-card-body,
.pd-shell-compact .pd-acc-body .pd-rev-body{padding:14px 16px 16px;gap:12px}

/* 3. Una sola forma de dimensionar un SVG de gráfico. */
.pd-chart-svg{width:100%;height:auto;display:block}

/* 4. Dentro del acordeón nada scrollea por su cuenta: la página manda. */
.pd-acc-list .pd-hab-res-list,.pd-acc-list .pd-reg-res-list{max-height:none;overflow:visible;padding-right:0}

/* 5. La tabla comparativa de recaudación recortaba montos de 9 dígitos:
      1fr tiene min-content como mínimo, hay que forzar minmax(0,1fr). */
.pd-rev-table{grid-template-columns:max-content minmax(0,1fr) minmax(0,1fr)}
.pd-shell-compact .pd-rev-table-c{font-size:15px;padding:10px 12px}

/* 6. Serie categórica del gráfico de barras: 4 escalones del índigo en vez
      de 4 matices distintos (ámbar/rojo/violeta/verde), que era lo que hacía
      ver el bloque como un semáforo. */
.pd-bar--1{fill:var(--dash-i-600)}
.pd-bar--2{fill:var(--dash-i-500)}
.pd-bar--3{fill:var(--dash-i-400)}
.pd-bar--4{fill:var(--dash-i-300)}
.pd-bar-label{fill:var(--dash-ink2)}
.pd-bar-grid{stroke:var(--dash-border)}
.pd-bar-tick{fill:var(--dash-ink3)}

/* 8. Avatares: misma familia, escalonados por posición. */
.pd-av--1{background:var(--dash-i-500)}
.pd-av--2{background:var(--dash-i-400)}
.pd-av--3{background:var(--dash-i-600)}
.pd-av--4{background:var(--dash-i-300)}

/* 7. Aviso de sección con datos de ejemplo (tickets todavía no tiene API). */
.pd-demo-tag{display:inline-flex;align-items:center;gap:4px;font-size:9.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--dash-amber);background:var(--dash-amber-tint);border-radius:99px;padding:2px 8px;white-space:nowrap}

/* Responsive: en móvil la grilla se mantiene (7 columnas) pero las celdas
   son más bajas para que entre el mes en pantalla. */
@media (max-width:720px){
  .cal-celda{min-height:64px;padding:4px}
  .cal-evento{padding:2px 4px;font-size:11px}
  .cal-evento-titulo{font-size:11px}
  .cal-celda-num{font-size:10px}
}

/* ═══════════════ IMPRESIÓN / PDF DEL DETALLE DE PROPIEDAD ═══════════════
   El único @media print del proyecto (llave.css) se escribió para recibos y
   apunta a .card/.btn/.fab, clases que este detalle no usa: por eso el PDF
   salía con el chrome encima, tarjetas partidas y secciones colapsadas.
   Este bloque va al final de dashboard.css, que index.html carga después de
   llave.css, así que gana por orden sin tener que tocar la hoja compartida. */
@media print{
  @page{size:Letter portrait;margin:12mm 10mm 14mm}

  /* Chrome flotante que se imprimía encima del contenido. */
  .fab-rep,#fab-reportes,.sbfab,.scrim,#imp-bar,#modal-root,
  .pd-side-overlay,.pd-side-panel,#pd-registry-panel{display:none!important}

  /* La barra superior se CONSERVA (es el único sitio con el nombre de la
     propiedad, porque .pd-header está oculto), pero sin sticky ni botones. */
  .pd-inline-bar{position:static!important;backdrop-filter:none!important;
                 box-shadow:none!important;background:#fff!important;break-inside:avoid}
  .pd-back-btn,.pd-inline-actions,.pd-acc-toolbar{display:none!important}

  /* Todo se imprime expandido aunque en pantalla esté colapsado. */
  .pd-acc-body{display:block!important}
  .pd-acc-chevron{display:none!important}

  /* Cortes de página: ninguna tarjeta ni fila se parte a la mitad. */
  .pd-acc,.pd-inv-card,.pd-card{break-inside:avoid;page-break-inside:avoid}
  .pd-table thead,.pd-table-clean thead{display:table-header-group}
  .pd-table tbody tr,.pd-table-clean tbody tr{break-inside:avoid;page-break-inside:avoid}

  /* En papel no hay scroll: lo recortado por max-height desaparecería. */
  .pd-hab-res-list,.pd-reg-res-list,.pd-rev-insights-body,
  .pd-tablewrap,.pd-tablewrap-flat{max-height:none!important;overflow:visible!important}

  /* Chrome descarta fondos: sin esto las píldoras y los tintes salen en blanco. */
  .pd-inline-wrap,.pd-inline-wrap *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}

  /* Solo animation/transition: resetear transform rompería el anillo del gauge. */
  .pd-inline-wrap *,.pd-inline-wrap *::before,.pd-inline-wrap *::after{animation:none!important;transition:none!important}

  /* La columna de acciones no sirve en papel y se lleva ~150px de ancho. */
  .pd-inv-card .pd-table-clean thead th:last-child,
  .pd-inv-card .pd-table-clean tbody td:last-child{display:none!important}
  .pd-table-clean{font-size:10.5px}
  .pd-table-clean tbody tr:hover{background:transparent}

  /* min-height:100vh del shell agregaba una página en blanco al final. */
  body,.shell{min-height:0!important}
}

/* ╔════════════════════════════════════════════════════════════════════╗
   ║  DASHBOARD INICIO — paleta monocroma índigo (mismo lenguaje que  ║
   ║  el detalle de propiedad). V.dashboard ahora envuelve su salida   ║
   ║  en <div class="dash-home">. Re-mapeamos tokens globales y sobre- ║
   ║  escribimos los colores hardcoded de las cards .oc-hab / .ops /   ║
   ║  .ing para que la severidad se comunique por CLARIDAD (más oscuro ║
   ║  = más severo) y no por matiz.                                    ║
   ╚════════════════════════════════════════════════════════════════════╝ */

.dash-home {
  /* Superficies y bordes */
  --bg: #F8F9FC;
  --card: #FFFFFF;
  --line: #E9EBF3;
  --shadow: 0 1px 2px rgba(38,34,98,.04), 0 4px 14px rgba(38,34,98,.05);
  --shadow-lg: 0 10px 30px rgba(38,34,98,.16);
  --r: 10px;
  /* Textos */
  --ink: #111322;
  --ink2: #444A63;
  --ink3: #7A7F97;
  /* Primary (índigo 500) */
  --primary: #4F46E5;
  --primary-dark: #4338CA;
  --primary-tint: #EEF0FE;
  /* Roles semánticos → escalones del índigo (paleta monocroma) */
  --success: #7C82E8;       /* i-400: calmo/ok */
  --success-tint: #EEF0FE;  /* i-50 */
  --info: #4F46E5;          /* i-500 */
  --info-tint: #EEF0FE;     /* i-50 */
  --warning: #4338CA;       /* i-600: atención */
  --warning-tint: #EEF0FE;  /* i-50 */
  --danger: #312E81;        /* i-800: alerta */
  --danger-tint: #DFE3FB;   /* i-100 */
  --gold: #4338CA;          /* i-600 (antes dorado) */
  --gold-tint: #EEF0FE;     /* i-50 */
  /* Alias locales para los overrides hardcoded de las cards de inicio */
  --dh-bg: #F8F9FC;
  --dh-card: #FFFFFF;
  --dh-line: #E9EBF3;
  --dh-line-soft: #F1F2F8;
  --dh-ink: #111322;
  --dh-ink2: #444A63;
  --dh-ink3: #7A7F97;
  --dh-i50: #EEF0FE;
  --dh-i100: #DFE3FB;
  --dh-i200: #C9CEF4;
  --dh-i400: #7C82E8;
  --dh-i500: #4F46E5;
  --dh-i600: #4338CA;
  --dh-i700: #3730A3;
  --dh-i800: #312E81;
  --dh-i900: #1E1B4B;
}

/* ═══ Card Ocupación + Habitantes ═══ */
.dash-home .oc-hab-card{background:var(--dh-card);border-radius:var(--dash-r);border:1px solid var(--dh-line);box-shadow:var(--dash-shadow-card);font-family:var(--font-sans,inherit)}
.dash-home .oc-hab-head{border-bottom:1px solid var(--dh-line-soft)}
.dash-home .oc-hab-head-icon{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .oc-hab-head h2{color:var(--dh-ink)}
.dash-home .oc-hab-head p{color:var(--dh-ink3)}
.dash-home .oc-hab-gauge-box{background:var(--dh-bg);border:1px solid var(--dh-line)}
.dash-home .oc-hab-eyebrow{color:var(--dh-ink3)}
.dash-home .oc-hab-ring-num{color:var(--dh-ink)}
.dash-home .oc-hab-gauge-pct{color:var(--dh-ink)}
.dash-home .oc-hab-gauge-sub{color:var(--dh-ink3)}
.dash-home .oc-hab-plaque-box{background:var(--dh-i50);border:1px solid var(--dh-i100)}
.dash-home .oc-hab-plaque-tag{background:var(--dh-card);color:var(--dh-i700);border:1px solid var(--dh-i100)}
.dash-home .oc-hab-plaque-avatar{background:linear-gradient(135deg,var(--dh-i400) 0%,var(--dh-i600) 100%);color:#fff;box-shadow:0 4px 12px -4px rgba(79,70,229,.4)}
.dash-home .oc-hab-plaque-eyebrow{color:var(--dh-i700)}
.dash-home .oc-hab-plaque-num{color:var(--dh-ink)}
.dash-home .oc-hab-plaque-sub{color:var(--dh-ink3)}
.dash-home .oc-hab-search input{border:1px solid var(--dh-line);color:var(--dh-ink2);background:var(--dh-card)}
.dash-home .oc-hab-search input:focus{border-color:var(--dh-i500);box-shadow:0 0 0 2px rgba(79,70,229,.15)}
.dash-home .oc-hab-list::-webkit-scrollbar-thumb{background:var(--dh-line)}
.dash-home .oc-hab-row{border:1px solid var(--dh-line-soft);background:var(--dh-card)}
.dash-home .oc-hab-row:hover{background:var(--dh-bg)}
.dash-home .oc-hab-avatar{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .oc-hab-nombre{color:var(--dh-ink)}
.dash-home .oc-hab-apto{color:var(--dh-ink3)}
.dash-home .oc-hab-estado.ok{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .oc-hab-estado.moroso{background:var(--dh-i100);color:var(--dh-i800)}
.dash-home .oc-hab-estado.gracia{background:var(--dh-i50);color:var(--dh-i600)}
.dash-home .oc-hab-empty{color:var(--dh-ink3)}
.dash-home .oc-hab-chart-box{border-top:1px solid var(--dh-line-soft)}
.dash-home .oc-hab-leg-label{color:var(--dh-ink2)}
.dash-home .oc-hab-toggle{background:var(--dh-line-soft)}
.dash-home .oc-hab-tg{color:var(--dh-ink3)}
.dash-home .oc-hab-tg.on{background:var(--dh-card);color:var(--dh-ink)}

/* ═══ Card Centro de Operaciones ═══ */
.dash-home .ops-card{background:var(--dh-card);border-radius:var(--dash-r);border:1px solid var(--dh-line);box-shadow:var(--dash-shadow-card);font-family:var(--font,inherit)}
.dash-home .ops-head{border-bottom:1px solid var(--dh-line-soft)}
.dash-home .ops-head-icon{background:var(--dh-i50);color:var(--dh-i500)}
.dash-home .ops-eyebrow{color:var(--dh-ink3)}
.dash-home .ops-head-text h2{color:var(--dh-ink)}
.dash-home .ops-head-text p{color:var(--dh-ink2)}
.dash-home .ops-tag{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .ops-sub-card{background:var(--dh-bg);border:1px solid var(--dh-line)}
.dash-home .ops-sub-card:hover{border-color:var(--dh-i200);background:var(--dh-card);box-shadow:0 2px 6px rgba(38,34,98,.06)}
.dash-home .ops-sub-card:focus-visible{outline:2px solid var(--dh-i500);outline-offset:2px}
.dash-home .ops-sub-head{color:var(--dh-ink2)}
.dash-home .ops-num{color:var(--dh-ink)}
.dash-home .ops-num-label{color:var(--dh-ink2)}
.dash-home .ops-status.ok{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .ops-status.danger{background:var(--dh-i100);color:var(--dh-i800)}
.dash-home .ops-section{border-top:1px solid var(--dh-line-soft)}
.dash-home .ops-section-title{color:var(--dh-ink3)}
.dash-home .ops-cat-chip{background:var(--dh-card);border:1px solid var(--dh-line)}
.dash-home .ops-cat-chip:hover{border-color:var(--dh-i200);background:var(--dh-bg)}
.dash-home .ops-cat-name{color:var(--dh-ink)}
.dash-home .ops-cat-count{color:var(--dh-i700);background:var(--dh-i50)}
.dash-home .ops-empty-cat{color:var(--dh-ink3)}

/* ═══ Card Ingresos del Mes ═══ */
.dash-home .ing-card{background:var(--dh-card);border-radius:var(--dash-r);border:1px solid var(--dh-line);box-shadow:var(--dash-shadow-card);font-family:var(--font,inherit)}
.dash-home .ing-head{border-bottom:1px solid var(--dh-line-soft)}
.dash-home .ing-head-icon{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .ing-eyebrow{color:var(--dh-ink3)}
.dash-home .ing-head-text h2{color:var(--dh-ink)}
.dash-home .ing-head-text p{color:var(--dh-ink2)}
.dash-home .ing-head-link{background:transparent;border:1px solid var(--dh-line);color:var(--dh-ink2)}
.dash-home .ing-head-link:hover{background:var(--dh-bg);border-color:var(--dh-i200);color:var(--dh-ink)}
.dash-home .ing-amount{color:var(--dh-ink)}
.dash-home .ing-amount-pct{color:var(--dh-i700);background:var(--dh-i50)}
.dash-home .ing-meta-sub{color:var(--dh-ink2)}
.dash-home .ing-meta-sub .money{color:var(--dh-ink)}
.dash-home .ing-bar{background:var(--dh-line-soft)}
.dash-home .ing-bar-ok{background:linear-gradient(90deg,var(--dh-i400) 0%,var(--dh-i500) 100%)}
.dash-home .ing-bar-mid{background:linear-gradient(90deg,var(--dh-i500) 0%,var(--dh-i600) 100%)}
.dash-home .ing-bar-low{background:linear-gradient(90deg,var(--dh-i700) 0%,var(--dh-i800) 100%)}
.dash-home .ing-mora-banner{background:var(--dh-i50);border:1px solid var(--dh-i100);color:var(--dh-i700)}
.dash-home .ing-mora-banner:hover{background:var(--dh-i100);border-color:var(--dh-i200);box-shadow:0 2px 6px rgba(38,34,98,.1)}
.dash-home .ing-mora-banner .icon{color:var(--dh-i700)}
.dash-home .ing-mora-banner>span b{color:var(--dh-i800)}
.dash-home .ing-mora-banner.ok{background:var(--dh-i50);border-color:var(--dh-i100);color:var(--dh-i700)}
.dash-home .ing-mora-banner.ok .icon{color:var(--dh-i700)}
.dash-home .ing-mora-banner.ok>span b{color:var(--dh-i800)}
.dash-home .ing-flujo{background:var(--dh-bg);border:1px solid var(--dh-line)}
.dash-home .ing-flujo-title{color:var(--dh-ink3)}
.dash-home .ing-flujo-list{color:var(--dh-ink2)}
.dash-home .ing-flujo-list li b{color:var(--dh-ink)}
.dash-home .ing-pend-title{color:var(--dh-ink3)}
.dash-home .ing-pend-badge{background:var(--dh-i100);color:var(--dh-i800)}
.dash-home .ing-pend-list::-webkit-scrollbar-thumb{background:var(--dh-line)}
.dash-home .ing-pend-row{border:1px solid var(--dh-line-soft);background:var(--dh-card)}
.dash-home .ing-pend-row:hover{background:var(--dh-bg)}
.dash-home .ing-pend-avatar{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .ing-pend-nombre{color:var(--dh-ink)}
.dash-home .ing-pend-unidad,
.dash-home .ing-pend-detalle{color:var(--dh-ink2)}
.dash-home .ing-pend-monto .money{color:var(--dh-ink)}
.dash-home .ing-pend-tag{background:var(--dh-i800);color:#fff}
.dash-home .ing-pend-empty{background:var(--dh-i50);border:1px solid var(--dh-i100);color:var(--dh-i700)}
.dash-home .ing-pend-empty .icon{color:var(--dh-i700)}

/* Píldoras y montos de la lista de morosos dentro de .ing-pend-list.
   Vienen con color/background inline, !important gana al inline. */
.dash-home .ing-tenant-plan-pill{background:var(--dh-i50)!important;color:var(--dh-i700)!important;border:1px solid var(--dh-i100)}
.dash-home .ing-tenant-plan-pill.pend{background:var(--dh-i100)!important;color:var(--dh-i800)!important;text-decoration-color:var(--dh-i600)}
.dash-home .ing-tenant-monto--mora{background:transparent!important}
.dash-home .ing-tenant-monto--plan{background:var(--dh-i50)!important;color:var(--dh-i700)!important}
.dash-home .ing-tenant-monto--plan-pend{background:transparent!important;color:var(--dh-i600)!important;text-decoration-color:var(--dh-i600)!important}

/* ═══ Banner y elementos globales heredados ═══ */
.dash-home .banner.info{background:var(--dh-i50);color:var(--dh-i800)}
.dash-home .banner.warn{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .banner.danger{background:var(--dh-i100);color:var(--dh-i800)}
.dash-home .kpi{background:var(--dh-card);border:1px solid var(--dh-line);border-radius:var(--dash-r);box-shadow:var(--dash-shadow-card)}
.dash-home .kpi .klabel{color:var(--dh-ink2)}
.dash-home .kpi .kval{color:var(--dh-ink)}
.dash-home .kpi .ksub{color:var(--dh-ink3)}
.dash-home .kpi.alert .kval{color:var(--dh-i800)}
.dash-home .card{background:var(--dh-card);border:1px solid var(--dh-line);border-radius:var(--dash-r);box-shadow:var(--dash-shadow-card)}
.dash-home .card .card-title{color:var(--dh-ink)}
.dash-home .litem{border-bottom:1px solid var(--dh-line-soft)}
.dash-home .litem:last-child{border-bottom:0}
.dash-home .avatar{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .btn{background:var(--dh-i500);color:#fff}
.dash-home .btn:hover{background:var(--dh-i600)}
.dash-home .btn.sec{background:var(--dh-card);color:var(--dh-ink);border:1px solid var(--dh-line)}
.dash-home .btn.sec:hover{background:var(--dh-bg)}
.dash-home .btn.ghost{background:none;color:var(--dh-i600)}
.dash-home .btn.danger{background:var(--dh-i800)}
.dash-home .btn.danger:hover{background:var(--dh-i900)}
.dash-home .iconbtn{color:var(--dh-ink2)}
.dash-home .iconbtn:hover{background:var(--dh-bg);color:var(--dh-ink)}
.dash-home .filtros-tog{color:var(--dh-ink2)}
.dash-home .filtros-tog:hover{color:var(--dh-ink)}
.dash-home .badge.b-info{background:var(--dh-i50);color:var(--dh-i700)}
.dash-home .money{color:var(--dh-ink)}

/* Bloque "¿CUÁNTO DEBERÍA INGRESAR ESTE MES?" (.ing-monto-esperado).
   Venía con gradiente sky → indigo-tinted. */
.dash-home .ing-monto-esperado{background:var(--dh-i50);border:1px solid var(--dh-i100)}
.dash-home .ing-monto-esperado-lab{color:var(--dh-i700)}
.dash-home .ing-monto-esperado-val{color:var(--dh-i900)}
.dash-home .ing-monto-esperado-sub{color:var(--dh-ink2)}

/* Cajas Entradas / Salidas. Las dos pasan a tintes índigo: la severidad
   se lee por la posición (Salidas = abajo) más que por matiz. */
.dash-home .ing-es-entradas{background:var(--dh-i50);border:1px solid var(--dh-i100)}
.dash-home .ing-es-entradas .ing-es-lab{color:var(--dh-i700)}
.dash-home .ing-es-entradas .ing-es-val{color:var(--dh-i800)}
.dash-home .ing-es-salidas{background:var(--dh-i50);border:1px solid var(--dh-i100)}
.dash-home .ing-es-salidas .ing-es-lab{color:var(--dh-i700)}
.dash-home .ing-es-salidas .ing-es-val{color:var(--dh-i800)}

/* Bloque "TOTAL ADEUDADO" + segmentos mora / plan. */
.dash-home .ing-mini-adeudo{background:var(--dh-bg);border:1px solid var(--dh-line)}
.dash-home .ing-mini-adeudo-lab{color:var(--dh-ink2)}
.dash-home .ing-mini-adeudo-val{color:var(--dh-ink)}
.dash-home .ing-mini-seg--mora{background:var(--dh-i100);border:1px solid var(--dh-i200)}
.dash-home .ing-mini-seg--mora .ing-mini-seg-lab{color:var(--dh-i800)}
.dash-home .ing-mini-seg--mora .ing-mini-seg-val{color:var(--dh-i800)}
.dash-home .ing-mini-seg--plan{background:var(--dh-i50);border:1px solid var(--dh-i100)}
.dash-home .ing-mini-seg--plan .ing-mini-seg-lab{color:var(--dh-i700)}
.dash-home .ing-mini-seg--plan .ing-mini-seg-val{color:var(--dh-i800)}

/* El chart de Ingresos y Gastos 12 meses usa App.barChart con var(--primary)
   y var(--danger) — ya re-mapeados a índigo arriba. Las classes .bar-ingreso
   y .bar-gasto quedan disponibles si en el futuro alguien quiere ajustar
   el color desde CSS sin tocar el JS. */
.dash-home .bar-ingreso{fill:var(--dh-i500)}
.dash-home .bar-gasto{fill:var(--dh-i800)}
.dash-home .legend{color:var(--dh-ink2)}
