:root{
  --navy:#0B2E86; --navy-2:#1A3F9C; --navy-ink:#0B1F55;
  --primary:#00A693; --primary-2:#008577; --primary-bright:#00C9A7; --primary-soft:#DDF8F2;
  --grad:linear-gradient(135deg,#00BFA5 0%,#0096DB 100%); --grad-h:linear-gradient(135deg,#00A891 0%,#007FBF 100%);
  --side:linear-gradient(180deg,#0D3399 0%,#0A2472 55%,#081A52 100%);
  --bg:#EDF3FF; --panel:#FFFFFF; --line:#D9E4F5; --line-2:#E7EEFA; --head:#E8F0FF;
  --text:#11203B; --muted:#5B6B84; --faint:#8A98AD;
  --ok:#14945A; --ok-bg:#E3F5EA; --warn:#B86E00; --warn-bg:#FFF2DB; --warn-dot:#F2A20C;
  --err:#C9353B; --err-bg:#FDE8E8; --info:#1E64C8; --info-bg:#E5EEFC; --gray-bg:#EDF1F6;
  --wa:#25D366; --radius:14px; --shadow:0 1px 2px rgba(16,40,80,.06),0 4px 14px rgba(16,40,80,.05);
  --font:'Figtree',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font:15px/1.45 var(--font);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--primary-2)}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.muted{color:var(--muted)} .faint{color:var(--faint)} .small{font-size:13px} .b{font-weight:700}
.hidden{display:none!important}
svg.i{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ---------- layout ---------- */
.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.side{background:var(--side);color:#DCE6F5;padding:16px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:6px;z-index:30}
.brand{background:#fff;border-radius:14px;padding:14px 14px;margin-bottom:14px;display:flex;align-items:center;justify-content:center}
.brand img{width:100%;max-width:190px;height:auto;display:block}
.brand .ico{display:none;width:38px}
.nav a{display:flex;align-items:center;gap:14px;padding:11px 14px;border-radius:12px;color:#E4ECF8;text-decoration:none;font-weight:500;font-size:16px;margin-bottom:4px}
.nav a:hover{background:rgba(255,255,255,.07)}
.nav a.on{background:var(--grad);color:#fff;font-weight:700;box-shadow:0 6px 16px rgba(0,170,200,.35)}
.nav a svg.i{width:22px;height:22px}
.side .foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:10px}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:16px;padding:16px 28px 14px;background:#fff;box-shadow:0 2px 10px rgba(11,46,134,.06);position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line-2)}
.top h1{margin:0;font-size:28px;font-weight:800;color:var(--navy-ink);letter-spacing:-.3px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gsearch{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:9px 18px;width:min(380px,34vw)}
.gsearch input{border:0;outline:0;background:transparent;width:100%}
.iconbtn{position:relative;border:0;background:transparent;padding:8px;border-radius:10px;cursor:pointer;color:var(--navy-ink)}
.iconbtn:hover{background:#E2E9F3}
.badge{position:absolute;top:2px;right:2px;background:var(--err);color:#fff;border-radius:999px;font-size:11px;font-weight:700;padding:0 5px;min-width:17px;text-align:center}
.avatar{display:flex;align-items:center;gap:6px;cursor:pointer;border:0;background:transparent;padding:2px}
.avatar span{width:44px;height:44px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;font-weight:800}
.menu-pop{position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px rgba(16,40,80,.15);min-width:240px;padding:6px;z-index:50}
.menu-pop a,.menu-pop button{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:10px 12px;border:0;background:none;border-radius:8px;color:var(--text);text-decoration:none;cursor:pointer}
.menu-pop a:hover,.menu-pop button:hover{background:var(--head)}
.menu-pop .hd{padding:10px 12px;border-bottom:1px solid var(--line-2);margin-bottom:4px}
.view{padding:22px 28px 130px;flex:1}
.burger{display:none}

/* ---------- componentes ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.card.pad{padding:20px 22px}
.card h2,.sec-title{margin:0 0 14px;font-size:20px;font-weight:800;color:var(--navy-ink)}
.card h2 small{font-weight:500;color:var(--muted);font-size:16px}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.grow{flex:1}
.grid{display:grid;gap:18px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}
.kpis.k3{grid-template-columns:repeat(3,minmax(0,1fr))}
.kpis.k5{grid-template-columns:repeat(5,minmax(0,1fr))}
.kpi{display:flex;align-items:center;gap:16px;padding:20px;cursor:default;text-align:left;width:100%}
button.kpi{cursor:pointer;font:inherit}
button.kpi:hover{border-color:#B9D9D2;box-shadow:0 6px 18px rgba(16,40,80,.08)}
.kpi{border-top:4px solid var(--kc,#00B39F)}
.kpi .ic{width:58px;height:58px;border-radius:16px;background:var(--kc,#00B39F);color:#fff;display:grid;place-items:center;flex:none;box-shadow:0 8px 18px -6px var(--kc,#00B39F)}
.k-teal{--kc:#00B39F}.k-blue{--kc:#2F6BFF}.k-amber{--kc:#FF9800}.k-coral{--kc:#F2545B}.k-violet{--kc:#7B5CFA}.k-cyan{--kc:#00A3E0}
.kpi .ic svg{width:30px;height:30px}
.kpi .lb{color:var(--text);font-size:15px}
.kpi .vl{font-size:30px;font-weight:800;color:var(--navy-ink);letter-spacing:-.5px;line-height:1.15;font-variant-numeric:tabular-nums}
.kpi .sub{font-size:12.5px;color:var(--muted)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;padding:10px 18px;border:1.5px solid var(--navy-2);background:#fff;color:var(--navy-ink);font-weight:600;cursor:pointer;white-space:nowrap;min-height:42px}
.btn:hover{background:#F3F7FC}
.btn.pri{background:var(--grad);border-color:transparent;color:#fff;box-shadow:0 4px 12px rgba(0,150,200,.28)}
.btn.pri:hover{background:var(--grad-h)}
.btn.dan{border-color:var(--err);color:var(--err)}
.btn.dan:hover{background:var(--err-bg)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.sm{padding:6px 12px;min-height:34px;font-size:14px}
.btn.lg{padding:13px 26px;font-size:17px;min-height:52px}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn .spin{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.ibtn{border:0;background:transparent;padding:6px;border-radius:8px;cursor:pointer;color:var(--navy-ink);display:inline-grid;place-items:center}
.ibtn:hover{background:var(--head)}
.ibtn.del{color:var(--err)}
.ibtn.box{border:1.5px solid #F2B8BA;color:var(--err);border-radius:8px}

label.f,div.f{display:block;font-size:14.5px;color:var(--navy-ink);font-weight:500;min-width:0}
label.f>input,label.f>select,label.f>textarea,label.f>div,label.f>.hint,div.f>div,div.f>.hint{margin-top:6px}
label.f>.hint,div.f>.hint{display:block}
label.f .req{color:var(--err)}
.inp,select.inp,textarea.inp{width:100%;border:1px solid #CBD6E4;border-radius:10px;background:#fff;padding:10px 12px;min-height:44px;outline:0}
textarea.inp{min-height:72px;resize:vertical}
.inp:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,159,140,.15)}
.inp.err{border-color:var(--err)}
.inp:disabled,.inp[readonly]{background:#F5F8FB;color:var(--muted)}
.inp-ic{position:relative}
.inp-ic>svg.i{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.inp-ic>.inp{padding-left:40px}
.pre{position:relative}.pre>span{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted)}.pre>.inp{padding-left:28px}
.fgrid{display:grid;gap:14px 20px}
.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
.span2{grid-column:span 2}.span3{grid-column:span 3}.spanall{grid-column:1/-1}
.chk{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-weight:500}
.chk input{width:20px;height:20px;accent-color:var(--primary)}
.hint{font-size:12.5px;color:var(--muted);font-weight:400}

/* tablas */
.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
table.t{width:100%;border-collapse:collapse;font-size:14.5px}
table.t th{background:var(--head);color:var(--navy-ink);font-weight:700;text-align:left;padding:11px 12px;white-space:nowrap;position:sticky;top:0;z-index:1}
table.t td.nw,table.t th.nw{white-space:nowrap}
table.t td{padding:9px 12px;border-top:1px solid var(--line-2);vertical-align:middle}
table.t tbody tr:hover td{background:#F8FBFD}
table.t tr.click{cursor:pointer}
table.t tfoot td{font-weight:800;background:#F8FAFC;border-top:2px solid var(--line)}
table.t .act{white-space:nowrap;text-align:right}
table.t input.inp{min-height:36px;padding:6px 8px}
.empty{padding:36px;text-align:center;color:var(--muted)}
.chip{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:3px 11px;font-size:13px;font-weight:600;white-space:nowrap}
.chip::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor}
.chip.ok{background:#D8F7E6;color:#0A7A45}.chip.ok::before{background:#1DB46A}
.chip.warn{background:#FFEBC7;color:#9A5300}.chip.warn::before{background:var(--warn-dot)}
.chip.err{background:#FFDCDD;color:#B4232A}
.chip.info{background:#DCE8FF;color:#1D4FD8}
.chip.gray{background:var(--gray-bg);color:var(--muted)}
.stk-low{color:var(--warn);font-weight:700}.stk-out{color:var(--err);font-weight:700}
.inp.sm{min-height:34px;padding:5px 9px;font-size:13px;border-radius:8px}
.srv-pr{display:flex;align-items:center;gap:6px;margin-top:5px}.srv-pr .inp{width:104px}
.tabs.mini{margin-bottom:8px}.tabs.mini button{padding:7px 12px}
.alert{display:flex;gap:12px;align-items:center;padding:12px 16px;border-radius:12px;margin-bottom:16px;font-weight:500}
.alert.warn{background:var(--warn-bg);color:#7A4A00}.alert.err{background:var(--err-bg);color:#8E1F24}.alert.info{background:var(--info-bg);color:#123F82}.alert.ok{background:var(--ok-bg);color:#0E6B3F}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.tabs button{border:0;background:none;padding:11px 16px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}
.tabs button.on{color:var(--navy);border-bottom-color:#00B3C7}
.pager{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 4px 0}
.pager .pg{min-width:38px;height:38px;border:1px solid var(--line);background:#fff;border-radius:9px;cursor:pointer;font-weight:600}
.pager .pg.on{background:var(--grad);border-color:transparent;color:#fff}
.pager .pg:disabled{opacity:.4;cursor:default}
.totals{background:#F7FAFC;border:1px solid var(--line);border-radius:12px;padding:12px 18px;min-width:300px}
.totals .r{display:flex;justify-content:space-between;padding:5px 0;font-size:16px}
.totals .r span:last-child{font-variant-numeric:tabular-nums}
.totals .tot{background:linear-gradient(90deg,#D9FBF3,#DCEFFF);margin:8px -18px -12px;padding:14px 18px;border-radius:0 0 12px 12px;font-size:22px;font-weight:800;color:var(--navy-ink)}
.actions-bar{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:22px}

/* autocompletar */
.ac{position:relative}
.ac-list{position:absolute;left:0;right:0;top:calc(100% + 4px);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px rgba(16,40,80,.15);max-height:320px;overflow:auto;z-index:40}
.ac-list div{padding:9px 14px;cursor:pointer;display:flex;gap:12px;justify-content:space-between;align-items:center}
.ac-list div.on,.ac-list div:hover{background:var(--primary-soft)}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(10,25,50,.45);display:grid;place-items:center;z-index:100;padding:16px;animation:fi .12s}
@keyframes fi{from{opacity:0}}
.modal{background:#fff;border-radius:18px;box-shadow:0 24px 60px rgba(10,25,50,.3);width:min(560px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;animation:pop .15s}
@keyframes pop{from{transform:translateY(8px) scale(.98);opacity:0}}
.modal.sm{width:min(420px,100%)}.modal.md{width:min(760px,100%)}.modal.lg{width:min(1040px,100%)}.modal.xl{width:min(1200px,100%)}
.modal-h{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line-2)}
.modal-h h3{margin:0;font-size:22px;font-weight:800;color:var(--navy-ink);flex:1}
.modal-h svg.i{width:26px;height:26px}
.modal-b{padding:20px 22px;overflow:auto}
.modal-f{display:flex;gap:12px;justify-content:flex-end;padding:16px 22px;border-top:1px solid var(--line-2);flex-wrap:wrap}
.section{border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:16px}
.section h4{margin:0 0 12px;font-size:19px;font-weight:800;color:var(--navy-ink)}

/* impresión */
.print-grid{display:grid;grid-template-columns:300px 1fr;gap:20px}.print-grid>.fgrid{align-content:start}
.preview{background:#E9EEF4;border-radius:12px;padding:16px;display:flex;justify-content:center;max-height:62vh;overflow:auto}
.preview iframe{border:0;background:#fff;box-shadow:0 4px 16px rgba(0,0,0,.12)}

/* toast */
.toasts{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{pointer-events:auto;display:flex;gap:10px;align-items:center;background:#fff;border-left:5px solid var(--ok);box-shadow:0 10px 30px rgba(16,40,80,.18);border-radius:10px;padding:12px 18px;min-width:280px;max-width:560px;font-weight:500;animation:pop .2s}
.toast.err{border-left-color:var(--err)}.toast.warn{border-left-color:var(--warn-dot)}.toast.info{border-left-color:var(--info)}

/* flotantes: WhatsApp encima de TEKKI, esquina inferior derecha */
.fab-wa{position:fixed;right:30px;bottom:86px;width:58px;height:58px;border-radius:50%;background:var(--wa);display:grid;place-items:center;box-shadow:0 6px 18px rgba(37,211,102,.4);border:0;cursor:pointer;z-index:60}
.fab-wa svg{width:32px;height:32px;fill:#fff}
.fab-tekki{position:fixed;right:20px;bottom:20px;display:flex;align-items:center;gap:10px;background:#fff;border:1.5px solid #CFE0F2;border-radius:999px;padding:10px 20px;font-weight:800;font-size:17px;color:var(--navy-ink);box-shadow:0 6px 18px rgba(16,40,80,.12);cursor:pointer;z-index:60}
.fab-tekki svg.i{color:#0096DB}.fab-tekki .dot{width:10px;height:10px;border-radius:50%;background:#1DCE70}
.fab-tekki .dot.off{background:#B6C2D2}
.tekki-panel{position:fixed;right:20px;bottom:156px;width:min(380px,calc(100vw - 40px));height:min(480px,calc(100vh - 200px));z-index:61;display:flex;flex-direction:column;overflow:hidden}
.tekki-panel .msgs{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:8px;background:#F7FAFD}
.tekki-panel .m{padding:9px 13px;border-radius:12px;max-width:85%;white-space:pre-wrap}
.tekki-panel .m.u{align-self:flex-end;background:var(--grad);color:#fff}
.tekki-panel .m.a{align-self:flex-start;background:#fff;border:1px solid var(--line)}
.tekki-panel .m.s{align-self:center;background:var(--warn-bg);color:#7A4A00;font-size:13.5px;text-align:center;max-width:100%}

/* POS */
.pos{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(380px,.95fr);gap:18px;align-items:start}
.pos .scan{font-size:18px;min-height:52px}
.pos .cart-total{font-size:34px;font-weight:800;color:var(--navy-ink);font-variant-numeric:tabular-nums}
.paygrid{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center}
.paysum{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}
.paysum div{background:var(--head);border-radius:12px;padding:10px 14px}
.paysum b{display:block;font-size:22px;font-variant-numeric:tabular-nums}
.quick{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}

/* login */
.auth{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 20% 10%,#DDEBF8,transparent 50%),var(--bg)}
.auth .card{width:min(460px,100%);padding:30px}
.auth .card.wide{width:min(720px,100%)}
.auth img{width:220px;display:block;margin:0 auto 18px}

/* chart */
.chart svg{width:100%;height:auto;display:block}
.chart .bar{fill:url(#gb)}
.chart .bar:hover{opacity:.85}
.chart text{font-size:13px;fill:var(--muted);font-family:var(--font)}
.chart .grid line{stroke:#E6ECF3}

.dash-grid{grid-template-columns:minmax(0,.85fr) minmax(0,1.5fr)}
table.t.compact{font-size:13.5px}table.t.compact td,table.t.compact th{padding:9px 9px}
/* logo, firma, lector */
.top-logo{height:40px;max-width:140px;object-fit:contain;border-radius:6px}
.logo-card{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.logo-box{width:200px;height:110px;border:2px dashed #B8C8E6;border-radius:14px;display:grid;place-items:center;background:#F6F9FF;overflow:hidden;flex:none}
.logo-box img{max-width:90%;max-height:90%;object-fit:contain}
.dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;margin:0}.dl dt{color:var(--muted)}.dl dd{margin:0}
.big-num{font-size:20px;color:var(--navy);font-variant-numeric:tabular-nums}
.scan-state{display:flex;align-items:center;gap:8px;color:#007B6E;background:#E2FAF4;border-radius:10px;padding:7px 12px;margin:-4px 0 12px}
.scan-state svg.i{width:18px;height:18px}
/* responsive: tablet */
@media (max-width:1180px){
  .app{grid-template-columns:78px 1fr}
  .side{padding:14px 10px}
  .brand{padding:8px}.brand img.full{display:none}.brand .ico{display:block}
  .nav a{justify-content:center;padding:12px}.nav a span{display:none}
  .kpis,.kpis.k5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pos{grid-template-columns:1fr}
  .dash-grid{grid-template-columns:1fr}
  .c4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gsearch{width:240px}
}
@media (max-width:760px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:240px;transform:translateX(-100%);transition:transform .2s}
  .side.open{transform:none}
  .brand img.full{display:block}.brand .ico{display:none}
  .nav a{justify-content:flex-start}.nav a span{display:inline}
  .burger{display:inline-grid}
  .top{padding:12px 16px}.top h1{font-size:21px}
  .gsearch{display:none}
  .view{padding:16px 16px 140px}
  .kpis,.kpis.k3,.kpis.k5,.c2,.c3,.c4{grid-template-columns:1fr}
  .span2,.span3{grid-column:auto}
  .print-grid{grid-template-columns:1fr}
  .fab-wa{right:22px;bottom:76px;width:50px;height:50px}
  .fab-tekki{padding:8px 14px;font-size:15px}
}
@media print{ .side,.top,.fab-wa,.fab-tekki,.tekki-panel,.modal-bg,.toasts{display:none!important} .app{display:block} .view{padding:0} }
[hidden]{display:none!important}
label.f>.inp,label.f>input.inp,label.f>select.inp{display:block}
.codigo-rec{font:700 26px/1.2 ui-monospace,'SF Mono',Menlo,monospace;letter-spacing:2px;text-align:center;padding:16px;border:2px dashed #00A3E0;border-radius:14px;background:#EAF7FF;color:#0B2E86;user-select:all}
.btn.ghost{color:#0077B6}
/* TEKKI */
.tekki-panel{height:min(560px,calc(100vh - 190px));width:min(400px,calc(100vw - 40px))}
.tk-h{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--side);color:#fff;border-radius:var(--radius) var(--radius) 0 0}
.tk-h .small{opacity:.8}.tk-h .ibtn{color:#fff}.tk-h .ibtn:hover{background:rgba(255,255,255,.12)}.tk-h svg.i{width:24px;height:24px}
.tekki-panel .m.a{white-space:normal;max-width:92%;line-height:1.45}
.tekki-panel .m.a p{margin:0 0 6px}.tekki-panel .m.a p:last-child{margin-bottom:0}
.tekki-panel .m.a ol,.tekki-panel .m.a ul{margin:4px 0 6px;padding-left:20px}.tekki-panel .m.a li{margin:2px 0}
.tk-t{font-weight:800;color:var(--navy);margin-bottom:4px}
.tk-go{margin-top:8px;min-height:32px}
.tk-rel{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.tk-chip{border:1px solid #BFD3F5;background:#F1F6FF;color:#0B2E86;border-radius:999px;padding:5px 11px;font-size:13px;cursor:pointer;font-weight:600}
.tk-chip:hover{background:#E1ECFF}
.tk-wait{display:flex;gap:4px;padding:12px 14px}.tk-wait span{width:7px;height:7px;border-radius:50%;background:#7C93BD;animation:tkb 1s infinite}
.tk-wait span:nth-child(2){animation-delay:.15s}.tk-wait span:nth-child(3){animation-delay:.3s}
@keyframes tkb{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.tk-wait span{animation:none}}
.kbd{display:inline-block;font:700 11px/1 ui-monospace,Menlo,monospace;padding:3px 6px;border-radius:6px;border:1px solid currentColor;opacity:.75;margin-left:4px;vertical-align:middle}
.btn.pri .kbd{border-color:rgba(255,255,255,.7)}
.nav-k{margin-left:auto;font-size:10.5px;opacity:.55;border-color:rgba(255,255,255,.4)}
.nav a.on .nav-k{opacity:.9}
@media (max-width:1180px){.nav-k{display:none}}
.nav a{gap:12px}.nav a span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-k{flex:none}

/* ---------- pantalla de ingreso ---------- */
.auth2{min-height:100vh;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px));background:#E9F1FD}
.auth-card{width:min(1180px,100%);min-height:min(660px,calc(100vh - 48px));display:grid;grid-template-columns:1.12fr 1fr;background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 30px 70px -20px rgba(11,46,134,.35)}
.auth-hero{position:relative;background:radial-gradient(120% 70% at 100% 20%,rgba(0,201,167,.28),transparent 55%),linear-gradient(160deg,#0D2D73 0%,#0A1F55 55%,#081740 100%);color:#fff;padding:38px 44px 30px;display:flex;flex-direction:column;overflow:hidden}
.auth-hero::before{content:"";position:absolute;inset:auto -10% 30% -10%;height:220px;border-top:3px solid rgba(0,201,167,.55);border-radius:50%;transform:rotate(-12deg);filter:blur(.3px)}
.auth-hero-logo{background:#fff;border-radius:14px;padding:10px 16px;align-self:flex-start;position:relative}
.auth-hero-logo img{height:34px;display:block}
.auth-hero h1{font-size:clamp(34px,4vw,56px);line-height:1.04;margin:28px 0 12px;font-weight:800;letter-spacing:-1px;position:relative}
.auth-hero h1 span{color:#19D3B0}
.auth-hero p{margin:0;font-size:18px;color:#D7E4FA;position:relative}
.auth-ilus{width:100%;margin-top:auto;border-radius:16px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 18%);mask-image:linear-gradient(to bottom,transparent 0,#000 18%);position:relative}
.auth-pills{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px;position:relative}
.auth-pills span{display:inline-flex;align-items:center;gap:10px;border:2px solid #19C3A6;border-radius:999px;padding:9px 20px;font-weight:700;font-size:16px;background:rgba(8,23,64,.35)}
.auth-form{padding:44px clamp(24px,5vw,64px);display:flex;flex-direction:column;justify-content:center;gap:4px;overflow:auto}
.auth-brand{display:flex;align-items:center;gap:16px;justify-content:center}
.auth-brand img{height:52px;width:auto}
.auth-sep{width:2px;height:40px;background:#C9D5E8}
.auth-pos{background:linear-gradient(135deg,#0E9F8A,#0B8C7A);color:#fff;font-weight:800;font-size:26px;padding:4px 14px;border-radius:10px;letter-spacing:1px}
.auth-tag{text-align:center;color:#4A5A73;margin:4px 0 22px;font-size:16px}
.auth-form h2{font-size:clamp(26px,2.6vw,36px);font-weight:800;color:#0B1F55;text-align:center;margin:8px 0 22px;letter-spacing:-.4px}
.auth-sub{text-align:center;margin:-12px 0 18px}
.auth-note{text-align:center;margin:-10px 0 14px}
.auth-form .inp{min-height:52px;border-radius:12px;font-size:16px}
.auth-btn{width:100%;min-height:56px;font-size:19px;border-radius:12px;margin-top:6px;background:linear-gradient(135deg,#0FA58E,#0B8C7A)}
.pw{position:relative}.pw .inp{padding-right:52px}
.pw-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:none;padding:8px;border-radius:8px;color:#5B6B84;cursor:pointer}
.pw-eye.on{color:#0B8C7A}.pw-eye:hover{background:#EEF3FA}
.link{border:0;background:none;color:#0077B6;font-weight:600;cursor:pointer;padding:4px 0;font-size:15px}
.link.u{text-decoration:underline}
.auth-help{text-align:center;margin:22px 0 0;color:#11203B}
.auth-card.wide{grid-template-columns:.9fr 1.1fr}
@media (max-width:960px){.auth-card,.auth-card.wide{grid-template-columns:1fr}.auth-hero{padding:26px}.auth-ilus{max-height:220px;object-fit:cover}.auth-hero h1{margin-top:18px}}
@media (max-width:560px){.auth-hero .auth-ilus,.auth-pills{display:none}.auth-brand img{height:40px}.auth-pos{font-size:20px}}
/* bienvenida en el título */
.top h1 .hello{display:block;overflow:hidden;text-overflow:ellipsis}
.top h1 small{display:block;font-size:15px;font-weight:600;color:#4A5A73;letter-spacing:0;margin-top:2px}
.auth-sep{display:block;flex:none}
.btn.pri.auth-btn{background:linear-gradient(135deg,#10A88F,#0B8C7A);box-shadow:0 8px 20px -8px rgba(11,140,122,.6)}
.btn.pri.auth-btn:hover{background:#0B7E6E}
.app{grid-template-columns:252px 1fr}
.nav a{font-size:15.5px;padding:11px 12px}
@media (max-width:1180px){.app{grid-template-columns:78px 1fr}.nav a{padding:12px}}
@media (max-width:760px){.app{grid-template-columns:1fr}}
@media (max-width:560px){.auth-hero-logo{display:none}.auth-hero h1{margin-top:0}.auth-brand img{height:34px}.auth-sep{height:30px}}
/* ingreso v2: foto de tienda de borde a borde */
.auth-hero{padding-bottom:0}
.auth-photo{position:relative;margin:22px -44px 0;margin-top:auto;flex:none}
.auth-photo .auth-ilus{display:block;width:100%;margin:0;border-radius:0;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 22%);mask-image:linear-gradient(to bottom,transparent 0,#000 22%)}
.auth-photo::after{content:"";position:absolute;inset:auto 0 0 0;height:42%;background:linear-gradient(to bottom,transparent,rgba(8,23,64,.92));pointer-events:none}
.auth-photo .auth-pills{position:absolute;left:44px;right:44px;bottom:24px;margin:0;z-index:1}
.auth-hero::before{z-index:0}
@media (max-width:960px){.auth-photo{margin:18px -26px 0}.auth-photo .auth-pills{left:26px;right:26px}.auth-photo .auth-ilus{max-height:260px;object-fit:cover}}
@media (max-width:560px){.auth-photo{display:none}.auth-hero{padding-bottom:26px}}
.auth-hero::before{inset:auto;right:-28%;top:14%;width:85%;height:46%;border:0;border-radius:50%;transform:rotate(-18deg);background:radial-gradient(closest-side,rgba(25,211,176,.55),rgba(18,168,200,.18) 60%,transparent);filter:blur(28px)}
.auth-pills span{background:rgba(8,23,64,.55);backdrop-filter:blur(4px)}
@media (max-width:1180px){.auth-pills{gap:8px}.auth-pills span{font-size:14px;padding:7px 14px;gap:7px}.auth-pills svg.i{width:17px;height:17px}}

/* ---------- Soporte técnico (estilo menú guiado BS-CARE) ---------- */
.wa-chat{position:fixed;z-index:70;right:24px;bottom:156px;width:380px;max-height:min(620px,calc(100vh - 180px));display:flex;flex-direction:column;background:#EFEAE2;border-radius:20px;overflow:hidden;box-shadow:0 24px 60px rgba(0,20,60,.3),0 4px 14px rgba(0,0,0,.12);opacity:0;visibility:hidden;transform:translateY(16px) scale(.96);transform-origin:bottom right;transition:opacity .25s ease,transform .3s cubic-bezier(.34,1.4,.64,1),visibility .25s}
.wa-chat.open{opacity:1;visibility:visible;transform:none}
.wa-chat-head{display:flex;align-items:center;gap:.7rem;padding:.85rem .9rem;background:linear-gradient(135deg,#075E54,#128C7E);color:#fff}
.wa-chat-avatar{width:46px;height:46px;flex:none;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 0 0 2px rgba(255,255,255,.5)}
.wa-chat-avatar img{width:30px;height:30px;object-fit:contain}
.wa-chat-who{flex:1;min-width:0;line-height:1.25}.wa-chat-who strong{display:block;font-size:15px}
.wa-chat-who span{font-size:12px;opacity:.9;display:inline-flex;align-items:center;gap:5px}.wa-chat-who i{width:7px;height:7px;border-radius:50%;background:#4ADE80;display:inline-block}
.wa-chat-close,.wa-chat-restart{width:32px;height:32px;flex:none;border-radius:50%;border:0;background:rgba(255,255,255,.15);color:#fff;font-size:15px;cursor:pointer;display:inline-grid;place-items:center}
.wa-chat-close:hover,.wa-chat-restart:hover{background:rgba(255,255,255,.3)}
.wa-chat-body{flex:1;overflow-y:auto;min-height:240px;padding:14px 12px 8px;display:flex;flex-direction:column;gap:8px;background-image:radial-gradient(rgba(0,0,0,.035) 1px,transparent 1px);background-size:14px 14px}
.wa-msg{max-width:88%;padding:9px 12px;border-radius:12px;font-size:14px;line-height:1.45;box-shadow:0 1px 1px rgba(0,0,0,.08);animation:waIn .25s ease;color:#1F2937}
.wa-msg-bot{align-self:flex-start;background:#fff;border-top-left-radius:4px}
.wa-msg-user{align-self:flex-end;background:#D9FDD3;border-top-right-radius:4px}
@keyframes waIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.wa-typing{display:inline-flex;gap:4px;padding:12px 14px}.wa-typing span{width:7px;height:7px;border-radius:50%;background:#9CA3AF;animation:tkb 1s infinite ease-in-out}
.wa-typing span:nth-child(2){animation-delay:.15s}.wa-typing span:nth-child(3){animation-delay:.3s}
.wa-options{display:flex;flex-direction:column;gap:6px;align-self:stretch;padding-left:4px;animation:waIn .3s ease}
.wa-option{text-align:left;cursor:pointer;padding:9px 13px;border-radius:12px;border:1.5px solid #128C7E;background:#fff;color:#075E54;font:600 13.5px/1.3 var(--font);transition:background .15s,color .15s,transform .15s}
.wa-option:hover,.wa-option:focus-visible{background:#128C7E;color:#fff;transform:translateX(3px);outline:none}
.wa-chat-foot:empty{display:none}.wa-chat-foot{padding:12px;background:#F0F2F5;border-top:1px solid rgba(0,0,0,.06)}
.wa-final{display:flex;flex-direction:column;gap:9px}
.wa-preview{background:#D9FDD3;border-radius:10px;padding:9px 12px;font-size:13px;color:#1F2937;line-height:1.45;border-left:3px solid #25D366;white-space:pre-wrap;max-height:150px;overflow:auto}
.wa-name,.wa-free textarea{width:100%;border:1px solid #D1D5DB;border-radius:10px;padding:9px 12px;font:14px var(--font);background:#fff;color:#1F2937;resize:none}
.wa-name:focus,.wa-free textarea:focus{outline:2px solid #25D366;border-color:transparent}
.wa-go{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;border-radius:999px;background:#25D366;color:#fff!important;font-weight:800;font-size:15px;text-decoration:none;box-shadow:0 6px 18px rgba(37,211,102,.4)}
.wa-go:hover{background:#1EBE5D}.wa-go svg{fill:#fff}
.wa-free{display:flex;gap:8px;align-items:flex-end}
.wa-send-mini{width:42px;height:42px;flex:none;border-radius:50%;border:0;background:#25D366;color:#fff;font-size:16px;cursor:pointer}
.sop-alt{text-align:center;font-size:12.5px;color:#4B5563}.sop-copy{border:0;background:none;color:#075E54;font-weight:700;text-decoration:underline;cursor:pointer;font-size:12.5px}
.sop-kb b:first-child{display:block;color:#075E54;margin-bottom:4px}.sop-kb ol,.sop-kb ul{margin:4px 0;padding-left:20px}.sop-kb p{margin:0 0 5px}.sop-kb li{margin:2px 0}
.sop-go{margin-top:8px;border:0;background:#128C7E;color:#fff;border-radius:999px;padding:6px 12px;font-weight:700;font-size:12.5px;cursor:pointer}
.fab-wa.chat-open svg{transform:rotate(90deg) scale(0);opacity:0}.fab-wa svg{transition:transform .25s,opacity .2s}
.fab-wa.chat-open::after{content:"✕";position:absolute;font-size:24px;font-weight:700;color:#fff}
.auth2 ~ .wa-chat,.wa-chat{}
@media (max-width:760px){.wa-chat{right:10px;left:10px;bottom:140px;width:auto;max-height:calc(100vh - 170px)}}
@media (prefers-reduced-motion:reduce){.wa-chat,.wa-msg,.wa-options{transition:none;animation:none}}

/* Aviso de conexión */
.net-off{position:fixed;left:50%;top:10px;transform:translateX(-50%);z-index:9999;display:flex;gap:8px;align-items:center;max-width:min(680px,calc(100% - 32px));padding:10px 16px;border-radius:10px;background:var(--err,#c0392b);color:#fff;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.net-off .i{flex:none}

/* Firma electrónica faltante o vencida: aviso que no se pasa por alto */
.alert.firma-err{background:var(--err,#c0392b);color:#fff;border:2px solid #8E1F24;align-items:flex-start}
.alert.firma-err .firma-tit{font-weight:800;font-size:1.05em;letter-spacing:.02em;margin-bottom:2px}
.alert.firma-err .i{flex:none;margin-top:2px}
