:root{--color-primario: #2563eb;--color-primario-contraste: #ffffff;--color-secundario: #0f172a;--color-secundario-contraste: #ffffff;--gris-0: #ffffff;--gris-50: #f8fafc;--gris-100: #f1f5f9;--gris-200: #e2e8f0;--gris-300: #cbd5e1;--gris-500: #64748b;--gris-700: #334155;--gris-900: #0f172a;--exito: #16a34a;--error: #dc2626;--aviso: #d97706;--radio: 10px;--sombra: 0 1px 3px rgba(15, 23, 42, .1), 0 1px 2px rgba(15, 23, 42, .06)}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--gris-900);background:var(--gris-50);-webkit-font-smoothing:antialiased}a{color:var(--color-primario)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:var(--radio);border:1px solid transparent;font-size:15px;font-weight:600;cursor:pointer;text-decoration:none;background:var(--color-primario);color:var(--color-primario-contraste);transition:filter .12s ease}.btn:hover{filter:brightness(1.06)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.sec{background:var(--gris-0);color:var(--gris-900);border-color:var(--gris-300)}.btn.ghost{background:transparent;color:var(--gris-700)}.btn.danger{background:var(--error);color:#fff}.btn.big{padding:20px 28px;font-size:20px;border-radius:16px;width:100%}.card{background:var(--gris-0);border:1px solid var(--gris-200);border-radius:var(--radio);box-shadow:var(--sombra);padding:20px}.input,select.input,textarea.input{width:100%;padding:10px 12px;border:1px solid var(--gris-300);border-radius:8px;font-size:15px;font-family:inherit;background:var(--gris-0)}.input:focus{outline:2px solid var(--color-primario);outline-offset:0}label{display:block;font-size:13px;font-weight:600;color:var(--gris-700);margin-bottom:6px}.field{margin-bottom:14px}.alert{padding:10px 14px;border-radius:8px;font-size:14px;margin:10px 0}.alert.error{background:#fef2f2;color:var(--error);border:1px solid #fecaca}.alert.ok{background:#f0fdf4;color:var(--exito);border:1px solid #bbf7d0}.alert.warn{background:#fffbeb;color:var(--aviso);border:1px solid #fde68a}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--gris-200)}th{font-size:12px;text-transform:uppercase;color:var(--gris-500);letter-spacing:.04em}.tabla-scroll{overflow-x:auto}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.gris{background:var(--gris-100);color:var(--gris-700)}.badge.ok{background:#dcfce7;color:#166534}.badge.warn{background:#fef3c7;color:#92400e}.badge.err{background:#fee2e2;color:#991b1b}.topbar{background:var(--color-secundario);color:var(--color-secundario-contraste);padding:12px 20px;display:flex;align-items:center;gap:16px}.topbar .marca{font-weight:700;font-size:16px}.topbar .logo{height:28px;width:auto}.topbar .sp{flex:1}.topbar a{color:var(--color-secundario-contraste);opacity:.85;text-decoration:none;font-size:14px}.topbar a.router-link-active{opacity:1;font-weight:700}.layout{display:flex;min-height:100vh;flex-direction:column}.contenido{max-width:1040px;width:100%;margin:0 auto;padding:22px 18px 60px;flex:1}.nav-sec{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}.nav-sec a{padding:7px 12px;border-radius:8px;font-size:14px;text-decoration:none;color:var(--gris-700);background:var(--gris-100)}.nav-sec a.router-link-active{background:var(--color-primario);color:var(--color-primario-contraste)}.centro-pantalla{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.caja-login{width:100%;max-width:400px}h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:22px 0 10px}.muted{color:var(--gris-500);font-size:14px}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.stat{font-size:26px;font-weight:700}.banner-impersonando{background:var(--aviso);color:#fff;text-align:center;padding:6px;font-size:13px;font-weight:600}.reloj{font-size:40px;font-weight:700;text-align:center;margin:8px 0;font-variant-numeric:tabular-nums}
