/* PRIME ISP · estilos (static/app.css). Variables en :root; violeta/naranja de la marca Cable Mágico.
   Tipografía autoalojada (CSP default-src 'self': nada se pide a Google en vivo): Manrope (texto y tablas) y Bricolage Grotesque (títulos y cifras grandes),
   ambas OFL descargadas de Google Fonts, subconjunto latino. Escala de espacio de 4/8 px (--s1…--s6). */
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/manrope-latin.woff2) format('woff2')}
@font-face{font-family:'Bricolage Grotesque';font-style:normal;font-weight:500 800;font-display:swap;src:url(fonts/bricolage-grotesque-latin.woff2) format('woff2')}
:root{
  --violeta:#5b10d6;--violeta-vivo:#7b2ff7;--violeta-deep:#1a0158;
  --naranja:#fd7f10;--naranja-hot:#fe4a12;--oro:#fcaa0f;
  --grad:linear-gradient(120deg,#5b10d6,#7b2ff7 45%,#fd7f10);--grad-btn:linear-gradient(120deg,#5b10d6,#7b2ff7);
  --bg:#eef0f6;--card:#ffffff;--line:#e5e7f0;--line2:#eef0f6;
  --tx:#1c2033;--tx2:#4f556e;--tx3:#5f6584;
  --ok:#146c35;--okbg:#e4f5ea;--warn:#a85205;--warnbg:#fdf1e3;--dang:#b91c1c;--dangbg:#fdeaea;--info:#1d4ed8;--infobg:#e8f0fe;
  --pwr:#5b21b6;--pwrbg:#efe9ff;
  --c-ok:#22a55b;--c-los:#dc2626;--c-pwr:#7c3aed;--c-unk:#8e94ad;--c-stale:#7a809c;--c-warn:#b86e00;
  --surf2:#f6f7fb;--hover:#faf9ff;--inpline:#cdd1e0;--graybg:#e9ebf3;--critbg:#a85205;--critfg:#ffffff;--errbg:#fffafa;--errline:#f0bcbc;--ambline:#f2d9b0;
  --stalebg:#f3f4f8;--stalebadge-bg:#e0e2ec;--stalebadge-fg:#3d4258;--link:#5b10d6;--gapA:#dfe2ee;--gapB:#f4f5fa;--topbar:rgba(238,240,246,.92);
  --stage-now:#f3edff;--stage-done:#eef8f1;--sim-a:#e8dcff;--sim-b:#9b7bf0;--sv-ok:#2f9e5b;--olt:#fafbfe;--chipon-bg:#1a0158;--chipon-fg:#ffffff;
  color-scheme:light;
  --r:14px;--ease:cubic-bezier(.16,1,.3,1);
  --f-body:'Manrope',system-ui,-apple-system,'Segoe UI',Roboto,Ubuntu,sans-serif;--f-head:'Bricolage Grotesque','Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;
  --emp-sj:#5b10d6;--emp-cm:#c2410c;--emp-cma:#0e7490;--measure:#5b10d6;--band1:#e3e5ee;--band2:#d3d6e4;--band3:#c1c5d9;--tick:#1c2033;--plate:#ffffff;--seg2:#d83f08;
}
/* Tema oscuro: mismas variables con valores propios; el contraste de cada par texto/fondo de estado se audita con tools/auditoria_contraste.js */
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0e1120;--card:#171b2e;--line:#2c3252;--line2:#1f2440;
    --tx:#e9ebf7;--tx2:#b9bedb;--tx3:#9aa1c4;
    --ok:#4ade80;--okbg:#0f2f1d;--warn:#fbbf24;--warnbg:#3b2a08;--dang:#fca5a5;--dangbg:#3d1515;--info:#9dbcff;--infobg:#142654;
    --pwr:#c9b8ff;--pwrbg:#2a1f5a;
    --c-ok:#34d399;--c-los:#ef4444;--c-pwr:#8b5cf6;--c-unk:#8e94ad;--c-stale:#6b7194;--c-warn:#e08a0b;
    --surf2:#1e2340;--hover:#1d2240;--inpline:#3a4166;--graybg:#272c4a;--critbg:#a85205;--critfg:#ffffff;--errbg:#2a1416;--errline:#6b2a2a;--ambline:#6b4a14;
    --stalebg:#1b1f36;--stalebadge-bg:#2c3252;--stalebadge-fg:#d5d9ee;--link:#b9a4ff;--gapA:#2a3050;--gapB:#1a1e35;--topbar:rgba(14,17,32,.92);
    --stage-now:#2a2150;--stage-done:#0f2f1d;--sim-a:#3b2f6e;--sim-b:#9b7bf0;--sv-ok:#34d399;--olt:#1b2038;--chipon-bg:#6d28d9;--chipon-fg:#ffffff;
    --emp-sj:#b9a4ff;--emp-cm:#fb923c;--emp-cma:#67e8f9;--measure:#b9a4ff;--band1:#242a48;--band2:#2f365a;--band3:#3b4370;--tick:#e9ebf7;--seg2:#fe4a12;
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:var(--f-body);background:var(--bg);color:var(--tx);
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.01em;font-family:var(--f-head)}
th,td,.mono{font-variant-numeric:tabular-nums}
button{font-family:inherit}
a{color:inherit;text-decoration:none}
input,select,textarea{font-family:inherit;font-size:14px}
:focus-visible{outline:3px solid var(--link);outline-offset:2px;border-radius:6px}
.hidden{display:none!important}

/* ===== Login ===== */
#login{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;overflow-y:auto;
  background:radial-gradient(1200px 600px at 15% -10%,rgba(123,47,247,.38),transparent),
             radial-gradient(900px 500px at 110% 110%,rgba(253,127,16,.26),transparent),#0c0616;padding:var(--s4)}
#login .box{position:relative;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  border-radius:24px;padding:var(--s6) var(--s5) var(--s5);width:392px;max-width:100%;color:#fff;margin:auto}
/* Marca: el logo horizontal va sobre una placa clara (su texto es violeta oscuro) y detrás un resplandor difuminado violeta→naranja de la marca. */
#login .marca{position:relative;display:flex;justify-content:center;margin:0 0 var(--s5)}
#login .marca .glow{position:absolute;left:50%;top:50%;width:135%;height:260%;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(ellipse at 38% 50%,rgba(123,47,247,.75) 0%,rgba(123,47,247,.28) 38%,transparent 70%),radial-gradient(ellipse at 70% 60%,rgba(253,127,16,.55) 0%,transparent 62%);filter:blur(38px);opacity:.95}
#login .marca .placa{position:relative;background:var(--plate);border-radius:18px;padding:var(--s3) var(--s4)}
#login .marca img{display:block;width:260px;max-width:100%;height:auto}
#login h1{font-size:22px;margin-bottom:var(--s1);text-align:center}
#login p{color:#d6d0ec;font-size:13.5px;margin:0 0 var(--s5);text-align:center}
#login label{font-size:12.5px;color:#d6d0ec;display:block;margin:var(--s4) 0 6px;font-weight:600}
#login input{width:100%;padding:12px 14px;border-radius:11px;border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.06);color:#fff;outline:none}
#login input:focus{border-color:#c9b8ff}
#login :focus-visible{outline-color:#fff}
#login button{width:100%;margin-top:22px;padding:13px;border:none;border-radius:11px;background:var(--grad-btn);color:#fff;
  font-weight:700;font-size:15px;cursor:pointer}
#login .lerr{margin-top:12px;font-size:12.5px;color:#ffb4a8;background:rgba(255,80,60,.12);border:1px solid rgba(255,120,100,.35);border-radius:9px;padding:8px 11px}
#login .lh{margin:0 0 4px;font-size:13px;color:#e7dcff}
#login button.lsec{background:transparent;border:1px solid rgba(255,255,255,.25);margin-top:10px;font-weight:600;font-size:13px}
#login button[disabled]{opacity:.6;cursor:wait}
#login .hint{margin-top:var(--s4);font-size:12px;color:#c3bce2;text-align:center}

/* ===== Shell ===== */
#shell{display:grid;grid-template-columns:238px 1fr;height:100vh}
aside{background:linear-gradient(180deg,#160a2e,#0f0720);color:#d9d3ee;display:flex;flex-direction:column;padding:16px 12px;overflow-y:auto}
aside .brand{padding:2px 2px var(--s3)}
aside .brand .placa{display:block;background:var(--plate);border-radius:14px;padding:var(--s2) var(--s3)}
aside .brand img{display:block;width:100%;height:auto}
aside .brand .sub{display:block;margin-top:var(--s2);padding:0 var(--s1);font-size:12px;color:#cfc8e6;line-height:1.35}
aside :focus-visible{outline-color:#fff}
aside .grp{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:#a79fcb;margin:16px 10px 6px}
aside a.nav{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:10px;color:#d9d3ee;font-size:13.5px;font-weight:500;cursor:pointer;transition:background .14s,color .14s;margin-bottom:1px}
aside a.nav:hover{background:rgba(255,255,255,.06);color:#fff}
aside a.nav.on{background:linear-gradient(100deg,rgba(123,47,247,.35),rgba(253,127,16,.16));color:#fff}
aside a.nav svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;flex-shrink:0}
aside a.nav .cnt{margin-left:auto;background:#c2300a;color:#fff;font-size:12px;font-weight:700;min-width:19px;height:19px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 5px}
aside a.nav .pend{margin-left:auto;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#cfc8e6;border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:1px 5px}
aside .foot{margin-top:auto;padding:12px 10px 4px;font-size:12px;color:#b3abd6;border-top:1px solid rgba(255,255,255,.08)}
.syncbox{font-size:12px;line-height:1.45;margin-bottom:9px}
.syncbox .sl{padding:5px 0;border-bottom:1px dashed rgba(255,255,255,.1)}
.syncbox .sl:last-child{border-bottom:none}
.syncbox b{color:#fff;font-weight:600}
.syncbox .okk{color:#6ee7a0}.syncbox .err{color:#ffb4a8}
.syncbtn{width:100%;justify-content:center;background:rgba(255,255,255,.09);color:#fff;border:1px solid rgba(255,255,255,.22);margin-bottom:10px}
.syncbtn:hover{background:rgba(255,255,255,.16)}
.syncbtn[disabled]{opacity:.6;cursor:wait}
.foot .link{color:#d9c7ff}
details.panel>summary{cursor:pointer;padding:14px 18px;font-weight:700;font-size:15px}
.olt{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-top:8px;background:var(--olt)}
.acard{padding:0;overflow:hidden}
.acard .ah{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line)}
.acard .ab{padding:10px 16px 14px}
.actorbox{margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.08)}
.actorbox label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:#a79fcb;margin:6px 0 3px}
.actorbox input,.actorbox select{width:100%;padding:7px 9px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;font-size:13px}
.actorbox select option{color:#1c2033}
.userbox .un{font-size:14px;font-weight:700;color:#fff;overflow-wrap:anywhere}
.userbox .ur{font-size:12px;color:#d9c7ff}
.noperm{display:inline-block;cursor:not-allowed}
.noperm .btn[disabled]{opacity:.45}
.actorbox .note2{font-size:12px;color:#b3abd6;margin-top:6px;line-height:1.35}
#scrim{display:none}

main{overflow-y:auto;display:flex;flex-direction:column;min-width:0}
.topbar{position:sticky;top:0;z-index:5;background:var(--topbar);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
  padding:13px 26px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.topbar h2{font-size:22px}
.topbar .sub{font-size:12.5px;color:var(--tx2);margin-top:1px;max-width:320px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .sp{flex:1}
.topbar .amb{font-size:12px;font-weight:700;padding:5px 11px;border-radius:999px;background:var(--warnbg);color:var(--warn);border:1px solid var(--ambline)}
.topbar .user{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--tx2)}
@media(max-width:1500px){.topbar .user #uTop{display:none}}
.topbar .ava{width:34px;height:34px;border-radius:50%;background:var(--grad-btn);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.sedesel{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.05em}
.sedesel select{font-weight:600;text-transform:none;letter-spacing:0;color:var(--tx);min-width:150px;max-width:220px}
.netbar{position:sticky;top:0;z-index:6;background:#7f1d1d;color:#fff;padding:10px 26px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-weight:600}
.netbar button{background:#fff;color:#7f1d1d;border:none;border-radius:8px;padding:6px 12px;font-weight:700;cursor:pointer}
.wrap{padding:22px 26px 60px;max-width:1220px;width:100%}

/* ===== UI atoms ===== */
.btn{display:inline-flex;align-items:center;gap:8px;border:none;border-radius:10px;padding:10px 15px;font-weight:600;font-size:13.5px;cursor:pointer;transition:transform .1s,box-shadow .18s,background .15s}
.btn:active{transform:scale(.97)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.btn.prim{background:var(--grad-btn);color:#fff;box-shadow:0 6px 16px -8px rgba(0,0,0,.35)}
.btn.g{background:var(--card);border:1px solid var(--line);color:var(--tx)}
.btn.g:hover{border-color:var(--violeta-vivo);color:var(--link)}
.btn.sm{padding:7px 11px;font-size:12.5px}
.btn.prohib{border:1px dashed var(--inpline);background:var(--surf2);color:var(--tx2);opacity:.85;cursor:not-allowed}
.btn.prohib:hover{border-color:var(--inpline);color:var(--tx2)}
.btn.prohib em{font-style:normal;font-size:12px;font-weight:700;color:var(--dang)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.card.err{border-color:var(--errline);background:var(--errbg)}
.grid{display:grid;gap:16px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.panel .ph{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.panel .ph h3{font-size:15px}.panel .ph .sp{flex:1}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.inp{padding:9px 12px;border:1px solid var(--inpline);border-radius:10px;background:var(--card);outline:none;color:var(--tx)}
.inp:focus{border-color:var(--violeta-vivo)}
.search{position:relative}.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;stroke:var(--tx3);fill:none;stroke-width:2}
.search input{padding-left:34px;min-width:230px}
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--tx2);font-weight:700;padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--line2)}
td{padding:11px 14px;border-bottom:1px solid var(--line2);font-size:13.5px;vertical-align:top}
tr:last-child td{border-bottom:none}
tbody tr.click{cursor:pointer}
tbody tr.click:hover{background:var(--hover)}
.mono{font-variant-numeric:tabular-nums}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.tag.ok{background:var(--okbg);color:var(--ok)}.tag.warn{background:var(--warnbg);color:var(--warn)}
.tag.dang{background:var(--dangbg);color:var(--dang)}.tag.info{background:var(--infobg);color:var(--info)}.tag.gray{background:var(--graybg);color:var(--tx2)}
.tag.pwr{background:var(--pwrbg);color:var(--pwr)}
.tag.crit{background:var(--critbg);color:var(--critfg)}
.ico{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.muted{color:var(--tx3)}
.small{font-size:12px}
.asof{display:block;font-size:12px;color:var(--tx3);margin-top:2px}
.asof.none{color:var(--warn);font-weight:600}
.right{text-align:right}.center{text-align:center}
.empty{text-align:center;color:var(--tx3);padding:40px 16px}
.loading{color:var(--tx3);padding:34px 8px;text-align:center}
.link{color:var(--link);font-weight:600;cursor:pointer;background:none;border:none;padding:0;font-size:inherit}
.link:hover{text-decoration:underline}
.chip{font-size:12px;padding:6px 12px;border-radius:999px;border:1px solid var(--inpline);background:var(--card);cursor:pointer;color:var(--tx2)}
.chip.on{background:var(--chipon-bg);color:var(--chipon-fg);border-color:var(--chipon-bg)}
.note{font-size:12.5px;color:var(--tx2);background:var(--card);border:1px solid var(--line);border-left:1px solid var(--violeta-vivo);border-radius:10px;padding:10px 14px;margin-bottom:16px}
.pager{display:flex;align-items:center;gap:10px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--line2);font-size:12.5px;color:var(--tx2);flex-wrap:wrap}
.pager .sp{flex:1}

/* tabs */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 18px;flex-wrap:wrap}
.tabs button{background:none;border:none;padding:11px 15px;font-size:13.5px;font-weight:600;color:var(--tx2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs button.on{color:var(--link);border-bottom-color:var(--violeta-vivo)}

/* sedes (panel) */
.sites{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.site{padding:0;overflow:hidden}
.site.sel{border-color:var(--violeta-vivo);box-shadow:0 0 0 2px rgba(123,47,247,.18)}
.site .sh{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.site .sh h3{font-size:16px;flex:1}
.mets{display:grid;grid-template-columns:1fr 1fr;gap:0}
.met{padding:12px 18px;border-bottom:1px solid var(--line2)}
.met:nth-child(odd){border-right:1px solid var(--line2)}
.met .l{font-size:12px;color:var(--tx2)}
.met .n{font-size:24px;font-weight:800;letter-spacing:-.02em;margin-top:2px}
.met .n.alert{color:var(--dang)}.met .n.amber{color:var(--warn)}
.site .sf{display:flex;gap:8px;padding:12px 18px;flex-wrap:wrap}

/* tarjetas de estado de red */
.cards{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.scard{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--c-unk);border-radius:12px;padding:12px 14px}
.scard.ok{border-top-color:var(--c-ok)}.scard.dang{border-top-color:var(--c-los)}.scard.pwr{border-top-color:var(--c-pwr)}
.scard.warn{border-top-color:var(--c-warn)}.scard.crit{border-top-color:#a85205}.scard.gray{border-top-color:var(--c-unk)}
.scard .l{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--tx2)}
.scard .n{font-size:30px;font-weight:800;letter-spacing:-.02em;margin-top:4px;line-height:1.1}
.scard .d{font-size:12px;color:var(--tx2);margin-top:2px}
.legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:12px;color:var(--tx2);margin:14px 0 18px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px;align-items:center}
.legend .t{font-weight:700;color:var(--tx)}
.legend span.it{display:inline-flex;align-items:center;gap:6px}

/* ficha */
.dethead{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.dethead .big{width:60px;height:60px;border-radius:16px;font-size:22px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--grad-btn);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}
.subgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:2px 22px;margin-top:6px}
.dt{padding:8px 0;border-bottom:1px solid var(--line2);min-width:0}
.dt .k{font-size:12px;color:var(--tx3)}.dt .v{font-size:13.5px;font-weight:600;margin-top:2px;overflow-wrap:anywhere}
.blocks{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin:16px 0}
.block{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--violeta-vivo);border-radius:var(--r);padding:16px 18px;min-width:0}
.block.b-fin{border-top-color:#0e7490}.block.b-adm{border-top-color:#4338ca}.block.b-opt{border-top-color:var(--c-ok)}.block.b-sop{border-top-color:var(--naranja)}
.block.stale{background:var(--stalebg);border-style:dashed;border-top-style:solid;border-top-color:var(--c-stale)}
.block h3{font-size:14px;display:flex;align-items:center;gap:8px;margin-bottom:10px}
.block .val{font-size:15px;margin-bottom:8px}
.block .src{font-size:12px;color:var(--tx2);border-top:1px dashed var(--line);padding-top:8px;margin-top:10px}
.block .src b{color:var(--tx)}
.block dl{margin:6px 0 0;display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:13px}
.block dt{color:var(--tx3)}.block dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.stalebadge{display:inline-flex;align-items:center;gap:6px;background:var(--stalebadge-bg);color:var(--stalebadge-fg);font-weight:800;font-size:12px;padding:4px 10px;border-radius:8px;letter-spacing:.03em}
.acc{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.ruta{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 0;align-items:stretch}
.ruta li{background:var(--surf2);border:1px solid var(--line);border-radius:10px;padding:6px 12px;min-width:90px;position:relative;margin-right:22px}
.ruta li:last-child{margin-right:0}
.ruta li:not(:last-child)::after{content:"›";position:absolute;right:-17px;top:50%;transform:translateY(-52%);font-size:20px;color:var(--tx3);font-weight:700}
.ruta small{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--tx3)}
.ruta b{font-size:13.5px;overflow-wrap:anywhere}
.sec{margin-top:16px}
.sec>h3{font-size:15px;margin:0 0 10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}

/* barra de historial */
.hbar{display:flex;height:34px;border-radius:9px;overflow:hidden;border:1px solid var(--line);background:var(--card)}
.hbar .s{min-width:3px;border-right:1px solid var(--card)}
.hbar .s:last-child{border-right:none}
.s.ok{background:var(--c-ok)}.s.dang{background:var(--c-los)}.s.pwr{background:var(--c-pwr)}.s.gray{background:var(--c-unk)}.s.stale{background:var(--c-stale)}
.s.gap{background:repeating-linear-gradient(45deg,var(--gapA) 0 5px,var(--gapB) 5px 10px)}
.haxis{display:flex;justify-content:space-between;font-size:12px;color:var(--tx3);margin-top:4px;gap:8px}
.tl{list-style:none;margin:0;padding:0}
.tl li{display:flex;gap:10px;flex-wrap:wrap;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line2)}
.tl li:last-child{border-bottom:none}
.tl .when{font-size:12px;color:var(--tx2);min-width:118px;font-variant-numeric:tabular-nums}
.tl .txt{flex:1;min-width:200px}

/* modal */
.mask{position:fixed;inset:0;background:rgba(15,10,30,.5);backdrop-filter:blur(3px);z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}
.modal{background:var(--card);border-radius:18px;width:520px;max-width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 30px 80px rgba(0,0,0,.4);animation:pop .22s var(--ease)}
.modal.wide{width:760px}
@keyframes pop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.modal .mh{display:flex;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal .mh h3{font-size:17px;flex:1}
.modal .mh .x{background:none;border:none;cursor:pointer;color:var(--tx2);font-size:24px;line-height:1}
.modal .mb{padding:22px}
.modal pre{background:var(--surf2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:12px;white-space:pre-wrap;word-break:break-word}

/* toast */
#toast{position:fixed;right:22px;bottom:22px;z-index:80;display:flex;flex-direction:column;gap:10px;align-items:flex-end}
.tst{background:#12172a;color:#fff;padding:13px 17px;border-radius:12px;font-size:13.5px;font-weight:500;box-shadow:0 16px 40px rgba(0,0,0,.35);
  display:flex;align-items:center;gap:10px;max-width:360px;animation:pop .2s var(--ease)}
.tst .i{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-weight:800;font-size:12px}
.tst.ok .i{background:#15803d}.tst.info .i{background:#1d4ed8}.tst.warn .i{background:#a85205}.tst.err .i{background:#b91c1c}

.menu-btn{display:none;background:none;border:1px solid var(--inpline);border-radius:9px;padding:7px;cursor:pointer}
.menu-btn svg{width:18px;height:18px;stroke:var(--tx);fill:none;stroke-width:2}
@media(max-width:820px){
  #shell{grid-template-columns:1fr}
  aside{position:fixed;left:-260px;top:0;bottom:0;width:238px;z-index:40;transition:left .25s}
  aside.open{left:0}
  aside.open+#scrim{display:block;position:fixed;inset:0;background:rgba(10,5,25,.5);z-index:39}
  .menu-btn{display:inline-flex!important}
  .topbar{padding:10px 14px;gap:10px}
  .topbar .sub,.topbar .user,.topbar .sp{display:none}
  .topbar .amb{font-size:12px;padding:3px 8px}
  .sedesel select{min-width:0;max-width:150px}
  .wrap{padding:14px 14px 50px}
  .netbar{padding:10px 14px}
  .search input{min-width:0;width:100%}.search{flex:1;min-width:180px}
  .blocks{grid-template-columns:1fr}
  .modal .mb{padding:16px}
}

/* formularios de las vistas con escritura */
.field{margin-bottom:12px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--tx2);margin-bottom:5px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ferr{margin:8px 0;font-size:12.5px;color:var(--dang);background:var(--dangbg);border:1px solid var(--errline);border-radius:9px;padding:8px 11px}
@media(max-width:820px){.f2{grid-template-columns:1fr}.modal.wide{width:100%}}

select.inp{max-width:100%;text-overflow:ellipsis}
.attrs>summary,.legend-d>summary{cursor:pointer;font-weight:700;font-size:13px;padding:6px 0;color:var(--tx2)}
.legend-d .legend{margin-top:6px}

/* ronda 3: banda de avisos del servidor, auditoría, tablas en tarjetas, tarjetas compactas del tablero */
.avband{display:flex;gap:10px;align-items:flex-start;margin:0 0 12px;padding:8px 12px;background:var(--infobg);color:var(--tx);border:1px solid var(--line);border-left:1px solid var(--info);border-radius:10px;font-size:13px}
.avband .i{flex:none;width:18px;height:18px;border-radius:50%;background:var(--info);color:var(--card);font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.avband .tx{flex:1;min-width:0}
.avband .x{flex:none;background:none;border:0;color:var(--tx2);font-size:18px;line-height:1;cursor:pointer;padding:0 4px}
.dupgrp{border:1px solid var(--line);border-radius:12px;margin-bottom:12px;background:var(--card);overflow:hidden}
.dupgrp .dh{padding:10px 14px;background:var(--surf2);display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--line2)}
.dupgrp .dr{padding:10px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--line2)}
.dupgrp .dr:last-child{border-bottom:0}
.dupgrp .dr .sp{flex:1}
.kpic{padding:10px 12px}
.kpic .kh{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.kpic .kv{font-size:22px;font-weight:800;text-align:right;white-space:nowrap}
.kpic summary{cursor:pointer;color:var(--tx2);font-size:12px;margin-top:6px}
@media(max-width:599px){
  table.cards,table.cards tbody,table.cards tr,table.cards td{display:block;width:100%}
  table.cards thead{display:none}
  table.cards tr{border:1px solid var(--line);border-radius:10px;margin:0 0 10px;padding:6px 10px;background:var(--card)}
  table.cards td{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border:0;padding:2px 0;text-align:right;font-size:13px}
  table.cards td::before{content:attr(data-label);flex:none;max-width:45%;color:var(--tx2);font-size:12px;font-weight:600;text-align:left}
  table.cards td.right{text-align:right}
  table.cards td:empty{display:none}
  table.cards td{min-width:0;overflow-wrap:anywhere}
  table.cards td .tag{max-width:100%;white-space:normal;text-align:left}
  table.cards td:first-child{display:block;text-align:left;font-weight:700;border-bottom:1px solid var(--line2);margin-bottom:4px;padding-bottom:6px}
  table.cards td:first-child::before{display:none}
  table.cards td.cx{display:none}
  table.cards td[data-st*="max-width"]{max-width:none!important}
}

/* ronda 4: búsqueda global, franja de turno, cabeza de la ficha, bloques plegables de Config */
.gsearch{position:relative;flex:1 1 170px;max-width:330px;min-width:150px}
.gsearch .inp{width:100%}
.gsres{position:absolute;top:100%;left:0;right:0;z-index:40;margin-top:4px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18);overflow:hidden;min-width:min(420px,92vw)}
.gsres .gsi{display:block;width:100%;text-align:left;padding:9px 12px;border:0;border-bottom:1px solid var(--line2);background:none;color:var(--tx);font:inherit;cursor:pointer}
.gsres .gsi:last-child{border-bottom:0}
.gsres button.gsi:hover,.gsres button.gsi:focus{background:var(--hover)}
.gsres .gsm{display:block;margin-top:3px}
.turno{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px;padding:10px 14px;border:1px solid var(--line);border-left:1px solid var(--ok);border-radius:10px;background:var(--card)}
.turno.sin{border-color:var(--warn)}
.turno .sp{flex:1}
.cabeza{margin:12px 0;padding:12px 16px;border:1px solid var(--line);border-left:1px solid var(--info);border-radius:12px;background:var(--card)}
.cabeza .fila{display:flex;gap:8px 14px;flex-wrap:wrap;align-items:center;margin:2px 0}
.cabeza .fila+.fila{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.cabeza.alerta{border-color:var(--dang)}
details.bloque{border:1px solid var(--line);border-radius:12px;background:var(--card);margin:0 0 12px;overflow:hidden}
details.bloque>summary{cursor:pointer;padding:12px 16px;font-weight:700;list-style:none;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
details.bloque>summary::-webkit-details-marker{display:none}
details.bloque>summary::before{content:"▸";color:var(--tx2);transition:transform .15s}
details.bloque[open]>summary::before{transform:rotate(90deg)}
details.bloque>.cuerpo{padding:0 4px 8px}
.kpic .var{font-size:12.5px;margin-top:2px}
.resumen-ciclo li{margin:2px 0}
@media(max-width:820px){.gsearch{flex:1 1 100%;max-width:none;order:5}}

/* ===== Panel del dueño (views/dueno.js) · solo variables del tema (claro y oscuro); sin colores sueltos ni franjas de color en los bordes ===== */
.dn-bar{display:flex;gap:var(--s2) var(--s3);flex-wrap:wrap;align-items:center;margin:0 0 var(--s4)}
.dn-bar .sp{flex:1}
.dn-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.dn-gen{font-size:12px;color:var(--tx2)}
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.dn-quien{font-size:13.5px;margin:0 0 var(--s3);color:var(--tx2)}
.dn-quien b{color:var(--tx)}
.dn-sec{margin:0 0 var(--s5)}
.dn-sh{display:flex;align-items:baseline;gap:var(--s1) var(--s3);flex-wrap:wrap;margin:0 0 var(--s3)}
.dn-sh h3{font-size:20px}
.dn-sh p{margin:0;font-size:13px;color:var(--tx2)}
.dn-pos{color:var(--ok)}.dn-neg{color:var(--dang)}
.dn-nota{margin:var(--s2) 0 0;font-size:12.5px;color:var(--tx2)}
.dn-pie{padding:var(--s2) 0;font-size:12px;color:var(--tx2);line-height:1.5}
.dn-n{background:none;border:none;color:var(--link);font:inherit;font-weight:700;cursor:pointer;padding:0;text-align:inherit}
.dn-n:hover{text-decoration:underline}
.dn-nl{text-align:left}

/* --- la franja: 5 cifras, misma altura, lectura en F --- */
.dn-franja{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--s3)}
.dn-kpi{position:relative;display:flex;flex-direction:column;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:var(--s3) 14px}
.dn-kpi.vacio{background:transparent;border-style:dashed;border-color:var(--inpline)}
.dn-kh{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s2);min-height:52px}
.dn-k{font-size:17px;line-height:1.2}
.dn-q{margin:3px 0 0;font-size:12.5px;color:var(--tx2)}
.dn-kb{flex:1;display:flex;flex-direction:column;gap:var(--s2);margin-top:var(--s3);min-width:0}
.dn-kb>*{min-width:0}
.dn-kpi .dn-n,.dn-emp .dn-n{font-family:var(--f-head);font-size:32px;font-weight:700;letter-spacing:-.02em;line-height:1.1;color:var(--tx);overflow-wrap:anywhere;cursor:default}
.dn-kpi .dn-n:hover,.dn-emp .dn-n:hover{text-decoration:none}
.dn-kpi .dn-n-chico{font-size:22px;color:var(--tx2)}
.dn-de{display:block;font-family:var(--f-body);font-size:12.5px;font-weight:600;letter-spacing:0;color:var(--tx2);margin-top:2px}
.dn-ctx{margin:0;font-size:13px}
.dn-ctx2{margin:0;font-size:12.5px;color:var(--tx2)}
.dn-ctx2 b,.dn-ctx b{color:var(--tx)}
.dn-kf{margin-top:var(--s3);padding-top:var(--s1);border-top:1px solid var(--line2);min-height:38px;display:flex;align-items:center}
.dn-go{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 var(--s1);margin-left:calc(var(--s1)*-1);background:none;border:none;border-radius:8px;color:var(--link);font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.dn-go:hover{text-decoration:underline}
.dn-vac{display:flex;gap:var(--s2);align-items:flex-start;color:var(--tx2);font-size:13px;line-height:1.4}
.dn-vac .ico{width:18px;height:18px;margin-top:1px}
.dn-vac b{display:block;color:var(--tx);font-size:13.5px}
.dn-vac span{display:block;margin-top:2px}
/* ícono «i» con tooltip accesible */
.dn-i{width:26px;height:26px;border-radius:50%;border:1px solid var(--inpline);background:var(--card);color:var(--tx2);font:700 12px/1 var(--f-body);cursor:help;flex:none;padding:0}
.dn-i:hover,.dn-i:focus-visible{border-color:var(--link);color:var(--link)}
.dn-tip{display:none;position:absolute;z-index:30;left:var(--s2);top:50px;width:260px;max-width:calc(100vw - 40px);padding:var(--s3);background:var(--card);color:var(--tx);border:1px solid var(--inpline);border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.18);font-size:12.5px;line-height:1.45}
.dn-tip b{display:block;margin-bottom:2px;font-size:13px}
.dn-tip span{display:block;margin-top:4px;color:var(--tx2)}
.dn-franja .dn-kpi:nth-child(n+4) .dn-tip{left:auto;right:var(--s2)}
.dn-info:hover .dn-tip,.dn-i:focus + .dn-tip{display:block}
/* gráficos */
.dn-spk{display:block;width:100%;height:32px;margin-top:auto}
.dn-spk path{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.dn-spk path.ok{stroke:var(--link)}
.dn-spk path.sim{stroke:var(--sim-b);stroke-dasharray:3 3}
.dn-simtag{font-size:12px;color:var(--tx2)}
.dn-bg{position:relative;display:flex;height:16px;border-radius:8px;overflow:hidden;margin-top:auto}
.dn-bg .b1{width:70%;background:var(--band1)}.dn-bg .b2{width:20%;background:var(--band2)}.dn-bg .b3{width:10%;background:var(--band3)}
.dn-bg .m{position:absolute;left:0;top:5px;height:6px;border-radius:3px;background:var(--measure)}
.dn-bg .t{position:absolute;top:1px;bottom:1px;width:3px;margin-left:-1px;border-radius:1px;background:var(--tick)}
.dn-bgx{position:relative;height:16px;font-size:12px;color:var(--tx2)}
.dn-bgx .mt{position:absolute;top:2px;transform:translateX(-100%);white-space:nowrap}
.dn-stk{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--band1);margin-top:auto}
.dn-stk span{display:block;height:100%;border-right:1px solid var(--card)}
.s0{background:var(--band3)}.s1{background:var(--c-warn)}.s2{background:var(--seg2)}.s3{background:var(--c-los)}
.dn-leg{list-style:none;margin:var(--s1) 0 0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:3px;font-size:12px}
.dn-leg li{display:flex;align-items:center;gap:6px;min-width:0}
.dn-leg .sw{flex:none;width:9px;height:9px;border-radius:2px}
.dn-leg .lb{flex:1;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dn-leg b{font-weight:700;color:var(--tx)}
.dn-fl{list-style:none;margin:var(--s1) 0 0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:5px;font-size:12.5px}
.dn-fl li{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px}
.dn-fl .lb{flex:1 1 auto;color:var(--tx2);white-space:nowrap}
.dn-fl b{flex:none;margin-left:auto;font-weight:700}
.dn-fl svg{color:var(--ok)}
.dn-fl li.mal svg{color:var(--warn)}.dn-fl li.mal b{color:var(--dang)}
.dn-con{font-weight:600;font-size:12px;color:var(--tx2)}
/* segundo nivel */
.dn-vigs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--s3)}
.dn-vig{display:grid;grid-template-columns:1fr auto;grid-template-areas:"k n" "s s";align-items:center;gap:2px var(--s2);text-align:left;padding:var(--s3);background:var(--card);border:1px solid var(--line);border-radius:12px;color:var(--tx);font:inherit;cursor:pointer;min-width:0}
.dn-vig:hover{background:var(--hover);border-color:var(--link)}
.dn-vig.on{border-color:var(--c-warn)}
.dn-vig .vk{grid-area:k;display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;line-height:1.25}
.dn-vig .vk svg{color:var(--tx2)}.dn-vig.on .vk svg{color:var(--warn)}
.dn-vig .vn{grid-area:n;font-family:var(--f-head);font-size:26px;font-weight:700;line-height:1}
.dn-vig .vs{grid-area:s;font-size:12px;color:var(--tx2);line-height:1.35}
/* decisiones */
.dn-decs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}
.dn-dec{display:flex;flex-direction:column;gap:var(--s3);padding:var(--s4);background:var(--card);border:1px solid var(--line);border-radius:16px;min-width:0}
.dn-dec.crit{border-color:var(--c-los)}
.dn-dec>header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}
.dn-dec h4{font-size:17px;line-height:1.25;flex:1 1 220px}
.dn-dec dl{margin:0;display:grid;gap:var(--s2)}
.dn-dec dl>div{display:grid;grid-template-columns:92px minmax(0,1fr);gap:var(--s2)}
.dn-dec dt{font-size:12.5px;font-weight:700;color:var(--tx2)}
.dn-dec dd{margin:0;font-size:13.5px;overflow-wrap:anywhere}
.dn-dec>footer{margin-top:auto;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3)}
.dn-corte{font-size:12px;color:var(--tx2)}
.dn-dec.ok{grid-column:1/-1}
.dn-ne{margin:var(--s2) 0 0;font-size:12.5px;color:var(--tx2)}
.dn-ne ul{margin:6px 0 0;padding-left:18px}
/* empresas */
.dn-emps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s3)}
.e-sj{--ec:var(--emp-sj)}.e-cm{--ec:var(--emp-cm)}.e-cma{--ec:var(--emp-cma)}
.dn-dot{display:inline-block;flex:none;width:12px;height:12px;border-radius:50%;background:var(--ec,var(--tx3))}
.dn-emp{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s4);background:var(--card);border:1px solid var(--line);border-radius:16px;min-width:0}
.dn-emp.on{border-color:var(--ec);box-shadow:inset 0 0 0 1px var(--ec)}
.dn-emp.tot{background:var(--surf2)}
.dn-emp>header{display:flex;align-items:center;gap:var(--s2);min-height:42px}
.dn-emp h4{font-size:17px}
.dn-emp>header p{margin:0;font-size:12px;color:var(--tx2);line-height:1.3}
.dn-emp .dn-n{font-size:30px}
.dn-mini{height:6px;border-radius:3px;background:var(--band1);overflow:hidden}
.dn-mini span{display:block;height:100%;background:var(--ec,var(--measure))}
.dn-mini.vacio{background:transparent}
.dn-emp dl{margin:var(--s1) 0 var(--s2);display:grid;gap:5px;font-size:13px}
.dn-er{display:flex;justify-content:space-between;gap:var(--s2)}
.dn-er dt{color:var(--tx2)}
.dn-er dd{margin:0;font-weight:700;text-align:right}
.dn-emp>.btn{margin-top:auto;justify-content:center}
/* sedes */
.dn-leyenda{list-style:none;display:flex;gap:var(--s4);margin:0 0 var(--s2);padding:0;font-size:12.5px;color:var(--tx2)}
.dn-leyenda li{display:flex;align-items:center;gap:6px}
.dn-sedes{list-style:none;margin:0;display:grid;gap:var(--s1);background:var(--card);border:1px solid var(--line);border-radius:16px;padding:var(--s2)}
.dn-sede{display:grid;grid-template-columns:minmax(150px,210px) minmax(0,1fr) 92px;gap:var(--s3);align-items:center;width:100%;text-align:left;padding:var(--s2) var(--s3);border:1px solid transparent;border-radius:10px;background:none;color:var(--tx);font:inherit;cursor:pointer}
.dn-sede:hover{background:var(--hover)}
.dn-sede.on{border-color:var(--link);background:var(--hover)}
.dn-sede .nm{display:flex;flex-direction:column;min-width:0}
.dn-sede .nm b{line-height:1.25}
.dn-sede .dt{font-size:12px;color:var(--tx2);line-height:1.3}
.dn-sede .bar{display:flex;height:14px;border-radius:7px;background:var(--band1);overflow:hidden}
.dn-sede .sg{display:block;height:100%;background:var(--ec);border-right:1px solid var(--card)}
.dn-sede .tt{display:flex;flex-direction:column;align-items:flex-end;font-size:15px}
.dn-sede .tt>b{font-weight:800}
.dn-sede .vr{font-size:12px;color:var(--tx2);white-space:nowrap}
/* detalle en pestañas */
.dn-det .tabs{margin-bottom:var(--s3)}
.dn-pad{padding:var(--s4)}
.dn-pad .dn-pie{padding:var(--s2) 0 0}
.panel>.dn-pie{padding:var(--s2) var(--s4) var(--s3)}
.dn-gap{margin-top:var(--s3)}
.dn-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--s3)}
.dn-cfs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--s2)}
.dn-cf{display:flex;flex-direction:column;gap:2px;text-align:left;background:var(--surf2);border:1px solid var(--line);border-radius:12px;padding:var(--s3);cursor:pointer;color:var(--tx);font:inherit}
.dn-cf:hover{border-color:var(--link)}
.dn-cf .l{font-size:12px;color:var(--tx2);font-weight:600}
.dn-cf .v{font-family:var(--f-head);font-size:22px;font-weight:700;letter-spacing:-.01em}
.dn-h4{font-size:14px;margin:var(--s4) 0 var(--s2)}
.dn-antg{display:grid;gap:var(--s2)}
.dn-ant{display:grid;grid-template-columns:110px 1fr auto;gap:var(--s3);align-items:center;font-size:13px}
.dn-ab{display:block;height:12px;background:var(--band1);border-radius:6px;overflow:hidden}
.dn-ab span{display:block;height:100%;border-radius:6px}
.dn-ab .a1{background:var(--c-warn)}.dn-ab .a2{background:var(--seg2)}.dn-ab .a3{background:var(--c-los)}
.dn-bm{display:block;height:6px;background:var(--band1);border-radius:3px;margin-top:4px;overflow:hidden}
.dn-bm span{display:block;height:100%;background:var(--c-ok);border-radius:3px}
.dn-sub{margin:0 0 var(--s2)}
tr.dn-tot td{background:var(--line2)}
.dn-sts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--s2);margin:0 0 6px}
.dn-st{border:1px solid var(--line);border-radius:10px;padding:var(--s2) var(--s3);background:var(--card)}
.dn-st b{display:block;font-family:var(--f-head);font-size:24px;font-weight:700;line-height:1.15}
.dn-st span{font-size:12px;color:var(--tx2)}
.dn-st.dang b{color:var(--dang)}.dn-st.warn b{color:var(--warn)}.dn-st.ok b{color:var(--ok)}
.dn-enl{margin:var(--s3) 0 0;font-size:13px}
details.dn-ref{margin-top:var(--s2)}
@media(max-width:1239px){
  .dn-franja{grid-template-columns:repeat(6,minmax(0,1fr))}
  .dn-franja .dn-kpi{grid-column:span 2}
  .dn-franja .dn-kpi:nth-child(4),.dn-franja .dn-kpi:nth-child(5){grid-column:span 3}
  .dn-franja .dn-kpi:nth-child(3) .dn-tip,.dn-franja .dn-kpi:nth-child(5) .dn-tip{left:auto;right:var(--s2)}
  .dn-franja .dn-kpi:nth-child(4) .dn-tip{left:var(--s2);right:auto}
  .dn-vigs{grid-template-columns:repeat(3,minmax(0,1fr))}
  .dn-emps{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:899px){
  .dn-franja{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dn-franja .dn-kpi,.dn-franja .dn-kpi:nth-child(4),.dn-franja .dn-kpi:nth-child(5){grid-column:auto}
  .dn-franja .dn-kpi:nth-child(odd) .dn-tip{left:var(--s2);right:auto}
  .dn-franja .dn-kpi:nth-child(even) .dn-tip{left:auto;right:var(--s2)}
  .dn-franja .dn-kpi:nth-child(5){grid-column:1/-1}
  .dn-decs{grid-template-columns:1fr}
  .dn-vigs{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:599px){
  .dn-franja,.dn-vigs,.dn-emps{grid-template-columns:1fr}
  .dn-franja .dn-kpi .dn-tip{left:var(--s2)!important;right:var(--s2)!important;width:auto}
  .dn-kpi .dn-n,.dn-emp .dn-n{font-size:32px}
  .dn-kh{min-height:0}
  .dn-kpi.vacio{order:1}
  .dn-sede{grid-template-columns:minmax(0,1fr) 84px;grid-template-areas:"nm tt" "bar bar"}
  .dn-sede .nm{grid-area:nm}.dn-sede .tt{grid-area:tt}.dn-sede .bar{grid-area:bar}
  .dn-dec dl>div{grid-template-columns:1fr;gap:2px}
  .dn-ant{grid-template-columns:90px 1fr auto}
  .dn-pad{padding:var(--s3)}
  .dn-cols{grid-template-columns:1fr}
}

/* ===== Ronda 9: Cobro en 3 pasos, Mis tickets, flujos de gerencia, ayuda, esqueletos e impresión =====
   Solo variables del tema (claro/oscuro); los pares de color son los ya auditados (tools/auditoria_contraste.js). Zonas táctiles ≥ 48 px; botón principal 56 px. */
.sr,.sr-input{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* esqueletos de carga */
.sk{padding:var(--s2) 0}
.sk-t,.sk-b{border-radius:8px;background:linear-gradient(90deg,var(--line2) 0%,var(--line) 50%,var(--line2) 100%);background-size:220% 100%;animation:sk-brillo 1.3s linear infinite}
.sk-t{height:22px;width:38%;margin-bottom:var(--s4)}
.sk-b{height:14px;margin-bottom:var(--s3)}
@keyframes sk-brillo{0%{background-position:120% 0}100%{background-position:-120% 0}}
.loading{position:relative}
.loading::after{content:"";display:block;height:10px;width:min(280px,60%);margin:12px auto 0;border-radius:6px;background:linear-gradient(90deg,var(--line2),var(--line),var(--line2));background-size:220% 100%;animation:sk-brillo 1.3s linear infinite}
@media (prefers-reduced-motion:reduce){.sk-t,.sk-b,.loading::after{animation:none}}
/* ayuda de una línea */
.ayuda-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--inpline);background:var(--card);color:var(--tx2);border-radius:999px;padding:4px 11px 4px 5px;font-size:12.5px;font-weight:600;cursor:pointer}
.ayuda-btn:hover{border-color:var(--link);color:var(--link)}
.ayuda-btn .q{width:20px;height:20px;border-radius:50%;background:var(--chipon-bg);color:var(--chipon-fg);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}
.ayuda-band{margin:0 0 var(--s3);padding:10px 14px;background:var(--infobg);color:var(--tx);border:1px solid var(--line);border-left:1px solid var(--info);border-radius:10px;font-size:13.5px;line-height:1.45}
@media(max-width:1499px){.ayuda-btn .t{display:none}.ayuda-btn{padding:4px}}
/* pasos numerados (cobrar, cortes del día, ticket del técnico) */
.cb-pasos,.gp-pasos,.tk-pasos{list-style:none;margin:0 0 var(--s4);padding:0;display:flex;gap:var(--s2);flex-wrap:wrap}
.cb-pasos li,.gp-pasos li,.tk-pasos li{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:999px;background:var(--graybg);color:var(--tx2);font-weight:700;font-size:13.5px}
.cb-pasos .n,.gp-pasos .n,.tk-pasos .n{width:26px;height:26px;border-radius:50%;background:var(--card);color:var(--tx);display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex:none}
.cb-pasos li.on,.gp-pasos li.on,.tk-pasos li.on{background:var(--chipon-bg);color:var(--chipon-fg)}
.cb-pasos li.ok,.gp-pasos li.ok,.tk-pasos li.ok{background:var(--okbg);color:var(--ok)}
.gp-pasos small{display:block;font-weight:600;font-size:12px;opacity:.9}
.tk-pasos{flex-wrap:nowrap;overflow-x:auto;gap:6px;padding-bottom:2px}
.tk-pasos li{padding:5px 10px 5px 5px;font-size:12.5px;white-space:nowrap}
/* tarjeta y campos grandes */
.cb-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4) var(--s5);margin-bottom:var(--s3)}
.cb-card h2{font-size:20px}.cb-card h3{font-size:16px;margin-bottom:var(--s2)}
.cb-lbl{display:block;font-weight:700;margin-bottom:var(--s2);font-size:15px}
.cb-in{min-height:48px;font-size:16px;width:100%}
.cb-monto{font-family:var(--f-head);font-size:28px;font-weight:700;text-align:right;padding-right:34px}
.field:has(.cb-monto){position:relative}
.cb-un{position:absolute;right:14px;bottom:11px;font-size:22px;font-weight:700;color:var(--tx3);pointer-events:none}
.cb-big{min-height:56px;font-size:16px;padding:0 var(--s5);justify-content:center}
.cb-vacio{padding:var(--s5) var(--s3)}
.cb-rec{margin-top:var(--s3)}.cb-rec h3{font-size:13px;color:var(--tx2);margin-bottom:var(--s2)}
/* franja de turno */
.cb-turno{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 var(--s3);padding:10px 14px;border:1px solid var(--line);border-left:1px solid var(--ok);border-radius:10px;background:var(--card);position:sticky;top:var(--tbh,64px);z-index:4}
.cb-turno.sin{border-color:var(--warn)}
.cb-turno .sp{flex:1}
.cb-esp{color:var(--tx)}
.cb-pc{margin:0 0 var(--s3);padding:var(--s3) var(--s4);border:1px solid var(--line);border-radius:12px;background:var(--surf2)}
.cb-pc h3{font-size:15px;margin-bottom:var(--s2)}
.cb-pc ul{list-style:none;margin:0;padding:0}
.cb-pc li{display:flex;gap:var(--s3);justify-content:space-between;align-items:center;flex-wrap:wrap;padding:8px 0;border-bottom:1px dashed var(--line)}
.cb-pc li:last-child{border-bottom:0}
.cb-pcr{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
/* resultados de la búsqueda */
.cb-cli{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin-bottom:var(--s3);overflow:hidden}
.cb-clih{padding:var(--s3) var(--s4);background:var(--surf2);border-bottom:1px solid var(--line2)}
.cb-op{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;width:100%;min-height:56px;padding:var(--s3) var(--s4);border:0;border-bottom:1px solid var(--line2);background:none;color:var(--tx);font:inherit;text-align:left;cursor:pointer}
.cb-op:last-child{border-bottom:0}
.cb-op:hover,.cb-op:focus{background:var(--hover)}
.cb-deb{margin-left:auto}
/* deuda */
.cb-cab{display:flex;gap:var(--s3);align-items:flex-start;margin-bottom:var(--s3)}
.cb-herm{display:flex;gap:var(--s2);flex-wrap:wrap;margin:0 0 var(--s3)}
.cb-est{margin:0 0 var(--s3)}
.cb-trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3);margin:0 0 var(--s3)}
.cb-cifra{border:1px solid var(--line);border-radius:12px;padding:var(--s3) var(--s4);background:var(--surf2);display:flex;flex-direction:column;gap:2px}
.cb-cifra .l{font-size:12.5px;color:var(--tx2);font-weight:600}
.cb-cifra b{font-family:var(--f-head);font-size:26px;letter-spacing:-.02em}
.cb-cifra .s{font-size:12px;color:var(--tx2)}
.cb-cifra.on{background:var(--warnbg);border-color:var(--ambline)}.cb-cifra.on .l,.cb-cifra.on b,.cb-cifra.on .s{color:var(--warn)}
.cb-fac{list-style:none;margin:0 0 var(--s3);padding:0}
.cb-fac li{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;padding:8px 0;border-bottom:1px dashed var(--line)}
.cb-fac li b{margin-left:auto}
.cb-linea{margin:var(--s2) 0;display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
.cb-pie{margin-top:var(--s3)}
.cb-barra{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;margin-top:var(--s4)}
.cb-barra.cb-fija{position:sticky;bottom:0;z-index:3;margin:var(--s4) calc(var(--s5)*-1) calc(var(--s4)*-1);padding:var(--s3) var(--s5);background:var(--card);border-top:1px solid var(--line);border-radius:0 0 var(--r) var(--r)}
.cb-aviso{color:var(--tx2);flex:1;min-width:140px}
.cb-atajo{margin-left:auto}
/* cobrar */
.cb-metodos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2);margin:0 0 var(--s4)}
.cb-met{min-height:56px;border:2px solid var(--inpline);border-radius:12px;background:var(--card);color:var(--tx);font-weight:700;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}
.cb-met .k{width:22px;height:22px;border-radius:6px;background:var(--graybg);color:var(--tx2);font-size:12px;display:inline-flex;align-items:center;justify-content:center}
.cb-met.on{background:var(--chipon-bg);color:var(--chipon-fg);border-color:var(--chipon-bg)}
.cb-met.on .k{background:var(--card);color:var(--tx)}
.cb-met[disabled]{opacity:.5;cursor:not-allowed}
.cb-fila{margin-bottom:var(--s3)}
.cb-dato{padding:var(--s3) var(--s4);background:var(--surf2);border:1px solid var(--line);border-radius:10px}
.cb-dato .l{display:block;font-size:12.5px;color:var(--tx2);font-weight:600}
.cb-vuelto{min-height:24px;font-size:15px}
.cb-teclado{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2);margin:0 0 var(--s4)}
.cb-key{min-height:64px;border:1px solid var(--inpline);border-radius:12px;background:var(--card);color:var(--tx);font:700 24px var(--f-head);cursor:pointer}
.cb-key:active{background:var(--hover);transform:scale(.97)}
.cb-alerta{display:flex;gap:var(--s3);align-items:flex-start;margin:var(--s3) 0;padding:var(--s3) var(--s4);border-radius:10px;font-size:14px;border:1px solid var(--line)}
.cb-alerta .ico{flex:none;margin-top:2px}
.cb-alerta.warn{background:var(--warnbg);color:var(--warn);border-color:var(--ambline)}
.cb-alerta.dang{background:var(--dangbg);color:var(--dang);border-color:var(--errline)}
.cb-alerta.info{background:var(--infobg);color:var(--info)}
.cb-alerta.ok{background:var(--okbg);color:var(--ok)}
.cb-alerta .link{color:inherit;text-decoration:underline}
.cb-alerta .btn.g{background:var(--card);color:var(--tx)}
.cb-hecho{display:flex;gap:var(--s4);align-items:center;margin-bottom:var(--s3)}
.cb-chulo{flex:none;width:52px;height:52px;border-radius:50%;background:var(--okbg);color:var(--ok);display:inline-flex;align-items:center;justify-content:center}
.cb-chulo .ico{width:30px;height:30px;stroke-width:2.4}
.cb-tam{display:inline-flex;gap:var(--s2);align-items:center}
.cb-tamfila{margin-top:var(--s3)}
.cb-h4{font-size:14px;margin:var(--s4) 0 var(--s2);color:var(--tx2)}
/* arqueo */
.cb-den{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s2);margin-bottom:var(--s3)}
.cb-d{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;color:var(--tx2)}
.cb-d .inp{min-height:44px;font-size:16px;text-align:right}
.cb-cuenta{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.cb-cuenta>div{display:flex;justify-content:space-between;padding:8px var(--s4);border-bottom:1px solid var(--line2)}
.cb-cuenta>div:last-child{border-bottom:0}
.cb-cuenta .tot{background:var(--surf2);font-weight:800}
.cb-dif{display:grid;gap:var(--s2);margin:var(--s3) 0}
.cb-dif>div{display:flex;justify-content:space-between;align-items:center;padding:10px var(--s4);border-radius:10px;background:var(--surf2);border:1px solid var(--line)}
.cb-dif b{display:inline-flex;gap:6px;align-items:center}
.cb-dif .ok{background:var(--okbg);color:var(--ok);border-color:var(--line)}
.cb-dif .dang{background:var(--dangbg);color:var(--dang);border-color:var(--errline)}
.cb-dif .warn{background:var(--warnbg);color:var(--warn);border-color:var(--ambline)}
@media(max-width:599px){
  .cb-card{padding:var(--s3)}
  .cb-trio{grid-template-columns:1fr}
  .cb-cifra{flex-direction:row;align-items:baseline;justify-content:space-between}
  .cb-den{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cb-barra .btn.cb-big{flex:1 1 100%}
  .cb-barra.cb-fija{margin:var(--s3) calc(var(--s3)*-1) calc(var(--s3)*-1);padding:var(--s3);padding-bottom:calc(var(--s3) + env(safe-area-inset-bottom))}
  .cb-atajo{display:none}
  .cb-turno{padding:8px 10px;gap:6px}
  .cb-metodos{gap:6px}.cb-met{font-size:13.5px}.cb-met .k{display:none}
}
/* Mis tickets */
.field label.btn{display:flex;color:var(--tx);font-size:17px;margin-bottom:var(--s2)}
.tk-app{max-width:640px;margin:0 auto}
.tk-banda{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;margin:0 0 var(--s3);padding:10px 14px;border-radius:10px;font-size:13.5px}
.tk-banda span{flex:1;min-width:160px}
.tk-banda.off{background:var(--warnbg);color:var(--warn)}.tk-banda.pen{background:var(--infobg);color:var(--info)}.tk-banda.err{background:var(--dangbg);color:var(--dang)}
.tk-banda .btn.g{background:var(--card);color:var(--tx)}
.tk-cab{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);margin:0 0 var(--s3)}
.tk-cab h2{font-size:18px}
.tk-lista{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.tk-it{display:flex;gap:var(--s3);align-items:center;width:100%;min-height:64px;padding:var(--s3) var(--s4);border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--tx);font:inherit;text-align:left;cursor:pointer}
.tk-it.on{border-color:var(--link);border-width:2px}
.tk-it .n{flex:none;width:30px;height:30px;border-radius:50%;background:var(--graybg);color:var(--tx);display:inline-flex;align-items:center;justify-content:center;font-weight:800}
.tk-it .b{display:flex;flex-direction:column;gap:2px;min-width:0}
.tk-it .t{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
.tk-ticket{display:flex;flex-direction:column;gap:var(--s3)}
.tk-top{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap}
.tk-id{display:flex;flex-direction:column;gap:4px;align-items:flex-start;min-width:0}
.tk-dato{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4)}
.tk-dato h3{font-size:19px}
.tk-fila{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;margin-top:var(--s2);font-size:14px}
.tk-fila .ico{flex:none;color:var(--tx2)}
.tk-ayuda{padding:var(--s3) var(--s4);background:var(--surf2);border:1px solid var(--line);border-radius:10px;font-size:14px}
.tk-aviso{padding:10px var(--s4);background:var(--warnbg);color:var(--warn);border-radius:10px;font-size:13.5px;margin:var(--s3) 0}
.tk-barra{position:sticky;bottom:0;z-index:3;display:flex;gap:var(--s3);padding:var(--s3) 0 calc(var(--s3) + env(safe-area-inset-bottom));background:var(--bg)}
.tk-barra.dos .tk-gran{flex:1}
.tk-form .tk-barra,.tk-listo .tk-barra{background:var(--card)}
.tk-gran{min-height:56px;width:100%;font-size:17px;justify-content:center;border-radius:14px}
.tk-form{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4)}
.tk-form h3{font-size:17px;margin-bottom:var(--s3)}
.tk-fotoBtn{cursor:pointer;margin-bottom:var(--s2)}
.tk-fotos{display:grid;gap:var(--s2);margin-bottom:var(--s2)}
.tk-foto{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap}
.tk-foto canvas{border-radius:8px;border:1px solid var(--line);max-width:96px;height:auto}
.tk-chk{display:flex;gap:var(--s2);align-items:center;font-size:13.5px;margin:var(--s2) 0;min-height:44px}
.tk-chk input{width:22px;height:22px}
.tk-mat{display:flex;gap:var(--s2);flex-wrap:wrap;margin:var(--s3) 0}
.tk-mat .inp:first-child{flex:1 1 180px}.tk-mat .inp:nth-child(2){flex:0 0 76px;text-align:right}
.tk-mats{list-style:none;margin:0 0 var(--s3);padding:0}
.tk-mats li{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding:8px 0;border-bottom:1px dashed var(--line)}
.tk-cola{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:13px}
.tk-cola li{padding:8px 12px;border-radius:10px;background:var(--infobg);color:var(--info)}
.tk-cola li.error{background:var(--dangbg);color:var(--dang)}.tk-cola li.enviado{background:var(--okbg);color:var(--ok)}
.tk-cola .btn.g{background:var(--card);color:var(--tx)}
.tk-listo{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4)}
.tk-ev{list-style:none;margin:var(--s3) 0;padding:0;font-size:13px;display:grid;gap:4px}
body.rol-tecnico .sedesel,body.rol-tecnico .gsearch,body.en-cobrar .gsearch{display:none!important}
@media(max-width:599px){.tk-pasos li:not(.on) .p{display:none}.tk-pasos li:not(.on){padding-right:5px}.tk-app{max-width:none}.tk-dato{padding:var(--s3)}.tk-form{padding:var(--s3)}}
/* Cortes del día y Cierre de mes */
.gp-card{padding-bottom:var(--s4)}
.gp-res{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3);margin:0 0 var(--s3)}
.gp-res>div{border:1px solid var(--line);border-radius:12px;padding:var(--s3) var(--s4);background:var(--surf2);display:flex;flex-direction:column;gap:2px}
.gp-res .l{font-size:12.5px;color:var(--tx2);font-weight:600}.gp-res b{font-family:var(--f-head);font-size:24px}.gp-res .s{font-size:12.5px;color:var(--tx2)}
.gp-lista{list-style:none;margin:0 0 var(--s3);padding:0;border:1px solid var(--line);border-radius:12px;max-height:46vh;overflow-y:auto}
.gp-lista li{display:flex;gap:var(--s3);align-items:center;padding:10px var(--s4);border-bottom:1px solid var(--line2)}
.gp-lista li:last-child{border-bottom:0}.gp-lista li.fuera{opacity:.55}
.gp-c{display:flex;flex-direction:column;flex:1;min-width:0}
.gp-chk{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:-8px -6px -8px -10px;cursor:pointer}
.gp-chk input{width:22px;height:22px}
.ci-per{display:flex;gap:var(--s4);align-items:flex-end;flex-wrap:wrap;margin-bottom:var(--s3)}
.ci-per .field{max-width:220px;margin:0}
.ci-pasos{list-style:none;margin:0;padding:0;display:grid;gap:var(--s3)}
.ci-pasos>li{display:flex;gap:var(--s4);padding:var(--s4);border:1px solid var(--line);border-radius:12px;background:var(--card)}
.ci-pasos>li.on{border-color:var(--link);border-width:2px;padding:calc(var(--s4) - 1px)}
.ci-pasos>li.ok{background:var(--surf2)}
.ci-pasos>li.err{border-color:var(--errline)}
.ci-n .n{width:34px;height:34px;border-radius:50%;background:var(--graybg);color:var(--tx);display:inline-flex;align-items:center;justify-content:center;font-weight:800}
.ci-pasos>li.on .n{background:var(--chipon-bg);color:var(--chipon-fg)}.ci-pasos>li.ok .n{background:var(--okbg);color:var(--ok)}.ci-pasos>li.err .n{background:var(--dangbg);color:var(--dang)}
.ci-b{flex:1;min-width:0}
.ci-h{display:flex;gap:var(--s3);align-items:center;justify-content:space-between;flex-wrap:wrap}
.ci-msg{margin:var(--s2) 0;font-size:13.5px}
.ci-ul{margin:4px 0;padding-left:18px;list-style:disc;font-size:13.5px}.ci-ul li{margin:2px 0}
.ci-b .acc{margin-top:var(--s3)}
@media(max-width:599px){.gp-res{grid-template-columns:1fr}.ci-pasos>li{padding:var(--s3);gap:var(--s3)}.gp-lista li{flex-wrap:wrap}}
/* Soporte: filtros rápidos, crear ticket desde la ficha, cierre con evidencia */
.fl-chips{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;margin:0 0 var(--s2)}
.fl-chips .fl-t{font-size:12px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.05em;margin-right:4px}
.fl-chips .chip{min-height:34px}
.sug-cat{margin:var(--s2) 0 var(--s3)}
/* Red: enlaces arriba, umbrales y brecha */
.rd-enl{margin:0 0 var(--s3)}
.rd-enl .rd-fila{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;padding:8px 0;border-bottom:1px dashed var(--line)}
.rd-enl .rd-fila:last-child{border-bottom:0}
.rd-umb{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}
.rd-umb .rec{border:1px dashed var(--inpline);border-radius:10px;padding:var(--s3) var(--s4);background:var(--surf2)}
.rd-brecha{list-style:none;margin:0;padding:0}
.rd-brecha li{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;padding:10px 0;border-bottom:1px dashed var(--line)}
.rd-brecha li:last-child{border-bottom:0}
.rd-brecha .barra{flex:1 1 140px;height:10px;border-radius:6px;background:var(--graybg);overflow:hidden}
.rd-brecha .barra i{display:block;height:100%;background:var(--measure)}
@media(max-width:599px){.rd-umb{grid-template-columns:1fr}}

/* ===== Impresión: ticket térmico de 58/80 mm (recibo y cierre de caja) con window.print() ===== */
#imprimir{display:none}
.rc{font-family:'Courier New',ui-monospace,monospace;font-size:11.5px;line-height:1.35;color:#000;background:#fff;padding:0}
.rc-c{text-align:center;margin:3px 0}.rc-t{font-size:14px;font-weight:700;letter-spacing:.04em}
.rc-sim{font-weight:700;border:1.5px solid #000;padding:2px 4px;margin:4px 0}
.rc-l{display:flex;justify-content:space-between;gap:6px}.rc-l span:last-child{text-align:right;overflow-wrap:anywhere}
.rc-tot{display:flex;justify-content:space-between;font-size:16px;font-weight:700;border-top:1.5px solid #000;border-bottom:1.5px solid #000;margin:6px 0;padding:3px 0}
.rc-est{font-weight:700;border:1px solid #000;padding:3px;margin:5px 0}
.rc-firma{margin-top:22px;border-top:1px solid #000;text-align:center;font-size:10.5px;padding-top:2px}
.rc hr{border:0;border-top:1px dashed #000;margin:5px 0}
.rc .small{font-size:10px}
@page t58{size:58mm auto;margin:3mm}
@page t80{size:80mm auto;margin:4mm}
@media print{
  html,body{height:auto!important;overflow:visible!important;background:#fff!important;color:#000!important}
  body>*:not(#imprimir){display:none!important}
  #imprimir{display:block!important}
  #imprimir.imp-58{page:t58;width:52mm}
  #imprimir.imp-80{page:t80;width:72mm}
  #imprimir *{color:#000!important;background:transparent!important;box-shadow:none!important}
}

/* ===== Finanzas del dueño (static/finanzas.html + views/finanzas*.js) · espacio aparte del panel.
   Solo variables del tema (claro y oscuro); los pares de color nuevos están en tools/auditoria_contraste.js. Sin colores sueltos. ===== */
.fz-lh{display:flex;align-items:center;justify-content:center;gap:var(--s2)}
.fz-lh .ico{width:22px;height:22px;flex:none}
.fz-candado{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:5px 11px;border-radius:999px;background:var(--surf2);color:var(--tx);border:1px solid var(--tx3)}
.fz-candado .ico{width:14px;height:14px}
.fz-bloq .ico{width:14px;height:14px}
.fz-emp{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.field label.fz-chk,.fz-chk{display:flex;align-items:flex-start;gap:var(--s2);font-size:13.5px;font-weight:600;color:var(--tx);cursor:pointer;margin:0}
.fz-chk input{flex:none;width:18px;height:18px;margin:2px 0 0}
.fz-chkh{margin:2px 0 0 26px}
.fz-chk-inline{align-items:center}
.fz-lbl{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.05em}
.fz-lbl select{text-transform:none;letter-spacing:0;color:var(--tx);font-weight:600;max-width:220px}
.fz-h{font-size:17px;margin:var(--s5) 0 var(--s2);display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
.fz-h:first-child{margin-top:0}
.fz-acc{display:flex;gap:var(--s2);flex-wrap:wrap;justify-content:flex-end}
.acc .muted.small{align-self:center}
.fz-paso{margin-bottom:var(--s3)}
.fz-paso h3{font-size:16px;display:flex;align-items:center;gap:var(--s2);margin:0 0 var(--s3)}
.fz-paso .n{display:inline-flex;align-items:center;justify-content:center;flex:none;width:26px;height:26px;border-radius:50%;background:var(--chipon-bg);color:var(--chipon-fg);font-size:13px}
.fz-prev{margin-top:var(--s3)}
.fz-res{margin-top:var(--s4)}
.fz-res h3{margin-bottom:var(--s3)}
.dn-kpi .dn-n.fz-est{display:inline-flex;align-items:center;gap:var(--s2);font-size:30px}
.fz-est .ico{width:26px;height:26px;flex:none}
.dn-kpi .dn-n.fz-est.ok{color:var(--ok)}.dn-kpi .dn-n.fz-est.warn{color:var(--warn)}.dn-kpi .dn-n.fz-est.muted{color:var(--tx2)}
.dn-kpi .dn-n.dn-neg{color:var(--dang)}.dn-kpi .dn-n.dn-pos{color:var(--ok)}
tr.fz-sub td{background:var(--surf2);color:var(--tx)}
tr.fz-tot td{background:var(--line2);border-top:2px solid var(--line);color:var(--tx)}
.fz-hb{list-style:none;margin:0 0 var(--s2);padding:0;display:grid;gap:var(--s2)}
.fz-hb li{display:grid;grid-template-columns:minmax(120px,260px) minmax(0,1fr) minmax(140px,auto);gap:var(--s3);align-items:center;font-size:13.5px}
.fz-hb .tr{display:block;height:14px;border-radius:7px;background:var(--band1);overflow:hidden}
.fz-hb .f{display:block;height:100%;border-radius:7px;background:var(--measure)}
.fz-hb .vl{text-align:right;white-space:nowrap}
.fz-grafico{display:flex;gap:var(--s3);align-items:stretch}
.fz-eje{display:flex;flex-direction:column;justify-content:space-between;min-width:64px;font-size:12px;color:var(--tx2);text-align:right}
.fz-ch{position:relative;flex:1;min-width:0;height:190px;background:var(--surf2);border:1px solid var(--line);border-radius:12px}
.fz-ch svg{display:block;width:100%;height:100%}
.fz-ch path{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.fz-ch path.b{stroke:var(--link)}
.fz-ch path.p{stroke:var(--c-warn);stroke-dasharray:5 4}
.fz-pin{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--dang);border:2px solid var(--card)}
.fz-ejex{display:flex;justify-content:space-between;margin:var(--s1) 0 var(--s3) 76px;font-size:12px;color:var(--tx2)}
.fz-sw{display:inline-block;width:18px;height:0;border-top:3px solid var(--link);vertical-align:middle}
.fz-sw.p{border-top-style:dashed;border-color:var(--c-warn)}
.fz-sw.pin{width:10px;height:10px;border:0;border-radius:50%;background:var(--dang)}
.fz-rep{list-style:none;margin:0 0 var(--s3);padding:0;display:grid;gap:var(--s3)}
.fz-repi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:var(--s4)}
.fz-repi header{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;margin-bottom:var(--s2)}
.fz-repi dl{margin:0;display:grid;gap:var(--s2)}
.fz-repi dl>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:var(--s2)}
.fz-repi dt{font-size:12.5px;font-weight:700;color:var(--tx2)}
.fz-repi dd{margin:0;overflow-wrap:anywhere}
.fz-repi footer{margin-top:var(--s3);display:flex;gap:var(--s2);flex-wrap:wrap}
.fz-rep-f{margin:var(--s3) 0}
.fz-movs{list-style:none;margin:0 0 var(--s3);padding:0;display:grid;gap:var(--s3)}
.fz-mov{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:var(--s3) var(--s4)}
.fz-mov-h{display:flex;gap:var(--s3);align-items:flex-start}
.fz-sel{padding-top:2px}.fz-sel input{width:20px;height:20px}
.fz-mov-t{flex:1;min-width:0;overflow-wrap:anywhere}
.fz-mov-m{text-align:right;white-space:nowrap}
.fz-mov-f{margin-top:var(--s3);padding-top:var(--s3);border-top:1px dashed var(--line)}
.fz-sug{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:var(--s2);font-size:13px}
.fz-sug .ico{color:var(--ok)}
.fz-mov-a{display:flex;gap:var(--s3);align-items:flex-end;flex-wrap:wrap}
.fz-mov-a .field{margin:0;flex:1 1 180px}
.fz-mov-a .fz-acc{flex:2 1 260px;justify-content:flex-start}
.fz-hecho{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;font-size:13.5px}
.fz-hecho .ico{color:var(--ok)}
.fz-masiva{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;padding:var(--s3);margin-bottom:var(--s3);background:var(--stage-now);color:var(--tx);border:1px solid var(--line);border-radius:12px}
.fz-masiva select{max-width:260px}
.fz-trf{list-style:none;margin:0 0 var(--s4);padding:0;display:grid;gap:var(--s2)}
.fz-trf li{display:flex;gap:var(--s3);justify-content:space-between;align-items:center;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:var(--s3) var(--s4)}
.fz-ligar{list-style:none;margin:0;padding:0;display:grid;gap:var(--s1)}
.fz-lg{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s2);width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:var(--s2) var(--s3);color:var(--tx);font:inherit;cursor:pointer}
.fz-lg:hover{background:var(--hover);border-color:var(--link)}
.fz-lg[disabled]{opacity:.5;cursor:not-allowed}
.fz-lg-m{margin-left:auto;white-space:nowrap}
.fz-nl{display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:var(--s2);align-items:end;margin-bottom:var(--s2)}
.fz-nl .field{margin:0}
.fz-estado{display:flex;gap:var(--s3);align-items:flex-start;padding:var(--s4);margin-bottom:var(--s3);background:var(--card);border:1px solid var(--line);border-radius:14px}
.fz-estado .ico{width:28px;height:28px;flex:none}
.fz-estado h3{font-size:20px}
.fz-estado p{margin:4px 0 0;color:var(--tx2)}
.fz-estado.ok{border-color:var(--ok)}.fz-estado.ok .ico{color:var(--ok)}
.fz-estado.mal{border-color:var(--warn)}.fz-estado.mal .ico{color:var(--warn)}
.fz-bloqs{list-style:none;margin:0 0 var(--s3);padding:0;display:grid;gap:var(--s3)}
.fz-bloqs>li{display:flex;gap:var(--s3);align-items:flex-start;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:var(--s3) var(--s4)}
.fz-bloqs>li>div{flex:1 1 280px;min-width:0}
.fz-bloqs>li>.ico{flex:none;width:20px;height:20px;margin-top:2px;color:var(--warn)}
.fz-avisos{list-style:none;margin:0 0 var(--s3);padding:0;font-size:13px;color:var(--tx2)}
.fz-lock{display:flex;gap:var(--s3);align-items:flex-start}
.fz-lock .ico{width:28px;height:28px;flex:none;color:var(--tx2)}
.fz-lock p{margin:4px 0 0;color:var(--tx2)}
@media(max-width:820px){.fz-candado{padding:3px 8px}.fz-nl{grid-template-columns:1fr 1fr}}
@media(max-width:599px){
  .fz-bloq,.topbar .amb{display:none}
  .fz-hb li{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"nm vl" "tr tr"}
  .fz-hb .nm{grid-area:nm}.fz-hb .vl{grid-area:vl}.fz-hb .tr{grid-area:tr}
  .fz-repi dl>div{grid-template-columns:1fr;gap:2px}
  .fz-nl{grid-template-columns:1fr}
  .fz-eje{min-width:52px}.fz-ejex{margin-left:64px}
  .fz-mov-h{flex-wrap:wrap}.fz-mov-m{text-align:left}
  .fz-acc{justify-content:flex-start}
  .fz-estado{padding:var(--s3)}
}

#fz_fr .dn-franja{margin-bottom:var(--s5)}
.fz-mov-a .fz-c{flex:2 1 240px}
.fz-mov-a .field{flex:1 1 170px}
.fz-mov-a .fz-acc{flex:0 1 auto;justify-content:flex-start}
.fz-mov-f select{width:100%}

/* Ronda 10 · materiales del técnico, estado del cierre de mes */
.tk-planes{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s2)}
.tk-plan{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s3);border:1px solid var(--line);border-radius:12px;background:var(--surf2)}
.tk-plan.ok{border-color:var(--ok);background:var(--okbg)}.tk-plan.no{background:var(--graybg)}
.tk-pn{min-width:0}.tk-pb{display:flex;gap:var(--s2);flex-wrap:wrap}.tk-pb .btn{min-height:44px;flex:1 1 120px;justify-content:center}
.ci-antes{margin-top:var(--s4);padding:var(--s3) var(--s4);border:1px solid var(--line);border-radius:12px;background:var(--surf2)}
.ci-antes h4{margin:0 0 var(--s2);font-size:14px}.ci-antes ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ci-antes li{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;font-size:13.5px}.ci-antes li .ico{flex:none}.ci-antes li.ok{color:var(--ok)}.ci-antes li.pend{color:var(--tx)}.ci-antes li.pend .ico{color:var(--warn)}.ci-antes li span{flex:1 1 220px}

.chip .chip-n{margin-left:6px;padding:0 6px;border-radius:999px;background:var(--graybg);color:var(--tx2);font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}
.chip.on .chip-n{background:var(--card);color:var(--tx)}
.foto-grande{display:block;max-width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
.fotos-ev{display:flex;gap:var(--s2);flex-wrap:wrap}

/* Ronda 10 · los íconos de control (check, flechas) dentro de insignias, pasos y botones */
.n .ico,.dn-pos .ico,.dn-neg .ico,.tk-pasos .n .ico{width:13px;height:13px;stroke-width:2.6}
.dn-pos,.dn-neg{display:inline-flex;align-items:center;gap:2px}
.btn .ico{width:15px;height:15px}.btn .ico:first-child{margin-right:6px}.btn .ico:last-child:not(:first-child){margin-left:6px}
.x .ico{width:18px;height:18px}
.tst .i .ico{width:16px;height:16px;stroke-width:2.4}

/* Ronda 10 · confirmaciones breves (≤ 350 ms); con «reducir movimiento» no se anima nada */
@keyframes chulo-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes chulo-trazo{from{stroke-dashoffset:16}to{stroke-dashoffset:0}}
.cb-chulo{animation:chulo-pop .32s var(--ease) both}
.cb-chulo .ico path:last-child{stroke-dasharray:16;animation:chulo-trazo .26s .12s ease-out both}
.tst.ok .i{animation:chulo-pop .3s var(--ease) both}
@media (prefers-reduced-motion:reduce){.cb-chulo,.cb-chulo .ico path,.tst .i,.tst,.modal,.sk-t,.sk-b{animation:none!important}*{scroll-behavior:auto!important}}
.tk-fila>span{flex:1 1 0;min-width:0}
