:root{
  --celeste:#03a2c1; --celeste-txt:#026f86; --celeste-bg:#e6f6fa; --sobre:#04222a; --tinta:#0b2a33;
  --fondo:#f3f6f8; --panel:#ffffff; --borde:#d9e2e7; --texto:#1c2b33; --suave:#5a6b75;
  --G:#17703e; --G-bg:#dff3e6; --A:#7a4f00; --A-bg:#fff0cc; --R:#a8241c; --R-bg:#fde3e1; --NA:#4b5a64; --NA-bg:#e9eef1;
  --radio:12px;
}
@media (prefers-color-scheme:dark){
  :root{--celeste-txt:#5fd0e6;--celeste-bg:#10323b;--tinta:#e8f4f7;--fondo:#0e1519;--panel:#162127;--borde:#2a3a42;--texto:#e3edf1;--suave:#9db0b9;
  --G:#7be0a3;--G-bg:#123a24;--A:#ffd37a;--A-bg:#3d2f08;--R:#ff9d96;--R-bg:#40161a;--NA:#b4c2ca;--NA-bg:#22323a;}
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0}
body{font-family:Montserrat,"Segoe UI",Arial,sans-serif;background:var(--fondo);color:var(--texto);font-size:15px;line-height:1.5}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{opacity:.5;cursor:not-allowed}
:focus-visible{outline:3px solid var(--celeste);outline-offset:2px}
h1{font-size:22px;margin:0 0 4px;letter-spacing:-.01em} h2{font-size:15px;margin:0 0 10px} h3{font-size:14px;margin:14px 0 6px}
.lead{color:var(--suave);margin:0 0 16px} .hint{font-size:12px;color:var(--suave)} .ok{color:var(--G);font-weight:600} .error{color:var(--R);font-weight:600}
.aviso{background:var(--A-bg);color:var(--A);border-radius:8px;padding:6px 10px;font-size:13px}
.marca{font-weight:800;font-size:20px;letter-spacing:-.02em;padding:4px 8px 2px} .marca span{color:var(--celeste-txt)} .marca.grande{font-size:32px;text-align:center;padding:0}
.pie,footer.pie{margin-top:30px;font-size:12px;color:var(--suave);text-align:center}

.centro{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:14px}
.tarjeta{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);padding:24px;width:100%;max-width:420px}
.centro.ancha .tarjeta{max-width:640px}
.tarjeta.vacio{max-width:none}
.acceso .ancho,.ancho{width:100%}
.emps{display:grid;gap:8px;margin:14px 0}
.emp{display:flex;flex-direction:column;text-align:left;background:var(--panel);border:1px solid var(--borde);border-radius:10px;padding:12px 14px}
.emp:hover{border-color:var(--celeste);background:var(--celeste-bg)}
.acciones{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.row2{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
label{display:block;font-size:13px;font-weight:600;margin:10px 0 3px}
input,select{width:100%;padding:8px 10px;border:1px solid var(--borde);border-radius:8px;background:var(--panel)}
input[type=checkbox]{width:auto}
.oculto{position:absolute;opacity:0;width:1px;height:1px}
.btn{background:var(--celeste);color:var(--sobre);border:0;border-radius:10px;padding:9px 16px;font-weight:700}
.btn.sec{background:transparent;border:1px solid var(--borde);color:var(--texto);font-weight:600}
.btn.peligro{color:var(--R)}
.btn:hover:not(:disabled){filter:brightness(.95)}

.app{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}
body.en-app{padding-right:360px}
aside.nav{background:var(--panel);border-right:1px solid var(--borde);padding:16px 12px;position:sticky;top:0;height:100vh;overflow:auto}
.empresa{font-size:12px;color:var(--suave);padding:0 8px 8px}
.nav .cargar{margin:4px 0 8px}
.grupo{margin:8px 0} .grupo>.gt{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--suave);padding:6px 8px 2px}
.nav .grupo>button,.nav .sub button{display:block;width:100%;text-align:left;background:none;border:0;border-radius:8px;padding:7px 10px;color:var(--texto)}
.nav .sub button{padding-left:20px;font-size:14px}
.nav .grupo>button:hover,.nav .sub button:hover{background:var(--celeste-bg)}
.nav button[aria-current=page]{background:var(--celeste-bg);color:var(--celeste-txt);font-weight:700;box-shadow:inset 3px 0 0 var(--celeste)}
main{padding:20px 24px 60px;min-width:0}
.barra{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--borde)}
.barra .mes{display:flex;align-items:center;gap:8px}.barra .mes label{margin:0}.barra select{width:auto}
[data-help]{cursor:pointer}
body.guia main [data-help]:hover,body.guia aside [data-help]:hover{outline:2px dashed var(--celeste);outline-offset:2px}
.ask{animation:ask 1.2s ease-out 1}
@keyframes ask{0%{box-shadow:0 0 0 0 var(--celeste)}100%{box-shadow:0 0 0 14px transparent}}
.tour-hl{scroll-margin:24px}
#foco{display:none;position:fixed;z-index:12;pointer-events:none;border-radius:12px;outline:3px solid var(--celeste);box-shadow:0 0 0 150vmax rgba(0,0,0,.5)}
#guia-bot{display:none;position:fixed;left:0;top:0;width:96px;height:auto;z-index:30;pointer-events:none;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35));will-change:transform}
body.en-tour #foco,body.en-tour #guia-bot{display:block}
@media (max-width:760px){#guia-bot{width:64px}}
.card{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);padding:16px;margin-bottom:16px}
.grid{display:grid;gap:12px;margin-bottom:0}.g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.g5{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.grid.g2 .card{margin-bottom:0}.grid.g3 .card{margin-bottom:0}.grid.g2{margin-bottom:16px}.grid.g3{margin-bottom:16px}
.banner{display:flex;flex-wrap:wrap;gap:24px;align-items:center;background:var(--tinta);color:var(--panel);border-radius:var(--radio);padding:16px 18px;margin-bottom:16px}
@media (prefers-color-scheme:dark){.banner{background:#0b2a33;color:#e8f4f7}}
.banner .fase{font-size:22px;font-weight:800}.banner small{opacity:.85}
.tile{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);padding:12px 14px}
.tile .k{font-size:12px;color:var(--suave)}.tile .v{font-size:22px;font-weight:700}
.pill{display:inline-block;border-radius:99px;padding:1px 10px;font-size:12px;font-weight:700;white-space:nowrap}
.pill.G{background:var(--G-bg);color:var(--G)}.pill.A{background:var(--A-bg);color:var(--A)}.pill.R{background:var(--R-bg);color:var(--R)}.pill.NA{background:var(--NA-bg);color:var(--NA)}
.traj{display:flex;align-items:flex-end;gap:6px;height:90px}
.traj .b{flex:1;border-radius:6px 6px 0 0;min-width:10px}
.traj .b.p{opacity:.45}.traj .b.sel{outline:3px solid var(--tinta);outline-offset:1px}
.meses{display:flex;gap:6px;font-size:10px;color:var(--suave)}.meses span{flex:1;text-align:center}
.leyenda{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;margin-top:8px}.leyenda i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px}
.dept{border:1px solid var(--borde);border-radius:10px;padding:10px 12px;background:var(--panel);text-align:left;width:100%}
.dept:hover:not(:disabled){border-color:var(--celeste)}.dept b{display:block}
ul.lista{margin:0;padding-left:18px}ul.lista li{margin:4px 0}ul.chk{list-style:none;padding:0}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--borde);vertical-align:top}
th{font-size:12px;color:var(--suave);font-weight:600}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
tr.sel td{background:var(--celeste-bg)} tr.tot td{font-weight:700} tr.ini td{border-top:2px solid var(--borde)} td.sangra{padding-left:26px;color:var(--suave)}
tbody tr[data-help]:hover td{background:var(--celeste-bg)}
.scroll{overflow-x:auto}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.chip{border:1px solid var(--borde);background:var(--panel);border-radius:99px;padding:4px 12px;font-size:13px}
.chip[aria-pressed=true],.chip:hover{border-color:var(--celeste);background:var(--celeste-bg);color:var(--celeste-txt)}
.filtros{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.filtros select,.filtros input{width:auto;min-width:200px}
.tag{font-size:11px;border:1px solid var(--borde);border-radius:6px;padding:0 6px;color:var(--suave)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;background:var(--tinta);color:var(--panel);padding:8px 16px;border-radius:99px;font-size:13px;z-index:40}
@media (prefers-color-scheme:dark){.toast{background:#2c4a55;color:#e8f4f7}}

dialog{border:1px solid var(--borde);border-radius:14px;background:var(--panel);color:var(--texto);padding:0;max-width:min(520px,94vw);width:100%}
dialog.ancho{max-width:min(760px,94vw)}
dialog::backdrop{background:rgba(5,20,26,.55)}
dialog form,.dlgc,.dlg form{padding:20px}
.zona{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;border:2px dashed var(--borde);border-radius:12px;padding:28px 16px;cursor:pointer;margin:0}
.zona:hover,.zona.sobre,.zona:focus-within{border-color:var(--celeste);background:var(--celeste-bg)}

figure.grafico{margin:0}
figure.grafico figcaption{font-weight:700;font-size:14px;margin-bottom:6px}
figure.grafico svg{width:100%;height:auto;display:block}
.g-rej{stroke:var(--borde);stroke-width:1}.g-cero{stroke:var(--suave);stroke-width:1}
.g-t1{font-size:calc(var(--fs,13px)*1.5);font-weight:700;fill:var(--texto)}.g-t2{font-size:var(--fs,13px);fill:var(--texto)}.g-t3{font-size:calc(var(--fs,13px) - 1px);fill:var(--suave)}.card figure.grafico{max-width:600px;margin:0 auto}
.g-datos{margin-top:6px;font-size:13px}.g-datos summary{cursor:pointer;color:var(--celeste-txt)}

#bot{position:fixed;top:0;right:0;bottom:0;width:360px;display:flex;flex-direction:column;background:var(--panel);border-left:1px solid var(--borde);z-index:15}
#bot header{display:flex;gap:10px;align-items:center;padding:12px 14px;background:var(--celeste);color:var(--sobre)}
#bot header img{width:44px;height:44px;border-radius:50%;background:#fff;object-fit:cover}
#bot header b{display:block;line-height:1.1}#bot header small{font-size:12px}
.iafila{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--borde);font-size:12px}
.chipia{font-size:12px;font-weight:700;border:1px solid var(--celeste-txt);background:transparent;color:var(--celeste-txt);border-radius:99px;padding:3px 10px;white-space:nowrap}
.chipia.on{background:var(--celeste);border-color:var(--celeste);color:var(--sobre)}
#bot .tools{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--borde);font-size:13px}
#bot .tools label{display:flex;gap:6px;align-items:center;margin:0;font-weight:600}
#msgs{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:10px;position:relative}
#msgs .relleno{flex:0 0 auto;height:0}
.m{max-width:100%;padding:10px 12px;border-radius:12px;font-size:14px}
.m.bot{background:var(--celeste-bg);border-top-left-radius:3px}
.m.yo{background:var(--tinta);color:var(--panel);align-self:flex-end;border-top-right-radius:3px;max-width:90%}
@media (prefers-color-scheme:dark){.m.yo{background:#2c4a55;color:#e8f4f7}}
.m h3{margin:0 0 6px;font-size:14px}
.m .parte{margin:0 0 8px}.m .rot{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--celeste-txt);font-weight:700}
.m .md p{margin:2px 0}.m .md ul{margin:4px 0;padding-left:18px}
.m .aviso{margin:8px 0 0}.m .fuente{display:block;font-size:11px;color:var(--suave);margin-top:6px}
.m .archivos{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.m a.descarga{display:block;border:1px solid var(--celeste);border-radius:10px;background:var(--panel);padding:8px 12px;color:var(--texto);text-decoration:none}
.m a.descarga:hover{background:var(--celeste-bg)}
.m a.descarga strong{display:block;color:var(--celeste-txt)}.m a.descarga small{color:var(--suave);font-size:12px}
.m .rel button.accion{background:var(--celeste);color:var(--sobre);border-color:var(--celeste);font-weight:700}
a.btn{display:inline-block;text-decoration:none;text-align:center}
.m .rel{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.m .rel button{font-size:12px;border:1px solid var(--celeste);background:var(--panel);color:var(--celeste-txt);border-radius:99px;padding:2px 10px;text-align:left}
.m figure.grafico{background:var(--panel);border-radius:10px;padding:8px;margin:8px 0}
#tourbar{display:none;gap:6px;align-items:center;padding:8px 12px;border-top:1px solid var(--borde);background:var(--celeste-bg);font-size:13px}
#tourbar.on{display:flex}#tourbar span{flex:1}#tourbar .btn{padding:5px 12px;font-size:13px}
#qf{display:flex;gap:6px;padding:10px 12px 12px;border-top:1px solid var(--borde)}#qf input{flex:1}
#fab,#bcerrar,.navm{display:none}
#bcerrar{margin-left:auto;background:transparent;border:0;color:var(--sobre);font-size:20px;line-height:1;padding:6px 8px}
@media (max-width:1100px){
  body.en-app{padding-right:0}
  #bot{top:auto;right:0;height:72vh;width:min(440px,100%);border:1px solid var(--borde);border-radius:14px 14px 0 0;transform:translateY(105%);transition:transform .2s}
  #bot.open{transform:none}
  #bcerrar{display:block}
  
  #fab{display:block;position:fixed;right:14px;bottom:14px;z-index:14;width:64px;height:64px;padding:0;background:var(--celeste);border:3px solid var(--panel);border-radius:50%;box-shadow:0 4px 14px rgba(0,0,0,.3);overflow:visible}
  #fab[hidden]{display:none}
  #fab img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;background:#fff}
  #fab.aviso-nuevo::after{content:"1";position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;border-radius:99px;background:var(--R);color:#fff;font-size:12px;font-weight:700;line-height:20px;text-align:center}
  #fab.aviso-nuevo{animation:ask 1.6s ease-out infinite}
  body.en-tour #bot{height:42vh}
}
@media (max-width:760px){
  .app{grid-template-columns:minmax(0,1fr)}
  aside.nav{position:sticky;top:0;z-index:13;height:auto;overflow:visible;padding:6px 8px;border-right:0;border-bottom:1px solid var(--borde)}
  .navd{display:none}
  .navm{display:block}
  .navm-b{display:flex;align-items:center;min-height:42px}
  .navm-t{border:0;background:var(--celeste);color:var(--sobre);border-radius:99px;padding:9px 20px;font-weight:700;font-size:15px}
  .navm-p{position:absolute;left:0;right:0;top:100%;display:grid;grid-template-columns:minmax(0,42%) minmax(0,1fr);gap:10px;padding:10px;background:var(--panel);border-bottom:1px solid var(--borde);box-shadow:0 14px 22px rgba(0,0,0,.2);max-height:calc(100vh - 70px);overflow:auto}
  .navm-l{display:grid;gap:6px;align-content:start}
  .navm-g{border:1px solid var(--borde);background:var(--panel);border-radius:99px;padding:9px 12px;font-size:14px;font-weight:600;color:var(--texto);text-align:left;min-width:0}
  .navm-g[aria-expanded=true],.navm-g[aria-current=page]{background:var(--celeste-bg);border-color:var(--celeste);color:var(--celeste-txt)}
  .navm-o{display:grid;gap:2px;align-content:start;padding:6px;border:1px solid var(--celeste);border-radius:14px;background:var(--celeste-bg)}
  .navm-o button{text-align:left;background:none;border:0;border-radius:8px;padding:10px 12px;font-size:15px;color:var(--texto)}
  .navm-o button[aria-current=page]{background:var(--panel);color:var(--celeste-txt);font-weight:700}  main{padding:14px 12px 90px}
  .g2,.g3{grid-template-columns:minmax(0,1fr)}
  .barra .mes{width:100%}.barra select{width:100%}
  .filtros select,.filtros input{min-width:0;width:100%}
}
@media (prefers-reduced-motion:reduce){.ask{animation:none}#bot{transition:none}}


.enc{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start;margin-bottom:6px}.enc .acciones{margin-top:4px}
.g6{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
dialog{max-height:92vh;overflow:auto}
.lineas{display:grid;gap:8px;margin:6px 0}
.lin{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;padding:8px;border:1px solid var(--borde);border-radius:10px}
.lin>select{flex:1 1 150px;width:auto}.lin>input{flex:2 1 150px;width:auto}
.mini{font-size:11px;font-weight:600;margin:0;flex:0 0 86px}.mini input{width:100%;margin-top:2px}
.x{padding:4px 10px;flex:0 0 auto}
tr.clic{cursor:pointer}tr.clic:hover td{background:var(--celeste-bg)}
.tachado{text-decoration:line-through;color:var(--suave)}
tr.sub td{font-weight:600;background:var(--celeste-bg)}
label.chk{display:flex;gap:8px;align-items:center;font-weight:600}
.totales{margin:8px 0;font-size:14px}
.filtros h2{margin:0}
.full{grid-column:1/-1}