:root{--bg:#f7f7f8;--surface:#ffffff;--surface-alt:#fafafa;--border:#e5e5e7;--border-strong:#d4d4d8;--text:#1f2024;--text-muted:#6b7280;--text-faint:#9ca3af;--accent:#00a86b;--accent-soft:#e8f6ef;--accent-strong:#008055;--warn:#d97706;--warn-soft:#fef3c7;--danger:#dc2626;--danger-soft:#fee2e2;--info:#2563eb;--info-soft:#dbeafe;--neutral-soft:#f3f4f6;--radius:8px;--sidebar-bg:#111418}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:var(--accent-strong);text-decoration:none}a:hover{text-decoration:underline}.shell{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--sidebar-bg);color:#d1d5db;flex-shrink:0;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar .marca{padding:18px 20px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;gap:10px;align-items:center}.sidebar .marca .cubo{width:30px;height:30px;border-radius:7px;background:var(--accent);color:#fff;font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar .marca h1{font-size:15px;font-weight:600;color:#fff;line-height:1.2}.sidebar .marca span{font-size:11px;color:#9ca3af;display:block}.sidebar nav{margin-top:10px;flex:1 1}.sidebar nav .grupo{font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:#6b7280;padding:14px 20px 6px}.sidebar nav a{display:block;padding:9px 20px;color:#d1d5db;font-size:13.5px;border-left:2px solid transparent}.sidebar nav a:hover{background:rgba(255,255,255,.05);color:#fff;text-decoration:none}.sidebar nav a.activo{background:rgba(0,168,107,.12);color:#fff;font-weight:500;border-left-color:var(--accent)}.sidebar .pie{padding:14px 20px;font-size:11px;color:#6b7280}.contenido{flex:1 1;min-width:0}.topbar{height:56px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:0 28px;position:-webkit-sticky;position:sticky;top:0;z-index:5}.topbar h2{font-size:16px;font-weight:600}.topbar .usuario{font-size:12.5px;color:var(--text-muted);display:flex;align-items:center;gap:10px}.topbar .usuario .rol-pill{background:var(--accent-soft);color:var(--accent-strong);padding:3px 10px;border-radius:12px;font-weight:500;font-size:12px}.topbar .usuario button{background:#fff;border:1px solid var(--border-strong);border-radius:6px;padding:5px 12px;font-size:12.5px;cursor:pointer;color:var(--text)}.pagina{padding:22px 28px 64px;max-width:1400px}.breadcrumb{font-size:12.5px;margin-bottom:16px}.breadcrumb,.breadcrumb a{color:var(--text-muted)}.breadcrumb a:hover{color:var(--accent-strong)}.breadcrumb .actual{color:var(--text);font-weight:500}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px;margin-bottom:22px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.kpi .etiqueta{font-size:11.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}.kpi .valor{font-size:26px;font-weight:600}.kpi .detalle{font-size:12px;color:var(--text-muted);margin-top:4px}.kpi.acento .valor{color:var(--accent-strong)}.tarjeta-seccion{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px}.tarjeta-seccion h3{font-size:14px;font-weight:600;margin-bottom:12px}.detail-header{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;margin-bottom:18px}.detail-header .titulo{font-size:20px;font-weight:600}.detail-header .sub{color:var(--text-muted);font-size:13px;margin-top:2px}.detail-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:20px;gap:20px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.meta-item .label{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:3px}.meta-item .value{font-size:13.5px;font-weight:500}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;flex-wrap:wrap}.tab{padding:10px 14px;font-size:13px;color:var(--text-muted);cursor:pointer;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500}.tab:hover{color:var(--text)}.tab.active{color:var(--accent-strong);border-bottom-color:var(--accent)}.tab .count{background:var(--neutral-soft);font-size:11px;padding:1px 7px;border-radius:10px;color:var(--text-muted);margin-left:5px}table.datos{width:100%;border-collapse:collapse;font-size:13px}table.datos th{text-align:left;background:var(--surface-alt);padding:9px 14px;font-size:11.5px;text-transform:uppercase;letter-spacing:.3px;color:var(--text-muted);font-weight:500}table.datos td,table.datos th{border-bottom:1px solid var(--border)}table.datos td{padding:11px 14px}table.datos tr:hover td{background:var(--surface-alt)}table.datos tr.total td{font-weight:600;border-top:2px solid var(--border);background:none}table.datos tr.clickable{cursor:pointer}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:500;background:var(--neutral-soft);color:var(--text-muted)}.badge.ok{background:var(--accent-soft);color:var(--accent-strong)}.badge.proceso{background:var(--warn-soft);color:var(--warn)}.badge.error{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.neutro{background:var(--neutral-soft);color:var(--text-muted)}.boton{background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:6px;padding:8px 16px;font-size:13px;font-weight:500;cursor:pointer}.boton:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.boton:disabled{opacity:.6;cursor:default}.boton.secundario{background:#fff;color:var(--text);border:1px solid var(--border-strong);padding:6px 12px;font-size:12.5px}.boton.secundario:hover{background:var(--neutral-soft)}.login-fondo{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--sidebar-bg)}.login-caja{background:#fff;border-radius:12px;padding:36px;width:380px}.login-caja .logo{width:38px;height:38px;border-radius:9px;background:var(--accent);color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}.login-caja h1{font-size:20px;margin-bottom:4px}.login-caja p{font-size:12.5px;color:var(--text-muted);margin-bottom:22px}.login-caja label{display:block;font-size:12.5px;font-weight:500;margin-bottom:6px}.login-caja input{width:100%;padding:10px 12px;border:1px solid var(--border-strong);border-radius:6px;font-size:14px;margin-bottom:14px}.login-caja input:focus{outline:2px solid var(--accent);border-color:transparent}.login-caja .boton{width:100%;padding:11px}.mensaje-error{background:var(--danger-soft);color:var(--danger);border-radius:6px;padding:10px 12px;font-size:13px;margin-bottom:14px}.fila-detalle td{background:var(--surface-alt)}.fila-detalle .campos{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:8px;gap:8px;padding:12px;font-size:12.5px}.fila-detalle .campos div{background:#fff;border:1px solid var(--border);border-radius:6px;padding:7px 10px}.fila-detalle .campos b{color:var(--text-muted);font-weight:500;font-size:10.5px;text-transform:uppercase;letter-spacing:.3px;display:block}.controles{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.search-input{padding:7px 10px;border:1px solid var(--border-strong);border-radius:6px;font-size:13px;width:260px;background:#fff}.search-input:focus{outline:2px solid var(--accent);border-color:transparent}.filter-chip{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border:1px solid var(--border-strong);background:#fff;border-radius:6px;font-size:12px;cursor:pointer;color:var(--text);font-weight:500}.filter-chip:hover{background:var(--neutral-soft)}.filter-chip.active{background:var(--accent-soft);color:var(--accent-strong);border-color:var(--accent)}.grid-2{display:grid;grid-template-columns:2fr 1fr;grid-gap:14px;gap:14px}@media (max-width:1000px){.grid-2{grid-template-columns:1fr}}.controles input[type=month]{padding:7px 10px;border:1px solid var(--border-strong);border-radius:6px;font-size:13px}.vacio{color:var(--text-muted);font-size:13px;padding:18px 0;text-align:center}