:root{
  /* Paleta BILLETE — verde billete + tinta + crema. Nombres --yellow* conservados = ahora VERDE. */
  --ink:#12271b; --ink-soft:#33463a; --ink-mute:#556157;
  --yellow:#137a3c; --yellow-soft:#5fd08a; --yellow-bg:#dcefdf; --yellow-deep:#0a4a24;
  --mint:#5fd08a; /* acento luminoso sobre superficies tinta (texto/labels/counts) */
  --canvas:#f4f0e2; --paper:#ffffff; --cream:#e9e0cb; --mist:#e6ede8;
  --line:#d8e2d5; --line-hard:#12271b;
  --success:#137a3c; --danger:#dc2626; --info:#2563eb;
  --bd:2.5px solid var(--ink);
  --bd-thin:2px solid var(--ink);
  --sh:4px 4px 0 var(--ink);
  --sh-sm:3px 3px 0 var(--ink);
  --sh-lg:6px 6px 0 var(--ink);
  --r:14px; --r-sm:10px; --r-lg:20px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:"Inter",system-ui,sans-serif;
  background:var(--canvas);
  color:var(--ink);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
.tnum{font-variant-numeric:tabular-nums}
h1,h2,h3,h4,.display{font-family:"Archivo Black",sans-serif;font-weight:400;letter-spacing:-0.01em;line-height:1}
button{font-family:inherit;cursor:pointer}
input,select{font-family:inherit}
/* Zoom accidental fuera, pinch deliberado intacto (accesibilidad): manipulation
   permite pan+pinch pero elimina el double-tap-zoom y su delay — crítico para
   tapeo rápido en teclado de cobro y tarjetas de producto. */
button,[role="button"],a,label,input,select{touch-action:manipulation}
:focus-visible{outline:3px solid var(--yellow);outline-offset:2px}
img{max-width:100%}
[hidden]{display:none!important}

/* ============ SHELL ============ */
.shell{display:grid;grid-template-columns:76px minmax(0,1fr);min-height:100vh}
.rail{
  background:var(--ink);border-right:var(--bd);
  padding:12px 8px;display:flex;flex-direction:column;gap:8px;align-items:center;
  position:sticky;top:0;height:100vh;z-index:40;
}
.rail .logo{
  width:48px;height:48px;border-radius:12px;background:var(--yellow);
  border:var(--bd);display:grid;place-items:center;
  font-family:"Archivo Black";font-size:24px;color:#fff;margin-bottom:8px;
  box-shadow:2px 2px 0 var(--yellow-deep);flex:none;
}
.rail-btn{
  width:100%;padding:11px 4px;border-radius:12px;border:2px solid transparent;
  background:transparent;color:#c3cdbf;
  display:flex;flex-direction:column;align-items:center;gap:5px;
  font-weight:700;font-size:10.5px;letter-spacing:0.02em;transition:.12s;
}
.rail-btn .ic{font-size:22px;line-height:1}
.rail-btn:hover{background:#20402c;color:#fff}
.rail-btn.on{background:var(--yellow);color:#fff;border-color:var(--yellow-deep)}
.rail-spacer{flex:1}
.rail .cashier{
  width:44px;height:44px;border-radius:12px;background:var(--yellow-soft);
  border:var(--bd);display:grid;place-items:center;font-weight:800;font-size:16px;color:var(--ink);flex:none;
}

.main{min-width:0;padding:clamp(16px,2.6vw,30px) clamp(14px,2.6vw,32px) 40px}
.screen{display:none}
.screen.on{display:block}
.screen-head{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.screen-head h2{font-size:clamp(22px,3.4vw,34px)}
.screen-head .store{margin-left:auto;font-weight:700;font-size:13px;color:var(--ink-mute);display:none}
@media(min-width:720px){.screen-head .store{display:block}}
.demo-badge{
  display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:var(--mint);
  font-weight:800;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  padding:4px 10px;border-radius:999px;
}

/* ============ VENTA — 3 COLUMNAS ============ */
.pos{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}
.catalog{min-width:0}
.searchbar{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.search{flex:1;min-width:180px;position:relative}
.search input{
  width:100%;padding:14px 16px 14px 46px;font-size:15px;font-weight:600;
  border:var(--bd);border-radius:var(--r);background:var(--paper);box-shadow:var(--sh-sm);
}
.search input::placeholder{color:var(--ink-mute);font-weight:500}
.search .mag{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:18px}

.cats{display:flex;gap:9px;overflow-x:auto;padding-bottom:12px;margin-bottom:8px;scrollbar-width:thin}
.cats::-webkit-scrollbar{height:6px}
.cats::-webkit-scrollbar-thumb{background:var(--ink);border-radius:9px}
.cat{
  white-space:nowrap;border:var(--bd);border-radius:999px;background:var(--paper);
  padding:9px 16px;font-weight:800;font-size:13.5px;box-shadow:var(--sh-sm);
  display:inline-flex;align-items:center;gap:7px;transition:transform .06s,box-shadow .06s;
}
.cat .emo{font-size:15px}
.cat:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.cat:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.cat.on{background:var(--yellow);color:#fff}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.card{
  background:var(--paper);border:var(--bd);border-radius:var(--r);
  box-shadow:var(--sh);padding:12px;position:relative;
  display:flex;flex-direction:column;gap:10px;transition:transform .06s,box-shadow .06s;
  text-align:left;width:100%;
}
.card:not(.out):hover{transform:translate(-2px,-2px);box-shadow:var(--sh-lg)}
.card:not(.out):active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}
.card.out{opacity:.5;cursor:not-allowed}
.card .thumb{
  aspect-ratio:1.35/1;border-radius:var(--r-sm);border:var(--bd-thin);
  background:var(--yellow-bg);display:grid;place-items:center;font-size:44px;
}
.card .tag-iva{
  position:absolute;top:8px;left:8px;font-weight:800;font-size:10px;letter-spacing:.04em;
  background:var(--ink);color:#fff;border-radius:6px;padding:3px 6px;
}
.card .tag-iva.zero{background:var(--success)}
.card .tag-stock{
  position:absolute;top:8px;right:8px;font-weight:800;font-size:10px;
  background:var(--mist);color:var(--ink);border:var(--bd-thin);border-radius:6px;padding:2px 6px;
}
.card .tag-stock.low{background:#f0a828;color:#12271b}
.card .tag-stock.zero{background:var(--danger);color:#fff;border-color:#fff}
.card .name{font-weight:700;font-size:14.5px;line-height:1.25;min-height:2.5em}
.card .foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto}
.card .price{font-family:"Archivo Black";font-size:19px}
.card .add{
  width:44px;height:44px;flex:none;border-radius:11px;border:var(--bd);
  background:var(--yellow);font-family:"Archivo Black";font-size:24px;line-height:1;color:#fff;
  box-shadow:2px 2px 0 var(--ink);transition:transform .06s,box-shadow .06s;display:grid;place-items:center;
}
.card .add:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.empty-note{padding:40px 10px;text-align:center;color:var(--ink-mute);font-weight:700}

/* cart */
.cart{
  background:var(--paper);border:var(--bd);border-radius:var(--r-lg);
  box-shadow:var(--sh-lg);position:sticky;top:16px;overflow:hidden;
  display:flex;flex-direction:column;max-height:calc(100vh - 32px);
}
.cart-head{
  background:var(--yellow);border-bottom:var(--bd);padding:14px 16px;
  display:flex;align-items:center;justify-content:space-between;
}
.cart-head h3{font-size:17px;display:flex;align-items:center;gap:9px;color:#fff}
.cart-head .count{
  background:var(--ink);color:var(--mint);border-radius:999px;
  min-width:24px;height:24px;padding:0 7px;display:grid;place-items:center;font-size:12px;font-weight:800;
}
.cart-head .clear{background:none;border:none;font-weight:700;font-size:12.5px;text-decoration:underline;color:#fff}
.cart-items{padding:6px 16px;overflow-y:auto;flex:1;min-height:80px}
.cart-empty{padding:34px 8px;text-align:center;color:var(--ink-mute);font-weight:700;font-size:14px}
.line{display:flex;gap:12px;align-items:center;padding:13px 0;border-bottom:2px dashed var(--line)}
.line:last-child{border-bottom:none}
.line .lemo{
  width:44px;height:44px;flex:none;border-radius:10px;border:var(--bd-thin);
  background:var(--yellow-bg);display:grid;place-items:center;font-size:23px;
}
.line .linfo{flex:1;min-width:0}
.line .lname{font-weight:700;font-size:14px;line-height:1.2}
.line .lunit{font-size:12px;color:var(--ink-mute);font-weight:600}
.qty{display:flex;align-items:center;gap:0;border:var(--bd-thin);border-radius:9px;overflow:hidden;flex:none}
.qty button{
  width:32px;height:32px;background:var(--mist);border:none;font-family:"Archivo Black";
  font-size:16px;line-height:1;color:var(--ink);display:grid;place-items:center;
}
.qty button:active{background:var(--yellow)}
.qty .v{min-width:30px;text-align:center;font-weight:800;font-size:14px}
.line .lprice{width:58px;text-align:right;font-weight:800;font-size:14.5px;flex:none}

.discount-row{padding:10px 16px;border-top:var(--bd-thin);border-color:var(--line)}
.btn-desc{
  width:100%;border:var(--bd-thin);border-radius:var(--r-sm);background:var(--paper);
  padding:10px;font-weight:800;font-size:13.5px;box-shadow:var(--sh-sm);
  display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .06s,box-shadow .06s;
}
.btn-desc:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.btn-desc.active{background:var(--yellow);color:#fff}

.totals{padding:14px 16px;background:var(--cream);border-top:var(--bd)}
.trow{display:flex;justify-content:space-between;font-size:13.5px;font-weight:600;color:var(--ink-soft);padding:3px 0}
.trow.iva{color:var(--ink)}
.trow.desc{color:var(--danger);font-weight:700}
.trow.grand{margin-top:8px;padding-top:12px;border-top:2px dashed var(--ink);align-items:baseline}
.trow.grand .lbl{font-family:"Archivo Black";font-size:16px;color:var(--ink)}
.trow.grand .val{font-family:"Archivo Black";font-size:30px;color:var(--ink)}
.btn-cobrar{
  margin:0;width:100%;border:none;background:var(--ink);color:var(--mint);
  font-family:"Archivo Black";font-size:22px;padding:20px;letter-spacing:0.01em;
  display:flex;align-items:center;justify-content:center;gap:12px;
  box-shadow:inset 0 3px 0 #24402f;transition:filter .1s;
}
.btn-cobrar .amt{color:#fff}
.btn-cobrar:hover{filter:brightness(1.12)}
.btn-cobrar:active{box-shadow:inset 0 5px 0 #0a1a11}
.btn-cobrar:disabled{background:#3a453e;color:#8a948c;cursor:not-allowed;box-shadow:none}
.btn-cobrar:disabled .amt{color:#8a948c}

/* mobile cart bar */
.mcart{display:none}

/* ============ COBRO ============ */
.checkout{display:grid;grid-template-columns:1fr 400px;gap:18px;align-items:start}
.pay-main{
  background:var(--ink);border:var(--bd);border-radius:var(--r-lg);
  box-shadow:var(--sh-lg);overflow:hidden;color:#fff;
}
.pay-display{
  padding:clamp(22px,4vw,40px) clamp(20px,3vw,34px) 26px;text-align:center;
  background:radial-gradient(120% 120% at 50% 0%, #1b3a28 0%, #12271b 70%);border-bottom:var(--bd);
}
.pay-display .plabel{font-weight:800;font-size:12px;letter-spacing:0.16em;text-transform:uppercase;color:var(--mint)}
.pay-display .total{font-family:"Archivo Black";font-size:clamp(52px,11vw,96px);line-height:.9;margin-top:8px;color:#fff}
.pay-display .total .cur{color:var(--mint);font-size:.5em;vertical-align:super}
.pay-sub{display:flex;justify-content:center;gap:24px;margin-top:16px;flex-wrap:wrap;min-height:52px}
.pay-sub .chunk{text-align:center}
.pay-sub .chunk .k{font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#8fa596}
.pay-sub .chunk .v{font-family:"Archivo Black";font-size:22px;margin-top:3px}
.pay-sub .chunk.change .v{color:var(--mint)}
.pay-sub .chunk.short .v{color:var(--danger)}

.keypad{padding:clamp(14px,2.5vw,20px);display:grid;grid-template-columns:repeat(3,1fr);gap:12px;background:var(--ink)}
.key{
  border:var(--bd);border-radius:var(--r);background:var(--yellow);
  font-family:"Archivo Black";font-size:30px;color:#fff;
  padding:18px 0;min-height:64px;box-shadow:0 4px 0 var(--yellow-deep);transition:transform .05s,box-shadow .05s;
}
.key:active{transform:translateY(4px);box-shadow:0 0 0 var(--yellow-deep)}
.key.util{background:var(--paper);color:var(--ink);box-shadow:0 4px 0 var(--ink);font-size:22px}
.key.util:active{box-shadow:0 0 0 var(--ink)}
.keypad[hidden]{display:none}

.pay-side{display:flex;flex-direction:column;gap:16px}
.panel{background:var(--paper);border:var(--bd);border-radius:var(--r);box-shadow:var(--sh);padding:16px}
.panel h4{font-family:"Archivo Black";font-size:13px;letter-spacing:0.06em;text-transform:uppercase;margin-bottom:12px;color:var(--ink-soft)}
.methods{display:grid;grid-template-columns:1fr;gap:10px}
.method{
  display:flex;align-items:center;gap:12px;padding:14px;min-height:56px;
  border:var(--bd);border-radius:var(--r-sm);background:var(--paper);font-weight:700;font-size:15px;
  box-shadow:var(--sh-sm);transition:transform .06s,box-shadow .06s;text-align:left;width:100%;
}
.method .mi{font-size:22px;width:28px;text-align:center}
.method:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.method:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.method.on{background:var(--yellow);color:#fff}
.method .chk{margin-left:auto;font-weight:800;font-size:13px;opacity:0}
.method.on .chk{opacity:1}
.quickcash{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.quickcash[hidden]{display:none}
.qc{
  border:var(--bd-thin);border-radius:9px;background:var(--mist);
  padding:12px 0;font-weight:800;font-size:14px;box-shadow:2px 2px 0 var(--ink);
}
.qc:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.qc.on{background:var(--yellow);color:#fff}

.finvoice .toprow{display:flex;align-items:center;justify-content:space-between;gap:12px}
.switch{position:relative;width:60px;height:34px;flex:none}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:var(--mist);border:var(--bd);border-radius:999px;transition:.15s;box-shadow:var(--sh-sm)}
.slider::before{content:"";position:absolute;left:3px;top:3px;width:22px;height:22px;background:var(--paper);border:var(--bd-thin);border-radius:50%;transition:.15s}
.switch input:checked + .slider{background:var(--success)}
.switch input:checked + .slider::before{transform:translateX(26px);background:#fff}
.finvoice .fname{font-weight:800;font-size:15px;display:flex;align-items:center;gap:8px}
.finvoice .fields{margin-top:14px;display:grid;gap:10px}
.finvoice .fields[hidden]{display:none}
.field label{display:block;font-weight:700;font-size:12px;letter-spacing:0.03em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:5px}
.field input{width:100%;padding:12px 14px;font-size:15px;font-weight:600;border:var(--bd);border-radius:var(--r-sm);background:var(--paper)}
.field input.err{border-color:var(--danger);background:#fff5f5}
.field .hint{font-size:12px;color:var(--ink-mute);margin-top:4px;font-weight:600}
.field .hint.err{color:var(--danger)}
.consumidor{display:inline-flex;align-items:center;gap:8px;background:var(--yellow-bg);border:var(--bd-thin);border-radius:999px;padding:6px 12px;font-weight:700;font-size:13px;margin-top:6px}

.pay-actions{display:grid;grid-template-columns:auto 1fr;gap:10px}
.pay-back{
  border:var(--bd);background:var(--paper);color:var(--ink);border-radius:var(--r);
  font-weight:800;font-size:15px;padding:0 18px;box-shadow:var(--sh-sm);transition:transform .06s,box-shadow .06s;
}
.pay-back:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.pay-confirm{
  width:100%;border:var(--bd);background:var(--success);color:#fff;
  font-family:"Archivo Black";font-size:20px;padding:20px;border-radius:var(--r);
  box-shadow:var(--sh);transition:transform .06s,box-shadow .06s;
  display:flex;align-items:center;justify-content:center;gap:12px;
}
.pay-confirm:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--ink)}
.pay-confirm:disabled{background:#c9c9c9;color:#7a7a7a;border-color:#999;box-shadow:none;cursor:not-allowed}

/* ============ ÉXITO ============ */
.success-wrap{display:grid;place-items:center;padding:clamp(14px,4vw,40px) 0}
.success-card{
  background:var(--paper);border:var(--bd);border-radius:var(--r-lg);
  box-shadow:var(--sh-lg);max-width:460px;width:100%;overflow:hidden;text-align:center;
}
.success-top{background:var(--success);color:#fff;padding:clamp(28px,5vw,44px) 24px 32px;position:relative;overflow:hidden}
.success-top .rays{position:absolute;inset:0;background:repeating-conic-gradient(from 0deg at 50% 42%, rgba(255,255,255,.09) 0deg 12deg, transparent 12deg 24deg);opacity:.7}
.checkmark{position:relative;width:96px;height:96px;margin:0 auto 18px;border-radius:50%;background:#fff;border:var(--bd);display:grid;place-items:center;box-shadow:var(--sh)}
.checkmark span{font-family:"Archivo Black";font-size:52px;color:var(--success);line-height:1}
.success-top h2{position:relative;font-size:clamp(26px,5vw,34px);color:#fff}
.success-top .amt{position:relative;font-family:"Archivo Black";font-size:clamp(40px,9vw,58px);margin-top:6px}
.success-body{padding:24px}
.sri{display:flex;align-items:center;gap:12px;text-align:left;background:var(--yellow-bg);border:var(--bd);border-radius:var(--r);padding:14px;box-shadow:var(--sh-sm)}
.sri .seal{width:44px;height:44px;flex:none;border-radius:10px;background:var(--ink);color:var(--mint);display:grid;place-items:center;font-family:"Archivo Black";font-size:17px}
.sri .stxt strong{display:block;font-weight:800;font-size:14px}
.sri .stxt span{font-size:12.5px;color:var(--ink-soft);font-weight:600}
.receipt{margin-top:16px;text-align:left;border:2px dashed var(--ink);border-radius:var(--r);padding:14px 16px}
.receipt .rrow{display:flex;justify-content:space-between;gap:10px;font-size:13.5px;font-weight:600;padding:3px 0;color:var(--ink-soft)}
.receipt .rrow.b{font-weight:800;color:var(--ink);border-top:2px dashed var(--line);margin-top:6px;padding-top:9px;font-size:15px}
.receipt .auth{font-size:11px;color:var(--ink-mute);word-break:break-all;margin-top:8px;font-weight:600}
.success-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.sa{
  border:var(--bd);border-radius:var(--r);padding:15px;font-weight:800;font-size:14px;
  box-shadow:var(--sh-sm);background:var(--paper);transition:transform .06s,box-shadow .06s;
  display:flex;align-items:center;justify-content:center;gap:8px;
}
.sa.prim{background:var(--yellow);color:#fff}
.sa:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}

/* ============ INVENTARIO ============ */
.inv-tools{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.sync-ind{display:inline-flex;align-items:center;gap:7px;margin-left:auto;font-weight:700;font-size:12px;color:var(--ink-mute)}
.sync-ind .dot{width:11px;height:11px;border-radius:50%;background:var(--ink-mute);border:2px solid var(--ink);box-shadow:var(--sh);flex:none}
.sync-ind.ok .dot{background:var(--success)}
.sync-ind.busy .dot{background:#d97706;animation:syncpulse 1s ease-in-out infinite}
.sync-ind.err .dot{background:var(--danger)}
@keyframes syncpulse{0%,100%{opacity:1}50%{opacity:.25}}
.btn-prim{
  border:var(--bd);border-radius:var(--r);background:var(--yellow);color:#fff;
  font-family:"Archivo Black";font-size:14px;padding:13px 20px;box-shadow:var(--sh);
  transition:transform .06s,box-shadow .06s;display:inline-flex;align-items:center;gap:8px;
}
.btn-prim:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}
.inv-list{display:grid;gap:10px}
.inv-row{
  display:grid;grid-template-columns:52px minmax(0,1fr) auto auto auto;gap:14px;align-items:center;
  background:var(--paper);border:var(--bd);border-radius:var(--r);box-shadow:var(--sh-sm);padding:12px 14px;
}
.inv-row .iemo{width:52px;height:52px;border-radius:11px;border:var(--bd-thin);background:var(--yellow-bg);display:grid;place-items:center;font-size:26px}
.inv-row .iname{font-weight:800;font-size:15px}
.inv-row .imeta{font-size:12.5px;color:var(--ink-mute);font-weight:600;display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:3px}
.pill{font-weight:800;font-size:10.5px;letter-spacing:.03em;border-radius:6px;padding:2px 7px;border:var(--bd-thin)}
.pill.iva{background:var(--ink);color:#fff;border-color:var(--ink)}
.pill.iva.zero{background:var(--success);border-color:var(--success)}
.inv-row .iprice{font-family:"Archivo Black";font-size:18px;text-align:right}
.stock-ctl{display:flex;align-items:center;gap:0;border:var(--bd-thin);border-radius:9px;overflow:hidden}
.stock-ctl button{width:34px;height:36px;background:var(--mist);border:none;font-family:"Archivo Black";font-size:16px;color:var(--ink)}
.stock-ctl button:active{background:var(--yellow)}
.stock-ctl .sv{min-width:44px;text-align:center;font-weight:800;font-size:15px}
.stock-ctl .sv.low{color:#a86b08}
.stock-ctl .sv.zero{color:var(--danger)}
.inv-actions{display:flex;gap:6px}
.icon-btn{
  width:40px;height:40px;border:var(--bd-thin);border-radius:9px;background:var(--paper);
  font-size:16px;display:grid;place-items:center;box-shadow:2px 2px 0 var(--ink);transition:transform .06s,box-shadow .06s;
}
.icon-btn:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.icon-btn.danger{color:var(--danger)}

/* ============ VENTAS ============ */
.sales-bar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.sales-summary{
  display:flex;gap:20px;align-items:center;background:var(--ink);color:#fff;
  border:var(--bd);border-radius:var(--r);box-shadow:var(--sh);padding:14px 20px;flex-wrap:wrap;
}
.sales-summary .k{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8fa596}
.sales-summary .v{font-family:"Archivo Black";font-size:26px;color:#fff}
.sales-summary .v.yel{color:var(--mint)}
.date-field{display:flex;flex-direction:column;gap:4px}
.date-field label{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute)}
.date-field input{border:var(--bd);border-radius:var(--r-sm);padding:11px 12px;font-weight:700;font-size:14px;background:var(--paper);box-shadow:var(--sh-sm)}
.sales-list{display:grid;gap:10px}
.sale-row{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:14px;align-items:center;
  background:var(--paper);border:var(--bd);border-radius:var(--r);box-shadow:var(--sh-sm);padding:12px 14px;
  transition:transform .06s,box-shadow .06s;text-align:left;width:100%;
}
.sale-row:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.sale-row:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.sale-row.void{opacity:.6}
.sale-row.void .sfac,.sale-row.void .stot{text-decoration:line-through}
.sale-row .stime{font-family:"Archivo Black";font-size:16px;white-space:nowrap}
.sale-row .sfac{font-weight:800;font-size:14px}
.sale-row .scli{font-size:12.5px;color:var(--ink-mute);font-weight:600;margin-top:2px}
.sale-row .smeta{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.tag{font-weight:800;font-size:10.5px;border-radius:6px;padding:2px 8px;border:var(--bd-thin);background:var(--mist)}
.tag.void{background:var(--danger);color:#fff;border-color:#fff}
.sale-row .stot{font-family:"Archivo Black";font-size:20px;text-align:right}
.sale-row .chev{font-size:18px;color:var(--ink-mute)}

/* ============ CONFIG ============ */
.config-form{max-width:560px;display:grid;gap:16px}
.config-card{background:var(--paper);border:var(--bd);border-radius:var(--r);box-shadow:var(--sh);padding:18px}
.config-card h4{font-family:"Archivo Black";font-size:13px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:14px;color:var(--ink-soft)}
.config-card .field + .field{margin-top:12px}
.config-card .row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.config-btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.config-actions{display:flex;gap:10px;flex-wrap:wrap}
.btn-danger{
  border:var(--bd);border-radius:var(--r);background:var(--danger);color:#fff;
  font-family:"Archivo Black";font-size:14px;padding:13px 20px;box-shadow:var(--sh);
  transition:transform .06s,box-shadow .06s;
}
.btn-danger:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}
/* Gestor de categorías (Config) */
.cat-mgr{display:grid;gap:8px}
.catm-row{display:flex;align-items:center;gap:12px;border:var(--bd-thin);border-radius:var(--r-sm);background:var(--paper);padding:10px 12px;box-shadow:2px 2px 0 var(--ink)}
.catm-info{flex:1;min-width:0;display:flex;align-items:center;gap:10px}
.catm-name{font-weight:800;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.catm-n{font-size:11.5px;font-weight:800;color:var(--ink-mute);background:var(--mist);border:var(--bd-thin);border-radius:999px;padding:1px 9px;flex:none}
.catm-acts{display:flex;gap:6px;flex:none}
.catm-empty{font-weight:700;font-size:12.5px;color:var(--ink-mute)}

/* ============ MODAL ============ */
.overlay{position:fixed;inset:0;background:rgba(18,39,27,.55);z-index:80;display:grid;place-items:center;padding:16px;overflow-y:auto}
.overlay[hidden]{display:none}
.modal{
  background:var(--paper);border:var(--bd);border-radius:var(--r-lg);box-shadow:var(--sh-lg);
  width:100%;max-width:440px;margin:auto;overflow:hidden;
}
.modal-head{background:var(--yellow);border-bottom:var(--bd);padding:14px 18px;display:flex;align-items:center;justify-content:space-between}
.modal-head h3{font-size:18px;color:#fff}
.modal-close{background:var(--paper);border:var(--bd-thin);border-radius:8px;width:36px;height:36px;font-size:18px;font-weight:800;box-shadow:2px 2px 0 var(--ink)}
.modal-close:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.modal-body{padding:18px;display:grid;gap:12px;max-height:70vh;overflow-y:auto}
.modal-foot{padding:14px 18px;border-top:var(--bd);display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;background:var(--cream)}
.modal-foot:empty{display:none}
.btn-ghost{border:var(--bd);border-radius:var(--r-sm);background:var(--paper);font-weight:800;font-size:14px;padding:12px 18px;box-shadow:var(--sh-sm);transition:transform .06s,box-shadow .06s}
.btn-ghost:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.emoji-picker{display:flex;gap:6px;flex-wrap:wrap}
.emoji-opt{width:44px;height:44px;border:var(--bd-thin);border-radius:9px;background:var(--paper);font-size:22px;box-shadow:2px 2px 0 var(--ink)}
.emoji-opt.on{background:var(--yellow)}
.emoji-opt:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.seg{display:flex;gap:8px}
.seg button{flex:1;border:var(--bd-thin);border-radius:9px;background:var(--paper);font-weight:800;font-size:14px;padding:12px;box-shadow:2px 2px 0 var(--ink)}
.seg button.on{background:var(--yellow);color:#fff}
.seg button:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.receipt-lines{border:2px dashed var(--ink);border-radius:var(--r);padding:14px 16px}
.receipt-lines .rl{display:flex;justify-content:space-between;gap:10px;font-size:13px;font-weight:600;padding:3px 0;color:var(--ink-soft)}
.receipt-lines .rl.head{font-weight:800;color:var(--ink);border-bottom:2px dashed var(--line);padding-bottom:8px;margin-bottom:6px}
.receipt-lines .rl.b{font-weight:800;color:var(--ink);border-top:2px dashed var(--line);margin-top:6px;padding-top:9px;font-size:15px}

/* ============ TOAST ============ */
.toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:120;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{
  background:var(--ink);color:#fff;border:var(--bd);border-color:var(--yellow);border-radius:999px;
  padding:11px 20px;font-weight:800;font-size:14px;box-shadow:var(--sh);
  animation:pop .2s ease-out;max-width:90vw;
}
.toast.err{border-color:var(--danger)}
.toast.ok{border-color:var(--success)}
@keyframes pop{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}

/* ============ RESPONSIVE ============ */
@media(max-width:1080px){
  .pos{grid-template-columns:minmax(0,1fr) 330px}
  .checkout{grid-template-columns:1fr 340px}
}
@media(max-width:860px){
  .pos{grid-template-columns:1fr}
  .cart{grid-column:1/-1;position:static;max-height:none;margin-top:4px}
  .cart-items{max-height:340px}
  .checkout{grid-template-columns:1fr}
  .inv-row{grid-template-columns:52px minmax(0,1fr) auto;grid-template-areas:"emo info price" "emo info stock" ". actions actions";row-gap:8px}
  .inv-row .iemo{grid-area:emo}
  .inv-row .iinfo{grid-area:info}
  .inv-row .iprice{grid-area:price}
  .inv-row .stock-ctl{grid-area:stock;justify-self:end}
  .inv-actions{grid-area:actions;justify-content:flex-end}
}
@media(max-width:640px){
  .shell{grid-template-columns:1fr}
  .rail{
    position:fixed;left:0;right:0;bottom:0;top:auto;height:auto;width:100%;
    flex-direction:row;border-right:none;border-top:var(--bd);padding:6px 8px calc(6px + env(safe-area-inset-bottom));
    justify-content:space-around;
  }
  .rail .logo,.rail .cashier,.rail-spacer{display:none}
  .rail-btn{flex:1;padding:8px 4px;font-size:10px}
  .rail-btn .ic{font-size:20px}
  .main{padding-bottom:160px}
  .cart{display:none}
  .mcart{
    display:block;position:fixed;left:0;right:0;bottom:64px;z-index:60;
    background:var(--paper);border-top:var(--bd);box-shadow:0 -4px 0 rgba(0,0,0,.08);
    padding:12px 14px;
  }
  .mcart .mrow{display:flex;align-items:center;gap:12px}
  .mcart .mtot{flex:1;min-width:0}
  .mcart .mtot .k{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-mute)}
  .mcart .mtot .v{font-family:"Archivo Black";font-size:24px}
  .mcart .mbtn{
    border:none;background:var(--ink);color:var(--mint);font-family:"Archivo Black";
    font-size:16px;padding:15px 20px;border-radius:var(--r);display:flex;align-items:center;gap:9px;flex:none;
  }
  .mcart .mbtn:disabled{background:#c9c9c9;color:#888}
  .mcart .mbtn .c{background:var(--yellow);color:#fff;border-radius:999px;padding:1px 8px;font-size:13px}
  .mcart[hidden]{display:none}
  .grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .pay-side{gap:12px}
  .success-actions{grid-template-columns:1fr}
  .sale-row{grid-template-columns:auto minmax(0,1fr) auto}
  .sale-row .chev{display:none}
  .quickcash{grid-template-columns:repeat(2,1fr)}
}
@media(pointer:coarse){
  .cat,.method,.qty button,.stock-ctl button{min-height:48px}
  .qty button,.stock-ctl button{width:46px}
  .card .add{width:48px;height:48px}
  .icon-btn{width:48px;height:48px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{.rail,.mcart,.toasts{display:none!important}.shell{display:block}}

/* ============ INTEGRACIÓN SRI: login, badges, estados ============ */

/* --- Login --- */
.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:
  radial-gradient(circle at 20% 15%, var(--yellow-bg) 0, transparent 45%),
  radial-gradient(circle at 85% 85%, var(--cream) 0, transparent 45%), var(--canvas)}
.login-card{width:100%;max-width:380px;background:var(--paper);border:var(--bd);border-radius:var(--r-lg);
  box-shadow:var(--sh-lg);padding:clamp(24px,5vw,36px);display:flex;flex-direction:column;gap:14px;text-align:center}
.login-logo{width:60px;height:60px;margin:0 auto;border-radius:16px;background:var(--yellow);border:var(--bd);
  display:grid;place-items:center;font-family:"Archivo Black";font-size:32px;color:var(--ink);box-shadow:3px 3px 0 var(--yellow-deep)}
.login-card h1{font-size:30px}
.login-sub{color:var(--ink-mute);font-weight:600;font-size:13px;margin-top:-6px}
.login-card .field{text-align:left}
.login-card .field label{display:block;font-weight:700;font-size:12.5px;margin-bottom:6px}
.login-card .field input{width:100%;padding:13px 14px;border:var(--bd);border-radius:var(--r-sm);font-size:15px;font-weight:600;background:var(--paper)}
.login-card .field input:focus{outline:none;box-shadow:var(--sh-sm)}
.login-btn{width:100%;margin-top:4px}
.login-foot{color:var(--ink-mute);font-size:11.5px;font-weight:600;margin-top:2px}

/* --- Badge persistente ambiente pruebas --- */
.pruebas-badge{position:fixed;top:10px;right:12px;z-index:60;background:var(--danger);color:#fff;
  border:2px solid #fff;border-radius:999px;padding:5px 12px;font-weight:800;font-size:11px;letter-spacing:.02em;
  box-shadow:2px 2px 0 rgba(0,0,0,.35)}

/* --- Éxito: tonos por estado --- */
.success-top.err{background:var(--danger)}
.success-top.pending{background:var(--info)}
.checkmark.bad span{color:var(--danger)}
.spinner{position:relative;width:72px;height:72px;margin:0 auto 18px;border-radius:50%;
  border:7px solid rgba(255,255,255,.35);border-top-color:#fff;animation:cobra-spin .8s linear infinite}
@keyframes cobra-spin{to{transform:rotate(360deg)}}
.sri.err{background:#fde8e8}
.sri.err .seal{background:var(--danger);color:#fff}
.sri.pending{background:#e6efff}
.sri.pending .seal{background:var(--info);color:#fff}
.receipt .auth.err-msg{color:var(--danger);font-weight:700;font-size:12.5px}

/* --- Ventas: pills de estado --- */
.tag.ok{background:var(--success);color:#fff;border-color:#fff}
.tag.bad{background:var(--danger);color:#fff;border-color:#fff}
.tag.pend{background:var(--info);color:#fff;border-color:#fff}

/* ============ AUTOCOMPLETAR CONTACTOS ============ */
.ac-wrap{position:relative}
.ac-drop{
  position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;
  background:var(--paper);border:var(--bd);border-radius:var(--r-sm);box-shadow:var(--sh);
  max-height:236px;overflow-y:auto;padding:5px;
}
.ac-drop[hidden]{display:none}
.ac-opt{
  width:100%;text-align:left;border:var(--bd-thin);border-color:transparent;border-radius:8px;
  background:var(--paper);padding:10px 12px;display:flex;flex-direction:column;gap:2px;
  transition:background .08s,border-color .08s;
}
.ac-opt:hover,.ac-opt.on{background:var(--yellow-bg);border-color:var(--ink)}
.ac-opt .ac-name{font-weight:800;font-size:14px;color:var(--ink);line-height:1.2}
.ac-opt .ac-id{font-size:12px;font-weight:600;color:var(--ink-mute)}
.ac-opt .ac-id b{color:var(--ink-soft)}

/* ============ REFERENCIA DE PAGO ============ */
.payref{margin-top:12px}
.payref[hidden]{display:none}
.payref-link{
  width:100%;border:var(--bd-thin);border-color:var(--line-hard);border-style:dashed;border-radius:var(--r-sm);
  background:var(--paper);padding:11px;font-weight:800;font-size:13px;color:var(--ink-soft);
  transition:transform .06s,box-shadow .06s,background .1s;
}
.payref-link:hover{background:var(--yellow-bg)}
.payref-link:active{transform:translate(2px,2px)}
.payref-open{border:var(--bd-thin);border-radius:var(--r-sm);background:var(--cream);padding:12px;display:grid;gap:10px}
.payref-head{display:flex;align-items:center;justify-content:space-between;font-weight:800;font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.payref-x{background:var(--paper);border:var(--bd-thin);border-radius:7px;width:30px;height:30px;font-size:13px;font-weight:800;box-shadow:2px 2px 0 var(--ink)}
.payref-x:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}

/* ============ CAJA ============ */
/* --- Chip de caja en el header de Vender + popover Cobra --- */
.caja-chip-wrap{position:relative;flex:none}
.caja-chip{
  display:inline-flex;align-items:center;gap:8px;border:var(--bd);border-radius:999px;
  background:var(--paper);padding:8px 14px;font-weight:800;font-size:12.5px;color:var(--ink);
  box-shadow:var(--sh-sm);transition:transform .06s,box-shadow .06s;min-height:40px;white-space:nowrap;
}
.caja-chip:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.caja-chip:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.caja-chip .cc-dot{width:10px;height:10px;border-radius:50%;background:var(--ink-mute);border:2px solid var(--ink);flex:none}
.caja-chip.open{background:var(--yellow-bg)}
.caja-chip.open .cc-dot{background:var(--success);animation:syncpulse 1.6s ease-in-out infinite}
.caja-chip .cc-cv{font-size:10px;color:var(--ink-mute);transition:transform .15s}
.caja-chip[aria-expanded="true"] .cc-cv{transform:rotate(180deg)}
.caja-pop{
  position:absolute;top:calc(100% + 8px);right:0;z-index:70;min-width:224px;max-width:88vw;
  background:var(--paper);border:var(--bd);border-radius:var(--r);box-shadow:var(--sh-lg);
  padding:8px;display:grid;gap:6px;
}
.caja-pop[hidden]{display:none}
.caja-pop-act{
  width:100%;text-align:left;border:var(--bd-thin);border-radius:var(--r-sm);background:var(--paper);
  padding:12px 14px;font-weight:800;font-size:14px;color:var(--ink);box-shadow:2px 2px 0 var(--ink);
  display:flex;align-items:center;gap:9px;transition:transform .06s,box-shadow .06s;min-height:46px;
}
.caja-pop-act:hover{background:var(--yellow-bg)}
.caja-pop-act:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
/* En móvil el chip gana la esquina derecha (el store-label ya se oculta <720px) */
@media(max-width:719px){.caja-chip-wrap{margin-left:auto}}
.caja-sum{border:2px dashed var(--ink);border-radius:var(--r);padding:14px 16px;display:grid;gap:2px}
.caja-sum .cr{display:flex;justify-content:space-between;gap:10px;font-size:13.5px;font-weight:600;color:var(--ink-soft);padding:3px 0}
.caja-sum .cr.head{font-weight:800;color:var(--ink);border-bottom:2px dashed var(--line);padding-bottom:8px;margin-bottom:4px}
.caja-sum .cr.b{font-weight:800;color:var(--ink);border-top:2px dashed var(--line);margin-top:4px;padding-top:9px;font-size:15px}
.caja-diff{border:var(--bd);border-radius:var(--r);padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;font-weight:800;box-shadow:var(--sh-sm);margin-top:10px}
.caja-diff .cd-k{font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.caja-diff .cd-v{font-family:"Archivo Black";font-size:20px}
.caja-diff.cuadre{background:#eaf7ee}
.caja-diff.cuadre .cd-v{color:var(--success)}
.caja-diff.descuadre{background:#fdecec}
.caja-diff.descuadre .cd-v{color:var(--danger)}
.caja-hist{display:grid;gap:9px}
.caja-hrow{
  width:100%;text-align:left;border:var(--bd);border-radius:var(--r-sm);background:var(--paper);
  box-shadow:var(--sh-sm);padding:12px 14px;display:flex;align-items:center;gap:12px;
  transition:transform .06s,box-shadow .06s;
}
.caja-hrow:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.caja-hrow:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.caja-hrow .hh{flex:1;min-width:0}
.caja-hrow .hh .hd{font-weight:800;font-size:13.5px}
.caja-hrow .hh .ht{font-size:12px;color:var(--ink-mute);font-weight:600;margin-top:2px}
.caja-hrow .hv{font-family:"Archivo Black";font-size:16px;text-align:right}
.caja-hrow .cuadre{color:var(--success)}.caja-hrow .descuadre{color:var(--danger)}

/* ============ CALENDARIO COBRA ============ */
.cal-wrap{position:relative}
.cal-btn{
  display:inline-flex;align-items:center;gap:9px;border:var(--bd);border-radius:var(--r-sm);
  background:var(--paper);padding:11px 14px;font-weight:800;font-size:14px;color:var(--ink);
  box-shadow:var(--sh-sm);transition:transform .06s,box-shadow .06s;min-height:46px;
}
.cal-btn:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.cal-btn:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.cal-btn .cal-ic{font-size:16px}
.cal-btn .cal-cv{font-size:11px;color:var(--ink-mute)}
/* Datepicker = modal Cobra centrado (overlay + tarjeta), en desktop y móvil.
   Mata el problema de posicionamiento del popover que se salía de pantalla. */
.cal-pop{
  position:fixed;inset:0;z-index:80;display:grid;place-items:center;
  padding:16px;background:rgba(18,39,27,.55);overflow-y:auto;
}
.cal-pop[hidden]{display:none}
.cal-card{
  width:100%;max-width:332px;margin:auto;background:var(--paper);border:var(--bd);
  border-radius:var(--r-lg);box-shadow:var(--sh-lg);padding:14px;
}
.cal-modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.cal-modal-title{font-family:"Archivo Black";font-size:16px}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.cal-title{font-family:"Archivo Black";font-size:15px}
.cal-nav{width:38px;height:38px;border:var(--bd-thin);border-radius:9px;background:var(--paper);font-size:16px;font-weight:800;box-shadow:2px 2px 0 var(--ink);display:grid;place-items:center;flex:none}
.cal-nav:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.cal-dow span{text-align:center;font-weight:800;font-size:10.5px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-mute)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-cell{min-height:40px}
.cal-day{
  position:relative;min-height:40px;border:var(--bd-thin);border-color:transparent;border-radius:9px;
  background:var(--paper);font-weight:700;font-size:14px;color:var(--ink);
  display:grid;place-items:center;transition:background .08s,border-color .08s,transform .05s;
}
.cal-day:hover{background:var(--yellow-bg);border-color:var(--ink)}
.cal-day:active{transform:translateY(1px)}
.cal-day.today{border-color:var(--ink);border-style:dashed}
/* Rango: inicio y fin en verde sólido; días intermedios en menta */
.cal-day.in-range{background:#eaf7ee;border-color:transparent;color:var(--ink);border-radius:0;font-weight:800}
.cal-day.sel{background:var(--success);border-color:var(--ink);box-shadow:2px 2px 0 var(--ink);font-weight:800;color:#fff;z-index:1}
.cal-dot{position:absolute;bottom:5px;left:50%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:var(--success)}
.cal-day.sel .cal-dot{background:#fff}
.cal-day.in-range .cal-dot{background:var(--ink)}
/* Fila de chips de atajo pegada bajo la grilla (mata el espacio blanco del footer) */
.cal-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;border-top:2px dashed var(--line)}
.cal-chip{flex:1 1 auto;min-height:38px;border:var(--bd-thin);border-radius:9px;background:var(--mist);font-weight:800;font-size:12.5px;color:var(--ink);padding:8px 10px;box-shadow:2px 2px 0 var(--ink);white-space:nowrap;transition:transform .06s,box-shadow .06s}
.cal-chip:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.cal-chip.on{background:var(--success);color:#fff;border-color:var(--ink)}
/* Separador de día en la lista de Ventas multi-día */
.sale-daysep{font-family:"Archivo Black";font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-mute);padding:14px 2px 6px}
.sale-daysep:first-child{padding-top:4px}
@media(pointer:coarse){
  .cal-day,.cal-cell{min-height:44px}
  .cal-nav{width:44px;height:44px}
  .payref-x,.caja-hrow{min-height:44px}
  .cal-chip{min-height:44px}
  .modal-close{width:44px;height:44px}
}
@media(max-width:640px){
  .caja-btns{margin-left:0;width:100%}
  /* La fecha ocupa toda la fila (el calendario ahora es un modal centrado, ver .cal-pop) */
  .sales-bar .date-field{width:100%}
  .cal-btn{width:100%;justify-content:flex-start}
  .cal-btn #sales-date-txt{margin-right:auto}
}

/* iOS auto-zoom al enfocar inputs: se dispara con font-size <16px. En táctil/móvil
   subimos a 16px (feedback_ios_input_zoom, mismo patrón que SkinCo/motivando-v2). */
@media (pointer:coarse), (max-width:640px){
  .search input, .field input, .field select, .date-field input{font-size:16px}
}

/* ================================================================
   BATCH UX MÓVIL (jul-11) — stepper en tarjeta · bottom-sheet ·
   nav auto-ocultable · emoji colapsado · dropdown Cobra
   ================================================================ */

/* --- 3 · Emoji colapsado en el modal de producto --- */
.emoji-collapse{display:flex;flex-direction:column;gap:10px}
.emoji-sel{
  width:56px;height:56px;border:var(--bd);border-radius:var(--r-sm);background:var(--paper);
  font-size:28px;line-height:1;box-shadow:var(--sh-sm);display:grid;place-items:center;
  transition:transform .06s,box-shadow .06s,background .1s;
}
.emoji-sel:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.emoji-sel[aria-expanded="true"]{background:var(--yellow-bg);border-color:var(--yellow)}
.emoji-picker[hidden]{display:none}
.emoji-picker:not([hidden]){animation:emoInflate .16s ease-out}
@keyframes emoInflate{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* --- 4 · Dropdown Cobra (reemplaza el <select> de categoría) --- */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ddown{position:relative}
.ddbtn{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;
  border:var(--bd);border-radius:var(--r-sm);background:var(--paper);padding:12px 14px;
  font-weight:700;font-size:15px;color:var(--ink);box-shadow:var(--sh-sm);min-height:46px;text-align:left;
  transition:transform .06s,box-shadow .06s;
}
.ddbtn:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.ddbtn .ddlabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ddbtn .ddcv{font-size:12px;color:var(--ink-mute);flex:none;transition:transform .15s}
.ddbtn[aria-expanded="true"] .ddcv{transform:rotate(180deg)}
.ddpanel{
  position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:20;
  background:var(--paper);border:var(--bd);border-radius:var(--r-sm);box-shadow:var(--sh);
  max-height:240px;overflow-y:auto;padding:5px;
}
.ddpanel[hidden]{display:none}
.ddopt{
  width:100%;text-align:left;border:var(--bd-thin);border-color:transparent;border-radius:8px;
  background:var(--paper);padding:11px 12px;font-weight:700;font-size:14.5px;color:var(--ink);
  min-height:44px;display:flex;align-items:center;transition:background .08s,border-color .08s;
}
.ddopt:hover,.ddopt.active{background:var(--yellow-bg);border-color:var(--ink)}
.ddopt.on{background:var(--yellow);color:#fff;border-color:var(--yellow-deep)}
.ddopt.new{color:var(--yellow-deep);font-weight:800}
.ddopt.on.new{color:#fff}

/* --- 1a · Stepper dentro de la tarjeta de producto (visible solo en móvil, ver media query) --- */
.card .cstep{display:none;align-items:center;border:var(--bd-thin);border-radius:11px;overflow:hidden}
.card .cstep .cst-b{
  width:44px;height:40px;background:var(--mist);display:grid;place-items:center;
  font-family:"Archivo Black";font-size:20px;line-height:1;color:var(--ink);flex:none;
}
.card .cstep .cst-b:active{background:var(--yellow);color:#fff}
.card .cstep .cst-v{flex:1;text-align:center;font-weight:800;font-size:16px}

/* --- 1b + 2 · Bottom-sheet y nav-handle: ocultos por defecto (desktop intacto) --- */
.sheet-ov,.csheet{display:none}
.navhandle{display:none}

/* ============ MÓVIL ≤640: activación real ============ */
@media(max-width:640px){
  /* 1a · realce + stepper cuando el producto está en el carrito */
  .card.in-cart{border-color:var(--yellow);box-shadow:4px 4px 0 var(--yellow-deep)}
  .card.in-cart .foot{flex-direction:column;align-items:stretch;gap:8px}
  .card.in-cart .add{display:none}
  .card.in-cart .cstep{display:flex;width:100%;justify-content:space-between}

  /* 2 · nav inferior auto-ocultable */
  .rail{transition:transform .2s ease}
  .rail.down{transform:translateY(130%)}
  .mcart{transition:transform .2s ease}
  .mcart.lowered{transform:translateY(64px)}
  .mcart .mtot{position:relative;padding-right:24px;cursor:pointer}
  .mcart-caret{position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:16px;color:var(--ink-mute);font-weight:800}
  .navhandle{
    display:flex;align-items:center;gap:5px;position:absolute;left:50%;top:-32px;transform:translateX(-50%);
    height:28px;padding:0 18px;border:var(--bd-thin);border-bottom:none;
    border-top-left-radius:12px;border-top-right-radius:12px;
    background:var(--ink);color:var(--mint);font-weight:800;font-size:12px;letter-spacing:.02em;
    box-shadow:0 -3px 0 rgba(0,0,0,.18);
  }
  .navhandle .nh-ic{font-size:14px;line-height:1}
  .navhandle[hidden]{display:none}

  /* 1b · bottom-sheet del carrito */
  .sheet-ov{
    display:block;position:fixed;inset:0;z-index:70;background:rgba(18,39,27,.5);
    opacity:0;transition:opacity .22s ease;
  }
  .sheet-ov.show{opacity:1}
  .sheet-ov[hidden]{display:none}
  .csheet{
    display:flex;flex-direction:column;position:fixed;left:0;right:0;bottom:0;z-index:72;
    max-height:75vh;background:var(--paper);border-top:6px solid var(--ink);
    border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);
    box-shadow:0 -8px 0 rgba(18,39,27,.12), 0 -2px 30px rgba(0,0,0,.28);
    transform:translateY(100%);transition:transform .22s ease;padding-bottom:env(safe-area-inset-bottom);
  }
  .csheet.up{transform:translateY(0)}
  .csheet[hidden]{display:none}
  .csheet-grip{padding:10px 0 4px;display:flex;justify-content:center;flex:none;touch-action:none;cursor:grab}
  .csheet-grip span{width:44px;height:5px;border-radius:99px;background:var(--line-hard);opacity:.35}
  .csheet-head{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:4px 16px 12px;border-bottom:var(--bd-thin);border-color:var(--line);flex:none;touch-action:none;
  }
  .csheet-head h3{font-size:18px;display:flex;align-items:center;gap:9px}
  .csheet-head .count{background:var(--ink);color:var(--mint);border-radius:999px;min-width:24px;height:24px;padding:0 7px;display:grid;place-items:center;font-size:12px;font-weight:800}
  .csheet-hact{display:flex;align-items:center;gap:8px;flex:none}
  .csheet-clear{background:none;border:none;font-weight:800;font-size:13px;text-decoration:underline;color:var(--danger)}
  .csheet-x{background:var(--paper);border:var(--bd-thin);border-radius:8px;width:38px;height:38px;font-size:16px;font-weight:800;box-shadow:2px 2px 0 var(--ink)}
  .csheet-x:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
  .csheet-items{overflow-y:auto;flex:1;min-height:60px;padding:2px 16px;-webkit-overflow-scrolling:touch}
  .csheet-items .cart-empty{padding:30px 8px;text-align:center;color:var(--ink-mute);font-weight:700;font-size:14px}
  .csheet-items .sline{
    display:grid;grid-template-columns:44px minmax(0,1fr) auto;
    grid-template-areas:"emo info price" "emo qty rm";gap:8px 12px;align-items:center;
    padding:12px 0;border-bottom:2px dashed var(--line);
  }
  .csheet-items .sline:last-child{border-bottom:none}
  .csheet-items .sline .lemo{grid-area:emo;width:44px;height:44px;border-radius:10px;border:var(--bd-thin);background:var(--yellow-bg);display:grid;place-items:center;font-size:23px;align-self:start}
  .csheet-items .sline .linfo{grid-area:info;min-width:0}
  .csheet-items .sline .lname{font-weight:700;font-size:14px;line-height:1.2}
  .csheet-items .sline .lunit{font-size:12px;color:var(--ink-mute);font-weight:600}
  .csheet-items .sline .lprice{grid-area:price;text-align:right;font-weight:800;font-size:15px;align-self:start}
  .csheet-items .sline .qty{grid-area:qty;justify-self:start}
  .csheet-items .sline .lrm{grid-area:rm;justify-self:end;width:40px;height:40px;border:var(--bd-thin);border-radius:9px;background:var(--paper);font-size:15px;box-shadow:2px 2px 0 var(--ink);color:var(--danger);display:grid;place-items:center}
  .csheet-items .sline .lrm:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
  .csheet-disc{padding:10px 16px 0;flex:none}
  .csheet .totals{flex:none}
  .csheet .btn-cobrar{flex:none}
}

/* ================================================================
   FIRMA ELECTRÓNICA + LOGO DEL NEGOCIO (Config) · aviso proactivo
   ================================================================ */

/* --- Estado de la firma con semáforo --- */
.cert-state{
  display:flex;align-items:center;gap:12px;border:var(--bd);border-radius:var(--r-sm);
  padding:12px 14px;margin-bottom:14px;box-shadow:var(--sh-sm);
}
.cert-state .cs-dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--ink);flex:none}
.cert-state .cs-txt{min-width:0}
.cert-state .cs-txt strong{display:block;font-weight:800;font-size:14px;line-height:1.25;word-break:break-word}
.cert-state .cs-txt span{font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.cert-state.ok{background:var(--yellow-bg)}
.cert-state.ok .cs-dot{background:var(--success)}
.cert-state.warn{background:#fdf1dc}
.cert-state.warn .cs-dot{background:#d97706}
.cert-state.warn .cs-txt span{color:#a86b08}
.cert-state.bad{background:#fdecec}
.cert-state.bad .cs-dot{background:var(--danger)}
.cert-state.bad .cs-txt span{color:var(--danger)}

/* --- Input file estilo Cobra (firma y logo) --- */
.file-drop{
  display:flex;align-items:center;gap:10px;width:100%;border:2px dashed var(--ink);
  border-radius:var(--r-sm);background:var(--paper);padding:12px 14px;font-weight:700;font-size:14px;
  cursor:pointer;transition:background .1s;min-height:48px;
}
.file-drop:hover{background:var(--yellow-bg)}
.file-drop .fd-ic{font-size:18px;flex:none}
.file-drop .fd-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft)}

/* --- Contraseña con ojo --- */
.pass-wrap{position:relative}
.pass-wrap input{width:100%;padding:12px 14px;padding-right:52px;font-size:15px;font-weight:600;border:var(--bd);border-radius:var(--r-sm);background:var(--paper)}
.pass-eye{
  position:absolute;right:6px;top:6px;bottom:6px;width:40px;
  border:var(--bd-thin);border-radius:9px;background:var(--paper);
  font-size:16px;box-shadow:2px 2px 0 var(--ink);display:grid;place-items:center;
}
.pass-eye:active{background:var(--yellow)}

.cert-form .btn-prim{width:100%;justify-content:center;margin-top:12px}
.cert-remove{
  display:block;width:100%;margin-top:12px;background:none;border:none;color:var(--danger);
  font-weight:800;font-size:13px;text-decoration:underline;padding:6px 0;text-align:center;
}

/* --- Preview del logo con fondo damero --- */
.logo-preview{
  width:100%;max-width:220px;min-height:120px;border:var(--bd);border-radius:var(--r-sm);
  display:grid;place-items:center;overflow:hidden;box-shadow:var(--sh-sm);padding:8px;
  background-color:var(--paper);
  background-image:
    linear-gradient(45deg,#e2e2e2 25%,transparent 25%),
    linear-gradient(-45deg,#e2e2e2 25%,transparent 25%),
    linear-gradient(45deg,transparent 75%,#e2e2e2 75%),
    linear-gradient(-45deg,transparent 75%,#e2e2e2 75%);
  background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;
}
.logo-preview img{max-width:100%;max-height:140px;object-fit:contain;display:block}
.logo-preview .logo-ph{font-weight:800;font-size:13px;color:var(--ink-mute);background:var(--paper);padding:5px 12px;border-radius:7px;border:var(--bd-thin)}

/* --- Badge global: firma por vencer / vencida --- */
.cert-badge{
  position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:60;
  border:2px solid #fff;border-radius:999px;padding:6px 14px;font-weight:800;font-size:11.5px;
  letter-spacing:.01em;box-shadow:2px 2px 0 rgba(0,0,0,.3);cursor:pointer;white-space:nowrap;max-width:92vw;
  overflow:hidden;text-overflow:ellipsis;
}
.cert-badge.warn{background:#d97706;color:#fff}
.cert-badge.bad{background:var(--danger);color:#fff}
.cert-badge[hidden]{display:none}

/* --- Pantalla de reconexión (boot sin server: el POS no opera con data vieja) --- */
.offline-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--canvas)}
.offline-card{
  width:100%;max-width:400px;background:var(--paper);border:var(--bd);border-radius:var(--r-lg);
  box-shadow:var(--sh-lg);padding:34px 26px;text-align:center;
}
.offline-card .offline-ic{font-size:44px;line-height:1;margin-bottom:14px}
.offline-card h2{font-size:22px;margin-bottom:10px}
.offline-card p{font-weight:600;font-size:13.5px;color:var(--ink-soft);margin-bottom:20px;line-height:1.55}
.offline-card .btn-prim{width:100%;padding:13px;font-size:15px}

/* ================================================================
   POS DE VERDAD (batch) — impresión · código de barras · venta en
   espera · onboarding + rubro + foto de producto
   ================================================================ */

/* --- Foto de producto: miniaturas (grid, carrito, inventario, selector) --- */
.pthumb{width:100%;height:100%;object-fit:cover;display:block}
.card .thumb,.line .lemo,.sline .lemo,.inv-row .iemo,.emoji-sel,.foto-box{overflow:hidden}

/* --- Pestañas Emoji | Foto en el modal de producto --- */
.pickpanel{border:var(--bd-thin);border-radius:var(--r-sm);background:var(--paper);padding:8px;margin-top:2px}
.pickpanel[hidden]{display:none}
.pickpanel:not([hidden]){animation:emoInflate .16s ease-out}
.picktabs{display:flex;gap:6px;margin-bottom:8px}
.picktab{flex:1;border:var(--bd-thin);border-radius:8px;background:var(--paper);font-weight:800;font-size:13px;padding:9px;box-shadow:2px 2px 0 var(--ink)}
.picktab.on{background:var(--yellow);color:#fff}
.picktab:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.pickpane[hidden]{display:none}
.foto-box{width:100%;min-height:120px;border:2px dashed var(--ink);border-radius:var(--r-sm);display:grid;place-items:center;margin-bottom:10px;background:var(--mist)}
.foto-box.has{border-style:solid}
.foto-box .foto-ph{font-weight:800;font-size:13px;color:var(--ink-mute)}
.foto-box .pthumb{width:100%;height:180px;object-fit:contain;background:#fff}
.emoji-sel .pthumb{width:100%;height:100%}

/* --- Venta en espera: chip en el header + botón ⏸ del carrito --- */
.vhead-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
.vhead-actions .caja-chip-wrap{margin-left:0}
@media(max-width:719px){.vhead-actions .caja-chip-wrap{margin-left:0}}
.espera-chip-wrap{position:relative;flex:none}
.espera-chip-wrap[hidden]{display:none}
.espera-chip{
  display:inline-flex;align-items:center;gap:5px;border:var(--bd);border-radius:999px;
  background:#fbeecb;padding:8px 13px;font-weight:800;font-size:13px;color:var(--ink);
  box-shadow:var(--sh-sm);min-height:40px;transition:transform .06s,box-shadow .06s;
}
.espera-chip:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.espera-chip:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.cart-head-act{display:flex;align-items:center;gap:10px;flex:none}
.chold{
  border:var(--bd-thin);border-radius:8px;background:var(--paper);color:var(--ink);
  width:34px;height:34px;font-size:15px;line-height:1;display:grid;place-items:center;
  box-shadow:2px 2px 0 var(--ink);flex:none;transition:transform .06s,box-shadow .06s;
}
.chold:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.chold[hidden]{display:none}
/* Lista de ventas en espera (modal) */
.espera-list{display:grid;gap:9px}
.espera-row{display:flex;align-items:stretch;gap:8px}
.espera-main{
  flex:1;min-width:0;text-align:left;border:var(--bd);border-radius:var(--r-sm);background:var(--paper);
  box-shadow:var(--sh-sm);padding:11px 13px;display:grid;gap:5px;transition:transform .06s,box-shadow .06s;
}
.espera-main:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.espera-main:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.espera-row .er-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.espera-row .er-lbl{font-weight:800;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.espera-row .er-hora{font-size:12px;color:var(--ink-mute);font-weight:700;flex:none}
.espera-row .er-bot{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;font-weight:600;color:var(--ink-mute)}
.espera-row .er-tot{font-family:"Archivo Black";font-size:15px;color:var(--ink)}
.espera-del{
  flex:none;border:var(--bd-thin);border-radius:9px;background:var(--paper);color:var(--danger);
  width:44px;font-size:16px;box-shadow:2px 2px 0 var(--ink);display:grid;place-items:center;
}
.espera-del:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}

/* --- Código de barras: flash de la tarjeta al escanear + toast con acción --- */
.card.flash{animation:cardflash .55s ease-out}
@keyframes cardflash{0%{box-shadow:0 0 0 4px var(--success),var(--sh)}55%{box-shadow:0 0 0 7px var(--success),var(--sh-lg)}100%{box-shadow:var(--sh)}}
/* Flash del campo "Código de barras" al recibir una ráfaga del escáner con el modal abierto */
.field input.scan-flash{animation:scanflash .6s ease-out}
@keyframes scanflash{0%{background:var(--yellow-bg);box-shadow:0 0 0 3px var(--success)}70%{background:var(--yellow-bg);box-shadow:0 0 0 3px var(--success)}100%{background:var(--paper);box-shadow:none}}
.toast.action{pointer-events:auto;display:inline-flex;align-items:center}
.toast .toast-act{
  margin-left:12px;background:var(--yellow);color:#fff;border:2px solid #fff;border-radius:999px;
  padding:5px 12px;font-weight:800;font-size:12.5px;pointer-events:auto;flex:none;
}
.toast .toast-act:active{transform:translateY(1px)}

/* --- Onboarding + selector de rubro --- */
.wizard-screen{
  min-height:100vh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(circle at 20% 15%, var(--yellow-bg) 0, transparent 45%),
             radial-gradient(circle at 85% 85%, var(--cream) 0, transparent 45%), var(--canvas);
}
.wizard-screen[hidden]{display:none}
.wizard-card{
  width:100%;max-width:580px;background:var(--paper);border:var(--bd);border-radius:var(--r-lg);
  box-shadow:var(--sh-lg);padding:clamp(20px,4vw,32px);text-align:center;
}
.wizard-card .login-logo{margin-bottom:14px}
.wizard-card h1{font-size:clamp(21px,4vw,28px);margin-bottom:6px}
.wizard-card .wz-sub{color:var(--ink-mute);font-weight:600;font-size:13.5px;margin-bottom:20px;line-height:1.5}
.rubro-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.rubro-card{
  border:var(--bd);border-radius:var(--r);background:var(--paper);box-shadow:var(--sh-sm);
  padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:8px;
  transition:transform .06s,box-shadow .06s;
}
.rubro-card:hover{transform:translate(-2px,-2px);box-shadow:var(--sh)}
.rubro-card:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.rubro-card.on{background:var(--yellow);color:#fff;border-color:var(--yellow-deep)}
.rubro-card .rubro-e{font-size:32px;line-height:1}
.rubro-card .rubro-n{font-weight:800;font-size:12.5px}
.rubro-current{
  display:flex;align-items:center;gap:10px;border:var(--bd-thin);border-radius:var(--r-sm);
  background:var(--yellow-bg);padding:11px 14px;font-weight:800;font-size:15px;
}
.rubro-current .rc-e{font-size:24px;line-height:1}
.cfg-sublabel{display:block;font-weight:700;font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:8px}

/* Iframe de impresión fuera de pantalla (no ocupa layout) */
.print-frame{position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden}

@media(pointer:coarse){ .chold{width:44px;height:44px} .espera-del{width:48px} .picktab{min-height:44px} }
@media print{ .print-frame{display:none!important} }

/* ================================================================
   CONTACTOS (pestaña) — lista + búsqueda server-side · detalle/editar
   ================================================================ */
.contacts-bar{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.contacts-bar .search{flex:1;min-width:200px;position:relative}
.contacts-bar .search input{width:100%;padding:14px 16px 14px 46px;font-size:15px;font-weight:600;border:var(--bd);border-radius:var(--r);background:var(--paper);box-shadow:var(--sh-sm)}
.contacts-bar .search input::placeholder{color:var(--ink-mute);font-weight:500}
.contacts-bar .search .mag{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:18px}
.contacts-list{display:grid;gap:10px}
.contact-row{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;
  background:var(--paper);border:var(--bd);border-radius:var(--r);box-shadow:var(--sh-sm);padding:12px 14px;
  text-align:left;width:100%;transition:transform .06s,box-shadow .06s;
}
.contact-row:hover{transform:translate(-1px,-1px);box-shadow:var(--sh)}
.contact-row:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
.contact-av{width:44px;height:44px;flex:none;border-radius:11px;border:var(--bd-thin);background:var(--yellow-bg);display:grid;place-items:center;font-family:"Archivo Black";font-size:18px;color:var(--ink)}
.contact-info{min-width:0}
.contact-name{font-weight:800;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-id{font-size:12.5px;color:var(--ink-mute);font-weight:600;margin-top:2px}
.contact-id b{color:var(--ink-soft)}
.contact-sub{font-size:12px;color:var(--ink-mute);font-weight:600;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-row .chev{font-size:18px;color:var(--ink-mute)}
.ct-idfixed{border:var(--bd-thin);border-radius:var(--r-sm);background:var(--mist);padding:12px 14px;font-weight:700;font-size:15px}
.ct-idfixed b{color:var(--ink-soft);margin-right:6px}
@media(max-width:640px){
  .contacts-bar{position:sticky;top:0;z-index:20;background:var(--canvas);padding:8px 0 10px;margin:-4px 0 12px}
  .contacts-bar .search{min-width:0;flex:1 1 100%}
  .contacts-bar .btn-prim{width:100%;justify-content:center}
  .contact-row .chev{display:none}
}
