@font-face{font-family:Inter;font-weight:400;src:url(fonts/inter-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:500;src:url(fonts/inter-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:600;src:url(fonts/inter-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:700;src:url(fonts/inter-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Barlow Condensed";font-weight:600;src:url(fonts/barlow-condensed-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Barlow Condensed";font-weight:700;src:url(fonts/barlow-condensed-latin-700-normal.woff2) format("woff2")}

:root{
  --navy:#1F3864;--navy-dark:#16294a;--celeste:#D9E1F2;
  --verde:#1E7F4F;--verde-claro:#D6F0E2;--rojo:#B42318;--rojo-claro:#FBD5D1;
  --gris:#6B7280;--gris-texto:#5B6270;--borde:#E5E7EB;--borde-input:#C9CED6;--fondo:#F3F4F6;--texto:#141413;
  --amarillo:#FEF3C7;--amarillo-texto:#B45309;
  --sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);
  --cond:"Barlow Condensed",Inter,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%;background:var(--fondo);color:var(--texto);font-family:Inter,system-ui,sans-serif;-webkit-tap-highlight-color:transparent}
#app{min-height:100%;display:flex;flex-direction:column}
h1,h2,h3{font-family:var(--cond);letter-spacing:.01em;margin:0}
h1{font-size:26px;font-weight:700}
input,button,select,textarea{font-family:inherit;font-size:15px}
button{cursor:pointer}
a{color:var(--navy)}
[hidden]{display:none!important}

/* Header */
.hdr{background:var(--navy);color:#fff;padding:calc(10px + var(--sat)) 16px 10px;position:sticky;top:0;z-index:5}
.hdr .in{max-width:1040px;margin:0 auto;display:flex;align-items:center;gap:12px;min-height:48px}
.hdr .logo{height:34px;width:auto;display:block}
.hdr .tit{display:flex;flex-direction:column;gap:1px;flex:1 1 0;min-width:0}
.hdr .tit h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:24px}
.hdr .sub{font-size:12px;color:var(--celeste)}
.hdr .who{display:flex;align-items:center;gap:4px;margin-left:auto}
.hdr .who .nm{font-size:14px;font-weight:600;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hdr .who .rl{font-size:11px;color:var(--celeste)}
.hdr .who .txt{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;margin-right:4px}
.ibtn{width:44px;height:44px;border:0;background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;border-radius:12px;flex:0 0 auto;padding:0}
.ibtn:hover{background:rgba(255,255,255,.12)}
.ibtn.dark{color:var(--navy)}.ibtn.dark:hover{background:var(--celeste)}
@media (max-width:560px){.hdr .who .txt{display:none}.hdr .tit h1{font-size:21px}}

/* Layout */
.pg{padding:18px 16px calc(28px + var(--sab));display:flex;flex-direction:column;gap:14px;flex:1 1 auto;width:100%;max-width:1040px;margin:0 auto}
.card{background:#fff;border:1px solid var(--borde);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.sec{font-size:12px;font-weight:600;color:var(--gris-texto);text-transform:uppercase;letter-spacing:.04em;padding:0 2px}
.muted{font-size:12px;color:var(--gris-texto)}
.bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.bar h2{font-size:24px;font-weight:700;color:var(--navy)}
.hr{height:1px;background:var(--borde)}

/* Forms */
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:13px;font-weight:600}
.inp{height:46px;border:1px solid var(--borde-input);border-radius:10px;padding:0 14px;font-size:16px;background:#fff;width:100%}
.inp:focus{outline:2px solid var(--navy);outline-offset:-1px}
.inp[disabled]{background:var(--fondo);color:var(--gris-texto)}
.hint{font-size:12px;color:var(--gris-texto)}
.hint.err{color:var(--rojo)}

/* Buttons */
.btn{height:48px;border-radius:12px;border:0;background:var(--navy);color:#fff;font-size:15px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 18px;text-decoration:none;white-space:nowrap}
.btn:hover{background:var(--navy-dark)}
.btn.full{width:100%}
.btn.verde{background:var(--verde)}.btn.rojo{background:var(--rojo)}
.btn.outline{background:#fff;border:1px solid var(--borde-input);color:var(--texto)}.btn.outline:hover{background:var(--fondo)}
.btn.outline.rojo{border-color:var(--rojo);color:var(--rojo)}
.btn.sm{height:38px;font-size:13px;padding:0 12px;border-radius:10px}
.btn:disabled{opacity:.5;cursor:default}
.btn.link{background:transparent;color:var(--navy);height:auto;padding:0;font-weight:600}

/* Módulos (panel) */
.mods{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.mod{background:#fff;border:1px solid var(--borde);border-radius:16px;padding:18px;display:flex;gap:14px;align-items:flex-start;text-decoration:none;color:var(--texto);text-align:left;cursor:pointer;transition:box-shadow .15s,transform .15s;min-height:112px}
.mod:hover{box-shadow:0 6px 20px rgba(31,56,100,.12);transform:translateY(-1px)}
.mod .ic{width:52px;height:52px;border-radius:14px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.mod .ic.verde{background:var(--verde)}.mod .ic.gris{background:var(--gris)}
.mod .tx{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 auto}
.mod .nm{font-family:var(--cond);font-size:23px;font-weight:700;line-height:1.05;color:var(--navy)}
.mod .ds{font-size:13px;color:var(--gris-texto);line-height:1.35}
.mod.off{opacity:.65;cursor:default}.mod.off:hover{box-shadow:none;transform:none}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;background:var(--celeste);color:var(--navy);letter-spacing:.02em;white-space:nowrap}
.tag.amar{background:var(--amarillo);color:var(--amarillo-texto)}
.tag.verde{background:var(--verde-claro);color:var(--verde)}
.tag.rojo{background:var(--rojo-claro);color:var(--rojo)}
.tag.gris{background:var(--fondo);color:var(--gris-texto)}
.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}

/* Usuarios */
.ulist{display:flex;flex-direction:column;gap:10px}
.urow{background:#fff;border:1px solid var(--borde);border-radius:14px;padding:14px 16px;display:grid;grid-template-columns:1fr auto;gap:10px 14px;align-items:center}
.urow.off{opacity:.6}
.urow .nm{font-family:var(--cond);font-size:21px;font-weight:600;line-height:1.1}
.urow .us{font-size:13px;color:var(--gris-texto)}
.urow .acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:640px){.urow{grid-template-columns:1fr}.urow .acts{justify-content:flex-start}}
.plist{display:flex;flex-direction:column;border:1px solid var(--borde);border-radius:12px;overflow:hidden}
.prow{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--borde);background:#fff}
.prow:last-child{border-bottom:0}
.prow .pn{font-weight:600;font-size:14px}.prow .pd{font-size:12px;color:var(--gris-texto)}
.seg{display:inline-flex;border:1px solid var(--borde-input);border-radius:10px;overflow:hidden}
.seg label{padding:0 10px;height:36px;display:flex;align-items:center;font-size:13px;font-weight:500;cursor:pointer;color:var(--gris-texto);background:#fff;border-left:1px solid var(--borde-input);user-select:none}
.seg label:first-child{border-left:0}
.seg input{position:absolute;opacity:0;width:0;height:0}
.seg label.on{background:var(--navy);color:#fff}
.seg label.on.c{background:var(--gris-texto)}
.seg label.on.g{background:var(--verde)}
.seg.dis label{opacity:.5;cursor:default}
@media (max-width:560px){.prow{grid-template-columns:1fr;gap:6px}.seg{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.seg label{justify-content:center;white-space:nowrap;padding:0 4px}}
.chk{display:flex;align-items:center;gap:12px;min-height:44px;font-size:15px}
.chk input{width:22px;height:22px;margin:0;accent-color:var(--navy)}

/* Modal */
.ovl{position:fixed;inset:0;background:rgba(20,20,19,.55);display:flex;align-items:center;justify-content:center;padding:20px;z-index:20;overflow-y:auto}
.dlg{background:#fff;border-radius:18px;padding:22px 20px;display:flex;flex-direction:column;gap:14px;width:100%;max-width:460px;max-height:calc(100vh - 40px);overflow-y:auto}
.dlg h2{font-size:25px;font-weight:700;color:var(--navy)}
.dlg p{margin:0;font-size:14px;line-height:1.45}
.dlg .note{background:var(--fondo);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--gris-texto);line-height:1.4}
.dlg .acts{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.dlg .acts .btn{min-width:120px}

/* Toast */
.toast{position:fixed;left:16px;right:16px;bottom:calc(24px + var(--sab));margin:0 auto;max-width:520px;background:var(--texto);color:#fff;padding:12px 16px;border-radius:12px;font-size:14px;z-index:30;text-align:center}
.toast.err{background:var(--rojo)}

/* Login */
.login{min-height:100%;background:var(--navy);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;gap:32px;flex:1 1 auto}
.login img{width:300px;max-width:100%;height:auto}
.login h1{font-size:22px;font-weight:600;color:var(--celeste);text-align:center;letter-spacing:.03em;text-transform:uppercase}
.login form{display:flex;flex-direction:column;gap:14px;background:#fff;border-radius:16px;padding:24px 20px;width:100%;max-width:400px}
.login .foot{font-size:12px;color:var(--celeste);text-align:center}
.spinner{width:28px;height:28px;border:3px solid var(--celeste);border-top-color:var(--navy);border-radius:50%;animation:sp 1s linear infinite;margin:40px auto}
@keyframes sp{to{transform:rotate(360deg)}}
.empty{text-align:center;color:var(--gris-texto);padding:40px 16px;font-size:14px}
