*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Lato',system-ui,-apple-system,sans-serif;background:#f8fafc;color:#1e293b;min-height:100vh;line-height:1.5}
.header{background:#0f2044;color:white;position:sticky;top:0;z-index:50}
.header-top{padding:13px 20px;display:flex;align-items:center;gap:12px}
.logo{width:104px;height:40px;border-radius:9px;background:#fff;display:flex;align-items:center;justify-content:center;padding:4px 8px;flex-shrink:0}
.logo-img{max-width:100%;max-height:100%;object-fit:contain}
.hdr-title{font-weight:900;font-size:14.5px;font-family:'EB Garamond',Georgia,serif;letter-spacing:.01em}
.hdr-sub{font-size:10.5px;color:#93c5fd;margin-top:2px}
.hdr-stats{margin-left:auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.hdr-stat{text-align:right}
.hdr-stat-lbl{font-size:10px;color:#93c5fd}
.hdr-stat-num{font-size:21px;font-weight:900;color:#fbbf24;line-height:1;font-family:'EB Garamond',Georgia,serif}
.hdr-user{border-left:1px solid rgba(255,255,255,.15);padding-left:14px;text-align:right}
.hdr-user-name{font-size:11.5px;color:white;font-weight:700}
.hdr-role{font-size:9px;font-weight:800;padding:2px 8px;border-radius:999px;display:inline-flex;align-items:center;gap:4px;margin-top:2px}
.hdr-logout{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:7px 14px;font-size:11.5px;font-weight:700;color:white;cursor:pointer;font-family:inherit;transition:background .15s;display:inline-flex;align-items:center;gap:6px}
.hdr-logout:hover{background:rgba(255,255,255,.18)}
.nav{display:flex;border-top:1px solid rgba(255,255,255,0.1);padding:0 20px}
.nav button{padding:10px 14px;font-size:11.5px;font-weight:700;background:none;border:none;color:#93c5fd;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;transition:color .15s;display:inline-flex;align-items:center;gap:6px}
.nav button.active{color:#fbbf24;border-bottom-color:#fbbf24}
.nav button:hover:not(.active){color:white}
.main{padding:22px;max-width:1200px;margin:0 auto}
.card{background:white;border-radius:12px;border:1px solid #f1f5f9;padding:22px;box-shadow:0 1px 2px rgba(15,23,42,.03)}
.tbl{width:100%;border-collapse:collapse;font-size:12px}
.tbl th{background:#0f2044;color:white;padding:10px 11px;text-align:left;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.tbl td{padding:9px 11px;border-bottom:1px solid #f8fafc;vertical-align:top}
.tbl tbody tr:nth-child(even) td{background:#fafbfc}
.tbl tbody tr:hover td{background:#eff6ff}
/* Columnas fijas (sticky) para no perder de vista el expediente ni las
   acciones al desplazarse horizontalmente por tablas con muchas columnas */
.sticky-col{position:sticky;z-index:2;background:#fff}
.tbl thead .sticky-col{background:#0f2044}
.sticky-col.edge-l{box-shadow:6px 0 6px -6px rgba(15,23,42,.18)}
.sticky-col.edge-r{box-shadow:-6px 0 6px -6px rgba(15,23,42,.18)}
.tbl tbody tr.sel td{background:#eff6ff}
/* Expedientes concluidos (sentencia firme, cumplimentado, sobreseído…):
   se atenúan para distinguirlos de un vistazo de los activos, salvo las
   columnas fijas (N° de juicio y acciones) que deben seguir legibles */
.tbl tbody tr.tr-concluido td{opacity:.6}
.tbl tbody tr.tr-concluido td.sticky-col{opacity:1}
/* Navegación horizontal: barra con flechas + arrastre + scrollbar visible */
.tbl-nav{display:flex;justify-content:flex-end;gap:5px;padding:6px 10px;border-bottom:1px solid #f1f5f9;background:#fafbfc}
.tbl-nav-btn{width:25px;height:25px;border-radius:6px;border:1px solid #d1d5db;background:white;color:#374151;font-size:13px;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;font-family:inherit;transition:background .1s}
.tbl-nav-btn:hover{background:#f1f5f9}
.tbl-scroll{overflow-x:auto;cursor:grab}
.tbl-scroll.grabbing{cursor:grabbing;user-select:none}
.tbl-scroll::-webkit-scrollbar{height:9px}
.tbl-scroll::-webkit-scrollbar-track{background:#f1f5f9}
.tbl-scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:5px}
.tbl-scroll::-webkit-scrollbar-thumb:hover{background:#94a3b8}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.span2{grid-column:1/-1}
.lbl{display:block;font-size:10.5px;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}
input,select,textarea{width:100%;border:1px solid #d1d5db;border-radius:8px;padding:9px 12px;font-size:13px;font-family:inherit;color:#111827;background:white;outline:none;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,.15)}
textarea{min-height:70px;resize:vertical}
.btn{padding:9px 18px;border:none;border-radius:8px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit;transition:opacity .15s,box-shadow .15s;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn:hover{opacity:.88}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn-primary{background:#0f2044;color:white}
.btn-secondary{background:white;border:1px solid #d1d5db;color:#374151}
.btn-danger{background:#dc2626;color:white}
.btn-success{background:#059669;color:white}
.btn-sm{padding:5px 12px;font-size:11.5px}
.st{display:flex;align-items:center;gap:10px;margin:20px 0 12px}
.st span{font-size:10.5px;font-weight:900;color:#0f2044;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;font-family:'EB Garamond',Georgia,serif}
.st hr{flex:1;border:none;border-top:1px solid #e2e8f0}
.dr{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid #f1f5f9}
.dl{width:190px;flex-shrink:0;font-size:10.5px;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.04em;padding-top:1px}
.dv{font-size:13px;color:#1e293b;flex:1;line-height:1.5}
.badge{display:inline-block;font-size:10.5px;font-weight:800;padding:3px 10px;border-radius:999px}
.badge-sm{padding:2px 7px;font-size:9.5px}
.toast{padding:10px 20px;font-size:12.5px;font-weight:700;color:white;display:none;position:fixed;top:0;left:0;right:0;z-index:300;text-align:center}
.toast-ok{background:#059669}.toast-err{background:#dc2626}.toast-warn{background:#d97706}
.rtabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.rtab{padding:6px 14px;border-radius:9px;font-size:11.5px;font-weight:800;cursor:pointer;border:1px solid #e2e8f0;background:white;color:#374151;font-family:inherit;display:inline-flex;align-items:center;gap:5px}
.rtab.active{background:#0f2044;color:white;border-color:#0f2044}
.mt-wrap{border-radius:10px;border:1px solid #f1f5f9;overflow:hidden;margin-top:6px;overflow-x:auto}
.mt{width:100%;border-collapse:collapse;font-size:11.5px}
.mt th{background:#f8fafc;padding:6px 10px;text-align:left;font-size:10.5px;font-weight:800;color:#64748b;text-transform:uppercase;white-space:nowrap}
.mt td{padding:6px 10px;border-top:1px solid #f8fafc;white-space:nowrap}
.sbar{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.sbar-line{width:3px;height:22px;background:#d4a017;border-radius:2px}
.sbar-title{font-weight:600;font-size:19px;color:#0f2044;font-family:'EB Garamond',Georgia,serif;letter-spacing:.01em}
.confirm-box{margin-top:6px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:8px 10px}
.link-btn{background:none;border:none;cursor:pointer;font-family:inherit;font-weight:800;display:inline-flex;align-items:center;gap:4px}
.empty{text-align:center;padding:50px}
.empty-icon{font-size:36px;margin-bottom:10px;color:#cbd5e1}
.file-bar{background:#1e3a5f;padding:6px 20px;display:flex;align-items:center;gap:8px;font-size:10.5px;color:#93c5fd;flex-wrap:wrap}
.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.dot-green{background:#4ade80}.dot-gray{background:#64748b}.dot-yellow{background:#fbbf24}
/* Dashboard — estilo corporativo legal (EB Garamond + Lato, navy/gold) */
.dash{background:linear-gradient(180deg,#fff 0%,#fbfbfa 100%);border-radius:10px;border:1px solid #e2e8f0;border-top:3px solid #0f2044;padding:20px 26px;margin-bottom:18px;display:flex;align-items:center;gap:24px;flex-wrap:wrap;box-shadow:0 1px 3px rgba(15,32,68,.06)}
.dash-info{flex:1;min-width:220px}
.dash-date{font-family:'EB Garamond',Georgia,serif;font-size:20px;font-weight:600;color:#0f2044;text-transform:capitalize;display:flex;align-items:center;gap:9px;letter-spacing:.01em}
.dash-date svg{flex-shrink:0;color:#d4a017}
.dash-rem{font-family:'Lato',system-ui,sans-serif;font-size:11.5px;color:#64748b;margin-top:5px;display:flex;align-items:center;gap:7px;letter-spacing:.01em}
.dash-rem svg{flex-shrink:0;color:#64748b}
.dash-metrics{display:flex;gap:10px;flex-wrap:wrap}
.metric{font-family:'Lato',system-ui,sans-serif;padding:10px 16px;border-radius:6px;min-width:82px;text-align:center;background:#fff;border:1px solid #e2e8f0;border-left:3px solid #cbd5e1;box-shadow:0 1px 2px rgba(15,23,42,.04);transition:box-shadow .2s,transform .2s;cursor:pointer}
.metric:hover{box-shadow:0 3px 8px rgba(15,23,42,.08);transform:translateY(-1px)}
.dmodal-bg{position:fixed;inset:0;background:rgba(15,32,68,.55);z-index:150;display:flex;align-items:flex-start;justify-content:center;padding:40px 20px;overflow-y:auto}
.dmodal{font-family:'Lato',system-ui,sans-serif;background:white;border-radius:12px;max-width:940px;width:100%;padding:22px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.dmodal-hd{display:flex;align-items:start;justify-content:space-between;margin-bottom:14px;gap:10px}
.dmodal-close{background:#f1f5f9;border:none;border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:14px;color:#64748b;flex-shrink:0}
.dmodal-close:hover{background:#e2e8f0}
.metric-num{font-size:19px;font-weight:900;line-height:1;color:#0f2044}
.metric-lbl{font-size:8.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;margin-top:4px;color:#64748b}
.m-urg{border-left-color:#dc2626}
.m-urg .metric-num{color:#991b1b}
.m-urg.zero{border-left-color:#e2e8f0}
.m-urg.zero .metric-num{color:#64748b}
.m-today{border-left-color:#d4a017}
.m-today .metric-num{color:#92400e}
.m-today.zero{border-left-color:#e2e8f0}
.m-today.zero .metric-num{color:#64748b}
.m-week{border-left-color:#1e40af}
.m-week .metric-num{color:#1e40af}
.m-total{border-left-color:#0f2044}
/* Sin señal de vida: expedientes activos que no dispara ninguna alerta.
   Morado para que no se confunda con un vencimiento (rojo/naranja): no es
   una urgencia de fecha, es trabajo de captura pendiente. */
.m-estancado{border-left-color:#0891b2}
.m-estancado .metric-num{color:#155e75}
.m-estancado.zero{border-left-color:#e2e8f0}
.m-estancado.zero .metric-num{color:#64748b}
.m-sinsenal{border-left-color:#7c3aed}
.m-sinsenal .metric-num{color:#5b21b6}
.m-sinsenal.zero{border-left-color:#e2e8f0}
.m-sinsenal.zero .metric-num{color:#64748b}
.m-plazo-venc{border-left-color:#dc2626}
.m-plazo-venc .metric-num{color:#991b1b}
.m-plazo-venc.zero{border-left-color:#e2e8f0}
.m-plazo-venc.zero .metric-num{color:#64748b}
.m-plazo-prox{border-left-color:#d4a017}
.m-plazo-prox .metric-num{color:#9a3412}
.m-plazo-prox.zero{border-left-color:#e2e8f0}
.m-plazo-prox.zero .metric-num{color:#64748b}
.m-plazo-prox.urgent{border-left-color:#dc2626;background:#fef2f2}
.m-plazo-prox.urgent .metric-num{color:#991b1b}
.m-plazo-proc{border-left-color:#1e40af}
.m-plazo-proc .metric-num{color:#1e40af}
.m-plazo-proc.zero{border-left-color:#e2e8f0}
.m-plazo-proc.zero .metric-num{color:#64748b}
/* Plazo contestación badges en tabla */
.plazo-badge{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:999px;white-space:nowrap}
.plazo-venc{background:#fee2e2;color:#991b1b}
.plazo-prox{background:#ffedd5;color:#9a3412}
.plazo-proc{background:#dbeafe;color:#1e40af}
.plazo-ok{background:#d1fae5;color:#065f46}
/* Priority badges */
.prio{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:999px;white-space:nowrap}
.prio-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.prio-bar{display:inline-block;width:4px;height:18px;border-radius:2px;vertical-align:middle}
/* Login screen */
#loginScreen{position:fixed;inset:0;background:#0f2044;display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}
.wcard{background:white;border-radius:20px;padding:36px;max-width:420px;width:100%;text-align:center}
.wlogo{width:180px;height:66px;border-radius:14px;background:#fff;border:1px solid #e2e8f0;display:flex;align-items:center;justify-content:center;padding:8px 14px;margin:0 auto 18px}
.wtitle{font-size:19px;font-weight:900;color:#0f2044;margin-bottom:8px}
.wsub{font-size:12.5px;color:#64748b;margin-bottom:24px;line-height:1.6}
.wnote{font-size:11.5px;color:#64748b;margin-top:16px;line-height:1.5;min-height:18px}
/* Loading overlay */
#loadingOverlay{display:none;position:fixed;inset:0;background:rgba(15,32,68,.55);z-index:100;align-items:center;justify-content:center}
.spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.2);border-top-color:#fbbf24;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* Iconos SVG (reemplazan emoji) */
.icon{width:1em;height:1em;display:inline-block;vertical-align:-.15em;flex-shrink:0}
.icon-spin{animation:spin 1s linear infinite}
.icon-lg{width:1.6em;height:1.6em}
.icon-xl{width:2.2em;height:2.2em}
/* Punto de color inline (sustituye emoji de semáforo/estatus) */
.dot-ic{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0;vertical-align:middle;margin-right:1px}
/* Readonly ribbon */
.readonly-bar{background:#1e3a5f;border-left:3px solid #fbbf24;padding:7px 20px;font-size:10.5px;color:#fde68a;font-weight:700;display:flex;align-items:center;gap:8px}
/* Atendidos banner */
.aten-banner{background:white;border-radius:14px;border:1px solid #bbf7d0;border-left:4px solid #059669;padding:14px 20px;margin-bottom:16px}
.aten-header{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none}
.aten-icon{width:30px;height:30px;border-radius:8px;background:#d1fae5;display:flex;align-items:center;justify-content:center;font-size:17px;color:#059669;flex-shrink:0}
.aten-title{font-weight:900;font-size:13px;color:#065f46;flex:1}
.aten-count{font-size:10.5px;font-weight:800;background:#d1fae5;color:#065f46;padding:2px 10px;border-radius:999px;margin-right:6px}
.aten-chevron{font-size:11.5px;color:#059669;transition:transform .2s}
.aten-chevron.open{transform:rotate(180deg)}
.aten-body{margin-top:12px;border-top:1px solid #d1fae5;padding-top:10px;overflow:hidden}
.aten-row{display:grid;grid-template-columns:140px 1fr 1fr 1fr;gap:6px;align-items:start;padding:7px 8px;border-radius:8px;font-size:11.5px;border-bottom:1px solid #f0fdf4}
.aten-row:last-child{border-bottom:none}
.aten-row:hover{background:#f0fdf4}
.aten-num{font-weight:800;color:#0f2044;font-size:11.5px}
.aten-oficio{display:flex;flex-direction:column;gap:1px}
.aten-oficio-lbl{font-size:10.5px;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.05em}
.aten-oficio-val{font-size:10.5px;color:#065f46;font-weight:700}
.aten-oficio-date{font-size:10.5px;color:#64748b}
.aten-oficio-empty{font-size:10.5px;color:#d1d5db;font-style:italic}
.m-aten{border-left-color:#059669}
.m-aten .metric-num{color:#065f46}
.m-aten.zero{border-left-color:#e2e8f0}
.m-aten.zero .metric-num{color:#64748b}
/* ── Notificaciones ─────────────────────────────────────────── */
.notif-banner{background:#1e3a5f;border-left:4px solid #fbbf24;padding:10px 20px;display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;position:sticky;top:0;z-index:40}
.notif-body{flex:1;min-width:0}
.notif-title{font-size:11.5px;font-weight:900;color:#fbbf24;margin-bottom:6px;display:flex;align-items:center;gap:6px}
.notif-chips{display:flex;gap:5px;flex-wrap:wrap}
.notif-chip{font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:999px;cursor:pointer;white-space:nowrap}
.nc-red{background:#fef2f2;color:#dc2626}.nc-red:hover{background:#fee2e2}
.nc-yellow{background:#fefce8;color:#854d0e}.nc-yellow:hover{background:#fef9c3}
.nc-blue{background:#eff6ff;color:#1d4ed8}.nc-blue:hover{background:#dbeafe}
/* ── Calendario ─────────────────────────────────────────────── */
.cal-wrap{background:white;border-radius:14px;border:1px solid #f1f5f9;padding:20px}
.cal-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.cal-nav-btn{background:white;border:1px solid #e2e8f0;border-radius:7px;padding:5px 14px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit;color:#374151;transition:background .1s}
.cal-nav-btn:hover{background:#f8fafc}
.cal-month-title{font-size:18px;font-weight:600;color:#0f2044;flex:1;text-align:center;text-transform:capitalize;font-family:'EB Garamond',Georgia,serif}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-head{text-align:center;font-size:10.5px;font-weight:900;color:#64748b;text-transform:uppercase;letter-spacing:.07em;padding:5px 0}
.cal-cell{min-height:76px;border:1px solid #f1f5f9;border-radius:7px;padding:4px 5px;background:white;position:relative}
.cal-cell.other{opacity:.38;pointer-events:none}
.cal-cell.today{border-color:#3b82f6;border-width:2px}
.cal-cell.has-ev{cursor:default}
.cal-num{font-size:11.5px;font-weight:800;color:#475569;line-height:1;margin-bottom:3px}
.cal-cell.today .cal-num{color:#2563eb}
.cal-ev{font-size:10.5px;font-weight:700;padding:1px 4px;border-radius:4px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;display:block}
.cal-ev:hover{opacity:.8}
.ev-a{background:#dbeafe;color:#1e40af}
.ev-c{background:#fee2e2;color:#991b1b}
.ev-e{background:#fef3c7;color:#92400e}
.ev-s{background:#d1fae5;color:#065f46}
.ev-x{background:#ffedd5;color:#9a3412}
.ev-o{background:#ede9fe;color:#5b21b6}
.cal-legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid #f1f5f9}
.cal-leg{display:flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;color:#374151}
.cal-leg-dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}
/* ── Tabs detalle ───────────────────────────────────────────── */
.det-tabs{display:flex;gap:0;border-bottom:2px solid #f1f5f9;margin-bottom:16px;overflow-x:auto}
.det-tab{padding:8px 16px;font-size:11.5px;font-weight:800;cursor:pointer;border:none;background:none;font-family:inherit;color:#64748b;border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:color .15s;display:inline-flex;align-items:center;gap:5px}
.det-tab.active{color:#0f2044;border-bottom-color:#d4a017}
.det-tab:hover:not(.active){color:#475569}
/* ── Tareas ─────────────────────────────────────────────────── */
.tarea-item{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;border-radius:8px;border:1px solid #f1f5f9;margin-bottom:5px;transition:background .1s}
.tarea-item:hover{background:#f8fafc}
.tarea-item.done{opacity:.55}
.tarea-cb{width:16px;height:16px;cursor:pointer;flex-shrink:0;margin-top:2px;accent-color:#059669}
.tarea-info{flex:1;min-width:0}
.tarea-titulo{font-size:12.5px;font-weight:700;color:#1e293b}
.tarea-item.done .tarea-titulo{text-decoration:line-through;color:#64748b}
.tarea-meta{font-size:10.5px;color:#64748b;margin-top:3px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tarea-bdg{font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:999px}
.tarea-add-row{display:flex;gap:7px;margin-top:10px;flex-wrap:wrap;align-items:center}
.tmpl-grid{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
/* ── Documentos ─────────────────────────────────────────────── */
.drop-zone{border:2px dashed #d1d5db;border-radius:10px;padding:22px;text-align:center;cursor:pointer;transition:all .2s;background:white;margin-bottom:12px}
.drop-zone:hover,.drop-zone.drag-over{border-color:#3b82f6;background:#eff6ff}
.doc-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;border:1px solid #f1f5f9;margin-bottom:5px;background:white;transition:background .1s}
.doc-item:hover{background:#f8fafc}
.doc-icon{width:32px;height:32px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;background:#f1f5f9;color:#475569}
.doc-info{flex:1;min-width:0}
.doc-name{font-size:12.5px;font-weight:700;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-meta{font-size:10.5px;color:#64748b;margin-top:2px}
/* ── Timeline ───────────────────────────────────────────────── */
.tl{padding:6px 0}
.tl-row{display:flex;gap:14px;position:relative}
.tl-axis{display:flex;flex-direction:column;align-items:center;width:28px;flex-shrink:0}
.tl-dot{width:12px;height:12px;border-radius:50%;border:2px solid white;box-shadow:0 0 0 2px;flex-shrink:0;margin-top:3px}
.tl-line{width:2px;flex:1;background:#e2e8f0;margin:2px 0 0}
.tl-row:last-child .tl-line{display:none}
.tl-body{flex:1;padding-bottom:18px}
.tl-fecha{font-size:10.5px;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.04em}
.tl-label{font-size:12.5px;font-weight:800;color:#1e293b;margin-top:2px}
.tl-sub{font-size:11.5px;color:#64748b;margin-top:2px}
/* ── Firmeza / Cumplimiento ─────────────────────────────────── */
.firmeza-panel{border-radius:10px;border:1px solid;padding:14px 16px;margin-top:10px}
.firmeza-panel.normal{background:#f0fdf4;border-color:#bbf7d0}
.firmeza-panel.warn{background:#fefce8;border-color:#fde047}
.firmeza-panel.urgent{background:#fef2f2;border-color:#fecaca}
.firmeza-panel.neutral{background:#f8fafc;border-color:#e2e8f0}
.firmeza-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
.firmeza-item{display:flex;flex-direction:column;gap:3px}
.firmeza-lbl{font-size:10.5px;font-weight:900;color:#64748b;text-transform:uppercase;letter-spacing:.07em}
.firmeza-val{font-size:13px;font-weight:900;color:#0f2044}
.firmeza-sub{font-size:10.5px;color:#64748b;margin-top:1px}
.cumpl-badge{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;padding:4px 12px;border-radius:999px;margin-top:8px}
.cumpl-verde{background:#d1fae5;color:#065f46}
.cumpl-amarillo{background:#fef9c3;color:#713f12}
.cumpl-rojo{background:#fee2e2;color:#991b1b}
.dias-chip{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:999px;margin-left:4px}
.m-cumpl{border-left-color:#d4a017}
.m-cumpl .metric-num{color:#92400e}
.m-cumpl.zero{border-left-color:#e2e8f0}
.m-cumpl.zero .metric-num{color:#64748b}
.m-cumpl.urgent{border-left-color:#dc2626}
.m-cumpl.urgent .metric-num{color:#991b1b}
/* Plazo info box */
.plazo-info{margin-top:6px;padding:8px 11px;border-radius:7px;font-size:10.5px;line-height:1.45}
.plazo-info.contencioso{background:#fef3c7;color:#78350f;border-left:3px solid #d97706}
.plazo-info.agrario{background:#d1fae5;color:#065f46;border-left:3px solid #059669}
.plazo-info.warn{background:#fee2e2;color:#991b1b;border-left:3px solid #dc2626}
.plazo-info b{font-weight:800}
.plazo-info .law{display:block;font-size:10.5px;opacity:.85;margin-top:3px;font-style:italic}
.plazo-info .pf{display:inline-block;background:rgba(255,255,255,.55);padding:1px 6px;border-radius:4px;font-weight:800;margin:0 2px}
/* etiqueta de tipo de oficio (sólo visible en móvil) */
.aten-oficio-tag{display:none;font-size:8px;font-weight:900;color:#64748b;text-transform:uppercase;letter-spacing:.06em}

/* ── Modo Captura ───────────────────────────────────────────── */
.cap-bar{margin-bottom:16px}
.cap-bar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.cap-bar-title{font-weight:900;font-size:13px;color:#0f2044;display:flex;align-items:center;gap:6px}
.cap-bar-count{font-size:12.5px;font-weight:800;color:#0f2044}
.cap-track{height:8px;background:#f1f5f9;border-radius:999px;overflow:hidden}
.cap-fill{height:100%;background:#059669;border-radius:999px;transition:width var(--dur-slow) var(--ease-out)}
.cap-grupos{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.cap-grupo{padding:16px;display:flex;flex-direction:column}
.cap-grupo-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;color:#0f2044;font-weight:800;font-size:13px}
.cap-grupo-count{font-size:12px;color:#64748b;margin-bottom:12px;flex:1}
.cap-pos{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:6px;font-size:11.5px;font-weight:800;color:#64748b}
.cap-mini-track{height:5px;background:#f1f5f9;border-radius:999px;overflow:hidden;margin-bottom:14px}
.cap-mini-fill{height:100%;background:#d4a017;border-radius:999px}
.cap-exp-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.cap-exp-num{font-weight:900;font-size:15px;color:#0f2044}
.cap-exp-sub{font-size:12.5px;color:#64748b;margin-bottom:16px}
.cap-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;padding-top:14px;border-top:1px solid #f1f5f9}
.cap-done{text-align:center;padding:36px}
.cap-done-icon{font-size:32px;color:#059669;margin-bottom:10px}

/* ═══════════════════════════════════════════════════════════════ */
/* TRANSICIONES — micro-interacciones + cambios de vista fluidos    */
/* ═══════════════════════════════════════════════════════════════ */
:root{--ease-out:cubic-bezier(.16,1,.3,1);--ease-in-out:cubic-bezier(.65,0,.35,1);--dur-fast:150ms;--dur-base:220ms;--dur-slow:320ms}

/* Feedback táctil/visual consistente en todo elemento interactivo */
.btn,.nav button,.rtab,.det-tab,.tbl-nav-btn,.cal-nav-btn,.hdr-logout,.metric,
.tbl tbody tr,.doc-item,.tarea-item,.aten-row,.link-btn,.dmodal-close,
.cal-cell,.cal-ev,.notif-chip,input,select,textarea,.badge,.plazo-badge,.prio{
  transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),
    border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),opacity var(--dur-fast) var(--ease-out);
}
.btn:active,.tbl-nav-btn:active,.cal-nav-btn:active{transform:scale(.97)}
.card{transition:box-shadow var(--dur-base) var(--ease-out)}

/* Entrada de modales: fundido + escala suave */
@keyframes modalIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes modalBgIn{from{opacity:0}to{opacity:1}}
.dmodal-bg{animation:modalBgIn var(--dur-base) var(--ease-out)}
.dmodal{animation:modalIn var(--dur-slow) var(--ease-out)}

/* Entrada de tarjetas de contenido principal al renderizar una vista */
@keyframes viewIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
#importMain{animation:viewIn var(--dur-slow) var(--ease-out)}

/* Toast: aparece deslizando y se funde */
@keyframes toastIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.toast{transition:opacity var(--dur-base) var(--ease-out)}
.toast[style*="display: block"],.toast[style*="display:block"]{animation:toastIn var(--dur-base) var(--ease-out)}

/* Acordeón "Atendidos" */
.aten-chevron{transition:transform var(--dur-base) var(--ease-out)}
.aten-body{transition:opacity var(--dur-base) var(--ease-out)}

/* Transiciones de vista completas (SPA) vía View Transitions API */
::view-transition-old(root){animation:viewOut var(--dur-fast) var(--ease-in-out) both}
::view-transition-new(root){animation:viewIn2 var(--dur-base) var(--ease-out) both}
@keyframes viewOut{to{opacity:0}}
@keyframes viewIn2{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

/* Respeta la preferencia de movimiento reducido del usuario */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}

/* ───────────────────────────────────────────────────────────── */
/* RESPONSIVE — tablet y teléfono                                  */
/* ───────────────────────────────────────────────────────────── */
@media (max-width:820px){
  .main{padding:14px}
  .grid2,.firmeza-grid{grid-template-columns:1fr}
  .header-top{flex-wrap:wrap;row-gap:8px;padding:11px 15px}
  .nav{overflow-x:auto;-webkit-overflow-scrolling:touch;padding:0 10px}
  .nav::-webkit-scrollbar{height:0}
  .nav button{white-space:nowrap;flex:0 0 auto}
  .notif-banner,.file-bar,.readonly-bar{padding-left:15px;padding-right:15px}
  .cap-grupos{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  body{font-size:14px}
  .main{padding:11px}
  .card{padding:14px;border-radius:10px}
  /* Encabezado compacto: antes .hdr-stats envolvía sus 4 hijos (total,
     usuario, campana, salir) en hasta 4 filas apiladas, dejando casi media
     pantalla de encabezado antes de cualquier contenido. El total de
     expedientes ya se ve en el tablero, así que se oculta aquí; lo demás
     se fuerza a una sola fila, truncando el nombre si hace falta. */
  .logo{width:78px;height:32px;padding:3px 6px}
  .header-top>div:nth-child(2){flex:1;min-width:0}
  /* flex-basis:100% empuja este bloque a su propia fila (debajo de logo +
     título), en vez de competir por espacio con el título en la misma
     fila — eso era lo que aplastaba el título palabra por palabra. */
  .hdr-stats{flex-wrap:nowrap;flex-basis:100%;justify-content:flex-end;margin-left:0;gap:8px}
  .hdr-stats .hdr-stat{display:none}
  .hdr-user{min-width:0;max-width:100px;padding-left:8px}
  .hdr-user-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hdr-role{font-size:8px;padding:1px 6px}
  .hdr-logout{padding:6px 10px;font-size:10.5px;white-space:nowrap;flex-shrink:0}
  /* Métricas del dashboard: rejilla de 3 columnas, táctil */
  .dash{padding:13px 15px;gap:13px}
  .dash-info{min-width:0}
  .dash-date{font-size:15px}
  .dash-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;width:100%}
  .metric{min-width:0;padding:9px 4px}
  .metric-num{font-size:16px}
  .metric-lbl{font-size:7.5px;letter-spacing:0}
  /* Filas de detalle apiladas (etiqueta arriba, valor abajo) */
  .dr{flex-direction:column;gap:1px;padding:7px 0}
  .dl{width:auto;padding-top:0;font-size:9px}
  .dv{font-size:13px}
  /* Sección "Atendidos": tarjetas apiladas con etiqueta por campo */
  .aten-head-row{display:none!important}
  .aten-row{grid-template-columns:1fr;gap:8px;padding:11px 9px;border:1px solid #d1fae5;border-radius:9px;margin-bottom:7px}
  .aten-oficio-tag{display:block;margin-bottom:1px}
  .aten-title{font-size:12.5px}
  /* Barra de herramientas de la lista a ancho completo */
  #listaFilter{width:100%!important;flex:1 1 100%}
  /* Calendario más compacto */
  .cal-wrap{padding:13px}
  .cal-grid{gap:2px}
  .cal-cell{min-height:54px;padding:3px 3px}
  .cal-num{font-size:10.5px}
  .cal-ev{font-size:8px;padding:1px 3px}
  .cal-month-title{font-size:14px}
  .cal-nav-btn{padding:5px 10px}
  /* Línea de tiempo y firmeza */
  .firmeza-panel{padding:12px 13px}
  /* Login */
  .wcard{padding:26px 22px;border-radius:16px}
  /* Tablas densas: desplazamiento horizontal suave (la página no se ensancha) */
  .tbl{font-size:11px}
  .det-tab{padding:8px 12px}
  /* Modo Captura: un lote por fila, acciones a ancho completo */
  .cap-grupos{grid-template-columns:1fr}
  .cap-actions{flex-direction:column-reverse}
  .cap-actions .btn{width:100%}
  .cap-pos{font-size:10.5px}
}
@media (max-width:380px){
  .dash-metrics{grid-template-columns:repeat(2,1fr)}
}
