/* TAHIO OS 1.4 · sistema de diseño. Mobile-first. Tipografía local (OFL): Plus Jakarta Sans para la interfaz, Sora para títulos y cifras, IBM Plex Mono para códigos.
   Marca: azul #00458F, rojo #FF171C. El rojo se usa como acento; para texto y botones se usa --danger (contraste AA). */
:root{--tahio-build:"1.5.0"}
@font-face{font-family:'Plus Jakarta Sans';font-weight:200 800;font-style:normal;font-display:swap;src:url(fonts/jakarta-latin.woff2?v=140) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Plus Jakarta Sans';font-weight:200 800;font-style:normal;font-display:swap;src:url(fonts/jakarta-latin-ext.woff2?v=140) format('woff2');unicode-range:U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Sora';font-weight:100 800;font-style:normal;font-display:swap;src:url(fonts/sora-latin.woff2?v=140) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Sora';font-weight:100 800;font-style:normal;font-display:swap;src:url(fonts/sora-latin-ext.woff2?v=140) format('woff2');unicode-range:U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-weight:400;font-style:normal;font-display:swap;src:url(fonts/plex-mono-latin-400.woff2?v=140) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-weight:500;font-style:normal;font-display:swap;src:url(fonts/plex-mono-latin-500.woff2?v=140) format('woff2')}

:root{--brand:#0b5fff;--brand-h:#0a4fd6;--brand-50:#eaf1ff;--brand-100:#cfe0ff;--link:#0b5fff;--red:#ff171c;--danger:#cc1218;--danger-h:#a90e13;--navy:#081c39;--navy-2:#10315a;
 --bg:#f6f9fe;--surface:#fff;--surface-2:#f8faff;--line:#e2e8f1;--line-2:#c9d4e4;--ink:#0e1b2e;--ink-2:#3e5069;--muted:#5a6b83;
 --ok:#0a7d56;--ok-bg:#e1f5ec;--warn:#8a5200;--warn-bg:#fff1d6;--bad:#b3121a;--bad-bg:#ffe8ea;--info:#0a4fd6;--info-bg:#eaf1ff;
 --accent:var(--brand);--radius:14px;--radius-sm:10px;--shadow:0 1px 2px rgba(8,28,57,.04),0 10px 28px rgba(8,28,57,.06);--focus:0 0 0 3px rgba(0,84,180,.35);
 --sans:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--display:'Sora','Plus Jakarta Sans',system-ui,sans-serif;--side-bg:#fff;--side-ink:#3e5069;--side-grp:#5a6b83;--side-hover:#f1f5fd;--side-active:#eaf1ff;--side-active-ink:#0a4fd6;--side-line:#e2e8f1;--mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;--side-w:256px;--top-h:60px;--safe-b:env(safe-area-inset-bottom,0px)}
:root[data-theme=dark]{--bg:#0a1322;--surface:#101c31;--surface-2:#0d182b;--line:#1f2f4a;--line-2:#2b3f5f;--ink:#e8eef8;--ink-2:#b7c5da;--muted:#8fa1bb;--brand-50:#102a4d;--brand-100:#16386a;--link:#6aa8ff;--side-bg:#0b1628;--side-ink:#c3d1e6;--side-grp:#8aa0c0;--side-hover:rgba(255,255,255,.07);--side-active:#142a4d;--side-active-ink:#fff;--side-line:rgba(255,255,255,.09);
 --ok:#3fd09b;--ok-bg:#0f2f27;--warn:#f1b955;--warn-bg:#352a12;--bad:#ff7a82;--bad-bg:#3a161b;--info:#6aa8ff;--info-bg:#12274a;--danger:#d03a3f;--danger-h:#e05a5e;--brand:#2a62d6;--brand-h:#3d77ea;--shadow:0 1px 2px rgba(0,0,0,.4);--focus:0 0 0 3px rgba(106,168,255,.45)}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}
body{margin:0;background:var(--bg);color:var(--ink);font:400 15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.015em}
h1,h2,.kpi strong,.total,.grand b,.big-cta b,.cartbar .sum b,.bstats b,.stats b,.attn b,.gauge .v,.login h1,.pp,.drawer-panel>header h2,.modal h2,.pn{font-family:var(--display)}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}
.notice a,.hint a,.head p a,.card p a,.flash a,.pager a:not(.btn),td p a{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:8px}
.mono,code{font-family:var(--mono);font-size:.9em;letter-spacing:0}.muted{color:var(--muted)}.right{text-align:right}.num,.kpi strong,.pp,.grand b,.total{font-variant-numeric:tabular-nums}kbd{font:600 11px var(--mono);background:var(--surface-2);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:5px;padding:1px 6px}.nw{white-space:nowrap}
.icon{width:18px;height:18px;flex:none;vertical-align:-3px}.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--brand);color:#fff;padding:10px 14px;border-radius:8px;z-index:100}.skip:focus{left:8px}
[hidden]{display:none!important}

/* ===== estructura (mobile-first) ===== */
.shell{display:block;min-height:100vh}
.side{position:fixed;inset:0 auto 0 0;width:min(86vw,300px);background:var(--side-bg);color:var(--side-ink);border-right:1px solid var(--side-line);display:flex;flex-direction:column;z-index:40;transform:translateX(-102%);transition:transform .22s ease,box-shadow .22s;box-shadow:none}
.side.open{transform:none;box-shadow:0 0 40px rgba(0,0,0,.35)}.cover{position:fixed;inset:0;background:rgba(4,11,22,.62);z-index:35;opacity:0;pointer-events:none;transition:opacity .2s}.cover.show{opacity:1;pointer-events:auto}
.side .brand{padding:16px 20px;border-bottom:1px solid var(--side-line);display:flex;align-items:center;min-height:88px}.side .brand img.full{width:168px;height:auto;max-height:68px;object-fit:contain}.side .brand img.mark{display:none;width:38px;height:38px;border-radius:9px}.logo-d{display:none}:root[data-theme=dark] .logo-l{display:none}:root[data-theme=dark] .logo-d{display:block}.side .brand img.full.logo-d{width:168px;height:auto}
.side nav{flex:1;overflow-y:auto;padding:8px 12px 16px;scrollbar-width:none;-ms-overflow-style:none}.side nav::-webkit-scrollbar{display:none}
.side .grp{padding:18px 10px 6px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--side-grp)}
.side a.nav{display:flex;align-items:center;gap:12px;padding:11px 12px;margin:2px 0;border-radius:10px;color:var(--side-ink);font-weight:600;font-size:14.5px;text-decoration:none;border-left:3px solid transparent;transition:background .15s,color .15s}
.side a.nav:hover{background:var(--side-hover);color:var(--ink);text-decoration:none}.side a.nav.active{background:var(--side-active);color:var(--side-active-ink);border-left-color:var(--red)}
.side .badge-n{margin-left:auto;background:#cc1218;color:#fff;font-size:11px;font-weight:700;border-radius:20px;padding:0 7px;line-height:19px;min-width:20px;text-align:center}
.side .who{padding:14px 16px;border-top:1px solid var(--side-line);font-size:13px;color:var(--side-grp)}.side .who b{display:block;color:var(--ink);font-weight:700;font-size:14px}
.side .who form{margin-top:8px}.side .who button{background:none;border:0;color:var(--side-grp);padding:6px 0;cursor:pointer;font-size:13px;min-height:32px;font-weight:600}.side .who button:hover{color:var(--brand);text-decoration:underline}
.main{min-width:0;display:flex;flex-direction:column;min-height:100vh}
.topbar{height:var(--top-h);background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 12px;position:sticky;top:0;z-index:30}
.topbar::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 40%,var(--red)))}
.iconbtn{background:none;border:1px solid var(--line-2);border-radius:10px;width:40px;height:40px;display:inline-grid;place-items:center;cursor:pointer;color:var(--ink-2);flex:none}.iconbtn:hover{background:var(--surface-2)}
.chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:30px;padding:6px 12px 6px 10px;font-weight:600;font-size:13px;background:var(--surface-2);white-space:nowrap;color:var(--ink);max-width:46vw;overflow:hidden;text-overflow:ellipsis}
a.chip:hover{text-decoration:none;background:var(--brand-50)}.chip i{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 24%,transparent);flex:none}
.spacer{flex:1}.gsearch{position:relative;display:none}.gsearch .icon{position:absolute;left:11px;top:12px;color:var(--muted)}.gsearch input[type=search]{padding-left:36px}
.branchform{display:none}
.content{padding:18px 14px calc(88px + var(--safe-b));width:100%;max-width:1600px;margin:0 auto}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:20px;flex-wrap:wrap}.head h1{font-size:26px;font-weight:700;letter-spacing:-.025em;line-height:1.15}.head p{margin:6px 0 0;color:var(--muted);max-width:62ch}
.head .actions{display:flex;gap:8px;flex-wrap:wrap}
@media(min-width:801px){
 .side{transform:none;width:var(--side-w);box-shadow:none}.cover{display:none}.main{margin-left:var(--side-w);transition:margin .2s}.menu-toggle{display:none!important}
 body.collapsed .side{width:72px}body.collapsed .main{margin-left:72px}body.collapsed .side .brand img.full,body.collapsed .side .brand img.logo-d,body.collapsed .side .nav span.t,body.collapsed .side .grp,body.collapsed .side .who{display:none}
 body.collapsed .side .brand{justify-content:center;padding:18px 0}body.collapsed .side .brand img.mark{display:block}body.collapsed .side a.nav{justify-content:center}body.collapsed .badge-n{display:none}
 .topbar{padding:0 24px;gap:12px}.gsearch{display:block;width:min(300px,24vw)}.branchform{display:flex}.chip{max-width:none}.content{padding:30px 32px 56px}.head h1{font-size:30px}}
@media(max-width:800px){#collapseBtn{display:none}}

/* ===== botones, formularios ===== */
.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;background:var(--brand);color:#fff;font-weight:600;padding:10px 16px;border-radius:10px;cursor:pointer;text-decoration:none;font-size:14px;line-height:1.2;min-height:42px;transition:background .15s,box-shadow .15s}
.btn:hover{background:var(--brand-h);text-decoration:none}.btn.sec{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.btn.sec:hover{background:var(--surface-2)}
.btn.red{background:var(--danger)}.btn.red:hover{background:var(--danger-h)}.btn.ghost{background:none;color:var(--link);padding:6px 8px;min-height:34px}.btn.ghost:hover{background:var(--brand-50)}
.btn.sm{padding:6px 11px;font-size:13px;min-height:34px}.btn.lg{min-height:52px;font-size:16px;padding:12px 22px}.btn.block{width:100%}.btn[disabled]{opacity:.5;cursor:not-allowed}
label.f{display:block;font-weight:500;font-size:13px;color:var(--ink-2);margin:0 0 5px}
input[type=text],input[type=search],input[type=number],input[type=email],input[type=password],input[type=date],select,textarea,input:not([type]){width:100%;padding:10px 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);color:var(--ink);min-height:42px}
input:focus,select:focus,textarea:focus{border-color:var(--brand)}
input[type=checkbox],input[type=radio]{accent-color:var(--brand);width:18px;height:18px;vertical-align:-4px;margin-right:8px}
.field{margin-bottom:14px}.hint{color:var(--muted);font-size:13px;margin:5px 0 0}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:14px}.toolbar>*{min-width:140px}.toolbar .grow{flex:1;min-width:200px}
details.d{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:12px;background:var(--surface)}details.d summary{cursor:pointer;font-weight:600;min-height:28px}

/* ===== tarjetas, indicadores, tablas ===== */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:16px;box-shadow:var(--shadow)}.card>h2,.card-h{font-size:16px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px;justify-content:space-between}.card-h small{font-weight:400;color:var(--muted);font-size:13px}
.card.flat{box-shadow:none}.grid{display:grid;gap:14px}.g2,.g3,.g4{grid-template-columns:1fr}
@media(min-width:700px){.g2,.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1100px){.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.cols-2-1{display:grid;gap:16px}@media(min-width:1100px){.cols-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}
.kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}@media(min-width:1000px){.kpis{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 14px;display:block;color:inherit;box-shadow:var(--shadow);position:relative;min-width:0}a.kpi:hover{text-decoration:none;border-color:var(--brand-100)}
.kpi small{display:block;color:var(--muted);font-weight:500;font-size:13px}.kpi strong{display:block;font-size:24px;font-weight:700;letter-spacing:-.03em;margin:4px 0 2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.kpi>span{color:var(--muted);font-size:12.5px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
@media(min-width:1000px){.kpi{padding:20px 22px}.kpi strong{font-size:30px}}
.kicon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--brand-50);color:var(--brand);margin-bottom:10px}.kicon.ok{background:var(--ok-bg);color:var(--ok)}.kicon.warn{background:var(--warn-bg);color:var(--warn)}.kicon.bad{background:var(--bad-bg);color:var(--bad)}
.delta{font-style:normal;font-weight:600;display:inline-flex;align-items:center;gap:3px}.delta.up{color:var(--ok)}.delta.down{color:var(--bad)}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.card>.tablewrap{border-radius:10px}
table{border-collapse:collapse;width:100%}th{font-weight:600;text-align:left;font-size:12.5px;color:var(--muted);padding:11px 12px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}
td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--surface-2)}
.tag{display:inline-flex;align-items:center;gap:6px;border-radius:20px;padding:2px 10px 2px 8px;font-size:12.5px;font-weight:600;background:var(--info-bg);color:var(--info);white-space:nowrap}.tag::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.tag.ok{background:var(--ok-bg);color:var(--ok)}.tag.warn{background:var(--warn-bg);color:var(--warn)}.tag.bad{background:var(--bad-bg);color:var(--bad)}.tag.plain::before{display:none}.tag.plain{padding:2px 9px}
.flash{padding:12px 16px;border-radius:12px;margin-bottom:16px;background:var(--ok-bg);color:var(--ok);font-weight:500;border:1px solid color-mix(in srgb,var(--ok) 28%,transparent)}.flash.err{background:var(--bad-bg);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 28%,transparent)}
.notice{padding:12px 16px;border-radius:12px;background:var(--warn-bg);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 28%,transparent);margin-bottom:16px}.notice.info{background:var(--info-bg);color:var(--info);border-color:transparent}
.empty{text-align:center;padding:40px 16px;color:var(--muted)}.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}
.empty-state{text-align:center;padding:36px 20px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:6px}.empty-state .icon{width:34px;height:34px;color:var(--brand);background:var(--brand-50);border-radius:12px;padding:8px;box-sizing:content-box;margin-bottom:6px}.empty-state .es-t{font-size:17px;font-weight:600;color:var(--ink);margin:0}.empty-state p{margin:0 0 10px;max-width:46ch}
.pager{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-top:12px;color:var(--muted);flex-wrap:wrap}.pager-btns{display:flex;gap:8px}
/* filtros tipo chip / segmentados */
.seg{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px;margin:0 -14px 8px;padding-left:14px;padding-right:14px;scrollbar-width:none}.seg::-webkit-scrollbar{display:none}
.seg a,.seg button{flex:none;display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line-2);border-radius:30px;padding:8px 14px;font-weight:500;color:var(--ink-2);cursor:pointer;font-size:14px;min-height:40px;text-decoration:none}
.seg a b,.seg button b{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.seg a:hover{background:var(--surface-2);text-decoration:none}.seg a.on,.seg button.on{background:var(--brand);border-color:var(--brand);color:#fff}.seg a.on b,.seg button.on b{color:#fff}
.seg .dot{width:9px;height:9px;border-radius:50%}.dot.bad{background:var(--red)}.dot.warn{background:#e8a21a}.dot.ok{background:#12a173}.dot.brand{background:var(--brand)}
@media(min-width:801px){.seg{margin:0 0 8px;padding-left:0;padding-right:0;flex-wrap:wrap}}
/* tarjetas de atención */
.attn{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));margin-bottom:18px}
.attn a{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:12px;padding:13px 14px;color:inherit;box-shadow:var(--shadow)}.attn a:hover{text-decoration:none;border-color:var(--brand-100)}
.attn a.bad{border-left-color:var(--red)}.attn a.warn{border-left-color:#e8a21a}.attn a.ok{border-left-color:#12a173}.attn b{font-size:22px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.attn span{color:var(--ink-2);font-size:13.5px;line-height:1.3}
/* sucursales */
.branches{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:700px){.branches{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}}
.bcard{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.bcard .top{display:flex;gap:16px;align-items:center}.gauge{width:92px;height:92px;flex:none;position:relative}.gauge svg{transform:rotate(-90deg)}.gauge .v{position:absolute;inset:0;display:grid;place-items:center;text-align:center;font-weight:700;font-size:20px;line-height:1}.gauge .v small{display:block;font-size:10.5px;font-weight:500;color:var(--muted);margin-top:2px}
.bcard .bn{font-size:18px;font-weight:600;letter-spacing:-.015em}.bcard .mgr{color:var(--muted);font-size:13px}.bstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.bstats div{background:var(--surface-2);border-radius:10px;padding:9px 10px;min-width:0}.bstats b{display:block;font-size:16px;font-weight:700;overflow-wrap:anywhere}.bstats small{color:var(--muted);font-size:12px}
/* gráficos */
.chart{margin:0}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart .grid{stroke:var(--line);stroke-width:1}.chart .axis{font:500 11px var(--sans);fill:var(--muted)}
.chart .bar{fill:var(--brand-100)}.chart .bar.hi{fill:var(--brand)}:root[data-theme=dark] .chart .bar{fill:#1c3f73}:root[data-theme=dark] .chart .bar.hi{fill:#4a92f0}
.chart .area{fill:color-mix(in srgb,var(--brand) 12%,transparent)}.chart .line{fill:none;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}.chart .line.a{stroke:var(--brand)}.chart .line.b{stroke:var(--red);stroke-dasharray:5 5}
.legend{display:flex;gap:16px;margin-top:8px;color:var(--ink-2);font-size:13px}.legend i{display:inline-block;width:14px;height:4px;border-radius:3px;margin-right:6px;vertical-align:middle}.legend .s1{background:var(--brand)}.legend .s2{background:var(--red)}
.donut{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:0}.donut svg{width:132px;height:132px;flex:none}.donut .track{stroke:var(--line)}.donut .ctr{font:700 11px var(--sans);fill:var(--ink)}
.donut .seg.s1{stroke:var(--brand)}.donut .seg.s2{stroke:var(--red)}.donut .seg.s3{stroke:#12a173}.donut .seg.s4{stroke:#e8a21a}
.donut ul{list-style:none;margin:0;padding:0;flex:1;min-width:180px}.donut li{display:grid;grid-template-columns:14px 1fr auto;gap:2px 8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);font-size:13.5px}.donut li:last-child{border:0}
.donut li i{width:10px;height:10px;border-radius:3px}.donut li i.s1{background:var(--brand)}.donut li i.s2{background:var(--red)}.donut li i.s3{background:#12a173}.donut li i.s4{background:#e8a21a}.donut li em{grid-column:2/4;color:var(--muted);font-style:normal;font-size:12.5px}
/* ejemplo visual de unificación */
.unify{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:4px 0 8px}.unify .u-from{display:flex;gap:8px;flex-wrap:wrap}.unify .u-from span{background:var(--surface-2);border:1px solid var(--line-2);border-radius:8px;padding:6px 12px;font-family:var(--mono);font-weight:500}.unify .icon{width:26px;height:26px;color:var(--brand)}
.unify .u-to span{display:inline-block;background:var(--ok-bg);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 35%,transparent);border-radius:8px;padding:6px 14px;font-family:var(--mono);font-weight:600}.unify .u-to small{display:block;color:var(--muted);margin-top:4px}
/* listas de acción */
.list{list-style:none;margin:0;padding:0}.list li{display:flex;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.list li:last-child{border-bottom:0}.list .grow{flex:1;min-width:0}.list .grow b{display:block;overflow:hidden;text-overflow:ellipsis}.list small{color:var(--muted)}
.big-cta{display:flex;align-items:center;gap:14px;background:var(--brand);color:#fff;border-radius:16px;padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow)}.big-cta:hover{text-decoration:none;background:var(--brand-h)}.big-cta .icon{width:28px;height:28px}.big-cta b{font-size:18px;display:block}.big-cta span{opacity:.88;font-size:13.5px}
/* tablero de transferencias, línea de tiempo, pasos */
.board{display:grid;gap:14px;grid-template-columns:1fr}@media(min-width:900px){.board{grid-template-columns:repeat(3,minmax(0,1fr))}}
.col{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:12px}.col>.col-h{font-size:14px;font-weight:600;padding:4px 6px 10px;display:flex;justify-content:space-between;align-items:center}.col .count{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:0 9px;font-size:12.5px}
.tcard{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px}.tcard .route{display:flex;gap:8px;align-items:center;font-weight:600;font-size:14px;flex-wrap:wrap}.tcard .route .icon{color:var(--muted)}.tcard p{margin:6px 0 8px;color:var(--ink-2);font-size:13.5px}.tcard .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.day{font-size:13px;font-weight:600;color:var(--muted);margin:18px 0 8px}.mv{display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:8px}
.mv .ic{grid-row:span 2;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--brand-50);color:var(--brand)}.mv .ic.in{background:var(--ok-bg);color:var(--ok)}.mv .ic.out{background:var(--bad-bg);color:var(--bad)}
.mv .qty{font-size:18px;font-weight:700;text-align:right}.mv .qty.in{color:var(--ok)}.mv .qty.out{color:var(--bad)}.mv small{color:var(--muted)}.mv .ttl{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis}
.flow{display:grid;gap:10px;grid-template-columns:1fr;margin-bottom:18px}@media(min-width:800px){.flow{grid-template-columns:repeat(3,1fr)}}
.flow .st{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}.flow .st .n{width:28px;height:28px;border-radius:50%;background:var(--surface-2);border:1.5px solid var(--line-2);display:grid;place-items:center;font-weight:700;flex:none}.flow .st.on{border-color:var(--brand)}.flow .st.on .n{background:var(--brand);color:#fff;border-color:var(--brand)}.flow .st.done .n{background:var(--ok);color:#fff;border-color:var(--ok)}.flow .st b{display:block}.flow .st span{color:var(--muted);font-size:13px}
/* asistente de importación (pasos) */
.steps{display:flex;gap:0;margin-bottom:20px;overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--surface);scrollbar-width:none}.steps::-webkit-scrollbar{display:none}
.steps .s{flex:1;min-width:116px;padding:12px;border-right:1px solid var(--line);color:var(--muted);font-weight:500;font-size:13.5px;display:flex;gap:8px;align-items:center}.steps .s:last-child{border-right:0}
.steps .s .n{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;font-size:12px;font-weight:700;flex:none}.steps .s.on{color:var(--ink);background:var(--brand-50)}.steps .s.on .n{background:var(--brand);border-color:var(--brand);color:#fff}.steps .s.done .n{background:var(--ok);border-color:var(--ok);color:#fff}.steps .s.done{color:var(--ink-2)}
.drop{display:block;border:2px dashed var(--line-2);border-radius:16px;padding:44px 18px;text-align:center;background:var(--surface-2);cursor:pointer}.drop.over,.drop:focus-within{border-color:var(--brand);background:var(--brand-50)}.drop b{font-size:16px}
.bar{height:12px;background:var(--line);border-radius:10px;overflow:hidden}.bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),#12a173);transition:width .25s}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:14px}.stats div{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.stats b{font-size:22px;display:block;font-weight:700}.stats small{color:var(--muted)}
.maprow{display:grid;grid-template-columns:1fr;gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}.maprow:last-child{border-bottom:0}.maprow .sample{color:var(--muted);font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(min-width:900px){.maprow{grid-template-columns:minmax(200px,1.2fr) minmax(200px,1.4fr) minmax(0,1fr);gap:12px;align-items:center}}
.opt{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.opt:last-child{border-bottom:0}.opt label{font-weight:600;cursor:pointer}.opt p{margin:2px 0 0;color:var(--muted);font-size:13px}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.filters button{background:var(--surface);border:1px solid var(--line-2);border-radius:30px;padding:7px 14px;cursor:pointer;font-weight:500;min-height:38px}.filters button.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
/* ===== panel lateral, modal, avisos, tooltips ===== */
.drawer{position:fixed;inset:0;z-index:60;display:flex;justify-content:flex-end}.drawer::before{content:"";position:absolute;inset:0;background:rgba(4,11,22,.55);animation:fade .18s}
.drawer-panel{position:relative;width:min(100%,520px);height:100%;background:var(--surface);display:flex;flex-direction:column;box-shadow:-20px 0 50px rgba(0,0,0,.25);animation:slide .22s ease}
.drawer-panel>header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:18px 20px;border-bottom:1px solid var(--line)}.drawer-panel>header h2{font-size:18px}.drawer-panel>header p{margin:4px 0 0;color:var(--muted);font-size:13.5px}
.drawer-body{padding:18px 20px calc(24px + var(--safe-b));overflow-y:auto;flex:1}
@keyframes slide{from{transform:translateX(30px);opacity:.4}}@keyframes fade{from{opacity:0}}
dialog.modal{border:0;border-radius:18px;padding:0;width:min(92vw,440px);background:var(--surface);color:var(--ink);box-shadow:0 30px 80px rgba(0,0,0,.4)}dialog.modal::backdrop{background:rgba(4,11,22,.6)}
.modal .mb{padding:24px 24px 8px}.modal .mi{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--brand-50);color:var(--brand);margin-bottom:12px}.modal.danger .mi{background:var(--bad-bg);color:var(--bad)}
.modal h2{font-size:19px;margin-bottom:6px}.modal p{margin:0;color:var(--ink-2)}.modal .mf{display:flex;gap:10px;justify-content:flex-end;padding:16px 24px 22px;flex-wrap:wrap}.modal .mf .btn{flex:1;min-width:120px}
.toasts{position:fixed;z-index:80;left:12px;right:12px;bottom:calc(14px + var(--safe-b));display:flex;flex-direction:column;gap:10px;pointer-events:none}@media(min-width:801px){.toasts{left:auto;right:24px;bottom:24px;width:380px}}
.toast{pointer-events:auto;display:flex;gap:12px;align-items:flex-start;background:var(--ink);color:var(--bg);border-radius:14px;padding:13px 14px;box-shadow:0 14px 40px rgba(0,0,0,.3);animation:rise .22s ease}:root[data-theme=dark] .toast{background:#e8eef8;color:#0a1322}
.toast .icon{margin-top:2px;color:#4ade9e}.toast.err .icon{color:#ff7a82}.toast.warn .icon{color:#f1b955}.toast span{flex:1;font-size:14px;line-height:1.4}.toast button{background:none;border:0;color:inherit;opacity:.7;cursor:pointer;padding:2px;margin:-2px}
@keyframes rise{from{transform:translateY(12px);opacity:0}}
[data-tip]{position:relative}[data-tip]::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);background:var(--ink);color:var(--bg);font:500 12.5px/1.35 var(--sans);padding:6px 10px;border-radius:8px;width:max-content;max-width:240px;white-space:normal;text-align:left;opacity:0;pointer-events:none;transition:opacity .12s;z-index:50}
[data-tip]:hover::after,[data-tip]:focus-visible::after{opacity:1}
.build-warn{position:sticky;top:var(--top-h);z-index:25;background:var(--warn-bg);color:var(--warn);padding:10px 16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;border-bottom:1px solid color-mix(in srgb,var(--warn) 30%,transparent)}
/* ===== punto de venta ===== */
.pos{display:grid;grid-template-columns:1fr;gap:14px;align-items:start}.pos .results{max-height:none}
.res{display:flex;gap:12px;align-items:center;padding:13px 14px;border-bottom:1px solid var(--line);cursor:pointer;min-height:64px}.res:hover,.res:focus-visible{background:var(--surface-2)}.res .info{flex:1;min-width:0}.res .info b{display:block}.res .info small{color:var(--muted);overflow-wrap:anywhere}
.cart{position:fixed;left:0;right:0;bottom:0;z-index:45;max-height:88vh;overflow-y:auto;border-radius:20px 20px 0 0;margin:0;transform:translateY(105%);transition:transform .25s ease;padding-bottom:calc(18px + var(--safe-b))}.cart.open{transform:none;box-shadow:0 -20px 60px rgba(0,0,0,.35)}
.cartbar{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--surface);border-top:1px solid var(--line);padding:10px 14px calc(10px + var(--safe-b));display:flex;gap:12px;align-items:center;box-shadow:0 -10px 30px rgba(8,28,57,.1)}.cartbar .sum{flex:1;line-height:1.2}.cartbar .sum small{color:var(--muted);display:block}.cartbar .sum b{font-size:20px;font-variant-numeric:tabular-nums}
.line{display:flex;gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}.line .nm{flex:1;min-width:0;font-size:14px}.line input{width:70px;text-align:center}
.total{font-size:30px;font-weight:700;letter-spacing:-.03em;display:flex;justify-content:space-between;align-items:baseline;margin:10px 0}
.pay{display:grid;grid-template-columns:128px 1fr 40px;gap:8px;margin-bottom:8px}.sheet-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
@media(min-width:1100px){.pos{grid-template-columns:minmax(0,1.5fr) minmax(360px,1fr)}.pos .results{max-height:62vh;overflow-y:auto}.cart{position:sticky;top:78px;transform:none;border-radius:var(--radius);max-height:calc(100vh - 100px);padding-bottom:18px;z-index:1}.cartbar{display:none}.sheet-h .iconbtn{display:none}}
/* ===== acceso ===== */
.login{min-height:100vh;display:grid;grid-template-columns:1fr}.login .art{display:none;background:var(--navy);color:#fff;flex-direction:column;justify-content:center;padding:56px;position:relative;overflow:hidden}
.login .art img{width:min(420px,80%)}.login .art p{max-width:380px;color:#a9bbd6;font-size:17px;margin-top:26px}.login .art::after{content:"";position:absolute;right:-120px;bottom:-120px;width:380px;height:380px;border-radius:50%;border:38px solid rgba(255,255,255,.05)}
.login .formside{display:grid;place-items:center;padding:28px 20px;background:var(--bg)}.login form{width:min(400px,100%)}.login h1{font-size:28px;margin-bottom:4px}.login .mlogo{width:190px;display:block;margin:0 auto 22px}
@media(min-width:900px){.login{grid-template-columns:1.1fr 1fr}.login .art{display:flex}.login .mlogo{display:none}}
/* tablas → tarjetas en móvil */
@media(max-width:800px){.mtable thead{display:none}.mtable tr{display:block;border-bottom:1px solid var(--line);padding:10px 4px}.mtable td{display:flex;justify-content:space-between;gap:14px;border:0;padding:4px 10px;text-align:right;flex-wrap:wrap;overflow-wrap:anywhere}.mtable td::before{content:attr(data-l);color:var(--muted);font-weight:500;text-align:left;flex:none}.mtable tbody tr:hover td{background:none}
 .mf{display:none}#fform.fopen .mf{display:block}#fform.fopen label.mf{display:flex}.topbar .chip{max-width:44vw}}
@media(min-width:801px){button.ftoggle{display:none}}
/* ===== POS visual ===== */
.pos-left{min-width:0}.pos-search{padding:14px}.searchbox{position:relative}.searchbox .icon{position:absolute;left:14px;top:15px;color:var(--muted);width:20px;height:20px}.searchbox input{min-height:50px;font-size:16px;padding-left:44px;border-radius:12px;border-width:1.5px}
.chips{display:flex;gap:8px;overflow-x:auto;padding:12px 0 4px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chipb{flex:none;border:1px solid var(--line-2);background:var(--surface);border-radius:30px;padding:7px 14px;font-weight:600;font-size:13.5px;cursor:pointer;color:var(--ink-2);min-height:38px}.chipb b{color:var(--muted);font-weight:600}.chipb.on{background:var(--brand);border-color:var(--brand);color:#fff}.chipb.on b{color:#dbe6ff}
.pos-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;align-items:center}.pos-filters select{min-height:38px;font-size:13px}.chk{display:flex;align-items:center;font-size:13px;font-weight:600;color:var(--ink-2)}
@media(min-width:700px){.pos-filters{grid-template-columns:repeat(3,1fr) auto}}
.sec-title{display:flex;justify-content:space-between;align-items:baseline;margin:14px 2px 10px}.sec-title b{font-family:var(--display);font-size:15px}.center{text-align:center;margin:16px 0}
.pgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(min-width:700px){.pgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1400px){.pgrid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.pcard{display:flex;flex-direction:column;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:0;cursor:pointer;overflow:hidden;box-shadow:var(--shadow);transition:transform .12s,border-color .12s;font:inherit;color:inherit}.pcard:hover{border-color:var(--brand);transform:translateY(-1px)}.pcard:focus-visible{border-radius:14px}
.pm{aspect-ratio:4/3;background:var(--brand-50);display:grid;place-items:center;overflow:hidden}.pm img{width:100%;height:100%;object-fit:cover}.ph{display:grid;place-items:center;color:var(--brand);position:relative;width:100%;height:100%;background:linear-gradient(135deg,var(--brand-50),var(--brand-100))}.ph .icon{width:34px;height:34px;opacity:.35}.ph span{position:absolute;font:700 30px var(--display);opacity:.55}
.pb{padding:10px 12px 12px;display:flex;flex-direction:column;gap:3px;flex:1}.pn{font-size:14px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-weight:600}.pc{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pv{font-size:12px;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.pf{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:auto;padding-top:6px}.pp{font-size:15px}.pcard.blocked{opacity:.62;background:var(--surface-2)}.pcard.blocked .pm{filter:grayscale(1)}
.cart{border-top:3px solid var(--brand)}.cart h2{font-family:var(--display);display:flex;gap:8px;align-items:center}.inline{display:flex;gap:6px}.inline select{flex:1}.grid.tight{gap:10px}
.cl{border-bottom:1px solid var(--line);padding:10px 0}.cl-h{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.cl-h .nm{min-width:0;font-size:13.5px;line-height:1.3}.cl-b{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-top:8px;flex-wrap:wrap}
.step{display:flex;align-items:center;gap:4px}.step .qty{width:56px;text-align:center;min-height:36px;padding:4px}.iconbtn.sm{width:34px;height:34px;border-radius:9px}.dpl{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-weight:600}.dp{width:60px;min-height:34px;padding:4px 6px;text-align:center}
.disc-row{display:flex;gap:8px;align-items:center;margin-top:10px}.disc-row label{margin:0;white-space:nowrap}.disc-row input{max-width:90px;min-height:38px}
.totals{border-top:1px dashed var(--line-2);margin:12px 0;padding-top:10px}.totals>div{display:flex;justify-content:space-between;padding:3px 0;color:var(--ink-2)}.totals .grand{font-size:26px;color:var(--ink);align-items:baseline;margin-top:4px}.totals .grand b{font-size:28px;letter-spacing:-.03em}
.two-btn{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:10px}
@media(min-width:1100px){.cart{max-height:calc(100vh - 96px);overflow-y:auto}}
/* ===== módulos nuevos ===== */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 18px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs a{flex:none;padding:11px 16px;font-weight:600;color:var(--ink-2);border-bottom:3px solid transparent;margin-bottom:-1px;text-decoration:none;white-space:nowrap}.tabs a:hover{color:var(--ink);text-decoration:none}.tabs a.on{color:var(--brand);border-bottom-color:var(--brand)}
.rowform{display:grid;gap:10px;grid-template-columns:1fr}@media(min-width:800px){.rowform{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end}}
.pill-ok{color:var(--ok)}.pill-bad{color:var(--bad)}.right-actions{display:flex;gap:8px;flex-wrap:wrap}
.editor th,.editor td{padding:6px 8px}.editor select,.editor input{min-height:38px}.editor .tot td{font-weight:700;background:var(--surface-2)}.ok-row td{color:var(--ok)}.bad-row td{color:var(--bad)}
.picker{position:relative}.picker-results{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:10px;margin-top:6px;background:var(--surface)}.picker-results label{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-weight:500}.picker-results label:hover{background:var(--surface-2)}.picked{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.picked .tag{cursor:default}
.photo-box{aspect-ratio:4/3;border-radius:14px;overflow:hidden;background:var(--brand-50);display:grid;place-items:center;border:1px solid var(--line)}.photo-box img{width:100%;height:100%;object-fit:cover}
.pgrid-inv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media(min-width:800px){.pgrid-inv{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1300px){.pgrid-inv{grid-template-columns:repeat(4,minmax(0,1fr))}}
.vswitch{display:inline-flex;border:1px solid var(--line-2);border-radius:10px;overflow:hidden}.vswitch a{padding:8px 12px;display:inline-flex;gap:6px;align-items:center;font-weight:600;color:var(--ink-2);text-decoration:none;font-size:13px}.vswitch a.on{background:var(--brand);color:#fff}
.fx{font-variant-numeric:tabular-nums}.modal p{white-space:pre-line}.diff-ok{color:var(--ok);font-weight:700}.diff-bad{color:var(--bad);font-weight:700}
.code-block{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-family:var(--mono);font-size:12.5px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{.side,.topbar,.cartbar,.toasts,.btn{display:none!important}.main{margin:0}.card{box-shadow:none}}
/* asientos contables y selector de repuestos */
.erow{display:grid;grid-template-columns:1fr 1fr 40px;gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}.erow select{grid-column:1/-1}.erow input[name=n]{grid-column:1/3}
.picker .picker-res,.picker .picker-sel{margin:8px 0;max-height:240px;overflow-y:auto}.picker .picker-sel{border:1px dashed var(--line-2);border-radius:10px;padding:0 12px}.picker .picker-sel:empty{display:none}

/* asistente por pasos */
.wz-steps{display:flex;gap:6px;list-style:none;margin:0 0 16px;padding:0}.wz-steps li{flex:1;display:flex;gap:8px;align-items:center;font-size:13px;color:var(--muted);font-weight:500}.wz-steps li span{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.wz-steps li.on{color:var(--ink)}.wz-steps li.on span{background:var(--brand);border-color:var(--brand);color:#fff}.wz-steps li.done span{background:var(--ok);border-color:var(--ok);color:#fff}

/* vista de cuadrícula del inventario, ficha con foto y selector de vista */
.viewtoggle{display:inline-flex;border:1px solid var(--line-2);border-radius:10px;overflow:hidden;background:var(--surface)}.viewtoggle a{display:inline-flex;gap:6px;align-items:center;padding:9px 14px;font-weight:600;color:var(--ink-2);min-height:42px;text-decoration:none}.viewtoggle a.on{background:var(--brand);color:#fff}
.igrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.icard{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;color:inherit;display:flex;flex-direction:column;box-shadow:var(--shadow);text-decoration:none}.icard:hover{border-color:var(--brand);text-decoration:none}
.icard .ph,.pimg-box .ph{aspect-ratio:4/3;background:linear-gradient(135deg,var(--brand-50),var(--surface-2));display:grid;place-items:center;position:relative;overflow:hidden;color:var(--brand)}.icard .ph img,.pimg-box img{width:100%;height:100%;object-fit:cover;display:block}
.ph-i{display:grid;place-items:center;gap:2px}.ph-i .icon{width:34px;height:34px}.ph-i em{font-style:normal;font:700 22px var(--display,var(--sans))}.icard .lv{position:absolute;left:10px;top:10px;font-size:12px;font-weight:700;padding:2px 9px;border-radius:20px;background:var(--ok-bg);color:var(--ok)}.icard .lv.medium{background:var(--warn-bg);color:var(--warn)}.icard .lv.critical{background:var(--bad-bg);color:var(--bad)}
.icard .ib{padding:12px 14px 14px;display:flex;flex-direction:column;gap:4px;flex:1}.icard .ib b{font-size:14px;line-height:1.3}.icard .ib small{color:var(--muted)}.icard .irow{display:flex;justify-content:space-between;align-items:baseline;margin-top:auto;padding-top:8px}
.pimg{display:grid;gap:18px;grid-template-columns:1fr}.pimg-box{border-radius:12px;overflow:hidden;min-height:160px;background:var(--surface-2)}.pimg-box .ph{height:100%;min-height:200px;font-weight:600;gap:6px;color:var(--muted)}.pimg-box .ph .icon{width:40px;height:40px;color:var(--brand)}@media(min-width:760px){.pimg{grid-template-columns:260px 1fr}}
.quick{display:flex;flex-wrap:wrap;gap:10px}.quick .btn{min-height:48px}

@media (hover:none),(max-width:760px){.kbd-hint{display:none}}
.icard .lv{background:#fff;border:1px solid color-mix(in srgb,currentColor 35%,transparent);box-shadow:0 1px 3px rgba(10,20,40,.18)}

/* Inventario Pro 1.5.0 */
.finv{margin-bottom:14px}.finv-top{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.finv-top .searchbox{min-width:240px;flex:1 1 320px}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:12px}.fgrid.codes{margin-top:10px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.finv fieldset{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:6px 14px 4px;margin:0;min-width:0}.finv legend{font:700 11.5px var(--display,var(--sans));text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding:0 6px}.finv .field{margin-bottom:10px}.grid.tight{gap:8px}
.fchip{display:inline-flex;gap:4px;align-items:center;background:var(--brand-50);color:var(--brand);border:1px solid color-mix(in srgb,var(--brand) 30%,transparent);border-radius:999px;padding:3px 6px 3px 11px;font-weight:600;font-size:13px;text-decoration:none}.fchip .icon{width:14px;height:14px}.fchip:hover{background:color-mix(in srgb,var(--brand) 14%,var(--surface));text-decoration:none}
.chips-act{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pop{position:relative}.pop>summary{list-style:none;cursor:pointer}.pop>summary::-webkit-details-marker{display:none}.pop-box{position:absolute;right:0;z-index:30;min-width:270px;max-width:92vw;background:var(--surface);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 14px 34px rgba(10,20,40,.2);padding:12px;margin-top:6px;max-height:70vh;overflow:auto}
.ck{display:flex;gap:8px;align-items:center;padding:5px 0}.savebox{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}
.valstrip{display:flex;flex-wrap:wrap;gap:6px 24px;margin:-4px 2px 12px;color:var(--ink-2);font-size:13px}
.invt .sortlnk{color:inherit;text-decoration:none;white-space:nowrap}.invt .sortlnk:hover{color:var(--brand)}
#invRes.loading{opacity:.5;pointer-events:none;transition:opacity .15s}#ftoggle{display:none}
@media(max-width:760px){#ftoggle{display:inline-flex}#fpanel{display:none}#fpanel.open{display:block;margin-bottom:10px}.finv-top .searchbox{flex-basis:100%}.pop-box{right:auto;left:0}}

.kpis-compact .kpis{gap:10px;margin-bottom:10px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.kpis-compact .kpi{padding:10px 14px 9px}.kpis-compact .kpi strong{font-size:20px;margin:2px 0 0}.kpis-compact .kpi small{font-size:12px}.kpis-compact .valstrip{margin:0 2px 10px}
@media(max-width:760px){.kpis-compact .kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpis-compact .kpi{padding:9px 11px}.kpis-compact .kpi strong + small{display:none}.kpis-compact .kpi strong{font-size:18px}}

/* POS 1.5.0: filtros compactos */
.pos-filters.pf-main{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:8px;align-items:center;margin-top:10px}.pos-filters select,.pos-filters input[type=text],.pos-filters input:not([type]){min-height:42px}
.pos-fbar{display:flex;gap:8px;align-items:center;margin-top:8px}.pos-more{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-2)}.pos-more[hidden]{display:none}
@media(max-width:760px){.pos-filters.pf-main{grid-template-columns:repeat(2,minmax(0,1fr))}.pos-filters .chk{grid-column:1/-1}}

.pos-codes{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;align-items:center}.pos-codes .muted{grid-column:1/-1;font-size:12px}

.cl .dpl{display:inline-flex;gap:4px;align-items:center}.cl .dts{width:auto;min-height:34px;padding:2px 6px}.disc-row .inline{display:flex;gap:6px;align-items:center}.disc-row .inline select{width:auto;min-height:42px}.disc-row .inline input{min-width:0;flex:1}
.notice[data-pv] ul.list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}@media(max-width:760px){.notice[data-pv] ul.list{grid-template-columns:1fr}}

/* PharmaSync ERP violet identity */
:root,[data-theme="light"] { --primary:#9032bb; --accent:#9032bb; --brand:#9032bb; --focus:#af69cd; }
body{accent-color:#9032bb}
.btn:not(.sec):not(.ghost){background:#9032bb;border-color:#9032bb;color:#fff}
.btn:not(.sec):not(.ghost):hover{background:#79269d}
