﻿:root{
  --bg:#0a1330;--panel:#131623;--panel2:#171d2e;--border:#1e2740;
  --text:#ffffff;--muted:#3d5070;--muted2:#6b85a8;
  --adm:#3b82f6;--bsw:#ec4899;--alm:#f97316;--ope:#f59e0b;
  --seg:#ef4444;--mec:#e017bb;--ctl:#10b981;--ceq:#06b6d4;--otr:#a78bfa;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{background:var(--bg);color:var(--text);font-family:'Barlow',sans-serif;min-height:100vh;overflow-x:hidden;}

/* ── LOGIN ── */
#loginScreen{display:flex;align-items:center;justify-content:center;min-height:100vh;position:relative;overflow:hidden;}
.login-bg{position:absolute;inset:0;background:radial-gradient(ellipse at 15% 60%,#0d1e38 0%,transparent 55%),radial-gradient(ellipse at 85% 20%,#150f2a 0%,transparent 50%),linear-gradient(150deg,#060810 0%,#0b0e18 100%);}
.login-grid{position:absolute;inset:0;opacity:.03;background-image:linear-gradient(#2a3a5a 1px,transparent 1px),linear-gradient(90deg,#2a3a5a 1px,transparent 1px);background-size:40px 40px;}
.login-float{position:absolute;font-family:'Barlow Condensed',sans-serif;font-weight:900;color:#1a2a4a;pointer-events:none;user-select:none;}
.lf1{font-size:220px;top:-20px;right:-10px;opacity:.18;letter-spacing:-.04em;}
.lf2{font-size:120px;bottom:30px;left:-20px;opacity:.1;}
.login-box{position:relative;z-index:2;width:min(420px,95vw);background:rgba(17,21,32,.96);border:1px solid #1e2740;border-radius:14px;backdrop-filter:blur(20px);box-shadow:0 24px 60px #00000070,0 0 0 1px #ffffff06 inset;overflow:hidden;}
.login-top{padding:1.8rem 2rem 1.4rem;background:linear-gradient(135deg,#0d1628 0%,#152040 100%);border-bottom:1px solid #1e2740;text-align:center;}
.login-logo-ring{width:180px;height:180px;margin:0 auto .7rem;position:relative;}
.login-logo-ring svg{width:100%;height:100%;}
.login-brand{font-family:'Barlow Condensed',sans-serif;font-size:1.75rem;font-weight:900;letter-spacing:.14em;color:#dce8ff;}
.login-site{font-size:.65rem;letter-spacing:.22em;color:var(--muted2);text-transform:uppercase;margin-top:2px;}
.login-body{padding:1.6rem 2rem;}
.lbl{font-size:.63rem;letter-spacing:.16em;color:var(--muted2);text-transform:uppercase;display:block;margin-bottom:.3rem;}
.login-input{
  width:100%;background:transparent;border:1px solid #2a3a5a;border-radius:7px;
  padding:.68rem 1rem;color:var(--text);font-family:'Roboto Mono',monospace;font-size:.95rem;
  letter-spacing:.06em;outline:none;transition:border-color .2s;margin-bottom:1.1rem;
}
.login-input:focus{border-color:#f59e0b;}
.login-input::placeholder{color:#2a3a5a;letter-spacing:.04em;}
.login-btn{width:100%;padding:.82rem;background:linear-gradient(135deg,#d4820a,#f59e0b);border:none;border-radius:7px;color:#000;font-family:'Barlow Condensed',sans-serif;font-size:1.05rem;font-weight:800;letter-spacing:.14em;cursor:pointer;transition:all .2s;text-transform:uppercase;}
.login-btn:hover{background:linear-gradient(135deg,#f59e0b,#fbbf24);transform:translateY(-1px);box-shadow:0 8px 20px #f59e0b28;}
.login-err{background:#ef444412;border:1px solid #ef444438;border-radius:6px;padding:.55rem .9rem;color:#ef4444;font-size:.78rem;margin-bottom:.9rem;display:none;}
.login-demos{margin-top:1.3rem;border-top:1px solid #1e2740;padding-top:1.1rem;}
.demo-ttl{font-size:.62rem;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin-bottom:.55rem;}
.demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;}
.demo-chip{background:#0d1422;border:1px solid #1e2740;border-radius:6px;padding:.38rem .55rem;cursor:pointer;transition:all .15s;}
.demo-chip:hover{border-color:#f59e0b;background:#1a1f30;}
.demo-code{font-family:'Roboto Mono',monospace;font-size:.58rem;color:#f59e0b;display:block;margin-bottom:1px;}
.demo-name{font-size:.65rem;color:var(--muted2);}
.demo-area{font-size:.58rem;color:var(--muted);}

/* ── APP ── */
#appShell{display:none;flex-direction:column;min-height:100vh;}
header{height:54px;background:#0d111e;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 1.4rem;position:sticky;top:0;z-index:100;box-shadow:0 2px 16px #00000050;}
.hlogo{display:flex;align-items:center;gap:.55rem;}
.hlogo-hex{width:28px;height:28px;background:var(--accent,#f59e0b);clip-path:polygon(50% 0%,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:900;color:#000;}
.hlogo-text{font-family:'Barlow Condensed',sans-serif;font-size:1.15rem;font-weight:800;letter-spacing:.1em;}
.hlogo-sep{color:var(--border);margin:0 .25rem;}
.harea{font-family:'Barlow Condensed',sans-serif;font-size:.82rem;font-weight:600;letter-spacing:.1em;padding:.2rem .6rem;border-radius:20px;border:1px solid;text-transform:uppercase;}
.hright{display:flex;align-items:center;gap:.9rem;}
.hdate{font-family:'Roboto Mono',monospace;font-size:.67rem;color:var(--muted2);}
.huser{display:flex;align-items:center;gap:.45rem;background:var(--panel2);border:1px solid var(--border);border-radius:7px;padding:.28rem .72rem;}
.hdot{width:6px;height:6px;border-radius:50%;animation:pulse 2s infinite;}
.hname{font-size:.75rem;}
.hrole{font-size:.6rem;color:var(--muted2);}
.hout{background:none;border:1px solid var(--border);border-radius:5px;color:var(--muted2);font-size:.72rem;padding:.28rem .65rem;cursor:pointer;font-family:'Barlow',sans-serif;transition:all .15s;}
.hout:hover{border-color:#ef4444;color:#ef4444;}
.hrefresh{background:rgba(245,158,11,.1);border:1px solid #f59e0b55;border-radius:5px;color:#f59e0b;font-size:.8rem;padding:.28rem .6rem;cursor:pointer;font-family:'Barlow',sans-serif;transition:all .2s;display:flex;align-items:center;gap:.3rem;white-space:nowrap;}
.hrefresh:hover{background:rgba(245,158,11,.22);border-color:#f59e0b;}
.hrefresh:disabled{opacity:.5;cursor:not-allowed;}
.hrefresh .ricon{display:inline-block;font-size:1rem;transition:transform .15s;}
.hrefresh.spinning .ricon{animation:spin .6s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* ── ASISTENCIA / TAREAJE ── */
.scanner-status{text-align:center;padding:.75rem 1rem;font-size:.85rem;border-radius:8px;margin-bottom:.8rem;font-weight:600;}
.scanner-wait{background:rgba(245,158,11,.1);color:#f59e0b;border:1px solid #f59e0b30;}
.scanner-ok{background:rgba(16,185,129,.12);color:#10b981;border:1px solid #10b98140;}
.scanner-err{background:rgba(239,68,68,.12);color:#ef4444;border:1px solid #ef444440;}
#qr-reader{border-radius:10px;overflow:hidden;border:2px solid var(--border);}
/* ── SCANNER OVERLAY ── */
.scan-wrap{position:relative;width:100%;background:#000;border-radius:8px;overflow:hidden;line-height:0}
.scan-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}
.scan-vignette{position:absolute;inset:0;background:radial-gradient(ellipse 70% 60% at 50% 50%,transparent 40%,rgba(0,0,0,.55) 100%)}
.scan-zone{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:240px;height:240px}
.scan-corner{position:absolute;width:26px;height:26px;border-color:#10b981;border-style:solid}
.scan-corner.tl{top:0;left:0;border-width:3px 0 0 3px;border-radius:5px 0 0 0}
.scan-corner.tr{top:0;right:0;border-width:3px 3px 0 0;border-radius:0 5px 0 0}
.scan-corner.bl{bottom:0;left:0;border-width:0 0 3px 3px;border-radius:0 0 0 5px}
.scan-corner.br{bottom:0;right:0;border-width:0 3px 3px 0;border-radius:0 0 5px 0}
.scan-line{position:absolute;left:6px;right:6px;height:2px;background:linear-gradient(90deg,transparent,#10b981 30%,#6ee7b7,#10b981 70%,transparent);box-shadow:0 0 10px 2px #10b98180;animation:scanMove 1.8s ease-in-out infinite}
@keyframes scanMove{0%{top:6px;opacity:.9}50%{top:calc(100% - 8px);opacity:.9}100%{top:6px;opacity:.9}}
.scan-ok-flash{animation:scanFlash .35s ease forwards}
@keyframes scanFlash{0%{background:rgba(16,185,129,.0)}50%{background:rgba(16,185,129,.35)}100%{background:rgba(16,185,129,.0)}}
#qr-reader video{border-radius:8px;}
.scan-result-card{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:1rem;text-align:center;margin-top:.8rem;}
.scan-result-name{font-weight:800;font-size:1.05rem;letter-spacing:.02em;}
.scan-result-info{font-size:.78rem;color:var(--muted2);margin-top:.3rem;}
.fotocheck-wrap{display:flex;justify-content:center;margin-top:.5rem;}
.fotocheck-card{background:#ffffff;color:#0a0a1a;border-radius:12px;border:2px solid #1e3a6e;padding:1.4rem 1.2rem;text-align:center;width:200px;box-shadow:0 8px 24px #00000040;}
.fc-brand{font-size:.55rem;letter-spacing:.2em;color:#1e3a6e;text-transform:uppercase;font-weight:700;margin-bottom:.4rem;}
.fc-nombre{font-weight:900;font-size:.95rem;margin-bottom:.15rem;color:#0a0a1a;line-height:1.2;}
.fc-cargo{font-size:.68rem;color:#444;margin-bottom:.8rem;}
.fc-dni{font-family:monospace;font-size:.75rem;margin-top:.5rem;color:#333;}
.fc-guardia{font-size:.65rem;color:#666;margin-top:.2rem;}

/* ── LAYOUT ── */
.shell-body{display:flex;flex:1;min-height:calc(100vh - 54px);}
nav{width:220px;min-width:220px;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;padding:.5rem 0;}
.nav-dash{display:flex;align-items:center;gap:.55rem;padding:.5rem .9rem;cursor:pointer;border-left:3px solid transparent;font-size:.82rem;color:var(--muted2);transition:all .12s;}
.nav-dash:hover,.nav-dash.active{background:#ffffff06;color:var(--text);}
.nav-dash.active{border-left-color:#f59e0b;color:#f59e0b;font-weight:600;}
.nav-area-wrap{border-bottom:1px solid var(--border);margin-bottom:2px;}
.nav-ah{display:flex;align-items:center;gap:.5rem;padding:.48rem .9rem;cursor:pointer;user-select:none;transition:background .12s;}
.nav-ah:hover{background:#ffffff05;}
.nav-ah-icon{font-size:.9rem;width:20px;text-align:center;}
.nav-ah-name{font-family:'Barlow Condensed',sans-serif;font-size:.76rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;flex:1;}
.nav-ah-chev{font-size:.6rem;color:var(--muted);transition:transform .2s;}
.nav-area-wrap.open .nav-ah-chev{transform:rotate(90deg);}
.nav-mods{display:none;}
.nav-area-wrap.open .nav-mods{display:block;}
.nav-mod{display:flex;align-items:center;gap:.5rem;padding:.44rem .9rem .44rem 2rem;cursor:pointer;border-left:3px solid transparent;font-size:.78rem;color:var(--muted2);transition:all .1s;}
.nav-mod:hover{background:#ffffff06;color:var(--text);}
.nav-mod.active{border-left-color:var(--nc,#f59e0b);background:#ffffff07;color:var(--text);font-weight:600;}
.nav-mod-icon{font-size:.85rem;width:16px;text-align:center;}

/* ── SUBGRUPO (tercer nivel) ── */
.nav-subgroup-head{
  display:flex;align-items:center;gap:.5rem;
  padding:.44rem .9rem .44rem 2rem;
  cursor:pointer;user-select:none;
  font-size:.78rem;color:var(--muted2);
  border-left:3px solid transparent;
  transition:all .12s;
  font-family:'Barlow',sans-serif;
  font-weight:400;
  letter-spacing:normal;
  text-transform:none;
}
.nav-subgroup-head:hover{background:#ffffff05;color:var(--muted2);}
.nav-subgroup-head-chev{font-size:.55rem;margin-left:auto;transition:transform .2s;}
.nav-subgroup-wrap.open .nav-subgroup-head-chev{transform:rotate(90deg);}
.nav-subgroup-wrap.open .nav-subgroup-head{color:var(--text);}
.nav-submods{display:none;}
.nav-subgroup-wrap.open .nav-submods{display:block;}
.nav-submod{
  display:flex;align-items:center;gap:.45rem;
  padding:.38rem .9rem .38rem 3.2rem;
  cursor:pointer;border-left:3px solid transparent;
  font-size:.74rem;color:var(--muted);transition:all .1s;
}
.nav-submod:hover{background:#ffffff06;color:var(--text);}
.nav-submod.active{
  border-left-color:var(--nc,#06b6d4);
  background:#ffffff07;color:var(--text);font-weight:600;
}

nav{transition:width .25s ease, min-width .25s ease;}
nav.collapsed{width:0;min-width:0;overflow:hidden;border-right:none;}
.nav-toggle-btn{background:none;border:1px solid var(--border);border-radius:5px;color:var(--muted2);width:30px;height:30px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.85rem;transition:all .15s;flex-shrink:0;}
.nav-toggle-btn:hover{border-color:var(--ope);color:var(--ope);}



main{flex:1;padding:1.6rem;overflow-y:auto;background:var(--bg);}

/* ── Engrase: cruz al pasar el mouse ───────────────────────────────────────
   Fila y columna del día en blanco suave; la celda donde se cruzan, en
   amarillo. Se usa una sombra interior para no tapar el color de la celda
   (P azul, E verde, domingo). */
#tbEngrase tr.eng-hrow>td,#tbEngrase .eng-hcol{box-shadow:inset 0 0 0 999px rgba(255,255,255,.09);}
#tbEngrase th.eng-hcol{color:#fff;}
#tbEngrase td.eng-hcross{box-shadow:inset 0 0 0 999px rgba(250,204,21,.55)!important;outline:2px solid #facc15;outline-offset:-2px;}

/* ── Celular y tablet angosta ──────────────────────────────────────────────
   El menú mide 220px fijos: en un teléfono de 360px dejaba 140px de contenido.
   Aquí pasa a flotar sobre la página (se abre con ☰ y se cierra solo al elegir
   un módulo), el contenido toma todo el ancho y las tablas anchas se deslizan
   en lugar de romper el alto. Nada de esto aplica en pantallas grandes. */
@media(max-width:820px){
  .shell-body{display:block;min-height:auto;}
  nav{position:fixed;top:54px;left:0;bottom:0;z-index:60;width:240px;min-width:240px;
      box-shadow:6px 0 26px rgba(0,0,0,.55);}
  nav.collapsed{width:0;min-width:0;box-shadow:none;border-right:none;}
  main{padding:.9rem .75rem;}
  .ph-title{font-size:1.5rem}
  .kpi-row{grid-template-columns:repeat(2,1fr)!important;}
  .tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .card-head{flex-wrap:wrap;gap:.5rem;}
  .hdate{display:none}
  .modal{max-width:100%!important;width:100%;margin:0;border-radius:10px 10px 0 0;}
  .mb{max-height:70vh;overflow-y:auto;}
  .fg-grid{grid-template-columns:1fr!important;}
}
@media(max-width:480px){
  .kpi-row{grid-template-columns:1fr!important;}
  .brandrow h1{font-size:1.2rem}
}
.page{display:none;animation:fadeIn .18s ease;}
.page.active{display:block;}
@keyframes fadeIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* ── PAGE HEADER ── */
.ph{margin-bottom:1.3rem;}
.ph-title{font-family:'Barlow Condensed',sans-serif;font-size:1.9rem;font-weight:800;letter-spacing:.04em;margin-bottom:.15rem;}
.ph-sub{color:var(--muted2);font-size:.8rem;}
.ph-pill{display:inline-block;font-size:.68rem;font-weight:700;border-radius:20px;padding:2px 9px;margin-left:.4rem;vertical-align:middle;font-family:'Barlow Condensed',sans-serif;letter-spacing:.08em;border:1px solid;}

/* ── CARDS ── */
.card{background:var(--panel);border:1px solid var(--border);border-radius:9px;margin-bottom:1.2rem;overflow:hidden;}
.card-head{padding:.72rem 1.1rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:var(--panel2);flex-wrap:wrap;gap:.5rem;}
.card-title{font-family:'Barlow Condensed',sans-serif;font-size:.95rem;font-weight:700;letter-spacing:.06em;}
.card-body{padding:1.1rem;}
.card-head-right{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}

/* ── SEARCH ── */
.search-wrap{display:flex;align-items:center;gap:.4rem;background:#0d111e;border:1px solid var(--border);border-radius:6px;padding:.3rem .7rem;}
.search-wrap span{color:var(--muted);font-size:.8rem;}
.search-input{background:transparent;border:none;outline:none;color:var(--text);font-size:.78rem;font-family:'Barlow',sans-serif;width:150px;}
.search-input::placeholder{color:var(--muted);}

/* ── KPI ── */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.9rem;margin-bottom:1.2rem;}
.kpi{background:var(--panel);border:2px solid var(--kc,#f59e0b);border-left:4px solid var(--kc,#f59e0b);border-radius:9px;padding:.9rem 1.1rem;position:relative;overflow:hidden;}
.kpi::before{display:none;}
.kpi-lbl{font-size:.62rem;letter-spacing:.12em;color:var(--muted2);text-transform:uppercase;margin-bottom:.35rem;}
.kpi-val{font-family:'Barlow Condensed',sans-serif;font-size:1.85rem;font-weight:800;color:var(--kc,#f59e0b);line-height:1;}
.kpi-sub{font-size:.65rem;color:var(--muted);margin-top:.2rem;}

/* ── TABLE ── */
.tbl-wrap{overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:.79rem;}
th{font-family:'Barlow Condensed',sans-serif;font-size:.64rem;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;padding:.5rem .85rem;text-align:left;border-bottom:1px solid var(--border);background:var(--panel2);white-space:nowrap;}
td{padding:.6rem .85rem;border-bottom:1px solid #16203500;color:var(--text);vertical-align:middle;}
tr:hover td{background:#ffffff03;}
tr:last-child td{border-bottom:none;}
.tr{text-align:right;}

/* ── FORM ── */
.fg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.65rem;margin-bottom:.9rem;}
.fg{display:flex;flex-direction:column;gap:.28rem;}
label{font-size:.62rem;letter-spacing:.1em;color:var(--muted2);text-transform:uppercase;}
input,select,textarea{background:var(--panel2);border:1px solid var(--border);border-radius:5px;padding:.46rem .7rem;color:var(--text);font-family:'Barlow',sans-serif;font-size:.8rem;outline:none;transition:border .15s;width:100%;}
input:focus,select:focus,textarea:focus{border-color:#f59e0b;}
select option{background:var(--panel2);}

/* ── BADGES ── */
.badge{display:inline-block;font-size:.6rem;font-weight:700;font-family:'Barlow Condensed',sans-serif;letter-spacing:.07em;border-radius:3px;padding:2px 6px;text-transform:uppercase;white-space:nowrap;}
.b-green{background:#10b98114;color:#10b981;border:1px solid #10b98130;}
.b-yellow{background:#f59e0b14;color:#f59e0b;border:1px solid #f59e0b30;}
.b-red{background:#ef444414;color:#ef4444;border:1px solid #ef444430;}
.b-blue{background:#3b82f614;color:#3b82f6;border:1px solid #3b82f630;}
.b-purple{background:#8b5cf614;color:#8b5cf6;border:1px solid #8b5cf630;}

/* ── EQ TABS ── */
.eq-tab{flex:1;padding:.5rem .4rem;font-size:.72rem;font-weight:600;letter-spacing:.04em;background:none;border:none;border-bottom:2px solid transparent;color:var(--muted2);cursor:pointer;transition:color .15s,border-color .15s;}
.eq-tab:hover{color:var(--mec);}
.eq-tab-act{color:var(--mec)!important;border-bottom:2px solid var(--mec)!important;}
.eq-sec{grid-column:1/-1;background:var(--mec);color:#fff;font-size:.75rem;font-weight:700;padding:.3rem .75rem;border-radius:4px;margin-bottom:.1rem;letter-spacing:.05em;}
.b-pink{background:#ec489914;color:#ec4899;border:1px solid #ec489930;}
.b-cyan{background:#06b6d414;color:#06b6d4;border:1px solid #06b6d430;}
.b-orange{background:#f9731614;color:#f97316;border:1px solid #f9731630;}
.b-teal{background:#10b98114;color:#14b8a6;border:1px solid #14b8a630;}

/* ── BUTTONS ── */
.btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .85rem;border-radius:5px;border:none;cursor:pointer;font-family:'Barlow',sans-serif;font-size:.77rem;font-weight:600;transition:all .13s;}
.btn-a{background:var(--ba,#f59e0b);color:#000;}
.btn-a:hover{filter:brightness(1.1);}
.btn-out{background:transparent;color:var(--muted2);border:1px solid var(--border);}
.btn-out:hover{background:var(--panel2);color:var(--text);}
.btn-del{background:#ef444410;color:#ef4444;border:1px solid #ef444428;}
.btn-del:hover{background:#ef444420;}
.btn-sm{padding:.25rem .55rem;font-size:.7rem;}
.btn-green{background:#10b98114;color:#10b981;border:1px solid #10b98130;}
.btn-green:hover{background:#10b98125;}

/* ── MODAL ── */
.mo{display:none;position:fixed;inset:0;background:#00000070;z-index:300;align-items:center;justify-content:center;}
.mo.open{display:flex;}
.modal{background:var(--panel);border:1px solid var(--border);border-radius:11px;width:96vw;max-width:520px;max-height:90vh;overflow-y:auto;}
.mh{padding:.9rem 1.3rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:var(--panel2);}
.mttl{font-family:'Barlow Condensed',sans-serif;font-size:1.1rem;font-weight:700;}
.mx{background:none;border:none;color:var(--muted);font-size:1.1rem;cursor:pointer;transition:color .13s;}
.mx:hover{color:#ef4444;}
.mb{padding:1.3rem;}
.mf{padding:.8rem 1.3rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.4rem;}

/* ── MISC ── */
.mono{font-family:'Roboto Mono',monospace;font-size:.77rem;}
.text-red{color:#ef4444;}.text-green{color:#10b981;}.text-acc{color:#f59e0b;}.text-muted{color:var(--muted2);}
.divider{border:none;border-top:1px solid var(--border);margin:.8rem 0;}
.stat-row{display:flex;align-items:center;gap:.45rem;font-size:.78rem;color:var(--muted2);}
.stat-row strong{color:var(--text);}
.prog-wrap{background:#ffffff0d;border-radius:3px;height:5px;overflow:hidden;}
.prog-bar{height:100%;border-radius:3px;transition:width .4s;}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1.1rem;}
.hm-card{background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:1rem;border-top:3px solid var(--hmc,#f59e0b);}
.hm-equipo{font-family:'Barlow Condensed',sans-serif;font-size:1rem;font-weight:700;margin-bottom:.6rem;color:var(--hmc,#f59e0b);}
.hm-stat{font-size:.78rem;color:var(--muted2);margin-bottom:.35rem;}
.hm-stat strong{color:var(--text);}
#toast{position:fixed;bottom:1.3rem;right:1.3rem;padding:.6rem 1rem;border-radius:7px;font-weight:600;font-size:.8rem;z-index:999;opacity:0;transform:translateY(7px);transition:all .28s;pointer-events:none;background:#10b981;color:#000;}
#toast.show{opacity:1;transform:none;}
#toast.err{background:#ef4444;color:#fff;}

/* ── PARTE DIARIO FORM ── */
.parte-tab{flex:1;padding:.6rem;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted2);font-family:'Barlow',sans-serif;font-size:.8rem;cursor:pointer;transition:all .15s;}
.parte-tab.active{color:var(--ceq);border-bottom-color:var(--ceq);font-weight:600;}
.parte-tab:hover{background:#ffffff05;color:var(--text);}
/* ── LPS TABS ── */
.lps-tab{padding:.55rem 1.1rem;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted2);font-family:'Barlow',sans-serif;font-size:.82rem;cursor:pointer;transition:all .15s;white-space:nowrap;}
.lps-tab.active{color:#10b981;border-bottom-color:#10b981;font-weight:600;}
.lps-tab:hover{background:#ffffff05;color:var(--text);}
.btn-toggle{flex:1;padding:.42rem .5rem;background:var(--panel2);border:1px solid var(--border);border-radius:5px;color:var(--muted2);font-size:.78rem;font-family:'Barlow',sans-serif;cursor:pointer;transition:all .15s;}
.btn-toggle.active{background:var(--ceq);border-color:var(--ceq);color:#000;font-weight:700;}
.viaje-block{background:var(--panel2);border:1px solid var(--border);border-radius:7px;padding:.8rem;margin-bottom:.6rem;}
.viaje-title{font-family:'Barlow Condensed',sans-serif;font-size:.8rem;font-weight:700;color:var(--ceq);margin-bottom:.5rem;}
/* Panel Horas grid */
.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-bottom:1.2rem;}
/* Ícono calendario de inputs tipo date — fondo oscuro */
input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.7;cursor:pointer;}
input[type="date"]::-webkit-calendar-picker-indicator:hover{opacity:1;}
/* Ícono de calendario resaltado (azul) para filtros de período */
input[type="date"].date-ic-azul::-webkit-calendar-picker-indicator{filter:invert(39%) sepia(94%) saturate(1352%) hue-rotate(202deg) brightness(101%) contrast(101%);opacity:1;}

/* ══ PLANILLA · COLUMNAS FIJAS (N°, DNI, Nombre) ══ */
#tbPlanilla .pl-fx{position:sticky;z-index:3;background-color:var(--panel);}
#tbPlanilla thead .pl-fx{z-index:6;background-color:#1e293b;}
#tbPlanilla thead tr:first-child .pl-fx{background-color:#1e3a8a;}
#tbPlanilla tfoot .pl-fx{z-index:6;background-color:var(--panel2);}
#tbPlanilla .pl-fx-end{box-shadow:inset -2px 0 0 var(--border);}

/* ══ TAREAJE · ENCABEZADO Y COLUMNAS FIJAS ══ */
#tbTareaje thead th{background-color:var(--panel2);}
#tbTareaje.tar-fixed thead th{position:sticky;z-index:6;}
#tbTareaje.tar-fixed .tar-fx{position:sticky;left:0;}
#tbTareaje.tar-fixed td.tar-fx{z-index:4;background-color:var(--panel);box-shadow:inset 0 -1px 0 var(--border);}
#tbTareaje.tar-fixed th.tar-fx{z-index:9;}
#tbTareaje.tar-fixed th.tar-fx-end{box-shadow:inset -2px 0 0 var(--border);}
#tbTareaje.tar-fixed td.tar-fx-end{box-shadow:inset -2px 0 0 var(--border),inset 0 -1px 0 var(--border);}
.tar-edit-btn{background:transparent;border:1px solid transparent;border-radius:5px;color:var(--muted2);cursor:pointer;font-size:.66rem;line-height:1;padding:2px 3px;opacity:.45;transition:.12s;}
.tar-edit-btn:hover{opacity:1;color:#22d3ee;border-color:#22d3ee66;background:rgba(34,211,238,.12);}

/* ══ SEGUIMIENTO GENERAL (tablero tipo Trello) ══ */
.seg-board{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem;align-items:start;}
.seg-col{background:var(--panel);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;min-height:280px;transition:outline .12s;}
.seg-col.drag-over{outline:2px dashed #10b98190;outline-offset:-4px;background:#10b98108;}
.seg-col-head{display:flex;align-items:center;justify-content:space-between;padding:.55rem .8rem;border-bottom:2px solid var(--cc,#3b82f6);font-family:'Barlow Condensed',sans-serif;font-size:.92rem;font-weight:800;letter-spacing:.05em;color:var(--cc,#3b82f6);text-transform:uppercase;}
.seg-col-count{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:1px 9px;font-size:.72rem;color:var(--muted2);}
.seg-col-body{padding:.55rem;flex:1;display:flex;flex-direction:column;gap:.5rem;}
.seg-card{background:var(--panel2);border:1px solid var(--border);border-left:3px solid var(--sc,#3b82f6);border-radius:8px;padding:.55rem .7rem;cursor:grab;transition:transform .12s,box-shadow .12s;}
.seg-card:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.35);border-color:#ffffff25;border-left-color:var(--sc,#3b82f6);}
.seg-card:active{cursor:grabbing;}
.seg-cbtn{background:none;border:1px solid var(--border);border-radius:5px;color:#10b981;font-size:.68rem;width:22px;height:22px;line-height:1;cursor:pointer;padding:0;}
.seg-cbtn:hover{background:var(--panel);}
@media(max-width:1200px){.seg-board{grid-template-columns:repeat(2,1fr);}}
@media(max-width:700px){.seg-board{grid-template-columns:1fr;}}


/* ══ BARRA DE CONTROLES DEL TAREAJE ══
   Una sola linea: a la izquierda lo que filtra, a la derecha lo que configura.
   Antes eran once controles sueltos que se partian en dos lineas y empujaban
   la grilla fuera de la pantalla. */
.tar-barra{
  display:flex;align-items:center;justify-content:space-between;
  gap:.6rem;flex-wrap:wrap;
  position:sticky;top:0;z-index:30;
  background:var(--panel);
}
.tar-barra-izq,.tar-barra-der{
  display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;
}
.tar-ctl{
  background:var(--panel2);border:1px solid var(--border);border-radius:6px;
  padding:.28rem .6rem;color:var(--text);font-size:.8rem;
}
.tar-menu{font-size:.76rem;font-weight:600;white-space:nowrap}
.tar-menu:hover{background:rgba(255,255,255,.06)}

/* La fila de fechas de la grilla tampoco deberia perderse al bajar */
#tbTareaje thead th{position:sticky;top:0;z-index:20;background:var(--panel2)}


/* ══ TIRA DE INDICADORES (Tareaje) ══
   Reemplaza las seis tarjetas con borde de color, que ocupaban ~150px de alto
   y empujaban la grilla fuera de la pantalla. Clase aparte de .kpi a proposito:
   esa la comparten otros diecinueve modulos y no deben cambiar.
   Se reutilizan las variables que ya existen en :root. */
.kpi-tira{
  display:flex;flex-wrap:wrap;align-items:center;gap:22px;
  background:var(--panel2);border-radius:8px;padding:12px 16px;
  margin-bottom:1rem;
}
.kpi-tira-item{display:flex;flex-direction:column;gap:2px}
.kpi-tira-lbl{font-size:12px;color:var(--muted2);line-height:1.2;white-space:nowrap}
.kpi-tira-val{font-size:20px;font-weight:500;color:var(--text);line-height:1.2;
  font-variant-numeric:tabular-nums}
/* Separador de medio pixel: agrupa sin llamar la atencion */
.kpi-tira-sep{width:.5px;align-self:stretch;background:var(--border);margin:0 2px}
/* Inactivos se puede pulsar; el punteado lo insinua sin gritarlo */
.kpi-tira-click{cursor:pointer;user-select:none}
.kpi-tira-click .kpi-tira-lbl{text-decoration:underline dotted;text-underline-offset:3px}
.kpi-tira-click:hover .kpi-tira-lbl{color:var(--text)}
/* Encendido: blanco y en negrita. Es un modo de vista que cambia lo que muestra
   la grilla, asi que tiene que verse activo de un vistazo. */
.kpi-tira-on .kpi-tira-lbl{color:var(--text);font-weight:600}
.kpi-tira-on .kpi-tira-val{font-weight:700}

/* En pantallas angostas envuelve en dos lineas; nunca scroll horizontal */
@media(max-width:640px){
  .kpi-tira{gap:14px;padding:10px 12px}
  .kpi-tira-sep{display:none}
}
