:root{color-scheme:light;--page: #f9f9f7;--surface: #fcfcfb;--text: #0b0b0b;--text-2: #52514e;--muted: #898781;--grid: #e1e0d9;--baseline: #c3c2b7;--border: rgba(11, 11, 11, .1);--primary: #2a78d6;--primary-hover: #1c5cab;--wash: rgba(42, 120, 214, .08);--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--delta-up: #006300;--delta-down: #d03b3b;--bad-bg: #fde8e6;--warn-bg: #fff3dd;--warn: #9a5b00;--radius: 10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--page)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--page: #0d0d0d;--surface: #1a1a19;--text: #ffffff;--text-2: #c3c2b7;--muted: #898781;--grid: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--primary: #3987e5;--primary-hover: #5598e7;--wash: rgba(57, 135, 229, .16);--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--delta-up: #0ca30c;--delta-down: #e66767;--bad-bg: #3a1c1a;--warn-bg: #3a2c12;--warn: #fab219}}*{box-sizing:border-box}body{margin:0;background:var(--page)}a{color:var(--primary)}.app{max-width:1240px;margin:0 auto;padding:20px 20px 60px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;flex-wrap:wrap}.topbar h1{font-size:20px;margin:0}.topbar h1 small{color:var(--muted);font-weight:400;margin-left:8px;font-size:14px}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.seg button{border:0;background:transparent;padding:8px 14px;cursor:pointer;font:inherit;color:var(--text-2)}.seg button:hover{background:var(--wash)}.seg button.active{background:var(--primary);color:#fff}.filtros{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.filtros .rango{display:flex;gap:6px;align-items:center}.filtros input[type=date],.filtros select,.filtros input[type=text],.filtros input[type=number]{padding:7px 10px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:14px;background:var(--surface);color:var(--text)}.filtros .spacer{flex:1}.filtros .periodo{color:var(--muted);font-size:13px}button.primary{background:var(--primary);color:#fff;border:0;border-radius:8px;padding:8px 16px;font:inherit;cursor:pointer}button.primary:hover{background:var(--primary-hover)}button.primary:disabled{opacity:.6;cursor:default}button.ghost{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 14px;font:inherit;cursor:pointer;color:var(--text)}button.ghost:hover{background:var(--wash)}button.link{background:none;border:0;padding:0;color:var(--primary);cursor:pointer;font:inherit;text-decoration:underline}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.card h2{font-size:13px;margin:0 0 10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.card h2 small{text-transform:none;letter-spacing:0;font-weight:400;margin-left:8px}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px;margin-bottom:14px}.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-bottom:14px}.cargando{opacity:.5;transition:opacity .2s}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:14px}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;min-height:96px}.tile .label{font-size:13px;color:var(--text-2)}.tile .value{font-size:28px;font-weight:600;margin-top:4px;line-height:1.1}.tile .value.chico{font-size:18px}.tile .delta{font-size:13px;margin-top:4px;display:flex;gap:8px;align-items:baseline}.tile .delta .d{font-weight:600}.tile .delta .d.up{color:var(--delta-up)}.tile .delta .d.down{color:var(--delta-down)}.tile .delta .vs{color:var(--muted)}.tile .sub{font-size:12px;color:var(--muted);margin-top:6px}.chart{position:relative}.chart svg{display:block;width:100%;overflow:visible}.chart text{font-size:11px;fill:var(--muted);font-variant-numeric:tabular-nums}.chart text.valor{fill:var(--text-2);font-size:12px}.chart text.cat{fill:var(--text);font-size:12px}.chart .grid{stroke:var(--grid);stroke-width:1}.chart .baseline,.chart .cross{stroke:var(--baseline);stroke-width:1}.chart .marca:hover,.chart .marca:focus{opacity:.8;outline:none}.tooltip{position:absolute;pointer-events:none;z-index:5;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:12px;box-shadow:0 4px 16px #0000001f;min-width:140px;color:var(--text)}.tooltip .t{color:var(--muted);margin-bottom:4px}.tooltip .fila{display:flex;align-items:center;gap:8px;justify-content:space-between}.tooltip .fila .k{display:inline-block;width:14px;height:2px;border-radius:1px;margin-right:6px;vertical-align:middle}.tooltip .fila .k.rect{height:10px;border-radius:2px}.tooltip .fila .v{font-weight:600;font-variant-numeric:tabular-nums}.tooltip .fila .n{color:var(--text-2)}.leyenda{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2);margin-bottom:8px}.leyenda .k{display:inline-block;width:14px;height:2px;border-radius:1px;margin-right:6px;vertical-align:middle}.leyenda .k.rect{height:10px;border-radius:2px}.vacio{color:var(--muted);padding:28px 0;text-align:center;font-size:14px}.tabla-toggle{font-size:12px;margin-top:6px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--grid);vertical-align:top}th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr.row:hover{background:var(--wash)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.sub{color:var(--muted);font-size:12px}.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;background:var(--wash);color:var(--text-2)}.badge.aviso{background:var(--warn-bg);color:var(--warn)}.paginado{display:flex;gap:8px;align-items:center;margin-top:12px;font-size:13px;color:var(--text-2);flex-wrap:wrap}.paginado input{width:60px;padding:5px 8px;border:1px solid var(--border);border-radius:6px;font:inherit;background:var(--surface);color:var(--text)}.paginado select{padding:5px 8px;border:1px solid var(--border);border-radius:6px;font:inherit;background:var(--surface);color:var(--text)}.error{background:var(--bad-bg);color:var(--delta-down);border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin-bottom:12px}.aviso{background:var(--warn-bg);color:var(--warn);border-radius:8px;padding:8px 12px;font-size:13px;margin-bottom:12px}.drawer-bg{position:fixed;inset:0;background:#0000004d;z-index:20}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(640px,100vw);background:var(--surface);border-left:1px solid var(--border);z-index:21;overflow:auto;padding:18px 20px}.drawer h2{margin:0 0 4px;font-size:18px}.drawer .cerrar{position:absolute;top:12px;right:14px}.sesion{margin-top:16px}.sesion h3{font-size:13px;margin:0 0 6px;color:var(--text-2);display:flex;gap:10px;align-items:baseline}.timeline{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--grid)}.timeline li{position:relative;padding:4px 0 4px 12px;font-size:13px;display:grid;grid-template-columns:70px 110px 1fr;gap:8px}.timeline li:before{content:"";position:absolute;left:-19px;top:10px;width:8px;height:8px;border-radius:50%;background:var(--series-1);border:2px solid var(--surface)}.timeline li.gestion:before{background:var(--series-3)}.timeline li.tool:before{background:var(--series-2)}.timeline li.sesion-evt:before{background:var(--muted)}.timeline .h{color:var(--muted);font-variant-numeric:tabular-nums}.timeline .tipo{color:var(--text-2)}.timeline .det{color:var(--text)}.timeline .det .sub{margin-left:6px}textarea{width:100%;min-height:140px;font:12px ui-monospace,SFMono-Regular,Menlo,monospace;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}@media(max-width:720px){.hide-sm{display:none}.timeline li{grid-template-columns:60px 1fr}.timeline li .tipo{display:none}}
