[hidden]{display:none!important}:root{--c-bg: #f4f5f7;--c-surface: #ffffff;--c-surface-2: #f9fafb;--c-border: #dfe3e8;--c-text: #1f2933;--c-text-muted: #52606d;--c-text-faint: #7b8794;--c-primary: #1f5c3d;--c-primary-dark: #16452d;--c-primary-soft: #e6f0ea;--c-accent: #2563eb;--c-danger: #b42318;--c-danger-soft: #fdecea;--c-warn: #b45309;--c-warn-soft: #fef5e7;--c-ok: #027a48;--c-ok-soft: #e7f6ee;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--radius: 8px;--radius-sm: 5px;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .1);--sidebar-w: 232px;--font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--c-bg);color:var(--c-text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--c-accent)}h1{font-size:1.5rem;margin:0 0 var(--sp-4)}h2{font-size:1.15rem;margin:0 0 var(--sp-3)}h3{font-size:1rem;margin:0 0 var(--sp-2)}.gate{min-height:100vh;display:grid;place-items:center;padding:var(--sp-4)}.gate-card{max-width:420px;text-align:center}.gate-card h1{font-size:1.3rem}.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:auto 1fr;grid-template-areas:"sidebar topbar" "sidebar main";min-height:100vh}.topbar{grid-area:topbar;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-3) var(--sp-5);background:var(--c-surface);border-bottom:1px solid var(--c-border)}.topbar .user{display:flex;align-items:center;gap:var(--sp-3);text-align:right}.topbar .user-name{font-weight:600}.topbar .user-rol{display:inline-block;font-size:.75rem;color:var(--c-primary-dark);background:var(--c-primary-soft);padding:2px 8px;border-radius:999px}.topbar .logout{font-size:.85rem}.sidebar{grid-area:sidebar;background:var(--c-primary-dark);color:#dbe6df;padding:var(--sp-4) var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-4)}.sidebar .brand{font-weight:700;color:#fff;font-size:.95rem;padding:var(--sp-2) var(--sp-2) var(--sp-3);border-bottom:1px solid rgba(255,255,255,.12);line-height:1.3}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{display:block;color:#cdddd4;text-decoration:none;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);font-size:.92rem}.sidebar nav a:hover{background:#ffffff14;color:#fff}.sidebar nav a[aria-current=page]{background:var(--c-primary);color:#fff;font-weight:600}.main{grid-area:main;padding:var(--sp-5);max-width:1200px;width:100%}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--sp-5);box-shadow:var(--shadow);margin-bottom:var(--sp-5)}.card>h2:first-child,.card>h1:first-child{margin-top:0}.grid{display:grid;gap:var(--sp-4)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.metric{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow)}.metric .label{font-size:.8rem;color:var(--c-text-muted);margin-bottom:var(--sp-1)}.metric .value{font-size:1.6rem;font-weight:700}.metric.metric-ok .value{color:var(--c-ok)}.metric.metric-danger .value{color:var(--c-danger)}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:.9rem}table.data th,table.data td{text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--c-border);white-space:nowrap}table.data th{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-faint);background:var(--c-surface-2)}table.data tbody tr:hover{background:var(--c-surface-2)}table.data td.num,table.data th.num{text-align:right}.badge{display:inline-block;font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:999px}.badge-ok{background:var(--c-ok-soft);color:var(--c-ok)}.badge-warn{background:var(--c-warn-soft);color:var(--c-warn)}.badge-danger{background:var(--c-danger-soft);color:var(--c-danger)}.badge-muted{background:#eef1f4;color:var(--c-text-muted)}.field{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-3)}.field label{font-size:.82rem;font-weight:600;color:var(--c-text-muted)}.field .hint{font-size:.75rem;color:var(--c-text-faint)}.autocomplete-lista{list-style:none;margin:2px 0 0;padding:0;position:absolute;top:100%;left:0;right:0;z-index:20;background:#fff;border:1px solid var(--c-border);border-radius:var(--radius-sm);box-shadow:0 6px 18px #0000001f;max-height:240px;overflow-y:auto}.autocomplete-lista li{padding:var(--sp-2) var(--sp-3);cursor:pointer;font-size:.88rem}.autocomplete-lista li:hover,.autocomplete-lista li.activo{background:var(--c-primary-soft)}.autocomplete-lista li small{display:block;color:var(--c-text-muted);font-size:.75rem}input,select,textarea{font:inherit;color:var(--c-text);padding:var(--sp-2) var(--sp-3);border:1px solid var(--c-border);border-radius:var(--radius-sm);background:#fff;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--c-primary-soft);border-color:var(--c-primary)}.checkbox-row{flex-direction:row;align-items:flex-start;gap:var(--sp-2)}.checkbox-row input{width:auto;margin-top:3px}.checkbox-row label{font-weight:400}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 var(--sp-4)}.form-actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-3)}.filters{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:flex-end;margin-bottom:var(--sp-4)}.filters .field{margin-bottom:0;min-width:150px}.btn{display:inline-flex;align-items:center;gap:var(--sp-2);font:inherit;font-size:.9rem;font-weight:600;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-sm);border:1px solid var(--c-border);background:#fff;color:var(--c-text);cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{background:var(--c-surface-2)}.btn-primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.btn-primary:hover{background:var(--c-primary-dark)}.btn-danger{background:#fff;border-color:var(--c-danger);color:var(--c-danger)}.btn-danger:hover{background:var(--c-danger-soft)}.btn-sm{padding:3px 10px;font-size:.8rem}.btn:disabled{opacity:.5;cursor:not-allowed}.toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-4)}.alert{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);font-size:.9rem;margin-bottom:var(--sp-4)}.alert-error{background:var(--c-danger-soft);color:var(--c-danger);border:1px solid #f3c0bb}.alert-ok{background:var(--c-ok-soft);color:var(--c-ok);border:1px solid #b7e3c9}.alert-warn{background:var(--c-warn-soft);color:var(--c-warn);border:1px solid #f0d59b}.login-msg{margin-top:var(--sp-3);margin-bottom:0}.empty,.loading{padding:var(--sp-5);text-align:center;color:var(--c-text-faint)}.banner-conexion{background:var(--c-warn-soft);color:var(--c-warn);padding:var(--sp-2) var(--sp-5);font-size:.85rem;border-bottom:1px solid #f0d59b}.rgpd-footer{grid-area:main;align-self:end}.rgpd-note{margin-top:var(--sp-5);padding:var(--sp-3) var(--sp-4);font-size:.8rem;color:var(--c-text-muted);background:var(--c-warn-soft);border:1px solid #f0d59b;border-radius:var(--radius-sm)}dialog.modal{border:none;border-radius:var(--radius);padding:0;max-width:640px;width:92%;box-shadow:0 10px 40px #10182840}dialog.modal::backdrop{background:#10182873}dialog.modal .modal-head{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--c-border)}dialog.modal .modal-head h2{margin:0}dialog.modal .modal-body{padding:var(--sp-5);max-height:70vh;overflow-y:auto}dialog.modal .modal-foot{display:flex;justify-content:flex-end;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--c-border)}.icon-close{background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--c-text-faint)}.text-muted{color:var(--c-text-muted)}.text-right{text-align:right}.mt-4{margin-top:var(--sp-4)}.desglose-line{display:flex;justify-content:space-between;font-size:.85rem;padding:2px 0}@media (max-width: 860px){.shell{grid-template-columns:1fr;grid-template-areas:"topbar" "sidebar" "main"}.sidebar{flex-direction:row;flex-wrap:wrap;align-items:center}.sidebar .brand{border:none;width:100%;padding-bottom:var(--sp-2)}.sidebar nav{flex-direction:row;flex-wrap:wrap}.grid-2,.grid-3,.grid-4,.form-grid{grid-template-columns:1fr}.main{padding:var(--sp-4)}}
