:root{--bg:#fff;--bg-alt:#f5f5f7;--text:#1d1d1f;--text-soft:#6e6e73;--border:#e8e8ed;--border-strong:#d2d2d7;--bg-dark:#00205b;--bg-dark-hover:#003087;--accent:#00205b;--success:#007a3d;--warning:#c8102e;--warn-soft:#fff4f4;--ok-soft:#f1f9f4;--font-sans:'Inter',-apple-system,sans-serif;--font-mono:'IBM Plex Mono',monospace;--radius:8px;--radius-lg:12px;}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;font-family:var(--font-sans);color:var(--text);background:var(--bg-alt);}
a{color:var(--accent);text-decoration:none;}
a:hover{text-decoration:underline;}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
.hero{padding:48px 0 16px;}
.hero-title{font-size:36px;font-weight:600;letter-spacing:-0.02em;line-height:1.1;margin:0 0 12px;}
.hero-subtitle{font-size:16px;color:var(--text-soft);max-width:720px;margin:0;}
.eyebrow{font-size:13px;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-soft);font-weight:500;}
.section-title{font-size:26px;font-weight:600;letter-spacing:-0.01em;margin:8px 0 12px;}
.result-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px 22px;}
.result-card-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft);}
.result-card-number{font-family:var(--font-mono);font-size:34px;font-weight:500;margin:6px 0;}
.result-card-note{font-size:12px;font-family:var(--font-mono);color:var(--text-soft);}
.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;}
.dark-card{background:var(--bg-dark);color:#fff;border-radius:var(--radius-lg);padding:32px;}
.dark-card-badge{display:inline-block;background:#fff;color:var(--bg-dark);padding:4px 10px;border-radius:100px;font-size:11px;text-transform:uppercase;letter-spacing:0.06em;font-weight:600;}
.dark-card-title{font-size:15px;opacity:0.8;margin:14px 0 6px;}
.dark-card-huge{font-family:var(--font-mono);font-size:48px;font-weight:500;line-height:1;margin:6px 0;}
.dark-card-meta{font-size:14px;opacity:0.75;font-family:var(--font-mono);}
.topbar{position:sticky;top:0;background:#fff;border-bottom:1px solid var(--border-strong);padding:14px 40px;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.topbar-brand{font-size:15px;font-weight:600;display:flex;align-items:center;gap:16px;}
.topbar-brand-logo{font-size:17px;font-weight:700;color:var(--accent);user-select:none;}
.topbar-nav{display:flex;gap:4px;margin-left:8px;}
.topbar-nav a{padding:6px 12px;font-size:14px;color:var(--text-soft);border-radius:6px;font-weight:500;cursor:pointer;}
.topbar-nav a:hover{background:var(--bg-alt);color:var(--text);}
.topbar-nav a.is-active{color:var(--accent);font-weight:600;background:var(--bg-alt);}
.topbar-user{font-size:13px;color:var(--text-soft);display:flex;align-items:center;gap:10px;}
.topbar-username{display:inline-flex;align-items:center;gap:6px;}
.topbar-username::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--success);}
.role-pill{display:inline-block;padding:3px 9px;border-radius:100px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;background:var(--bg-alt);color:var(--accent);margin-left:6px;}
.topbar-burger{display:none;width:42px;height:42px;border:1px solid var(--border-strong);background:var(--bg);border-radius:var(--radius);align-items:center;justify-content:center;cursor:pointer;padding:0;}
.topbar-burger svg{width:20px;height:20px;}
.drawer{position:fixed;top:0;left:0;width:280px;max-width:85vw;height:100vh;background:var(--bg);z-index:1000;display:flex;flex-direction:column;box-shadow:2px 0 12px rgba(0,0,0,0.06);overflow-y:auto;transform:translateX(-100%);transition:transform 0.25s;}
.drawer.is-open{transform:translateX(0);}
.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);}
.drawer-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-soft);}
.drawer-close{width:36px;height:36px;border:1px solid var(--border-strong);background:var(--bg);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;}
.drawer-close svg{width:16px;height:16px;}
.drawer-user{padding:14px 16px;border-bottom:1px solid var(--border);}
.drawer-user-name{display:block;font-size:14px;font-weight:600;}
.drawer-user-sub{display:block;font-size:11px;color:var(--text-soft);margin-top:3px;text-transform:uppercase;letter-spacing:0.04em;}
.drawer-nav{display:flex;flex-direction:column;padding:8px;gap:2px;}
.drawer-nav a{display:flex;align-items:center;padding:12px;min-height:48px;font-size:14px;font-weight:500;border-radius:var(--radius);cursor:pointer;}
.drawer-nav a:hover{background:var(--bg-alt);}
.drawer-nav a.is-active{color:var(--accent);font-weight:600;background:var(--bg-alt);}
.drawer-footer{margin-top:auto;padding:8px;border-top:1px solid var(--border);}
.drawer-footer a{display:flex;align-items:center;padding:12px;min-height:48px;font-size:14px;font-weight:500;border-radius:var(--radius);cursor:pointer;}
.drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:999;opacity:0;pointer-events:none;transition:opacity 0.2s;}
.drawer-overlay.is-visible{opacity:1;pointer-events:auto;}
@media(min-width:769px){.drawer,.drawer-overlay{display:none !important;}}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;}
.field-label{font-size:13px;font-weight:500;}
.field-label .required{color:var(--warning);margin-left:2px;}
.input{padding:11px 14px;border-radius:var(--radius);border:1px solid var(--border-strong);font-size:15px;font-weight:500;font-family:var(--font-sans);background:var(--bg);color:var(--text);outline:none;width:100%;}
.input:focus{border-color:var(--accent);}
.field-hint{font-size:12px;color:var(--text-soft);margin-top:4px;}
.input.mono{font-family:var(--font-mono);}
@media(max-width:768px){.input{font-size:16px;}}
textarea.input{min-height:96px;resize:vertical;}
select.input{cursor:pointer;}
.combo-row{display:flex;gap:6px;align-items:stretch;}
.combo-row select.input{flex:1;}
.combo-add{flex-shrink:0;padding:0 14px;background:#fff;border:1px solid var(--border-strong);border-radius:var(--radius);font-weight:600;color:var(--accent);cursor:pointer;font-size:14px;}
.combo-add:hover{background:var(--bg-alt);border-color:var(--accent);}
.btn-primary,.btn-secondary,.btn-danger{font-family:var(--font-sans);font-weight:500;font-size:14px;padding:9px 16px;border-radius:var(--radius);cursor:pointer;text-decoration:none;display:inline-block;text-align:center;border:1px solid transparent;white-space:nowrap;}
.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn-primary:hover{background:var(--bg-dark-hover);}
.btn-secondary{background:#fff;border-color:var(--border-strong);color:var(--text);}
.btn-secondary:hover{background:var(--bg-alt);}
.btn-danger{background:#fff;border-color:#d8aaaa;color:#b00020;}
.btn-danger:hover{background:#fbeaea;border-color:#b00020;}
.btn-sm{padding:6px 12px;font-size:13px;}
@media(max-width:768px){.btn-primary,.btn-secondary,.btn-danger{min-height:44px;padding:12px 18px;}}
table.datatable{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;}
table.datatable thead th{background:#fafafc;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft);text-align:left;padding:12px 16px;border-bottom:1px solid var(--border);}
table.datatable tbody td{border-bottom:1px solid var(--border);padding:14px 16px;font-size:14px;}
table.datatable tbody tr:last-child td{border-bottom:none;}
table.datatable tbody tr:hover{background:#fafafc;}
table.datatable td.num{text-align:right;font-family:var(--font-mono);}
.row-actions{display:flex;gap:6px;align-items:center;flex-wrap:nowrap;}
@media(max-width:768px){.row-actions{flex-wrap:wrap;}}
@media(max-width:640px){
  table.datatable{border:none;background:transparent;border-radius:0;}
  table.datatable thead{display:none;}
  table.datatable,table.datatable tbody,table.datatable tr,table.datatable td{display:block;width:100%;}
  table.datatable tbody tr{background:#fff;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:10px 14px;}
  table.datatable tbody td{border:none;border-bottom:1px solid #f0f0f3;padding:10px 0;text-align:right;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}
  table.datatable tbody td:last-child{border-bottom:none;padding-top:12px;}
  table.datatable tbody td[data-label]:not([data-label=""])::before{content:attr(data-label);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft);text-align:left;}
}
.pill{display:inline-block;padding:3px 10px;border-radius:100px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;}
.pill-ok{background:var(--ok-soft);color:var(--success);}
.pill-fail{background:var(--warn-soft);color:var(--warning);}
.pill-info{background:#e8edf7;color:var(--accent);}
.pill-warning{background:#fff7e6;color:#b35900;}
.pill-neutral{background:var(--bg-alt);color:var(--text-soft);}
.alert{border:1px solid var(--border);border-left:3px solid var(--accent);background:#fff;padding:16px 20px;border-radius:0 var(--radius) var(--radius) 0;margin-bottom:16px;}
.alert-title{font-size:13px;font-weight:600;}
.alert-body{font-size:14px;color:var(--text-soft);}
.alert-error{border-left-color:var(--warning);background:var(--warn-soft);}
.alert-warning{border-left-color:#e6a700;background:#fff7e6;}
.section{padding:32px 40px;max-width:1200px;margin:0 auto;}
@media(max-width:768px){.section{padding:24px 16px;}.topbar{padding:12px 16px;}.topbar-nav{display:none;}.topbar-user .topbar-username,.topbar-user .role-pill{display:none;}.topbar-burger{display:inline-flex;}.hero-title{font-size:28px;}}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 16px;background:var(--bg-dark);background-image:radial-gradient(circle at 20% 20%,rgba(0,48,135,0.55),transparent 50%),radial-gradient(circle at 80% 80%,rgba(0,48,135,0.45),transparent 50%);}
.login-card{width:100%;max-width:440px;background:var(--bg);border-radius:14px;padding:40px 36px;box-shadow:0 6px 24px rgba(0,0,0,0.18);}
.login-title{font-size:24px;font-weight:700;margin:0 0 6px;}
.login-subtitle{font-size:13px;color:var(--text-soft);margin:0 0 28px;}
.login-card .input{background:#eef2f9;border:1px solid transparent;font-size:15px;padding:12px 14px;}
.login-card .input:focus{border-color:var(--accent);background:#fff;}
.login-card .btn-primary{width:100%;padding:14px 18px;font-size:15px;font-weight:600;margin-top:8px;background:var(--bg-dark);border-color:var(--bg-dark);}
.login-error{background:var(--warn-soft);color:var(--warning);border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:16px;display:none;}
.login-hint{margin-top:24px;padding-top:20px;border-top:1px solid var(--border);font-size:12px;color:var(--text-soft);line-height:1.7;}
.login-hint code{font-family:var(--font-mono);background:var(--bg-alt);padding:1px 5px;border-radius:4px;}
.reportes-tabs{display:flex;gap:4px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:4px;margin-bottom:20px;flex-wrap:wrap;}
.reportes-tab{flex:1;min-width:120px;text-align:center;padding:10px 16px;font-size:14px;font-weight:500;color:var(--text-soft);border-radius:8px;cursor:pointer;border:none;background:transparent;font-family:inherit;}
.reportes-tab.active{background:var(--bg-alt);color:var(--accent);font-weight:600;}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px 20px;}
.form-grid.cols-2{grid-template-columns:repeat(2, 1fr);}
.form-grid.cols-3{grid-template-columns:repeat(3, 1fr);}
@media(max-width:900px){.form-grid.cols-3{grid-template-columns:repeat(2, 1fr);}}
@media(max-width:560px){.form-grid.cols-2,.form-grid.cols-3{grid-template-columns:1fr;}}
.form-section{margin-bottom:36px;}
.form-actions{display:flex;gap:12px;align-items:center;margin-top:24px;flex-wrap:wrap;}
.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,0.55);backdrop-filter:blur(3px);display:none;align-items:flex-start;justify-content:center;z-index:200;padding:40px 16px;overflow-y:auto;}
.modal-overlay.active{display:flex;}
.modal-content{background:#fff;border-radius:var(--radius-lg);max-width:680px;width:100%;padding:32px;box-shadow:0 12px 48px rgba(0,0,0,0.2);}
.modal-content.lg{max-width:880px;}
.modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;}
.modal-title{font-size:20px;font-weight:600;margin:0;}
.modal-sub{font-size:13px;color:var(--text-soft);margin:4px 0 0;}
.modal-close{background:none;border:none;font-size:22px;color:var(--text-soft);cursor:pointer;padding:4px 8px;border-radius:6px;}
.hidden{display:none !important;}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px 32px;margin-top:8px;}
@media(max-width:640px){.detail-grid{grid-template-columns:1fr;}}
.detail-label{font-size:11px;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft);font-weight:600;margin-bottom:4px;}
.detail-value{font-size:15px;}
.filter-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:14px 16px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:18px;}
.filter-bar .input{padding:8px 12px;font-size:14px;}
.filter-bar label{font-size:11px;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft);font-weight:600;}
.flex-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.flex-between{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;}
.mt-24{margin-top:24px;}
.text-soft{color:var(--text-soft);}
.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;}
.chart-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;}
.chart-card-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft);margin:0 0 12px;}
.chart-card-note{font-size:11px;color:var(--text-soft);margin:10px 0 0;font-style:italic;}
.chart-wrap{position:relative;height:280px;}
@media(max-width:640px){.chart-wrap{height:240px;}}
.mini-stack{display:flex;flex-direction:column;gap:12px;}
.mini-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;}
.mini-card-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft);}
.mini-card-value{font-family:var(--font-mono);font-size:22px;font-weight:500;margin-top:4px;}
.mini-card-foot{font-size:11px;color:var(--text-soft);margin-top:6px;}
.mini-card ul{margin:6px 0 0;padding:0;list-style:none;font-size:12px;}
.mini-card ul li{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed #ececf0;}
.mini-card ul li:last-child{border-bottom:none;}
.mini-card ul li .nombre{color:var(--text);font-weight:500;}
.mini-card ul li .dias{font-family:var(--font-mono);color:var(--warning);font-weight:600;font-size:11px;}
.cat-tabs{display:flex;gap:4px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:4px;margin-bottom:20px;flex-wrap:wrap;}
.cat-tab{flex:1;min-width:120px;text-align:center;padding:10px 16px;font-size:14px;font-weight:500;color:var(--text-soft);border-radius:8px;cursor:pointer;border:none;background:transparent;font-family:inherit;}
.cat-tab.active{background:var(--bg-alt);color:var(--accent);font-weight:600;}
.app-loader{position:fixed;inset:0;background:rgba(255,255,255,0.85);display:flex;align-items:center;justify-content:center;z-index:2000;font-size:13px;color:var(--text-soft);}
.app-loader.hidden{display:none;}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#1d1d1f;color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;z-index:1500;opacity:0;pointer-events:none;transition:opacity 0.25s;max-width:90vw;}
.toast.is-visible{opacity:1;}
.toast.error{background:#b00020;}
