/* ── ATHE Dashboard — Calidad — Estilos ──────────────────────────────────
   Generado automáticamente. Servido por Flask en /static/calidad.css
   ─────────────────────────────────────────────────────────────────────── */
:root{
  --bd:#1a237e;--bm:#1565c0;--cy:#00bcd4;
  --gn:#43a047;--am:#f9a825;--rd:#e53935;
  --sw:240px;--th:56px;
  --bg:#f4f6f9;--ca:#fff;--tx:#212121;--mu:#8e9aab;--bo:#e4e8ef;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{font-family:"Roboto",sans-serif;background:var(--bg);color:var(--tx);display:flex;flex-direction:column}

/* LOGIN */
#ls{position:fixed;inset:0;z-index:9999;background:linear-gradient(135deg,#f4f6f9,#e8f0fe);display:flex;align-items:center;justify-content:center}
.lc{background:#fff;border-radius:16px;box-shadow:0 8px 40px rgba(21,101,192,.15);padding:48px 44px;text-align:center;width:100%;max-width:400px;border:1px solid var(--bo)}
.ll{height:48px;margin-bottom:28px;object-fit:contain}
.lt{font-size:1.15rem;font-weight:700;color:var(--bd);margin-bottom:6px}
.ls2{font-size:.84rem;color:var(--mu);margin-bottom:32px;line-height:1.5}
.bm{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:12px 20px;border-radius:8px;background:var(--bm);color:#fff;border:none;font-size:.92rem;font-weight:600;cursor:pointer;font-family:"Roboto",sans-serif;transition:background .2s}
.bm:hover{background:var(--bd)}
.ln{font-size:.72rem;color:var(--mu);margin-top:18px;line-height:1.5}
#le{background:#ffebee;color:#c62828;border-radius:6px;padding:10px 14px;font-size:.8rem;margin-top:16px;display:none}

/* TOPBAR */
.tb{height:var(--th);background:#fff;display:flex;align-items:stretch;z-index:400;box-shadow:0 1px 0 var(--bo);flex-shrink:0;overflow:visible}
.tbl{display:flex;align-items:center;gap:10px;padding:0 16px 0 12px;border-right:1px solid var(--bo);flex-shrink:0}
.hbtn{width:32px;height:32px;border:none;background:none;cursor:pointer;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:6px}
.hbtn:hover{background:var(--bg)}
.hbtn span{display:block;width:16px;height:2px;background:var(--mu);border-radius:2px}
.li{height:30px;object-fit:contain;flex-shrink:0}
.tabs{display:flex;align-items:flex-end;flex:1;overflow:hidden;padding:0 4px;gap:2px}
.tab{display:flex;align-items:center;gap:5px;padding:0 13px;height:46px;font-size:.79rem;font-weight:500;color:var(--mu);cursor:pointer;border-bottom:3px solid transparent;transition:all .18s;white-space:nowrap;user-select:none;border-radius:6px 6px 0 0;flex-shrink:0;margin-top:10px}
.tab:hover{color:var(--bm);background:#f0f7ff}
.tab.active{color:var(--bm);border-bottom-color:var(--cy);background:#fff;font-weight:600}
.tbr{display:flex;align-items:center;padding:0 14px;gap:8px;flex-shrink:0;border-left:1px solid var(--bo)}
.bhm{background:none;border:1px solid var(--bo);border-radius:5px;color:var(--mu);font-size:.72rem;padding:4px 9px;cursor:pointer;font-family:"Roboto",sans-serif;transition:all .2s;text-decoration:none;display:flex;align-items:center;gap:4px}
.bhm:hover{border-color:var(--bm);color:var(--bm)}
.ua{width:30px;height:30px;border-radius:50%;background:var(--bm);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}
.un{font-size:.75rem;color:var(--tx);font-weight:500;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blg{background:none;border:1px solid var(--bo);border-radius:5px;color:var(--mu);font-size:.72rem;padding:4px 9px;cursor:pointer;font-family:"Roboto",sans-serif;transition:all .2s}
.blg:hover{border-color:#f44336;color:#f44336}

/* LAYOUT */
.lay{display:flex;flex:1;overflow:hidden;position:relative}

/* SIDEBAR */
.sb{width:var(--sw);background:#fff;border-right:1px solid var(--bo);flex-shrink:0;display:flex;flex-direction:column;transition:width .28s,opacity .25s;overflow:hidden}
.sb.hidden{width:0;opacity:0;pointer-events:none}
.sbi{width:var(--sw);padding-top:10px;display:flex;flex-direction:column;flex:1;overflow-y:auto;overflow-x:hidden}
.ss{padding:5px 18px 3px;font-size:.63rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mu);font-weight:600;margin-top:4px}
.sg{padding:4px 18px 10px;border-bottom:1px solid var(--bo)}
.sg label{font-size:.75rem;color:var(--tx);display:block;margin-bottom:3px;font-weight:500}
.sg input,.sg select{width:100%;background:var(--bg);border:1px solid var(--bo);border-radius:5px;color:var(--tx);padding:4px 6px;font-size:.72rem;font-family:"Roboto",sans-serif;margin-bottom:4px;cursor:pointer}
.sg select[multiple]{resize:vertical;min-height:44px;cursor:default}
.sg input:focus,.sg select:focus{outline:none;border-color:var(--cy);background:#fff}
.sact{padding:8px 18px 10px;border-bottom:1px solid var(--bo);display:flex;flex-direction:column;gap:4px}
.sact-row{display:flex;gap:4px}
.ba{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border:none;border-radius:5px;padding:5px 3px;font-size:.63rem;font-weight:500;cursor:pointer;font-family:"Roboto",sans-serif;transition:all .2s}
.ba.apl{background:#e8f0fe;color:var(--bm);border:1px solid #c5d8f8}
.ba.apl:hover{background:var(--bm);color:#fff}
.ba.apl.pending{background:#fff3cd;color:#856404;border:1px solid #ffc107;animation:pulse-pending 1.5s ease-in-out infinite}
@keyframes pulse-pending{0%,100%{box-shadow:0 0 0 0 rgba(255,193,7,.4)}50%{box-shadow:0 0 0 4px rgba(255,193,7,0)}}
.ba.rst{background:#fff3e0;color:#e65100;border:1px solid #ffcc80}
.ba.rst:hover{background:#e65100;color:#fff}
.ba.ref{background:var(--bg);color:var(--bm);border:1px solid var(--bo)}
.ba.ref:hover{background:#e8f0fe;border-color:var(--bm)}
.ba.xls{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}
.ba.xls:hover{background:#2e7d32;color:#fff}
.ba-icon{font-size:.85rem;line-height:1}

/* OVERLAY DE CARGA */
#loading-overlay{position:absolute;top:0;bottom:0;left:var(--sw);right:0;z-index:8000;background:rgba(30,40,60,.38);display:flex;align-items:center;justify-content:center;transition:left .28s}
.lo-box{background:#fff;border-radius:12px;padding:28px 36px;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:0 8px 32px rgba(0,0,0,.18)}
.lo-spinner{width:36px;height:36px;border:4px solid #e4e8ef;border-top-color:var(--bm);border-radius:50%;animation:spin .7s linear infinite}
.lo-txt{font-size:.88rem;font-weight:500;color:var(--tx)}
@keyframes spin{to{transform:rotate(360deg)}}
.gb{display:flex;gap:4px}
.gbtn{flex:1;padding:5px 2px;border:1px solid var(--bo);background:var(--bg);border-radius:4px;font-size:.7rem;cursor:pointer;font-family:"Roboto",sans-serif;transition:all .18s;text-align:center}
.gbtn.active{background:var(--bm);color:#fff;border-color:var(--bm)}
.sn{padding:4px 18px;font-size:.61rem;color:var(--mu);line-height:1.65;margin-top:auto;border-top:1px solid var(--bo)}
.sn strong{color:var(--bm);font-weight:500}
.sn-estado{font-weight:700!important}
.sn-ok{color:var(--gn)!important}
.sn-err{color:var(--rd)!important}
.sn-loading{color:#f57c00!important}

/* MAIN */
.mn{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 16px;min-width:0}
.pn{display:none}
.pn.active{display:block}
.eb{background:#ffebee;border-left:4px solid var(--rd);color:#b71c1c;border-radius:6px;padding:9px 13px;font-size:.82rem;margin-bottom:10px;display:none}

/* KPI GRID */
.kg{display:grid;grid-template-columns:repeat(9,1fr);gap:3px;margin-bottom:6px}
.kc{background:#ffffff!important;border-radius:5;padding:3px 6px;border:none!important;border-left:3px solid var(--bm)!important;box-shadow:none!important;outline:none!important}
.kc-row{display:flex;align-items:baseline;gap:3px}
.kl{font-size:.48rem;text-transform:uppercase;letter-spacing:.05em;color:var(--mu);font-weight:600}
.kv{font-size:.72rem;font-weight:700;color:var(--bd);line-height:1.1;margin:1px 0;background:none;}
.kv.cg{color:var(--gn)}.kv.ca{color:var(--am)}.kv.cr{color:var(--rd)}
.ks{font-size:.46rem;color:var(--mu)}

/* BANDS */
.tw{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.tw-row{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.band{display:flex;align-items:stretch;border-radius:6px;overflow:hidden;border:1px solid var(--bo);background:var(--ca);box-shadow:0 1px 2px rgba(0,0,0,.04)}
.blbl{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--mu);padding:5px 4px;background:#f9fafc;border-right:1px solid var(--bo);flex-shrink:0}
.bseg{flex:1;padding:5px 5px 4px;border-right:1px solid var(--bo);text-align:center;min-width:0}
.bseg:last-child{border-right:none}
.bseg-tail{flex:.75}
.bsl{font-size:.59rem;text-transform:uppercase;letter-spacing:.04em;color:var(--mu);font-weight:600;margin-bottom:2px}
.bseg2{display:flex;align-items:center;justify-content:center;gap:0;min-height:38px}
.bseg2-single{justify-content:center}
.bseg-half{flex:1;text-align:center;min-width:0}
.bseg-acc{opacity:.65}
.bseg-div{width:1px;background:var(--bo);align-self:stretch;margin:0 3px;flex-shrink:0}
.bsp{font-size:.9rem;font-weight:700;line-height:1.2;margin:1px 0}
.bsp-acc{font-size:.75rem}
.bsn{font-size:.58rem;color:var(--mu)}
.bbar{height:3px;border-radius:0;margin-top:3px;opacity:.7}

/* CHARTS */
.cr2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.cc{background:var(--ca);border-radius:8px;padding:12px 14px;box-shadow:0 1px 3px rgba(0,0,0,.06);border:1px solid var(--bo)}
.cc.full{grid-column:1/-1}
.ch{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;flex-wrap:wrap;gap:5px}
.ch h5{font-size:.84rem;font-weight:600}
.ch span{font-size:.7rem;color:var(--mu)}
.gran-btns{display:flex;gap:3px}
.gran-btns .gbtn{padding:3px 8px;font-size:.65rem;flex:none}
.cw{position:relative;height:200px}
.cw.tall{height:280px}
.bxls{background:#fff;border:1px solid #a5d6a7;color:#2e7d32;padding:3px 8px;border-radius:4px;font-size:.68rem;font-weight:500;cursor:pointer;white-space:nowrap;font-family:"Roboto",sans-serif;transition:all .2s}
.bxls:hover{background:#2e7d32;color:#fff}

/* TABLES */
.tc{background:var(--ca);border-radius:8px;padding:12px 14px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.06);border:1px solid var(--bo)}
.tc .th{display:flex;align-items:center;justify-content:flex-end;margin-bottom:6px;gap:6px}
.tw2{overflow-x:auto;max-height:440px;overflow-y:auto;border-radius:5px;border:1px solid var(--bo)}
table{width:100%;border-collapse:collapse;font-size:.79rem}
thead th{position:sticky;top:0;background:#f4f6f9;color:var(--mu);padding:7px 9px;text-align:left;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-bottom:2px solid var(--bo);cursor:pointer;user-select:none}
thead th:hover{color:var(--bm)}
thead th.sa::after{content:' ↑';color:var(--bm)}
thead th.sd::after{content:' ↓';color:var(--bm)}
tbody tr{cursor:pointer}
tbody tr:hover{background:#f0f7ff}
tbody tr.sel{background:#e8f0fe!important;outline:2px solid var(--cy)}
tbody td{padding:6px 9px;border-bottom:1px solid var(--bo);white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
.num{text-align:right;font-variant-numeric:tabular-nums;font-size:.77rem}
.rk{color:var(--mu);font-size:.7rem;font-weight:600;width:22px;text-align:center}
.chip{display:inline-block;padding:2px 7px;border-radius:4px;background:#e8f0fe;color:var(--bm);font-size:.71rem;font-weight:500;max-width:190px;overflow:hidden;text-overflow:ellipsis}
.pill{display:inline-block;padding:2px 6px;border-radius:10px;font-size:.65rem;font-weight:700}
.pill.g{background:#e8f5e9;color:#2e7d32}
.pill.a{background:#fff8e1;color:#f57f17}
.pill.r{background:#ffebee;color:#c62828}

/* DETALLE export buttons */
.xbtns{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.xbtns .bxls{font-size:.67rem;padding:3px 7px}

/* VISTAS GUARDADAS */
.vistas-wrap{position:relative;flex-shrink:0}
.vistas-btn{display:flex;align-items:center;gap:5px;background:none;border:1px solid var(--bo);border-radius:5px;color:var(--mu);font-size:.72rem;padding:4px 9px;cursor:pointer;font-family:"Roboto",sans-serif;transition:all .2s;height:28px}
.vistas-btn:hover,.vistas-btn.active{border-color:var(--bm);color:var(--bm);background:#e8f0fe}
.vistas-ico{font-size:.8rem}
.vistas-count{background:var(--bm);color:#fff;border-radius:8px;font-size:.6rem;font-weight:700;padding:1px 5px;min-width:16px;text-align:center}
.vistas-panel{position:absolute;top:calc(100% + 6px);right:0;width:300px;background:#fff;border:1px solid var(--bo);border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.12);z-index:500;display:flex;flex-direction:column;max-height:420px}
.vp-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 8px;border-bottom:1px solid var(--bo);flex-shrink:0}
.vp-title{font-size:.82rem;font-weight:600;color:var(--tx)}
.vp-close{background:none;border:none;color:var(--mu);cursor:pointer;font-size:.9rem;padding:2px 4px;border-radius:4px}
.vp-close:hover{background:var(--bg);color:var(--rd)}
.vp-list{flex:1;overflow-y:auto;padding:6px 0}
.vp-empty{padding:16px;text-align:center;font-size:.76rem;color:var(--mu)}
.vp-item{display:flex;align-items:center;gap:0;padding:0 8px;transition:background .15s}
.vp-item:hover{background:#f0f7ff}
.vp-item-load{flex:1;display:flex;align-items:center;gap:6px;padding:7px 4px;cursor:pointer;min-width:0}
.vp-pin{font-size:.75rem;flex-shrink:0;opacity:.7}
.vp-name{font-size:.78rem;font-weight:500;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.vp-by{font-size:.62rem;color:var(--mu);white-space:nowrap}
.vp-actions{display:flex;gap:2px;flex-shrink:0;opacity:0;transition:opacity .15s}
.vp-item:hover .vp-actions{opacity:1}
.vp-act-btn{background:none;border:none;cursor:pointer;border-radius:4px;padding:3px 5px;font-size:.72rem;color:var(--mu);transition:all .15s}
.vp-act-btn:hover{background:var(--bg)}
.vp-act-btn.edit:hover{color:var(--bm)}
.vp-act-btn.del:hover{color:var(--rd)}
.vp-footer{padding:8px 10px;border-top:1px solid var(--bo);flex-shrink:0}
.vp-save-btn{width:100%;background:var(--bm);color:#fff;border:none;border-radius:5px;padding:7px;font-size:.76rem;font-weight:600;cursor:pointer;font-family:"Roboto",sans-serif;transition:background .2s}
.vp-save-btn:hover{background:var(--bd)}

/* Modal vistas */
.vp-modal-bg{position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center}
.vp-modal{background:#fff;border-radius:10px;padding:24px 28px;width:340px;box-shadow:0 8px 32px rgba(0,0,0,.18)}
.vp-modal-title{font-size:.95rem;font-weight:700;color:var(--bd);margin-bottom:16px}
.vp-modal-input{width:100%;border:1px solid var(--bo);border-radius:6px;padding:8px 10px;font-size:.82rem;font-family:"Roboto",sans-serif;outline:none;margin-bottom:12px}
.vp-modal-input:focus{border-color:var(--bm)}
.vp-modal-pin{display:flex;align-items:center;gap:7px;font-size:.76rem;color:var(--tx);margin-bottom:16px;cursor:pointer}
.vp-modal-btns{display:flex;gap:8px;justify-content:flex-end}
.vp-modal-cancel{background:none;border:1px solid var(--bo);border-radius:5px;padding:6px 14px;font-size:.76rem;cursor:pointer;font-family:"Roboto",sans-serif;color:var(--mu)}
.vp-modal-cancel:hover{border-color:var(--mu)}
.vp-modal-ok{background:var(--bm);color:#fff;border:none;border-radius:5px;padding:6px 14px;font-size:.76rem;font-weight:600;cursor:pointer;font-family:"Roboto",sans-serif}
.vp-modal-ok:hover{background:var(--bd)}

@media(max-width:1400px){.kg{grid-template-columns:repeat(4,1fr)}}
@media(max-width:1200px){.kg{grid-template-columns:repeat(3,1fr)}}
@media(max-width:960px){.kg{grid-template-columns:1fr 1fr}.cr2{grid-template-columns:1fr}.vistas-lbl{display:none}}

/* Fila de totales en tablas */
.tot-row td{background:var(--bg2,#f0f4fa);font-weight:600;font-size:.76rem;border-top:2px solid var(--bm,#1a5cb8);position:sticky;bottom:0;z-index:1}
.tot-row td.tot{color:var(--bd,#0d3a7a)}
.tot-row td.tot-lbl{color:var(--mu,#888);text-transform:uppercase;letter-spacing:.04em}
