@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700;900&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap');

:root {
  --navy:#0b1f35; --navy-mid:#112d4a; --navy-light:#1a4068;
  --gold:#c8982a; --gold-pale:#fdf5e4; --gold-dim:#8b6510; --gold-border:#e8d49a;
  --bg:#f3efe8; --bg-mid:#ede8df; --card:#ffffff;
  --paper:#fffdf8; --paper-warm:#fbf7ef; --surface-hairline:rgba(15,35,58,.10);
  --text:#18263a; --text-mid:#344054; --muted:#5d687c;
  --line:#e6e0d5; --line-mid:#d5cfc4;
  --danger:#b91c1c; --danger-bg:#fee2e2; --danger-mid:#fca5a5;
  --success:#15803d; --success-bg:#dcfce7;
  --warn:#92400e; --warn-bg:#fef3c7;
  --orange:#9a3412; --orange-bg:#ffedd5;
  --blue-bg:#dbeafe; --blue-text:#1e40af;
  --sidebar-w:260px; --topbar-h:62px;
  --r:10px; --r-lg:14px; --r-xl:18px;
  --icon-sm:14px; --icon-md:16px; --icon-lg:20px;
  --shadow-sm:0 1px 2px rgba(11,31,53,.04),0 1px 8px rgba(11,31,53,.05);
  --shadow-md:0 8px 24px rgba(11,31,53,.10),0 2px 5px rgba(11,31,53,.05);
  --shadow-lg:0 18px 60px rgba(11,31,53,.20);
  --shadow-folio:0 1px 1px rgba(11,31,53,.03),0 10px 30px rgba(11,31,53,.08);
  --mobile-nav-h:64px;
  /* category colors */
  --cat-bienes:#b45309; --cat-bienes-bg:#fef3c7;
  --cat-clientes:#0369a1; --cat-clientes-bg:#e0f2fe;
  --cat-mediaciones:#6d28d9; --cat-mediaciones-bg:#ede9fe;
  --cat-otros:#374151; --cat-otros-bg:#f3f4f6;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{height:100%}
body{font-family:'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.55;height:100%}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#c8bfaf;border-radius:4px}
#app{display:flex;height:100vh;overflow:hidden}

/* ── SIDEBAR ── */
#sidebar{width:var(--sidebar-w);background:var(--navy);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;overflow-x:hidden;position:relative;z-index:10}
#sidebar::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg width='4' height='4' viewBox='0 0 4 4' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 3h1v1H1V3zm2-2h1v1H3V1z' fill='%23ffffff' fill-opacity='0.018'/%3E%3C/svg%3E");pointer-events:none}
.sb-logo{padding:28px 22px 22px;border-bottom:1px solid rgba(255,255,255,.07);flex-shrink:0}
.sb-logo-wordmark{font-family:'Playfair Display',Georgia,serif;font-weight:900;font-size:28px;color:var(--gold);letter-spacing:-1.5px;line-height:1}
.sb-logo-wordmark sup{font-size:11px;font-weight:700;letter-spacing:2px;color:rgba(200,152,42,.55);vertical-align:super;margin-left:1px}
.sb-logo-sub{font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.28);margin-top:5px}
.sb-nav{padding:14px 10px;flex:1}
.nav-label{font-size:9px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.2);padding:0 12px;margin:10px 0 4px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:rgba(255,255,255,.5);cursor:pointer;font-size:13px;font-weight:500;transition:background .17s,color .17s;margin-bottom:2px;position:relative;user-select:none}
.nav-item:hover{background:rgba(255,255,255,.06);color:rgba(255,255,255,.85)}
.nav-item.active{background:rgba(200,152,42,.14);color:var(--gold)}
.nav-item.active::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--gold);border-radius:0 3px 3px 0}
.nav-icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-badge{margin-left:auto;background:#ef4444;color:white;font-size:9px;font-weight:700;padding:2px 6px;border-radius:999px;min-width:18px;text-align:center;display:none}
.sb-divider{height:1px;background:rgba(255,255,255,.06);margin:4px 14px;flex-shrink:0}
.sb-actions{padding:12px 10px;flex-shrink:0}
.sb-btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;background:transparent;border:1px solid rgba(255,255,255,.1);border-radius:7px;color:rgba(255,255,255,.48);font-size:12px;font-weight:500;cursor:pointer;transition:all .18s;margin-bottom:6px;font-family:inherit;text-align:left}
.sb-btn:hover{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.82)}
.sb-btn-gcal{background:linear-gradient(135deg,#1a73e8,#0d5dbf);color:#fff;border:none;justify-content:center;gap:8px}
.sb-btn-gcal:hover{background:linear-gradient(135deg,#1e7fee,#1060cc);color:#fff;border:none}
.sb-logo-version{font-size:9px;color:rgba(255,255,255,.18);margin-top:4px;letter-spacing:.05em;font-family:monospace}
.sb-user{display:flex;align-items:center;gap:10px;padding:14px 18px;border-top:1px solid rgba(255,255,255,.07);flex-shrink:0}
.sb-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--gold),var(--gold-dim));display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-size:13px;font-weight:700;color:var(--navy);flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.sb-user-name{font-size:12px;font-weight:600;color:rgba(255,255,255,.82);line-height:1.3}
.sb-user-role{font-size:10px;color:rgba(255,255,255,.32);margin-top:1px}

/* ── MAIN ── */
#main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
#topbar{min-height:var(--topbar-h);background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:9px 22px;gap:12px;flex-shrink:0}
.topbar-title{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-head{flex:1;min-width:0}
.topbar-sub{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
@media(max-width:760px){.topbar-sub{display:none}}
.search-pill{display:flex;align-items:center;gap:8px;padding:7px 14px;background:var(--bg);border:1px solid var(--line-mid);border-radius:8px;color:var(--muted);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .17s;white-space:nowrap}
.search-pill:hover{border-color:var(--navy-light);color:var(--text);background:white}
.kbd{background:var(--line);border:1px solid var(--line-mid);border-radius:3px;padding:1px 5px;font-size:10px;font-family:monospace;color:#4e5766}
#topbar-actions{display:flex;gap:8px;align-items:center}
#content{flex:1;overflow-y:auto;padding:24px}
.view{display:none}
.view.active{display:block;animation:fadeUp .22s ease both}
@keyframes fadeUp{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}

/* ── BUTTONS ── */
.btn-primary{background:var(--navy);color:white;border:none;padding:8px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:inherit;transition:background .17s;white-space:nowrap}
.btn-primary:hover{background:var(--navy-mid)}
.btn-outline{background:var(--card);color:var(--text-mid);border:1px solid var(--line-mid);padding:7px 14px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:inherit;transition:all .17s;white-space:nowrap}
.btn-outline:hover{background:var(--bg);border-color:#b0a898}
.btn-sm{padding:5px 11px;font-size:11px;border-radius:6px}
.btn-ghost{background:transparent;border:none;color:var(--muted);padding:4px 7px;border-radius:6px;cursor:pointer;font-size:15px;line-height:1;transition:all .15s;font-family:inherit}
.btn-ghost:hover{color:var(--navy);background:var(--bg)}
.btn-ghost.ghost-red:hover{color:var(--danger);background:var(--danger-bg)}
.btn-ghost.ghost-gold:hover{color:var(--gold-dim);background:var(--gold-pale)}
.btn-ghost.ghost-navy:hover{color:var(--navy);background:var(--bg)}
.btn-cancel{background:var(--card);border:1px solid var(--line);color:var(--muted);padding:8px 16px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .17s}
.btn-cancel:hover{background:var(--bg);color:var(--text)}
/* Secundario dorado: variante de .btn-outline para acciones de apoyo (Exportar, Configuración, …) */
.btn-gold{border-color:var(--gold-border);color:var(--gold-dim)}
.btn-gold:hover{background:var(--gold-pale);border-color:var(--gold)}
/* Destructivo: acciones irreversibles */
.btn-danger{background:var(--card);border:1px solid var(--danger-mid);color:var(--danger);padding:7px 14px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:inherit;transition:all .17s;white-space:nowrap}
.btn-danger:hover{background:var(--danger-bg);border-color:var(--danger)}
/* Anillo de foco unificado para todos los botones (accesibilidad + acabado premium) */
.btn-primary:focus-visible,.btn-outline:focus-visible,.btn-ghost:focus-visible,.btn-cancel:focus-visible,.btn-gold:focus-visible,.btn-danger:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.lex-icon{width:1em;height:1em;display:inline-block;vertical-align:-.16em;flex-shrink:0;color:currentColor}
.icon-label{display:inline-flex;align-items:center;gap:6px}
.btn-primary .lex-icon,.btn-outline .lex-icon,.btn-ghost .lex-icon,.btn-cancel .lex-icon{font-size:var(--icon-md)}

/* ── SPINNER / ESTADO OCUPADO UNIFICADO ──
   Un único spinner en línea (.lex-spin) y un único estado de botón ocupado
   (.is-busy) para que todas las esperas se vean y se sientan igual. */
.lex-spin{display:inline-block;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:lexSpin .6s linear infinite;vertical-align:-.15em;flex-shrink:0}
@keyframes lexSpin{to{transform:rotate(360deg)}}
button.is-busy{cursor:progress}
button.is-busy .lex-spin{width:14px;height:14px;border-width:2px}
.btn-sm.is-busy .lex-spin{width:12px;height:12px}
.lex-busy-label{margin-left:7px}
/* Transición suave de opacidad al pasar a deshabilitado/ocupado (estado atenuado
   se define más abajo en "Button loading state"). */
.btn-primary,.btn-outline,.btn-gold,.btn-danger,.btn-cancel,.btn-ghost{transition:background .17s,border-color .17s,color .17s,opacity .17s}
@media (prefers-reduced-motion:reduce){.lex-spin{animation-duration:1.5s}}

/* ── MICRO-FEEDBACK DE ACCIONES RÁPIDAS ──
   Pulso al hacer clic (scale-down suave) y estado transitorio de éxito
   (.is-done) con check, para acciones en segundo plano sin screen loader. */
.btn-primary:active,.btn-outline:active,.btn-gold:active,.btn-ghost:active{transform:scale(.965)}
.btn-primary,.btn-outline,.btn-gold,.btn-ghost{transition:background .17s,border-color .17s,color .17s,opacity .17s,transform .12s ease}
button.is-done{pointer-events:none;opacity:.92}
.lex-done-mark{display:inline-flex;align-items:center;justify-content:center;color:var(--success,#2e9e5b);animation:lexDonePop .28s cubic-bezier(.34,1.56,.64,1)}
@keyframes lexDonePop{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.lex-done-mark{animation:none}.btn-primary:active,.btn-outline:active,.btn-gold:active,.btn-ghost:active{transform:none}}

/* ── SOFT REFRESH GLOBAL (topbar) ── */
.topbar-refresh{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-left:8px;padding:0;background:var(--bg);border:1px solid var(--line-mid);border-radius:8px;color:var(--muted);cursor:pointer;transition:all .17s;flex-shrink:0}
.topbar-refresh:hover{border-color:var(--navy-light);color:var(--text);background:white}
.topbar-refresh.is-refreshing{cursor:progress;opacity:.75}
.topbar-refresh.is-refreshing svg{animation:lexSpin .8s linear infinite}

/* Indicador de guardado en segundo plano (LEX.dom.saveStatus) */
.lex-save-status{margin-left:10px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.01em;white-space:nowrap;flex-shrink:0;border:1px solid var(--line-mid);background:var(--bg);color:var(--muted)}
.lex-save-status.is-guardando{color:var(--navy);border-color:var(--navy-light)}
.lex-save-status.is-guardado{color:var(--success);border-color:var(--success);background:var(--success-bg)}
.lex-save-status.is-error{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}

/* ── CARDS ── */
.card{background:var(--card);border-radius:var(--r);border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.card-header{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}
.card-header h3{font-size:12px;font-weight:700;color:var(--text-mid);text-transform:uppercase;letter-spacing:.05em}

/* ── SHARED MODULE LAYOUT ── */
.module-shell{display:flex;flex-direction:column;gap:16px}
.module-title-row{display:flex;align-items:center;gap:10px;font-family:'Playfair Display',serif;font-size:20px;font-weight:800;color:var(--navy)}
.module-subtitle{font-size:12px;color:var(--muted);line-height:1.55;margin-top:4px;max-width:720px}
.module-grid{display:grid;gap:14px}
.module-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.module-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-folio)}
.module-card.pad{padding:16px 18px}
.module-card.compact{padding:12px}
.module-section-title{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-mid);margin-bottom:10px}
.module-action-bar{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:12px}
.module-row{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-sm)}
.module-row-main{flex:1;min-width:0}
.module-row-meta{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px}
.module-status-pill{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;background:var(--gold-pale);color:var(--gold-dim);font-size:11px;font-weight:700}
.module-help-card{display:flex;gap:12px;padding:14px;border:1px solid var(--line);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--card),rgba(255,253,249,.72));box-shadow:var(--shadow-sm)}
.module-help-card.compact{padding:12px}
.module-help-icon{width:34px;height:34px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--gold-pale);color:var(--gold-dim);flex-shrink:0}
.module-help-title{font-size:13px;font-weight:800;color:var(--text)}
.module-help-text{font-size:12px;color:var(--muted);line-height:1.5;margin-top:2px}
.module-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-lg);background:rgba(255,255,255,.72);box-shadow:var(--shadow-sm)}
.module-toolbar-left,.module-toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.module-filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.module-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--text-mid);font-size:12px;font-weight:700;cursor:pointer;transition:all .16s}
.module-chip:hover{border-color:var(--gold-border);background:var(--gold-pale);color:var(--gold-dim)}
.module-chip.active{border-color:var(--gold-border);background:var(--gold-pale);color:var(--gold-dim)}
.module-list{display:flex;flex-direction:column;gap:10px}
.module-empty{padding:34px 20px;text-align:center;border:1px dashed var(--line-mid);border-radius:var(--r-lg);background:rgba(255,255,255,.56);color:var(--muted)}
.module-empty-icon{width:44px;height:44px;margin:0 auto 10px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--gold-pale);color:var(--gold-dim)}
.module-empty-title{font-size:14px;font-weight:800;color:var(--text);margin-bottom:3px}
.module-empty-sub{font-size:12px;color:var(--muted);line-height:1.5}
.module-side-panel{border:1px solid var(--line);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--card),rgba(255,253,249,.72));box-shadow:var(--shadow-folio);overflow:hidden}
.module-side-panel-head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}
.module-side-panel-body{padding:16px}
.module-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.module-metric{padding:14px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-sm)}
.module-metric-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.module-metric-value{font-family:'Playfair Display',serif;font-size:24px;font-weight:800;color:var(--navy);line-height:1.1;margin-top:4px}
.module-metric-sub{font-size:11px;color:var(--muted);margin-top:4px}
.compact-tabs.tabs{border-bottom:none;margin-bottom:0;gap:4px}
.compact-tabs .tab{margin-bottom:0;border:1px solid transparent;border-radius:999px;padding:6px 12px;background:transparent}
.compact-tabs .tab.active{border-color:var(--gold-border);background:var(--gold-pale);color:var(--gold-dim)}
/* .global-side-panel (cajón fijo a la derecha) se retiró junto con el detalle de
   gestión, su único usuario: el detalle vive ahora en un modal centrado como el
   resto del sistema. La cabecera sigue en uso en las fases de Consulta CFN. */
.global-side-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
@media(max-width:900px){.module-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.module-grid.two{grid-template-columns:1fr}}
@media(max-width:640px){.module-metric-grid{grid-template-columns:1fr}.module-toolbar{align-items:stretch}.module-toolbar-left,.module-toolbar-right{width:100%}.module-toolbar-right>*{flex:1}}
.cfn-generate-panel{overflow:hidden}
.cfn-generate-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:14px}
.proc-manual-card{margin-top:12px;padding:12px;border:1px dashed rgba(200,152,42,.35);border-radius:var(--r-lg);background:rgba(255,253,249,.62)}
.proc-manual-form{margin-top:12px}
@media(max-width:720px){.module-grid.two{grid-template-columns:1fr}.module-row{align-items:flex-start;flex-direction:column}.module-action-bar{justify-content:stretch}.module-action-bar>*{flex:1}.span-2{grid-column:span 1}}

/* ── BADGES & DOTS ── */
.badge{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;white-space:nowrap}
.b-green{background:var(--success-bg);color:var(--success)}
.b-yellow{background:var(--warn-bg);color:var(--warn)}
.b-orange{background:var(--orange-bg);color:var(--orange)}
.b-red{background:var(--danger-bg);color:var(--danger)}
.b-gray{background:#f1f5f9;color:#475569}
.b-navy{background:var(--blue-bg);color:var(--blue-text)}
.b-gold{background:var(--gold-pale);color:var(--gold-dim)}
.b-bienes{background:var(--cat-bienes-bg);color:var(--cat-bienes)}
.b-clientes{background:var(--cat-clientes-bg);color:var(--cat-clientes)}
.b-mediaciones{background:var(--cat-mediaciones-bg);color:var(--cat-mediaciones)}
.b-otros{background:var(--cat-otros-bg);color:var(--cat-otros)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}
.d-red{background:#ef4444}.d-orange{background:#f97316}.d-yellow{background:#eab308}.d-green{background:#22c55e}.d-gray{background:#94a3b8}

/* ── TABS ── */
.tabs{display:flex;border-bottom:2px solid var(--line);margin-bottom:18px;flex-wrap:wrap}
.tab{padding:9px 18px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .17s;user-select:none}
.tab:hover{color:var(--text)}
.tab.active{color:var(--navy);border-bottom-color:var(--gold)}

/* ── TABLES ── */
.table-wrap{overflow-x:auto;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow-sm)}
#cal-list table { table-layout: fixed; width: 100%; min-width: 680px; }
#cal-list table th:nth-child(1) { width: 36px; }
#cal-list table th:nth-child(2) { width: 22%; } /* Unidad o Sala */
#cal-list table th:nth-child(3) { width: 13%; } /* Causa */
#cal-list table th:nth-child(4) { width: 12%; } /* Concepto */
#cal-list table th:nth-child(5) { width: 14%; } /* Accionante */
#cal-list table th:nth-child(6) { width: 80px; } /* Fecha */
#cal-list table th:nth-child(7) { width: 50px; } /* Hora */
#cal-list table th:nth-child(8) { width: 76px; } /* Modalidad */
#cal-list table th:nth-child(9) { width: auto; } /* Observación */
#cal-list table th:nth-child(10) { width: 72px; } /* Acciones */
#cal-list table td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#cal-list table td:nth-child(2) { white-space: normal; word-break: break-word; } /* Sala puede wrappear */
table{width:100%;border-collapse:collapse}
thead th{background:var(--bg);color:var(--muted);font-weight:700;text-align:left;padding:9px 13px;font-size:10px;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);white-space:nowrap}
tbody td{padding:11px 13px;border-bottom:1px solid var(--line);color:var(--text-mid);vertical-align:middle}
tbody tr{transition:background .13s}
tbody tr:hover{background:rgba(200,152,42,.06)}
tbody tr:last-child td{border-bottom:none}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover td{background:#faf7f1}

/* ── FORMS ── */
.form-grid{display:grid;gap:16px}
.fg-2{grid-template-columns:1fr 1fr}
.fg-3{grid-template-columns:1fr 1fr 1fr}
.fg-4{grid-template-columns:1fr 1fr 1fr 1fr}
.form-group{display:flex;flex-direction:column;gap:5px}
.span-2{grid-column:span 2}
.span-3{grid-column:span 3}
.form-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.form-label.req::after{content:' *';color:var(--danger)}
input,select,textarea{width:100%;padding:9px 11px;border:1.5px solid #d0c9bc;border-radius:7px;font-family:inherit;font-size:13px;color:var(--text);background:white;transition:border-color .18s,box-shadow .18s;appearance:auto}
input,select{height:38px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--navy-light);box-shadow:0 0 0 3px rgba(26,64,104,.12)}
textarea{height:auto;resize:vertical}

/* ── MODAL ── */
#overlay{position:fixed;inset:0;background:rgba(8,20,36,.58);backdrop-filter:blur(4px);z-index:200;display:none;align-items:center;justify-content:center;padding:16px}
#overlay.open{display:flex}
.modal{background:var(--card);border-radius:var(--r-lg);width:min(600px,100%);max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);display:none;animation:modalIn .22s cubic-bezier(.34,1.2,.64,1) both}
.modal-lg{width:min(700px,100%)}
.modal-xl{width:min(900px,100%)}
@keyframes modalIn{from{opacity:0;transform:scale(.93) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal-head{padding:22px 24px 0;display:flex;align-items:flex-start;justify-content:space-between}
.modal-title{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:var(--navy)}
.modal-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted);padding:2px 6px;line-height:1;border-radius:4px;transition:all .14s}
.modal-close:hover{color:var(--text);background:var(--bg)}
.modal-body{padding:20px 24px}
.modal-foot{padding:14px 24px 22px;display:flex;justify-content:flex-end;gap:10px}
.modal-search{width:min(620px,100%);border-radius:var(--r-lg);overflow:hidden}
.search-box{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line);background:white}
.search-box input{border:none;font-size:15px;height:28px;padding:0;background:transparent;font-weight:400}
.search-box input:focus{box-shadow:none;border-color:transparent}
.search-results{max-height:460px;overflow-y:auto;background:white}
.sr-group{padding:8px 18px 4px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);background:#f8f4ed;border-bottom:1px solid var(--line)}
.sr-item{padding:11px 18px;cursor:pointer;border-bottom:1px solid var(--line);transition:background .12s}
.sr-item:hover{background:#faf7f1}
.sr-item:last-child{border-bottom:none}
.sr-item-title{font-weight:700;font-size:13px;color:var(--text)}
.sr-item-sub{font-size:11px;color:var(--muted);margin-top:2px}
.sr-empty{padding:36px 20px;text-align:center;color:var(--muted);font-size:13px}

/* ── CASE DRAWER (floating centered panel) ── */
#drawer-backdrop{position:fixed;inset:0;background:rgba(8,20,36,.58);backdrop-filter:blur(4px);z-index:150;display:none}
#drawer-backdrop.open{display:block;animation:fadeIn .2s ease both}
#case-drawer{position:fixed;top:50%;left:50%;transform:translate(-50%,-48%) scale(.96);width:min(760px,calc(100vw - 40px));height:min(880px,calc(100vh - 48px));background:var(--card);border-radius:var(--r-xl);overflow:hidden;visibility:hidden;opacity:0;transition:transform .28s cubic-bezier(.34,1.2,.64,1),opacity .22s ease,visibility 0s linear .28s;z-index:151;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
#case-drawer.open{transform:translate(-50%,-50%) scale(1);visibility:visible;opacity:1;transition:transform .28s cubic-bezier(.34,1.2,.64,1),opacity .22s ease,visibility 0s}
.drawer-header{background:var(--navy);padding:20px 22px 16px;flex-shrink:0;position:relative}
.drawer-header::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg width='4' height='4' viewBox='0 0 4 4' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 3h1v1H1V3zm2-2h1v1H3V1z' fill='%23ffffff' fill-opacity='0.025'/%3E%3C/svg%3E");pointer-events:none}
.drawer-case-num{font-family:monospace;font-size:11px;color:var(--gold);letter-spacing:.08em;margin-bottom:4px}
.drawer-case-actor{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:white;line-height:1.2;margin-bottom:8px}
.drawer-case-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.drawer-close{position:absolute;top:16px;right:16px;background:rgba(255,255,255,.12);border:none;width:32px;height:32px;border-radius:7px;color:rgba(255,255,255,.7);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .15s}
.drawer-close:hover{background:rgba(255,255,255,.22);color:white}
.drawer-tabs{display:flex;border-bottom:1px solid var(--line);flex-shrink:0;background:white;padding:0 4px;align-items:stretch}
.drawer-tab-slot{display:flex;align-items:center;gap:4px}
.drawer-tab{padding:11px 16px;font-size:12px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;white-space:nowrap;user-select:none}
.drawer-tab:hover{color:var(--text)}
.drawer-tab.active{color:var(--navy);border-bottom-color:var(--gold)}
.drawer-body{flex:1;overflow-y:auto;padding:20px}
.drawer-footer{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:8px;flex-shrink:0}
.drawer-footer-main{display:flex;gap:8px;flex-wrap:wrap}
.drawer-delete-btn{margin-left:auto;border-color:var(--danger-mid)!important;color:var(--danger)!important}

/* ── MOVIMIENTOS TIMELINE ── */
.mov-input-area{background:var(--bg);border-radius:var(--r);padding:14px;margin-bottom:18px;border:1px solid var(--line)}
.mov-input-area textarea{border-radius:7px;resize:vertical;min-height:80px}
.mov-timeline{position:relative}
.mov-timeline::before{content:'';position:absolute;left:14px;top:8px;bottom:8px;width:2px;background:var(--line)}
.mov-item{display:flex;gap:14px;padding:10px 0;position:relative}
.mov-dot{width:30px;height:30px;border-radius:50%;background:var(--navy);border:3px solid var(--bg);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:11px;color:var(--gold);z-index:1}
.mov-content{flex:1;min-width:0}
.mov-text{font-size:13px;color:var(--text);line-height:1.5;margin-bottom:4px}
.mov-time{font-size:10px;color:var(--muted)}
.mov-empty{text-align:center;padding:30px;color:var(--muted);font-size:12px}

/* ── DRAWER DETAIL FIELDS ── */
.det-field{margin-bottom:14px}
.det-label{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:3px}
.det-value{font-size:13px;color:var(--text);line-height:1.5}
.det-value.mono{font-family:monospace;font-weight:700;color:var(--navy-light)}
.det-textarea{font-size:12px;color:var(--text-mid);line-height:1.6;background:var(--bg);border-radius:7px;padding:10px 12px;max-height:130px;overflow-y:auto;white-space:pre-wrap}

/* ── Detalle de gestión (panel lateral) ──
   Una gestión no es una ficha de atributos: es un plazo con una tarea encima.
   El panel abre con el plazo dicho en una frase y todo lo demás se subordina.
   El filete vertical retoma el riel de la minuta del dashboard, que es de donde
   suele venir el clic. */
.gvp-plazo{position:relative;padding:2px 0 2px 16px;margin-bottom:20px}
.gvp-plazo::before{content:'';position:absolute;left:0;top:3px;bottom:3px;width:3px;border-radius:2px;background:var(--navy-light)}
/* La voz display del modal es su título, como en todos los demás; el plazo lidera
   el cuerpo con peso y color, no con una segunda tipografía compitiendo. */
.gvp-plazo-frase{font-size:20px;font-weight:700;line-height:1.2;letter-spacing:-.01em;color:var(--navy)}
.gvp-plazo-fecha{margin-top:6px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums}
.gvp-plazo-vencido::before{background:var(--danger)}
.gvp-plazo-vencido .gvp-plazo-frase{color:var(--danger)}
.gvp-plazo-hoy::before{background:var(--gold)}
.gvp-plazo-hoy .gvp-plazo-frase{color:var(--gold-dim)}

.gvp-caso{padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.gvp-caso-parte{font-size:14.5px;font-weight:600;line-height:1.35;color:var(--text)}
.gvp-caso-num{margin-top:4px;font-size:12px;font-weight:700;letter-spacing:.05em;color:var(--navy-light);font-variant-numeric:tabular-nums}

.gvp-datos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;margin:0 0 18px}
.gvp-datos dt{margin-bottom:3px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.gvp-datos dd{margin:0;font-size:13px;color:var(--text);font-variant-numeric:tabular-nums}

.gvp-obs{margin-bottom:20px;padding:11px 13px;border-left:2px solid var(--line-mid);border-radius:0 7px 7px 0;background:var(--paper-warm);font-size:12.5px;line-height:1.6;color:var(--text-mid);white-space:pre-wrap}

/* Una sola fila, un solo lenguaje: navy para lo que hace avanzar el trabajo,
   contorno para lo secundario. */
.gvp-acciones{display:flex;flex-wrap:wrap;gap:9px;padding-top:16px;border-top:1px solid var(--line)}
/* Las secundarias se ciñen a su texto y la principal se queda con el espacio
   sobrante: el ancho es jerarquía, no reparto equitativo. */
.gvp-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:11px 15px;border-radius:9px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:background .16s,border-color .16s,color .16s}
.gvp-btn-principal{flex:1 1 auto;min-width:130px;background:var(--navy);color:#fff;border:1px solid var(--navy)}
.gvp-btn-principal:hover{background:var(--navy-mid)}
.gvp-btn-secundario{background:var(--card);color:var(--navy);border:1px solid var(--line-mid)}
.gvp-btn-secundario:hover{border-color:var(--navy-light);background:var(--paper-warm)}
.gvp-btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* Destructivo: fuera de la fila y sin peso de botón — se llega queriendo, no de paso. */
.gvp-eliminar{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:6px 0;background:none;border:none;font-family:inherit;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .16s}
.gvp-eliminar:hover{color:var(--danger)}
.gvp-eliminar:focus-visible{outline:2px solid var(--danger);outline-offset:2px;border-radius:4px}

@media (max-width:480px){
  .gvp-plazo-frase{font-size:18px}
  .gvp-datos{grid-template-columns:1fr;gap:12px}
  .gvp-btn{flex:1 1 100%}
}

/* ── DASHBOARD ── */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:14px;margin-bottom:22px}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s}
.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.stat-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.stat-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.stat-value{font-family:'Playfair Display',serif;font-size:38px;font-weight:700;color:var(--navy);line-height:1;margin-top:4px}
.stat-sub{font-size:11px;color:var(--muted);margin-top:3px}
.stat-card.sc-danger .stat-value{color:var(--danger)}
.stat-card.sc-warn .stat-value{color:#b45309}
.stat-card.sc-next .stat-value{font-family:'DM Sans',sans-serif;font-size:13px;line-height:1.4;margin-top:6px}
.dash-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;align-items:start}

/* ── LA MINUTA DEL DÍA (dashboard) ──
   Audiencias y términos en una sola columna cronológica. El riel vertical es
   la jornada; cada marca dice de qué tipo de compromiso se trata. */
.jor-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.jor-head-date{font-family:'Playfair Display',Georgia,serif;font-size:23px;font-weight:800;color:var(--navy);letter-spacing:-.4px;line-height:1.1}
.jor-head-date::first-letter,.jor-day-date::first-letter{text-transform:uppercase}
.jor-head-load{font-size:12.5px;font-weight:600;color:var(--muted)}
.jor-side{display:grid;gap:16px;align-content:start}
.jor-card{padding:0;overflow:hidden}

/* Franja de vencidos: el único elemento que puede gritar en esta pantalla */
.jor-alert{display:flex;align-items:center;gap:11px;margin-bottom:16px;padding:12px 15px;border-radius:var(--r);background:var(--danger-bg);border:1px solid var(--danger-mid);color:var(--danger);cursor:pointer;transition:box-shadow .18s,transform .18s}
.jor-alert:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(185,28,28,.14)}
.jor-alert:focus-visible{outline:2px solid var(--danger);outline-offset:2px}
.jor-alert svg{flex-shrink:0}
.jor-alert-txt{flex:1;font-size:12px;line-height:1.45;color:#7f1d1d}
.jor-alert-txt b{display:block;font-size:13px;font-weight:800;color:var(--danger);margin-bottom:1px}
.jor-alert-cta{flex-shrink:0;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:6px 12px;border-radius:999px;background:var(--danger);color:#fff}

/* Bloques por día */
.jor-day{border-bottom:1px solid var(--line)}
.jor-day:last-child{border-bottom:none}
.jor-day-head{display:flex;align-items:baseline;gap:10px;padding:13px 18px 10px;background:var(--paper-warm);border-bottom:1px solid var(--line)}
.jor-day.is-today .jor-day-head{background:linear-gradient(90deg,rgba(200,152,42,.13),rgba(200,152,42,.03))}
.jor-day-tag{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);background:var(--card);border:1px solid var(--line-mid);border-radius:999px;padding:3px 9px;flex-shrink:0}
.jor-day.is-today .jor-day-tag{color:var(--navy);background:var(--gold);border-color:var(--gold)}
.jor-day.is-tomorrow .jor-day-tag{color:var(--gold-dim);border-color:var(--gold-border);background:var(--gold-pale)}
.jor-day-date{font-size:12.5px;font-weight:700;color:var(--text-mid)}
.jor-day-count{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap}

/* Filas: el riel corre por la columna de la hora */
.jor-list{list-style:none;margin:0;padding:4px 0;position:relative}
.jor-list::before{content:'';position:absolute;left:98px;top:0;bottom:0;width:1px;background:var(--line)}
.jor-row{position:relative;display:grid;grid-template-columns:62px 16px 1fr;align-items:center;gap:0 10px;padding:11px 18px;cursor:pointer;transition:background .13s}
.jor-row:hover{background:var(--paper-warm)}
.jor-row:focus-visible{outline:2px solid var(--navy-light);outline-offset:-2px}
.jor-when{font-size:12.5px;font-weight:700;color:var(--navy);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.jor-gest .jor-when{font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--gold-dim)}
.jor-mark{position:relative;z-index:1;justify-self:center;width:11px;height:11px;border-radius:50%;background:var(--card);border:2px solid var(--navy-light);box-shadow:0 0 0 3px var(--card)}
.jor-mark-term{border-radius:2px;transform:rotate(45deg);border-color:var(--gold);background:var(--gold-pale)}
.jor-day.is-today .jor-mark-aud{background:var(--navy);border-color:var(--navy)}
.jor-day.is-today .jor-mark-term{background:var(--gold)}
.jor-body{min-width:0}
.jor-title{display:block;font-size:13px;font-weight:700;color:var(--text);line-height:1.3}
.jor-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;font-size:11.5px;color:var(--muted);margin-top:2px}
.jor-num{font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--text-mid);font-weight:600}
.jor-num::before,.jor-detalle::before{content:'·';margin-right:8px;color:var(--line-mid)}
.jor-foot{display:flex;justify-content:center;padding:12px;border-top:1px solid var(--line);background:var(--paper-warm)}
.jor-empty{padding:44px 24px;text-align:center}
.jor-empty-title{font-family:'Playfair Display',Georgia,serif;font-size:17px;font-weight:700;color:var(--navy)}
.jor-empty-sub{font-size:12.5px;color:var(--muted);line-height:1.6;max-width:42ch;margin:6px auto 16px}

/* Carga del despacho: contexto sobrio, sin competir con la minuta */
.jor-carga-top{display:flex;align-items:center;gap:13px;padding:16px 18px 14px}
.jor-carga-cifra{font-family:'Playfair Display',Georgia,serif;font-size:36px;font-weight:800;color:var(--navy);line-height:1}
.jor-carga-txt{font-size:12.5px;font-weight:700;color:var(--text-mid);line-height:1.3}
.jor-carga-txt span{display:block;font-size:11.5px;font-weight:500;color:var(--muted);margin-top:2px}
.jor-carga-cats{padding:0 18px 16px;display:grid;gap:8px}
.jor-carga-cat{display:grid;grid-template-columns:1fr 84px 22px;align-items:center;gap:10px;font-size:11.5px;color:var(--text-mid)}
.jor-carga-cat-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jor-carga-bar{height:5px;border-radius:3px;background:var(--bg-mid);overflow:hidden}
.jor-carga-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--navy-light),var(--navy))}
.jor-carga-cat-n{text-align:right;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums}

@media(max-width:640px){
  .jor-head-date{font-size:20px}
  .jor-day-head{padding:11px 13px 9px;flex-wrap:wrap;gap:7px}
  .jor-day-count{margin-left:0;width:100%}
  .jor-list::before{left:72px}
  .jor-row{grid-template-columns:44px 14px 1fr;padding:10px 13px;gap:0 8px}
  .jor-when{font-size:11.5px}
  .jor-gest .jor-when{font-size:9.5px;letter-spacing:.04em}
  /* El detalle pasa a línea propia: al envolver, el separador quedaba huérfano */
  .jor-detalle{display:block;width:100%;margin-top:1px}
  .jor-detalle::before{content:none}
  .jor-alert{flex-wrap:wrap;gap:8px}
  .jor-alert-cta{margin-left:auto}
}
@media (prefers-reduced-motion:reduce){
  .jor-alert:hover{transform:none}
}
.dash-row{display:flex;align-items:center;gap:13px;padding:11px 16px;border-bottom:1px solid var(--line);transition:background .12s}
.dash-row:hover{background:#faf7f1}
.dash-row:last-child{border-bottom:none}
.dash-time{min-width:54px;text-align:center;flex-shrink:0}
.dash-day-tag{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.dash-hour{font-family:'Playfair Display',serif;font-size:21px;font-weight:700;color:var(--navy);line-height:1}
.dash-date-lbl{font-size:9px;color:var(--muted)}

/* Expedientes */
.exp-cat-bar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
/* La cartera dicha en una línea. Los cuatro tiles (total, activos, audiencias
   7 días, importantes) ocupaban el tercio superior sin accionar nada y uno de
   ellos solía marcar 0 — la misma crítica que retiró los del dashboard. */
.exp-head{display:flex;align-items:baseline;gap:11px;flex-wrap:wrap;margin-bottom:14px}
.exp-head-total{font-size:15.5px;font-weight:700;color:var(--text)}
.exp-head-sub{font-size:12.5px;font-weight:600;color:var(--muted)}
.exp-head-soon{color:var(--gold-dim)}
/* Un solo tablero de filtros en vez de dos barras apiladas: pestañas y búsqueda
   arriba, categorías bajo un filete, dentro del mismo contenedor.
   El min-width:0 no es opcional: en móvil .exp-cat-bar es un carrusel
   (overflow-x:auto + flex-wrap:nowrap), y como hijo de un flex en columna su
   ancho mínimo automático lo fijaría el contenido, estirando toda la tarjeta. */
/* flex-wrap:nowrap es imprescindible: .module-toolbar trae flex-wrap:wrap y, al
   girarlo a column, el contenedor pasa a envolver en COLUMNAS — los hijos dejan
   de estirarse al ancho y se dimensionan por su contenido (la fila medía 513px
   dentro de una tarjeta de 390). */
.exp-toolbar-stack{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:0}
.exp-toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;min-width:0}
.exp-toolbar-stack .exp-cat-bar{min-width:0;margin:11px 0 0;padding-top:11px;border-top:1px solid var(--line)}
/* Píldora de filtro: comparte el lenguaje dorado de .module-chip para unificar
   todos los filtros multi-opción de la plataforma. */
.exp-cat-pill{padding:5px 13px;border-radius:999px;font-size:11px;font-weight:700;cursor:pointer;border:1px solid var(--line-mid);background:var(--card);color:var(--text-mid);transition:all .16s;user-select:none}
.exp-cat-pill:hover{border-color:var(--gold-border);background:var(--gold-pale);color:var(--gold-dim)}
.exp-cat-pill.active{background:var(--gold-pale);border-color:var(--gold-border);color:var(--gold-dim)}
.exp-cat-pill:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.exp-grid{display:flex;flex-direction:column;gap:8px}
.exp-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:17px;transition:all .2s;cursor:pointer}
.exp-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.exp-row{position:relative;display:grid;grid-template-columns:minmax(140px,auto) minmax(0,1fr) auto minmax(84px,auto) auto auto;align-items:center;gap:14px;padding:11px 16px 11px 18px;background:linear-gradient(180deg,var(--paper),var(--paper-warm));border:1px solid var(--surface-hairline);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease;min-width:0;overflow:hidden}
.exp-row::before{content:'';position:absolute;left:14px;right:14px;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(200,152,42,.32),transparent);opacity:.75}
.exp-row::after{content:'';position:absolute;right:72px;top:10px;bottom:10px;width:1px;background:repeating-linear-gradient(to bottom,rgba(11,31,53,.10),rgba(11,31,53,.10) 2px,transparent 2px,transparent 5px);opacity:.55}
.exp-row:hover{background:linear-gradient(180deg,#fff,var(--gold-pale));border-color:rgba(200,152,42,.36);box-shadow:var(--shadow-folio);transform:translateY(-1px)}
.exp-row-num{display:inline-flex;align-items:center;gap:7px;max-width:100%;width:max-content;padding:5px 9px;border:1px solid var(--gold-border);border-radius:999px;background:rgba(255,255,255,.72);font-family:monospace;font-size:10px;font-weight:800;color:var(--navy-light);letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exp-row-num .lex-icon{color:var(--gold-dim);font-size:13px}
.exp-row-main{min-width:0;padding-left:2px}
.exp-row-actor{font-size:13px;font-weight:800;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exp-row-contra{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px}
.exp-row-badges{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end;min-width:0}
.exp-important{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:var(--gold-pale);color:var(--gold-dim);border:1px solid var(--gold-border);box-shadow:inset 0 0 0 2px rgba(255,255,255,.5)}
.exp-row-aud{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:1px;font-size:10px;color:var(--muted);white-space:nowrap;text-align:right;min-width:86px}
.exp-row-aud-label{font-size:8.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.exp-row-aud-when{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.exp-row-aud-when.exp-row-aud-none{font-weight:500;color:var(--muted)}
/* Lo que sigue abierto, en palabras: dos contadores con icono y sin rótulo
   (un portapapeles con un 1 y una balanza con otro 1) no se leían. */
.exp-row-pend{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;border:1px solid var(--line-mid);background:rgba(255,255,255,.7);font-size:10px;font-weight:700;color:var(--text-mid);white-space:nowrap}
.exp-row-aud .lex-icon,.exp-row-counts .lex-icon{color:var(--gold-dim);font-size:13px}
.exp-row-counts{display:flex;align-items:center;justify-content:flex-end;gap:8px;font-size:10px;color:var(--muted);white-space:nowrap}
.exp-row-counts span{display:inline-flex;align-items:center;gap:3px}
.exp-row-actions{display:flex;gap:4px;align-items:center;justify-content:flex-end;flex-shrink:0}
.exp-row-actions .btn-ghost{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;background:rgba(255,255,255,.45)}
.exp-card-num{font-family:monospace;font-size:10px;font-weight:700;color:var(--navy-light);margin-bottom:2px;letter-spacing:.04em}
.exp-card-title{font-size:14px;font-weight:700;color:var(--text);margin-bottom:5px}
.exp-card-meta{font-size:11px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.exp-card-last{font-size:10px;color:var(--muted);margin-top:6px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45}
.exp-stats{display:flex;gap:6px;margin-top:13px;padding-top:13px;border-top:1px solid var(--line)}
.exp-stat{flex:1;text-align:center;padding:7px 4px;background:var(--bg);border-radius:7px}
.exp-stat-val{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--navy);line-height:1}
.exp-stat-lbl{font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:2px}
.exp-stat.wide .exp-stat-val{font-size:12px;font-family:'DM Sans',sans-serif}

/* ── CALENDAR ── */
/* El calendario ocupa todo el ancho: el detalle de la actividad vive en el
   modal #aud-modal, no en un panel lateral permanente. */
.cal-layout.module-grid{display:block}
.cal-controls{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.cal-title{font-family:'Playfair Display',serif;font-size:17px;font-weight:700;color:var(--navy);min-width:200px;text-align:center}
/* Segmentado (toggle de vista): parte de la familia de controles unificada.
   Geometría y feedback dorado consistentes con .tab / .module-chip. */
.view-toggle{display:flex;border:1px solid var(--line-mid);border-radius:8px;overflow:hidden}
.view-toggle button{padding:6px 14px;border:none;border-right:1px solid var(--line-mid);background:var(--card);font-size:11px;font-weight:700;color:var(--muted);cursor:pointer;font-family:inherit;transition:all .16s;letter-spacing:.03em}
.view-toggle button:last-child{border-right:none}
.view-toggle button:hover:not(.active){background:var(--bg);color:var(--navy)}
.view-toggle button.active{background:var(--navy);color:white}
.view-toggle button:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.month-wrap{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.month-wdays{display:grid;grid-template-columns:repeat(7,1fr);background:var(--navy)}
.month-wday{padding:9px 4px;text-align:center;font-size:10px;font-weight:700;color:rgba(255,255,255,.5);text-transform:uppercase;letter-spacing:.06em}
.month-wday.we{color:var(--gold)}
.month-cells{display:grid;grid-template-columns:repeat(7,1fr);background:var(--line);gap:1px}
/* 132px es el alto que deja ver las 4 actividades que renderMonth muestra
   antes del "+N más"; con 110px la cuarta quedaba recortada. */
.mcell{background:var(--card);height:132px;min-height:0;padding:5px;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.mcell.dim{background:#faf8f4}
.mcell.is-today{background:#fdf8ec}
.mcell-num{font-size:11px;font-weight:700;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;margin-bottom:1px;flex-shrink:0}
.mcell.is-today .mcell-num{background:var(--navy);color:white}
.mcell-chips{flex:1;overflow:hidden;display:flex;flex-direction:column;gap:2px}
.mcell-more{font-size:9px;color:var(--muted);font-weight:600;cursor:pointer;padding:1px 3px;flex-shrink:0}
.mcell-more:hover{color:var(--navy)}
/* Las clases .aud-list-* y .aud-mobile-card se retiraron con la tabla de la
   vista Lista: ahora usa el libro por días .jor-* del dashboard. */
/* Evento de calendario: el nombre con el que se reconoce el caso manda, la
   hora acompaña en segundo plano. Misma estructura en mes y semana. */
.chip{font-size:10px;padding:2px 5px;border-radius:3px;cursor:pointer;border-left:3px solid;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5;transition:filter .12s,box-shadow .12s;flex-shrink:0;max-width:100%;display:flex;align-items:center;gap:5px}
.chip:hover{filter:brightness(.92)}
.chip:focus-visible,.week-event:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.cal-ev-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.cal-ev-time{flex-shrink:0;font-size:9px;font-weight:600;opacity:.72;font-variant-numeric:tabular-nums}
.chip-prelim{background:#e0f2fe;border-color:#0ea5e9;color:#0369a1}
.chip-juicio{background:#fce7f3;border-color:#ec4899;color:#9d174d}
.chip-apelac{background:#ede9fe;border-color:#7c3aed;color:#4c1d95}
.chip-mediac{background:#d1fae5;border-color:#059669;color:#064e3b}
.chip-estrad{background:#fff3e0;border-color:#f97316;color:#7c2d12}
.chip-const{background:#fef9c3;border-color:#ca8a04;color:#713f12}
.chip-penal{background:#fee2e2;border-color:#ef4444;color:#7f1d1d}
.chip-lab{background:#d1fae5;border-color:#10b981;color:#064e3b}
.chip-otro{background:#f1f5f9;border-color:#64748b;color:#334155}
.week-wrap{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;overflow-x:auto}
.week-table{width:100%;border-collapse:collapse;min-width:680px;table-layout:fixed}
.week-th{background:var(--navy);color:rgba(255,255,255,.55);padding:10px 6px;font-size:10px;font-weight:700;text-align:center;text-transform:uppercase;letter-spacing:.04em;border-right:1px solid rgba(255,255,255,.07)}
.week-th.today-col{color:var(--gold)}
.week-th-time{width:52px}
.week-time-cell{padding:3px 7px;font-size:9px;color:var(--muted);text-align:right;vertical-align:top;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f8f4ee;white-space:nowrap;height:46px}
.week-half-cell{border-right:1px solid var(--line);border-bottom:1px solid #ede8e0;background:#fdfcfa;height:23px}
.week-day-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top;padding:2px;height:46px}
.week-day-cell.today-col{background:#fdf8ec}
.week-event{font-size:10px;padding:2px 5px;border-radius:3px;margin:1px;cursor:pointer;border-left:3px solid;line-height:1.4;overflow:hidden;transition:filter .12s;display:flex;align-items:center;gap:5px}
.week-event:hover{filter:brightness(.92)}
.detail-row{margin-bottom:12px}
.detail-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:2px}
.detail-value{font-size:13px;color:var(--text)}
.aud-link-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;text-decoration:none;border:none;font-family:inherit;transition:all .12s;margin-top:6px}
.aud-link-btn:hover{transform:translateY(-1px);opacity:.9}
.aud-link-zoom{background:#0b5cf7;color:#fff}
.aud-link-meet{background:#34a853;color:#fff}
.aud-link-teams{background:#6264a7;color:#fff}
.aud-link-webex{background:#1f2937;color:#fff}
.aud-link-generic{background:var(--navy);color:#fff}
.link-detected{font-size:11px;color:var(--muted);margin-top:2px}
.detail-collapse{max-height:80px;overflow:hidden;position:relative}
.detail-collapse::after{content:'';position:absolute;bottom:0;left:0;right:0;height:30px;background:linear-gradient(transparent,var(--card))}
.detail-collapse-open{max-height:none}
.detail-collapse-open::after{display:none}
.detail-toggle-btn{background:none;border:none;color:var(--navy);font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;padding:4px 0;text-decoration:underline;text-underline-offset:2px}
.detail-toggle-btn:hover{opacity:.8}

/* ── AGENDA · VISTA DE LISTA ──
   La fila entera abre el modal de detalle (salvo la celda de acciones), y la
   columna "Caso" encabeza con el nombre reconocible del expediente. */

/* ── AGENDA · MODAL DE DETALLE ──
   Reemplaza al antiguo panel lateral fijo del calendario. Comparte geometría,
   sombras y tipografía con el modal de actuaciones de Consulta CFN
   (.cq-modal-*) para que ambos se lean como un mismo sistema; el color de la
   cinta superior lo aporta la clase .chip-* del tipo de audiencia, igual que
   el evento del calendario desde el que se abre. */
.aud-modal-overlay{position:fixed;inset:0;z-index:600;background:rgba(8,20,36,.58);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:18px}
.aud-modal-card{background:var(--card);border-radius:var(--r-lg);width:min(720px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg);animation:modalIn .22s cubic-bezier(.34,1.2,.64,1) both}
/* Cinta de 4px con el color saturado del tipo. Usa longhands de borde a
   propósito: el color lo pone el border-color de la clase .chip-*, y el
   atajo `border-top` lo pisaría con currentColor. */
.aud-modal-accent{height:0;flex-shrink:0;border-top-width:4px;border-top-style:solid;background:none!important}
.aud-modal-head{display:flex;align-items:flex-start;gap:12px;padding:16px 20px 12px;flex-shrink:0}
.aud-modal-titles{flex:1;min-width:0}
.aud-modal-eyebrow{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--gold-dim)}
.aud-modal-title{font-family:'Playfair Display',serif;font-size:21px;font-weight:800;color:var(--navy);line-height:1.2;margin-top:3px;overflow-wrap:anywhere}
.aud-modal-sub{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:var(--muted);margin-top:4px}
.aud-modal-when{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:10px 20px;background:var(--paper-warm);border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-shrink:0}
.aud-when-icon{display:inline-flex;color:var(--gold-dim)}
.aud-when-date{font-size:13px;font-weight:700;color:var(--navy)}
.aud-when-time{font-size:13px;font-weight:800;color:var(--gold-dim);font-variant-numeric:tabular-nums}
.aud-when-tag{margin-left:auto}
.aud-modal-body{flex:1;overflow-y:auto;padding:16px 20px}
.aud-modal-links{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.aud-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.aud-meta-item{background:var(--bg);border-radius:8px;padding:8px 10px}
.aud-meta-item.full{grid-column:1/-1}
.aud-meta-label{font-size:9.5px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}
.aud-meta-val{font-size:12.5px;color:var(--text);line-height:1.4;overflow-wrap:anywhere}
.aud-meta-val.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.aud-modal-obs{margin-top:12px;background:var(--bg);border-radius:8px;padding:10px 12px;font-size:12.5px;line-height:1.5;color:var(--text)}
.aud-modal-obs .detail-collapse::after{background:linear-gradient(transparent,var(--bg))}
.aud-modal-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 20px;border-top:1px solid var(--line);background:var(--paper-warm);flex-shrink:0}
.aud-modal-foot-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.aud-modal-del{border-color:var(--danger-mid);color:var(--danger)}
@media(max-width:640px){
  /* En móvil el modal se comporta como hoja inferior: alcanzable con el pulgar. */
  .aud-modal-overlay{align-items:flex-end;padding:0}
  .aud-modal-card{width:100%;max-height:92vh;border-radius:var(--r-lg) var(--r-lg) 0 0}
  .aud-meta-grid{grid-template-columns:1fr}
  .aud-modal-title{font-size:18px}
  .aud-modal-foot{flex-direction:column;align-items:stretch}
  .aud-modal-foot>*,.aud-modal-foot-main>*{width:100%;justify-content:center}
}

/* ── HISTORIAL ── */
.hist-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:flex-start}
.hist-item:last-child{border-bottom:none}
.hist-icon{width:30px;height:30px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0}
.hi-crear{background:var(--success-bg)}.hi-editar{background:var(--blue-bg)}.hi-eliminar{background:var(--danger-bg)}.hi-archivar{background:#f3f4f6}.hi-restaurar{background:var(--warn-bg)}.hi-estado{background:#e0f2fe}.hi-movimiento{background:var(--gold-pale)}
.hist-desc{flex:1;font-size:12px;color:var(--text-mid);line-height:1.4}
.hist-time{font-size:10px;color:var(--muted);white-space:nowrap;flex-shrink:0}

/* ── EMPTY ── */
.empty{padding:46px 20px;text-align:center;color:var(--muted)}
.empty-icon{font-size:38px;margin-bottom:12px;display:flex;justify-content:center}
.empty-title{font-size:14px;font-weight:700;color:var(--text-mid);margin-bottom:4px}
.empty-sub{font-size:12px}

/* ── TOAST ── */
#toast{position:fixed;bottom:22px;right:22px;display:flex;align-items:center;gap:10px;background:var(--navy);color:white;padding:11px 16px;border-radius:var(--r);font-size:13px;font-weight:500;box-shadow:var(--shadow-lg);opacity:0;transform:translateY(10px);transition:opacity .22s,transform .22s;pointer-events:none;z-index:999;max-width:380px;border-left:4px solid var(--gold)}
#toast.show{opacity:1;transform:translateY(0)}
#toast .toast-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--gold)}
#toast .toast-msg{min-width:0;line-height:1.4}
#toast[data-type="success"]{border-left-color:#4ade80}
#toast[data-type="success"] .toast-icon{color:#4ade80}
#toast[data-type="error"],#toast[data-type="danger"]{border-left-color:#f87171}
#toast[data-type="error"] .toast-icon,#toast[data-type="danger"] .toast-icon{color:#f87171}
#toast[data-type="warn"]{border-left-color:#fbbf24}
#toast[data-type="warn"] .toast-icon{color:#fbbf24}
#toast[data-type="info"]{border-left-color:#60a5fa}
#toast[data-type="info"] .toast-icon{color:#60a5fa}

/* ── NOTIF ── */
#notif-bar{position:fixed;top:0;left:0;right:0;z-index:500;background:linear-gradient(90deg,var(--navy),var(--navy-mid));border-bottom:2px solid var(--gold);display:flex;align-items:center;gap:12px;padding:10px 20px;font-size:12px;color:rgba(255,255,255,.85);animation:slideDown .3s ease}
@keyframes slideDown{from{transform:translateY(-100%)}to{transform:translateY(0)}}

/* ── LOADING ── */
#loading-screen{position:fixed;inset:0;background:radial-gradient(120% 90% at 50% 0%,#12304e,var(--navy) 62%);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:900;transition:opacity .45s ease,visibility .45s}
#loading-screen.hidden{opacity:0;visibility:hidden;pointer-events:none}
.loading-logo{font-family:'Playfair Display',serif;font-size:52px;font-weight:900;color:var(--gold);letter-spacing:-2px;line-height:1;animation:loadIn .8s cubic-bezier(.16,.84,.44,1) both}
.loading-logo sup{font-size:15px;font-weight:700;letter-spacing:2px;color:rgba(200,152,42,.5);vertical-align:super;margin-left:2px}
.loading-rule{width:78px;height:2px;margin-top:16px;background:linear-gradient(90deg,rgba(200,152,42,0),var(--gold),rgba(200,152,42,0));opacity:.55}
.loading-bar{width:186px;height:3px;margin-top:20px;border-radius:3px;background:rgba(255,255,255,.09);overflow:hidden}
.loading-bar span{display:block;width:42%;height:100%;border-radius:3px;background:linear-gradient(90deg,rgba(200,152,42,0),var(--gold),rgba(200,152,42,0));animation:loadSweep 1.3s ease-in-out infinite}
.loading-sub{font-size:11px;color:rgba(255,255,255,.35);letter-spacing:.18em;text-transform:uppercase;margin-top:16px;animation:pulse 1.8s ease infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
@keyframes loadIn{from{opacity:0;transform:translateY(10px);letter-spacing:2px}to{opacity:1;transform:none;letter-spacing:-2px}}
@keyframes loadSweep{from{transform:translateX(-115%)}to{transform:translateX(265%)}}
@media (prefers-reduced-motion:reduce){
  .loading-logo,.loading-sub{animation:none}
  .loading-bar span{width:100%;animation:none;opacity:.5}
}

/* ── GESTION FADE ── */
@keyframes gestFadeOut{0%{opacity:1;transform:translateX(0)}60%{opacity:.4;transform:translateX(8px)}100%{opacity:0;transform:translateX(0);max-height:0;padding:0}}
tr.fade-out td{animation:gestFadeOut 2s ease forwards}
div.gest-card.fade-out{animation:gestFadeOut 2s ease forwards}
/* ── Gestiones card list ── */
/* ── Banda de urgencia ──
   Los cuatro contadores (Pendientes/Vencidas/Vencen hoy/Próximos 7 días) y los
   chips de urgencia (Todas/Vencidas/HOY/Hasta 7 días) eran LAS MISMAS cuatro
   categorías dibujadas dos veces: una como números pasivos que no llevaban a
   ninguna parte, otra como botones sin número. Aquí el número es el filtro, así
   que dejan de ser dos superficies que hay que correlacionar mentalmente. */
.lex-band{display:flex;align-items:stretch;gap:0;margin-bottom:12px;border:1px solid var(--line);border-radius:var(--r-lg);background:rgba(255,255,255,.72);box-shadow:var(--shadow-sm);overflow:hidden}
.lex-band-seg{flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:10px 14px;border:none;border-left:1px solid var(--line);background:none;font-family:inherit;text-align:left;cursor:pointer;transition:background .16s}
.lex-band-seg:first-child{border-left:none}
.lex-band-seg:hover{background:var(--paper-warm)}
.lex-band-seg:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.lex-band-n{font-size:19px;font-weight:700;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums}
.lex-band-l{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Un cero no es una alarma: se apaga para que solo lo que existe pida atención. */
.lex-band-seg.is-zero .lex-band-n{color:var(--line-mid)}
.lex-band-seg.is-danger .lex-band-n{color:var(--danger)}
.lex-band-seg.is-soon .lex-band-n{color:var(--gold-dim)}
/* El segmento activo se marca con un filete, no con un bloque de navy: relleno
   entero, la banda pesaba más que la propia alarma de vencimiento y además
   borraba el color del número, que es lo que hay que poder leer de un vistazo. */
.lex-band-seg{position:relative}
.lex-band-seg.is-active{background:var(--paper-warm)}
.lex-band-seg.is-active::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2.5px;background:var(--gold)}
.lex-band-seg.is-active .lex-band-l{color:var(--navy)}

.gest-card-list { display:flex; flex-direction:column; gap:8px; }
.gest-card {
  background: var(--card);
  border-radius: 10px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--line-mid);
  padding: 13px 15px;
  display: flex;
  gap: 14px;
  align-items: flex-start;
  transition: box-shadow .15s, transform .1s;
}
.gest-card:hover { box-shadow: 0 2px 10px rgba(0,0,0,.07); transform: translateY(-1px); }
.gest-card-main { flex:1; min-width:0; }
/* La tarea primero. Antes el tipo de gestión —lo único que dice QUÉ hay que
   hacer— era una insignia gris entre otras cuatro píldoras; el número de causa,
   que solo sirve para identificar, iba en cabeza. */
.gest-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.gest-card-tipo{font-size:14px;font-weight:700;color:var(--text);line-height:1.25;min-width:0;overflow:hidden;text-overflow:ellipsis}
.gest-card-plazo{flex-shrink:0;font-size:12.5px;font-weight:700;color:var(--muted);white-space:nowrap}
.gest-card-plazo.is-venc{color:var(--danger)}
.gest-card-plazo.is-hoy{color:var(--gold-dim)}
.gest-card-sub{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:3px}
.gest-card-quien{min-width:0;font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gest-card-num{font-weight:700;color:var(--navy-light);font-variant-numeric:tabular-nums}
/* El estado se dice, no se pinta: una píldora de color competía con la urgencia,
   que es el único eje que debe llevar color en esta pantalla. */
.gest-card-estado{flex-shrink:0;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.gest-card-obs { font-size:12px; color:var(--text); margin-top:4px; line-height:1.5; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.gest-card-actions { display:flex; align-items:center; gap:5px; flex-shrink:0; flex-wrap:wrap; }

@media (max-width:560px){
  .lex-band{flex-wrap:wrap}
  .lex-band-seg{flex:1 1 50%;border-top:1px solid var(--line)}
  .lex-band-seg:nth-child(-n+2){border-top:none}
  .lex-band-seg:nth-child(odd){border-left:none}
  .gest-card{flex-direction:column;gap:10px}
  .gest-card-actions{width:100%}
}
/* Task action buttons */
/* Un solo lenguaje, el mismo del modal de detalle: navy para la transición que
   hace avanzar el trabajo (Iniciar / Finalizar), contorno para la secundaria
   (Pausar). El verde #16a34a y el amarillo eran ajenos a la paleta navy/dorado
   y, peor, gritaban más que "Venció hace 2 días": en esta pantalla el color se
   reserva a la urgencia, que es lo único que obliga a actuar. */
.btn-task { border:1px solid transparent; border-radius:8px; padding:6px 12px; font-size:11.5px; font-weight:600; cursor:pointer; font-family:inherit; transition:background .16s, border-color .16s, color .16s; white-space:nowrap; }
.btn-task-start, .btn-task-done { background:var(--navy); color:#fff; border-color:var(--navy); }
.btn-task-start:hover, .btn-task-done:hover { background:var(--navy-mid); }
.btn-task-pause { background:var(--card); color:var(--navy); border-color:var(--line-mid); }
.btn-task-pause:hover { border-color:var(--navy-light); background:var(--paper-warm); }
.btn-task:focus-visible { outline:2px solid var(--gold); outline-offset:2px; }

/* ── BARRA DE HERRAMIENTAS PREMIUM COMPARTIDA (orden + búsqueda) ──
   Primitivas .lex-search-* / .lex-sort-* usadas por Expedientes y Gestiones. */
/* .exp-metric* se retiró con los tiles de Expedientes (ahora .exp-head). */
/* .gest-metric* se retiró con los tiles de Gestiones (ahora .lex-band). */
.gest-toolbar,.exp-toolbar{margin-bottom:12px}
.gest-toolbar-right,.exp-toolbar-right{gap:10px}
.lex-search-wrap,.gest-search-wrap{display:inline-flex;align-items:center;gap:7px;background:var(--card);border:1px solid var(--line-mid);border-radius:8px;padding:0 11px;height:34px;transition:border-color .15s,box-shadow .15s}
.lex-search-wrap:focus-within,.gest-search-wrap:focus-within{border-color:var(--gold-border);box-shadow:0 0 0 3px rgba(200,152,42,.12)}
.lex-search-wrap .lex-icon,.gest-search-wrap .lex-icon{color:var(--muted);flex-shrink:0}
.lex-search-input,.gest-search-input{border:none!important;background:none;height:32px;padding:0;font-size:12.5px;width:190px;outline:none}
.lex-search-input:focus,.gest-search-input:focus{box-shadow:none!important}
.lex-sort-wrap,.gest-sort-wrap{display:inline-flex;align-items:center;gap:7px}
.lex-sort-wrap>span,.gest-sort-wrap>span{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap}
.lex-sort,.gest-sort{height:34px;padding:0 12px;border:1px solid var(--line-mid);border-radius:8px;font-size:12.5px;font-weight:600;color:var(--text-mid);background:var(--card);cursor:pointer;width:auto}
.lex-sort:hover,.gest-sort:hover{border-color:var(--gold-border)}
.gest-filter-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:2px 0 14px}
.gest-filter-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.gest-filter-sep{width:1px;height:18px;background:var(--line);margin:0 5px}
/* Acento de estado en la fila de expediente */
.exp-row-accent{position:absolute;left:0;top:0;bottom:0;width:3px;z-index:1;border-radius:var(--r-lg) 0 0 var(--r-lg)}
@media(max-width:640px){
  .exp-toolbar-right{width:100%}
  .exp-toolbar-right .lex-search-wrap{flex:1}
  .exp-toolbar-right .lex-search-input{width:100%}
  .gest-toolbar-right{width:100%}
  .gest-search-wrap{flex:1}
  .gest-search-input{width:100%}
}
.dash-upcoming-scroll { }
.dash-item{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}
.dash-item:hover{background:#faf7f1}
.dash-item:last-child{border-bottom:none}
.dash-item-name{font-size:12px;font-weight:600;color:var(--text)}
.dash-item-sub{font-size:11px;color:var(--muted);margin-top:1px}
.dash-item:focus-visible{outline:2px solid var(--navy-light);outline-offset:-2px}
/* Seguimiento al día: un estado resuelto se enuncia, no se rellena con casos ya leídos. */
.dash-satje-clear{padding:18px 16px 20px}
.dash-satje-clear-title{font-size:12.5px;font-weight:600;color:var(--text-mid)}
.dash-satje-clear-sub{font-size:11px;color:var(--muted);margin-top:3px}
/* Lo que no cupo en la tarjeta se declara; truncar en silencio esconde trabajo. */
.dash-satje-more{padding:9px 16px;border-top:1px solid var(--line);font-size:11px;font-weight:600;color:var(--navy);cursor:pointer;transition:background .12s}
.dash-satje-more:hover{background:#faf7f1}
.dash-satje-more:focus-visible{outline:2px solid var(--navy-light);outline-offset:-2px}

/* ── PRINT ── */
.print-only{display:none}
@media print{#sidebar,#topbar,#overlay,#toast,#notif-bar,#case-drawer,#drawer-backdrop,.no-print,.btn-ghost,.btn-outline,.btn-primary,.btn-cancel,.cal-controls,.view-toggle,.tabs,.exp-cat-bar,.exp-head,.exp-toolbar,.lex-band,.gest-toolbar,.gest-filter-row{display:none!important}body,#app,#main,#content{overflow:visible;height:auto}#content{padding:0}.view{display:none}.view.active{display:block}.card,.table-wrap{box-shadow:none;border:1px solid #ccc;break-inside:avoid}
  /* Encabezado de impresión: solo visible al imprimir/exportar PDF */
  .print-only{display:block!important}
  #print-header{display:flex!important;justify-content:space-between;align-items:baseline;gap:16px;border-bottom:2px solid var(--navy);padding:0 0 10px;margin:0 0 18px}
  #print-header .print-brand{font-family:'Playfair Display',serif;font-weight:900;font-size:22px;color:var(--navy);letter-spacing:-.5px;line-height:1}
  #print-header .print-brand sup{font-size:9px;color:var(--gold);font-weight:700;vertical-align:super}
  #print-header .print-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:11px;color:#333;text-align:right}
  #print-header #print-title{font-weight:700;font-size:13px;color:var(--navy)}
}

/* ── RESPONSIVE ── */
@media(max-width:1024px){.cal-layout{grid-template-columns:1fr}.dash-grid{grid-template-columns:1fr}}

/* ══════════════════════════════════════════
   MOBILE — everything below 960px
══════════════════════════════════════════ */
@media(max-width:960px){

  /* Hide desktop sidebar entirely */
  #sidebar{display:none}

  /* Main fills screen, leaves room for bottom nav */
  #main{padding-bottom:0}
  #content{padding:14px 12px 90px;overflow-y:auto}

  /* Topbar mobile */
  #topbar{padding:0 14px;gap:8px;height:54px}
  .topbar-title{font-size:15px}
  .search-pill{padding:6px 10px;font-size:11px}
  .search-pill .kbd{display:none}
  .kb-hint{display:none}

  /* Forms */
  .fg-2,.fg-3,.fg-4{grid-template-columns:1fr}
  .span-2,.span-3{grid-column:span 1}

  /* Stats grid 2 cols on mobile */
  .stats-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
  .stat-card{padding:14px 13px}
  .stat-value{font-size:30px}
  .stat-icon{margin-bottom:4px}

  /* Dashboard grid single col */
  .dash-grid{grid-template-columns:1fr;gap:12px}

  /* Expedientes grid 1 col */
  .exp-grid{grid-template-columns:1fr}
  .exp-cat-bar{gap:5px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
  .exp-cat-bar::-webkit-scrollbar{display:none}
  .exp-cat-pill{white-space:nowrap;flex-shrink:0;font-size:11px;padding:5px 11px}
  .tabs{overflow-x:auto;flex-wrap:nowrap}
  .tabs::-webkit-scrollbar{display:none}
  .tab{white-space:nowrap;flex-shrink:0;padding:8px 13px;font-size:12px}

  /* Calendar - medium screens: stacked layout */
  .cal-layout.module-grid{grid-template-columns:1fr}
  .cal-controls{gap:6px}
  .cal-title{font-size:13px;min-width:0;flex:1}
  .mcell{height:86px;padding:3px}
  .mcell-num{font-size:10px;width:18px;height:18px}
  .chip{font-size:9px;padding:1px 3px;gap:3px}
  /* En una celda de mes estrecha la hora se comía el nombre del caso y lo
     dejaba en una inicial. El nombre manda; la hora sigue en el evento de la
     vista semanal, en la lista y en el modal. */
  .mcell .cal-ev-time{display:none}
  .view-toggle button{padding:5px 10px;font-size:10px}


@media(max-width:640px){
  /* ── Área táctil ──
     La auditoría contó 133 controles interactivos por debajo de 40px en móvil:
     .btn-outline.btn-sm medía 26px de alto (35 apariciones), los .btn-ghost de
     icono 28x28, los chips 28. Un dedo no acierta a 26px: se falla el botón o
     se pulsa el de al lado, que en listas densas significa archivar o eliminar
     lo que no era. Se lleva todo control a 44px, la medida cómoda de referencia
     (WCAG 2.5.5). El texto y el relleno no cambian: solo se garantiza el alto
     mínimo y se centra el contenido. */
  .btn-primary,.btn-outline,.btn-ghost,.btn-cancel,.btn-gold,.btn-danger,.btn-task,
  .module-chip,.exp-cat-pill,.tab,.gvp-btn,.lex-band-seg,.view-toggle button{
    min-height:44px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
  }
  /* Los de solo icono necesitan además ancho: 28x28 no es un objetivo táctil. */
  .btn-ghost{min-width:44px}
  .lex-band-seg{flex-direction:column;justify-content:center;align-items:flex-start}
  .topbar-refresh{width:44px;height:44px}
  /* El título de la barra abre el dashboard al pulsarlo: es un control, no solo texto. */
  .topbar-head{min-height:44px;display:flex;flex-direction:column;justify-content:center}
  .lex-search-wrap,.gest-search-wrap{height:44px}
  .lex-search-input,.gest-search-input{height:42px}
  .lex-sort,.gest-sort{height:44px}
  .cfn-step{min-height:44px;display:inline-flex;align-items:center;justify-content:center}

  /* La barra superior era una sola fila sin envolver, y .topbar-head el único
     hijo encogible: absorbía todo el déficit y el título de la pantalla se
     reducía a 0px en Expedientes y Seguimiento Judicial, 5px en Agenda, con las
     acciones desbordando igualmente 58px. Lo primero que se sacrificaba era
     saber dónde estás. Ahora las acciones bajan a su propia línea y el título
     tiene un mínimo que no puede ceder. */
  /* height:auto anula el 54px fijo de la regla de 760px: con las acciones en una
     segunda línea la barra tiene que poder crecer, o se derraman sobre el
     contenido. */
  #topbar{flex-wrap:wrap;row-gap:9px;padding:9px 14px;height:auto}
  .topbar-head{flex:1 1 auto;min-width:110px}
  .topbar-refresh{margin-left:0}
  #topbar-actions{flex:1 1 100%;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  #topbar-actions::-webkit-scrollbar{display:none}
  #topbar-actions>*{flex-shrink:0}

  .cal-controls{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;align-items:center;gap:6px}
  .cal-controls>button{min-width:0;padding:6px 8px}
  .cal-controls>button:nth-of-type(1){grid-column:1;grid-row:1}
  .cal-controls>.cal-title{grid-column:2;grid-row:1;text-align:center;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cal-controls>button:nth-of-type(2){grid-column:3;grid-row:1}
  .cal-controls>button:nth-of-type(3){grid-column:1 / 2;grid-row:2;width:100%}
  .cal-controls>div{grid-column:2 / 4;grid-row:2;margin-left:0!important;min-width:0}
  .view-toggle{width:100%}
  .view-toggle button{flex:1;padding:6px 8px}
  .month-wday{padding:7px 1px;font-size:9px;letter-spacing:.02em}
  .mcell{height:58px;padding:3px 2px;gap:1px}
  .mcell-num{width:18px;height:18px;font-size:10px;margin-bottom:0}
  .mcell-chips{flex-direction:row;flex-wrap:wrap;align-content:flex-start;gap:3px;overflow:hidden}
  .chip{width:auto;height:auto;min-width:0;padding:1px 4px;border:0;border-left:2px solid;border-radius:2px;font-size:8px;line-height:1.4;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .mcell-more{font-size:10px;line-height:1.4;padding:2px 4px;cursor:pointer;flex-shrink:0}
  .mcell-more:hover{color:var(--navy)}
}

  /* Modals full-screen on mobile */
  #overlay{padding:0;align-items:flex-end}
  .modal,.modal-lg,.modal-xl,.modal-search{
    width:100%;
    max-height:92vh;
    border-radius:var(--r-lg) var(--r-lg) 0 0;
  }
  .modal-head{padding:18px 18px 0}
  .modal-body{padding:16px 18px}
  .modal-foot{padding:12px 18px 24px}

  /* Case drawer near full-screen on mobile */
  #case-drawer{width:calc(100vw - 20px);height:calc(100vh - 24px);border-radius:var(--r-lg)}
  .drawer-header{padding:16px 18px 14px}
  .drawer-case-actor{font-size:16px}
  .drawer-tabs{overflow-x:auto}
  .drawer-tabs::-webkit-scrollbar{display:none}
  .drawer-tab-slot{flex-shrink:0}
  .drawer-tab{white-space:nowrap;flex-shrink:0;padding:10px 13px;font-size:11px}
  .drawer-body{padding:16px}

  /* Tables → hide on mobile, use card list instead */
  .mobile-hidden{display:none!important}
  .mobile-card-list{display:flex;flex-direction:column;gap:10px}

  /* Gestiones mobile cards */
  .gest-mobile-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;border-left:4px solid var(--navy-light)}
  .gest-mobile-card.urgent{border-left-color:#ef4444}
  .gest-mobile-card.warn{border-left-color:#f97316}
  .gest-mobile-card-num{font-family:monospace;font-size:11px;font-weight:700;color:var(--navy-light);margin-bottom:3px}
  .gest-mobile-card-type{font-size:12px;color:var(--text-mid);margin-bottom:6px}
  .gest-mobile-card-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
  .gest-mobile-card-actions{display:flex;gap:6px;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}

  /* Audiencias list mobile */
  /* Hide table on mobile in list view, show cards */
  #cal-list table{display:none}

  /* Hide topbar actions text on mobile, show only icons */
  #topbar-actions .btn-primary span.btn-label{display:none}

  /* Bottom nav */
  #mobile-nav{
    display:flex;position:fixed;bottom:0;left:0;right:0;
    height:var(--mobile-nav-h);background:var(--navy);
    border-top:1px solid rgba(255,255,255,.08);
    z-index:120;align-items:stretch;
    padding-bottom:env(safe-area-inset-bottom)
  }
  .mnav-item{
    flex:1;display:flex;flex-direction:column;align-items:center;
    justify-content:center;gap:3px;cursor:pointer;
    color:rgba(255,255,255,.4);transition:color .15s;
    -webkit-tap-highlight-color:transparent;
    border:none;background:transparent;font-family:inherit
  }
  .mnav-item.active{color:var(--gold)}
  .mnav-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center}
  .mnav-label{font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}

  /* Mobile menu sheet */
  #mobile-menu{
    position:fixed;bottom:var(--mobile-nav-h);left:0;right:0;
    background:var(--navy-mid);border-radius:var(--r-lg) var(--r-lg) 0 0;
    z-index:119;padding:20px 16px;
    transform:translateY(100%);transition:transform .3s cubic-bezier(.25,.46,.45,.94);
    border-top:1px solid rgba(255,255,255,.08)
  }
  #mobile-menu.open{transform:translateY(0)}
  #mobile-menu-backdrop{
    position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:118;
    display:none;backdrop-filter:blur(2px)
  }
  #mobile-menu-backdrop.open{display:block}
  .mmenu-title{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.3);margin-bottom:12px}
  .mmenu-btn{display:flex;align-items:center;gap:12px;width:100%;padding:13px 14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);border-radius:9px;color:rgba(255,255,255,.75);font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;margin-bottom:8px;-webkit-tap-highlight-color:transparent}
  .mmenu-btn:active{background:rgba(255,255,255,.12)}
  .mmenu-btn.danger{border-color:rgba(239,68,68,.3);color:rgba(252,165,165,.7)}
  .mmenu-btn.excel{border-color:rgba(34,197,94,.3);color:rgba(134,239,172,.8)}

  /* FAB quick-action menu — z-index must be above ai-backdrop (305) and ai-panel (310) */
  #fab-menu{
    position:fixed;right:14px;
    bottom:calc(var(--mobile-nav-h) + 74px);
    display:flex;flex-direction:column;align-items:flex-end;gap:8px;
    z-index:315;opacity:0;pointer-events:none;
    transform:translateY(10px);
    transition:opacity .18s,transform .18s
  }
  #fab-menu.open{opacity:1;pointer-events:all;transform:translateY(0)}
  #fab-menu-bd{position:fixed;inset:0;z-index:314;display:none}
  #fab-menu-bd.open{display:block}
  .fab-item{display:flex;align-items:center;gap:8px;padding:9px 16px;
    background:var(--navy);color:white;
    border:1px solid rgba(255,255,255,.14);border-radius:22px;
    font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;
    box-shadow:0 2px 10px rgba(0,0,0,.28);white-space:nowrap;
    -webkit-tap-highlight-color:transparent}
  .fab-item:active{opacity:.8}

  /* Expedientes: stack to single column on mobile */
  .exp-row{grid-template-columns:1fr auto auto;grid-template-rows:auto auto}
  .exp-row-num{grid-column:1;font-size:9px}
  .exp-row-badges{grid-column:2;grid-row:1/3}
  .exp-row-actions{grid-column:3;grid-row:1/3}
  .exp-row-main{grid-column:1;grid-row:2}
  .exp-row-aud{display:none}
}

@media(min-width:961px){
  #mobile-nav,#mobile-fab,#mobile-menu,#mobile-menu-backdrop,#fab-menu,#fab-menu-bd{display:none!important}
}

/* ══════════════════════════════════════════
   GEMINI CHAT ASSISTANT
 ══════════════════════════════════════════ */

/* FAB trigger button — navy/gold LEXEA style */
#ai-fab {
  position: fixed;
  bottom: 20px;
  right: 20px;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: linear-gradient(145deg, var(--navy-light) 0%, var(--navy) 100%);
  color: white;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 18px rgba(11,31,53,.35), 0 1px 4px rgba(11,31,53,.2);
  z-index: 140;
  transition: all .22s ease;
  overflow: hidden;
}
#ai-fab svg {
  width: 22px;
  height: 22px;
  fill: var(--gold);
  stroke: none;
  filter: drop-shadow(0 0 5px rgba(200,152,42,.5));
  transition: transform .3s ease;
}
#ai-fab:hover svg {
  transform: rotate(20deg) scale(1.1);
}
#ai-fab:hover  { transform: scale(1.1); box-shadow: 0 6px 24px rgba(11,31,53,.45), 0 0 0 3px rgba(200,152,42,.2); }
#ai-fab:active { transform: scale(.94); }
#ai-fab.chat-open { background: var(--navy); box-shadow: 0 4px 16px rgba(11,31,53,.4), 0 0 0 3px rgba(200,152,42,.15); }

/* Chat panel */
#ai-panel {
  position: fixed;
  right: 88px;
  bottom: 16px;
  width: 340px;
  height: 520px;
  max-height: calc(100vh - 32px);
  background: var(--card);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
  z-index: 310;
  border: 1px solid var(--line);
  overflow: hidden;
  transform: scale(.92) translateX(12px);
  opacity: 0;
  pointer-events: none;
  transition: transform .22s cubic-bezier(.34,1.2,.64,1), opacity .18s ease;
}
#ai-panel.open {
  transform: scale(1) translateX(0);
  opacity: 1;
  pointer-events: all;
}

/* Panel header */
.ai-header {
  background: linear-gradient(135deg, #1a73e8, #4285f4);
  padding: 14px 16px;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.ai-header-icon {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: rgba(255,255,255,.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}
.ai-header-name  { font-size: 14px; font-weight: 700; color: white; line-height: 1.2; }
.ai-header-sub   { font-size: 10px; color: rgba(255,255,255,.65); margin-top: 1px; }
.ai-header-close {
  margin-left: auto;
  background: rgba(255,255,255,.15);
  border: none;
  width: 28px; height: 28px;
  border-radius: 6px;
  color: white;
  cursor: pointer;
  font-size: 14px;
  display: flex; align-items: center; justify-content: center;
  transition: background .14s;
}
.ai-header-close:hover { background: rgba(255,255,255,.28); }

/* Messages area */
#ai-messages {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 14px 14px 8px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
#ai-messages::-webkit-scrollbar { width: 3px; }
#ai-messages::-webkit-scrollbar-thumb { background: #d0c9bc; border-radius: 3px; }

/* Bubbles */
.ai-bubble {
  max-width: 88%;
  padding: 9px 12px;
  border-radius: 12px;
  font-size: 13px;
  line-height: 1.5;
  word-break: break-word;
}
.ai-bubble.user {
  align-self: flex-end;
  background: var(--navy);
  color: white;
  border-bottom-right-radius: 4px;
}
.ai-bubble.assistant {
  align-self: flex-start;
  background: #f0f4ff;
  color: var(--text);
  border-bottom-left-radius: 4px;
  border: 1px solid #d8e4ff;
}
.ai-bubble.assistant.action {
  background: var(--success-bg);
  border-color: #a7f3d0;
  color: var(--success);
  font-weight: 600;
}
/* Animated action bubble — transitions from "creating" to "done" */
.ai-bubble.assistant.action-pending {
  background: #f0f4ff;
  border: 1px solid #d8e4ff;
  color: var(--text-mid);
  font-weight: 500;
  position: relative;
  overflow: hidden;
}
/* Animated progress bar on pending action bubble */
.ai-bubble.assistant.action-pending::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0;
  height: 2px;
  width: 100%;
  background: linear-gradient(90deg, transparent, #4285f4, transparent);
  animation: aiProgress 1.4s ease-in-out infinite;
}
/* ── Menú desplegable unificado (lex-menu) ──
   Contenedor + items compartidos por los menús de exportación y acciones rápidas.
   La posición (top/right/left) se define inline según el disparador. */
.lex-menu{background:var(--card);border:1px solid var(--line-mid);border-radius:var(--r);box-shadow:var(--shadow-md);min-width:200px;padding:5px;z-index:500;overflow:auto;animation:lexMenuIn .13s ease both}
@keyframes lexMenuIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
.lex-menu-label{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:7px 12px 4px}
.lex-menu-sep{height:1px;background:var(--line);margin:5px 4px}
.lex-menu-item,.export-aud-opt{display:flex;align-items:center;gap:8px;width:100%;padding:9px 12px;background:none;border:none;border-radius:7px;text-align:left;font-size:12.5px;font-weight:500;color:var(--text-mid);cursor:pointer;font-family:inherit;transition:background .13s,color .13s}
.lex-menu-item:hover,.export-aud-opt:hover{background:var(--bg);color:var(--navy)}
.lex-menu-item .lex-icon,.export-aud-opt .lex-icon{color:var(--muted);flex-shrink:0}
.lex-menu-item:hover .lex-icon,.export-aud-opt:hover .lex-icon{color:var(--gold-dim)}

/* ── Skeleton de carga (shimmer premium) ── */
.lex-skeleton{position:relative;overflow:hidden;background:var(--bg-mid);border-radius:8px}
.lex-skeleton::after{content:'';position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);animation:lexShimmer 1.3s infinite}
.lex-skeleton-row{height:54px;margin-bottom:8px}
@keyframes lexShimmer{100%{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){.lex-skeleton::after{animation:none}}

/* ── MODAL DE PERFIL / AJUSTES (pestañas laterales, sin scroll largo) ── */
.prof-overlay{position:fixed;inset:0;background:rgba(11,31,53,.45);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:9998;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .16s ease}
.settings-modal{background:var(--card);border-radius:var(--r-xl);width:680px;max-width:100%;max-height:88vh;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;animation:settingsIn .22s cubic-bezier(.22,.61,.36,1)}
@keyframes settingsIn{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
.settings-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:1px solid var(--line);flex-shrink:0}
.settings-head h3{margin:0;font-family:'Playfair Display',serif;font-size:19px;font-weight:800;color:var(--navy)}
.settings-body{display:flex;min-height:0;flex:1}
.settings-rail{width:196px;flex-shrink:0;background:var(--paper-warm);border-right:1px solid var(--line);padding:12px 10px;display:flex;flex-direction:column;gap:3px}
.settings-tab{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:none;background:none;border-radius:8px;font-family:inherit;font-size:13px;font-weight:600;color:var(--text-mid);text-align:left;cursor:pointer;transition:all .15s}
.settings-tab .lex-icon{color:var(--muted);flex-shrink:0;transition:color .15s}
.settings-tab:hover{background:rgba(255,255,255,.7);color:var(--navy)}
.settings-tab.active{background:var(--card);color:var(--navy);box-shadow:var(--shadow-sm)}
.settings-tab.active .lex-icon{color:var(--gold-dim)}
.settings-tab:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.settings-main{flex:1;min-width:0;display:flex;flex-direction:column}
.settings-content{flex:1;min-height:296px;padding:22px 24px;overflow-y:auto}
.settings-panel{display:none}
.settings-panel.active{display:block;animation:settingsPanelIn .2s ease}
@keyframes settingsPanelIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.settings-panel-title{font-family:'Playfair Display',serif;font-size:16px;font-weight:700;color:var(--navy);margin-bottom:14px}
.settings-panel .form-group{margin-bottom:14px}
.settings-note{font-size:12px;color:var(--muted);line-height:1.5;margin:0 0 14px}
.settings-hint{font-size:10px;color:var(--muted);margin-top:5px}
.settings-tools{display:flex;flex-direction:column;gap:9px}
.settings-tools .btn-outline,.settings-tools .btn-danger{justify-content:flex-start;width:100%;padding:10px 14px}
.settings-foot{display:flex;align-items:center;gap:12px;padding:14px 24px;border-top:1px solid var(--line);flex-shrink:0}
.settings-status{font-size:12px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.settings-foot-btns{display:flex;gap:8px;margin-left:auto;flex-shrink:0}
@media (max-width:560px){
  .settings-modal{max-height:92vh}
  .settings-body{flex-direction:column}
  .settings-rail{width:auto;flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);gap:4px}
  .settings-rail::-webkit-scrollbar{display:none}
  .settings-tab{white-space:nowrap;flex-shrink:0}
  .settings-content{min-height:0}
}
@keyframes aiProgress {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
.ai-bubble.assistant.action-done {
  background: var(--success-bg);
  border: 1px solid #a7f3d0;
  color: var(--success);
  font-weight: 600;
  animation: aiBubblePop .25s ease;
}
@keyframes aiBubblePop {
  0%   { transform: scale(.97); opacity: .8; }
  60%  { transform: scale(1.01); }
  100% { transform: scale(1);   opacity: 1; }
}
/* Button loading state */
.btn-primary:disabled,
.btn-outline:disabled,
.btn-cancel:disabled {
  opacity: .55;
  cursor: not-allowed;
  pointer-events: none;
}
[data-loading] .btn-primary,
[data-loading] .btn-outline {
  opacity: .55;
  cursor: not-allowed;
  pointer-events: none;
}
/* ── Elegant action overlay loader ── */
#lex-loader {
  position: fixed;
  inset: 0;
  z-index: 9998;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 28px;
  background: rgba(11, 31, 53, 0.45);
  backdrop-filter: blur(10px) saturate(1.4);
  -webkit-backdrop-filter: blur(10px) saturate(1.4);
  opacity: 0;
  pointer-events: none;
  transition: opacity .22s cubic-bezier(.4,0,.2,1);
}
#lex-loader.active {
  display: flex;
  opacity: 1;
  pointer-events: all;
}
/* Wordmark */
#lex-loader .ll-word {
  font-family: 'Playfair Display', serif;
  font-weight: 900;
  font-size: 36px;
  letter-spacing: -1.5px;
  color: white;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .3s .08s ease, transform .3s .08s ease;
}
#lex-loader.active .ll-word {
  opacity: 1;
  transform: translateY(0);
}
/* Dual-arc ring */
#lex-loader .ll-ring {
  position: relative;
  width: 56px;
  height: 56px;
}
#lex-loader .ll-ring svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
#lex-loader .ll-ring .arc-outer {
  animation: lexArcOuter 1.6s cubic-bezier(.4,0,.2,1) infinite;
  transform-origin: 50% 50%;
}
#lex-loader .ll-ring .arc-inner {
  animation: lexArcInner 1.1s cubic-bezier(.4,0,.2,1) infinite;
  transform-origin: 50% 50%;
}
@keyframes lexArcOuter {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes lexArcInner {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(-360deg); }
}
/* Sub label */
#lex-loader .ll-sub {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255,255,255,.65);
  opacity: 0;
  transition: opacity .3s .15s ease;
}
#lex-loader.active .ll-sub { opacity: 1; }
.ai-bubble.assistant.error {
  background: var(--danger-bg);
  border-color: var(--danger-mid);
  color: var(--danger);
}
.ai-bubble.thinking {
  align-self: flex-start;
  background: #f0f4ff;
  border: 1px solid #d8e4ff;
  padding: 10px 14px;
}
.ai-dots span {
  display: inline-block;
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #4285f4;
  margin: 0 2px;
  animation: aiDot 1.2s ease-in-out infinite;
}
.ai-dots span:nth-child(2) { animation-delay: .2s; }
.ai-dots span:nth-child(3) { animation-delay: .4s; }
@keyframes aiDot {
  0%, 80%, 100% { transform: scale(.7); opacity: .4; }
  40%           { transform: scale(1);  opacity: 1; }
}
.ai-timestamp {
  font-size: 9px;
  color: var(--muted);
  margin-top: 2px;
  text-align: center;
}

/* Quick suggestions */
.ai-suggestions {
  padding: 0 14px 8px;
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  flex-shrink: 0;
}
.ai-suggestion {
  padding: 5px 10px;
  background: #f0f4ff;
  border: 1px solid #c7d7ff;
  border-radius: 999px;
  font-size: 11px;
  color: #1a73e8;
  cursor: pointer;
  font-family: inherit;
  transition: background .14s;
  white-space: nowrap;
}
.ai-suggestion:hover { background: #dce8ff; }

/* Input area */
.ai-input-area {
  padding: 10px 12px 12px;
  border-top: 1px solid var(--line);
  display: flex;
  gap: 8px;
  align-items: flex-end;
  flex-shrink: 0;
  background: white;
}
#ai-input {
  flex: 1;
  padding: 9px 12px;
  border: 1.5px solid #d0c9bc;
  border-radius: 22px;
  font-family: inherit;
  font-size: 13px;
  resize: none;
  max-height: 100px;
  min-height: 38px;
  line-height: 1.45;
  transition: border-color .17s;
}
#ai-input:focus { outline: none; border-color: #4285f4; }
#ai-send {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: #1a73e8;
  border: none;
  color: white;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
  transition: background .15s, transform .12s;
}
#ai-send:hover  { background: #1557b0; }
#ai-send:active { transform: scale(.9); }
#ai-send:disabled { background: #c0cfe8; cursor: not-allowed; }

/* Mobile adjustments for chat */
@media(max-width: 960px) {
  /* Keep IA chat and "+" quick actions visible at the same time */
  /* ai-fab mobile: round Gemini-like FAB */
  #ai-fab  { bottom: calc(var(--mobile-nav-h) + 14px); right: 18px; width: 48px; height: 48px; z-index: 140; }
  #ai-panel { right: 8px; left: 8px; width: auto; bottom: calc(var(--mobile-nav-h) + 72px); height: 65vh; max-height: 65vh; transform: scale(.92) translateY(12px); }
}


/* ── Custom confirm dialog animation ── */
#lex-confirm-dialog {
  animation: confirmPop .18s cubic-bezier(.34,1.56,.64,1);
}
@keyframes confirmPop {
  from { opacity:0; transform:translate(-50%,-50%) scale(.92); }
  to   { opacity:1; transform:translate(-50%,-50%) scale(1); }
}

/* ── Toast with undo button ── */
#toast button {
  vertical-align: middle;
}

/* ── Offline banner ── */
#offline-banner {
  animation: slideUp .3s ease;
}
@keyframes slideUp {
  from { opacity:0; transform:translateX(-50%) translateY(12px); }
  to   { opacity:1; transform:translateX(-50%) translateY(0); }
}

/* ═══════════════════════════════════════════════════════════
   MÓDULO INFORMES ALA/CFT
   Solo define lo que no existe en el sistema principal.
   Reutiliza: .card, .card-header, .form-group, .form-label,
              .form-grid, .btn-*, .table-wrap, .tabs, .tab
═══════════════════════════════════════════════════════════ */

/* ── Step bar ── */
.cfn-step-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 8px 14px;
  margin-bottom: 18px;
  flex-wrap: wrap;
  gap: 8px;
}
.cfn-steps { display: flex; align-items: center; gap: 2px; }
.cfn-step-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
.cfn-step {
  display: flex; align-items: center; gap: 7px;
  padding: 5px 10px; border-radius: 7px;
  cursor: pointer; transition: background .15s;
  border-bottom: 2px solid transparent;
}
.cfn-step:hover { background: var(--bg); }
.cfn-step.active { background: var(--bg); border-bottom-color: var(--navy); }
.cfn-sn {
  width: 20px; height: 20px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 800; flex-shrink: 0;
  transition: all .15s;
  background: var(--line); color: var(--muted);
}
.cfn-step.active .cfn-sn { background: var(--navy); color: #fff; }
.cfn-step.done   .cfn-sn { background: var(--success-bg); color: var(--success); }
.cfn-st { font-size: 12px; font-weight: 600; color: var(--muted); }
.cfn-step.active .cfn-st { color: var(--navy); }
.cfn-step.done   .cfn-st { color: var(--success); }
/* Etapa a la que todavía no se puede saltar: se ve claramente inalcanzable
   para que el clic sin efecto no parezca un botón roto. */
.cfn-step.is-locked { opacity: .45; cursor: not-allowed; }
.cfn-step.is-locked:hover { background: transparent; }
.cfn-sep { color: var(--line-mid); font-size: 14px; padding: 0 1px; user-select: none; }

/* ── Normativa (una sola: P-GCI-PFD) ── */
.cfn-norm-fija {
  padding: 4px 11px; font-size: 11px; font-weight: 700;
  letter-spacing: .05em; border-radius: 6px;
  background: var(--navy); color: #fff;
}

/* ── Phase (step content) ── */
.cfn-phase     { display: none; }
.cfn-phase.on  { display: block; }

/* ── Table cells (table uses .table-wrap from LEXEA) ── */
.cfn-th {
  background: var(--bg);
  font-size: 10px; font-weight: 700;
  color: var(--muted); letter-spacing: .06em;
  text-transform: uppercase;
  padding: 9px 10px; text-align: left;
  border-bottom: 2px solid var(--line);
  white-space: nowrap;
}
.cfn-td {
  padding: 5px 6px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}
.cfn-tr:last-child .cfn-td { border-bottom: none; }
.cfn-td-num {
  font-size: 11px; font-weight: 700;
  color: var(--muted); text-align: center;
  width: 36px;
}
/* Compact inputs inside the subjects table */
#cfn-tbody input, #cfn-tbody select {
  height: 34px;
  padding: 5px 9px;
  font-size: 13px;
}

/* ── Resumen rows ── */
.cfn-group-label {
  font-size: 10px; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; margin-bottom: 8px; padding: 0 2px;
}
.cfn-label-warn { color: var(--warn); }
.cfn-label-ok   { color: var(--success); }
.cfn-suj-row {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 10px; border-radius: 7px;
  margin-bottom: 5px; font-size: 13px;
}
.cfn-suj-row.cfn-suj-warn { background: var(--warn-bg);    border: 1px solid var(--gold-border); }
.cfn-suj-row.cfn-suj-ok   { background: var(--success-bg); border: 1px solid #c6f6d5; }
.cfn-suj-icon { font-size: 12px; flex-shrink: 0; }
.cfn-suj-name { font-weight: 600; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfn-suj-id   { font-size: 11px; color: var(--muted); white-space: nowrap; }
.cfn-empty-row { font-size: 12px; color: var(--muted); font-style: italic; padding: 4px 2px; margin: 0; }

/* ── Error box ── */
.cfn-err-box {
  background: var(--danger-bg);
  border: 1px solid var(--danger-mid);
  border-radius: var(--r);
  padding: 11px 15px;
  color: var(--danger);
  font-size: 12px;
  margin-bottom: 14px;
}

/* ── Model selector ── */
.cfn-model-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin-bottom: 14px;
}
.cfn-model-card {
  border: 1.5px solid var(--line);
  border-radius: var(--r);
  padding: 12px 13px;
  cursor: pointer;
  transition: all .18s;
  background: var(--bg);
}
.cfn-model-card:hover  { border-color: var(--navy); background: var(--card); }
.cfn-model-card.active {
  border-color: var(--navy);
  background: var(--card);
  box-shadow: 0 0 0 3px rgba(11,31,53,.08);
}
.cfn-model-badge {
  display: inline-block; font-size: 9px; font-weight: 700;
  letter-spacing: .05em; text-transform: uppercase;
  padding: 2px 8px; border-radius: 100px; margin-bottom: 8px;
}
.cfn-badge-quality  { background: var(--success-bg); color: var(--success); }
.cfn-badge-balanced { background: var(--blue-bg);    color: var(--blue-text); }
.cfn-badge-economy  { background: var(--warn-bg);    color: var(--warn); }
.cfn-model-name   { font-size: 14px; font-weight: 700; color: var(--navy); margin-bottom: 2px; }
.cfn-model-detail { font-size: 10px; color: var(--muted); margin-bottom: 8px; font-family: 'IBM Plex Mono', monospace; }
.cfn-model-pros   { font-size: 11px; color: var(--text-mid); line-height: 1.7; margin-bottom: 9px; }
.cfn-model-cost {
  font-size: 11px; font-weight: 700;
  color: var(--gold-dim); font-family: 'IBM Plex Mono', monospace;
  padding: 3px 8px; background: var(--gold-pale);
  border-radius: 5px; display: inline-block;
}
.cfn-model-card.active .cfn-model-cost { background: var(--navy); color: #fff; }
.cfn-model-footer {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; padding-top: 12px; border-top: 1px solid var(--line);
  flex-wrap: wrap;
}

/* ── Output card ── */
.cfn-out-card {
  display: none;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  margin-top: 4px;
}
.cfn-out-hdr {
  background: var(--navy);
  padding: 10px 18px;
  display: flex; justify-content: space-between; align-items: center;
  color: #fff;
  font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
}
.cfn-asunto-strip {
  display: none;
  background: var(--gold-pale);
  border-bottom: 1px solid var(--gold-border);
  padding: 9px 18px;
}
#cfn-report {
  width: 100%; background: transparent; border: none;
  padding: 20px 22px; color: var(--text);
  font-size: 12.5px; line-height: 1.9;
  font-family: 'IBM Plex Mono', 'Courier New', monospace;
  min-height: 460px; resize: vertical; outline: none;
  white-space: pre-wrap; display: none;
}
.cfn-out-footer {
  padding: 8px 16px;
  border-top: 1px solid var(--line);
  display: flex; align-items: center; gap: 10px;
  background: var(--bg);
}
#cfn-cost { font-size: 10px; color: var(--muted); font-family: 'IBM Plex Mono', monospace; }

/* ── Loading dots ── */
.cfn-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--navy); display: inline-block;
  animation: cfnPulse 1.2s ease-in-out infinite;
}
.cfn-dot:nth-child(2) { animation-delay: .2s; }
.cfn-dot:nth-child(3) { animation-delay: .4s; }
@keyframes cfnPulse { 0%,100%{opacity:.15} 50%{opacity:1} }

/* ── Hallazgos: sujeto blocks ── */
.cfn-suj-block { transition: box-shadow .15s; }

/* ── Sujeto con hallazgos sospechosos ── */
.cfn-with-findings .cfn-suj-head { background: var(--warn-bg) !important; }
.cfn-suj-block:hover { box-shadow: var(--shadow-md); }

/* ── Responsive ── */
@media (max-width: 680px) {
  .cfn-model-grid { grid-template-columns: 1fr; }
  .cfn-model-footer { flex-direction: column; align-items: stretch; }
  .cfn-model-footer .btn-primary { width: 100%; justify-content: center; }
  .cfn-step-bar { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 500px) {
  .cfn-steps { gap: 0; }
  .cfn-st { display: none; }
}

/* ── Copy buttons in suj-head ── */
.cfn-copy-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 8px; font-size: 11px; font-weight: 600;
  color: var(--muted); background: var(--bg);
  border: 1px solid var(--line-mid); border-radius: 5px;
  cursor: pointer; font-family: inherit; transition: all .15s;
  white-space: nowrap;
}
.cfn-copy-btn:hover { color: var(--navy); background: var(--card); border-color: var(--navy); }

/* ── Draft rows ── */
.cfn-draft-row {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 2px; border-bottom: 1px solid var(--line);
  cursor: pointer; transition: background .12s; border-radius: 6px;
}
.cfn-draft-row:last-child { border-bottom: none; }
.cfn-draft-row:hover { background: var(--bg); padding-left: 6px; padding-right: 6px; }
.cfn-draft-active { background: var(--gold-pale); }
.cfn-draft-active:hover { background: var(--gold-pale); }
.cfn-draft-done { opacity: .65; }

/* ── Inline icon-only copy button (next to name/ID in suj-head) ── */
.cfn-icon-copy {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; padding: 0; flex-shrink: 0;
  background: none; border: none; border-radius: 4px;
  color: var(--line-mid); cursor: pointer;
  transition: color .15s, background .15s;
  opacity: 0;
}
.cfn-suj-head:hover .cfn-icon-copy { opacity: 1; }
.cfn-icon-copy:hover { color: var(--navy); background: var(--bg); opacity: 1; }

/* ── SATJE novedades ───────────────────────────────────────── */
.satje-nov-card {
  border-radius: var(--r-lg);
  margin-bottom: 12px;
  overflow: hidden;
  border: 1px solid var(--line);
  background: var(--card);
  box-shadow: var(--shadow-folio);
}
.satje-nov-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  background: var(--card);
  cursor: pointer;
  transition: background .15s ease;
  gap: 12px;
}
.satje-nov-head:hover { background: var(--bg-mid); }
.satje-card-info {
  min-width: 0;
  flex: 1;
}
.satje-card-name-row {
  display: flex;
  align-items: center;
  gap: 5px;
}
.satje-card-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.satje-card-open {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: none;
  border-radius: 5px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  opacity: .5;
  transition: opacity .14s, background .14s, color .14s;
}
.satje-card-open:hover {
  opacity: 1;
  background: var(--gold-pale);
  color: var(--gold-dim);
}
.satje-nov-head:hover .satje-card-open { opacity: .8; }
.satje-card-number {
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
  font-family: 'DM Sans', sans-serif;
}
.satje-card-lastmov {
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
  font-family: 'DM Sans', sans-serif;
}
.satje-card-lastmov strong { color: var(--text-mid); font-weight: 600; }
.satje-card-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.satje-card-chevron {
  color: var(--muted);
  flex-shrink: 0;
  transition: transform .25s ease;
  display: flex;
  align-items: center;
}
.satje-nov-head.satje-head-open .satje-card-chevron {
  transform: rotate(180deg);
}

/* Animated expand/collapse body */
.satje-nov-body-collapse {
  max-height: 0;
  overflow: hidden;
  transition: max-height .35s ease, opacity .25s ease;
  opacity: 0;
}
.satje-nov-body-collapse.satje-body-open {
  max-height: 3000px;
  opacity: 1;
}
.satje-nov-body-inner {
  padding: 0 18px 14px;
  background: var(--bg);
  border-top: 1px solid var(--line);
}
.satje-nov-body-empty {
  font-size: 12px;
  color: var(--muted);
  font-style: italic;
  padding: 10px 0;
}

/* Compact action list inside novedades cards */
.satje-list-compact .satje-act-item-v2 {
  padding: 8px 0;
}
.satje-list-compact .satje-act-item-v2:first-child {
  padding-top: 10px;
}

/* Card footer */
.satje-card-footer {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  margin-top: 8px;
}

/* Button styles for novedades cards */
/* Marcar leído es una acción ordinaria, no un logro: el verde la convertía en
   lo más ruidoso de la pantalla y quedaba fuera de la paleta navy/dorado. */
.satje-btn-leido {
  display: inline-flex !important;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--navy) !important;
  border-color: var(--line-mid) !important;
}
.satje-btn-leido:hover {
  background: var(--paper-warm) !important;
  border-color: var(--navy-light) !important;
}
.satje-btn-historial {
  display: inline-flex !important;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--navy) !important;
}
.satje-btn-historial:hover {
  background: var(--bg-mid) !important;
  color: var(--navy) !important;
}
.satje-btn-back {
  display: inline-flex !important;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--gold) !important;
}
.satje-btn-back:hover {
  background: var(--gold-pale) !important;
  color: var(--gold-dim) !important;
}
.satje-btn-instancia {
  display: inline-flex !important;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--text-mid) !important;
}
.satje-btn-instancia:hover {
  background: var(--bg-mid) !important;
  color: var(--navy) !important;
}

/* Filter/sort bar */
.satje-filter-bar select,
.satje-filter-bar input[type="date"] {
  width: auto;
  height: 32px;
  padding: 4px 8px;
  font-size: 12px;
}
.satje-filter-bar label {
  font-size: 11px;
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 6px;
}

/* .satje-section-title se retiró: duplicaba el titular de la barra superior. */

/* Rango de fechas replegado + orden. El filtro de precisión no ocupa el sitio
   más visible; se despliega cuando hace falta. */
.satje-subbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.satje-rango summary{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line-mid);border-radius:999px;background:var(--card);font-size:11.5px;font-weight:700;color:var(--text-mid);cursor:pointer;list-style:none;user-select:none}
.satje-rango summary::-webkit-details-marker{display:none}
.satje-rango summary:hover{border-color:var(--gold-border);color:var(--gold-dim);background:var(--gold-pale)}
.satje-rango summary:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.satje-rango[open] summary{border-color:var(--gold-border);color:var(--gold-dim);background:var(--gold-pale)}
.satje-rango-body{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:9px}
.satje-orden{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:var(--muted);white-space:nowrap}
.satje-viewer-controls { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
.satje-acts-list { border:1px solid var(--line); border-radius:8px; background:var(--card); overflow:hidden; }
.satje-act-item { border-top:1px solid var(--line); }
.satje-act-item:first-child { border-top:none; }
.satje-act-head { display:grid; grid-template-columns:1fr auto; gap:8px; align-items:start; padding:9px 10px; cursor:pointer; background:var(--card); }
.satje-act-head:hover { background:var(--bg); }
.satje-act-meta { display:flex; align-items:center; gap:6px; margin-bottom:4px; flex-wrap:wrap; }
.satje-act-date { font-size:10px; color:var(--muted); font-weight:600; }
.satje-act-type { font-size:9px; }
.satje-act-summary { font-size:12px; color:var(--text); line-height:1.35; }
.satje-act-arrow { color:var(--muted); font-size:12px; padding-top:2px; }
.satje-act-content { background:var(--bg); border-top:1px dashed var(--line-mid); padding:10px; }
.satje-legal-text { white-space:pre-wrap; overflow-wrap:anywhere; margin:0; font-family:'DM Sans',sans-serif; font-size:12px; line-height:1.6; color:var(--text); max-height:420px; overflow:auto; }
.satje-content-missing { font-size:12px; color:var(--muted); font-style:italic; }
.satje-content-warning { margin-bottom:10px; padding:10px; border:1px solid var(--gold-border); background:var(--gold-pale); border-radius:8px; font-size:11px; line-height:1.5; color:var(--text-mid); }
.satje-content-warning code { font-family:monospace; font-size:10px; }
/* ── SATJE drawer timeline ── */
.satje-tl{position:relative;padding-left:18px}
.satje-tl::before{content:'';position:absolute;left:5px;top:6px;bottom:6px;width:1.5px;background:var(--line)}
.satje-tl-item{position:relative;padding:8px 0 8px 12px;border-bottom:1px solid var(--line)}
.satje-tl-item:last-child{border-bottom:none}
.satje-tl-item::before{content:'';position:absolute;left:-13px;top:14px;width:8px;height:8px;border-radius:50%;background:var(--line-mid);border:2px solid var(--card)}
.satje-tl-item.is-new::before{background:var(--gold);border-color:var(--warn-bg)}
.satje-tl-fecha{font-size:10px;font-weight:700;color:var(--muted);margin-bottom:3px}
.satje-tl-titulo{font-size:12px;font-weight:700;color:var(--text);margin-bottom:3px;line-height:1.35}
.satje-tl-actividad{font-size:11px;color:var(--text-mid);line-height:1.45;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}

/* Import button for SATJE actuaciones - always visible */
.satje-import-btn {
  font-size: 10px;
  padding: 3px 10px;
  border-radius: 20px;
  border: 1px solid var(--navy);
  background: transparent;
  color: var(--navy);
  cursor: pointer;
  font-weight: 600;
  letter-spacing: .03em;
  transition: opacity .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
  white-space: nowrap;
  opacity: 1;
  pointer-events: auto;
  line-height: 1;
}
.satje-import-btn:not(:disabled):hover {
  background: var(--navy);
  color: white !important;
}
.satje-import-btn:disabled {
  opacity: .5;
  cursor: default;
  color: var(--line-mid);
  border-color: var(--line-mid);
  pointer-events: none;
}
.satje-act-new {
  display: inline-block;
  font-size: 9px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--warn-bg);
  /* --gold sobre el crema del distintivo daba 2.43:1; el dorado oscuro sube a
     4.88 sin cambiar el color que identifica lo nuevo. */
  color: var(--gold-dim);
  margin-right: 6px;
  text-transform: uppercase;
  vertical-align: middle;
}
.satje-pending-card {
  border: 1.5px solid var(--gold);
  border-radius: var(--r);
  padding: 14px 16px;
  margin-bottom: 12px;
  background: var(--card);
}


/* ── SATJE Drawer Tab Styling ── */
.satje-drw-section {
  margin-bottom: 20px;
}
.satje-drw-header {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: 12px;
}

/* Merged compact config bar (action + status) */
.satje-drw-config-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}

.satje-drw-config-bar > div:last-child {
  margin-left: auto;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 50%;
}

/* Instance toggle button with proper text handling */
.satje-drw-instance-toggle {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  margin-bottom: 12px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  color: var(--text);
  text-transform: uppercase;
  letter-spacing: .05em;
  cursor: pointer;
  transition: background .15s;
}

.satje-drw-instance-toggle:hover {
  background: var(--bg-mid);
}

.satje-drw-instance-toggle-label {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  overflow: hidden;
}

.satje-drw-instance-toggle-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.satje-drw-instance-toggle-count {
  flex-shrink: 0;
  color: var(--muted);
  font-size: 10px;
}

.satje-drw-instance-toggle-chevron {
  flex-shrink: 0;
  color: var(--muted);
  font-size: 12px;
}

.satje-drw-selector {
  padding: 14px 16px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  margin-bottom: 16px;
}
.satje-drw-selector-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 10px;
}
.satje-drw-selector.pending-cause .satje-drw-selector-title {
  color: var(--danger);
}
.satje-drw-selector-option {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 8px 10px;
  margin-bottom: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  background: var(--bg);
  transition: background .15s;
}
.satje-drw-selector-option:hover {
  background: var(--bg-mid);
}
.satje-drw-selector-option input {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  cursor: pointer;
  margin-top: 2px;
}
.satje-drw-selector-option-label {
  min-width: 0;
  flex: 1;
}
.satje-drw-selector-option-name {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.satje-drw-selector-option-meta {
  font-size: 11px;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.satje-drw-selector-button {
  margin-top: 12px;
}
.satje-drw-empty {
  font-size: 12px;
  color: var(--muted);
  font-style: italic;
}

/* Horizontal card layout for actuations (replaces timeline) */
.satje-drw-actuation-card {
  display: grid;
  grid-template-columns: 65px 1fr auto;
  gap: 14px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 6px;
  margin-bottom: 8px;
  align-items: start;
  background: var(--card);
}

.satje-drw-actuation-date {
  font-size: 10px;
  color: var(--muted);
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
}

.satje-drw-actuation-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.satje-drw-actuation-body .satje-tl-titulo {
  margin: 0;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.satje-drw-actuation-body .satje-tl-actividad {
  line-height: 1.4;
}

.satje-drw-actuation-actions {
  display: flex;
  gap: 6px;
  white-space: nowrap;
  flex-shrink: 0;
}

/* Legacy novedades styling (simplified) */
.satje-drw-novedades-instance {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  margin-bottom: 10px;
  margin-top: 12px;
  text-transform: uppercase;
  letter-spacing: .05em;
}
.satje-drw-novedades-instance:first-child {
  margin-top: 0;
}

/* Timeline item imported state */
.satje-drw-tl-imported {
  opacity: 0.65;
}

.satje-dash-item:hover { background: var(--bg-mid); transition: background .15s; }

/* ═══════════════════════════════════════════════════════
   DRAWER REDESIGN — 3-dot global actions menu
   ═══════════════════════════════════════════════════════ */
.drawer-more-wrap {
  position: absolute;
  top: 16px;
  right: 56px;
}
.drawer-more-btn {
  background: rgba(255,255,255,.12);
  border: none;
  width: 32px;
  height: 32px;
  border-radius: 7px;
  color: rgba(255,255,255,.7);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .15s;
  padding: 0;
}
.drawer-more-btn:hover { background: rgba(255,255,255,.22); color: white; }
.drawer-more-menu {
  display: none;
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  background: var(--card);
  border-radius: 10px;
  box-shadow: 0 8px 30px rgba(0,0,0,.18), 0 2px 8px rgba(0,0,0,.06);
  border: 1px solid var(--line);
  min-width: 192px;
  padding: 5px;
  z-index: 200;
  animation: fadeInDown .12s ease both;
}
.drawer-more-menu.open { display: block; }
@keyframes fadeInDown {
  from { opacity: 0; transform: translateY(-5px); }
  to   { opacity: 1; transform: translateY(0); }
}
.drawer-more-item {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  padding: 8px 10px;
  border: none;
  background: none;
  border-radius: 7px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  font-family: inherit;
  text-align: left;
  transition: background .12s;
}
.drawer-more-item:hover { background: var(--bg); }
.drawer-more-item.danger { color: var(--danger); }
.drawer-more-item.danger:hover { background: var(--danger-bg); }
.drawer-more-divider { height: 1px; background: var(--line); margin: 4px 0; }

/* ═══════════════════════════════════════════════════════
   SATJE DRAWER TAB — redesigned
   ═══════════════════════════════════════════════════════ */
.satje-drw-root {
  display: flex;
  flex-direction: column;
  padding-bottom: 24px;
}
.satje-drw-tab-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 12px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--line);
}
.satje-drw-tab-label {
  font-size: 10px;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
}
.satje-drw-gear-btn {
  background: none;
  border: 1px solid var(--line-mid);
  border-radius: 6px;
  width: 26px;
  height: 26px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  transition: all .13s;
  padding: 0;
  flex-shrink: 0;
}
.satje-drw-gear-btn:hover,
.satje-drw-gear-btn.active {
  background: var(--bg);
  border-color: var(--navy-light);
  color: var(--navy);
}
/* ── SATJE config modal (revincular / agregar instancias) ── */
.satje-cfg-gear { color: var(--muted); border-radius: 8px; transition: color .15s, background .15s; }
.satje-cfg-gear:hover { color: var(--navy); background: var(--gold-pale); }
.satje-cfg-sub {
  display: flex; align-items: center; gap: 6px;
  font-family: monospace; font-size: 11.5px; letter-spacing: .04em;
  color: var(--muted); margin: -2px 0 14px;
}
.satje-cfg-sub .lex-icon { color: var(--gold-dim); flex-shrink: 0; }
.satje-cfg-card {
  background: var(--bg); border: 1px solid var(--line);
  border-radius: 10px; padding: 13px 15px; margin-bottom: 15px;
}
.satje-cfg-grid { display: flex; flex-direction: column; gap: 8px; }
.satje-cfg-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
}
.satje-cfg-lbl { font-size: 11.5px; color: var(--muted); flex-shrink: 0; }
.satje-cfg-val {
  font-size: 12px; font-weight: 600; color: var(--text-mid);
  text-align: right; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; max-width: 62%;
}
.satje-cfg-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.satje-cfg-btn { font-size: 12px; flex: 1 1 auto; justify-content: center; }
.satje-cfg-hint {
  font-size: 11px; color: var(--muted); line-height: 1.5;
  margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line);
}
.satje-cfg-back {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11.5px; color: var(--muted); margin-bottom: 12px; padding: 3px 6px 3px 3px;
}
.satje-cfg-back:hover { color: var(--navy); }
.satje-cfg-step { font-size: 12px; font-weight: 600; color: var(--text-mid); margin-bottom: 10px; }
.satje-cfg-causa-ref { font-size: 11.5px; color: var(--muted); margin-bottom: 10px; }
.satje-cfg-causa-ref strong { color: var(--text-mid); }
.satje-cfg-empty { font-size: 12px; color: var(--muted); font-style: italic; padding: 6px 0; }
.satje-cfg-opt {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 9px 11px; margin-bottom: 7px;
  border: 1px solid var(--line); border-radius: 8px;
  cursor: pointer; background: var(--card); transition: border-color .14s, background .14s;
}
.satje-cfg-opt:hover { border-color: var(--gold); background: var(--gold-pale); }
.satje-cfg-opt input { width: 15px; height: 15px; flex-shrink: 0; cursor: pointer; margin-top: 1px; }
.satje-cfg-opt-txt { min-width: 0; }
.satje-cfg-opt-name { font-size: 12.5px; font-weight: 600; color: var(--text); }
.satje-cfg-opt-meta { font-size: 11px; color: var(--muted); margin-top: 1px; }
.satje-cfg-loading {
  display: flex; align-items: center; gap: 10px;
  font-size: 12px; color: var(--muted); padding: 18px 4px;
}
.satje-cfg-spin {
  display: inline-block; width: 16px; height: 16px; flex-shrink: 0;
  border: 2px solid var(--gold-border); border-right-color: transparent;
  color: var(--gold); border-radius: 50%; animation: lexSpin .6s linear infinite;
}
.satje-cfg-error {
  display: flex; align-items: flex-start; gap: 8px;
  font-size: 12px; color: var(--danger); line-height: 1.45;
  background: var(--danger-bg); border-radius: 8px; padding: 10px 12px; margin-bottom: 12px;
}
.satje-cfg-error .lex-icon { flex-shrink: 0; margin-top: 1px; }

/* ═══ Nuevo/Editar Expediente — asistente por pasos (wizard) ═══ */
.exp-wiz { width: min(660px, 100%); display: none; }
.exp-wiz-head { align-items: flex-start; }
.exp-wiz-head-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.exp-wiz-sub {
  display: none; align-items: center; gap: 6px;
  font-family: monospace; font-size: 11.5px; letter-spacing: .04em; color: var(--muted);
}
.exp-wiz-sub .lex-icon { color: var(--gold-dim); flex-shrink: 0; }

/* progress stepper */
.exp-wiz-progress {
  display: flex; align-items: center; gap: 4px;
  padding: 16px 24px 4px; overflow-x: auto;
}
.exp-wiz-dot {
  display: inline-flex; align-items: center; gap: 7px;
  background: none; border: none; padding: 3px 4px; cursor: default;
  font-family: inherit; white-space: nowrap; border-radius: 8px; transition: background .15s;
}
.exp-wiz-dot[onclick] { cursor: pointer; }
.exp-wiz-dot[onclick]:hover { background: var(--gold-pale); }
.exp-wiz-dot-num {
  width: 22px; height: 22px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; font-size: 11px; font-weight: 700;
  border: 1.5px solid var(--line-mid); color: var(--muted); background: var(--card);
  transition: all .16s;
}
.exp-wiz-dot-lbl { font-size: 11.5px; font-weight: 600; color: var(--muted); transition: color .16s; }
.exp-wiz-dot.active .exp-wiz-dot-num { border-color: var(--navy); background: var(--navy); color: #fff; }
.exp-wiz-dot.active .exp-wiz-dot-lbl { color: var(--navy); }
.exp-wiz-dot.done .exp-wiz-dot-num { border-color: var(--gold); background: var(--gold-pale); color: var(--gold-dim); }
.exp-wiz-dot.done .exp-wiz-dot-lbl { color: var(--text-mid); }
.exp-wiz-dot-sep { flex: 1 1 14px; min-width: 14px; height: 1.5px; background: var(--line-mid); border-radius: 2px; }
.exp-wiz-dot-sep.done { background: var(--gold-border); }

.exp-wiz-body { min-height: 180px; }
.exp-wiz-panel { animation: modalIn .2s ease both; }
.exp-wiz-lead { margin-bottom: 16px; }
.exp-wiz-lead-title {
  font-family: 'Playfair Display', serif; font-size: 16px; font-weight: 700;
  color: var(--navy); margin-bottom: 3px;
}
.exp-wiz-lead-desc { font-size: 12px; color: var(--muted); line-height: 1.5; }

.exp-wiz-search { display: flex; align-items: center; gap: 8px; }
.exp-wiz-search input { flex: 1; }
.exp-wiz-search .btn-primary { flex-shrink: 0; white-space: nowrap; }
.exp-wiz-results { margin-top: 12px; }
.exp-wiz-results:empty { margin-top: 0; }
.exp-wiz-step-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin-bottom: 9px; }
.exp-wiz-causa-ref { font-size: 11.5px; color: var(--muted); margin-bottom: 12px; }
.exp-wiz-causa-ref strong { color: var(--text-mid); }
.exp-wiz-link {
  display: inline-block; margin-top: 14px; padding: 4px 2px;
  background: none; border: none; cursor: pointer; font-family: inherit;
  font-size: 12px; font-weight: 600; color: var(--gold-dim);
  border-bottom: 1px dashed var(--gold-border); transition: color .15s;
}
.exp-wiz-link:hover { color: var(--navy); }
.exp-wiz-foot { justify-content: space-between; }
.exp-wiz-foot .btn-cancel { display: inline-flex; align-items: center; gap: 5px; }

@media (max-width: 560px) {
  .exp-wiz-progress { padding: 14px 18px 2px; }
  .exp-wiz-dot-lbl { display: none; }
  .exp-wiz-dot-sep { min-width: 10px; }
}

.satje-drw-section { margin-bottom: 4px; }
.satje-drw-section-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.satje-drw-section-label {
  font-size: 10px;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
}
.satje-drw-count-badge {
  background: var(--orange-bg);
  color: var(--orange);
  font-size: 10px;
  font-weight: 700;
  padding: 1px 7px;
  border-radius: 99px;
  white-space: nowrap;
}
.satje-drw-empty-inline {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 8px;
}
.satje-drw-empty-state {
  text-align: center;
  padding: 32px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
.satje-drw-empty-title { font-size: 13px; font-weight: 700; color: var(--text-mid); }
.satje-drw-empty-sub { font-size: 12px; color: var(--muted); line-height: 1.5; max-width: 280px; }
/* Compact activity list */
.satje-act-list { display: flex; flex-direction: column; }
.satje-act-item-v2 {
  display: grid;
  grid-template-columns: 58px 1fr auto;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px solid var(--line);
  align-items: flex-start;
  position: relative;
}
.satje-act-item-v2:last-child { border-bottom: none; }
.satje-act-item-v2.satje-act-imported-v2 { opacity: 0.6; }
.satje-act-date-col {
  font-size: 10px;
  color: var(--muted);
  font-weight: 600;
  line-height: 1.45;
  padding-top: 1px;
  word-break: break-word;
}
.satje-act-content-col { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.satje-act-title-v2 {
  font-size: 12px;
  font-weight: 700;
  color: var(--text);
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.satje-act-inst-v2 {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
}
.satje-act-preview-v2 {
  font-size: 11px;
  color: var(--text-mid);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.satje-act-preview-v2.is-expanded { display:block; overflow:visible; -webkit-line-clamp:unset; }
.satje-act-preview-toggle {
  align-self: flex-start;
  background: none;
  border: none;
  padding: 0;
  font-size: 10px;
  font-weight: 700;
  color: var(--navy-light);
  cursor: pointer;
  font-family: inherit;
}
.satje-act-preview-toggle:hover { color: var(--navy); }
.satje-act-icon-actions {
  display: flex;
  gap: 3px;
  align-items: flex-start;
  flex-shrink: 0;
  padding-top: 1px;
  opacity: 0;
  transition: opacity .15s;
}
.satje-act-item-v2:hover .satje-act-icon-actions { opacity: 1; }
@media (hover: none) { .satje-act-icon-actions { opacity: 1; } }
.satje-act-icon-btn {
  background: none;
  border: 1px solid var(--line);
  border-radius: 5px;
  width: 24px;
  height: 24px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  transition: all .12s;
  padding: 0;
  flex-shrink: 0;
}
.satje-act-icon-btn:hover { background: var(--bg-mid); color: var(--navy); border-color: var(--line-mid); }
.satje-act-icon-btn:disabled { opacity: 0.35; cursor: default; pointer-events: none; }
.satje-act-icon-btn.imported { border-color: var(--success); color: var(--success); opacity: 0.55; }
/* Historial collapsible */
.satje-drw-hist-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 10px 0;
  background: none;
  border: none;
  border-top: 1px solid var(--line);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
}
.satje-drw-hist-toggle:hover .satje-drw-hist-label { color: var(--navy); }
.satje-drw-hist-label {
  font-size: 10px;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  transition: color .12s;
}
.satje-drw-hist-count { font-size: 10px; color: var(--muted); font-weight: 500; flex: 1; }
.satje-drw-hist-chevron { color: var(--muted); flex-shrink: 0; transition: transform .2s; }
.satje-drw-hist-chevron.open { transform: rotate(180deg); }
.satje-drw-hist-body { padding-top: 8px; }
.satje-drw-expand-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-weight: 600;
  color: var(--navy);
  background: none;
  border: 1px solid var(--line-mid);
  border-radius: 6px;
  padding: 5px 10px;
  cursor: pointer;
  font-family: inherit;
  margin-top: 10px;
  transition: all .13s;
}
.satje-drw-expand-btn:hover { background: var(--bg); border-color: var(--navy-light); }
.satje-drw-inst-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  padding: 8px 0 4px;
  margin-top: 4px;
  border-top: 1px solid var(--line);
}
.satje-drw-inst-label:first-child { margin-top: 0; border-top: none; }

/* ===================== TOGGLE SWITCH (esClienteImportante) ===================== */
.toggle-switch { display:flex; align-items:center; gap:10px; cursor:pointer; user-select:none; padding:6px 0; }
.toggle-switch input[type="checkbox"] { position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
.toggle-track { display:inline-block; width:42px; height:24px; background:var(--line-mid); border-radius:12px; position:relative; transition:background .2s; flex-shrink:0; }
.toggle-track::after { content:''; position:absolute; top:3px; left:3px; width:18px; height:18px; background:#fff; border-radius:50%; transition:left .2s; box-shadow:0 1px 3px rgba(0,0,0,.25); }
.toggle-switch input:checked ~ .toggle-track { background:var(--gold); }
.toggle-switch input:checked ~ .toggle-track::after { left:21px; }
.toggle-switch-lbl { font-size:12px; color:var(--muted); font-weight:600; transition:color .2s; }
.toggle-switch input:checked ~ .toggle-switch-lbl { color:var(--gold); }

/* ===================== PORTADA DE ACCESO (login) =====================
   Dos mitades: la izquierda es la portada comercial (marca, propuesta de
   valor, capacidades) y la derecha el formulario real. En móvil el orden se
   invierte: primero el acceso, la portada queda debajo como presentación. */
#login-screen,#verify-screen{position:fixed;inset:0;background:var(--navy);z-index:1000;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}
#login-screen.hidden,#verify-screen.hidden{display:none}
.auth-hidden{display:none!important}
.auth-shell{min-height:100%;display:grid;grid-template-columns:1.06fr .94fr}

/* ── Entrada escalonada (cada bloque declara su propio --d) ── */
.auth-rise{animation:authRise .72s cubic-bezier(.16,.84,.44,1) both;animation-delay:var(--d,0s)}
@keyframes authRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* ── Portada / panel de marca ──
   Sin gradientes flotantes: un solo resplandor fijo detrás de la ficha, que es
   donde debe mirar el ojo. Los datos judiciales van en la face utilitaria mono,
   como en un documento mecanografiado. */
.auth-brand{position:relative;overflow:hidden;display:flex;align-items:center;padding:56px 5.5vw;background:linear-gradient(158deg,#06162743 0%,#071a2d 0%,var(--navy) 52%,#0e2740 100%);color:#fff}
.auth-brand::before{content:'';position:absolute;top:38%;left:12%;width:52%;height:46%;background:radial-gradient(closest-side,rgba(200,152,42,.16),rgba(200,152,42,0));pointer-events:none}
.auth-brand::after{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg width='4' height='4' viewBox='0 0 4 4' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 3h1v1H1V3zm2-2h1v1H3V1z' fill='%23ffffff' fill-opacity='0.03'/%3E%3C/svg%3E");pointer-events:none}
.auth-brand-inner{position:relative;z-index:1;width:100%;max-width:540px;margin:0 auto}
.auth-wordmark{display:block;font-family:'Playfair Display',Georgia,serif;font-size:44px;font-weight:900;color:var(--gold);letter-spacing:-2px;line-height:1}
/* Vuelta al sitio público: el logotipo y un enlace explícito junto al formulario. */
.auth-volver-marca{display:block;text-decoration:none;width:max-content}
.auth-volver{display:inline-flex;align-items:center;gap:6px;margin-bottom:14px;font-size:12px;font-weight:600;color:var(--muted);text-decoration:none;transition:color .17s}
.auth-volver:hover{color:var(--navy)}
.auth-wordmark sup{font-size:13px;font-weight:700;letter-spacing:2px;color:rgba(200,152,42,.5);vertical-align:super;margin-left:2px}
.auth-wordmark-rule{height:2px;width:70px;margin:15px 0 11px;background:linear-gradient(90deg,var(--gold),rgba(200,152,42,0));animation:authRule 1s .5s cubic-bezier(.2,.8,.2,1) both}
@keyframes authRule{from{width:0;opacity:0}to{width:70px;opacity:1}}
.auth-tagline{font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.38)}
.auth-headline{font-family:'Playfair Display',Georgia,serif;font-size:clamp(28px,2.9vw,40px);font-weight:800;line-height:1.14;letter-spacing:-1px;color:#fff;margin:30px 0 26px;text-wrap:balance}
.auth-headline em{font-style:italic;color:var(--gold)}

/* ── Ficha de causa: el elemento que se recuerda ──
   Se arma sola al cargar (papel → partes → actuaciones → sello de novedades),
   que es exactamente lo que hace el sistema tras revisar el SATJE. */
.ficha{margin:0;animation:fichaIn .85s .5s cubic-bezier(.16,.84,.44,1) both}
@keyframes fichaIn{from{opacity:0;transform:translateY(20px) scale(.985)}to{opacity:1;transform:none}}
.ficha-sheet{position:relative;border-radius:14px;padding:20px 22px 16px;background:linear-gradient(165deg,rgba(255,255,255,.075),rgba(255,255,255,.022));border:1px solid rgba(255,255,255,.10);box-shadow:0 26px 60px rgba(0,0,0,.34);overflow:hidden}
.ficha-sheet::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--gold),rgba(200,152,42,.35) 42%,rgba(200,152,42,0))}
.ficha-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.ficha-num{display:block;font-variant-numeric:tabular-nums;font-size:16px;font-weight:700;letter-spacing:.04em;color:var(--gold-pale)}
.ficha-materia{display:block;font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.34);margin-top:5px}
.ficha-flag{flex-shrink:0;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);background:var(--gold);border-radius:999px;padding:5px 10px;white-space:nowrap;animation:fichaFlag .5s 1.46s cubic-bezier(.2,1.4,.4,1) both}
@keyframes fichaFlag{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}
.ficha-partes{display:flex;flex-wrap:wrap;gap:6px 28px;margin:15px 0 4px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.08)}
.ficha-partes span{display:flex;flex-direction:column;font-size:13px;color:rgba(255,255,255,.8)}
.ficha-partes i{font-style:normal;font-size:9.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.3);margin-bottom:3px}
.ficha-acts{list-style:none;margin:0;padding:0}
.ficha-act{position:relative;display:grid;grid-template-columns:52px 78px 1fr;align-items:baseline;gap:0 12px;padding:9px 0 9px 10px;border-bottom:1px solid rgba(255,255,255,.05);animation:fichaAct .5s cubic-bezier(.16,.84,.44,1) both;animation-delay:var(--d,0s)}
@keyframes fichaAct{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
.ficha-act:last-child{border-bottom:none}
.ficha-act time{font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:600;color:rgba(255,255,255,.44);letter-spacing:.02em}
.ficha-act-tipo{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.46)}
.ficha-act-txt{font-size:12.5px;line-height:1.45;color:rgba(255,255,255,.74)}
.ficha-act.is-new{background:linear-gradient(90deg,rgba(200,152,42,.10),rgba(200,152,42,0) 78%);border-radius:6px}
.ficha-act.is-new::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--gold)}
.ficha-act.is-new time,.ficha-act.is-new .ficha-act-tipo{color:var(--gold)}
.ficha-act.is-new .ficha-act-txt{color:#fff}
.ficha-foot{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.34)}
.ficha-pulse{width:6px;height:6px;border-radius:50%;background:var(--gold);flex-shrink:0;box-shadow:0 0 0 0 rgba(200,152,42,.55);animation:fichaPulse 2.6s 1.7s ease-out infinite}
@keyframes fichaPulse{0%{box-shadow:0 0 0 0 rgba(200,152,42,.5)}70%{box-shadow:0 0 0 7px rgba(200,152,42,0)}100%{box-shadow:0 0 0 0 rgba(200,152,42,0)}}
.ficha-plazo{margin-left:auto;text-align:right;color:rgba(255,255,255,.42)}
.ficha-plazo b{font-weight:600;color:var(--gold-pale)}
.ficha-tag{display:block;margin-top:9px;text-align:right;font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.26)}

.auth-more-line{font-size:12.5px;line-height:1.65;color:rgba(255,255,255,.44);margin-top:26px;max-width:52ch}
.auth-trust{display:flex;flex-wrap:wrap;gap:5px 0;margin-top:26px;padding-top:18px;border-top:1px solid rgba(255,255,255,.08)}
.auth-trust-item{font-size:10px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:rgba(255,255,255,.34)}
/* El separador cierra el ítem anterior: si la línea se parte, no queda
   huérfano al principio de la siguiente. */
.auth-trust-item:not(:last-child)::after{content:'·';margin:0 11px;color:rgba(255,255,255,.2)}

/* ── Panel del formulario ── */
.auth-panel{position:relative;display:flex;align-items:center;justify-content:center;padding:52px 44px;background:var(--paper)}
.auth-panel::before{content:'';position:absolute;inset:0;background:radial-gradient(110% 70% at 50% -10%,rgba(255,255,255,.95),rgba(255,255,255,0) 62%);pointer-events:none}
.auth-form-wrap{position:relative;width:100%;max-width:394px;animation:authRise .72s .08s cubic-bezier(.16,.84,.44,1) both}
.auth-mini-brand{display:none;text-align:center;margin-bottom:26px}
.auth-mini-mark{font-family:'Playfair Display',Georgia,serif;font-size:36px;font-weight:900;color:var(--navy);letter-spacing:-1.8px;line-height:1}
.auth-mini-mark sup{font-size:11px;font-weight:700;color:rgba(200,152,42,.6);vertical-align:super;margin-left:2px}
.auth-mini-sub{font-size:10px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-top:7px}
.auth-form-title{font-family:'Playfair Display',Georgia,serif;font-size:27px;font-weight:800;color:var(--navy);letter-spacing:-.6px;line-height:1.15}
.auth-form-sub{font-size:13px;color:var(--muted);line-height:1.55;margin:7px 0 26px}
.auth-field{margin-bottom:15px}
.auth-label-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.auth-label{display:block;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.auth-input-wrap{position:relative;display:flex;align-items:center}
.auth-input-ic{position:absolute;left:13px;display:flex;color:var(--muted);pointer-events:none;transition:color .18s}
.auth-input-wrap:focus-within .auth-input-ic{color:var(--navy-light)}
.login-input{width:100%;box-sizing:border-box;padding:12px 14px 12px 40px;border:1.5px solid var(--line-mid);border-radius:11px;font-size:14px;font-family:inherit;color:var(--text);background:var(--card);outline:none;transition:border-color .18s,box-shadow .18s}
.login-input::placeholder{color:#a8a294}
.login-input:hover{border-color:#c4bdae}
.login-input:focus{border-color:var(--navy-light);box-shadow:0 0 0 4px rgba(26,64,104,.10)}
.login-input.is-invalid{border-color:var(--danger-mid);box-shadow:0 0 0 4px rgba(185,28,28,.09)}
#login-password{padding-right:46px}
.auth-eye{position:absolute;right:6px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:8px;color:var(--muted);cursor:pointer;transition:color .16s,background .16s}
.auth-eye:hover{color:var(--navy);background:rgba(11,31,53,.06)}
.auth-eye .ic-eye-off,.auth-eye.is-on .ic-eye{display:none}
.auth-eye.is-on .ic-eye-off{display:block}
.auth-hint{display:none;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--warn);margin-top:8px}
.auth-hint.is-visible{display:flex;animation:authRise .28s both}
.login-link-btn{background:none;border:none;color:var(--gold-dim);font-size:11.5px;font-weight:700;cursor:pointer;font-family:inherit;padding:0;text-decoration:none;transition:color .16s,opacity .16s}
.login-link-btn:hover{color:var(--gold);text-decoration:underline}
.login-link-btn.is-loading{opacity:.55;cursor:progress}
#login-forgot{margin-bottom:7px}

/* Botón principal: spinner al enviar. Sin barrido — el único momento con
   protagonismo en esta pantalla es la ficha de causa. */
.login-btn{position:relative;overflow:hidden;width:100%;padding:13px;background:linear-gradient(180deg,var(--navy-mid),var(--navy));color:#fff;border:none;border-radius:11px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;margin-top:20px;box-shadow:0 8px 20px rgba(11,31,53,.20);transition:transform .16s,box-shadow .2s}
.login-btn:hover{transform:translateY(-1px);box-shadow:0 13px 26px rgba(11,31,53,.28)}
.login-btn:active{transform:translateY(0)}
.login-btn:disabled{cursor:progress}
.login-btn-label{display:inline-block;transition:opacity .18s}
.login-btn-spinner{position:absolute;top:50%;left:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid rgba(255,255,255,.28);border-top-color:#fff;border-radius:50%;opacity:0;animation:authSpin .7s linear infinite}
.login-btn.is-loading .login-btn-label{opacity:0}
.login-btn.is-loading .login-btn-spinner{opacity:1}
@keyframes authSpin{to{transform:rotate(360deg)}}

/* Mensajes: .login-error (clase) la reutiliza el panel admin — el estilo de
   caja vive en el id para no alterar esos otros usos. */
.login-error{min-height:20px;font-size:12px;color:var(--danger);margin-top:12px;text-align:center}
#login-error{display:none;min-height:0;margin-top:14px;padding:11px 13px;border-radius:10px;background:var(--danger-bg);border:1px solid var(--danger-mid);color:var(--danger);font-size:12.5px;font-weight:600;line-height:1.5;text-align:left}
#login-error.is-visible{display:block;animation:authShake .45s cubic-bezier(.36,.07,.19,.97) both}
#login-error.is-ok{background:var(--success-bg);border-color:#86efac;color:var(--success);animation:authRise .3s both}
@keyframes authShake{0%,100%{transform:translateX(0)}18%{transform:translateX(-5px)}38%{transform:translateX(5px)}62%{transform:translateX(-3px)}82%{transform:translateX(2px)}}

/* Bloque comercial bajo el formulario */
.login-divider{display:flex;align-items:center;gap:10px;margin-bottom:16px;color:var(--muted);font-size:11.5px;letter-spacing:.04em}
.login-divider::before,.login-divider::after{content:'';flex:1;height:1px;background:var(--line)}
.login-subscribe{margin-top:30px;padding-top:22px;border-top:1px solid var(--line)}
.login-subscribe .login-divider{margin:0 0 14px}
.login-subscribe-title{font-size:13.5px;font-weight:800;color:var(--navy);text-align:center}
.login-subscribe-text{font-size:12px;color:var(--muted);line-height:1.55;text-align:center;margin:5px 0 13px}
.login-subscribe-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.login-cta{display:flex;align-items:center;justify-content:center;gap:7px;text-decoration:none;border-radius:10px;padding:11px 12px;font-size:13px;font-weight:800;border:1px solid var(--line-mid);transition:transform .16s,background .17s,border-color .17s,box-shadow .17s}
.login-cta:hover{transform:translateY(-1px)}
.login-cta-whatsapp{background:#16a34a;color:#fff;border-color:#16a34a;box-shadow:0 6px 16px rgba(22,163,74,.22)}
.login-cta-whatsapp:hover{background:#15803d;border-color:#15803d;box-shadow:0 10px 22px rgba(22,163,74,.3)}
.login-cta-mail{background:var(--card);color:var(--navy)}
.login-cta-mail:hover{border-color:var(--gold);box-shadow:0 6px 16px rgba(11,31,53,.08)}
.auth-more{display:none;align-items:center;justify-content:center;gap:7px;margin-top:26px;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.auth-more svg{animation:authBob 1.8s ease-in-out infinite}
@keyframes authBob{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
.auth-legal{font-size:10.5px;line-height:1.6;color:var(--muted);opacity:.75;text-align:center;margin-top:26px}
.auth-legal sup{font-size:7px;vertical-align:super}

/* ── Pantalla de verificación de correo ── */
.auth-solo{position:relative;z-index:1;min-height:100%;display:flex;align-items:center;justify-content:center;padding:28px 20px}
.auth-solo-card{width:100%;max-width:432px;background:var(--paper);border-radius:18px;padding:38px 34px 30px;text-align:center;box-shadow:0 28px 70px rgba(0,0,0,.4)}
.auth-solo-badge{width:56px;height:56px;margin:0 auto 16px;border-radius:16px;display:flex;align-items:center;justify-content:center;color:var(--gold-dim);background:var(--gold-pale);border:1px solid var(--gold-border)}
.auth-solo-mark{font-family:'Playfair Display',Georgia,serif;font-size:22px;font-weight:900;color:var(--navy);letter-spacing:-1px;margin-bottom:10px}
.auth-solo-mark sup{font-size:9px;font-weight:700;color:rgba(200,152,42,.6);vertical-align:super;margin-left:2px}
.auth-solo-text{font-size:13px;color:var(--text-mid);line-height:1.65;margin:9px 0 4px}
.auth-solo-card .login-link-btn{margin-top:14px}

/* ── Responsive: acceso primero, portada debajo ── */
@media (max-width:1180px){
  .auth-brand{padding:52px 44px}
  .auth-panel{padding:48px 36px}
}
/* Portátiles de poca altura: la portada se compacta para entrar sin scroll */
@media (min-width:981px) and (max-height:860px){
  .auth-brand{padding:38px 4.5vw}
  .auth-panel{padding:36px 40px}
  .auth-wordmark{font-size:37px}
  .auth-wordmark-rule{margin:12px 0 9px}
  .auth-headline{font-size:clamp(25px,2.3vw,33px);margin:22px 0 20px}
  .ficha-sheet{padding:16px 18px 13px}
  .ficha-act{padding:7px 0 7px 10px}
  .ficha-act-txt{font-size:12px}
  .auth-more-line{margin-top:18px;font-size:12px}
  .auth-trust{margin-top:18px;padding-top:14px}
}
@media (max-width:980px){
  .auth-shell{grid-template-columns:1fr}
  /* svh evita el salto por la barra de direcciones del navegador móvil */
  .auth-panel{order:1;min-height:100vh;min-height:100svh;padding:38px 22px 34px}
  .auth-brand{order:2;padding:52px 26px 60px}
  .auth-mini-brand{display:block}
  .auth-more{display:flex}
  .auth-brand-inner{max-width:560px}
  .auth-headline{margin-top:28px}
}
@media (max-width:520px){
  .auth-panel{padding:30px 18px 28px}
  .auth-form-title{font-size:24px}
  .auth-mini-mark{font-size:32px}
  .login-subscribe-actions{grid-template-columns:1fr}
  .auth-brand{padding:44px 18px 52px}
  .auth-wordmark{font-size:36px}
  .auth-headline{max-width:none}
  .ficha-sheet{padding:16px 15px 13px;border-radius:12px}
  .ficha-head{flex-direction:column;gap:10px}
  .ficha-num{font-size:13.5px}
  /* La columna del tipo de actuación se pliega bajo la fecha */
  .ficha-act{grid-template-columns:48px 1fr;gap:2px 10px}
  .ficha-act-tipo{grid-column:2}
  .ficha-act-txt{grid-column:2}
  .ficha-foot{flex-wrap:wrap;gap:6px 8px}
  .ficha-plazo{margin-left:0;width:100%;text-align:left}
}
@media (prefers-reduced-motion:reduce){
  .auth-rise,.auth-form-wrap,.auth-wordmark-rule,.auth-more svg,
  .ficha,.ficha-act,.ficha-flag,.ficha-pulse,
  #login-error.is-visible,#login-error.is-ok,.auth-hint.is-visible{animation:none!important}
  .login-btn:hover,.login-cta:hover{transform:none}
}

/* ===================== PROCURACIONES ===================== */
.proc-container{padding:24px;max-width:960px;margin:0 auto}
.proc-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.proc-title{display:flex;align-items:center;gap:10px;font-family:'Playfair Display',serif;font-size:18px;font-weight:700;color:var(--navy)}
.proc-title svg{color:var(--gold)}

.proc-config-card{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:20px;overflow:hidden}
.proc-config-section{padding:16px 20px;border-bottom:1px solid var(--line)}
.proc-config-section:last-child{border-bottom:none}
.proc-config-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:12px}
.proc-config-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}
.proc-radio-group{display:flex;gap:16px;height:38px;align-items:center}
.proc-radio{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}

.proc-search-section{margin-bottom:20px}
.proc-search-input{width:100%;padding:12px 16px;border:1.5px solid var(--line-mid);border-radius:10px;font-size:14px;font-family:inherit;background:var(--card);margin-bottom:12px;transition:border-color .15s}
.proc-search-input:focus{border-color:var(--navy-light);outline:none}
.proc-exp-list{max-height:280px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.proc-empty{padding:24px;text-align:center;color:var(--muted)}
.proc-exp-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}
.proc-exp-item:last-child{border-bottom:none}
.proc-exp-item:hover{background:var(--bg)}
.proc-exp-item.selected{background:var(--gold-pale)}
.proc-exp-item input[type="checkbox"]{width:16px;height:16px;accent-color:var(--gold)}
.proc-exp-num{font-family:monospace;font-weight:600;color:var(--navy);font-size:13px;min-width:140px}
/* En móvil el nombre del caso perdía ~190px por elipsis: "Comercial Andes S.A.
   vs Aseguradora del Pa…". Un nombre de caso a medias no identifica nada, así
   que en pantalla estrecha se deja envolver en dos líneas en vez de cortarse. */
.proc-exp-partes{font-size:12px;color:var(--muted);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){
  .proc-exp-partes{white-space:normal;overflow:visible;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.4}
}
.proc-sel-summary{padding:10px 14px;background:var(--gold-pale);border-radius:8px;font-size:13px;color:var(--gold-dim);font-weight:600;text-align:center;margin-top:10px}

.proc-config-cases{margin-top:20px;padding:20px;background:var(--card);border:1px solid var(--line);border-radius:12px}
.proc-config-cases-title{font-weight:600;color:var(--navy);margin-bottom:16px;font-size:15px}
.proc-case-config{padding:14px 0;border-bottom:1px solid var(--line)}
.proc-case-config:last-of-type{border-bottom:none}
.proc-case-num{font-family:monospace;font-weight:600;color:var(--navy);font-size:13px;margin-bottom:10px}
.proc-case-fields{display:flex;gap:12px;flex-wrap:wrap}
.proc-select{padding:8px 12px;border:1.5px solid var(--line-mid);border-radius:8px;font-size:13px;font-family:inherit;background:var(--bg);min-width:140px}
.proc-input-partes{flex:1;min-width:200px;padding:8px 12px;border:1.5px solid var(--line-mid);border-radius:8px;font-size:13px;font-family:inherit;background:var(--bg)}
.proc-generate-btn{margin-top:16px;width:100%;padding:14px;background:var(--navy);color:white;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:background .17s}
.proc-generate-btn:hover{background:var(--navy-mid)}
.proc-generate-btn:disabled{background:var(--line-mid);cursor:not-allowed}

.proc-result-section{margin-top:24px;animation:procSlideIn 0.5s ease-out}
@keyframes procSlideIn{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
.proc-result-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:16px}
.proc-result-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.proc-result-label{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--navy);font-size:15px}
.proc-result-label svg{color:var(--gold);flex-shrink:0}
.proc-copy-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border:1.5px solid var(--gold);border-radius:8px;background:transparent;color:var(--gold-dim);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}
.proc-copy-btn svg{flex-shrink:0}
.proc-copy-btn:hover{background:var(--gold);color:white}

/* ══════════════════════════════════════════
.proc-result-text{white-space:pre-wrap;font-size:13px;line-height:1.75;color:var(--text-mid);padding:16px;background:var(--bg);border-radius:8px;font-family:inherit}

/* ═══════════════════════════════════════════════════════════════
   CALCULADOR DE PLAZOS Y TÉRMINOS — rediseño premium sin scroll
   ═══════════════════════════════════════════════════════════════ */
/* La vista ocupa exactamente la altura disponible del contenido; cada panel
   gestiona su propio overflow, de modo que la página nunca muestra scrollbar. */
#view-calculador.active{display:flex;flex-direction:column;height:calc(100vh - var(--topbar-h) - 48px)}
.calc-shell.module-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;flex:1;min-height:0}
.calc-panel{display:flex;flex-direction:column;min-height:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-folio);overflow:hidden}
.calc-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 18px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--paper-warm),var(--card));flex-shrink:0}
.calc-panel-title{display:flex;align-items:center;gap:11px;min-width:0}
.calc-panel-icon{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--gold-pale);color:var(--gold-dim);border:1px solid var(--gold-border);flex-shrink:0}
.calc-panel-title h3{margin:0;font-family:'Playfair Display',serif;font-size:16px;font-weight:700;color:var(--navy);line-height:1.2}
.calc-panel-sub{font-size:10.5px;color:var(--muted);letter-spacing:.02em}
.calc-panel-body{flex:1;min-height:0;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:13px}
.calc-panel-body .form-group{margin-bottom:0}
.calc-panel-body .mgc-adv-toggle{margin-top:0}
.calc-row-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.calc-actions{display:flex;gap:8px;margin-top:auto;padding-top:4px}
@media(max-width:1000px){
  #view-calculador.active{display:block;height:auto}
  .calc-shell{grid-template-columns:1fr}
  .calc-panel-body{overflow:visible}
  .calc-panel+.calc-panel{margin-top:16px}
}
@media(max-width:560px){.calc-row-2{grid-template-columns:1fr}}
/* Pantallas de poca altura: se sacrifican textos secundarios antes que
   introducir scroll en los paneles o en el modal. */
@media(max-height:840px){
  .cp-seg-desc{display:none}
  .cp-vac-info{display:none}
  .calc-panel-body{gap:11px}
  .plazo-body{gap:9px}
  .mgc-adv{gap:9px}
  .plazo-body .cp-fe-empty{display:none}
}

/* Segmented control (Término / Plazo) */
.cp-seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border:1px solid var(--line-mid);border-radius:11px;background:var(--bg)}
.cp-seg-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:background .16s,color .16s,box-shadow .16s;gap:2px;color:var(--muted);font-family:inherit}
.cp-seg-btn:hover{background:rgba(255,255,255,.75);color:var(--navy)}
.cp-seg-btn.active{background:var(--navy);color:#fff;box-shadow:0 2px 8px rgba(11,31,53,.28)}
.cp-seg-name{font-size:13px;font-weight:700;line-height:1}
.cp-seg-desc{font-size:10px;opacity:.72;line-height:1.25}
.cp-seg-btn.active .cp-seg-desc{opacity:.85}

/* Toggle label (vacancias row) */
.cp-toggle-label{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none}

/* Tiempo row */
.cp-tiempo-row{display:flex;gap:8px}
.cp-cantidad-input{width:90px;flex-shrink:0}
.cp-unidad-select{flex:1}

/* Feriados add row */
.cp-fe-add-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:4px}
.cp-fe-add-row input[type=date]{width:140px;flex-shrink:0}
.cp-fe-add-row input[type=text]{flex:1;min-width:100px}
@media(max-width:500px){.cp-fe-add-row{flex-direction:column}.cp-fe-add-row input[type=date]{width:100%}}

/* Optional label suffix */
.form-label-opt{font-weight:400;font-style:italic;color:var(--muted);font-size:10px}

/* Vacancia dots */
.cp-vac-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--navy);margin-right:4px;vertical-align:middle}

/* Vacancia info */
.cp-vac-info{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.cp-vac-info div{font-size:10.5px;color:var(--muted);background:var(--bg);border:1px solid var(--line);padding:3px 9px;border-radius:999px;line-height:1.6;white-space:nowrap}
.cp-vac-info strong{color:var(--text-mid)}

/* Region label */
.cp-region-label{font-size:11px;color:var(--muted);margin-top:5px;font-style:italic;display:flex;align-items:center;gap:5px}

/* Feriados extra */
.cp-fe-empty{font-size:12px;color:var(--muted);font-style:italic;padding:4px 0}
.cp-fe-tag{display:flex;align-items:center;gap:8px;padding:5px 8px;background:var(--bg);border-radius:6px;border:1px solid var(--line);margin-bottom:5px;font-size:12px}
.cp-fe-nombre{flex:1;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Distinción sobria para feriados guardados: borde izquierdo fino + tag discreto (sin estrella). */
.cp-fe-saved{border-left:3px solid var(--navy);background:var(--card-soft,var(--bg))}
.cp-fe-saved-tag{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:600;color:var(--muted);letter-spacing:.03em;flex-shrink:0}
.cp-fe-saved-tag svg{fill:none}
.cp-fe-save-btn{color:var(--navy);display:inline-flex;align-items:center;gap:3px;flex-shrink:0}
.cp-fe-save-btn:hover{color:var(--gold)}
.cp-fe-guardar-opt{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--muted);margin:4px 0 4px;cursor:pointer;user-select:none}
.cp-fe-guardar-opt input[type=checkbox]{width:15px;height:15px;min-width:15px;padding:0;margin:0;flex-shrink:0;accent-color:var(--gold);cursor:pointer}

/* ── Bloque de fechas + botón calcular (modal de gestión) ── */
.mg-dates{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:linear-gradient(180deg,var(--gold-pale) 0%,var(--card) 60%)}
.mg-dates-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.mg-dates-title{font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--gold-dim)}
.mg-dates-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.mg-dates-grid{grid-template-columns:1fr}}
/* Botón "Calcular vencimiento" — estética premium con ícono de calculadora */
.mg-calc-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:9px;border:1px solid var(--navy);background:var(--navy);color:#fff;font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 1px 2px rgba(11,31,53,.18);transition:transform .12s,box-shadow .16s,background .16s}
.mg-calc-btn svg{color:var(--gold)}
.mg-calc-btn:hover{background:var(--navy-mid);box-shadow:0 3px 10px rgba(11,31,53,.26);transform:translateY(-1px)}
.mg-calc-btn:active{transform:translateY(0)}

/* ── Modal calculador de plazos (m-plazo) — rediseño premium ── */
.modal-plazo{width:min(600px,100%)}
.plazo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 20px 12px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--paper-warm),var(--card))}
.plazo-head-l{display:flex;align-items:center;gap:12px;min-width:0}
.plazo-head-icon{width:38px;height:38px;border-radius:11px;background:var(--navy);color:var(--gold);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 10px rgba(11,31,53,.25)}
.plazo-title{display:block;font-family:'Playfair Display',serif;font-size:17px;font-weight:800;color:var(--navy);line-height:1.2}
.plazo-sub{display:block;font-size:10.5px;color:var(--muted);margin-top:1px}
.plazo-body{padding:14px 20px 2px;display:flex;flex-direction:column;gap:11px}
.plazo-body .form-group{margin-bottom:0}
.plazo-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px;border-top:1px solid var(--line);background:var(--paper-warm);margin-top:11px}
.mgc-vac-region-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.mgc-seg .cp-seg-btn{padding:7px 8px}
.mgc-lbl{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.mgc-region-label{font-size:11px;color:var(--muted);font-style:italic}
/* Toggle de opciones avanzadas */
.mgc-adv-toggle{display:flex;align-items:center;gap:6px;width:100%;margin-top:14px;padding:6px 2px;background:none;border:none;cursor:pointer;font-size:11.5px;font-weight:600;color:var(--muted);transition:color .14s;font-family:inherit}
.mgc-adv-toggle:hover{color:var(--navy)}
.mgc-adv-chevron{transition:transform .18s}
.mgc-adv-toggle[aria-expanded="true"] .mgc-adv-chevron{transform:rotate(90deg)}
.mgc-adv{margin-top:4px;padding-top:12px;border-top:1px dashed var(--line-mid);display:flex;flex-direction:column;gap:11px}
/* display:flex anula el atributo hidden del UA: sin esta regla el bloque
   avanzado quedaba siempre expandido aunque el JS lo marcara hidden. */
.mgc-adv[hidden]{display:none}
.mgc-adv-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.mgc-field{display:flex;flex-direction:column;gap:5px}
.mgc-vac-row{display:flex;align-items:center;gap:9px;margin:0;font-size:12px;color:var(--text-mid)}
.mgc-fe-block{display:flex;flex-direction:column;gap:6px}
@media(max-width:560px){.mgc-adv-grid{grid-template-columns:1fr}}
/* Resultado del mini-calculador */
.plazo-body .mgc-adv-toggle{margin-top:0}
.plazo-body .mgc-result:not(:empty){margin-top:0}
.mgc-result:not(:empty){margin-top:14px}
.mgc-hint{font-size:12px;color:var(--muted);padding:12px;background:var(--paper-warm);border:1.5px dashed var(--line-mid);border-radius:11px;text-align:center}
.mgc-res-box{position:relative;overflow:hidden;padding:11px 14px;background:linear-gradient(135deg,var(--navy) 0%,var(--navy-mid) 55%,var(--navy-light) 100%);border-radius:12px;text-align:center;color:#fff;box-shadow:0 8px 20px rgba(11,31,53,.24)}
.mgc-res-box::after{content:'';position:absolute;inset:0;background:radial-gradient(120% 90% at 85% -10%,rgba(200,152,42,.30),transparent 55%);pointer-events:none}
.mgc-res-box>*{position:relative;z-index:1}
.mgc-res-label{font-size:9.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin-bottom:3px}
.mgc-res-main{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.mgc-res-date{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:#fff;line-height:1.1;letter-spacing:-.3px}
.mgc-res-sub{font-size:11px;color:rgba(255,255,255,.72);margin-top:6px}

/* Hero de resultado (calculadora principal) */
.cp-hero{position:relative;text-align:center;padding:20px 18px 17px;border-radius:14px;background:linear-gradient(135deg,var(--navy) 0%,var(--navy-mid) 55%,var(--navy-light) 100%);color:#fff;overflow:hidden;box-shadow:0 10px 26px rgba(11,31,53,.25);flex-shrink:0}
.cp-hero::after{content:'';position:absolute;inset:0;background:radial-gradient(120% 90% at 85% -10%,rgba(200,152,42,.28),transparent 55%);pointer-events:none}
.cp-hero>*{position:relative;z-index:1}
.cp-hero-eyebrow{display:block;font-size:9.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:5px}
.cp-hero-weekday{display:block;font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.cp-hero-date{display:block;font-family:'Playfair Display',serif;font-size:40px;font-weight:800;line-height:1.12;letter-spacing:-1px;color:#fff}
.cp-hero-count{display:inline-flex;align-items:center;gap:6px;margin-top:9px;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:700;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);color:#fff}
.cp-hero-count.ct-danger{background:rgba(185,28,28,.38);border-color:rgba(252,165,165,.5);color:#fecaca}
.cp-hero-count.ct-orange{background:rgba(154,52,18,.38);border-color:rgba(253,186,116,.45);color:#fed7aa}
.cp-hero-count.ct-warn{background:rgba(146,64,14,.34);border-color:rgba(252,211,77,.4);color:#fde68a}
.cp-hero-count.ct-ok{background:rgba(21,128,61,.34);border-color:rgba(134,239,172,.4);color:#bbf7d0}

/* Nota día no hábil */
.cp-nota-habil{padding:8px 12px;background:var(--warn-bg);border-radius:9px;border-left:3px solid #eab308;font-size:12px;color:var(--warn);display:flex;align-items:flex-start;gap:6px;text-align:left;line-height:1.5;flex-shrink:0}
.cp-nota-habil svg{flex-shrink:0;margin-top:2px}

/* Desglose en chips */
.cp-desglose{background:var(--paper-warm);border-radius:12px;border:1px solid var(--line);padding:12px 14px;flex-shrink:0}
.cp-desglose-title{font-size:10px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:9px}
.cp-chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
@media(max-width:1150px){.cp-chips{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cp-chip{background:var(--card);border:1px solid var(--line);border-radius:9px;padding:7px 10px;display:flex;flex-direction:column;gap:1px;cursor:default}
.cp-chip[title]:not([title=""]):hover{border-color:var(--gold-border);box-shadow:var(--shadow-sm)}
.cp-chip-num{font-family:'Playfair Display',serif;font-size:17px;font-weight:800;color:var(--navy);line-height:1.1}
.cp-chip-num.is-zero{color:var(--muted);opacity:.5}
.cp-chip-lbl{font-size:9.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-sum-row{display:flex;gap:8px;margin-top:9px}
.cp-sum{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--gold-pale);border:1px solid var(--gold-border);border-radius:9px;padding:6px 11px;font-size:11px;font-weight:700;color:var(--gold-dim);text-transform:uppercase;letter-spacing:.03em}
.cp-sum strong{font-family:'Playfair Display',serif;font-size:17px;color:var(--navy)}

/* Meta pills */
.cp-res-meta{display:flex;flex-wrap:wrap;gap:6px;flex-shrink:0}
.cp-meta-pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);background:var(--bg);border:1px solid var(--line);padding:3px 9px;border-radius:999px}

/* Acciones */
.cp-res-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:2px}

/* Empty state */
.cp-res-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:220px;text-align:center;border:1.5px dashed var(--line-mid);border-radius:14px;background:var(--paper-warm);padding:30px 20px}
.cp-res-empty-icon{width:52px;height:52px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--gold-pale);color:var(--gold-dim);border:1px solid var(--gold-border);margin-bottom:8px}
.cp-res-empty-title{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;color:var(--navy)}
.cp-res-empty-sub{font-size:12.5px;color:var(--muted)}

/* ── PREMIUM REDESIGN HARMONIZERS ── */
.stats-grid.module-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px}
.stat-card.module-metric{padding:20px;border:1px solid var(--line);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--card),rgba(255,253,249,.8));box-shadow:var(--shadow-folio)}
.stat-card .module-metric-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.stat-card .module-metric-value{font-family:'Playfair Display',serif;font-size:30px;font-weight:800;color:var(--navy);line-height:1.1;margin-top:12px}
.stat-card .module-metric-sub{font-size:11px;color:var(--muted);margin-top:4px}
.exp-row.module-card,.gest-card.module-card{box-shadow:var(--shadow-folio);border-left-color:transparent!important}.gest-card.module-card{border-left-width:0!important;padding-left:15px}
.hist-item.module-row{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-sm);margin-bottom:10px}
.cp-res-empty.module-empty{border:1px dashed var(--line-mid);border-radius:var(--r-lg);background:rgba(255,255,255,.56);color:var(--muted)}
@media(max-width:900px){.stats-grid.module-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.stats-grid.module-metric-grid{grid-template-columns:1fr}}

/* ===================== INGRESAR ESCRITOS SATJE — Wizard ===================== */
.sa-wizard{max-width:880px;margin:0 auto}
.sa-stepper{display:flex;align-items:center;gap:0;margin-bottom:28px;padding:14px 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-sm);overflow-x:auto}
.sa-step{display:flex;align-items:center;gap:8px;flex-shrink:0}
.sa-step-num{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--bg);color:var(--muted);border:2px solid var(--line)}
.sa-step.active .sa-step-num{background:var(--navy);color:#fff;border-color:var(--navy)}
.sa-step.done .sa-step-num{background:var(--green);color:#fff;border-color:var(--green)}
.sa-step-label{font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap}
.sa-step.active .sa-step-label{color:var(--navy)}
.sa-step.done .sa-step-label{color:var(--green)}
.sa-step-line{flex:1;height:2px;min-width:20px;background:var(--line);margin:0 8px}
.sa-step-line.done{background:var(--green)}
.sa-hero{padding:20px 0 16px}
.sa-hero-done{text-align:center}
.sa-done-icon{width:56px;height:56px;border-radius:50%;background:var(--green);color:#fff;display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px}
.sa-hero-title{font-family:'Playfair Display',serif;font-size:22px;font-weight:800;color:var(--navy);margin:0 0 6px}
.sa-hero-desc{font-size:13px;color:var(--muted);line-height:1.5;margin:0}
.sa-section{margin-bottom:20px;padding:16px 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}
.sa-section-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--navy);margin-bottom:12px}
.sa-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sa-input-locked{background:var(--bg)!important;font-weight:600!important;color:var(--navy)!important}
.sa-input-hint{font-size:9px;color:var(--muted);margin-top:2px}
.sa-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.sa-checklist{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.sa-checklist-item{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--r);font-size:12px;font-weight:600}
.sa-checklist-item.ok{background:rgba(39,174,96,.08);color:var(--green)}
.sa-checklist-item.fail{background:rgba(231,76,60,.06);color:var(--danger)}
.sa-guide{padding:14px 16px;background:var(--card-soft);border:1px solid var(--hairline);border-radius:var(--r-lg);margin-bottom:18px}
.sa-guide-title{font-size:12px;font-weight:700;color:var(--navy);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.sa-guide-steps{margin:0;padding-left:18px;font-size:11px;color:var(--text-mid);line-height:1.8}
.sa-summary{padding:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);margin-bottom:18px;display:flex;flex-direction:column;gap:8px}
.sa-summary-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;padding:6px 0;border-bottom:1px solid var(--hairline)}
.sa-summary-row:last-child{border-bottom:none}
.sa-summary-row span{color:var(--muted)}
.sa-summary-row strong{color:var(--navy);text-align:right;max-width:60%}
.sa-post-actions{padding:16px 18px;background:var(--card);border:1px solid var(--gold-dim);border-radius:var(--r-lg)}
.sa-post-title{font-size:12px;font-weight:700;color:var(--navy);margin-bottom:10px}

/* Case selection */
.sa-search-input{width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r-lg);font-size:13px;background:var(--card)}
.sa-case-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;max-height:50vh;overflow-y:auto}
.sa-case-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);cursor:pointer;transition:all .15s}
.sa-case-card:hover,.sa-case-card.selected{border-color:var(--navy);box-shadow:var(--shadow-folio)}
.sa-case-card-main{flex:1;min-width:0}
.sa-case-card-num{font-size:13px;font-weight:700;color:var(--navy)}
.sa-case-card-actor{font-size:12px;color:var(--text-mid);margin-top:2px}
.sa-case-card-meta{font-size:10px;color:var(--muted);margin-top:2px}
.sa-empty{text-align:center;padding:40px 20px;color:var(--muted);font-size:13px}

/* Lista de escritos */
.se-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);cursor:pointer;margin-bottom:8px;transition:all .15s}
.se-card:hover{border-color:var(--navy);box-shadow:var(--shadow-sm)}
.se-card-main{flex:1;min-width:0}
.se-card-title{font-size:13px;font-weight:700;color:var(--navy)}
.se-card-meta{font-size:10px;color:var(--muted);margin-top:2px}

/* Drawer button — Notion-inspired utility style */
.drawer-sa-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;background:transparent;color:var(--navy);border:1px solid var(--hairline);border-radius:6px;font-size:11px;font-weight:500;cursor:pointer;flex-shrink:0;transition:all .12s;line-height:1.4;white-space:nowrap}
.drawer-sa-btn svg{color:var(--gold-dim);transition:color .12s}
.drawer-sa-btn:hover{background:rgba(200,152,42,.06);border-color:rgba(200,152,42,.25)}
.drawer-sa-btn:hover svg{color:var(--gold)}

/* Case context header */
.sa-context{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:18px;padding:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}
.sa-context-row{display:flex;flex-direction:column;gap:1px}
.sa-context-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.sa-context-val{font-size:12px;font-weight:600;color:var(--navy);line-height:1.3;word-break:break-word}

@media(max-width:720px){
  .sa-stepper{gap:4px;padding:10px 12px}
  .sa-step-label{font-size:10px}
  .sa-step-line{min-width:10px;margin:0 4px}
  .sa-form-grid{grid-template-columns:1fr}
  .sa-context{grid-template-columns:1fr 1fr}
  .sa-actions{flex-wrap:wrap;gap:6px;padding-bottom:70px}
  .sa-actions .btn-sm{flex:1;min-width:120px;justify-content:center}
  .sa-section{padding:12px}
  .sa-summary-row{flex-direction:column;align-items:flex-start;gap:2px}
  .sa-summary-row strong{max-width:100%;text-align:left}
  .sa-select-full{font-size:12px!important}
}
@media(max-width:480px){
  .sa-context{grid-template-columns:1fr}
  #sa-presentar-btn{width:100%}
}

/* Peticionario cards */
.sa-peticionario-card{padding:8px 12px;margin-bottom:4px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);cursor:pointer;transition:all .15s}
.sa-peticionario-card:hover,.sa-peticionario-card.selected{border-color:var(--navy);background:rgba(26,42,74,.04)}
.sa-peticionario-card.selected{border-color:var(--navy);box-shadow:var(--shadow-sm)}

/* Instancia grid cards */
.sa-instancia-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;margin-bottom:16px}
.sa-instancia-card{padding:14px 16px;background:var(--card);border:2px solid var(--line);border-radius:var(--r-lg);cursor:pointer;transition:all .18s}
.sa-instancia-card:hover{border-color:var(--gold-dim);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.sa-instancia-card.selected{border-color:var(--navy);background:rgba(26,42,74,.06);box-shadow:var(--shadow-folio)}
.sa-instancia-card-num{font-size:13px;font-weight:700;color:var(--navy);line-height:1.4;margin-bottom:4px}
.sa-instancia-card-ciudad{font-size:10px;color:var(--gold-dim);font-weight:600}
.sa-instancia-card-inc{font-size:9px;color:var(--muted);margin-top:6px;text-transform:uppercase;letter-spacing:.04em}

/* ═══════════════ ESCRITOS: transición entre pasos ═══════════════ */
.sa-step-body.sa-animate{animation:saStepIn .32s cubic-bezier(.22,.61,.36,1) both}
@keyframes saStepIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.sa-step-body.sa-animate{animation:none}}

/* ═══════════════ ESCRITOS: judicatura seleccionada (check) ═══════════════ */
.sa-instancia-card{position:relative}
.sa-instancia-check{position:absolute;top:10px;right:10px;width:20px;height:20px;border-radius:50%;background:var(--navy);color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}

/* ═══════════════ ESCRITOS: paso Documentos (v5) ═══════════════ */
.sa-doc-group{margin-bottom:22px}
.sa-doc-group-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.sa-doc-group-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--navy)}
.sa-doc-group .sa-doc-group-title{margin-bottom:10px}
.sa-doc-count{font-size:10px;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 8px;line-height:1.6}

.sa-doc-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:16px 18px;margin-bottom:12px;transition:border-color .18s,box-shadow .18s}
.sa-doc-card:hover{box-shadow:var(--shadow-folio)}
.sa-doc-card.is-inviable{border-color:var(--gold-dim);background:linear-gradient(180deg,var(--card),rgba(191,150,58,.04))}
.sa-doc-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--hairline)}
.sa-doc-card-head.no-title{justify-content:flex-end;margin-bottom:6px;padding-bottom:0;border-bottom:none}
.sa-doc-card-title{font-size:14px;font-weight:700;color:var(--navy)}
.sa-doc-card-head-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.sa-doc-inviable{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:600;color:var(--text-mid);cursor:pointer;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:var(--bg);white-space:nowrap;transition:all .15s;user-select:none}
.sa-doc-inviable:hover{border-color:var(--gold-dim)}
.sa-doc-inviable input{width:auto;margin:0;accent-color:var(--navy);cursor:pointer}
.sa-doc-card.is-inviable .sa-doc-inviable{border-color:var(--gold-dim);color:var(--navy);background:rgba(191,150,58,.1)}
.sa-doc-remove{background:transparent;border:1px solid var(--line);color:var(--muted);width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all .15s;padding:0}
.sa-doc-remove:hover{border-color:var(--danger);color:var(--danger);background:rgba(231,76,60,.06)}

.sa-doc-card-body{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sa-doc-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.sa-doc-field:first-child{grid-column:1/2}
.sa-doc-card-body>.sa-doc-field:last-child{grid-column:1/-1}
.sa-doc-select{width:100%}
.sa-doc-textarea{width:100%;min-height:70px;resize:vertical}
.sa-doc-desc-input{width:100%}
.sa-doc-desc-fixed{width:100%;height:38px;padding:9px 11px;border:1.5px solid #d0c9bc;border-radius:7px;font-size:13px;color:var(--text);background:var(--bg);display:flex;align-items:center;gap:6px;box-sizing:border-box}
.sa-doc-firma-hint{font-size:10px;color:var(--muted);font-weight:600}
.sa-doc-firma-hint.req-firma{color:var(--gold-dim)}

.sa-doc-drop{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border:1.5px dashed var(--line-mid);border-radius:var(--r);background:var(--bg);color:var(--text-mid);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}
.sa-doc-drop:hover{border-color:var(--navy);color:var(--navy)}
.sa-doc-drop-warn{border-color:var(--danger,#c0392b);color:var(--danger,#c0392b);background:rgba(192,57,43,.06)}
.sa-doc-drop-warn:hover{border-color:var(--danger,#c0392b);color:var(--danger,#c0392b)}
.sa-doc-file-input{display:none}
.sa-doc-file-name{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--green);margin-top:6px;word-break:break-word}
.sa-doc-firma{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:600;margin-top:6px}
.sa-doc-firma.ok{color:var(--green)}
.sa-doc-firma.warn{color:var(--gold-dim)}

.sa-doc-empty{font-size:12px;color:var(--muted);padding:14px 16px;border:1px dashed var(--line);border-radius:var(--r);margin-bottom:12px;text-align:center}
.sa-add-annex{display:inline-flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:11px;border:1.5px dashed var(--line-mid);border-radius:var(--r-lg);background:var(--bg);color:var(--navy);font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;transition:all .16s}
.sa-add-annex:hover{border-color:var(--navy);background:rgba(26,42,74,.04)}

.sa-doc-errors{background:rgba(231,76,60,.05);border:1px solid rgba(231,76,60,.25);border-radius:var(--r-lg);padding:12px 16px;margin-bottom:14px}
.sa-doc-errors-title{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--danger);margin-bottom:6px}
.sa-doc-error-item{font-size:11px;color:var(--danger);padding:2px 0 2px 20px;line-height:1.5}

@media (max-width:640px){
  .sa-doc-card-body{grid-template-columns:1fr}
  .sa-doc-card-head{flex-direction:column;gap:10px}
  .sa-doc-card-head-actions{width:100%;justify-content:space-between}
  .sa-doc-inviable{flex:1}
  .sa-add-annex{padding:13px}
  .sa-actions{position:sticky;bottom:0;background:var(--paper);padding-top:10px;padding-bottom:12px;z-index:5}
}

/* ── ETIQUETAS PERSONALIZADAS (expedientes) ── */
.lex-tags-wrap{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 8px;background:var(--bg);border:1px solid var(--line-mid);border-radius:8px;cursor:text;min-height:38px}
.lex-tags-wrap:focus-within{border-color:var(--navy-light)}
.lex-tags-input{flex:1;min-width:120px;border:none!important;background:transparent!important;outline:none;padding:4px 2px;font-family:inherit;font-size:13px;color:var(--text)}
.lex-tag-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 6px 3px 9px;background:var(--card);border:1px solid var(--line-mid);border-radius:999px;font-size:11.5px;font-weight:600;color:var(--text-mid);white-space:nowrap}
.lex-tag-x{border:none;background:none;cursor:pointer;color:var(--muted);font-size:13px;line-height:1;padding:1px 3px;border-radius:50%}
.lex-tag-x:hover{color:var(--danger)}
.exp-tag-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.exp-tag-bar-lbl{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--muted)}
.lex-tag-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;background:var(--card);border:1px solid var(--line-mid);border-radius:999px;font-size:11.5px;font-weight:600;color:var(--text-mid);cursor:pointer;font-family:inherit;transition:all .15s}
.lex-tag-pill:hover{border-color:var(--navy-light);color:var(--text)}
.lex-tag-pill.active{background:var(--navy);border-color:var(--navy);color:#fff}
.lex-tag-count{font-size:10px;font-weight:700;opacity:.65}
.exp-row-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.lex-tag-mini{display:inline-block;padding:1px 7px;background:var(--bg);border:1px solid var(--line);border-radius:999px;font-size:10px;font-weight:600;color:var(--muted);white-space:nowrap}

/* ── ELIMINAR CLIENTE (panel admin) ── */
.btn-danger-outline{border-color:var(--danger-mid)!important;color:var(--danger)!important}
.btn-danger-outline:hover{background:var(--danger)!important;border-color:var(--danger)!important;color:#fff!important}
.admin-del-warn{display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--danger-mid);border-radius:var(--r);background:var(--danger-bg);color:var(--danger);font-size:12.5px;line-height:1.45;margin-bottom:14px}
.admin-del-warn svg{flex-shrink:0}
.admin-del-target{padding:10px 12px;border:1px solid var(--line-mid);border-radius:var(--r);background:var(--bg);margin-bottom:14px}
.admin-del-name{font-size:14px;font-weight:700;color:var(--navy)}
.admin-del-mail{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere}
.admin-del-list{margin:6px 0 12px;padding-left:18px;font-size:12.5px;color:var(--text-mid);line-height:1.6}
/* text-transform:none: la etiqueta va en mayúsculas, pero el correo debe
   mostrarse tal cual para que se pueda copiar y escribir igual. */
.admin-del-echo{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--danger);overflow-wrap:anywhere;text-transform:none}
.admin-del-msg{margin-top:10px;font-size:12px;color:var(--muted);line-height:1.45;min-height:16px}
#admin-del-btn:disabled{opacity:.45;cursor:not-allowed}

/* ── DIAGNÓSTICO DE PERMISOS (panel admin) ── */
.admin-diag-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12.5px;border-bottom:1px solid var(--line)}
.admin-diag-label{flex:0 0 210px;color:var(--muted);font-weight:600}
.admin-diag-value{flex:1;min-width:0;color:var(--text-mid);overflow-wrap:anywhere}
.admin-diag-verdict{font-size:12.5px;font-weight:600;margin:10px 0 8px}
.admin-diag-pre{margin-top:10px;padding:10px 12px;border:1px solid var(--line-mid);border-radius:var(--r);background:var(--bg);font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text-mid);white-space:pre-wrap;overflow-x:auto}
@media(max-width:640px){.admin-diag-row{flex-wrap:wrap}.admin-diag-label{flex:1 1 100%}}

/* ── REPORTES AVANZADOS (constructor de columnas) ── */
.rep-count{font-size:11.5px;color:var(--muted);font-weight:600}
.rep-col-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.rep-picker{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rep-pane{display:flex;flex-direction:column;gap:8px;min-width:0}
.rep-pane-head{font-size:10.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--muted)}
.rep-pane-list{border:1px solid var(--line);border-radius:var(--r);background:var(--bg);padding:6px;max-height:290px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}
.rep-pane-empty{padding:14px 10px;font-size:12px;color:var(--muted);font-style:italic;text-align:center}
.rep-group{font-size:10px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);padding:8px 4px 2px}
.rep-field{display:flex;align-items:center;gap:7px;width:100%;padding:6px 9px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--text-mid);font-family:inherit;font-size:12.5px;text-align:left;cursor:pointer;transition:all .15s}
button.rep-field:hover{border-color:var(--navy-light);color:var(--text)}
.rep-field.sel{cursor:default}
.rep-field-num{flex-shrink:0;min-width:18px;font-size:10px;font-weight:800;color:var(--muted)}
/* "Demandado / Contraparte" no cabía y se cortaba; una etiqueta de campo a
   medias no dice qué campo es. Envuelve. */
.rep-field-lbl{flex:1;min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.35}
.rep-mini{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:2px;border:1px solid var(--line-mid);border-radius:4px;background:var(--card);color:var(--muted);cursor:pointer;transition:all .15s}
.rep-mini:hover:not(:disabled){border-color:var(--navy-light);color:var(--text)}
.rep-mini:disabled{opacity:.35;cursor:default}
.rep-mini.danger:hover{border-color:var(--danger-mid);color:var(--danger)}
.rep-preview-wrap{padding:0 16px 14px;max-height:420px;overflow:auto}
.rep-preview-note{padding:8px 2px 0;font-size:11.5px;color:var(--muted)}
@media(max-width:720px){.rep-picker{grid-template-columns:1fr}}

/* ── PANEL "CAMPOS DEL EXPEDIENTE" (ajustes de perfil) ── */
.settings-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px 18px}
.settings-field-row{display:flex;align-items:center;gap:10px;min-width:0;font-size:12.5px;color:var(--text-mid);cursor:pointer}
.settings-fields-grid.one-col{grid-template-columns:1fr}
.settings-fields-sub{margin:14px 0 8px;font-size:10.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--muted)}
.settings-field-name{flex:1;min-width:0;overflow-wrap:anywhere}
.settings-field-tag{flex-shrink:0;padding:1px 7px;background:var(--bg);border:1px solid var(--line);border-radius:999px;font-size:10px;font-weight:600;color:var(--muted);white-space:nowrap}
.settings-field-del{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:3px;border:1px solid var(--line-mid);border-radius:5px;background:var(--card);color:var(--muted);cursor:pointer;transition:all .15s}
.settings-field-del:hover{border-color:var(--danger-mid);color:var(--danger)}
.settings-newfield{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.settings-newfield .form-input{flex:1;min-width:150px}
.settings-newfield select.form-input{flex:0 0 150px}
@media(max-width:640px){.settings-fields-grid{grid-template-columns:1fr}.settings-newfield>*{width:100%}.settings-newfield select.form-input{flex:1 1 auto}}

/* =====================================================================
   CONSULTA CFN — búsqueda masiva de partidas en litigio
   Namespace propio (.cq-) porque el prefijo .cfn- lo comparte el módulo de
   Informes de Lavado de Activos y restilarlo lo rompería.
   ===================================================================== */
.cq-shell{max-width:1080px;margin:0 auto;padding-bottom:56px}

/* ── aviso de respaldo ──
   Se queda en pantalla mientras el avance no esté a salvo: la sesión que se
   perdió se perdió en silencio, con el usuario marcando casillas durante horas
   creyendo que se guardaban. Un toast no sirve para eso. */
.cq-respaldo{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;padding:12px 14px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--card);margin-bottom:12px}
.cq-respaldo-txt{flex:1;min-width:240px;font-size:12.5px;line-height:1.5;color:var(--text)}
.cq-respaldo-txt strong{font-weight:700}
.cq-respaldo-acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.cq-respaldo.is-info{border-color:var(--gold-border);background:var(--gold-pale)}
.cq-respaldo.is-info .cq-respaldo-txt strong{color:var(--gold-dim)}
.cq-respaldo.is-aviso{border-color:#e5c168;background:var(--warn-bg)}
.cq-respaldo.is-aviso .cq-respaldo-txt strong{color:var(--warn)}
.cq-respaldo.is-critico{border-color:var(--danger);background:var(--danger-bg);border-left-width:4px}
.cq-respaldo.is-critico .cq-respaldo-txt strong{color:var(--danger)}
@media(max-width:640px){.cq-respaldo-acts{width:100%}.cq-respaldo-acts .btn-primary,.cq-respaldo-acts .btn-outline{flex:1;justify-content:center}}

/* ── filtro por materia ── */
.cq-matfilter{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0 4px}
.cq-matfilter-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:220px}
.cq-matfilter-chips .module-chip b{font-weight:700;margin-left:2px}
.cq-matfilter-act{flex-shrink:0}
.cq-matfilter-nota{font-size:11.5px;color:var(--muted);margin:0 0 8px;line-height:1.45}
/* Etiqueta de materia en la fila de caso: lo relevante resalta, lo ajeno se
   apaga. Es la señal que permite descartar sin abrir el modal. */
.cq-mat{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.02em;vertical-align:middle}
.cq-mat-constitucional{background:var(--gold-pale);color:var(--gold-dim);border:1px solid var(--gold-border)}
.cq-mat-contencioso{background:var(--blue-bg);color:var(--blue-text);border:1px solid transparent}
.cq-mat-otra{background:var(--bg-mid);color:var(--muted);border:1px solid var(--line)}

/* ── anexos de una actuación ──
   Colgados de la actuación, no en un panel aparte: se despliegan en el sitio y
   solo la primera vez piden datos. Discretos a propósito — son un apoyo del
   triaje, no el contenido principal. */
.cq-anx-toggle{margin-top:7px;display:inline-flex;align-items:center;gap:5px;background:transparent;border:none;padding:0;color:var(--gold-dim);font-family:inherit;font-size:11.5px;font-weight:700;cursor:pointer}
.cq-anx-toggle:hover{text-decoration:underline}
.cq-anx-toggle:disabled{opacity:.55;cursor:default;text-decoration:none}
.cq-anx{margin-top:8px;border:1px solid var(--line);border-radius:8px;background:var(--paper-warm);padding:9px 11px}
.cq-anx-h{font-size:9.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.cq-anx-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:7px 10px}
.cq-anx-row+.cq-anx-row{margin-top:5px}
.cq-anx-nombre{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;font-weight:600;color:var(--navy)}
.cq-anx-nombre span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cq-anx-dl{flex-shrink:0;background:var(--gold-pale);border:1px solid var(--gold-border);color:var(--gold-dim);border-radius:6px;padding:5px 11px;font-size:11px;font-weight:700;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap}
.cq-anx-dl:hover{background:var(--gold);border-color:var(--gold);color:var(--navy)}
.cq-anx-dl:disabled{opacity:.6;cursor:default}
.cq-anx-msg{font-size:11.5px;color:var(--muted);font-style:italic}
.cq-anx-msg.is-error{color:var(--danger);font-style:normal}
.cq-anx-retry{background:none;border:none;padding:0 0 0 4px;color:var(--danger);font-family:inherit;font-size:11.5px;font-weight:700;text-decoration:underline;cursor:pointer}

/* ── modo revisión ──────────────────────────────────────────────────────
   Un folio sobre el escritorio, no un panel. El módulo entero está construido
   sobre esa metáfora (--paper, --shadow-folio) y la revisión es donde más
   sentido tiene: una persona, una hoja, y se pasa página. El navy queda detrás
   como la mesa; el oro significa una sola cosa, litigio.

   z-index por debajo de .cq-modal-overlay (600): las actuaciones se abren
   ENCIMA de la revisión, no detrás. */
#cq-revision{position:fixed;inset:0;z-index:500}
/* Sin backdrop-filter: la revisión tapa la app entera, así que no hay nada
   detrás que merezca desenfoque, y el filtro cuesta compositor en una página
   con cientos de filas. Un degradado sólido lee mejor como mesa y se pinta
   igual en todos los motores. */
.cq-rev-wrap{position:absolute;inset:0;display:flex;flex-direction:column;background:linear-gradient(168deg,#0d233c,var(--navy) 55%,#081726)}

/* La tira: todo el trabajo en una línea, una marca por persona, en el canto
   superior de la mesa. Se llena de oro según se decide. */
.cq-rev-tira{display:flex;gap:1px;height:3px;flex-shrink:0;background:rgba(255,255,255,.08)}
.cq-rev-tira i{flex:1 1 0;min-width:1px;max-width:13px;background:rgba(255,255,255,.16)}
.cq-rev-tira i.is-litigio{background:var(--gold)}
.cq-rev-tira i.is-limpia{background:rgba(255,255,255,.42)}
.cq-rev-tira i.is-aqui{background:#fff}
.cq-rev-barra{height:3px;flex-shrink:0;background:rgba(255,255,255,.12)}
.cq-rev-barra-fill{height:100%;background:var(--gold);transition:width .2s ease}

/* Cromo sobre la mesa: discreto, para que el folio sea lo único con peso. */
.cq-rev-bar{display:flex;align-items:center;gap:14px;padding:9px 24px;flex-shrink:0;color:rgba(255,255,255,.82)}
.cq-rev-bar-l{display:flex;align-items:center;gap:11px;flex:1;min-width:0}
.cq-rev-bar-r{display:flex;align-items:center;gap:16px;flex-shrink:0}
.cq-rev-titulo{font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.cq-rev-filtro{font-size:10.5px;font-weight:600;letter-spacing:.04em;color:var(--gold);border:1px solid rgba(200,152,42,.42);border-radius:999px;padding:2px 10px;white-space:nowrap}
.cq-rev-cuenta{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:rgba(255,255,255,.62)}
.cq-rev-cuenta b{color:#fff;font-weight:700}
.cq-rev-salir{display:inline-flex;align-items:center;gap:7px;background:transparent;border:none;color:rgba(255,255,255,.72);padding:4px 2px;font-size:12px;font-family:inherit;cursor:pointer;transition:color .15s}
.cq-rev-salir:hover{color:#fff}

/* El folio. */
.cq-rev-desk{flex:1;display:flex;align-items:center;justify-content:center;padding:2px 24px 14px;min-height:0}
.cq-rev-folio{width:min(880px,100%);max-height:100%;display:flex;flex-direction:column;background:var(--paper);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);overflow:hidden;animation:cqFolio .24s cubic-bezier(.34,1.1,.64,1) both}
@keyframes cqFolio{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* Cabecera del folio: compacta, deja el espacio a las causas. */
.cq-rev-folio-head{padding:15px 30px 12px;border-bottom:1px solid var(--line);flex-shrink:0}
.cq-rev-eyebrow{display:flex;align-items:center;gap:10px;margin-bottom:5px}
.cq-rev-pos{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;letter-spacing:.13em;color:var(--muted)}
.cq-rev-nombre{font-family:'Playfair Display',Georgia,serif;font-size:23px;line-height:1.16;font-weight:700;letter-spacing:-.015em;margin:0;color:var(--navy)}
.cq-rev-datos{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:5px;font-size:12.5px;color:var(--muted)}
.cq-rev-datos .cq-rev-ced{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:var(--gold-dim);font-weight:600;letter-spacing:.05em}
.cq-rev-datos i{font-style:normal;color:var(--line-mid)}

.cq-rev-causas{flex:1;overflow-y:auto;min-height:0;padding:0 30px}
.cq-rev-causas-h{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:12px 0 4px}
.cq-rev-causa{display:flex;align-items:flex-start;gap:14px;padding:12px 14px 12px 0;border-bottom:1px solid var(--line);border-left:2px solid transparent;transition:background .15s,border-color .15s}
.cq-rev-causa:last-child{border-bottom:none}
.cq-rev-causa.is-marcada{border-left-color:var(--gold);background:var(--gold-pale);padding-left:12px;margin-left:-14px;border-radius:0 6px 6px 0}
.cq-rev-causa-n{flex-shrink:0;width:25px;height:25px;margin-left:14px;border-radius:6px;border:1px solid var(--line-mid);background:var(--card);color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;font-weight:700;cursor:pointer;transition:all .15s}
.cq-rev-causa.is-marcada .cq-rev-causa-n{margin-left:0}
.cq-rev-causa-n:hover{border-color:var(--gold);color:var(--gold-dim)}
.cq-rev-causa.is-marcada .cq-rev-causa-n{background:var(--gold);border-color:var(--gold);color:var(--navy)}
.cq-rev-causa-cuerpo{flex:1;min-width:0}
.cq-rev-causa-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px;font-weight:600;color:var(--navy);letter-spacing:.02em;display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.cq-rev-causa-meta{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.55}
.cq-rev-causa-partes{font-size:12.5px;color:var(--text-mid);margin-top:3px;line-height:1.45}
.cq-rev-causa-ver{flex-shrink:0;align-self:center;display:inline-flex;align-items:center;gap:5px;background:transparent;border:1px solid var(--line-mid);color:var(--text-mid);border-radius:7px;padding:6px 11px;font-size:11.5px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap}
.cq-rev-causa-ver:hover{border-color:var(--navy);color:var(--navy);background:var(--card)}

/* El pie: pregunta y decisión en UNA línea, para no robarle alto al texto. */
.cq-rev-pie{flex-shrink:0;display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:11px 30px 13px;border-top:1px solid var(--line);background:var(--paper-warm)}
.cq-rev-pregunta{font-family:'Playfair Display',Georgia,serif;font-size:14px;font-weight:700;color:var(--navy);margin:0 auto 0 0}
.cq-rev-botones{display:flex;gap:10px;align-items:center}
.cq-rev-si,.cq-rev-no{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:6px 18px;border-radius:9px;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:all .16s}
.cq-rev-si{background:var(--gold);border:1px solid var(--gold);color:var(--navy);box-shadow:0 1px 2px rgba(11,31,53,.12)}
.cq-rev-si:hover{background:#d9a838}
.cq-rev-si.is-on{box-shadow:0 0 0 3px rgba(200,152,42,.26)}
.cq-rev-si-nota{display:inline;margin-left:7px;font-size:10px;font-weight:600;opacity:.7;letter-spacing:.02em}
.cq-rev-no{background:var(--card);border:1px solid var(--line-mid);color:var(--text-mid)}
.cq-rev-no:hover{border-color:var(--navy);color:var(--navy)}
.cq-rev-si kbd{background:rgba(11,31,53,.14);border-color:rgba(11,31,53,.2);color:var(--navy)}
.cq-rev-no kbd{background:var(--bg-mid);border-color:var(--line-mid);color:var(--muted)}
.cq-rev-aviso{flex-basis:100%;margin-top:2px;padding:8px 13px;border-radius:8px;background:var(--gold-pale);border:1px solid var(--gold-border);color:var(--gold-dim);font-size:12px;line-height:1.45;font-weight:600}

/* Atajos: al pie de la mesa, no del folio. Ayudan, no compiten. */
.cq-rev-teclas{flex-shrink:0;display:flex;justify-content:center;gap:20px;flex-wrap:wrap;padding:0 24px 10px;font-size:11px;color:rgba(255,255,255,.46)}
.cq-rev-wrap kbd{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:4px;padding:1px 5px;color:inherit}

.cq-rev-fin{width:min(560px,100%);margin:auto;text-align:center;background:var(--paper);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);padding:40px 34px}
.cq-rev-fin-t{font-family:'Playfair Display',Georgia,serif;font-size:25px;font-weight:700;color:var(--navy)}
.cq-rev-fin-s{font-size:13px;color:var(--muted);line-height:1.55;margin-top:8px}
.cq-rev-fin-acts{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:20px}

.cq-rev-wrap button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

@media(max-width:760px){
  .cq-rev-desk{padding:2px 12px 10px}
  .cq-rev-bar{padding:9px 14px}
  .cq-rev-folio-head{padding:14px 20px 12px}
  .cq-rev-nombre{font-size:20px}
  .cq-rev-causas{padding:0 20px}
  .cq-rev-causa{flex-wrap:wrap}
  .cq-rev-causa-ver{margin-left:39px}
  .cq-rev-pie{flex-direction:column;align-items:stretch;padding:11px 20px 13px}
  .cq-rev-pregunta{margin:0 0 8px}
  .cq-rev-botones{flex-direction:column;align-items:stretch}
  .cq-rev-si,.cq-rev-no{justify-content:center}
  .cq-rev-teclas,.cq-rev-si kbd,.cq-rev-no kbd{display:none}
}
@media(prefers-reduced-motion:reduce){
  .cq-rev-folio{animation:none}
  .cq-rev-si,.cq-rev-no,.cq-rev-barra-fill,.cq-rev-causa{transition:none}
}

/* ── stepper (el contenedor .cfn-step-bar sí es exclusivo de este módulo) ── */
.cq-shell .cfn-step-bar{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:10px 14px}
.cq-shell .cfn-step{border-radius:8px;padding:7px 12px;border-bottom:none;transition:background .16s,color .16s}
.cq-shell .cfn-step.active{background:var(--gold-pale)}
.cq-shell .cfn-step.active .cfn-sn{background:var(--gold);color:var(--navy)}
.cq-shell .cfn-step.active .cfn-st{color:var(--gold-dim)}
.cq-shell .cfn-sep{padding:0 6px}

/* ── zona de carga ── */
.cq-drop{border:2px dashed var(--line-mid);border-radius:var(--r-lg);padding:38px 22px;text-align:center;cursor:pointer;background:var(--paper-warm);transition:border-color .16s,background .16s}
.cq-drop:hover,.cq-drop.is-over{border-color:var(--gold);background:var(--gold-pale)}
.cq-drop-icon{width:46px;height:46px;margin:0 auto 12px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--card);color:var(--gold-dim);border:1px solid var(--gold-border)}
.cq-drop-title{font-size:14px;font-weight:700;color:var(--text)}
.cq-drop-title span{color:var(--gold-dim)}
.cq-drop-sub{font-size:12px;color:var(--muted);margin-top:5px;max-width:460px;margin-inline:auto;line-height:1.5}
.cq-drop-foot{margin-top:12px;font-size:12px;color:var(--muted);text-align:center}
.cq-drop-foot a{color:var(--navy);font-weight:600;text-decoration:none}
.cq-drop-foot a:hover{text-decoration:underline}

/* ── métricas ── */
.cq-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.cq-metric{padding:13px 15px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-sm)}
.cq-metric-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.cq-metric-value{font-family:'Playfair Display',serif;font-size:26px;font-weight:800;color:var(--navy);line-height:1.1;margin-top:3px}
.cq-metric-sub{font-size:11px;color:var(--muted);margin-top:3px}
.cq-metric.is-gold .cq-metric-value{color:var(--gold-dim)}
.cq-metric.is-danger .cq-metric-value{color:var(--danger)}

/* ── tabla de personas cargadas ── */
.cq-tablewrap{overflow-x:auto;max-height:420px;overflow-y:auto}
.cq-table{width:100%;border-collapse:collapse;font-size:13px}
.cq-table thead th{position:sticky;top:0;background:var(--bg);z-index:1;padding:9px 14px;text-align:left;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--line)}
.cq-table td{padding:9px 14px;border-bottom:1px solid var(--line)}
.cq-table tbody tr:last-child td{border-bottom:none}
.cq-table tbody tr:hover{background:var(--paper-warm)}
.cq-num{color:var(--muted);font-size:12px;width:48px}
.cq-ced{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:var(--muted)}

/* ── barra de ejecución + progreso ── */
.cq-runbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 15px;border-top:1px solid var(--line);background:var(--paper-warm)}
.cq-progress{flex:1;min-width:200px}
.cq-progress-txt{font-size:11.5px;color:var(--muted);margin-bottom:5px;font-weight:600}
.cq-progress-track{height:7px;background:var(--line);border-radius:999px;overflow:hidden}
.cq-progress-bar{height:100%;width:0%;border-radius:999px;background:linear-gradient(90deg,var(--gold),var(--gold-dim));transition:width .3s ease}

/* ── agrupación de resultados ── */
.cq-group-h{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 0 9px}
.cq-group-h::after{content:'';flex:1;height:1px;background:var(--line)}
.cq-group-n{background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:10px;color:var(--text-mid)}

/* ── tarjeta de persona ── */
.cq-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);margin-bottom:10px;overflow:hidden;transition:box-shadow .18s,border-color .18s}
.cq-card:hover{box-shadow:var(--shadow-md)}
.cq-card.is-litigio{border-left:3px solid var(--gold)}
.cq-card-head{display:flex;align-items:center;gap:10px;padding:12px 15px}
.cq-card-id{flex:1;min-width:0}
.cq-card-name{font-weight:700;font-size:13.5px;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cq-card-meta{display:flex;align-items:center;gap:7px;margin-top:2px;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Marcar revisada es la acción que más se repite: se muestra como botón con
   borde y etiqueta, no como un check gris que se pierde en el borde. */
.cq-iconbtn{display:inline-flex;align-items:center;gap:5px;background:var(--card);border:1px solid var(--line-mid);border-radius:7px;padding:5px 9px;cursor:pointer;color:var(--text-mid);font-family:inherit;font-size:11px;font-weight:700;transition:all .15s;flex-shrink:0}
.cq-iconbtn:hover{background:var(--success-bg);color:var(--success);border-color:#86efac}
@media(max-width:640px){.cq-iconbtn span{display:none}}

/* ── badges de estado ── */
.cq-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-size:10.5px;font-weight:700;white-space:nowrap;flex-shrink:0}
.cq-badge.is-ok{background:var(--success-bg);color:var(--success)}
.cq-badge.is-none{background:var(--bg);color:var(--muted);border:1px solid var(--line)}
.cq-badge.is-warn{background:var(--warn-bg);color:var(--warn)}
.cq-badge.is-danger{background:var(--danger-bg);color:var(--danger)}
.cq-badge.is-busy{background:var(--blue-bg);color:var(--blue-text)}
.cq-badge.is-idle{background:var(--bg);color:var(--muted)}
.cq-badge.is-gold{background:var(--gold-pale);color:var(--gold-dim);border:1px solid var(--gold-border)}
.cq-count{font-size:10.5px;font-weight:700;color:var(--muted);white-space:nowrap;flex-shrink:0}
.cq-count.is-done{color:var(--success)}

/* ── filas de caso ── */
.cq-cases{border-top:1px solid var(--line)}
.cq-case{display:flex;align-items:flex-start;gap:10px;padding:10px 15px;border-bottom:1px solid var(--line)}
.cq-case:last-child{border-bottom:none}
.cq-case.is-done{opacity:.6;background:var(--paper-warm)}
.cq-case-main{flex:1;min-width:0}
.cq-case-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:700;color:var(--navy)}
.cq-case-desc{font-size:11.5px;color:var(--text-mid);line-height:1.4;margin-top:2px;overflow:hidden;text-overflow:ellipsis}
.cq-case-desc b{color:var(--muted);font-weight:600}
.cq-case-meta{font-size:11px;color:var(--muted);line-height:1.4;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cq-case-actions{display:flex;gap:5px;flex-shrink:0}
.cq-role{display:inline-flex;padding:1px 7px;border-radius:999px;font-size:9.5px;font-weight:800;letter-spacing:.03em;margin-left:6px;vertical-align:middle}
.cq-role.is-act{background:var(--blue-bg);color:var(--blue-text)}
.cq-role.is-dem{background:var(--danger-bg);color:var(--danger)}

/* ── avisos dentro de la tarjeta ── */
.cq-alert{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;padding:10px 15px;border-top:1px solid var(--line);font-size:11.5px}
.cq-alert.is-danger{background:var(--danger-bg);color:var(--danger)}
.cq-alert.is-warn{background:var(--warn-bg);color:var(--warn)}
.cq-alert-main{flex:1;min-width:190px}
.cq-alert-detail{margin-top:2px;opacity:.85}

/* ── partida en litigio ── */
.cq-partida{padding:10px 15px;border-top:1px solid var(--line);background:var(--bg)}
.cq-partida.is-on{background:var(--gold-pale)}
.cq-partida-main{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none;font-size:12.5px;font-weight:700;color:var(--muted)}
.cq-partida.is-on .cq-partida-main{color:var(--gold-dim)}
.cq-partida-main input{width:15px;height:15px;accent-color:var(--gold);cursor:pointer}
.cq-partida-casos{margin-top:9px;padding:10px 12px;background:var(--card);border:1px solid var(--gold-border);border-radius:9px}
.cq-partida-hint{font-size:11px;color:var(--muted);margin-bottom:7px;font-weight:600}
.cq-partida-caso{display:flex;align-items:center;gap:8px;font-size:11.5px;cursor:pointer;padding:3px 0;color:var(--text)}
.cq-partida-caso input{width:14px;height:14px;accent-color:var(--navy);cursor:pointer;flex-shrink:0}

/* ── listado de revisadas ── */
.cq-archived-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:11px 15px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);cursor:pointer;font-family:inherit;font-size:12px;font-weight:700;color:var(--text-mid);box-shadow:var(--shadow-sm);transition:background .15s}
.cq-archived-toggle:hover{background:var(--paper-warm)}
.cq-archived-list{margin-top:10px;opacity:.85}

/* ── reporte final ── */
.cq-report{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-folio);overflow:hidden}
.cq-report-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:14px 17px;border-bottom:1px solid var(--line);background:var(--paper-warm)}
.cq-report-title{font-family:'Playfair Display',serif;font-size:15px;font-weight:800;color:var(--navy)}
.cq-report-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:16px 17px}
.cq-report-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--navy);margin-bottom:9px}
.cq-report-h span{font-weight:600;color:var(--muted)}
.cq-report-empty{font-size:12px;color:var(--muted);font-style:italic}
.cq-report-item{margin-bottom:9px;padding:9px 11px;background:var(--bg);border-radius:9px;border-left:3px solid var(--gold)}
.cq-report-name{font-size:12.5px;font-weight:700;color:var(--navy)}
.cq-report-case{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text);margin-top:3px;padding-left:5px}
.cq-report-case span{color:var(--muted)}
.cq-report-case.is-empty{color:var(--muted);font-style:italic}
.cq-report-plain{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--text);padding:6px 0;border-bottom:1px solid var(--line)}
.cq-report-plain:last-child{border-bottom:none}
.cq-noverif{margin:0 17px 16px;padding:12px 14px;background:var(--danger-bg);border-left:3px solid var(--danger);border-radius:8px}
.cq-noverif-h{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--danger);margin-bottom:5px}
.cq-noverif-sub{font-size:11.5px;color:var(--danger);opacity:.85;margin-bottom:8px;line-height:1.5}

/* ── modal de actuaciones (centrado, no cajón lateral) ── */
.cq-modal-overlay{position:fixed;inset:0;z-index:600;background:rgba(8,20,36,.58);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:18px}
.cq-modal-card{background:var(--card);border-radius:var(--r-lg);width:min(820px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg);animation:modalIn .22s cubic-bezier(.34,1.2,.64,1) both}
.cq-modal-head{display:flex;align-items:flex-start;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line);flex-shrink:0}
.cq-modal-titles{flex:1;min-width:0}
.cq-modal-title{font-family:'Playfair Display',serif;font-size:16px;font-weight:800;color:var(--navy)}
.cq-modal-sub{font-size:12px;color:var(--muted);margin-top:2px}
.cq-modal-persona{font-size:11px;color:var(--gold-dim);font-weight:700;margin-top:3px}
.cq-modal-body{flex:1;overflow-y:auto;padding:16px 20px}
.cq-modal-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 20px;border-top:1px solid var(--line);background:var(--paper-warm);flex-shrink:0}
.cq-modal-foot-acciones{display:flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:wrap}
.cq-modal-foot-acciones .btn-outline[disabled]{opacity:.5;cursor:not-allowed}
.cq-modal-flag{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:12.5px;font-weight:700;color:var(--gold-dim)}
.cq-modal-flag input{width:15px;height:15px;accent-color:var(--gold);cursor:pointer}
.cq-modal-msg{font-size:12.5px;color:var(--muted)}
.cq-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px}
.cq-meta-item{background:var(--bg);border-radius:8px;padding:8px 10px}
.cq-meta-item.full{grid-column:1/-1}
.cq-meta-label{font-size:9.5px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}
.cq-meta-val{font-size:12.5px;color:var(--text);line-height:1.4}
.cq-acts-count{font-size:12px;font-weight:800;color:var(--navy);margin-bottom:10px}

/* ── vacíos ── */
.cq-empty{padding:32px 20px;text-align:center;border:1px dashed var(--line-mid);border-radius:var(--r-lg);background:rgba(255,255,255,.56)}
.cq-empty-title{font-size:14px;font-weight:800;color:var(--text);margin-bottom:3px}
.cq-empty-sub{font-size:12px;color:var(--muted);line-height:1.5}

@media(max-width:820px){
  .cq-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cq-report-grid{grid-template-columns:1fr}
  .cq-meta-grid{grid-template-columns:1fr}
}
