:root{
  --bg:#F5F6F7;--surface:#FFFFFF;--border:#DFE3E6;--border-strong:#C7CED4;
  --text:#171A1C;--text-soft:#5B6570;--text-faint:#8A929A;
  --accent:#2F5FA0;--accent-soft:#E8EFF8;
  --success:#2F7A4F;--success-soft:#E7F3EC;
  --warning:#A66A00;--warning-soft:#FBF0DD;
  --danger:#B3261E;--danger-soft:#FBE9E7;
  --info:#5B6570;--info-soft:#EDEFF2;
  --obsolete:#4A4F56;--obsolete-soft:#E3E5E7;
  --previsto:#6B4FA0;--previsto-soft:#F1ECFB;
}
*{box-sizing:border-box;}
body{margin:0;font-family:'IBM Plex Sans',system-ui,sans-serif;background:var(--bg);color:var(--text);}
a{color:var(--accent);text-decoration:none;}
a:hover{color:#1F4578;}
table{border-collapse:collapse;width:100%;}
th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px;}
th{color:var(--text-soft);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:0.04em;background:#FAFBFC;}
tr:last-child td{border-bottom:none;}
.mono{font-family:'IBM Plex Mono',ui-monospace,monospace;}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:100px;font-size:11px;font-weight:600;white-space:nowrap;}
.badge-vigente{background:var(--success-soft);color:var(--success);}
.badge-por_vencer{background:var(--warning-soft);color:var(--warning);}
.badge-vencido{background:var(--danger-soft);color:var(--danger);}
.badge-revision{background:var(--accent-soft);color:var(--accent);}
.badge-elaboracion{background:var(--info-soft);color:var(--info);}
.badge-obsoleto{background:var(--obsolete-soft);color:var(--obsolete);}
.badge-previsto{background:var(--previsto-soft);color:var(--previsto);}
.badge-sin_fecha{background:var(--info-soft);color:var(--info);}
.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;}
.kpi-card{display:block;padding:16px 18px;color:inherit;text-decoration:none;transition:border-color 0.12s ease, box-shadow 0.12s ease;}
.kpi-card:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.card:has(table){overflow-x:auto;}
.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:24px;}
.split-main-side{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;}
.two-col-equal{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.mobile-topbar{display:none;}
.sidebar-overlay{display:none;}
.layout{display:flex;min-height:100vh;}
.sidebar{width:240px;flex-shrink:0;background:#141A21;display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;transition:transform 0.2s ease;}
.sidebar-brand{padding:22px 20px 18px;border-bottom:1px solid #232B34;}
.sidebar-brand .name{font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:16px;color:#fff;}
.sidebar-brand .org{font-size:11px;color:#6B747D;margin-top:3px;letter-spacing:0.04em;}
.nav{flex:1;padding:16px 0;display:flex;flex-direction:column;gap:2px;}
.navitem{display:flex;align-items:center;gap:11px;padding:10px 20px;font-size:13px;color:#9AA3AC;border-left:3px solid transparent;}
.navitem:hover{color:#fff;}
.navitem.active{background:#1F2A35;color:#fff;border-left-color:var(--accent);}
.navitem svg{flex-shrink:0;}
.sidebar-user{padding:16px 20px;border-top:1px solid #232B34;display:flex;align-items:center;gap:10px;}
.avatar{width:32px;height:32px;border-radius:100px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;}
.main{flex:1;display:flex;flex-direction:column;min-width:0;margin-left:240px;}
.topbar{min-height:64px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:14px 32px;flex-wrap:wrap;gap:12px;}
.topbar .eyebrow{font-size:11px;color:var(--text-faint);margin-bottom:2px;}
.topbar h1{font-size:18px;font-weight:600;margin:0;}
.content{flex:1;padding:24px 32px;}
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;font-family:inherit;}
.btn-primary{background:var(--accent);color:#fff;}
.btn-secondary{background:#fff;color:var(--text);border-color:var(--border-strong);}
.btn-danger{background:var(--danger);color:#fff;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:11.5px;font-weight:600;color:var(--text-soft);margin-bottom:6px;}
.field input,.field select,.field textarea{width:100%;padding:9px 12px;border:1px solid var(--border-strong);border-radius:6px;font-size:13px;font-family:inherit;color:var(--text);background:#fff;}
.field textarea{resize:vertical;min-height:64px;}
.field .help{font-size:11.5px;color:var(--text-faint);margin-top:4px;}
.field .errors{font-size:12px;color:var(--danger);margin-top:4px;}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}
.chips{display:flex;flex-wrap:wrap;gap:8px;}
.chip-option{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:100px;border:1px solid var(--border-strong);font-size:12.5px;cursor:pointer;}
.chip-option input{margin:0;}
.chip-option:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600;}
.filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;}
.filter-bar select,.filter-bar input[type=text]{padding:8px 12px;border:1px solid var(--border-strong);border-radius:6px;font-size:12px;font-family:inherit;}
.version-banner{display:none;background:var(--warning-soft);color:#7A4B00;border-bottom:1px solid #E9CE9A;padding:10px 32px;font-size:13px;align-items:center;gap:14px;}
.version-banner.show{display:flex;}
.version-banner button{background:var(--warning);color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;}
.messages{list-style:none;margin:0 0 16px;padding:0;}
.messages li{padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:8px;background:var(--danger-soft);color:#7A1B15;}
.messages li.success{background:var(--success-soft);color:#1E4B30;}
.messages li.info{background:var(--accent-soft);color:#1F4578;}
.messages li.warning{background:var(--warning-soft);color:#7A4B00;}

/* Responsivo — celular/tablet angosta. El sidebar fijo de 240px y las
grillas de columnas fijas se diseñaron solo pensando en escritorio; en un
celular angosto el sidebar se comía casi toda la pantalla y no dejaba
trabajar (reportado por el usuario). */
@media (max-width: 860px){
  .mobile-topbar{
    display:flex;align-items:center;gap:12px;
    background:#141A21;color:#fff;padding:14px 16px;position:sticky;top:0;z-index:20;
  }
  .mobile-topbar button{
    background:none;border:none;color:#fff;padding:6px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
  }
  .mobile-topbar .name{font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:15px;}

  .sidebar{
    transform:translateX(-100%);z-index:30;width:80%;max-width:280px;
  }
  .sidebar.open{transform:translateX(0);}
  .sidebar-overlay{
    display:none;position:fixed;inset:0;background:rgba(0,0,0,0.4);z-index:25;
  }
  .sidebar-overlay.show{display:block;}
  .navitem{padding:13px 20px;font-size:14px;}

  .main{margin-left:0;}
  .topbar{padding:14px 16px;}
  .content{padding:16px;}
  .version-banner{padding:10px 16px;flex-wrap:wrap;}

  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .split-main-side,.two-col-equal,.grid-2,.grid-3{grid-template-columns:1fr;}
  .filter-bar select,.filter-bar input[type=text]{flex:1 1 100%;}
  .chips{gap:6px;}
}
@media (max-width: 420px){
  .kpi-grid{grid-template-columns:1fr;}
}
