:root{--ink:#111827;--navy:#0b3b36;--navy-soft:#f3f7f6;--gold:#b08d57;--gold-soft:#f9efe4;--gray:#5b6472;--line:#e2e8e6;--bg:#fafbfa;--danger:#b3423a;--danger-soft:#fdecea;--exito:#1a7f37;--exito-soft:#e6f4ea}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:15px}a{color:var(--navy);text-decoration:none}.app-shell{display:flex;align-items:stretch;min-height:100vh}.sidebar{width:226px;flex-shrink:0;background:var(--navy);color:#fff;display:flex;flex-direction:column;padding:20px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;letter-spacing:.2px;padding:2px 10px 22px}.sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1 1}.sidebar-nav a{display:flex;align-items:center;gap:11px;color:#cfe0dc;padding:9px 12px;border-radius:8px;font-size:14px}.sidebar-nav a:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar-nav a.activo{background:#fff;color:var(--navy);font-weight:600}.sidebar-nav a svg{flex-shrink:0}.sidebar-footer{border-top:1px solid hsla(0,0%,100%,.14);padding-top:10px;margin-top:8px}.sidebar-footer a{display:flex;align-items:center;gap:10px;color:#cfe0dc;font-size:13.5px;padding:8px 12px;border-radius:8px}.sidebar-footer a:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar-overlay{display:none}.app-main{flex:1 1;min-width:0}.mobile-bar{display:none;align-items:center;gap:14px;background:var(--navy);color:#fff;height:52px;padding:0 16px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.mobile-bar button{background:transparent;border:none;color:#fff;padding:4px;display:flex}.mobile-bar .brand{font-weight:700;font-size:14.5px}@media (max-width:880px){.app-shell{flex-direction:column}.sidebar{position:fixed;left:0;top:0;z-index:40;transform:translateX(-100%);transition:transform .2s ease}.sidebar.abierta{transform:translateX(0);box-shadow:4px 0 22px rgba(0,0,0,.3)}.mobile-bar{display:flex}.sidebar-overlay.visible{display:block;position:fixed;inset:0;background:rgba(10,20,18,.4);z-index:30}}.contenido{max-width:1100px;margin:0 auto;padding:28px 24px 60px}h1{font-size:22px;margin:0 0 4px}h2{font-size:16px;margin:0}.sub{color:var(--gray);margin:0 0 24px;font-size:14px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:14px;gap:14px;margin-bottom:22px}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 18px}.card .icono{width:34px;height:34px;border-radius:9px;background:var(--navy-soft);color:var(--navy);display:flex;align-items:center;justify-content:center;margin-bottom:10px}.card.dorada .icono{background:var(--gold-soft);color:var(--gold)}.card.roja .icono{background:var(--danger-soft);color:var(--danger)}.card .etiqueta{color:var(--gray);font-size:12.5px;text-transform:uppercase;letter-spacing:.4px}.card .valor{font-size:26px;font-weight:700;margin-top:6px}.card .detalle{color:var(--gray);font-size:13px;margin-top:4px}.card.dorada{border-left:3px solid var(--gold)}.card.roja{border-left:3px solid var(--danger)}.card a.enlace-tarjeta{color:inherit;display:block}.grid-2{display:grid;grid-template-columns:1.3fr 1fr;grid-gap:16px;gap:16px;margin-bottom:20px;align-items:start}@media (max-width:760px){.grid-2{grid-template-columns:1fr}}.grafica-caja{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px 20px}.grafica-caja h2{margin-bottom:14px}.grafica-barras{width:100%;height:150px;display:block}.barra-lista{display:flex;flex-direction:column;gap:11px}.barra-lista-fila{display:grid;grid-template-columns:128px 1fr 30px;align-items:center;grid-gap:10px;gap:10px;font-size:13px}.barra-lista-etiqueta{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.barra-lista-pista{background:var(--navy-soft);border-radius:6px;height:10px;overflow:hidden}.barra-lista-relleno{height:100%;border-radius:6px}.barra-lista-valor{text-align:right;color:var(--gray);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lista-atencion{display:flex;flex-direction:column}.lista-atencion-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.lista-atencion-item:first-child{border-top:none;padding-top:2px}.lista-atencion-info{min-width:0}.lista-atencion-nombre{font-weight:600;font-size:14px}.lista-atencion-mensaje{color:var(--gray);font-size:13px;margin-top:2px;max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lista-atencion-tiempo{color:var(--gray);font-size:12px;white-space:nowrap;flex-shrink:0}table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}th{text-align:left;font-size:12.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--gray);background:var(--navy-soft)}td,th{padding:10px 12px}td{border-top:1px solid var(--line);vertical-align:middle}tr:hover td{background:#fcfdfc}input[type=number],input[type=password],input[type=text],select,textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:7px;font:inherit;background:#fff}textarea{resize:vertical;min-height:60px}button{font:inherit;border:none;border-radius:7px;padding:8px 14px;cursor:pointer;background:var(--navy);color:#fff;font-size:14px}button:hover{opacity:.92}button.secundario{background:var(--navy-soft);color:var(--navy);border:1px solid var(--line)}button.peligro{background:transparent;color:var(--danger);border:1px solid var(--line)}button:disabled{opacity:.5;cursor:default}.fila-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:20px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px}.fila-form .campo{display:flex;flex-direction:column;gap:4px;min-width:140px;flex:1 1}.fila-form label{font-size:12.5px;color:var(--gray)}.pill{display:inline-block;padding:3px 10px;border-radius:99px;font-size:12.5px;background:var(--navy-soft);color:var(--navy)}.pill.alerta{background:var(--gold-soft);color:var(--gold)}.pill.exito{background:var(--exito-soft);color:var(--exito)}.pill.roja{background:var(--danger-soft);color:var(--danger)}.campo{display:flex;flex-direction:column;gap:4px}.campo small{color:var(--gray);font-size:12.5px}.aviso-alerta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--danger-soft);border:1px solid var(--danger);color:var(--danger);padding:12px 16px;border-radius:10px;margin-bottom:20px;font-size:14px}.aviso-alerta a{color:var(--danger);text-decoration:underline;font-weight:600}.estado-conexion{display:flex;align-items:center;gap:10px;margin-bottom:10px}.estado-punto{width:10px;height:10px;border-radius:50%;display:inline-block}.estado-punto.on{background:var(--exito)}.estado-punto.off{background:var(--gray)}.login-caja{max-width:360px;margin:12vh auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:28px}.login-caja h1{margin-bottom:16px}.login-caja form{display:flex;flex-direction:column;gap:12px}.error{color:var(--danger);font-size:13.5px}.acciones{display:flex;gap:6px}.mono{font-family:ui-monospace,monospace}.mono,.volver{font-size:13px;color:var(--gray)}.volver{display:inline-flex;align-items:center;gap:6px;margin-bottom:14px}.volver:hover{color:var(--navy)}.ficha-cabecera{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:20px}.ficha-cabecera h1{margin:0}.ficha-cabecera .mono{margin-top:2px}.ficha-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px;align-items:start;margin-bottom:20px}@media (max-width:900px){.ficha-grid{grid-template-columns:1fr}}.chat{display:flex;flex-direction:column;gap:8px;max-height:520px;overflow-y:auto;padding:4px 2px}.burbuja{max-width:78%;padding:9px 13px;border-radius:14px;font-size:14px;line-height:1.42}.burbuja.entrante{align-self:flex-start;background:var(--navy-soft);color:var(--ink);border-bottom-left-radius:4px}.burbuja.saliente{align-self:flex-end;background:var(--navy);color:#fff;border-bottom-right-radius:4px}.burbuja.atencion{box-shadow:0 0 0 2px var(--danger)}.burbuja .hora{display:block;font-size:10.5px;opacity:.7;margin-top:4px}