/* =========================================
   CENTINELA — Plataforma de Auditoria
   v4.0 — Diseño Apple + Baldera Comunicaciones
   ========================================= */
:root, [data-theme="light"] {
  /* Apple-inspired neutrals */
  --bg: #F5F5F7;
  --card: #FFFFFF;
  --surface: #FFFFFF;       /* alias para --card */
  --sidebar: #FBFBFD;
  --hover: #F2F2F4;
  --border: #D2D2D7;
  --border2: #E8E8ED;
  --bd: #E5E5E7;            /* hairline lines */

  /* Apple text hierarchy */
  --tx: #1D1D1F;
  --tx2: #515154;
  --tx3: #86868B;

  /* Baldera red as primary — replaces indigo */
  --indigo: #C8102E;
  --indigo-s: #FDF2F4;
  --indigo-d: #A00D25;
  --accent: #C8102E;        /* alias semántico */

  /* Semantic colors — Apple-tuned */
  --green: #30D158;
  --green-s: #E8F9ED;
  --rose: #FF3B30;
  --rose-s: #FFECEB;
  --amber: #FF9F0A;
  --amber-s: #FFF5E6;
  --orange: #FF8800;
  --sky: #007AFF;
  --sky-s: #E6F2FF;
  --purple: #BF5AF2;
  --purple-s: #F7EDFD;
  --teal: #64D2FF;
  --teal-s: #EAF8FE;

  /* Layout */
  --sbw: 240px;
  --hh: 64px;
  --r: 16px;
  --rs: 10px;
  --rp: 980px; /* pill radius */
  --sh: 0 1px 2px rgba(0,0,0,.04);
  --sh2: 0 2px 8px rgba(0,0,0,.05);
  --sh3: 0 8px 24px rgba(0,0,0,.08);
}

/* ═══ DARK MODE ═══ */
[data-theme="dark"] {
  --bg: #1C1C1E;
  --card: #2C2C2E;
  --surface: #2C2C2E;
  --sidebar: #232325;
  --hover: #3A3A3C;
  --border: #38383A;
  --border2: #38383A;
  --bd: #38383A;
  --tx: #F2F2F7;
  --tx2: #AEAEB2;
  --tx3: #8E8E93;
  --indigo-s: #3F1218;
  --green-s: #102818;
  --rose-s: #3A1212;
  --amber-s: #2E2210;
  --sky-s: #0E2235;
  --purple-s: #2A1635;
  --teal-s: #102228;
  --sh: 0 1px 2px rgba(0,0,0,.4);
  --sh2: 0 2px 8px rgba(0,0,0,.4);
  --sh3: 0 8px 24px rgba(0,0,0,.5);
  color-scheme: dark;
}
[data-theme="dark"] body{background:var(--bg);color:var(--tx)}
[data-theme="dark"] .login-overlay{background:var(--bg)}
/* La tarjeta ya no es una caja flotante: el fondo lo pone el panel/overlay */
[data-theme="dark"] .login-card{background:transparent;box-shadow:none}
[data-theme="dark"] .login-logo,[data-theme="dark"] .brand-mark{background:var(--card);box-shadow:0 2px 8px rgba(0,0,0,.4),0 0 0 1px rgba(255,255,255,.05)}
[data-theme="dark"] thead th{background:var(--card)}
[data-theme="dark"] tbody td{background:var(--card)}
[data-theme="dark"] tbody tr:hover td{background:var(--hover)}
[data-theme="dark"] .topbar{background:rgba(28,28,30,.8);border-bottom-color:var(--bd)}
[data-theme="dark"] .ds-banner{background:linear-gradient(90deg,#3F1218,var(--card))}
[data-theme="dark"] .up-stepper{background:var(--bg);border-color:var(--bd)}
[data-theme="dark"] .up-step-dot{background:var(--card)}
[data-theme="dark"] .estado-pendiente{background:#374151;color:#D1D5DB}
[data-theme="dark"] .estado-validada{background:#1E3A8A;color:#BFDBFE}
[data-theme="dark"] .estado-en-revision{background:#451A03;color:#FDBA74}
[data-theme="dark"] .estado-pendiente-ti{background:#3B0764;color:#C4B5FD}
[data-theme="dark"] .estado-reclamado-masivo,[data-theme="dark"] .estado-reclamacion-individual{background:#312E81;color:#A5B4FC}
[data-theme="dark"] .estado-pagado-parcial{background:#451A03;color:#FED7AA}
[data-theme="dark"] .estado-aceptada,[data-theme="dark"] .estado-pagado{background:#14532D;color:#86EFAC}
[data-theme="dark"] .estado-rechazada{background:#450A0A;color:#FCA5A5}
/* Dark mode: estado-select — solo borde izquierdo, sin fondos */
[data-theme="dark"] .estado-select{background:var(--card);border-color:var(--bd);color:var(--tx2)}
[data-theme="dark"] .estado-select.es-pendiente{border-left-color:#F59E0B}
[data-theme="dark"] .estado-select.es-validada{border-left-color:#0EA5E9}
[data-theme="dark"] .estado-select.es-reclamado{border-left-color:#6366F1}
[data-theme="dark"] .estado-select.es-revision{border-left-color:#D97706}
[data-theme="dark"] .estado-select.es-pendiente-ti{border-left-color:#8B5CF6}
[data-theme="dark"] .estado-select.es-descontar{border-left-color:#DC2626}
[data-theme="dark"] .estado-select.es-descontado{border-left-color:#7C3AED}
[data-theme="dark"] .estado-select.es-aceptada{border-left-color:#10B981}
[data-theme="dark"] .estado-select.es-rechazada{border-left-color:#F43F5E}
[data-theme="dark"] .estado-select.es-pagado-parcial{border-left-color:#14B8A6}
[data-theme="dark"] .estado-select.es-pagado{border-left-color:#059669;color:#34d399;font-weight:600}
[data-theme="dark"] .estado-select.es-pagado-validado{border-left-color:#065F46;color:#34d399;font-weight:600}
[data-theme="dark"] .estado-select option{background:var(--card);color:var(--tx)}

/* Notes en dark mode */
[data-theme="dark"] .note-i{background:#0E2235;color:#93C5FD;border-color:#1E40AF}
[data-theme="dark"] .note-w{background:#2E2210;color:#FCD34D;border-color:#A16207}
[data-theme="dark"] .note-r{background:#3A1212;color:#FCA5A5;border-color:#991B1B}
[data-theme="dark"] .note-p{background:#2A1635;color:#D8B4FE;border-color:#6B21A8}
[data-theme="dark"] .note-g,[data-theme="dark"] .note-ok{background:#102818;color:#86EFAC;border-color:#15803D}

/* Inputs en dark mode */
[data-theme="dark"] input[type="text"],[data-theme="dark"] input[type="number"],[data-theme="dark"] input[type="email"],[data-theme="dark"] input[type="password"],[data-theme="dark"] input[type="date"],[data-theme="dark"] input[type="search"],[data-theme="dark"] textarea,[data-theme="dark"] select,[data-theme="dark"] .filtro-sel,[data-theme="dark"] .ef-pop-inp{background:var(--card);color:var(--tx);border-color:var(--bd)}
[data-theme="dark"] input::placeholder,[data-theme="dark"] textarea::placeholder{color:var(--tx3)}
[data-theme="dark"] .form-group input{background:var(--card);color:var(--tx)}
[data-theme="dark"] .search-wrap{background:var(--card);border-color:var(--bd)}
[data-theme="dark"] .search-wrap input{background:transparent;color:var(--tx)}

/* Modales dark */
[data-theme="dark"] .modal,[data-theme="dark"] .overlay .modal{background:var(--card);color:var(--tx)}
[data-theme="dark"] .modal-top,[data-theme="dark"] .modal-bot{border-color:var(--bd)}
[data-theme="dark"] .overlay{background:rgba(0,0,0,.65)}

/* Tags / chips */
[data-theme="dark"] .tg-s{background:#1E3A8A;color:#BFDBFE;border-color:#1E40AF}
[data-theme="dark"] .tg-g{background:#14532D;color:#86EFAC;border-color:#15803D}
[data-theme="dark"] .tg-r{background:#450A0A;color:#FCA5A5;border-color:#991B1B}
[data-theme="dark"] .tg-amber{background:#451A03;color:#FCD34D;border-color:#A16207}

/* KPI cards dark */
[data-theme="dark"] .kpi,[data-theme="dark"] .dash-card{background:var(--card);border-color:var(--bd)}
[data-theme="dark"] .kpi-lbl,[data-theme="dark"] .dc-title,[data-theme="dark"] .dc-desc,[data-theme="dark"] .kpi-sub{color:var(--tx2)}

/* Botones outline */
[data-theme="dark"] .btn-o{background:var(--card);color:var(--tx);border-color:var(--bd)}
[data-theme="dark"] .btn-o:hover{background:var(--hover)}

/* Sidebar dark */
[data-theme="dark"] .nav-link{color:var(--tx2)}
[data-theme="dark"] .nav-link:hover{background:var(--hover);color:var(--tx)}
[data-theme="dark"] .nav-link.active{background:var(--indigo-s);color:#FCA5A5}
[data-theme="dark"] .nav-section{color:var(--tx3)}
[data-theme="dark"] .user-info{border-top-color:var(--bd);border-bottom-color:var(--bd);background:transparent}
[data-theme="dark"] .user-name{color:var(--tx)}
[data-theme="dark"] .user-role{color:var(--tx3)}
[data-theme="dark"] .btn-logout{color:var(--tx3)}
[data-theme="dark"] .btn-logout:hover{color:#FCA5A5;background:#3A1212}
[data-theme="dark"] .status{color:var(--tx3)}
[data-theme="dark"] .dot{background:var(--tx3)}
[data-theme="dark"] .dot.on{background:#22C55E;box-shadow:0 0 0 3px rgba(34,197,94,.2)}
/* Fix wrapper bottom de sidebar (donde están user-info + status) */
[data-theme="dark"] .sidebar > div:last-child,
[data-theme="dark"] .sidebar .sb-bot,
[data-theme="dark"] .sidebar [class*="bottom"]{background:var(--sidebar)!important;border-top-color:var(--bd)!important}

/* Filter bar y export bar */
[data-theme="dark"] .filter-bar,[data-theme="dark"] .export-bar,[data-theme="dark"] .bulk-bar{background:var(--card);border-color:var(--bd)}

/* Highlights y notes inline */
[data-theme="dark"] [style*="background:#FEF2F2"]{background:#3A1212 !important;color:#FCA5A5 !important}
[data-theme="dark"] [style*="background:#FFF7ED"]{background:#451A03 !important;color:#FDBA74 !important}
[data-theme="dark"] [style*="background:#FEF3C7"]{background:#451A03 !important;color:#FDE68A !important}
[data-theme="dark"] [style*="background:#D1FAE5"]{background:#14532D !important;color:#86EFAC !important}
[data-theme="dark"] [style*="color:#991B1B"]{color:#FCA5A5 !important}
[data-theme="dark"] [style*="color:#92400E"]{color:#FCD34D !important}
[data-theme="dark"] [style*="color:#065F46"]{color:#86EFAC !important}
[data-theme="dark"] [style*="color:#DC2626"]{color:#F87171 !important}
[data-theme="dark"] [style*="background:var(--bg2)"]{background:var(--card) !important}

/* Toggle dark mode button */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;background:transparent;border:1px solid var(--bd);color:var(--tx2);cursor:pointer;transition:all .2s}
.theme-toggle:hover{background:var(--hover);color:var(--tx)}
.theme-toggle svg{width:16px;height:16px}
[data-theme="light"] .theme-toggle .icon-sun,
[data-theme="dark"] .theme-toggle .icon-moon{display:none}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'SF Pro Display','SF Pro Text','Helvetica Neue','Inter',system-ui,sans-serif;background:var(--bg);color:var(--tx);display:flex;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em}

/* ═══ SPLASH ═══ */
#splashScreen{position:fixed;inset:0;background:#fff;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;transition:opacity .3s ease}
#splashScreen.hidden{opacity:0;pointer-events:none}
.hidden{display:none!important}
#splashLogo{width:72px;height:72px;display:flex;align-items:center;justify-content:center}
#splashLogo img{width:72px;height:72px;object-fit:contain}
.splash-spinner{width:28px;height:28px;border:2.5px solid rgba(0,0,0,.1);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
[data-theme="dark"] #splashScreen{background:var(--bg)}

/* ═══ LOGIN ═══
   Direccion: instrumento forense. Panel de atmosfera a la izquierda (reticula
   de papel contable + barrido lento de vigilancia), formulario con aire a la
   derecha. Mono solo en microetiquetas: da el caracter instrumental. */
.login-overlay{position:fixed;inset:0;z-index:500;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);background:var(--bg)}
.login-overlay.hidden{display:none}

/* — Panel de atmosfera — */
.login-aside{
  position:relative;overflow:hidden;isolation:isolate;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:clamp(32px,4vw,60px);
  background:linear-gradient(160deg,#171719 0%,#0E0E10 58%,#131315 100%);
  color:#F2F2F5;
}
/* Reticula tipo papel contable */
.login-aside-grid{
  position:absolute;inset:-1px;z-index:-2;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:34px 34px;
  mask-image:radial-gradient(120% 90% at 20% 15%,#000 30%,transparent 78%);
}
/* Barrido lento: la "vigilancia", una sola linea, sin estridencia */
.login-aside-scan{
  position:absolute;left:0;right:0;height:180px;z-index:-1;top:-180px;
  background:linear-gradient(180deg,transparent,rgba(200,16,46,.14),transparent);
  animation:loginScan 9s cubic-bezier(.45,0,.55,1) infinite;
}
@keyframes loginScan{0%{top:-180px}100%{top:100%}}
/* Escudo fantasma, recortado por el borde */
.login-aside-mark{
  position:absolute;z-index:-1;width:min(78%,520px);height:auto;
  right:-16%;top:6%;color:#FFFFFF;opacity:.028;
}
.login-aside-inner{max-width:30ch}
.login-kicker{
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.16em;
  color:rgba(255,255,255,.42);
}
.login-aside-title{
  margin:18px 0 0;font-size:clamp(28px,3.3vw,44px);line-height:1.06;
  font-weight:600;letter-spacing:-.035em;color:#FFFFFF;
}
.login-aside-title em{font-style:italic;font-weight:500;color:#FF6B5E}
.login-aside-sub{margin:16px 0 0;font-size:14.5px;line-height:1.55;color:rgba(255,255,255,.5);max-width:34ch}
.login-aside-foot{margin-top:auto;padding-top:40px}

/* — Lado del formulario — */
.login-main{display:flex;align-items:center;justify-content:center;padding:28px 24px;overflow-y:auto}
.login-card{
  width:100%;max-width:396px;background:transparent;
  animation:loginRise .55s cubic-bezier(.16,1,.3,1) both;
}
@keyframes loginRise{from{opacity:0;transform:translateY(10px)}}
.login-card>*{animation:loginRise .5s cubic-bezier(.16,1,.3,1) both}
.login-card>*:nth-child(1){animation-delay:.06s}
.login-card>*:nth-child(2){animation-delay:.12s}
.login-card>*:nth-child(3){animation-delay:.18s}

.login-brand{margin-bottom:30px}
.login-logo{
  width:52px;height:52px;margin:0 0 20px;display:flex;align-items:center;justify-content:center;
  background:var(--card);border-radius:15px;overflow:hidden;
  box-shadow:0 1px 1px rgba(0,0,0,.04),0 5px 14px -4px rgba(0,0,0,.10),0 0 0 1px rgba(0,0,0,.05);
}
.login-logo svg{width:30px;height:30px}
.login-logo img{width:100%;height:100%;object-fit:contain;padding:7px}
.login-brand h1{font-size:29px;font-weight:640;color:var(--tx);letter-spacing:-.035em;line-height:1.1}
.login-brand p{font-size:14px;color:var(--tx3);margin-top:7px;font-weight:400}

.form-group{margin-bottom:17px}
.form-group label{display:block;font-size:12.5px;font-weight:550;color:var(--tx2);margin-bottom:7px;letter-spacing:-.005em}
.form-group input{
  width:100%;padding:13px 15px;border:1px solid var(--border);border-radius:11px;
  font-family:inherit;font-size:15px;color:var(--tx);outline:none;background:var(--card);
  transition:border-color .15s ease,box-shadow .15s ease;
}
.form-group input::placeholder{color:var(--tx3);opacity:.62}
.form-group input:focus{border-color:var(--indigo);box-shadow:0 0 0 3.5px rgba(200,16,46,.13)}
.form-group input:focus-visible{outline:none}

/* Mostrar/ocultar contrasena: comodidad real al teclear */
.input-affix{position:relative;display:flex;align-items:center}
.input-affix input{padding-right:46px}
.pass-toggle{
  position:absolute;right:5px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  border:0;background:transparent;color:var(--tx3);cursor:pointer;border-radius:8px;
  transition:color .15s ease,background .15s ease;
}
.pass-toggle:hover{color:var(--tx2);background:var(--hover)}
.pass-toggle:focus-visible{outline:2px solid var(--indigo);outline-offset:1px}
.pass-toggle .eye-off{display:none}
.pass-toggle[aria-pressed="true"] .eye-on{display:none}
.pass-toggle[aria-pressed="true"] .eye-off{display:block}

.login-error{
  display:flex;align-items:flex-start;gap:9px;
  background:var(--rose-s);color:var(--rose);padding:11px 14px;border-radius:11px;
  font-size:13px;line-height:1.45;margin-bottom:14px;border:1px solid rgba(255,59,48,.22);
  animation:loginShake .32s cubic-bezier(.36,.07,.19,.97);
}
@keyframes loginShake{10%,90%{transform:translateX(-1px)}30%,70%{transform:translateX(2px)}50%{transform:translateX(-2px)}}
.btn-full{width:100%;justify-content:center;padding:14px;font-size:15px;border-radius:var(--rp)}
.btn-full:active{transform:scale(.985)}
.cf-turnstile-wrap{margin-bottom:14px}
.login-foot{
  font-size:11px;color:var(--tx3);margin-top:26px;padding-top:18px;
  border-top:1px solid var(--border2);
  font-family:'JetBrains Mono',ui-monospace,monospace;letter-spacing:.06em;
}

@media (max-width:900px){
  .login-overlay{grid-template-columns:1fr;grid-template-rows:auto 1fr;overflow-y:auto}
  .login-aside{padding:26px 24px 22px;min-height:auto}
  .login-aside-inner{max-width:none}
  .login-aside-title{font-size:24px;margin-top:12px}
  .login-aside-sub,.login-aside-foot,.login-aside-mark{display:none}
  .login-main{padding:30px 22px 44px}
}
@media (max-width:480px){
  .form-group input{font-size:16px}   /* evita el zoom automatico de iOS */
}
@media (prefers-reduced-motion:reduce){
  .login-aside-scan{animation:none;opacity:0}
  .login-card,.login-card>*,.login-error{animation:none}
}

/* ═══ SIDEBAR — Apple style claro ═══ */
.sidebar{width:var(--sbw);background:var(--sidebar);backdrop-filter:saturate(180%) blur(20px);display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:50;transition:width .3s cubic-bezier(.2,.8,.2,1),transform .2s;border-right:1px solid var(--border2)}
.brand{display:flex;align-items:center;gap:12px;padding:18px 18px;position:relative;min-height:64px}
.brand-mark{width:38px;height:38px;border-radius:10px;background:#FFFFFF;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.08),0 0 0 1px rgba(0,0,0,.04);overflow:hidden;padding:2px}
.brand-mark img{width:100%;height:100%;object-fit:contain;display:block}
.brand-mark svg{width:20px;height:20px}
.brand-name{font-size:16px;font-weight:600;color:var(--tx);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;transition:opacity .15s;text-overflow:ellipsis;flex:1;min-width:0}
.sb-toggle{background:none;border:none;cursor:pointer;color:var(--tx3);padding:6px;border-radius:6px;margin-left:auto;flex-shrink:0;transition:all .2s}
.sb-toggle:hover{color:var(--tx);background:var(--hover)}
#nav{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:1px;overflow-x:hidden;overflow-y:auto}
#nav::-webkit-scrollbar,.sidebar::-webkit-scrollbar{width:4px}
#nav::-webkit-scrollbar-track,.sidebar::-webkit-scrollbar-track{background:transparent}
#nav::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
#nav::-webkit-scrollbar-thumb:hover,.sidebar::-webkit-scrollbar-thumb:hover{background:var(--tx3)}
.sidebar{overflow-y:auto}
.sidebar>nav{flex-shrink:0}
.nav-link{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:8px;color:var(--tx2);text-decoration:none;font-size:14px;font-weight:400;transition:all .15s ease;white-space:nowrap;overflow:hidden;position:relative;letter-spacing:-.01em}
.nav-link svg{width:18px;height:18px;flex-shrink:0;pointer-events:none;opacity:.7}
.nav-link *{pointer-events:none}
.nav-link:hover{background:var(--hover);color:var(--tx)}
.nav-link:hover svg{opacity:1}
.nav-link.active{background:var(--hover);color:var(--accent);font-weight:600;box-shadow:none}
.nav-link.active::before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:3px;background:var(--accent);border-radius:0 2px 2px 0}
.nav-link{position:relative}
.nav-link.active svg{opacity:1}
.nav-section{font-size:11px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;padding:10px 12px 6px;margin-top:4px;white-space:nowrap;overflow:hidden;transition:all .15s;display:flex;align-items:center;gap:6px;width:100%;background:none;border:none;cursor:pointer;font-family:inherit;text-align:left;border-radius:6px}
.nav-section:hover{color:var(--tx);background:var(--hover)}
.nav-chevron{display:inline-flex;align-items:center;justify-content:center;width:12px;transition:transform .2s ease;color:var(--tx3)}
.nav-section.collapsed .nav-chevron{transform:rotate(-90deg)}
.nav-group{display:flex;flex-direction:column;gap:1px;max-height:500px;overflow:hidden;transition:max-height .25s ease,opacity .2s ease;opacity:1;padding:2px 0}
.nav-group.collapsed{max-height:0;opacity:0;padding:0}
.sidebar-foot{padding:16px;border-top:1px solid var(--border2);margin-top:auto;overflow:hidden;background:rgba(255,255,255,.5)}

/* Sidebar collapsed */
.sidebar.collapsed{width:56px}
.sidebar.collapsed .brand-name{display:none}
.sidebar.collapsed .nav-section{display:none}
.sidebar.collapsed .nav-group{max-height:500px!important;opacity:1!important;padding:2px 0!important}
.sidebar.collapsed .nav-link{justify-content:center;padding:7px 0;font-size:0;gap:0}
.sidebar.collapsed .nav-link svg{width:15px;height:15px;margin:0;opacity:.65}
.sidebar.collapsed .user-info{flex-direction:column;gap:4px}
.sidebar.collapsed .user-detail,.sidebar.collapsed .btn-logout{display:none}
.sidebar.collapsed .user-avatar{margin:0 auto}
.sidebar.collapsed .status span:not(.dot){display:none}
.sidebar.collapsed .status{justify-content:center}
.sidebar.collapsed .sidebar-foot{padding:14px 8px}
.sidebar.collapsed .sb-toggle{transform:rotate(180deg);margin:0}
.sidebar.collapsed #nav{padding:10px 4px;align-items:stretch;overflow:visible}
.sidebar.collapsed .brand{justify-content:center;padding:14px 8px;gap:0}
.sidebar.collapsed~.main{margin-left:56px}

/* ── Floating sidebar edge-tab ── */
.sb-edge-tab{
  position:fixed;
  top:50%;
  left:var(--sbw);
  transform:translateY(-50%) translateX(-1px);
  z-index:60;
  width:14px;height:44px;
  background:var(--sidebar);
  border:1px solid var(--border2);
  border-left:none;
  border-radius:0 8px 8px 0;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:left .3s cubic-bezier(.2,.8,.2,1),width .18s,background .15s,box-shadow .15s,opacity .15s;
  box-shadow:2px 0 6px rgba(0,0,0,.08);
  opacity:.55;
}
.sb-edge-tab:hover{
  width:24px;
  opacity:1;
  background:var(--hover);
  box-shadow:3px 0 14px rgba(0,0,0,.14);
}
.sb-edge-tab svg{
  width:10px;height:10px;
  color:var(--tx3);
  transition:transform .2s,color .15s;
  flex-shrink:0;
}
.sb-edge-tab:hover svg{color:var(--accent)}
.sidebar.collapsed ~ .main .sb-edge-tab{
  left:56px;
}
.sidebar.collapsed ~ .main .sb-edge-tab svg{
  transform:rotate(180deg);
}
/* Tooltip on hover when collapsed */
.sidebar.collapsed .nav-link{position:relative;overflow:visible}
.sidebar.collapsed .nav-link:hover::after{content:attr(data-label);position:absolute;left:56px;top:50%;transform:translateY(-50%);background:rgba(29,29,31,.92);backdrop-filter:blur(20px);color:#fff;padding:7px 14px;border-radius:8px;font-size:13px;white-space:nowrap;z-index:9999;box-shadow:0 8px 24px rgba(0,0,0,.2);pointer-events:none;letter-spacing:-.01em}
.status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tx3)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--tx3);transition:all .2s}
.dot.on{background:var(--green);box-shadow:0 0 0 3px rgba(48,209,88,.2)}

/* User info */
.user-info{display:flex;align-items:center;gap:12px;padding:14px 0;margin-bottom:8px;border-bottom:1px solid var(--border2)}
.user-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#DC2626,#C8102E);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0;box-shadow:0 2px 6px rgba(200,16,46,.3)}
.user-detail{flex:1;min-width:0}
.user-name{font-size:13px;font-weight:500;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}
.user-role{font-size:11px;color:var(--tx3);margin-top:2px}
.btn-logout{background:none;border:none;cursor:pointer;color:var(--tx3);padding:6px;border-radius:6px;transition:all .2s}
.btn-logout:hover{color:var(--rose);background:var(--rose-s)}

/* ═══ MAIN ═══ */
.main{margin-left:var(--sbw);flex:1;display:flex;flex-direction:column;min-height:100vh;transition:margin-left .3s cubic-bezier(.2,.8,.2,1)}
.topbar{height:var(--hh);background:rgba(255,255,255,.85);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--bd);display:flex;align-items:center;padding:0 20px 0 16px;gap:12px;position:sticky;top:0;z-index:30}
.sb-toggle-top{background:none;border:none;cursor:pointer;color:var(--tx2);padding:8px;border-radius:8px;transition:all .2s;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sb-toggle-top:hover{background:var(--hover);color:var(--tx)}
.sidebar.collapsed~.main .sb-toggle-top svg{transform:rotate(180deg);transition:transform .25s}
.ham{display:none}
.topbar h1{font-size:22px;font-weight:700;letter-spacing:-.03em;flex:1;color:var(--tx)}
.topbar-right{display:flex;align-items:center;gap:8px}
.date-selector{padding:8px 14px;border:1px solid var(--border);border-radius:var(--rp);font-family:inherit;font-size:13px;background:var(--card);color:var(--tx);cursor:pointer;max-width:220px;transition:all .15s}
.date-selector:hover{border-color:var(--tx3)}
.content{flex:1;padding:28px 32px;overflow-y:auto;height:calc(100vh - var(--hh))}
section.v{display:none}section.v.active{display:block}

/* ═══ KPI — Apple style ═══ */
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-bottom:28px}
.kpi{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:18px 20px;box-shadow:none;position:relative;overflow:hidden;transition:all .2s cubic-bezier(.2,.8,.2,1)}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--sh3)}
.kpi::before{display:none}
.kpi-lbl{font-size:11px;font-weight:500;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.kpi-num{font-size:30px;font-weight:600;letter-spacing:-.025em;line-height:1.05;color:var(--tx);font-variant-numeric:tabular-nums}
.kpi-num.indigo,.kpi-num.green,.kpi-num.rose,.kpi-num.sky,.kpi-num.amber,.kpi-num.purple,.kpi-num.teal{color:var(--tx)}
.kpi-sub{font-size:11.5px;color:var(--tx3);margin-top:6px;letter-spacing:0;font-weight:400}

/* ═══ CARD — Apple elevation ═══ */
.card{background:var(--card);border:1px solid var(--bd);border-radius:12px;box-shadow:none;margin-bottom:16px;overflow:visible;transition:box-shadow .2s ease,border-color .2s ease}
.card:hover{box-shadow:var(--sh)}
[data-theme="dark"] .card{background:var(--card);border-color:var(--bd)}
.card-h{padding:16px 22px;border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between;gap:12px}
.card-h h3{font-size:15px;font-weight:600;letter-spacing:-.015em;color:var(--tx)}
.card-h small{font-size:12px;color:var(--tx3);font-weight:400}
.card-b{padding:18px 22px}
.card-b.np{padding:0;overflow:visible}

/* ═══ TABLE — Apple style ═══ */
.tw{overflow:auto;max-height:75vh;position:relative;border-radius:12px;background:var(--card)}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;table-layout:auto;background:var(--card)}
thead th{text-align:left;padding:12px 16px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);border-bottom:1px solid var(--bd);background:var(--card);white-space:nowrap;position:sticky;top:0;z-index:3}
thead th.resizable{position:relative}
thead th .th-resize{position:absolute;right:0;top:0;bottom:0;width:5px;cursor:col-resize;user-select:none;z-index:4}
thead th .th-resize:hover,thead th .th-resize.dragging{background:var(--indigo);opacity:.4}
tbody td{padding:12px 16px;border-bottom:1px solid var(--bd);white-space:nowrap;color:var(--tx);font-size:13px;background:var(--card)}
tbody tr{transition:background .15s ease}
tbody tr:hover td{background:var(--hover)}
.clickable-row{cursor:pointer}
.clickable-row:hover{background:var(--indigo-s) !important}
tbody tr:last-child td{border-bottom:none}
tbody tr:nth-child(even){background:transparent}
tbody tr:nth-child(even):hover{background:var(--hover)}
.r{text-align:right}.c{text-align:center}
.m{font-family:'JetBrains Mono',monospace;font-size:12px}

/* Compact table mode */
.table-compact table{font-size:11px}
.table-compact thead th{padding:6px 8px;font-size:10px;letter-spacing:.2px}
.table-compact tbody td{padding:4px 8px}
.table-compact .m{font-size:10.5px}
.table-compact .estado{padding:2px 7px;font-size:10px}
.table-compact .estado-select{padding:2px 4px;font-size:11px;min-width:100px;max-width:130px}
.table-compact .tg{padding:2px 6px;font-size:10px}

/* ═══ UPLOAD STEPPER — flujo visual ═══ */
.up-stepper{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:14px 6px;margin-bottom:14px;background:var(--bg,#FAFAFA);border-radius:10px;border:1px solid var(--bd,#E5E5E7)}
.up-step{display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 0 auto;min-width:60px}
.up-step-dot{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;background:#fff;border:2px solid var(--bd,#E5E5E7);color:var(--tx3,#86868B);transition:all .2s}
.up-step-lbl{font-size:10.5px;color:var(--tx3,#86868B);font-weight:500;letter-spacing:.2px}
.up-step.active .up-step-dot{background:#C8102E;border-color:#C8102E;color:#fff;box-shadow:0 0 0 4px rgba(200,16,46,.15)}
.up-step.active .up-step-lbl{color:#C8102E;font-weight:600}
.up-step.done .up-step-dot{background:#16A34A;border-color:#16A34A;color:#fff}
.up-step.done .up-step-dot::before{content:'\2713';font-size:14px;font-weight:700}
.up-step.done .up-step-dot{font-size:0}
.up-step.done .up-step-lbl{color:#16A34A}
.up-step-line{flex:1;height:2px;background:var(--bd,#E5E5E7);min-width:20px;transition:background .3s}
.up-step-line.done{background:#16A34A}
@keyframes spin{to{transform:rotate(360deg)}}

/* Lista de archivos en panel proceso */
.pf-item{display:flex;align-items:center;gap:10px;padding:6px 16px;font-size:11.5px;border-top:1px solid var(--bd,#F3F4F6)}
.pf-item:first-child{border-top:none}
.pf-item-icon{width:14px;height:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.pf-item-name{flex:1;min-width:0;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:'SF Mono',Consolas,monospace;font-size:11px}
.pf-item-meta{font-size:10.5px;color:var(--tx3);white-space:nowrap}
.pf-item.done .pf-item-icon{color:#16A34A}
.pf-item.processing .pf-item-icon{color:#C8102E}
.pf-item.error .pf-item-icon{color:#DC2626}

/* Banner dataset activo (Dashboard) */
.ds-banner{display:flex;align-items:center;gap:14px;padding:12px 18px;background:linear-gradient(90deg,#FEF2F2,#fff);border:1px solid var(--bd,#E5E5E7);border-radius:10px;margin-bottom:18px}
.ds-banner-icon{width:36px;height:36px;border-radius:10px;background:#C8102E;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ds-banner-body{flex:1;min-width:0}
.ds-banner-title{font-weight:600;color:var(--tx);font-size:13px;line-height:1.3}
.ds-banner-sub{font-size:11.5px;color:var(--tx2);margin-top:2px}
.ds-banner-dot{width:8px;height:8px;border-radius:50%;background:#16A34A;animation:pulseDot 2s infinite}

/* ═══════════════════════════════════════════════════════
   DASHBOARD V2 — Data-dense + Apple monocromo
   ═══════════════════════════════════════════════════════ */

/* KPI cards mejoradas */
.kpi-card{padding:16px 18px;display:flex;flex-direction:column;gap:8px;text-decoration:none}
.kpi-head{display:flex;align-items:center;gap:8px}
.kpi-icon-sm{width:24px;height:24px;border-radius:6px;background:var(--bg);display:flex;align-items:center;justify-content:center;color:var(--tx2);flex-shrink:0;border:1px solid var(--bd)}
.kpi-icon-sm.kpi-icon-ok{background:rgba(22,163,74,.1);color:#15803D;border-color:rgba(22,163,74,.2)}
.kpi-icon-sm.kpi-icon-warn{background:rgba(217,119,6,.1);color:#B45309;border-color:rgba(217,119,6,.2)}
.kpi-icon-sm.kpi-icon-light{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.15)}
.stat-card-emphasis .kpi-icon-sm{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.15)}
[data-theme="dark"] .stat-card-emphasis .kpi-icon-sm{background:rgba(0,0,0,.1);color:#000;border-color:rgba(0,0,0,.15)}
.kpi-label{font-size:11px;font-weight:500;color:var(--tx3);letter-spacing:.02em;text-transform:uppercase;flex:1}
.stat-card-emphasis .kpi-label{color:rgba(255,255,255,.7)}
[data-theme="dark"] .stat-card-emphasis .kpi-label{color:rgba(0,0,0,.6)}
.kpi-value{font-size:30px;font-weight:600;letter-spacing:-.025em;line-height:1;color:var(--tx);font-variant-numeric:tabular-nums}
.stat-card-emphasis .kpi-value{color:#fff}
[data-theme="dark"] .stat-card-emphasis .kpi-value{color:#000}
.kpi-sub-row{display:flex;align-items:center;gap:8px;margin-top:2px}
.kpi-sub{font-size:11.5px;color:var(--tx2);font-weight:400}
.stat-card-emphasis .kpi-sub{color:rgba(255,255,255,.7)}
[data-theme="dark"] .stat-card-emphasis .kpi-sub{color:rgba(0,0,0,.6)}
.kpi-bar{flex:1;height:4px;background:var(--bg);border-radius:2px;overflow:hidden}
.kpi-bar-fill{height:100%;border-radius:2px;transition:width .3s ease}
.kpi-bar-fill.kpi-bar-ok{background:#16A34A}
.kpi-bar-fill.kpi-bar-warn{background:#EA580C}
.kpi-pct{font-size:11px;color:var(--tx2);font-weight:600;font-variant-numeric:tabular-nums;min-width:32px;text-align:right}
.kpi-spark{margin-top:6px;height:28px}
.kpi-spark .spark{width:100%;height:100%;color:var(--tx3);opacity:.7}
.kpi-spark .spark rect{fill:currentColor}
.kpi-card:hover .kpi-spark .spark{opacity:1;color:var(--accent)}

/* Health metrics row */
.health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:18px}
.health-item{background:var(--card);border:1px solid var(--bd);border-radius:10px;padding:12px 16px}
.health-label{font-size:11px;color:var(--tx3);text-transform:uppercase;letter-spacing:.02em;font-weight:500;margin-bottom:8px}
.health-bar{height:6px;background:var(--bg);border-radius:3px;overflow:hidden;margin-bottom:6px}
.health-fill{height:100%;border-radius:3px;transition:width .4s ease}
.health-fill-ok{background:linear-gradient(90deg,#16A34A,#22C55E)}
.health-fill-warn{background:linear-gradient(90deg,#DC2626,#EA580C)}
.health-fill-neutral{background:linear-gradient(90deg,#6B7280,#9CA3AF)}
.health-val{font-size:16px;font-weight:600;color:var(--tx);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.health-sub{font-size:11px;color:var(--tx3);font-weight:400;margin-left:6px}

/* Layout 2 columnas */
.dash-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px;margin-bottom:14px}
.dash-half{margin-bottom:0}

/* Donut chart */
.donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap;justify-content:center}
.donut-chart-slot{flex-shrink:0}
.donut{display:block}
.donut .donut-num{font-size:20px;font-weight:600;fill:var(--tx);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.donut .donut-lbl{font-size:10px;fill:var(--tx3);text-transform:uppercase;letter-spacing:.04em}
.donut path{transition:opacity .2s,transform .2s;transform-origin:center;cursor:pointer}
.donut path:hover{opacity:.85;transform:scale(1.02)}
.donut-legend{flex:1;min-width:180px;display:flex;flex-direction:column;gap:5px}
.donut-leg-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;cursor:default;transition:background .12s;font-size:12px}
.donut-leg-item:hover{background:var(--bg)}
.donut-leg-dot{width:9px;height:9px;border-radius:2px;flex-shrink:0}
.donut-leg-name{flex:1;color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.donut-leg-num{font-weight:600;color:var(--tx);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:4px}
.donut-leg-num small{color:var(--tx3);font-size:10px;font-weight:400}

/* Top representantes con bars */
.rep-bars{display:flex;flex-direction:column;gap:10px}
.rep-bar-row{display:grid;grid-template-columns:140px 1fr 110px;gap:10px;align-items:center;font-size:12px}
.rep-bar-name{color:var(--tx);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.rep-bar-track{height:8px;background:var(--bg);border-radius:4px;overflow:hidden}
.rep-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),#8B0A1F);border-radius:4px;transition:width .4s cubic-bezier(.2,.8,.2,1)}
.rep-bar-val{text-align:right;font-weight:600;font-variant-numeric:tabular-nums;color:var(--tx);font-size:12px}
.rep-bar-sub{display:block;font-size:10px;color:var(--tx3);font-weight:400;margin-top:1px}

/* Activity feed compacto (Dashboard) */
.dash-act-item{display:flex;gap:10px;padding:10px 14px;border-bottom:1px solid var(--bd);cursor:pointer;transition:background .12s}
.dash-act-item:last-child{border-bottom:none}
.dash-act-item:hover{background:var(--bg)}
.dash-act-av{width:28px;height:28px;border-radius:50%;color:#fff;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dash-act-av-state{background:#6366F1}
.dash-act-av-cmt{background:#8B5CF6}
.dash-act-av-edit{background:#10B981}
.dash-act-av-corr{background:#16A34A}
.dash-act-body{flex:1;min-width:0}
.dash-act-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.dash-act-user{font-size:12px;font-weight:600;color:var(--tx)}
.dash-act-time{font-size:10.5px;color:var(--tx3);white-space:nowrap}
.dash-act-content{font-size:11.5px;color:var(--tx2);margin-top:2px;line-height:1.4}
.dash-act-ns{font-size:11px;color:var(--tx3);margin-top:3px;font-family:'SF Mono',Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-act-text{color:var(--tx2);font-style:italic}
.dash-act-badge{display:inline-block;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:600;background:rgba(22,163,74,.12);color:#15803D;margin-right:4px}
[data-theme="dark"] .dash-act-badge.dash-act-corr{background:#102818;color:#86EFAC}

/* ═══════════════════════════════════════════════════════
   DASHBOARD APPLE-STYLE original (compatible)
   ═══════════════════════════════════════════════════════ */

/* Filter card colapsable (sustituye umbral-bar visual) */
.filter-card{background:var(--card);border:1px solid var(--bd);border-radius:12px;margin-bottom:18px;overflow:hidden;transition:border-color .2s}
.filter-card[open]{border-color:var(--bd)}
.filter-card-sum{display:flex;align-items:center;gap:10px;padding:14px 18px;cursor:pointer;font-size:13px;font-weight:500;color:var(--tx);user-select:none;list-style:none}
.filter-card-sum::-webkit-details-marker{display:none}
.filter-card-sum::after{content:'';width:8px;height:8px;border-right:1.5px solid var(--tx3);border-bottom:1.5px solid var(--tx3);transform:rotate(-45deg);margin-left:auto;transition:transform .2s}
.filter-card[open] .filter-card-sum::after{transform:rotate(45deg)}
.filter-card-sub{font-size:11.5px;color:var(--tx3);font-weight:400;margin-left:auto;margin-right:14px}
.filter-badge{font-size:11px;color:var(--tx2);background:var(--bg);border:1px solid var(--bd);padding:2px 9px;border-radius:6px;margin-left:auto;margin-right:14px;font-weight:500}
.filter-card-body{padding:14px 18px 18px;border-top:1px solid var(--bd);display:flex;flex-direction:column;gap:12px}
.filter-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--tx2)}
.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:520px}
.filter-grid label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--tx3);font-weight:500;letter-spacing:.02em}
.filter-grid label span{text-transform:uppercase}
.filter-grid input{padding:8px 12px;border:1px solid var(--bd);border-radius:8px;background:var(--card);color:var(--tx);font-size:13px}
.filter-actions{display:flex;gap:8px}
.filter-hint{font-size:11.5px;color:var(--tx3);line-height:1.5;margin:0;max-width:560px}

/* Stat grid Apple-style monocromo */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:22px}
.stat-card{display:flex;flex-direction:column;gap:8px;padding:20px 22px;background:var(--card);border:1px solid var(--bd);border-radius:14px;text-decoration:none;color:var(--tx);transition:all .2s ease;cursor:pointer;position:relative}
.stat-card:hover{border-color:var(--tx3);transform:translateY(-1px);box-shadow:var(--sh)}
.stat-label{font-size:11.5px;color:var(--tx3);font-weight:500;letter-spacing:.02em;text-transform:uppercase}
.stat-value{font-size:30px;font-weight:600;letter-spacing:-.025em;color:var(--tx);line-height:1.1;font-variant-numeric:tabular-nums}
.stat-sub{font-size:11.5px;color:var(--tx2);font-weight:400;line-height:1.4}
.stat-card-emphasis{background:var(--tx);border-color:var(--tx);color:#fff}
.stat-card-emphasis .stat-label{color:rgba(255,255,255,.65)}
.stat-card-emphasis .stat-value{color:#fff}
.stat-card-emphasis .stat-sub{color:rgba(255,255,255,.7)}
.stat-card-emphasis:hover{transform:translateY(-1px);background:#000;border-color:#000}
[data-theme="dark"] .stat-card-emphasis{background:#fff;color:var(--tx);border-color:#fff}
[data-theme="dark"] .stat-card-emphasis .stat-label{color:rgba(0,0,0,.55)}
[data-theme="dark"] .stat-card-emphasis .stat-value{color:#000}
[data-theme="dark"] .stat-card-emphasis .stat-sub{color:rgba(0,0,0,.65)}
[data-theme="dark"] .stat-card-emphasis:hover{background:#F2F2F7;border-color:#F2F2F7}

/* Progress states grid (estados de reclamacion) */
.progress-states{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.progress-state{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--card);border:1px solid var(--bd);border-radius:10px;font-size:12.5px;color:var(--tx2);transition:all .15s}
.progress-state:hover{border-color:var(--tx3);background:var(--hover)}
.progress-state-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.progress-state-num{margin-left:auto;font-weight:600;color:var(--tx);font-variant-numeric:tabular-nums}

/* Resumen financiero rows */
.sr{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--bd);font-size:13px}
.sr:last-child{border-bottom:none}
.sr .l{color:var(--tx2)}
.sr .v{font-weight:500;color:var(--tx);font-variant-numeric:tabular-nums}
.sr-emph{padding-top:14px;margin-top:4px;border-top:1px solid var(--bd)}
.sr-emph .l{color:var(--tx);font-weight:500}
.sr-emph .v{font-size:15px;font-weight:600;color:var(--accent)}

/* Quick nav (sustituye seccion Navegacion) */
.quick-nav{display:flex;flex-wrap:wrap;gap:8px}
.quick-nav-item{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;background:var(--card);border:1px solid var(--bd);border-radius:10px;color:var(--tx2);text-decoration:none;font-size:13px;font-weight:500;transition:all .15s ease;cursor:pointer}
.quick-nav-item:hover{border-color:var(--tx3);color:var(--tx);background:var(--hover);transform:translateY(-1px)}
.quick-nav-item svg{flex-shrink:0;color:var(--tx3)}
.quick-nav-item:hover svg{color:var(--tx)}
.quick-nav-count{margin-left:4px;background:var(--bg);border:1px solid var(--bd);padding:1px 8px;border-radius:6px;font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums}
[data-theme="dark"] .quick-nav-count{background:var(--bg)}

/* ═══ CENTRO DE AUDITORIA — Activity feed ═══ */
.aud-act-item:last-child{border-bottom:none!important}
.aud-act-item:hover{background:var(--hover)!important}
.aud-avatar{width:32px;height:32px;border-radius:50%;color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.3px}
.aud-avatar-state{background:#6366F1}
.aud-avatar-cmt{background:#8B5CF6}
.aud-avatar-edit{background:#10B981}
.aud-note{margin-top:6px;padding:8px 12px;background:var(--bg);border-left:2px solid var(--tx3);border-radius:4px;font-size:12px;color:var(--tx2);line-height:1.45;font-style:italic}
[data-theme="dark"] .aud-note{background:var(--bg);color:var(--tx2)}

/* ═══ GLOSARIO TABS + CEREBRO Viewer ═══ */
.glos-tabs{display:flex;gap:2px;margin-bottom:14px;border-bottom:1px solid var(--bd)}
.glos-tab{padding:10px 18px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--tx2);cursor:pointer;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s}
.glos-tab:hover{color:var(--tx);background:var(--hover)}
.glos-tab.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}

.cerebro-layout{display:grid;grid-template-columns:280px 1fr;gap:14px;height:calc(100vh - 220px);min-height:540px}
.cerebro-sidebar{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--bd);border-radius:12px;overflow:hidden}
.cerebro-search{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--bd);color:var(--tx3)}
.cerebro-search input{flex:1;border:none;background:transparent;font-family:inherit;font-size:12.5px;color:var(--tx);outline:none}
.cerebro-tree{flex:1;overflow-y:auto;padding:8px}
.cerebro-folder{margin-bottom:6px}
.cerebro-folder-name{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--tx2);text-transform:uppercase;letter-spacing:.04em;padding:6px 8px}
.cerebro-folder-count{margin-left:auto;background:var(--bg);padding:1px 6px;border-radius:4px;font-size:10px;color:var(--tx3);text-transform:none;letter-spacing:0;font-weight:500}
.cerebro-files{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1px}
.cerebro-file{padding:7px 10px;border-radius:6px;cursor:pointer;transition:background .12s}
.cerebro-file:hover{background:var(--hover)}
.cerebro-file.on{background:var(--accent-s);border-left:3px solid var(--accent);padding-left:7px}
[data-theme="dark"] .cerebro-file.on{background:#3F1218}
.cerebro-file-name{font-size:12px;color:var(--tx);font-weight:500;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cerebro-file-tags{display:flex;flex-wrap:wrap;gap:3px;margin-top:3px}
.cerebro-tag{font-size:9.5px;color:var(--tx3);background:var(--bg);padding:1px 5px;border-radius:3px}

.cerebro-viewer{background:var(--card);border:1px solid var(--bd);border-radius:12px;overflow-y:auto;padding:24px 28px}
.cerebro-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:var(--tx3)}
.cerebro-empty-icon{font-size:48px;margin-bottom:14px}
.cerebro-empty h3{color:var(--tx);font-weight:600;font-size:18px;margin-bottom:6px}
.cerebro-empty p{font-size:13px;line-height:1.5;max-width:380px;margin-bottom:4px}
.cerebro-viewer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid var(--bd)}
.cerebro-breadcrumb{font-size:11px;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;font-family:'SF Mono',Consolas,monospace;margin-bottom:4px}
.cerebro-frontmatter{display:flex;flex-wrap:wrap;gap:14px;padding:10px 14px;background:var(--bg);border:1px solid var(--bd);border-radius:8px;margin-bottom:18px;font-size:11.5px}
.cerebro-fm-row{color:var(--tx2)}
.cerebro-fm-row b{color:var(--tx);text-transform:capitalize}

/* Markdown render */
.cerebro-md{color:var(--tx);line-height:1.65;font-size:14px}
.cerebro-md h1{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:24px 0 12px;color:var(--tx);border-bottom:1px solid var(--bd);padding-bottom:8px}
.cerebro-md h1:first-child{margin-top:0}
.cerebro-md h2{font-size:19px;font-weight:600;letter-spacing:-.015em;margin:22px 0 10px;color:var(--tx)}
.cerebro-md h3{font-size:16px;font-weight:600;margin:18px 0 8px;color:var(--tx)}
.cerebro-md h4,.cerebro-md h5,.cerebro-md h6{font-size:14px;font-weight:600;margin:14px 0 6px;color:var(--tx2)}
.cerebro-md p{margin:8px 0;color:var(--tx)}
.cerebro-md ul,.cerebro-md ol{margin:8px 0;padding-left:24px}
.cerebro-md li{margin:3px 0}
.cerebro-md strong{color:var(--tx);font-weight:600}
.cerebro-md em{color:var(--tx2)}
.cerebro-md a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.cerebro-md a:hover{color:var(--accent-d)}
.cerebro-md .wikilink{color:#6366F1;background:rgba(99,102,241,.08);padding:1px 5px;border-radius:4px;text-decoration:none;border:1px solid rgba(99,102,241,.2);font-weight:500}
.cerebro-md .wikilink:hover{background:rgba(99,102,241,.15)}
[data-theme="dark"] .cerebro-md .wikilink{color:#A5B4FC;background:rgba(99,102,241,.18);border-color:rgba(99,102,241,.3)}
.cerebro-md code.md-inline{background:var(--bg);padding:2px 6px;border-radius:4px;font-family:'SF Mono',Consolas,monospace;font-size:12.5px;color:var(--accent);border:1px solid var(--bd)}
.cerebro-md pre.md-code{background:var(--bg);border:1px solid var(--bd);border-radius:8px;padding:14px 16px;overflow-x:auto;font-family:'SF Mono',Consolas,monospace;font-size:12.5px;line-height:1.5;margin:12px 0}
.cerebro-md pre.md-code code{color:var(--tx);font-family:inherit}
.cerebro-md blockquote{border-left:3px solid var(--accent);padding:6px 14px;color:var(--tx2);background:var(--accent-s);margin:10px 0;border-radius:0 6px 6px 0;font-style:italic}
[data-theme="dark"] .cerebro-md blockquote{background:#3F1218}
.cerebro-md table.md-table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px}
.cerebro-md table.md-table th,.cerebro-md table.md-table td{padding:8px 12px;border:1px solid var(--bd);text-align:left}
.cerebro-md table.md-table th{background:var(--bg);font-weight:600;color:var(--tx)}
.cerebro-md hr{border:none;border-top:1px solid var(--bd);margin:20px 0}
.cerebro-md .md-tag{color:#6366F1;font-weight:500;font-size:13px}
[data-theme="dark"] .cerebro-md .md-tag{color:#A5B4FC}
.cerebro-md .md-callout{background:var(--bg);border-left:3px solid var(--accent);padding:10px 14px;margin:12px 0;border-radius:0 8px 8px 0}
.cerebro-md .md-callout-title{font-weight:600;color:var(--accent);text-transform:uppercase;font-size:11px;letter-spacing:.05em;margin-bottom:4px}
.cerebro-md input[type="checkbox"]{margin-right:6px}

@media (max-width:900px){
  .cerebro-layout{grid-template-columns:1fr;height:auto}
  .cerebro-sidebar{max-height:300px}
}

/* Comment Modal mejorado */
.cmt-list{padding:8px 16px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;max-height:48vh}
.cmt-empty{padding:30px 16px;text-align:center;color:var(--tx3);font-size:13px}
.cmt-item{display:flex;gap:10px;padding:10px 12px;background:var(--bg);border-radius:10px;border:1px solid transparent}
.cmt-item.cmt-mine{background:var(--accent-s);border-color:rgba(200,16,46,.15)}
[data-theme="dark"] .cmt-item{background:var(--card);border-color:var(--bd)}
[data-theme="dark"] .cmt-item.cmt-mine{background:#3F1218;border-color:#7A1228}
.cmt-avatar{width:32px;height:32px;border-radius:50%;background:var(--indigo);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cmt-body{flex:1;min-width:0}
.cmt-head{display:flex;align-items:center;gap:8px;font-size:12px}
.cmt-head b{color:var(--tx);font-weight:600}
.cmt-time{color:var(--tx3);font-size:11px;margin-left:auto}
.cmt-actions{display:inline-flex;gap:4px}
.cmt-act-btn{background:transparent;border:none;color:var(--tx3);cursor:pointer;padding:2px 6px;border-radius:4px;font-size:13px;line-height:1}
.cmt-act-btn:hover{background:var(--hover);color:var(--tx)}
.cmt-text{margin-top:4px;font-size:13px;color:var(--tx);line-height:1.5;white-space:pre-wrap;word-wrap:break-word}
.cmt-edit-area{width:100%;min-height:60px;padding:8px;border:1px solid var(--accent);border-radius:6px;font-family:inherit;font-size:13px;background:var(--card);color:var(--tx);resize:vertical}
.cmt-edit-area:focus{outline:none;box-shadow:0 0 0 3px rgba(200,16,46,.12)}
.cmt-bot{padding:0!important;border-top:1px solid var(--bd)!important;display:block!important}

/* ═══ REPRESENTANTES ═══ */
.rep-zona-section{margin-bottom:28px}
.rep-zona-header{display:flex;align-items:center;gap:10px;padding:12px 0 8px;border-bottom:2px solid var(--bd);margin-bottom:12px;font-weight:600;font-size:14px}
.rep-zona-cnt{background:var(--bd);color:var(--tx2);font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px}
.rep-tienda-group{margin-bottom:16px}
.rep-tienda-name{font-size:11px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding-left:2px}
.rep-cards-row{display:flex;flex-wrap:wrap;gap:10px}
.rep-card{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:10px 14px;cursor:pointer;transition:all .15s;min-width:200px;max-width:260px;flex:1}
.rep-card:hover{border-color:var(--accent);box-shadow:0 2px 12px rgba(200,16,46,.1);transform:translateY(-1px)}
.rep-card-avatar{width:38px;height:38px;border-radius:50%;background:var(--indigo);color:#fff;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.rep-card-body{flex:1;min-width:0}
.rep-card-nombre{font-weight:600;font-size:13px;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rep-card-tarjeta{font-size:11px;color:var(--tx3);margin-top:2px}
.rep-card-err{font-size:11px;color:var(--rose);font-weight:600;margin-top:3px}
.rep-card-ok{font-size:11px;color:var(--green);margin-top:3px}
[data-theme="dark"] .rep-card{background:var(--card)}
.pen-lbl{display:block;font-size:12px;color:var(--tx2);font-weight:600;margin-bottom:5px}
.cmt-compose{padding:12px 16px;display:flex;flex-direction:column;gap:8px}
.cmt-compose textarea{width:100%;padding:10px 12px;border:1px solid var(--bd);border-radius:8px;font-family:inherit;font-size:13px;background:var(--card);color:var(--tx);resize:vertical;min-height:60px;line-height:1.5}
.cmt-compose textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(200,16,46,.12)}
.cmt-compose-bar{display:flex;justify-content:space-between;align-items:center}
.cmt-compose-bar small{color:var(--tx3);font-size:11px;font-variant-numeric:tabular-nums}

/* Tabs Centro Auditoría */
.aud-tabs{display:flex;gap:2px;margin-bottom:14px;border-bottom:1px solid var(--bd)}
.aud-tab{padding:10px 16px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--tx2);cursor:pointer;font-family:inherit;font-size:13px;font-weight:500;letter-spacing:-.005em;transition:all .15s}
.aud-tab:hover{color:var(--tx);background:var(--hover)}
.aud-tab.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}

/* Banner de correcciones automaticas detectadas */
.corr-banner{display:flex;align-items:center;gap:12px;padding:11px 16px;background:linear-gradient(90deg,#DCFCE7,#fff);border:1px solid #86EFAC;border-radius:10px;margin-bottom:12px;font-size:13px}
[data-theme="dark"] .corr-banner{background:linear-gradient(90deg,#102818,var(--card));border-color:#15803D}
.corr-banner-icon{width:32px;height:32px;border-radius:8px;background:#16A34A;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.corr-banner-body{flex:1;color:var(--tx);line-height:1.4}
.corr-banner-body b{color:#15803D;font-weight:600}
[data-theme="dark"] .corr-banner-body b{color:#86EFAC}
.corr-banner-link{color:#15803D;font-weight:600;text-decoration:underline;text-underline-offset:2px}
.corr-banner-link:hover{color:#166534}
[data-theme="dark"] .corr-banner-link{color:#86EFAC}
.corr-banner-summary{font-size:11.5px;color:var(--tx2);font-variant-numeric:tabular-nums;white-space:nowrap}

/* Umbral de ruido: slider log + chips + input */
.ruido-slider{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;background:var(--card);border:1px solid var(--bd);border-radius:8px;font-size:11.5px;color:var(--tx2);flex-wrap:wrap}
.ruido-slider .ruido-lbl{font-weight:500;color:var(--tx2);white-space:nowrap;margin-right:2px}
.ruido-range{width:160px;accent-color:var(--accent);cursor:pointer;height:4px}
.ruido-presets{display:inline-flex;gap:3px;padding:0 4px;border-left:1px solid var(--bd);margin-left:2px}
.ruido-preset{padding:2px 7px;border:1px solid var(--bd);background:var(--bg);color:var(--tx2);border-radius:4px;cursor:pointer;font-size:10.5px;font-family:inherit;font-weight:500;font-variant-numeric:tabular-nums;transition:all .12s}
.ruido-preset:hover{border-color:var(--tx3);color:var(--tx)}
.ruido-preset.on{background:var(--tx);color:var(--card);border-color:var(--tx)}
[data-theme="dark"] .ruido-preset.on{background:#fff;color:#000;border-color:#fff}
.ruido-input{width:80px;padding:3px 8px;border:1px solid var(--bd);border-radius:5px;font-size:11px;text-align:right;background:var(--bg);color:var(--tx);font-variant-numeric:tabular-nums;font-family:inherit}
.ruido-input:focus{outline:none;border-color:var(--accent)}
.ruido-cnt{font-size:10.5px;color:var(--tx3);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:4px}
[data-theme="dark"] .ruido-input{background:var(--bg)}

/* Indicador "actualizado" anterior — eliminado, sin sentido */
.estado-updated,.upd-pill{display:none}

/* ═══ AUTO-CORRECCIONES — la CELDA ESPECIFICA con el monto actualizado se ve verde ═══ */
.corrected-cell{position:relative;background:rgba(34,197,94,.12)!important}
[data-theme="dark"] .corrected-cell{background:rgba(34,197,94,.18)!important}
.corrected-num{color:#15803D!important;font-weight:700!important;font-size:13px!important}
[data-theme="dark"] .corrected-num{color:#86EFAC!important}
.corrected-badge{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;background:#16A34A;color:#fff;border-radius:50%;font-size:9px;font-weight:700;margin-left:5px;vertical-align:middle;cursor:help;flex-shrink:0}
.corrected-badge:hover{transform:scale(1.15);transition:transform .15s}

/* Banner success al subir dataset con correcciones */
.import-success-banner{display:flex;align-items:center;gap:14px;padding:14px 18px;background:linear-gradient(90deg,#DCFCE7,#fff);border:1px solid #16A34A;border-radius:12px;margin-bottom:14px}
[data-theme="dark"] .import-success-banner{background:linear-gradient(90deg,#102818,var(--card));border-color:#15803D}
.import-success-banner-icon{width:36px;height:36px;border-radius:10px;background:#16A34A;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px}

/* ═══ TIMELINE (modal detalle) — vertical con dots ═══ */
.tl-container{position:relative;padding-left:2px}
.tl-item{position:relative;padding:0 0 14px 36px;min-height:34px}
.tl-item:last-child{padding-bottom:0}
.tl-dot{position:absolute;left:0;top:0;width:26px;height:26px;border-radius:50%;background:#6B7280;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;letter-spacing:.3px;z-index:2;box-shadow:0 0 0 3px var(--card,#fff)}
.tl-dot-current{background:#3B82F6;box-shadow:0 0 0 3px var(--card,#fff),0 0 0 5px rgba(59,130,246,.25)}
.tl-dot-state{background:#6366F1}
.tl-dot-comment{background:#8B5CF6}
.tl-dot-field{background:#10B981}
.tl-line{position:absolute;left:13px;top:26px;bottom:0;width:1px;background:linear-gradient(to bottom,var(--border,#E5E7EB),transparent);z-index:1}
.tl-item:last-child .tl-line{display:none}
.tl-body{padding:1px 0}
.tl-head{display:flex;align-items:center;gap:8px;justify-content:space-between}
.tl-time{font-size:10.5px;color:var(--tx3);font-weight:400;white-space:nowrap}
.tl-note{font-size:11.5px;color:var(--tx2);margin-top:4px;padding:6px 10px;background:var(--bg);border-radius:6px;border-left:2px solid var(--indigo,#6366F1);line-height:1.4}

/* ═══ ESTADO BADGES — Apple-style minimalistas, uniformes ═══ */
.estado{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:6px;font-size:11px;font-weight:500;white-space:nowrap;letter-spacing:-.005em;line-height:1.4;border:1px solid transparent}
.estado::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.estado-pendiente{background:#F3F4F6;color:#4B5563}
.estado-validada{background:#EFF6FF;color:#1D4ED8}
.estado-en-revision{background:#FEF3C7;color:#92400E}
.estado-pendiente-ti{background:#F5F3FF;color:#6D28D9}
.estado-reclamado-masivo,.estado-reclamacion-individual{background:#EEF2FF;color:#4338CA}
.estado-pagado-parcial{background:#FFEDD5;color:#9A3412}
.estado-aceptada,.estado-pagado{background:#DCFCE7;color:#15803D}
.estado-pagado-validado{background:#15803D;color:#fff;border-color:#166534}
.estado-pagado-validado::before{background:#fff}
.estado-rechazada{background:#FEE2E2;color:#B91C1C}
.estado-descontar-rep{background:#FEF2F2;color:#991B1B}
.estado-descontado-rep{background:#F5F3FF;color:#6D28D9}
/* Cambio reciente — pulse animado */
.estado-recent{position:relative}
.estado-recent::after{content:'';position:absolute;top:-2px;right:-2px;width:8px;height:8px;border-radius:50%;background:#3B82F6;border:2px solid var(--card,#fff);animation:pulseDot 2s infinite}
@keyframes pulseDot{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.7}}
/* Indicador "actualizado hace" */
.estado-updated{font-size:10px;color:var(--tx3);margin-left:6px;font-weight:400;font-style:italic}

/* Estado select — compacto, solo borde izquierdo como indicador de color */
.estado-select{
  padding:3px 6px;
  border:1px solid var(--border);
  border-left-width:3px;
  border-radius:var(--rs);
  font-family:inherit;
  font-size:11.5px;
  background:var(--card);
  color:var(--tx2);
  cursor:pointer;
  transition:border-color .15s,box-shadow .15s;
  min-width:110px;
  max-width:140px;
}
.estado-select:hover{border-color:var(--indigo)}
.estado-select:focus{border-color:var(--indigo);box-shadow:0 0 0 2px rgba(200,16,46,.12);outline:none}
/* Solo borde izquierdo — sin fondos de color */
.estado-select.es-pendiente{border-left-color:#F59E0B}
.estado-select.es-validada{border-left-color:#0EA5E9}
.estado-select.es-reclamado{border-left-color:#6366F1}
.estado-select.es-revision{border-left-color:#D97706}
.estado-select.es-pendiente-ti{border-left-color:#8B5CF6}
.estado-select.es-descontar{border-left-color:#DC2626}
.estado-select.es-descontado{border-left-color:#7C3AED}
.estado-select.es-aceptada{border-left-color:#10B981;color:var(--tx)}
.estado-select.es-rechazada{border-left-color:#F43F5E}
.estado-select.es-pagado-parcial{border-left-color:#14B8A6}
.estado-select.es-pagado{border-left-color:#059669;color:#059669;font-weight:600}
.estado-select.es-pagado-validado{border-left-color:#065F46;color:#065F46;font-weight:600}
.estado-select.es-ignorar{border-left-color:#94A3B8;color:var(--tx3)}
.estado-select.es-dif-cero{border-left-color:#64748B;color:var(--tx3)}

/* Bulk estado bar */
.bulk-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--indigo-s);border:1px solid var(--indigo);border-radius:var(--rs);margin-bottom:8px;animation:fu .2s}
.bulk-bar .bulk-count{font-weight:700;color:var(--indigo);font-size:14px}
.bulk-bar .bulk-label{font-size:13px;color:var(--tx2)}
.bulk-bar select{padding:5px 10px;border:1px solid var(--indigo);border-radius:var(--rs);font-family:inherit;font-size:12px;background:var(--card)}
.bulk-bar .btn-bulk{padding:5px 14px;background:var(--indigo);color:#fff;border:none;border-radius:var(--rs);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}
.bulk-bar .btn-bulk:hover{opacity:.9}
.bulk-bar .btn-bulk-reclamar{background:var(--rose)}
.bulk-bar .btn-bulk-cancel{padding:5px 14px;background:transparent;color:var(--tx2);border:1px solid var(--border);border-radius:var(--rs);font-family:inherit;font-size:12px;cursor:pointer}

/* Umbral filter bar */
.umbral-bar{background:var(--card);border:1px solid var(--border);border-radius:var(--rs)}
.umbral-bar label{color:var(--tx2)}
.umbral-bar input[type="checkbox"]{accent-color:var(--indigo);width:14px;height:14px}
.tg-amber{background:#FFF7ED;color:#D97706;border:1px solid #FBBF24;font-weight:600}

/* Reclamar modal selection */
.rcl-sel-row:hover{background:var(--indigo-s)!important;cursor:pointer}
.rcl-sel-row td{padding:5px 8px;font-size:12px}
.rcl-sel-chk{accent-color:var(--rose);width:14px;height:14px;cursor:pointer}
.rcl-chk{width:16px;height:16px;accent-color:var(--indigo);cursor:pointer}
.rcl-row.selected-row{background:var(--indigo-s)!important}
/* Color coding por estado */
.rcl-row.rcl-cerrado{background:rgba(16,185,129,.05);border-left:3px solid var(--green)}
.rcl-row.rcl-cerrado td{opacity:.65}
.rcl-row.rcl-cerrado:hover{background:rgba(16,185,129,.1)!important}
[data-theme="dark"] .rcl-row.rcl-cerrado{background:rgba(16,185,129,.08)}
.rcl-row.rcl-sin-dif{background:rgba(16,185,129,.04);border-left:3px solid rgba(16,185,129,.4)}
.rcl-row.rcl-sin-dif:hover{background:rgba(16,185,129,.08)!important}

/* Detail modal improvements */
.dtl-sign{display:inline-block;width:18px;height:18px;border-radius:50%;text-align:center;line-height:18px;font-size:11px;font-weight:700;margin-right:4px}
.dtl-pos{background:#ECFDF5;color:#059669}
.dtl-neg{background:#FFF1F2;color:#E11D48}
.dtl-subtotal td{border-top:2px solid var(--border);border-bottom:2px solid var(--border);background:#F8FAFC;padding:8px 12px!important}
.note-r{background:#FFF1F2;border-left:3px solid var(--rose);color:#9F1239}

/* Estado: Ignorar Diferencia / Diferencia Cero */
.estado-ignorar{background:#F1F5F9;color:#64748B;border:1px solid #CBD5E1}
.estado-dif-cero{background:#F1F5F9;color:#475569;border:1px solid #94A3B8}
.es-ignorar{border-left:3px solid #94A3B8;background:#F8FAFC}
.es-dif-cero{border-left:3px solid #64748B;background:#F1F5F9}
/* Estado: Mal Facturado */
.estado-mal-facturado{background:#FFF1F2;color:#BE123C;border:1px solid #FECDD3}
.estado-select.es-mal-facturado{border-left-color:#E11D48;color:#BE123C;font-weight:600}

/* ── Modal Import Result — Antes/Ahora ─────────────── */
.ir-modal{width:700px;max-width:95vw}
.ir-body{padding:20px 24px 12px;overflow-y:auto;max-height:68vh}
.ir-check-icon{width:26px;height:26px;min-width:26px;background:#dcfce7;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}
.ir-kpi-strip{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.ir-kpi{flex:1;min-width:110px;background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:12px 14px;text-align:center}
.ir-kpi.ir-green{background:#f0fdf4;border-color:#bbf7d0}
.ir-kpi.ir-blue{background:#eff6ff;border-color:#bfdbfe}
.ir-kpi-val{font-size:20px;font-weight:700;color:var(--tx1);font-variant-numeric:tabular-nums;line-height:1.2}
.ir-kpi.ir-green .ir-kpi-val{color:#16a34a}
.ir-kpi.ir-blue .ir-kpi-val{color:#2563eb}
.ir-kpi-lbl{font-size:11px;color:var(--tx3);margin-top:3px;line-height:1.3}
.ir-campos{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.ir-campo-badge{font-size:11px;background:var(--bg);border:1px solid var(--bd);border-radius:6px;padding:3px 9px;color:var(--tx2)}
.ir-section{margin-top:4px}
.ir-section-hd{font-size:12px;font-weight:600;color:var(--tx2);display:flex;align-items:center;gap:5px;margin-bottom:8px}
.ir-table-wrap{border:1px solid var(--bd);border-radius:8px;overflow:auto;max-height:300px}
.ir-table{width:100%;border-collapse:collapse;font-size:12px}
.ir-table th{position:sticky;top:0;background:var(--bg);padding:7px 10px;text-align:left;font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--bd)}
.ir-table td{padding:7px 10px;border-bottom:1px solid var(--bd);vertical-align:middle}
.ir-table tr:last-child td{border-bottom:none}
.ir-table tr:hover td{background:var(--hover)}
.ir-ns{font-family:ui-monospace,monospace;font-size:11px;color:var(--tx2);background:var(--bg);border:1px solid var(--bd);border-radius:4px;padding:2px 5px}
.ir-art{color:var(--tx2);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ir-badge{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--bd);border-radius:5px;padding:3px 6px;font-size:11px;margin:2px;background:var(--bg);white-space:nowrap}
.ir-badge-green{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}
.ir-badge-blue{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}
.ir-cn{font-weight:600;margin-right:2px}
.ir-ant{color:var(--tx3);text-decoration:line-through;font-variant-numeric:tabular-nums}
.ir-now{font-weight:600;font-variant-numeric:tabular-nums}
.ir-dl{font-size:10px;opacity:.7;font-variant-numeric:tabular-nums}
.ir-no-corr{color:var(--tx3);font-size:13px;margin:4px 0 12px}

/* Copy button */
.btn-copy{background:none;border:1px solid var(--border);border-radius:4px;cursor:pointer;padding:1px 5px;font-size:11px;vertical-align:middle;margin-left:4px;transition:background .12s}
.btn-copy:hover{background:var(--indigo-s);border-color:var(--indigo)}

/* ═══ TAGS — Apple pill ═══ */
.tg{display:inline-flex;padding:3px 10px;border-radius:var(--rp);font-size:11px;font-weight:600;letter-spacing:-.01em}
.tg-g{background:var(--green-s);color:var(--green)}
.tg-r{background:var(--rose-s);color:var(--rose)}
.tg-a{background:var(--amber-s);color:var(--amber)}
.tg-s{background:var(--sky-s);color:var(--sky)}

/* ═══ TIMELINE ═══ */
.timeline{padding:10px 0}
.timeline-item{display:flex;gap:14px;padding:12px 0;position:relative}
.timeline-item:not(:last-child)::before{content:'';position:absolute;left:13px;top:36px;bottom:0;width:2px;background:var(--border2)}
.timeline-dot{width:28px;height:28px;border-radius:50%;background:var(--indigo-s);color:var(--indigo);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:11px;font-weight:700}
.timeline-content{flex:1}
.timeline-date{font-size:11px;color:var(--tx3);margin-bottom:3px}
.timeline-user{font-size:12px;font-weight:600;color:var(--tx2)}
.timeline-change{font-size:13px;color:var(--tx);margin-top:3px}
.timeline-change .old{text-decoration:line-through;color:var(--rose)}
.timeline-change .new{color:var(--green);font-weight:600}

/* ═══ TABS — Apple segmented control ═══ */
.tabs{display:inline-flex;gap:2px;margin-bottom:20px;padding:3px;background:var(--hover);border-radius:10px}
.tab{padding:7px 18px;font-family:inherit;font-size:13px;font-weight:500;color:var(--tx2);border:none;background:none;cursor:pointer;border-radius:8px;transition:all .2s ease;display:inline-flex;align-items:center;gap:6px;letter-spacing:-.01em}
.tab:hover{color:var(--tx)}
.tab.on,.tab.active{color:var(--tx);background:var(--card);box-shadow:0 1px 3px rgba(0,0,0,.08),0 0 0 1px rgba(0,0,0,.04);font-weight:600}

/* ═══ VIEW TOGGLE ═══ */
.view-toggle{display:flex;background:var(--bg);border:1px solid var(--border);border-radius:var(--rs);overflow:hidden}
.view-toggle-btn{padding:8px 16px;font-family:inherit;font-size:13px;font-weight:500;color:var(--tx2);border:none;background:none;cursor:pointer;transition:all .12s}
.view-toggle-btn.active{background:var(--indigo);color:#fff}

/* ═══ COLOR DOT ═══ */
.color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle;border:1px solid rgba(0,0,0,.1)}

/* ═══ ALERT BADGE ═══ */
.alert-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:20px;background:#FEF2F2;color:var(--rose);font-size:11px;font-weight:600}

/* ═══ BAR ═══ */
.bar{height:6px;background:var(--border2);border-radius:4px;overflow:hidden;margin-top:6px}
.bf{height:100%;border-radius:4px;transition:width .5s}
.bf.green{background:var(--green)}.bf.rose{background:var(--rose)}.bf.indigo{background:var(--indigo)}.bf.amber{background:var(--amber)}.bf.sky{background:var(--sky)}.bf.purple{background:var(--purple)}.bf.teal{background:var(--teal)}

/* ═══ GRIDS ═══ */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-bottom:22px}

/* ═══ NOTE — Apple callouts ═══ */
.note{padding:11px 14px;border-radius:10px;font-size:12.5px;margin-bottom:14px;line-height:1.5;letter-spacing:-.005em;border:1px solid var(--bd);background:var(--card);color:var(--tx2)}
.note b{color:var(--tx);font-weight:600}
.note-i{background:var(--card);border-left:3px solid var(--tx3)}
.note-w{background:var(--card);border-left:3px solid var(--amber)}
.note-g,.note-ok{background:var(--card);border-left:3px solid var(--green)}
.note-r{background:var(--card);border-left:3px solid var(--rose)}
.note-p{background:var(--card);border-left:3px solid var(--tx3)}

/* ═══ SUMMARY ROW ═══ */
.sr{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border2)}
.sr:last-child{border:none;padding-bottom:0}
.sr .l{font-size:13px;color:var(--tx2)}.sr .v{font-size:13px;font-weight:600;font-family:'JetBrains Mono',monospace}

/* ═══ BUTTONS — pill style Apple ═══ */
.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:var(--rp);font-family:inherit;font-size:13px;font-weight:500;border:none;cursor:pointer;transition:all .2s ease;letter-spacing:-.01em;white-space:nowrap}
.btn-p{background:var(--indigo);color:#fff}.btn-p:hover{background:var(--indigo-d);box-shadow:0 4px 12px rgba(200,16,46,.3);transform:translateY(-1px)}
.btn-g{background:var(--card);color:var(--tx);border:1px solid var(--bd)}.btn-g:hover{background:var(--hover);border-color:var(--tx3)}
.btn-r{background:var(--card);color:var(--tx);border:1px solid var(--bd)}.btn-r:hover{background:var(--hover);border-color:var(--tx3)}
.btn-o{background:var(--card);color:var(--tx);border:1px solid var(--border)}.btn-o:hover{background:var(--hover);border-color:var(--tx3)}
.btn svg{flex-shrink:0}
.btn-sm{padding:8px 16px;font-size:12.5px}
.btn-xs{padding:5px 12px;font-size:11.5px;border-radius:var(--rp)}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}
.btn:active:not(:disabled){transform:scale(.98)!important;box-shadow:none!important}

/* ═══ TOAST — Apple style ═══ */
.toasts{position:fixed;bottom:24px;right:24px;z-index:200;display:flex;flex-direction:column-reverse;gap:10px}
.toast{padding:14px 22px;border-radius:14px;font-size:13.5px;font-weight:500;box-shadow:0 12px 32px rgba(0,0,0,.2);max-width:380px;animation:toast-in .35s cubic-bezier(.2,.8,.2,1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:flex;align-items:center;gap:10px;letter-spacing:-.01em}
.toast::before{font-size:15px;flex-shrink:0}
.toast.ok{background:rgba(16,185,129,.95);color:#fff}.toast.ok::before{content:'✓'}
.toast.err{background:rgba(244,63,94,.95);color:#fff}.toast.err::before{content:'!'}
.toast.info{background:rgba(99,102,241,.95);color:#fff}.toast.info::before{content:'i'}
@keyframes toast-in{from{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes fu{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ═══ FILTER BAR ═══ */
.filter-bar{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.search-wrap{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--border);border-radius:var(--rp);padding:0 16px;height:40px;transition:all .2s}
.search-wrap:focus-within{border-color:var(--indigo);box-shadow:0 0 0 4px rgba(200,16,46,.1)}
.search-wrap svg{flex-shrink:0;color:var(--tx3)}
.search-wrap input{border:none;background:none;outline:none;font-family:inherit;font-size:14px;width:220px;color:var(--tx);letter-spacing:-.01em}
.chips{display:flex;gap:5px;flex-wrap:wrap}
.chip{padding:7px 14px;border-radius:8px;border:1px solid var(--bd);background:var(--card);font-family:inherit;font-size:12.5px;font-weight:500;cursor:pointer;color:var(--tx2);transition:all .15s ease;letter-spacing:0}
.chip:hover{border-color:var(--tx3);color:var(--tx);background:var(--hover)}
.chip.on{background:var(--tx);color:var(--card);border-color:var(--tx)}
[data-theme="dark"] .chip.on{background:#fff;color:#000;border-color:#fff}

/* FILTER SELECTS & INPUTS */
.filtro-sel{padding:7px 10px;border:1px solid var(--border);border-radius:var(--rs);font-family:inherit;font-size:13px;background:var(--card);color:var(--tx2);cursor:pointer;height:38px}
.filtro-sel:focus{border-color:var(--indigo);outline:none;box-shadow:0 0 0 2px rgba(99,102,241,.12)}
select.filtro-sel{max-width:180px}
input[type="date"].filtro-sel{width:140px}
input[type="number"].filtro-sel{width:100px}

/* ═══ DASHBOARD CARDS — Apple style ═══ */
.dash-card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:20px 22px;box-shadow:none;position:relative;overflow:hidden;transition:all .2s cubic-bezier(.2,.8,.2,1)}
.dash-card:hover{transform:translateY(-2px);box-shadow:var(--sh3)}
.dash-card::before{content:'';position:absolute;top:0;left:0;width:100%;height:3px}
.dash-card::before{display:none}
.dash-card.dc-indigo::before,.dash-card.dc-green::before,.dash-card.dc-rose::before,.dash-card.dc-sky::before,.dash-card.dc-amber::before,.dash-card.dc-purple::before,.dash-card.dc-teal::before{display:none}
.dc-header{display:flex;align-items:center;gap:16px;margin-bottom:12px}
.dc-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dc-icon svg{width:22px;height:22px}
.dc-indigo .dc-icon{background:var(--indigo-s);color:var(--indigo)}.dc-green .dc-icon{background:var(--green-s);color:var(--green)}.dc-rose .dc-icon{background:var(--rose-s);color:var(--rose)}.dc-sky .dc-icon{background:var(--sky-s);color:var(--sky)}.dc-amber .dc-icon{background:var(--amber-s);color:var(--amber)}
.dc-num{font-size:32px;font-weight:700;letter-spacing:-.03em;line-height:1;color:var(--tx)}
.dc-indigo .dc-num{color:var(--indigo)}.dc-green .dc-num{color:var(--green)}.dc-rose .dc-num{color:var(--rose)}.dc-sky .dc-num{color:var(--sky)}.dc-amber .dc-num{color:var(--amber)}
.dc-title{font-size:15px;font-weight:600;color:var(--tx);margin-bottom:10px;letter-spacing:-.02em}
.dc-desc{font-size:13.5px;color:var(--tx2);line-height:1.5;margin-bottom:10px;letter-spacing:-.01em}
.dc-desc b{color:var(--tx);font-weight:600}.dc-desc code{background:var(--indigo-s);color:var(--indigo);padding:2px 8px;border-radius:6px;font-size:12px;font-weight:500}
.dc-detail{font-size:12.5px;color:var(--tx3);line-height:1.5;padding:10px 0 0;border-top:1px solid var(--border2);margin-top:8px}
.dc-detail span{font-weight:600;color:var(--tx2)}
.dc-src{font-size:11px;color:var(--tx3);padding-top:10px;border-top:1px solid var(--border2);margin-top:8px}

/* ═══ CONCEPT CARDS ═══ */
.concept{padding:16px 0;border-bottom:1px solid var(--border2)}
.concept:last-child{border-bottom:none;padding-bottom:0}.concept:first-child{padding-top:0}
.concept-name{font-size:15px;font-weight:700;margin-bottom:6px;color:var(--tx)}
.concept-tag{font-size:12.5px;color:var(--tx2);margin-bottom:4px}
.concept-tag code{background:var(--indigo-s);color:var(--indigo);padding:2px 7px;border-radius:4px;font-size:12px}
.concept p{font-size:13.5px;color:var(--tx2);line-height:1.65;margin-top:6px}
.concept-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.concept-mini{padding:16px 18px;background:var(--bg);border-radius:var(--rs);border:1px solid var(--border2)}
.concept-mini b{font-size:14px;display:block;margin-bottom:6px}.concept-mini p{font-size:13px;color:var(--tx2);line-height:1.5;margin:0}
.highlight-box{background:var(--indigo-s);border:1px solid #C7D2FE;border-radius:var(--rs);padding:18px 20px !important}
.highlight-box .concept-name{color:var(--indigo)}

/* STEP GRID */
.step-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.step-box{padding:16px 20px;background:var(--bg);border-radius:var(--rs);border:1px solid var(--border2)}
.step-title{font-size:14px;font-weight:700;margin-bottom:6px}
.step-box p{font-size:13px;color:var(--tx2);line-height:1.5;margin-top:6px}
.formula{display:block;background:var(--sidebar);color:#A5B4FC;padding:12px 16px;border-radius:var(--rs);font-size:13.5px;margin-top:8px;font-family:'JetBrains Mono',monospace}
.inner-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;margin-top:10px}
.inner-tbl th{text-align:left;padding:10px 12px;background:var(--bg);border:1px solid var(--border);font-size:12px;font-weight:600;color:var(--tx3)}
.inner-tbl td{padding:10px 12px;border:1px solid var(--border2)}

/* ═══ SORTABLE HEADERS ═══ */
thead th.sortable{cursor:pointer;user-select:none;padding-right:22px}
thead th.sortable:hover{color:var(--indigo)}
thead th.sortable::after{content:'';position:absolute;right:6px;top:50%;transform:translateY(-50%);border:4px solid transparent;border-top-color:var(--tx3);margin-top:2px}
thead th.sortable.asc::after{border-top-color:var(--indigo);margin-top:2px}
thead th.sortable.desc::after{border-top-color:transparent;border-bottom-color:var(--indigo);margin-top:-6px}

/* COLUMN TOOLTIPS — sticky already establishes positioning context */
thead th .tip{display:none;position:absolute;left:50%;top:100%;transform:translateX(-50%);z-index:20;width:280px;padding:12px 14px;background:#1E1E2E;color:#E2E8F0;border-radius:10px;font-size:12px;font-weight:400;text-transform:none;letter-spacing:0;line-height:1.55;white-space:normal;text-align:left;box-shadow:0 8px 24px rgba(0,0,0,.25);pointer-events:none;margin-top:8px}
thead th .tip::before{content:'';position:absolute;top:-5px;left:50%;transform:translateX(-50%);border:5px solid transparent;border-bottom-color:#1E1E2E}
thead th .tip .tip-title{font-weight:700;color:#A5B4FC;margin-bottom:4px;font-size:12px}
thead th .tip .tip-src{color:#94A3B8;font-size:11px;margin-top:6px;border-top:1px solid rgba(255,255,255,.08);padding-top:6px}
thead th{position:relative}
thead th:hover .tip{display:block}
thead th:hover{z-index:21;overflow:visible}

/* ═══ MODAL ═══ */
.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:100;align-items:center;justify-content:center;animation:overlay-in .25s cubic-bezier(.2,.8,.2,1);padding:16px;overflow-y:auto}
.overlay.open{display:flex}
@keyframes overlay-in{from{opacity:0}to{opacity:1}}
.modal{background:var(--card);border-radius:22px;width:560px;max-width:min(94vw,560px);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 32px 80px rgba(0,0,0,.18),0 0 0 1px rgba(0,0,0,.04);animation:modal-in .35s cubic-bezier(.2,.8,.2,1)}
.modal-lg{width:840px;max-width:min(94vw,840px)}
/* Detail modal footer: 2 grupos (left actions, right state+close) */
.dtl-bot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.dtl-bot-left,.dtl-bot-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dtl-bot-left{flex:1 1 auto}
.dtl-bot-right{flex:0 0 auto;justify-content:flex-end}
@media (max-width:720px){
  .dtl-bot{flex-direction:column;align-items:stretch}
  .dtl-bot-left,.dtl-bot-right{justify-content:center}
}
.modal[style*="width:820"],.modal[style*="width:850"],.modal[style*="width:860"],.modal[style*="width:880"]{max-width:min(94vw,880px)}
.modal-top{padding:22px 26px 14px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.modal-top h3{font-size:16px;font-weight:600}
.close-x{width:32px;height:32px;border-radius:50%;border:none;background:var(--bg);cursor:pointer;font-size:20px;color:var(--tx3);display:flex;align-items:center;justify-content:center;transition:all .15s}
.close-x:hover{background:var(--rose-s);color:var(--rose);transform:rotate(90deg)}
.modal-mid{padding:0 26px 16px;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}
.modal-bot{padding:12px 26px 22px;display:flex;justify-content:flex-end;gap:10px;flex-shrink:0;flex-wrap:wrap}
.dropzone{border:2px dashed var(--border);border-radius:var(--rs);padding:32px;text-align:center;color:var(--tx3);cursor:pointer;transition:all .12s}
.dropzone:hover,.dropzone.over{border-color:var(--indigo);background:var(--indigo-s)}
.dropzone svg{margin-bottom:6px}.dropzone p{font-size:14px;margin-bottom:4px}.dropzone small{font-size:12px}
.link{color:var(--indigo);cursor:pointer;text-decoration:underline;font-weight:500}
.file-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:var(--bg);border-radius:var(--rs);font-size:13px;margin-top:8px}
.file-item .fn{font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-item .fs{color:var(--tx3);font-size:12px;margin:0 10px}
.file-item .rm{background:none;border:none;cursor:pointer;color:var(--rose);font-size:16px;padding:0 4px}

/* ═══ SELECT MODAL (Reconciliacion) ═══ */
.modal-xl{width:820px;max-width:min(94vw,820px)}
.sel-section{margin-bottom:18px}
.sel-section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--tx3);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.sel-section-title svg{opacity:.5}
.sel-section-title .sel-req{color:var(--rose);font-size:10px;font-weight:600;background:rgba(244,63,94,.08);padding:1px 6px;border-radius:8px;margin-left:4px}
.sel-section-title .sel-opt{color:var(--tx3);font-size:10px;font-weight:500;background:var(--bg);padding:1px 6px;border-radius:8px;margin-left:4px}

/* Year chips */
.year-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.year-chip{padding:6px 14px;border-radius:20px;border:1.5px solid var(--border);background:var(--bg);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;user-select:none}
.year-chip:hover{border-color:var(--indigo);color:var(--indigo)}
.year-chip.active{background:var(--indigo);color:#fff;border-color:var(--indigo)}

/* Month grid */
.month-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin-bottom:10px}
.month-chip{padding:6px 4px;border-radius:8px;border:1.5px solid var(--border);background:var(--card);font-size:11px;font-weight:500;text-align:center;cursor:pointer;transition:all .15s;user-select:none;white-space:nowrap}
.month-chip:hover{border-color:var(--indigo);color:var(--indigo)}
.month-chip.active{background:var(--indigo-s);color:var(--indigo);border-color:var(--indigo);font-weight:600}
.month-chip.disabled{opacity:.35;pointer-events:none}

/* Date range row */
.date-range-row{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.date-range-row label{font-size:11px;color:var(--tx3);font-weight:500;white-space:nowrap}
.date-range-row input[type="date"]{flex:1;padding:7px 10px;border:1.5px solid var(--border);border-radius:var(--rs);font-family:inherit;font-size:12px;background:var(--card);color:var(--tx)}
.date-range-row input[type="date"]:focus{border-color:var(--indigo);outline:none}

/* File list in select mode */
.sel-actions{display:flex;justify-content:flex-end;margin-bottom:6px}
.btn-sel-all{background:none;border:1.5px solid var(--border);border-radius:20px;padding:4px 12px;font-size:11px;font-weight:600;color:var(--indigo);cursor:pointer;font-family:inherit;transition:all .15s}
.btn-sel-all:hover{background:var(--indigo-s);border-color:var(--indigo)}
.sel-files-list{max-height:160px;overflow-y:auto;border:1.5px solid var(--border);border-radius:var(--rs);background:var(--bg)}
.sel-files{max-height:160px;overflow-y:auto;border:1.5px solid var(--border);border-radius:var(--rs);background:var(--bg)}
.sel-file{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border2);cursor:pointer;transition:background .1s;font-size:12px}
.sel-file:last-child{border-bottom:none}
.sel-file:hover{background:var(--indigo-s)}
.sel-file.selected{background:var(--indigo-s);border-left:3px solid var(--indigo)}
.sel-file input[type="checkbox"]{accent-color:var(--indigo);width:15px;height:15px;cursor:pointer}
.sel-file .sf-name{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sel-file .sf-meta{color:var(--tx3);font-size:11px;white-space:nowrap}
.sel-files-empty{padding:20px;text-align:center;color:var(--tx3);font-size:12px}

/* Summary panel */
.sel-summary{background:var(--bg);border:1.5px solid var(--border);border-radius:var(--rs);padding:14px 16px;margin-top:12px}
.sel-summary-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--tx3);margin-bottom:8px}
.sel-summary-items{display:flex;flex-wrap:wrap;gap:6px}
.sel-summary-item{display:flex;align-items:center;gap:5px;padding:5px 10px;background:var(--card);border:1px solid var(--border2);border-radius:20px;font-size:11px;font-weight:500}
.sel-summary-item .ss-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.sel-summary-item .ss-remove{background:none;border:none;cursor:pointer;color:var(--tx3);font-size:14px;padding:0 0 0 4px;line-height:1}
.sel-summary-item .ss-remove:hover{color:var(--rose)}
.sel-summary-empty{font-size:12px;color:var(--tx3);font-style:italic}

/* Collapsible sections */
.sel-toggle{cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px}
.sel-toggle::before{content:"▸";font-size:10px;transition:transform .15s;display:inline-block}
.sel-toggle.open::before{transform:rotate(90deg)}
.sel-body{display:none;padding-top:8px}
.sel-body.open{display:block}

/* ═══ EXPORT BAR ═══ */
.export-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px}

/* ═══ PAGINACIÓN ═══ */
.pag-bar{display:flex;align-items:center;gap:4px;padding:6px 0;flex-wrap:wrap}
.pag-btn{min-width:32px;height:30px;padding:0 8px;border:1px solid var(--border2);border-radius:6px;background:var(--bg);color:var(--tx1);font-size:13px;font-weight:500;cursor:pointer;transition:all .12s;display:inline-flex;align-items:center;justify-content:center}
.pag-btn:hover:not(:disabled){background:var(--indigo);color:#fff;border-color:var(--indigo)}
.pag-active{background:var(--indigo)!important;color:#fff!important;border-color:var(--indigo)!important;font-weight:700}
.pag-dis{opacity:.35;cursor:not-allowed}
.pag-gap{color:var(--tx3);padding:0 2px;font-size:13px;line-height:30px}
.pag-info{margin-left:8px;font-size:11px;color:var(--tx3);white-space:nowrap}

/* ═══ PROGRESS STATES ═══ */
.progress-states{display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:8px;margin-top:12px}
.progress-state{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg);border-radius:var(--rs);border:1px solid var(--border2);font-size:12px}
.progress-state-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.progress-state-num{font-weight:700;margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:12px}

/* ═══ ANIMATIONS ═══ */
@keyframes modal-in{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes skeleton-load{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skeleton{background:linear-gradient(90deg,var(--border2) 25%,#E8EAF0 50%,var(--border2) 75%);background-size:200% 100%;animation:skeleton-load 1.5s infinite;border-radius:var(--rs)}

/* ═══ LOADING SPINNER ═══ */
.spinner{display:inline-block;width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}
.spinner-dark{border-color:var(--border);border-top-color:var(--indigo)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ═══ ACCESSIBILITY ═══ */
.btn:focus-visible,input:focus-visible,select:focus-visible,button:focus-visible,.nav-link:focus-visible,.chip:focus-visible{outline:2px solid var(--indigo);outline-offset:2px;border-radius:var(--rs)}
.close-x:focus-visible{outline:2px solid var(--indigo);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms!important;transition-duration:0.01ms!important}}

/* ═══ CARD HOVER ═══ */
.kpi{transition:transform .2s ease,box-shadow .2s ease}
.kpi:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.08)}
.dash-card{transition:transform .2s ease,box-shadow .2s ease}
.dash-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.08)}
.card{transition:box-shadow .2s ease}
.card:hover{box-shadow:0 2px 12px rgba(0,0,0,.07)}

/* ═══ SCROLLBAR ═══ */
.tw::-webkit-scrollbar,.modal-mid::-webkit-scrollbar{width:6px;height:6px}
.tw::-webkit-scrollbar-track,.modal-mid::-webkit-scrollbar-track{background:transparent}
.tw::-webkit-scrollbar-thumb,.modal-mid::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
.tw::-webkit-scrollbar-thumb:hover,.modal-mid::-webkit-scrollbar-thumb:hover{background:var(--tx3)}

/* ═══ UTILS ═══ */
.mt{margin-top:12px}.mb{margin-bottom:12px}.fb{display:flex;align-items:center;justify-content:space-between}.ts{font-size:12px}.tm{color:var(--tx3)}.fw{font-weight:600}

/* ═══════════════════════════════════════════
   CHAT MODULE — Teams/Apple style
   ═══════════════════════════════════════════ */
.chat-layout{display:flex;height:calc(100vh - var(--hh) - 56px);background:var(--card);border-radius:18px;box-shadow:var(--sh2);overflow:hidden}
.chat-sidebar{width:320px;border-right:1px solid var(--border2);display:flex;flex-direction:column;background:var(--sidebar)}
/* position:relative ancla el pill de "mensajes nuevos", que va en absolute */
.chat-main{flex:1;display:flex;flex-direction:column;background:var(--card);min-width:0;position:relative}

/* Rooms list */
.chat-room-item{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;border-bottom:1px solid var(--border2);transition:background .15s;position:relative}
.chat-room-item:hover{background:var(--hover)}
.chat-room-item.active{background:rgba(200,16,46,.08)}
.chat-room-item.active::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--indigo);border-radius:0 3px 3px 0}
.chat-room-avatar{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#DC2626,#C8102E);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:15px;flex-shrink:0;overflow:hidden}
.chat-room-avatar.caso{background:linear-gradient(135deg,#0EA5E9,#0284C7)}
.chat-room-content{flex:1;min-width:0}
.chat-room-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;gap:8px}
.chat-room-head b{font-size:14px;font-weight:600;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}
.chat-room-time{font-size:11px;color:var(--tx3);flex-shrink:0;font-weight:400}
.chat-room-preview{font-size:12.5px;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}
.chat-room-unread{background:var(--indigo);color:#fff;font-size:10px;font-weight:600;padding:2px 7px;border-radius:10px;margin-left:auto;flex-shrink:0}

/* Chat header */
.chat-header{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border2);background:rgba(255,255,255,.85);backdrop-filter:blur(20px)}
.chat-header-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#DC2626,#C8102E);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px;flex-shrink:0}
.chat-header-info{flex:1;min-width:0}
.chat-header-info h3{font-size:15px;font-weight:600;margin:0;letter-spacing:-.02em;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-header-info small{font-size:12px;color:var(--tx3)}
.chat-back{display:none}

/* Messages */
.chat-messages{flex:1;overflow-y:auto;padding:20px;background:var(--bg);display:flex;flex-direction:column;gap:12px}
.chat-msg{display:flex;gap:10px;max-width:75%}
.chat-msg.mine{align-self:flex-end;flex-direction:row-reverse}
.chat-msg-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#60A5FA,#2563EB);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;flex-shrink:0;overflow:hidden}
.chat-msg-bubble{background:var(--card);padding:10px 14px;border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.04);min-width:0}
.chat-msg.mine .chat-msg-bubble{background:var(--indigo);color:#fff;border-bottom-right-radius:4px}
.chat-msg:not(.mine) .chat-msg-bubble{border-bottom-left-radius:4px}
.chat-msg-author{font-size:11px;font-weight:600;color:var(--indigo);margin-bottom:2px;letter-spacing:-.01em}
.chat-msg-text{font-size:14px;line-height:1.45;word-wrap:break-word;white-space:pre-wrap}
.chat-msg-time{font-size:10.5px;opacity:.65;margin-top:4px;letter-spacing:-.01em}
.chat-msg-sys{text-align:center;font-size:11.5px;color:var(--tx3);padding:8px 16px;background:var(--card);border-radius:var(--rp);align-self:center;max-width:80%;letter-spacing:-.01em}
.chat-msg-file{display:flex;align-items:center;gap:10px;padding:8px 4px;text-decoration:none;color:inherit}
.chat-msg.mine .chat-msg-file{color:#fff}

/* Input bar */
.chat-input-bar{display:flex;align-items:flex-end;gap:8px;padding:14px 18px;border-top:1px solid var(--border2);background:var(--card)}
.chat-input-bar textarea{flex:1;border:1px solid var(--border);border-radius:22px;padding:11px 18px;font-family:inherit;font-size:14px;resize:none;outline:none;max-height:120px;background:var(--hover);transition:all .2s;letter-spacing:-.01em;min-height:42px}
.chat-input-bar textarea:focus{border-color:var(--indigo);background:var(--card);box-shadow:0 0 0 3px rgba(200,16,46,.08)}
.btn-icon{width:40px;height:40px;border-radius:50%;border:none;background:var(--hover);color:var(--tx2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}
.btn-icon:hover{background:var(--border);color:var(--tx)}
.btn-icon.primary{background:var(--indigo);color:#fff}
.btn-icon.primary:hover{background:var(--indigo-d);box-shadow:0 2px 8px rgba(200,16,46,.3)}
.btn-icon.recording{background:var(--rose);color:#fff;animation:pulse 1.2s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,59,48,.5)}50%{box-shadow:0 0 0 8px rgba(255,59,48,0)}}

/* Caso card */
.caso-card{transition:all .2s ease}
.caso-card:hover{transform:translateY(-2px);box-shadow:var(--sh3)}

/* Badges de origen del cruce — iniciales I (IMEI) / T (Telefono) */
.src-badge{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:6px;border-radius:50%;font-size:10px;font-weight:700;letter-spacing:0;vertical-align:middle;font-family:inherit;line-height:1}
.src-badge.src-imei{background:#E0F2FE;color:#0369A1;border:1px solid #7DD3FC}
.src-badge.src-linea{background:#F5F3FF;color:#7C3AED;border:1px solid #C4B5FD}
/* Valor en negrita y color segun origen */
.src-val-imei{font-weight:700;color:#0369A1}
.src-val-linea{font-weight:700;color:#7C3AED}
.src-val-ambos{font-weight:700;background:linear-gradient(90deg,#0369A1 0%,#0369A1 50%,#7C3AED 50%,#7C3AED 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}

/* Chat info panel (caso details) */
.chat-info-panel{padding:16px 20px;background:var(--bg);border-bottom:1px solid var(--border2);max-height:45vh;overflow-y:auto}
.ci-header{margin-bottom:10px}
.ci-desc{font-size:12.5px;color:var(--tx2);line-height:1.5;padding:10px 12px;background:var(--card);border-radius:10px;margin-bottom:12px;letter-spacing:-.01em}
.ci-section{margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed var(--border2)}
.ci-section:last-child{border-bottom:none}
.ci-section-title{font-size:11px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.ci-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;gap:12px}
.ci-k{font-size:12px;color:var(--tx3);flex-shrink:0}
.ci-v{font-size:12.5px;color:var(--tx);font-weight:500;text-align:right;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}
.ci-equipment{background:var(--card);border-radius:12px;padding:12px 14px;margin-top:6px}
.ci-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px}
.ci-grid .ci-row{padding:3px 0}
.ci-diff{margin-top:10px;padding:10px 12px;border-radius:10px;display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600}
.ci-diff.neg{background:var(--rose-s);color:var(--rose)}
.ci-diff.pos{background:var(--green-s);color:var(--green)}
.ci-diff b{font-size:15px;letter-spacing:-.02em}
@media(max-width:768px){
  .chat-info-panel{max-height:30vh}
  .ci-grid{grid-template-columns:1fr}
}

/* ═══ RESPONSIVE ═══ */
@media(max-width:1024px){
  .kpis{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
  .dash-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
}
@media(max-width:768px){
  /* En movil el sidebar SIEMPRE es drawer off-canvas a 260px, aunque este 'collapsed' o 'horizontal' guardado en desktop */
  .sidebar,.sidebar.collapsed,html[data-menu="horizontal"] .sidebar{transform:translateX(-100%);width:260px!important;box-shadow:0 16px 48px rgba(0,0,0,.2)}
  .sidebar.open{transform:translateX(0)}
  .sidebar.open+.main::before{content:'';position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:49;backdrop-filter:blur(2px);animation:overlay-in .2s ease}
  /* El contenido ocupa todo el ancho: ni el margen de 'collapsed' (56px) ni el de 'horizontal' deben filtrarse */
  .main,.sidebar.collapsed~.main,html[data-menu="horizontal"] .main{margin-left:0!important}
  /* El sidebar colapsado debe mostrar textos completos cuando se abre como drawer */
  .sidebar.collapsed .brand-name,.sidebar.collapsed .nav-section,.sidebar.collapsed .user-detail,.sidebar.collapsed .btn-logout,.sidebar.collapsed .status span{display:revert!important}
  .sidebar.collapsed .nav-link{justify-content:flex-start!important;padding:9px 14px!important;font-size:13.5px!important;gap:11px!important}
  .sidebar.collapsed .nav-link svg{width:17px!important;height:17px!important;opacity:.7}
  .ham{display:flex;align-items:center;justify-content:center;width:36px;height:36px}
  .kpis{grid-template-columns:1fr 1fr;gap:12px}
  .kpi{padding:18px 20px}
  .kpi-num{font-size:26px}
  .g2{grid-template-columns:1fr}
  .dash-grid{grid-template-columns:1fr;gap:12px}
  .dash-card{padding:20px 22px}
  .step-grid{grid-template-columns:1fr}
  .concept-grid{grid-template-columns:1fr}
  .search-wrap{width:100%;min-width:0}.search-wrap input{width:100%;min-width:0}
  .topbar{padding:0 16px;gap:10px;height:56px}
  .topbar h1{font-size:18px}
  .topbar-right{gap:4px}
  .topbar-right .btn{padding:8px 12px;font-size:12px}
  .topbar-right .date-selector{max-width:140px;font-size:12px}
  .progress-states{grid-template-columns:1fr 1fr}
  .tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex-shrink:0}
  .content{padding:16px 14px}
  .filter-bar{gap:8px}
  .overlay{padding:8px;align-items:flex-start}
  .overlay.open{padding-top:max(env(safe-area-inset-top),8px)}
  .modal{width:100%!important;max-width:100%!important;max-height:calc(100vh - 16px);border-radius:16px;margin:auto}
  .modal-top{padding:16px 18px 10px;border-bottom:1px solid var(--border2)}
  .modal-top h3{font-size:15px}
  .modal-mid{padding:10px 18px}
  .modal-bot{padding:10px 18px 14px;flex-wrap:wrap;border-top:1px solid var(--border2);background:var(--card);position:sticky;bottom:0}
  .modal-bot .btn{flex:1 1 auto;min-width:0;justify-content:center;font-size:12px;padding:9px 12px}
  .card-h,.card-b{padding:16px 18px}
  .card-b.np{padding:0}
  /* Tablas con scroll horizontal */
  .tw{border-radius:0;margin:0 -14px}
  thead th,tbody td{padding:10px 12px;font-size:12px}
  /* Dashboard cards header */
  .dc-header{gap:12px}
  .dc-num{font-size:24px}
  /* Form groups stack.
     16px es obligatorio: por debajo, iOS Safari hace zoom automatico al
     enfocar el campo y descoloca el layout. Antes estaba en 14px. */
  .form-group input{padding:12px 14px;font-size:16px}
  /* Selects responsive */
  select.filtro-sel,input.filtro-sel{max-width:100%!important;width:100%}
  /* Chips wrap */
  .chips{flex-wrap:wrap;gap:4px}
  .chip{font-size:12px;padding:6px 12px}
  /* Upload modal grids */
  .month-grid{grid-template-columns:repeat(3,1fr)}
  .year-chips{overflow-x:auto;flex-wrap:nowrap;padding-bottom:6px}
  /* Bulk bar responsive */
  .bulk-bar{flex-wrap:wrap;padding:10px 12px}
  /* Toasts */
  .toasts{bottom:12px;right:12px;left:12px}
  .toast{max-width:100%}
  /* Chat mobile */
  .chat-layout{border-radius:0;margin:0 -12px;height:calc(100vh - var(--hh) - 28px)}
  .chat-sidebar{width:100%;position:absolute;inset:0;z-index:2;transition:transform .3s cubic-bezier(.2,.8,.2,1)}
  .chat-sidebar.hidden-mobile{transform:translateX(-100%)}
  .chat-main{position:absolute;inset:0;z-index:3;transform:translateX(100%);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
  .chat-main.active-mobile{transform:translateX(0)}
  .chat-back{display:flex!important;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;cursor:pointer;color:var(--tx)}
  .chat-msg{max-width:85%}
  .chat-messages{padding:16px 14px}
  .chat-input-bar{padding:12px 14px}
  .chat-input-bar textarea{padding:10px 16px}
}
@media(max-width:480px){
  .kpis{grid-template-columns:1fr}
  .progress-states{grid-template-columns:1fr}
  .topbar h1{font-size:16px}
  .topbar-right .btn span{display:none}
  .content{padding:14px 12px}
}

/* ═══ DETAIL MODAL ═══ */
.dtl-header{padding:4px 0 8px}
.dtl-info{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}
.dtl-row{display:flex;align-items:center;gap:8px;padding:3px 0}
.dtl-k{font-size:11px;font-weight:600;color:var(--tx2);min-width:110px;text-transform:uppercase;letter-spacing:.3px}
.dtl-v{font-size:13px;color:var(--tx)}
.dtl-v{min-width:0;overflow-wrap:anywhere}
/* En móvil: una sola columna para que MODELO/REPRESENTANTE/ESTADO no se corten */
@media (max-width:768px){
  .dtl-info{grid-template-columns:1fr;gap:2px 0}
  .dtl-row{justify-content:space-between;gap:10px;padding:6px 0;border-bottom:.5px solid var(--bd)}
  .dtl-row:last-child{border-bottom:none}
  .dtl-k{min-width:0;flex:0 0 auto}
  .dtl-v{text-align:right;flex:1 1 auto}
  .dtl-v .estado{white-space:normal}
}
.dtl-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.dtl-table th{background:var(--bg);padding:8px 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--tx3);border-bottom:2px solid var(--border)}
.dtl-table td{padding:7px 10px;border-bottom:1px solid var(--border)}
.dtl-table tr:hover{background:var(--bg)}
.dtl-label{font-weight:500;color:var(--tx2)}
.dtl-src{font-size:11px;color:var(--tx3);font-style:italic}
.dtl-section td{background:var(--bg);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);padding:8px 14px!important;border-top:1px solid var(--bd)!important;border-bottom:1px solid var(--bd)!important}
[data-theme="dark"] .dtl-section td{background:var(--bg);color:var(--tx3)}
.dtl-highlight td{background:rgba(14,165,233,.04)}
.dtl-sub td{font-size:11px;color:var(--tx3);padding-top:3px!important;padding-bottom:3px!important}
.dtl-sub .dtl-label{padding-left:18px!important}
.dtl-sub.dtl-highlight td{background:#FFF7ED;color:var(--tx);font-weight:600}
/* Garantizar contraste del valor cuando tiene color de origen dentro de fila highlight */
.dtl-sub.dtl-highlight .src-val-imei,.dtl-sub.dtl-highlight .src-val-linea,.dtl-sub.dtl-highlight .src-val-ambos{background:#FFFFFF;padding:2px 8px;border-radius:6px;-webkit-text-fill-color:initial}
.dtl-sub.dtl-highlight .src-val-imei{color:#0369A1}
.dtl-sub.dtl-highlight .src-val-linea{color:#7C3AED}
.dtl-sub.dtl-highlight .src-val-ambos{background:linear-gradient(90deg,#0369A1 0%,#0369A1 50%,#7C3AED 50%,#7C3AED 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;color:transparent}
.dtl-total td{background:var(--bg);font-weight:700;font-size:14px;border-top:2px solid var(--border);padding:10px!important}

/* Cambiazo Prepago Detail Modal */
.cdp-modal{width:720px;max-width:min(94vw,720px)}
.cdp-field{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--border2);font-size:12px;gap:8px}
.cdp-field:last-child{border-bottom:none}
.cdp-field-k{color:var(--tx3);font-size:11px;flex-shrink:0}
.cdp-field-v{font-weight:600;color:var(--tx);text-align:right}
#cdpPrev:disabled,#cdpNext:disabled{opacity:.3;cursor:default;pointer-events:none}
.cdp-saved{color:var(--amber)!important;border-color:var(--amber)!important}
@media(max-width:640px){
  .cdp-modal [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
}

/* Row hover for clickable rows */
.rcl-row:hover{background:var(--indigo-s)!important;transition:background .1s}
.eq-row:hover{background:var(--indigo-s)!important;transition:background .1s}

/* ═══ COLUMN FILTERS (Errores Facturacion) ═══ */
.ef-filt-icon{background:none;border:none;cursor:pointer;padding:1px 3px;color:var(--tx3);opacity:.45;transition:all .15s;vertical-align:middle;margin-left:2px}
.ef-filt-icon:hover{opacity:1;color:var(--indigo)}
.ef-filt-icon.active{opacity:1;color:var(--indigo)}
.ef-summary-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--indigo-s);border:1px solid var(--indigo);border-radius:var(--rs);margin-bottom:12px;flex-wrap:wrap;animation:fu .15s}
.ef-fchips{display:flex;flex-wrap:wrap;gap:5px;flex:1}
.ef-fchip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:var(--card);border:1px solid var(--border);border-radius:20px;font-size:11px;color:var(--tx);white-space:nowrap}
.ef-fchip b{color:var(--indigo);font-weight:600}
.ef-fchip-x{background:none;border:none;cursor:pointer;color:var(--tx3);font-size:14px;padding:0 2px;line-height:1}
.ef-fchip-x:hover{color:var(--rose)}
.ef-pop-inp{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:var(--rs);font-family:inherit;font-size:12px;background:var(--bg);color:var(--tx);box-sizing:border-box}
.ef-pop-inp:focus{border-color:var(--indigo);outline:none;box-shadow:0 0 0 2px rgba(99,102,241,.12)}
.ef-pop-lbl{display:block;font-size:11px;color:var(--tx3);font-weight:600;margin-bottom:3px;margin-top:4px}
.ef-pop-list{max-height:200px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--rs);padding:4px}
.ef-pop-opt{display:flex;align-items:center;gap:6px;padding:3px 6px;font-size:12px;cursor:pointer;border-radius:4px}
.ef-pop-opt:hover{background:var(--bg)}
.ef-pop-opt input[type=checkbox]{accent-color:var(--indigo)}
.ef-pop-opt span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ef-filter-label{font-size:11px;font-weight:600;color:var(--indigo);white-space:nowrap}

/* ═══ RECLAMACIONES PAGINATION ═══ */
.rc-pag{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 0 6px;border-top:1px solid var(--border);margin-top:4px}
.rc-pag-info{font-size:13px;color:var(--tx2);text-align:center}
.rc-pag .btn{min-width:110px}

/* ═══ OPTIMIZACION UX v5 ═══ */

/* -- Filtros colapsables -- */
.adv-tog{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;background:none;border:1px solid var(--border);border-radius:20px;font-size:12px;color:var(--tx2);cursor:pointer;transition:all .15s;white-space:nowrap;line-height:1.4}
.adv-tog:hover{border-color:var(--indigo);color:var(--indigo)}
.adv-tog.has-active{border-color:var(--indigo);color:var(--indigo);background:var(--indigo-s)}
.adv-tog .adv-chev{transition:transform .2s;display:inline-flex}
.adv-tog.open .adv-chev{transform:rotate(180deg)}
.adv-panel{display:none;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 0 4px;border-top:1px solid var(--border);margin-top:6px;animation:fu .12s}
.adv-panel.open{display:flex}

/* -- Barra de filtros más compacta -- */
.filter-bar{gap:7px}
.filter-bar .filtro-sel{padding:4px 8px;font-size:12px;height:29px}
.filter-bar .search-wrap input{padding:4px 8px 4px 28px;font-size:13px;height:29px}
.filter-bar .search-wrap svg{top:50%;transform:translateY(-50%);width:13px;height:13px}
.filter-bar .chip{padding:3px 10px;font-size:12px}
.filter-bar label.chip{padding:3px 10px;font-size:12px}

/* -- Export bar compacta -- */
.export-bar{gap:6px;padding:5px 0}
.export-bar .btn-sm{padding:4px 10px;font-size:12px}
.export-bar .btn-icon-only{padding:4px 8px;min-width:0}
.export-bar .btn-icon-only span{display:none}

/* -- Tabla más densa -- */
.tw table td,.tw table th{padding:5px 8px;font-size:12.5px}
.tw table th{padding:6px 8px;font-size:11.5px}
.tw table.compact td,.tw table.compact th{padding:3px 6px;font-size:11.5px}

/* -- Note reducida en reclamaciones -- */
.note-formula{font-size:10.5px;padding:5px 10px;opacity:.75;border-radius:4px;background:var(--bg);border:1px solid var(--border);color:var(--tx3);line-height:1.5}

/* -- Kbd shortcut badge -- */
.kbd{display:inline-block;padding:1px 5px;background:var(--bg);border:1px solid var(--border);border-radius:4px;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--tx3);line-height:1.6;vertical-align:middle}

/* -- Acceso rapido (Quick Nav) -- */
.qnav{display:flex;gap:4px;flex-wrap:wrap;padding:0 0 8px}
.qnav-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;background:var(--card);border:1px solid var(--border);border-radius:20px;font-size:12px;color:var(--tx2);cursor:pointer;transition:all .15s;text-decoration:none}
.qnav-btn:hover{border-color:var(--indigo);color:var(--indigo);background:var(--indigo-s)}
.qnav-btn svg{flex-shrink:0}

/* -- Topbar más ligera -- */
.topbar{padding:0 16px;height:48px;min-height:48px}
.topbar h1{font-size:15px;font-weight:600}
.topbar .btn-sm{padding:4px 10px;font-size:12px}
.topbar .btn{padding:5px 12px;font-size:13px}

/* -- Sidebar más limpia -- */
#nav{padding:4px 8px}
.nav-link{padding:5px 10px;font-size:13px;gap:7px;border-radius:6px;margin-bottom:0}
.nav-link svg{width:14px;height:14px;flex-shrink:0;opacity:.75}
.nav-link.active svg{opacity:1}
.nav-section{padding:2px 8px 2px 10px;font-size:10px;letter-spacing:.08em;margin-top:4px}
.nav-group{padding:1px 0;gap:0}

/* -- Cards con menos padding -- */
.card-h{padding:10px 14px}
.card-h h3{font-size:13px}
.card-b{padding:12px 14px}
.card-b.np{padding:0}

/* -- KPI cards más compactas -- */
.kpi{padding:10px 12px;min-width:110px}
.kpi-lbl{font-size:10px}
.kpi-num{font-size:18px}
.kpi-sub{font-size:10px}

/* -- Chip counter badge -- */
.chip-cnt{display:inline-block;background:rgba(0,0,0,.1);border-radius:10px;padding:0 5px;font-size:10px;font-weight:600;min-width:16px;text-align:center;line-height:1.5}
.chip.on .chip-cnt{background:rgba(255,255,255,.25)}

/* -- Badge de comentarios en filas de reclamaciones -- */
.rcl-cmt-badge{
  display:inline-flex;align-items:center;gap:3px;
  background:linear-gradient(135deg,rgba(245,158,11,.18),rgba(245,158,11,.08));
  color:#B45309;border:1px solid rgba(245,158,11,.4);
  border-radius:100px;font-size:10px;font-weight:700;
  padding:1px 7px 1px 5px;white-space:nowrap;vertical-align:middle;
  margin-left:5px;cursor:default;letter-spacing:.01em;
  box-shadow:0 1px 3px rgba(245,158,11,.15);
  transition:background .15s,box-shadow .15s;
}
.rcl-cmt-badge:hover{background:rgba(245,158,11,.28);box-shadow:0 2px 6px rgba(245,158,11,.25)}
.rcl-cmt-badge svg{flex-shrink:0}
[data-theme="dark"] .rcl-cmt-badge{background:rgba(245,158,11,.15);color:#FCD34D;border-color:rgba(245,158,11,.3)}
/* Fila con comentario: borde izquierdo sutil ámbar */
tr.rcl-row.rcl-has-comment > td:first-child{border-left:3px solid rgba(245,158,11,.5)}
/* Leyenda debajo del filter bar */
.rcl-cmt-legend{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--tx3);margin-top:4px}
.rcl-cmt-legend .rcl-cmt-badge{font-size:10px}

/* -- Ruido slider compacto y contenido -- */
.ruido-slider{display:inline-flex!important;align-items:center;gap:6px;padding:3px 8px;flex-shrink:0;min-width:0;background:var(--bg);border:1px solid var(--bd);border-radius:8px}
.ruido-lbl{font-size:11px;white-space:nowrap;flex-shrink:0}
.ruido-range{width:90px!important;flex-shrink:0}
.ruido-input{width:60px;padding:2px 5px;font-size:11.5px;flex-shrink:0}
.ruido-cnt{font-size:10.5px;white-space:nowrap;flex-shrink:0}
.ruido-presets{display:none}

/* -- Note formula minimalista -- */
.note-i code{font-size:10px;opacity:.8}

/* ══════════════════════════════════════════════════
   SEARCH BAR — global compactness fix
   Ancho máximo 340px; si está solo ocupa el 100%.
   !important necesario para override inline flex:1
   ══════════════════════════════════════════════════ */
.filter-bar .search-wrap{
  max-width:340px !important;
  flex-shrink:1;
}
.filter-bar .search-wrap:only-child{
  max-width:100% !important;
}
.filter-bar .search-wrap input{
  width:100%;
  min-width:0;
}

/* Botón Filtros: nunca se recorta ni baja de línea, pegado al search */
.filter-bar .adv-tog{
  flex-shrink:0;
  white-space:nowrap;
}

/* Chips no deben crecer más allá de su contenido */
.filter-bar .chips{
  flex-shrink:1;
  min-width:0;
}

/* ═══════════════════════════════════════════════
   PERFORMANCE & MOTION v5 — fluidez + loading sutil
   ═══════════════════════════════════════════════ */
:root{--ease-spring:cubic-bezier(.32,.72,0,1);--ease-out-expo:cubic-bezier(.16,1,.3,1)}

/* Transición de vistas — fade + rise al navegar */
@keyframes viewIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
section.v.active{animation:viewIn .32s var(--ease-out-expo) both}

/* Stagger reveal — KPIs y cards entran en cascada */
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.v.active .kpis>.kpi{animation:rise .45s var(--ease-out-expo) backwards}
.v.active .kpis>.kpi:nth-child(1){animation-delay:.04s}
.v.active .kpis>.kpi:nth-child(2){animation-delay:.08s}
.v.active .kpis>.kpi:nth-child(3){animation-delay:.12s}
.v.active .kpis>.kpi:nth-child(4){animation-delay:.16s}
.v.active .kpis>.kpi:nth-child(5){animation-delay:.20s}
.v.active .kpis>.kpi:nth-child(6){animation-delay:.24s}
.v.active .dash-grid>*{animation:rise .5s var(--ease-out-expo) backwards}
.v.active .dash-grid>*:nth-child(1){animation-delay:.06s}
.v.active .dash-grid>*:nth-child(2){animation-delay:.11s}
.v.active .dash-grid>*:nth-child(3){animation-delay:.16s}
.v.active .dash-grid>*:nth-child(4){animation-delay:.21s}
.v.active .dash-grid>*:nth-child(5){animation-delay:.26s}
.v.active .dash-grid>*:nth-child(6){animation-delay:.31s}

/* Micro-interacciones */
.btn{transition:background .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .12s var(--ease-spring)}
.btn:active{transform:scale(.96)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 4px rgba(200,16,46,.18)}
.nav-link{transition:background .15s ease,color .15s ease,transform .1s ease}
.nav-link:active{transform:scale(.98)}
.kpi:hover{transform:translateY(-2px);box-shadow:0 1px 1px rgba(0,0,0,.03),0 8px 20px -6px rgba(0,0,0,.1)}
.dash-card:hover{transform:translateY(-2px);box-shadow:0 1px 1px rgba(0,0,0,.03),0 8px 20px -6px rgba(0,0,0,.1)}
[data-theme="dark"] .kpi:hover,[data-theme="dark"] .dash-card:hover{box-shadow:0 1px 1px rgba(0,0,0,.3),0 8px 20px -6px rgba(0,0,0,.5)}
tbody td{transition:background .12s ease}
.chip,.tab{transition:background .15s ease,color .15s ease,border-color .15s ease,transform .1s ease}
.chip:active,.tab:active{transform:scale(.96)}

/* Pintado perezoso — el navegador solo pinta filas visibles */
.tw tbody tr{content-visibility:auto;contain-intrinsic-size:auto 42px}

/* Skeleton de vista — solo aparece si el render tarda >120ms (evita parpadeo) */
.view-skel{display:flex;flex-direction:column;gap:14px;opacity:0;animation:skelShow .25s ease .12s forwards}
@keyframes skelShow{to{opacity:1}}
.view-skel .vs-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.vs-kpi{height:86px;border-radius:12px}
.vs-bar{height:46px;border-radius:12px}
.vs-row{height:38px;border-radius:8px}
[data-theme="dark"] .skeleton{background:linear-gradient(90deg,#2C2C2E 25%,#3A3A3C 50%,#2C2C2E 75%);background-size:200% 100%}

/* Estado de carga sutil — atenúa sin bloquear el layout */
.soft-loading{opacity:.55;pointer-events:none;transition:opacity .2s ease}

/* Accesibilidad — respetar reduce motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ═══════════════════════════════════════════════════════
   DASHBOARD REFINEMENT v6 — editorial financiero
   Números en mono (firma de auditoría), paleta atenuada,
   jerarquía deliberada, sombras en capas. Light + Dark.
   ═══════════════════════════════════════════════════════ */
:root{
  --mono:'JetBrains Mono','SF Mono',ui-monospace,Consolas,monospace;
  --pos:#1B7A4B; --pos-soft:rgba(27,122,75,.10);
  --warn-d:#9A6B00; --warn-soft:rgba(154,107,0,.10);
  --hero-a:#B11226; --hero-b:#7C0E1C;
  --sh-card:0 1px 1px rgba(17,24,39,.03),0 8px 22px -10px rgba(17,24,39,.10);
  --sh-hero:0 1px 1px rgba(124,14,28,.20),0 14px 34px -12px rgba(124,14,28,.42),inset 0 1px 0 rgba(255,255,255,.14);
}
[data-theme="dark"]{
  --pos:#34D399; --pos-soft:rgba(52,211,153,.12);
  --warn-d:#FBBF24; --warn-soft:rgba(251,191,36,.12);
  --sh-card:0 1px 1px rgba(0,0,0,.4),0 10px 26px -12px rgba(0,0,0,.6);
  --sh-hero:0 1px 1px rgba(0,0,0,.5),0 16px 38px -12px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.10);
}

/* Lienzo: papel cálido sutil en vez de gris plano */
.content{background:linear-gradient(180deg,#FBFAF9 0%,#F4F4F6 100%)}
[data-theme="dark"] .content{background:linear-gradient(180deg,#1A1A1C 0%,#161618 100%)}

/* ── Banner del dataset: neutro + regla roja lateral, meta en mono ── */
.ds-banner{background:var(--card);border:1px solid var(--bd);border-left:3px solid var(--accent);
  border-radius:12px;padding:13px 18px;box-shadow:var(--sh-card)}
[data-theme="dark"] .ds-banner{background:var(--card)}
.ds-banner-icon{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--hero-a),var(--hero-b));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.ds-banner-title{font-size:13.5px;letter-spacing:-.01em}
.ds-banner-sub{font-size:11.5px}
.ds-banner-sub b{font-family:var(--mono);font-weight:600;font-size:11px;letter-spacing:-.02em}

/* ── KPI cards: hairline, radio mayor, sombra en capas, regla superior al hover ── */
.stat-card{border-radius:16px;padding:18px 20px;border-color:var(--bd);
  transition:transform .18s var(--ease-spring),box-shadow .22s ease,border-color .22s ease}
.stat-card::before{content:'';position:absolute;inset:0 0 auto 0;height:2px;border-radius:16px 16px 0 0;
  background:var(--accent);opacity:0;transition:opacity .22s ease}
.stat-card:hover{transform:translateY(-3px);box-shadow:var(--sh-card);border-color:var(--border)}
.stat-card:hover::before{opacity:.9}

/* Número protagonista en mono — firma de terminal de auditoría */
.kpi-value{font-family:var(--mono);font-size:33px;font-weight:600;letter-spacing:-.03em}
.kpi-label{font-size:10.5px;letter-spacing:.07em;color:var(--tx3)}
.kpi-icon-sm{width:26px;height:26px;border-radius:8px}
.kpi-icon-sm.kpi-icon-ok{background:var(--pos-soft);color:var(--pos);border-color:transparent}
.kpi-icon-sm.kpi-icon-warn{background:var(--warn-soft);color:var(--warn-d);border-color:transparent}
.kpi-pct{font-family:var(--mono);font-size:10.5px}
.kpi-sub{font-size:11.5px}
.kpi-bar{height:5px;border-radius:3px}
.kpi-bar-fill.kpi-bar-ok{background:var(--pos)}
.kpi-bar-fill.kpi-bar-warn{background:linear-gradient(90deg,var(--warn-d),var(--accent))}

/* ── Hero: Monto a reclamar — degradado rojo profundo + marca de agua RD$ ── */
.stat-card-emphasis,[data-theme="dark"] .stat-card-emphasis{
  background:linear-gradient(135deg,var(--hero-a) 0%,var(--hero-b) 100%);
  border:none;color:#fff;box-shadow:var(--sh-hero);overflow:hidden}
.stat-card-emphasis::before{display:none}
.stat-card-emphasis::after{content:'RD$';position:absolute;right:-4px;bottom:-22px;
  font:700 86px/1 var(--mono);color:rgba(255,255,255,.07);letter-spacing:-.05em;pointer-events:none}
.stat-card-emphasis .kpi-value,[data-theme="dark"] .stat-card-emphasis .kpi-value{color:#fff}
.stat-card-emphasis .kpi-label,[data-theme="dark"] .stat-card-emphasis .kpi-label{color:rgba(255,255,255,.72)}
.stat-card-emphasis .kpi-sub,[data-theme="dark"] .stat-card-emphasis .kpi-sub{color:rgba(255,255,255,.78);font-family:var(--mono);font-size:11px}
.stat-card-emphasis .kpi-icon-sm,[data-theme="dark"] .stat-card-emphasis .kpi-icon-sm{
  background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.18)}
.stat-card-emphasis:hover{transform:translateY(-3px);box-shadow:var(--sh-hero)}

/* ── Health metrics: atenuados, valores en mono ── */
.health-item{border-radius:12px;padding:13px 16px;box-shadow:var(--sh-card)}
.health-label{font-size:10.5px;letter-spacing:.06em}
.health-bar{height:7px;border-radius:4px}
.health-fill-ok{background:var(--pos)}
.health-fill-warn{background:linear-gradient(90deg,var(--warn-d),var(--accent))}
.health-fill-neutral{background:var(--tx3)}
.health-val{font-family:var(--mono);font-size:15px;letter-spacing:-.02em}
.health-sub{font-family:inherit;font-size:11px}

/* ── Cards: header editorial con tick de acento, sombra suave ── */
.card{border-radius:16px;box-shadow:var(--sh-card)}
.card-h{padding:15px 18px 12px;border-bottom:1px solid var(--bd)}
.card-h h3{font-size:12.5px;font-weight:600;letter-spacing:-.005em;display:flex;align-items:center;gap:8px}
.card-h h3::before{content:'';width:3px;height:13px;border-radius:2px;background:var(--accent);flex-shrink:0}

/* ── Detalle: resumen financiero en filas hairline, valores mono ── */
.sr{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--bd)}
.sr:last-child{border-bottom:none}
.sr .l{font-size:12.5px;color:var(--tx2)}
.sr .v{font-family:var(--mono);font-weight:600;font-size:13px;letter-spacing:-.02em;color:var(--tx);font-variant-numeric:tabular-nums}
.sr-emph{margin-top:4px;padding-top:13px;border-top:2px solid var(--accent)}
.sr-emph .l{font-weight:600;color:var(--tx)}
.sr-emph .v{color:var(--accent);font-size:15px}

/* ── Donut legend + rep bars: detalle más legible ── */
.donut-leg-item{padding:6px 9px;font-size:12px}
.donut-leg-num{font-family:var(--mono);letter-spacing:-.02em}
.donut-leg-num small{font-family:inherit}
.rep-bar-val{font-family:var(--mono);letter-spacing:-.02em}
.rep-bar-fill{background:linear-gradient(90deg,var(--hero-a),var(--hero-b))}
.rep-bar-track{height:9px;border-radius:5px}

/* ── Quick-nav: chips más definidos ── */
.quick-nav-item{border-radius:11px;padding:10px 15px}
.quick-nav-count{font-family:var(--mono);font-size:10.5px;font-weight:600}

/* ── Navegación más snappy entre secciones ── */
section.v.active{animation:viewIn .22s var(--ease-out-expo) both}
.v.active .stat-grid>*{animation:rise .34s var(--ease-out-expo) backwards}
.v.active .stat-grid>*:nth-child(1){animation-delay:.03s}
.v.active .stat-grid>*:nth-child(2){animation-delay:.07s}
.v.active .stat-grid>*:nth-child(3){animation-delay:.11s}
.v.active .stat-grid>*:nth-child(4){animation-delay:.15s}
.v.active .health-grid>*{animation:rise .34s var(--ease-out-expo) backwards;animation-delay:.16s}
.v.active .dash-row{animation:rise .38s var(--ease-out-expo) backwards;animation-delay:.20s}

/* ═══════════════════════════════════════════════════════
   MENU v7 — sidebar ordenado + modo horizontal (tipo Excel)
   ═══════════════════════════════════════════════════════ */

/* Toggle de layout en la topbar */
.menu-layout-toggle{display:inline-flex;background:var(--bg);border:1px solid var(--bd);border-radius:9px;padding:2px;gap:2px}
.menu-layout-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:26px;border:none;background:none;color:var(--tx3);border-radius:7px;cursor:pointer;transition:background .15s,color .15s}
.menu-layout-btn:hover{color:var(--tx2);background:var(--hover)}
.menu-layout-btn.on{background:var(--card);color:var(--accent);box-shadow:var(--sh)}
.menu-layout-btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(200,16,46,.18)}

/* ── Sidebar vertical: más ordenado y respirado ── */
#nav{padding:8px 10px}
.nav-section{font-size:10.5px;letter-spacing:.08em;padding:13px 10px 6px;color:var(--tx3);margin-top:2px}
.nav-section:first-child{margin-top:0}
.nav-link{padding:8px 11px;font-size:13.5px;border-radius:9px;gap:11px;margin-bottom:1px}
.nav-link svg{width:17px;height:17px;opacity:.62}
.nav-link.active{background:var(--indigo-s)}
[data-theme="dark"] .nav-link.active{background:var(--indigo-s)}
.nav-link.active svg{opacity:1;color:var(--accent)}
.brand{padding:16px 16px 14px}
.brand-name{font-size:15.5px}

/* ═══ MODO HORIZONTAL (Excel ribbon) ═══ */
html[data-menu="horizontal"] .sidebar{
  position:fixed;inset:0 0 auto 0;width:100%;height:auto;flex-direction:row;align-items:center;
  flex-wrap:nowrap;gap:6px;padding:0 12px;overflow:visible;
  border-right:none;border-bottom:1px solid var(--border2);box-shadow:var(--sh)}
html[data-menu="horizontal"] .brand{min-height:0;padding:7px 10px 7px 2px;flex-shrink:0;gap:9px}
html[data-menu="horizontal"] .brand-name{font-size:14.5px}
html[data-menu="horizontal"] #nav{flex:1;display:flex;flex-direction:row;align-items:stretch;gap:2px;
  padding:0;overflow-x:auto;overflow-y:visible;min-width:0;scrollbar-width:thin}
html[data-menu="horizontal"] #nav::-webkit-scrollbar{height:0}

/* Secciones = pestañas (barra compacta) */
html[data-menu="horizontal"] .nav-section{order:0;width:auto;flex-shrink:0;margin:0;padding:13px 13px 11px;
  border-radius:0;border-bottom:2px solid transparent;font-size:11px;letter-spacing:.05em;background:none;color:var(--tx3)}
html[data-menu="horizontal"] .nav-section:hover{background:var(--hover);color:var(--tx)}
html[data-menu="horizontal"] .nav-section .nav-chevron{display:none}
html[data-menu="horizontal"] .nav-section.ribbon-on{color:var(--accent);border-bottom-color:var(--accent);background:none}

/* Grupo activo = ribbon: UNA sola fila de botones compactos, scroll horizontal si sobra */
html[data-menu="horizontal"] .nav-group{position:absolute;left:0;right:0;top:100%;
  display:none!important;flex-direction:row;flex-wrap:nowrap;gap:3px;max-height:none!important;opacity:1!important;
  padding:7px 12px!important;background:var(--card);border-bottom:1px solid var(--border2);box-shadow:var(--sh2);z-index:48;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
html[data-menu="horizontal"] .nav-group::-webkit-scrollbar{height:5px}
html[data-menu="horizontal"] .nav-group::-webkit-scrollbar-thumb{background:var(--bd);border-radius:3px}
html[data-menu="horizontal"] .nav-group.ribbon-show{display:flex!important;animation:viewIn .18s var(--ease-out-expo) both}
html[data-menu="horizontal"] .nav-link{flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;
  width:auto;flex-shrink:0;padding:8px 13px;text-align:left;font-size:12.5px;line-height:1.2;white-space:nowrap;border-radius:9px;color:var(--tx2);margin:0}
html[data-menu="horizontal"] .nav-link svg{width:16px;height:16px;opacity:.7}
html[data-menu="horizontal"] .nav-link:hover{background:var(--hover)}
html[data-menu="horizontal"] .nav-link:hover svg{opacity:1}
html[data-menu="horizontal"] .nav-link.active{background:var(--indigo-s);color:var(--accent)}
html[data-menu="horizontal"] .nav-link.active::before{display:none}
html[data-menu="horizontal"] .nav-link.active svg{opacity:1;color:var(--accent)}
html[data-menu="horizontal"] .nav-link[data-v] .quick-nav-count{display:none}

/* Pie del sidebar → usuario a la derecha de la barra */
html[data-menu="horizontal"] .sidebar-foot{order:0;flex-shrink:0;margin-left:auto;border-top:none;
  background:none;padding:5px 4px;display:flex;align-items:center;overflow:visible}
html[data-menu="horizontal"] .sidebar-foot .status{display:none}
html[data-menu="horizontal"] .sidebar-foot .user-info{margin:0;padding:4px 6px}

/* Ocultar controles del modo vertical */
html[data-menu="horizontal"] .sb-edge-tab,
html[data-menu="horizontal"] .sb-toggle-top{display:none}

/* Contenido: dejar espacio para barra + ribbon */
html[data-menu="horizontal"] .main{margin-left:0;margin-top:var(--ribbon-h,138px)}
html[data-menu="horizontal"] .topbar{top:var(--ribbon-h,138px)}

/* En móvil el horizontal se comporta como móvil normal (drawer) */
@media (max-width:768px){
  html[data-menu="horizontal"] .sidebar{position:fixed;inset:0 auto 0 0;width:260px;height:100%;flex-direction:column;flex-wrap:nowrap}
  html[data-menu="horizontal"] .main{margin-top:0}
  html[data-menu="horizontal"] .topbar{top:0}
  html[data-menu="horizontal"] .nav-group{position:static;box-shadow:none}
  .menu-layout-toggle{display:none}
}

/* Icono "update" — equipos validados/trabajados vs el nuevo dataset */
.upd-ic{display:inline-flex;vertical-align:middle;margin-left:6px;color:var(--accent);cursor:help;opacity:.85;transition:opacity .15s,transform .15s}
.upd-ic svg{display:block}
tr:hover .upd-ic{opacity:1;transform:rotate(-30deg)}
[data-theme="dark"] .upd-ic{color:#FCA5A5}

/* ═══════════════════════════════════════════════════════
   MOBILE TAB BAR v8 — navegación app-native (solo móvil)
   ═══════════════════════════════════════════════════════ */
.mobile-tabbar{display:none}
@media (max-width:768px){
  .mobile-tabbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;
    background:rgba(255,255,255,.88);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
    border-top:1px solid var(--bd);
    padding:7px 6px calc(7px + env(safe-area-inset-bottom,0px));
  }
  [data-theme="dark"] .mobile-tabbar{background:rgba(28,28,30,.9);border-top-color:var(--bd)}
  .mtab{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
    background:none;border:none;cursor:pointer;font-family:inherit;text-decoration:none;
    color:var(--tx3);font-size:10.5px;font-weight:500;letter-spacing:-.01em;padding:4px 2px;
    transition:color .15s ease,transform .1s ease;border-radius:10px;
  }
  .mtab svg{width:21px;height:21px;opacity:.85}
  .mtab span{line-height:1}
  .mtab:active{transform:scale(.92)}
  .mtab.active{color:var(--accent)}
  .mtab.active svg{opacity:1}
  /* Dejar espacio para que la barra no tape el contenido */
  .content{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  /* La barra flotante de toggle del sidebar estorba en móvil con la tabbar */
  .sb-edge-tab{display:none}
}

/* Cloudflare Turnstile (CAPTCHA) en el login */
.cf-turnstile-wrap{margin:6px 0 2px;display:flex;justify-content:center;min-height:0}

/* ═══════════════════════════════════════════════════════
   MOBILE TABLES v10 — tabla densa con scroll horizontal CONTENIDO
   (miles de filas: se mantienen agrupadas y comparables, el scroll
    lateral vive DENTRO de la tabla, nunca en la página)
   ═══════════════════════════════════════════════════════ */
@media (max-width:768px){
  /* La PÁGINA nunca hace scroll horizontal; solo el contenedor de la tabla */
  body,.main,.content,section.v{overflow-x:hidden!important;max-width:100vw}
  .main{width:100%}
  /* Barras de filtros/chips/tabs/export: envolver, nunca forzar ancho de la página */
  .filter-bar,.chips,.export-bar,.tabs,.adv-panel,.rcl-tabs,.ef-tabs{flex-wrap:wrap!important;max-width:100%}
  .filter-bar>*,.export-bar>*{flex-shrink:1;min-width:0}
  .export-bar{gap:8px}

  /* El contenedor de tabla scrollea en X (con inercia iOS) y marca el borde con sombra */
  .tw{
    overflow-x:auto!important;overflow-y:visible;-webkit-overflow-scrolling:touch;
    max-width:100%;width:100%;border:1px solid var(--bd);border-radius:12px;
    overscroll-behavior-x:contain;
    background:
      linear-gradient(90deg,var(--card) 30%,rgba(0,0,0,0)) left/26px 100% no-repeat,
      linear-gradient(270deg,var(--card) 30%,rgba(0,0,0,0)) right/26px 100% no-repeat,
      radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.10),rgba(0,0,0,0)) left/12px 100% no-repeat,
      radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.10),rgba(0,0,0,0)) right/12px 100% no-repeat;
    background-attachment:local,local,scroll,scroll}
  [data-theme="dark"] .tw{
    background:
      linear-gradient(90deg,var(--card) 30%,rgba(0,0,0,0)) left/26px 100% no-repeat,
      linear-gradient(270deg,var(--card) 30%,rgba(0,0,0,0)) right/26px 100% no-repeat,
      radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.4),rgba(0,0,0,0)) left/12px 100% no-repeat,
      radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.4),rgba(0,0,0,0)) right/12px 100% no-repeat;
    background-attachment:local,local,scroll,scroll}

  /* Tabla DENSA: una línea por celda, números tabulares, suficiente ancho para leerse */
  .tw table{min-width:max-content;font-size:12px;border-collapse:collapse}
  .tw thead th{
    position:sticky;top:0;z-index:2;background:var(--card);
    padding:8px 9px;font-size:10.5px;letter-spacing:.02em;white-space:nowrap;
    border-bottom:1px solid var(--bd)}
  .tw tbody td{padding:7px 9px;white-space:nowrap;font-variant-numeric:tabular-nums;border-bottom:.5px solid var(--bd)}
  .tw tbody tr:active td{background:var(--hover)}
  /* Primera columna fija (IMEI/NS) para no perder la referencia al hacer scroll lateral */
  .tw table.stick-first thead th:first-child,
  .tw table.stick-first tbody td:first-child{
    position:sticky;left:0;z-index:1;background:var(--card);
    box-shadow:1px 0 0 var(--bd)}
  .tw table.stick-first thead th:first-child{z-index:3}
}

/* ═══ Dashboard: linea meta minimalista ═══
   Reemplaza el banner "Dataset activo": misma informacion, sin caja ni icono. */
.dash-meta{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:0 0 18px;padding:0 2px;
  font-size:12px;color:var(--tx3);
  font-variant-numeric:tabular-nums;
  letter-spacing:.01em;
}
.dash-meta-period{color:var(--tx2);font-weight:550}
.dash-meta-sep{opacity:.4}

/* ═══ Splash: progreso de carga del dataset ═══ */
.splash-load{
  margin-top:22px;width:220px;
  display:flex;flex-direction:column;align-items:center;gap:9px;
  animation:splashLoadIn .35s cubic-bezier(.16,1,.3,1) both;
}
@keyframes splashLoadIn{from{opacity:0;transform:translateY(6px)}}
.splash-bar{
  width:100%;height:3px;border-radius:99px;overflow:hidden;
  background:color-mix(in srgb, var(--tx3) 22%, transparent);
}
.splash-bar-fill{
  height:100%;width:0%;border-radius:99px;
  background:var(--accent);
  transition:width .18s cubic-bezier(.32,.72,0,1);
}
/* Sin tamaño conocido: barra indeterminada en vez de un 0% congelado */
.splash-bar-fill.indet{
  width:35%;animation:splashIndet 1.1s cubic-bezier(.65,0,.35,1) infinite;
}
@keyframes splashIndet{0%{margin-left:-35%}100%{margin-left:100%}}
.splash-load-txt{
  font-size:11.5px;color:var(--tx3);
  font-variant-numeric:tabular-nums;letter-spacing:.01em;
}
@media (prefers-reduced-motion:reduce){
  .splash-load{animation:none}
  .splash-bar-fill{transition:none}
  .splash-bar-fill.indet{animation:none;width:100%;opacity:.5}
}

/* ═══ Asistente del Glosario ═══ */
.asis-wrap{display:flex;flex-direction:column;gap:12px;max-width:860px}
.asis-head{display:flex;align-items:center;gap:8px;font-size:12px;padding:2px}
.asis-on{color:var(--green);font-size:9px;line-height:1}
.asis-off{color:var(--amber);font-weight:600}
.asis-thread{
  display:flex;flex-direction:column;gap:12px;
  min-height:220px;max-height:52vh;overflow-y:auto;
  padding:16px;border:1px solid var(--border2);border-radius:14px;background:var(--card);
}
.asis-empty{color:var(--tx3);font-size:13px;line-height:1.6;margin:auto;text-align:center;max-width:44ch}
.asis-msg{max-width:84%;font-size:13.5px;line-height:1.6;padding:11px 14px;border-radius:14px;animation:asisIn .28s cubic-bezier(.16,1,.3,1) both}
@keyframes asisIn{from{opacity:0;transform:translateY(5px)}}
.asis-user{align-self:flex-end;background:var(--indigo);color:#fff;border-bottom-right-radius:5px}
.asis-bot{align-self:flex-start;background:var(--hover);color:var(--tx);border-bottom-left-radius:5px}
.asis-err{align-self:flex-start;background:var(--rose-s);color:var(--rose);border:1px solid rgba(255,59,48,.2)}
.asis-wait{opacity:.65;font-style:italic}
/* Ficha: el dato crudo del dataset, separado de la explicacion del modelo */
.asis-ficha{margin-top:10px;border:1px solid var(--border2);border-radius:11px;background:var(--card);padding:10px 12px}
.asis-ficha-no{color:var(--tx3);font-size:12.5px}
.asis-ficha-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.asis-ficha-id{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px;color:var(--tx2)}
.asis-ficha-dif{font-weight:650;font-variant-numeric:tabular-nums;font-size:13px}
.asis-ficha-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:7px 14px}
.asis-ficha-grid>div{display:flex;flex-direction:column;gap:1px}
.asis-ficha-grid span{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em}
.asis-ficha-grid b{font-size:12.5px;font-variant-numeric:tabular-nums;font-weight:550}
.asis-ficha-src{margin-top:8px;font-size:10.5px;color:var(--tx3)}
.asis-falta{margin-top:10px;padding:8px 11px;border-radius:9px;background:var(--amber-s);color:#8a5200;font-size:12px;line-height:1.5}
.asis-bar{display:flex;gap:8px}
.asis-bar input{
  flex:1;padding:12px 15px;border:1px solid var(--border);border-radius:11px;
  font-family:inherit;font-size:14px;background:var(--card);color:var(--tx);outline:none;
  transition:border-color .15s ease,box-shadow .15s ease;
}
.asis-bar input:focus{border-color:var(--indigo);box-shadow:0 0 0 3.5px rgba(200,16,46,.13)}
.asis-bar input:disabled{opacity:.55}
.asis-hint{font-size:11.5px;color:var(--tx3);margin:0 2px;line-height:1.5}
@media (max-width:640px){.asis-msg{max-width:94%}.asis-bar input{font-size:16px}}
@media (prefers-reduced-motion:reduce){.asis-msg{animation:none}}

/* ═══ Chat: flujo de conversacion ═══ */
.chat-day{display:flex;align-items:center;gap:12px;margin:18px 0 10px;color:var(--tx3)}
.chat-day::before,.chat-day::after{content:"";flex:1;height:1px;background:var(--border2)}
.chat-day span{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;font-weight:600;
  padding:3px 10px;border-radius:99px;background:var(--hover);white-space:nowrap;
}
/* Mensajes encadenados del mismo autor: menos ruido, mas lectura */
.chat-msg.chained{margin-top:-6px}
.chat-msg.chained .chat-msg-avatar{background:none;box-shadow:none;color:transparent}
.chat-msg.chained .chat-msg-bubble{border-top-left-radius:7px}
.chat-msg.mine.chained .chat-msg-bubble{border-top-right-radius:7px}
/* Aviso de mensajes nuevos al estar leyendo mas arriba */
.chat-nuevos{
  position:absolute;left:50%;transform:translateX(-50%);bottom:86px;z-index:6;
  padding:7px 15px;border:0;border-radius:99px;cursor:pointer;
  background:var(--indigo);color:#fff;font-family:inherit;font-size:12px;font-weight:600;
  box-shadow:0 1px 2px rgba(0,0,0,.10),0 6px 18px -6px rgba(200,16,46,.55);
  animation:chatPill .3s cubic-bezier(.16,1,.3,1) both;
}
@keyframes chatPill{from{opacity:0;transform:translate(-50%,7px)}}
.chat-nuevos:hover{background:var(--indigo-d)}

/* ═══ Caso: cuentas del equipo ═══ */
.ci-ledger{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.ci-led-col{border:1px solid var(--border2);border-radius:11px;padding:9px 11px;background:var(--card)}
.ci-led-h{
  font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:650;
  color:var(--tx3);margin-bottom:7px;
}
.ci-led-row,.ci-led-tot{display:flex;justify-content:space-between;gap:8px;align-items:baseline;padding:2px 0}
.ci-led-row span,.ci-led-tot span{font-size:11.5px;color:var(--tx2)}
.ci-led-row b,.ci-led-tot b{font-size:11.5px;font-variant-numeric:tabular-nums;font-weight:550}
.ci-led-none span{color:var(--tx3);font-style:italic}
.ci-led-tot{margin-top:6px;padding-top:6px;border-top:1px solid var(--border2)}
.ci-led-tot b{font-weight:680}
.ci-diff{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  margin-top:10px;padding:10px 13px;border-radius:11px;font-size:12.5px;
}
.ci-diff b{font-size:15px;font-variant-numeric:tabular-nums;font-weight:680}
.ci-diff.neg{background:var(--rose-s);color:var(--rose)}
.ci-diff.pos{background:var(--green-s);color:#1a7f37}
.ci-diff.zero{background:var(--hover);color:var(--tx2)}
.ci-nota{margin-top:8px;font-size:11px;line-height:1.5;color:var(--tx3)}
@media (max-width:640px){.ci-ledger{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.chat-nuevos{animation:none}}

/* ═══ Asistente: revision de aprendizajes (admin) ═══ */
.asis-rev{border:1px solid var(--border2);border-radius:12px;background:var(--card);overflow:hidden}
.asis-rev>summary{
  cursor:pointer;padding:11px 14px;font-size:12.5px;font-weight:600;color:var(--tx2);
  list-style:none;display:flex;align-items:center;gap:8px;
}
.asis-rev>summary::-webkit-details-marker{display:none}
.asis-rev>summary::before{content:"▸";color:var(--tx3);transition:transform .15s ease}
.asis-rev[open]>summary::before{transform:rotate(90deg)}
.asis-rev>summary:hover{background:var(--hover)}
.asis-rev-cnt{font-weight:400;color:var(--tx3);font-size:11.5px}
.asis-rev-list{padding:4px 14px 14px;display:flex;flex-direction:column;gap:10px;max-height:44vh;overflow-y:auto}
.asis-rev-item{border:1px solid var(--border2);border-radius:10px;padding:10px 12px;background:var(--bg)}
.asis-rev-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.asis-rev-badge{
  font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;
  padding:2px 7px;border-radius:99px;
}
.asis-rev-pendiente{background:var(--amber-s);color:#8a5200}
.asis-rev-aprobado{background:var(--green-s);color:#1a7f37}
.asis-rev-rechazado{background:var(--hover);color:var(--tx3)}
.asis-rev-q{font-size:12.5px;color:var(--tx);line-height:1.5}
.asis-rev-falta{margin-top:6px;font-size:12px;color:var(--tx2);line-height:1.5}
.asis-rev-ok{margin-top:6px;font-size:12px;color:#1a7f37;line-height:1.5}
.asis-rev-ta{
  width:100%;margin-top:8px;padding:8px 10px;border:1px solid var(--border);border-radius:9px;
  font-family:inherit;font-size:12.5px;background:var(--card);color:var(--tx);outline:none;resize:vertical;
}
.asis-rev-ta:focus{border-color:var(--indigo);box-shadow:0 0 0 3px rgba(200,16,46,.12)}
.asis-rev-btns{display:flex;gap:7px;margin-top:8px}

/* ═══ Asistente: atajos, foco y coincidencias ═══ */
.asis-chips{display:flex;gap:6px;flex-wrap:wrap}
.asis-chip{
  padding:6px 12px;border:1px solid var(--border);border-radius:99px;background:var(--card);
  color:var(--tx2);font-family:inherit;font-size:11.5px;font-weight:550;cursor:pointer;
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.asis-chip:hover{border-color:var(--indigo);color:var(--indigo);background:var(--indigo-s)}
.asis-chip:active{transform:scale(.97)}
.asis-foco{
  font-size:11.5px;color:var(--tx3);padding:0 2px;
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.asis-foco b{color:var(--tx2);font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11px;font-weight:500}
.asis-foco button{
  border:0;background:none;color:var(--indigo);cursor:pointer;font-family:inherit;
  font-size:11.5px;padding:0;text-decoration:underline;
}
.asis-coin{margin-top:10px;border:1px solid var(--border2);border-radius:11px;background:var(--card);overflow:hidden}
.asis-coin-h{
  padding:8px 11px;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;
  font-weight:650;color:var(--tx3);border-bottom:1px solid var(--border2);
}
.asis-coin-t{width:100%;border-collapse:collapse;font-size:12px}
.asis-coin-t td{padding:6px 11px;border-bottom:1px solid var(--border2)}
.asis-coin-t tr{cursor:pointer;transition:background .12s ease}
.asis-coin-t tr:hover{background:var(--hover)}
.asis-coin-t tr:last-child td{border-bottom:0}
.asis-coin-t .m{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11px;color:var(--tx2)}
.asis-coin-t .r{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.asis-coin-f{padding:6px 11px;font-size:10.5px;color:var(--tx3);background:var(--bg)}


/* ═══ Módulo Renta Avanzada ═══ */
.ra-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:10px;margin-bottom:12px}
.ra-row:hover{background:var(--hover)}
/* Marca de financiamiento: importa porque si la hay, el cobro pudo incluir
   el inicial del equipo y la diferencia deja de ser concluyente. */
.ra-fin{
  display:inline-flex;align-items:center;justify-content:center;
  width:15px;height:15px;margin-left:6px;border-radius:4px;
  background:var(--amber-s);color:#8a5200;
  font-size:9px;font-weight:800;vertical-align:middle;
}
.ra-tag{
  display:inline-block;padding:2px 8px;border-radius:99px;
  font-size:10px;font-weight:650;letter-spacing:.02em;white-space:nowrap;
  background:var(--hover);color:var(--tx2);
}
.ra-tag-ver{background:var(--amber-s);color:#8a5200}
.ra-tag-no{background:var(--rose-s);color:var(--rose)}
/* Posible descuento: es lo normal, no un hallazgo. Va en gris deliberadamente. */
.ra-tag-desc{background:var(--hover);color:var(--tx2)}
.ra-sub-ok{background:var(--green-s);color:#1a7f37}
.ra-sub-no{background:var(--rose-s);color:var(--rose)}
.ra-sub-na{background:var(--hover);color:var(--tx3)}
/* Tipo de plan: es una categoria, no un estado. Punto de color + texto sobrio
   para que no compita con las pildoras de Confianza y Subsidio. */
.ra-plan{
  display:inline-flex;align-items:center;gap:5px;
  font-size:10px;font-weight:600;letter-spacing:.04em;color:var(--tx2);
  white-space:nowrap;
}
.ra-plan::before{
  content:"";width:5px;height:5px;border-radius:50%;background:var(--tx3);flex:none;
}
.ra-plan-postpago::before{background:var(--indigo)}
.ra-plan-control::before{background:var(--amber)}
.ra-plan-prepago::before{background:var(--green)}
/* Codigo del plan: dato de sistema, va en mono y en segundo plano bajo el nombre */
.ra-cod{
  display:block;margin-left:10px;margin-top:1px;
  font-family:var(--mono,ui-monospace,"JetBrains Mono",monospace);
  font-size:9.5px;letter-spacing:.02em;color:var(--tx3);
}
.table-compact .ra-cod{display:inline;margin:0 0 0 6px}

/* Forma de pago: el cobro mixto merece resaltarse, es donde antes se colaban
   diferencias falsas por contar solo una de las vias. */
.ra-pago{font-size:11px;color:var(--tx2);white-space:nowrap}
.ra-pago.mix{color:var(--amber);font-weight:600}

/* Avisos: son notificaciones para verificar, NO montos a reclamar. Se pintan
   en ambar (atencion) y nunca en rojo, que en este sistema significa deuda. */
.ra-alerta{
  display:block;font-size:10px;line-height:1.35;color:var(--tx2);
  padding-left:9px;position:relative;max-width:210px;
}
.ra-alerta+.ra-alerta{margin-top:2px}
.ra-alerta::before{
  content:"";position:absolute;left:0;top:5px;
  width:4px;height:4px;border-radius:50%;background:var(--amber);
}
.ra-alerta.sim{color:var(--amber);font-weight:600}
.ra-aviso{margin-bottom:16px;font-size:12.5px;line-height:1.5}

/* ── Estado por operacion ── */
.ra-estados{gap:7px;margin-top:-6px;margin-bottom:16px;align-items:center}
.ra-estados-lbl{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--tx3);margin-right:2px;
}
.ra-est{
  font:inherit;font-size:11px;font-weight:600;padding:3px 6px;
  border:1px solid var(--bd);border-radius:7px;background:var(--card);
  color:var(--tx2);cursor:pointer;max-width:120px;
}
.ra-est:focus-visible{outline:none;box-shadow:0 0 0 3px var(--indigo-s);border-color:var(--indigo)}
.ra-est:disabled{opacity:.5;cursor:progress}
.ra-est-cuadrado{background:var(--green-s);color:#1a7f37;border-color:transparent}
.ra-est-dif-negativa{background:var(--rose-s);color:var(--rose);border-color:transparent}
.ra-est-dif-positiva{background:var(--amber-s);color:#8a5200;border-color:transparent}

/* ── Selector de columnas visibles ── */
.ra-cols-wrap{position:relative;display:inline-flex}
.ra-cols-pop{
  position:absolute;top:calc(100% + 6px);left:0;z-index:60;width:230px;
  background:var(--card);border:1px solid var(--bd);border-radius:12px;
  box-shadow:0 1px 1px rgba(0,0,0,.04),0 4px 12px -2px rgba(0,0,0,.08),0 24px 48px -16px rgba(0,0,0,.14);
  overflow:hidden;
  /* Con 25 columnas mas las vistas, el panel supera la altura de pantalla.
     Se acota al viewport y cada lista scrollea por dentro. */
  display:flex;flex-direction:column;max-height:min(72vh,520px);   /* JS lo ajusta al espacio real */
}
.ra-cols-hd{flex:none}
.ra-cols-ft{flex:none}
/* Apertura hacia arriba cuando no cabe debajo del boton */
.ra-cols-pop.arriba{top:auto;bottom:calc(100% + 6px)}
.ra-cols-hd{
  padding:9px 12px;border-bottom:1px solid var(--bd);
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--tx3);
}
.ra-cols-list{flex:1 1 auto;min-height:60px;overflow-y:auto;padding:4px}
.ra-cols-it{
  display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;
  font-size:12.5px;color:var(--tx);cursor:pointer;user-select:none;
}
.ra-cols-it:hover{background:var(--hover)}
.ra-cols-it input{accent-color:var(--indigo);cursor:pointer;flex:none}
.ra-cols-it span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ra-cols-it.fija{cursor:default;opacity:.65}
.ra-cols-it.fija:hover{background:transparent}
.ra-cols-it small{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em}
.ra-cols-ft{display:flex;gap:6px;padding:8px;border-top:1px solid var(--bd)}
.ra-cols-ft .btn{flex:1;justify-content:center}

/* ── Vistas de columnas guardadas ── */
.ra-vistas{flex:0 1 auto;min-height:44px;max-height:150px;overflow-y:auto;padding:4px}
.ra-vista{display:flex;align-items:center;gap:2px;border-radius:7px}
.ra-vista:hover{background:var(--hover)}
.ra-vista.on{background:var(--indigo-s)}
.ra-vista-ap{
  flex:1;min-width:0;display:flex;align-items:center;gap:6px;
  background:none;border:0;padding:6px 8px;border-radius:7px;
  font:inherit;font-size:12.5px;color:var(--tx);text-align:left;cursor:pointer;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ra-vista.on .ra-vista-ap{color:var(--indigo);font-weight:600}
.ra-vista-ap small{font-size:10px;flex:none}
.ra-vista-x{
  flex:none;background:none;border:0;cursor:pointer;
  width:22px;height:22px;margin-right:4px;border-radius:6px;
  font-size:15px;line-height:1;color:var(--tx3);
}
.ra-vista-x:hover{background:var(--rose-s);color:var(--rose)}
.ra-vista-vacio{padding:10px 8px;font-size:11.5px;line-height:1.4}
.ra-vista-nom{
  flex:1;min-width:0;font:inherit;font-size:12px;padding:5px 8px;
  border:1px solid var(--bd);border-radius:7px;background:var(--card);color:var(--tx);
}
.ra-vista-nom:focus{outline:none;border-color:var(--indigo);box-shadow:0 0 0 3px var(--indigo-s)}
.ra-cols-ft .ra-vista-nom+.btn{flex:0 0 auto}

/* La cabecera se mantiene visible mientras se recorre la tabla. El z-index debe
   superar al de los <td> y al del icono de filtro para que nada la atraviese. */
.ra-tw thead th{position:sticky;top:0;z-index:5;background:var(--card)}
[data-theme="dark"] .ra-tw thead th{background:var(--card)}
@media (max-width:640px){
  .ra-kpis{grid-template-columns:repeat(2,1fr)}
}

/* ═══ ESQUEMAS DE COMISION (Ayuda) ═══
   Una familia a la vez, en rejilla de dos columnas. Cada seccion cabe en una o
   dos pantallas: si hay que rodar 20,000px se pierde el hilo de lo que se busca.
   El serif italico solo en los titulos; el resto, la tipografia de Centinela. */
.esq{--esq-serif:"Instrument Serif",Georgia,"Times New Roman",serif;max-width:1240px}
.esq-load{padding:64px 0;text-align:center;color:var(--tx3);font-size:13px}

/* ── Portada compacta: no debe empujar el contenido fuera de pantalla ── */
.esq-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;
  flex-wrap:wrap;padding:2px 0 18px;border-bottom:1px solid var(--bd);margin-bottom:18px}
.esq-kicker{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.16em;
  color:var(--indigo);margin-bottom:6px}
.esq-hero h2{font-family:var(--esq-serif);font-size:clamp(26px,3vw,34px);font-weight:400;
  line-height:1.05;letter-spacing:-.015em;color:var(--tx);margin-bottom:5px}
.esq-hero h2 em{font-style:italic;color:var(--tx3)}
.esq-sub-h{font-size:12px;line-height:1.5;color:var(--tx2);max-width:60ch}
.esq-stats{display:flex;gap:0;flex:none}
.esq-stats>div{padding:0 18px;border-left:1px solid var(--bd)}
.esq-stats>div:first-child{border-left:0}
.esq-stats b{display:block;font-size:20px;font-weight:600;line-height:1.1;color:var(--tx);
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.esq-stats b.ok{color:#1a7f37}
.esq-stats b.falta{color:#8a5200}
.esq-stats span{display:block;margin-top:2px;font-size:9.5px;color:var(--tx3);
  text-transform:uppercase;letter-spacing:.05em}

.esq-aviso{display:flex;gap:12px;align-items:flex-start;margin-bottom:18px;
  padding:11px 14px;border-radius:10px;background:var(--amber-s);
  border-left:3px solid var(--amber);font-size:12px;line-height:1.55;color:var(--tx2)}
.esq-aviso-t{flex:none;font-size:9px;font-weight:800;text-transform:uppercase;
  letter-spacing:.08em;color:#8a5200;padding-top:2px}
.esq-aviso b{color:var(--tx)}

/* ── Indice fijo: es el timon, siempre visible ── */
.esq-cols{display:grid;grid-template-columns:212px 1fr;gap:32px;align-items:start}
.esq-idx{position:sticky;top:74px;max-height:calc(100vh - 96px);overflow-y:auto;padding-right:2px}
.esq-idx-t{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;
  color:var(--tx3);margin:16px 0 5px;padding-left:10px}
.esq-idx-b{display:flex;width:100%;align-items:center;gap:8px;padding:7px 10px;
  border:0;border-left:2px solid transparent;border-radius:8px;background:none;
  font:inherit;font-size:12.5px;line-height:1.3;color:var(--tx2);text-align:left;cursor:pointer}
.esq-idx-b span{flex:1;min-width:0}
.esq-idx-b b{flex:none;font-size:10.5px;font-weight:600;color:var(--tx3);font-variant-numeric:tabular-nums}
.esq-idx-b:hover{background:var(--hover);color:var(--tx)}
.esq-idx-b.on{background:var(--indigo-s);border-left-color:var(--indigo);color:var(--indigo);font-weight:600}
.esq-idx-b.on b{color:var(--indigo)}
.esq-idx-b.falta b{color:#8a5200}
.esq-idx-b:focus-visible{outline:none;box-shadow:0 0 0 3px var(--indigo-s)}

.esq-buscar{display:flex;align-items:center;gap:7px;padding:7px 10px;margin-bottom:2px;
  border:1px solid var(--bd);border-radius:9px;background:var(--card)}
.esq-buscar:focus-within{border-color:var(--indigo);box-shadow:0 0 0 3px var(--indigo-s)}
.esq-buscar svg{color:var(--tx3);flex:none}
.esq-buscar input{flex:1;min-width:0;border:0;background:none;outline:none;
  font:inherit;font-size:12.5px;color:var(--tx)}
.esq-buscar input::placeholder{color:var(--tx3)}
.esq-buscar button{border:0;background:none;cursor:pointer;color:var(--tx3);font-size:17px;line-height:1}
.esq-buscar button:hover{color:var(--tx)}

/* ── Contenido ── */
.esq-doc{min-width:0}
.esq-doc-h{display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  padding-bottom:9px;margin-bottom:4px;border-bottom:2px solid var(--tx)}
.esq-doc-h h3{font-family:var(--esq-serif);font-size:25px;font-weight:400;font-style:italic;
  letter-spacing:-.01em;line-height:1.15;color:var(--tx)}
.esq-doc-h span{flex:none;font-size:10.5px;color:var(--tx2);font-family:var(--mono,monospace)}
.esq-fam-nota{margin:14px 0 0;padding:10px 13px;border-radius:9px;background:var(--hover);
  font-size:12px;line-height:1.55;color:var(--tx2)}
.esq-sub{display:flex;align-items:baseline;gap:8px;margin:22px 0 10px;
  font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--tx3)}
.esq-sub b{font-weight:700;color:var(--tx2)}
.esq-sub small{font-size:10.5px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--tx3)}
.esq-sub.inc,.esq-sub.inc b{color:#8a5200}

/* Rejilla: dos columnas parten el recorrido a la mitad */
.esq-rej{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));
  gap:0 26px;align-items:start}
.esq-i{padding:13px 0;border-top:1px solid var(--bd);min-width:0}
.esq-i.ancha{grid-column:1/-1}
.esq-i.es-inc,.esq-i.falta{border-left:2px solid var(--amber);padding-left:13px}
.esq-i>header{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:5px}
.esq-i h4{font-size:13px;font-weight:650;letter-spacing:-.005em;color:var(--tx)}
.esq-i-fam{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--tx3)}
.esq-tag{padding:2px 7px;border-radius:99px;font-size:9px;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.esq-tag.ok{background:var(--green-s);color:#1a7f37}
.esq-tag.falta{background:var(--amber-s);color:#8a5200;cursor:help}
/* El pago es lo unico grande de la ficha: es el dato que se viene a buscar */
.esq-i-pago{font-size:15px;font-weight:600;line-height:1.35;color:var(--indigo);
  letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin-bottom:5px}
.esq-i-regla{font-size:12px;line-height:1.55;color:var(--tx2)}
.esq-i-map{display:flex;align-items:center;gap:6px;margin-top:7px}
.esq-i-map span{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--tx3)}
.esq-i-map code{font-family:var(--mono,monospace);font-size:10.5px;color:var(--tx2);
  background:var(--hover);padding:2px 6px;border-radius:5px}

/* ── Tablas ── */
.esq-t{margin-top:12px}
.esq-t.suelta{margin:0 0 22px}
.esq-t figcaption{margin-bottom:7px}
.esq-t-tit{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;color:var(--tx3)}
.esq-t-nota{display:block;margin-top:3px;font-size:11px;line-height:1.5;color:var(--tx2);max-width:74ch}
.esq-t-wrap{overflow-x:auto;border:1px solid var(--bd);border-radius:9px;background:var(--card)}
.esq-t table{width:100%;border-collapse:collapse}
.esq-t th{position:static;padding:7px 12px;text-align:left;font-size:9.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;color:var(--tx3);
  background:var(--hover);border-bottom:1px solid var(--bd);white-space:nowrap}
.esq-t td{padding:6px 12px;font-size:12px;color:var(--tx2);
  border-bottom:1px solid var(--bd);white-space:nowrap}
.esq-t tr:last-child td{border-bottom:0}
.esq-t .r{text-align:right}
.esq-t .m{font-variant-numeric:tabular-nums}
/* Vigente en negro, la del piloto 2024 apagada: se ve de un vistazo cual rige */
.esq-t th.viva{color:var(--indigo)}
.esq-t td.viva{color:var(--tx);font-weight:600}
.esq-t th.vieja,.esq-t td.vieja{color:var(--tx2);font-weight:400}
.esq-t td:first-child{color:var(--tx);font-weight:500;white-space:normal;min-width:170px}
.esq-idem::before{content:"·";color:var(--bd)}

.esq-nada{padding:32px 0;font-size:13px;line-height:1.6;color:var(--tx2)}
.esq-nada b{color:var(--tx)}
.esq-nada i{font-style:normal;font-family:var(--mono,monospace);font-size:12px;color:var(--tx)}

@media (max-width:1080px){ .esq-rej{grid-template-columns:1fr} }
@media (max-width:900px){
  .esq-cols{grid-template-columns:1fr;gap:0}
  .esq-idx{position:static;max-height:none;display:flex;flex-wrap:wrap;gap:5px;
    padding:0 0 16px;margin-bottom:16px;border-bottom:1px solid var(--bd)}
  .esq-buscar{width:100%;margin-bottom:6px}
  .esq-idx-t{width:100%;margin:8px 0 2px;padding-left:0}
  .esq-idx-b{width:auto;border:1px solid var(--bd);border-left-width:1px;
    border-radius:99px;padding:5px 11px}
  .esq-idx-b.on{border-color:var(--indigo)}
  .esq-hero{gap:16px}
  .esq-stats>div{padding:0 14px}
}

/* En oscuro el acento de marca cae a ~2:1 sobre la tarjeta y el pago es justo
   el dato que se viene a leer; se aclara solo en esta vista. */
[data-theme="dark"] .esq-i-pago,[data-theme="dark"] .esq-kicker,
[data-theme="dark"] .esq-t th.viva{color:#FF8A95}
[data-theme="dark"] .esq-idx-b.on{color:#FF8A95;border-left-color:#FF8A95}
[data-theme="dark"] .esq-idx-b.on b{color:#FF8A95}
[data-theme="dark"] .esq-stats b.ok,[data-theme="dark"] .esq-tag.ok{color:#5BD48A}
[data-theme="dark"] .esq-stats b.falta,[data-theme="dark"] .esq-tag.falta,
[data-theme="dark"] .esq-aviso-t,[data-theme="dark"] .esq-idx-b.falta b,
[data-theme="dark"] .esq-sub.inc,[data-theme="dark"] .esq-sub.inc b{color:#F5B544}

/* ── Ventana de planes (Renta Avanzada) ── */
.rap-nota{margin-bottom:18px;font-size:12.5px;line-height:1.6}
.rap-t{margin-bottom:22px}
.rap-t:last-child{margin-bottom:0}
.rap-t figcaption{margin-bottom:8px}
.rap-t figcaption b{display:block;font-size:12.5px;font-weight:650;color:var(--tx)}
.rap-t figcaption span{display:block;margin-top:3px;font-size:11.5px;line-height:1.5;color:var(--tx2)}
.rap-t th{position:static;padding:8px 13px;font-size:9.5px}
.rap-t td{padding:7px 13px;font-size:12.5px;color:var(--tx2);white-space:nowrap}
.rap-t td:first-child{color:var(--tx);font-weight:600}
/* Lo cobrado se compara contra la renta CON impuestos: esa columna manda */
.rap-t th.viva{color:var(--indigo)}
.rap-t td.viva{color:var(--tx);font-weight:650;background:var(--indigo-s)}
.rap-t th.base,.rap-t td.base{color:var(--tx2)}
[data-theme="dark"] .rap-t th.viva{color:#FF8A95}

/* ── Análisis por plan (Renta Avanzada) ── */
.rap-lentes{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.rap-ayuda{
  margin-bottom:14px;padding:9px 13px;border-radius:9px;background:var(--hover);
  font-size:12px;line-height:1.55;color:var(--tx2);
}
.rap-ayuda b{color:var(--tx);font-variant-numeric:tabular-nums}
.rap-fila{cursor:pointer}
.rap-nom{font-weight:600;color:var(--tx);font-size:12.5px}
.rap-pct{font-variant-numeric:tabular-nums;color:var(--tx2)}
.rap-pct.ok{color:#1a7f37;font-weight:600}
.rap-pct.mal{color:var(--rose);font-weight:600}
.rap-pct.sim{color:var(--amber);font-weight:600}
[data-theme="dark"] .rap-pct.ok{color:#5BD48A}
[data-theme="dark"] .rap-pct.sim{color:#F5B544}

/* ── Detalle de un plan (Renta Avanzada) ── */
.rpd-kpis{display:flex;flex-wrap:wrap;gap:0;margin-bottom:16px;
  border:1px solid var(--bd);border-radius:11px;overflow:hidden;background:var(--card)}
.rpd-k{flex:1 1 120px;padding:11px 14px;border-left:1px solid var(--bd)}
.rpd-k:first-child{border-left:0}
.rpd-k span{display:block;font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--tx2)}
.rpd-k b{display:block;margin-top:3px;font-size:17px;font-weight:600;color:var(--tx);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.rpd-k b.ok{color:#1a7f37}
.rpd-k b.mal{color:var(--rose)}
.rpd-k b.amb{color:var(--amber)}
.rpd-nota{margin-bottom:16px;font-size:12px;line-height:1.6}

.rpd-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px 26px;margin-bottom:18px}
.rpd-cols h4,.rpd-h{font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.08em;color:var(--tx3);margin-bottom:8px}
.rpd-h{margin:20px 0 8px;display:flex;align-items:baseline;gap:7px}
/* Barra proporcional: se compara de un vistazo sin leer numeros */
.rpd-b{display:flex;align-items:center;gap:9px;margin-bottom:5px;font-size:11.5px}
.rpd-b-k{flex:0 0 40%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx2)}
.rpd-b-l{flex:1;height:7px;border-radius:99px;background:var(--hover);overflow:hidden}
.rpd-b-l i{display:block;height:100%;border-radius:99px;background:var(--indigo);opacity:.75}
.rpd-b-l i.pago{background:var(--amber)}
.rpd-b b{flex:none;font-size:11px;color:var(--tx);font-variant-numeric:tabular-nums;min-width:26px;text-align:right}
.rpd-limpio{padding:18px 0;font-size:12.5px;color:var(--tx2)}
[data-theme="dark"] .rpd-k b.ok{color:#5BD48A}
[data-theme="dark"] .rpd-k b.amb{color:#F5B544}

/* ── Detalle de una operación (Renta Avanzada) ── */
.raop-h{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  color:var(--tx2);margin:18px 0 8px}
.raop-nota{margin-top:12px;font-size:12px;line-height:1.6}
.raop-tags{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:0;margin-top:18px;border:1px solid var(--bd);border-radius:11px;overflow:hidden;background:var(--card)}
.raop-tags>div{padding:10px 13px;border-left:1px solid var(--bd)}
.raop-tags>div:first-child{border-left:0}
.raop-tags span{display:block;font-size:9.5px;text-transform:uppercase;
  letter-spacing:.05em;color:var(--tx2)}
.raop-tags b{display:block;margin-top:2px;font-size:12.5px;font-weight:600;color:var(--tx)}
.raop-est{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;color:var(--tx2)}
.raop-est .ra-est{max-width:150px}

/* Meses adelantados: 2 o más es lo que hay que mirar; 1 es lo normal */
.ra-meses{
  display:inline-block;min-width:20px;padding:1px 6px;border-radius:99px;
  background:var(--indigo-s);color:var(--indigo);
  font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;
}
[data-theme="dark"] .ra-meses{color:#FF8A95}

/* Qué descontó Claro: distingue de un vistazo si la comparación es contra la
   renta o contra el inicial del equipo financiado */
.ra-qd{
  display:inline-block;padding:2px 8px;border-radius:99px;
  font-size:10px;font-weight:650;letter-spacing:.02em;white-space:nowrap;
}
.ra-qd.renta{background:var(--indigo-s);color:var(--indigo)}
.ra-qd.fin{background:var(--amber-s);color:#8a5200}
.ra-qd.na{background:var(--hover);color:var(--tx2)}
[data-theme="dark"] .ra-qd.renta{color:#FF8A95}
[data-theme="dark"] .ra-qd.fin{color:#F5B544}
