/* Agregados del panel sobre base.css (misma paleta y tipografía de la presentación). */
:root{--top:64px;--warn:#B45309;--warnbg:#FFF7ED;--errbg:#FEF2F2}
body{overflow:hidden}
.g{font-family:"Space Grotesk",Inter,system-ui,sans-serif}

/* ---------- Barra superior ---------- */
.top{position:fixed;left:0;right:0;top:0;z-index:6;background:var(--bg);border-bottom:1px solid var(--line);
  padding:10px clamp(16px,3vw,40px) 8px;padding-top:calc(10px + env(safe-area-inset-top,0px))}
.top-row{display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap}
.brand{font-family:"Space Grotesk",Inter,sans-serif;font-weight:600;font-size:18px;letter-spacing:-.02em;white-space:nowrap}
.brand small{display:block;font-family:Inter,system-ui,sans-serif;font-weight:400;font-size:12px;color:var(--muted);letter-spacing:0}
.ctrl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
.segm{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:3px}
.segm button{border:0;background:none;color:var(--muted);font:500 12.5px Inter,system-ui,sans-serif;padding:7px 12px;border-radius:999px;cursor:pointer;white-space:nowrap}
.segm button.on{background:var(--ink);color:var(--surface)}
.ctrl input,.ctrl select{font:500 13px Inter,system-ui,sans-serif;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:7px 9px;min-height:36px}
.btn{font:500 13px Inter,system-ui,sans-serif;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 12px;cursor:pointer;min-height:36px;white-space:nowrap}
.btn:hover{border-color:var(--sale)}
.btn.pri{background:var(--sale);border-color:var(--sale);color:#fff}
.btn.pri:hover{filter:brightness(1.08)}
.btn.warn{color:var(--neg)}
.btn:disabled{opacity:.45;cursor:default}
.btn:focus-visible,.segm button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--sale);outline-offset:2px}
.status{display:flex;gap:6px 16px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin-top:6px}
.status b{color:var(--ink);font-weight:600}
.dot-live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--good);margin-right:6px;vertical-align:0}
.dot-live.off{background:var(--neg)} .dot-live.old{background:var(--warn)}
.avisos{display:grid;gap:6px;margin-top:8px}
.aviso{font-size:13px;line-height:1.45;padding:8px 12px;border-radius:10px;background:var(--warnbg);color:#7C2D12;border:1px solid #FED7AA;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.aviso.err{background:var(--errbg);border-color:#FECACA;color:#991B1B}
.aviso.info{background:var(--soft);border-color:#DBE4F7;color:var(--ink)}
.aviso .btn{min-height:30px;padding:5px 10px}

.deck{position:fixed;left:0;right:0;top:var(--top);bottom:0;height:auto}
.slide{padding-top:clamp(20px,4vh,48px)}
.slide.scroll{justify-content:flex-start}
.nav{background:linear-gradient(to top,var(--bg) 70%,rgba(245,246,248,0))}

/* ---------- Tooltip ---------- */
.tip{position:fixed;z-index:20;pointer-events:none;background:var(--ink);color:#fff;font-size:13px;line-height:1.45;
  padding:8px 11px;border-radius:9px;max-width:280px;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s}
.tip.on{opacity:1;transform:none}
[data-tip]{cursor:default}
svg [data-tip]:hover .bar,svg [data-tip]:hover .dot{filter:brightness(.92)}

/* ---------- Hoy ---------- */
.hoy-head h2{margin-bottom:0}
.hoy-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;padding:5px 10px;border-radius:999px;background:var(--soft);color:var(--sale)}
.chip.old{background:var(--warnbg);color:var(--warn)}
.kpi .sub{font-size:13px;color:var(--muted);margin-top:4px}
.kpi .sub b{font-weight:600}
.up{color:var(--good)} .down{color:var(--neg)}
.vacio{padding:40px 0;color:var(--muted);font-size:16px;line-height:1.6;max-width:60ch}

/* ---------- Pendientes ---------- */
.pend{margin-top:18px;font-size:13.5px;color:var(--muted)}
.pend b{color:var(--ink)}

/* ---------- Captura manual y usuarios ---------- */
.tools{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 8px;align-items:center}
.tools .sp{flex:1}
.drop{border:1.5px dashed var(--line);border-radius:12px;padding:14px;text-align:center;color:var(--muted);font-size:13.5px;margin:8px 0;transition:border-color .2s,background .2s}
.drop.over{border-color:var(--sale);background:var(--soft)}
textarea.paste{width:100%;min-height:120px;font:13px ui-monospace,Menlo,Consolas,monospace;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--surface);color:var(--ink)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:clamp(14px,2vw,22px);margin-top:14px}
.card h3{margin:0 0 6px;font-size:16px}
.card p{margin:0 0 10px;color:var(--muted);font-size:13.5px;line-height:1.5}
.resumen-prev{display:flex;gap:14px;flex-wrap:wrap;font-size:13.5px;margin-bottom:8px}
.resumen-prev b{font-family:"Space Grotesk",Inter,sans-serif;font-size:18px}
table.edit{min-width:720px}
table.edit td{padding:4px 8px;vertical-align:middle}
table.edit input{width:100%;min-width:64px;font:14px Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums;color:var(--ink);background:transparent;
  border:1px solid transparent;border-radius:7px;padding:6px 8px;text-align:right}
table.edit input[type=date],table.edit input.txt{text-align:left}
table.edit input:hover{border-color:var(--line)}
table.edit input:focus{border-color:var(--sale);background:var(--surface);outline:none}
table.edit input:disabled{color:var(--ink);opacity:1}
table.edit tr.err td{background:var(--errbg)}
table.edit tr.ok td{transition:background 1.2s;background:transparent}
table.edit tr.saved td{background:#ECFDF5}
table.edit .msg td{color:#991B1B;font-size:12.5px;padding-top:0;border-bottom:1px solid var(--line)}
table.edit td.meta{font-size:12px;color:var(--muted);white-space:nowrap}
table.edit .del{border:0;background:none;color:var(--muted);cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;border-radius:6px}
table.edit .del:hover{color:var(--neg);background:var(--errbg)}
tr.nuevo td{background:var(--soft)}
.est{font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap}
.est.nuevo{background:#ECFDF5;color:var(--good)} .est.cambio{background:var(--soft);color:var(--sale)}
.est.igual{background:#F1F5F9;color:var(--muted)} .est.error{background:var(--errbg);color:#991B1B}
.hist td{font-size:13px}
.form-u{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;align-items:end}
.form-u label{display:grid;gap:4px;font-size:12.5px;color:var(--muted)}
.form-u input,.form-u select,.u-tbl select{font:14px Inter,system-ui,sans-serif;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink)}
.u-tbl td{vertical-align:middle}
.tag{font-size:11.5px;padding:2px 7px;border-radius:999px;background:var(--soft);color:var(--sale);font-weight:600}
.tag.manual{background:var(--warnbg);color:var(--warn)}
.oculto{display:none !important}

/* ---------- Login ---------- */
.login{min-height:100%;display:grid;place-items:center;padding:24px}
.login form{width:100%;max-width:380px;display:grid;gap:14px}
.login h1{font-size:clamp(36px,6vw,52px)}
.login label{display:grid;gap:6px;font-size:13px;color:var(--muted)}
.login input{font:16px Inter,system-ui,sans-serif;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink)}
.login .btn{min-height:46px;font-size:15px}
.login .err{color:var(--neg);font-size:14px;min-height:20px}

@media (max-width:860px){
  .ctrl{margin-left:0;width:100%}
  .brand{font-size:16px}
  .kpis{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .ctrl input[type=date]{width:132px}
  .segm button{padding:7px 9px;font-size:12px}
}

/* ---------- Impresión / PDF ---------- */
@media print{
  @page{size:landscape;margin:12mm}
  html,body{height:auto;overflow:visible;background:#fff}
  .top,.nav,.progress,.tip,.no-print,.aviso .btn{display:none !important}
  .print-head{display:block !important;font:12px Inter,sans-serif;color:var(--muted);margin-bottom:8px}
  .deck{position:static}
  .slide{position:static;opacity:1 !important;visibility:visible !important;overflow:visible;padding:0 0 8mm;display:block;break-after:page;page-break-after:always}
  .slide.no-print{display:none !important}
  [data-a]{opacity:1 !important;transform:none !important}
  .bar,.se,.sv,.track{transform:none !important}
  .line{stroke-dashoffset:0 !important}
  .val,.dot,.avg,.avgt{opacity:1 !important} .dot{transform:none !important} .area{opacity:.07 !important}
  .hbar{width:var(--w) !important} .seg{width:var(--w) !important} .cv .mb i{width:var(--w) !important}
  .chart-wrap{overflow:visible} .chart-wrap svg,.chart-wrap.wide svg,.chart-wrap.fit svg{min-width:0 !important;height:auto !important}
  *,*::before,*::after{transition:none !important;animation:none !important}
}
.print-head{display:none}

/* Centrado vertical que nunca recorta el título cuando la diapositiva es más alta que la pantalla. */
.slide{justify-content:flex-start}
.slide>.inner{margin-top:auto;margin-bottom:auto}
.slide.scroll>.inner{margin-top:0}

/* En celular los filtros quedan detrás de un botón para no tapar las gráficas. */
.solo-movil{display:none}
@media (max-width:860px){
  .solo-movil{display:inline-flex;margin-left:auto}
  .ctrl{display:none}
  .top.abierto .ctrl{display:flex}
  .status span:not(:first-child){display:none}
  .top.abierto .status span{display:inline}
  .avisos .aviso{font-size:12.5px;padding:6px 10px}
}

/* ===== Ajuste a pantallas bajas (laptops de 13") ===== */
.top{padding:8px clamp(16px,3vw,40px) 8px;padding-top:calc(8px + env(safe-area-inset-top,0px))}
.top-row{flex-wrap:nowrap}
.brand{min-width:0;flex:0 1 auto}
.brand small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw;margin-top:2px}
.brand small .dot-live{margin-right:5px}
.ctrl{flex-wrap:nowrap;gap:6px}
.ctrl input[type=month]{width:136px} .ctrl input[type=date]{width:128px}
.ctrl input,.ctrl select,.btn{min-height:34px}
.avisos{margin-top:6px;gap:4px}
.avisos:empty{display:none}
.aviso{padding:4px 6px 4px 12px;font-size:12.5px;flex-wrap:nowrap;gap:10px;min-height:30px}
.aviso .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.aviso.full .t{white-space:normal}
.aviso .btn{min-height:26px;padding:3px 10px;font-size:12px;flex:none}

.slide{padding:clamp(12px,2.6vh,40px) clamp(20px,5vw,96px) 82px}
.nav{padding-top:10px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
.chart-wrap.fit svg{height:auto}
.chart-wrap{margin-top:clamp(8px,1.8vh,28px)}

@media (max-width:1200px){ .ctrl input[type=date]{display:none} }
@media (max-width:860px){
  .top-row{flex-wrap:wrap}
  .top.abierto .ctrl{flex-wrap:wrap}
  .ctrl input[type=date]{display:inline-block}
  .brand small{max-width:62vw}
}

@media (max-height:900px){
  h1{font-size:clamp(40px,min(7.2vw,11vh),104px)}
  h2{font-size:clamp(24px,min(3.4vw,5.4vh),48px);margin-bottom:6px}
  .lede{font-size:clamp(14px,min(1.4vw,2.4vh),19px);line-height:1.45}
  .eyebrow{margin-bottom:4px}
  .kpis{margin:clamp(10px,2.6vh,40px) 0}
  .kpi .n{font-size:clamp(32px,min(5.6vw,9.5vh),88px)}
  .kpi .l{font-size:14px;margin-top:6px} .kpi .sub{margin-top:2px}
  .kpis.sm{margin:clamp(6px,1.4vh,20px) 0 clamp(2px,.6vh,8px)}
  .kpis.sm .n{font-size:clamp(26px,min(3.8vw,6.4vh),54px)}
  .kpis.sm .l{margin-top:3px}
  .legend{margin-top:clamp(6px,1.2vh,16px)}
  .track{height:clamp(36px,7vh,64px)}
  .spark{height:clamp(150px,36vh,380px)}
  .cmp{margin-top:clamp(10px,2vh,36px);gap:clamp(8px,1.6vh,24px)}
  .row{padding-bottom:clamp(8px,1.6vh,22px)}
  .bars{gap:5px} .hbar{height:clamp(20px,3.4vh,28px)}
  .hl{margin-top:clamp(8px,1.6vh,32px)}
  .hl article{padding:clamp(10px,2vh,28px) 0}
  .hl .big{font-size:clamp(30px,min(4.8vw,7.4vh),64px)}
  .hl h3{margin:8px 0 4px}
  .strip{margin-top:clamp(6px,1.4vh,24px)} .strip article{padding-top:clamp(6px,1.2vh,18px)}
  .strip .big{font-size:clamp(24px,min(3vw,5vh),42px)} .strip h3{margin:6px 0 2px}
  .wk-tbl td{padding-top:clamp(5px,1.1vh,16px);padding-bottom:clamp(5px,1.1vh,16px);font-size:15px}
  .tbl-wrap{margin-top:clamp(6px,1.4vh,22px)}
}
@media (max-height:700px){
  .hl p,.strip p{font-size:13px;line-height:1.4}
  .kpi .sub{font-size:12px}
}
.dot.dd{fill:var(--eval);stroke:none}
.legend i[style*="dashed"]{vertical-align:3px}
/* Etiquetas de semana que cruzan de mes ("26 oct al 1 nov") en una sola línea. */
.hb{grid-template-columns:112px 1fr;white-space:nowrap}
@media (max-width:860px){.hb{grid-template-columns:96px 1fr;font-size:12px}}
.bar.pg{fill:var(--good)} .val.pg{fill:var(--good)}
