*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
:root{
  --v:#1b7a3e;--v2:#27ae60;--vc:#e8f5ec;
  --n:#d4680a;--n2:#e67e22;--nc:#fef3e2;
  --r:#c0392b;--rc:#fdecea;
  --c:#5d4037;--cc:#efebe9;
  --w:#fff;--g:#f7f7f7;--g2:#e8e8e8;--g3:#999;
  --t:#1a1a1a;--t2:#555;
  --az:#1565c0;--azc:#e3f2fd;
  --mo:#3949ab;--moc:#e8eaf6;
  --pur:#6a1b9a;--purc:#f3e5f5;
  --card:#1976d2;--cardc:#e3f2fd;
}
html,body{min-height:100vh;background:#eef5ee;font-family:'Segoe UI',system-ui,sans-serif;color:var(--t);font-size:15px;overflow-x:hidden}

/* HEADER */
.hdr{background:linear-gradient(160deg,#155c2e,#1b7a3e 55%,#239950);padding:13px 14px 11px}
.hdr-center{text-align:center}
.hdr-title{color:#fff;font-size:20px;font-weight:900;letter-spacing:-.3px;text-shadow:0 1px 4px rgba(0,0,0,.2)}
.hdr-sub{color:rgba(255,255,255,.75);font-size:11px;margin-top:1px;font-weight:700}
.motiv{background:linear-gradient(90deg,#c05e08,#e67e22);color:#fff;font-size:12px;font-weight:700;text-align:center;padding:6px 14px}

/* NAV */
.nav{display:flex;background:#fff;border-bottom:1px solid var(--g2);position:sticky;top:0;z-index:100;box-shadow:0 1px 6px rgba(0,0,0,.07)}
.nb{flex:1;padding:9px 2px 7px;font-size:9px;font-weight:800;color:var(--g3);background:none;border:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;border-bottom:3px solid transparent}
.nb svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.nb.act{color:var(--v);border-bottom-color:var(--v)}

/* SCREENS */
.scr{display:none;padding:13px 13px 95px}
.scr.act{display:block}

/* CARD */
.card{background:#fff;border-radius:16px;box-shadow:0 2px 10px rgba(0,0,0,.07);padding:14px;margin-bottom:11px}
.ctit{font-size:11px;font-weight:900;color:var(--v);text-transform:uppercase;letter-spacing:.8px;margin-bottom:11px}

/* INPUTS */
.ig{display:flex;flex-direction:column;gap:3px;flex:1}
.ig label{font-size:11px;font-weight:800;color:var(--g3);text-transform:uppercase;letter-spacing:.2px}
input[type=number],input[type=text],input[type=date],input[type=time],input[type=tel],input[type=password],select,textarea{
  width:100%;padding:10px 12px;border:2px solid var(--g2);border-radius:10px;
  font-size:15px;color:var(--t);background:#fff;-webkit-appearance:none;appearance:none;
  transition:border-color .15s,box-shadow .15s;font-family:inherit}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--v);box-shadow:0 0 0 3px rgba(27,122,62,.1)}
.fila{display:flex;gap:8px;margin-bottom:9px}

/* BUTTONS */
.btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 14px;border-radius:11px;border:none;font-size:14px;font-weight:800;cursor:pointer;transition:opacity .12s,transform .12s;width:100%;font-family:inherit}
.btn:active{opacity:.82;transform:scale(0.96)}
.btn-v{background:linear-gradient(135deg,#1b7a3e,#27ae60);color:#fff;box-shadow:0 3px 10px rgba(27,122,62,.28)}
.btn-n{background:linear-gradient(135deg,#c05e08,#e67e22);color:#fff;box-shadow:0 3px 8px rgba(196,96,8,.22)}
.btn-r{background:linear-gradient(135deg,#a93226,#c0392b);color:#fff}
.btn-az{background:linear-gradient(135deg,#1255a0,#1976d2);color:#fff}
.btn-pur{background:linear-gradient(135deg,#5c1580,#8e24aa);color:#fff}
.btn-g{background:var(--g2);color:var(--t)}
.btn-card{background:linear-gradient(135deg,#0d47a1,#1565c0);color:#fff}
.btn-sm{padding:8px 12px;font-size:13px}
.btn-row{display:flex;gap:8px;margin-top:10px}

/* EXISTENCIA */
.exist-box{background:linear-gradient(135deg,#e8f5ec,#d4edda);border:2px solid var(--v2);border-radius:12px;padding:11px;text-align:center}
.exist-num{font-size:30px;font-weight:900;color:var(--v)}
.exist-lbl{font-size:12px;color:var(--t2);font-weight:700}
.stock-row{display:flex;gap:8px;margin-top:9px}
.sbox{flex:1;border-radius:12px;padding:9px;text-align:center;border:2px solid}
.sbox.ch{background:var(--azc);border-color:#64b5f6}
.sbox.gr{background:var(--moc);border-color:#7986cb}
.sbox-num{font-size:20px;font-weight:900}
.sbox.ch .sbox-num{color:var(--az)}
.sbox.gr .sbox-num{color:var(--mo)}
.sbox-lbl{font-size:10px;color:var(--t2);font-weight:700;margin-top:2px}

/* BÚSQUEDA */
.search-box{position:relative;margin-bottom:10px}
.search-box input{padding-left:36px;background:#f5f5f5;border-color:#ddd}
.search-box::before{content:'🔍';position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:15px;pointer-events:none;z-index:1}

/* PRODUCTOS */
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.pcard{background:linear-gradient(135deg,#f0faf4,#e8f5ec);border:2px solid #a8d5b5;border-radius:14px;padding:13px 9px 11px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;position:relative;user-select:none;transition:transform .12s}
.pcard:active{transform:scale(0.94);background:var(--vc)}
.pcard:focus{outline:3px solid var(--v2);outline-offset:2px}
.pcard-emo{font-size:30px;line-height:1}
.pcard-nom{font-size:11px;font-weight:800;color:var(--c);text-align:center;line-height:1.3}
.pcard-precio{font-size:17px;font-weight:900;color:var(--v)}
.pcard-stock{font-size:10px;font-weight:700;color:var(--g3)}
.promo-badge{position:absolute;top:-6px;right:-6px;background:linear-gradient(135deg,#c05e08,#e67e22);color:#fff;font-size:9px;font-weight:900;border-radius:20px;padding:2px 6px}

/* TICKET */
.titem{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--g2)}
.titem:last-child{border-bottom:none}
.titem-emo{font-size:21px;flex-shrink:0}
.titem-inf{flex:1;min-width:0}
.titem-nom{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.titem-sub{font-size:11px;color:var(--g3)}
.qctrl{display:flex;align-items:center;gap:5px;flex-shrink:0}
.qbtn{width:32px;height:32px;border-radius:50%;border:none;font-size:19px;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .1s}
.qbtn:active{transform:scale(0.88)}
.qm{background:var(--rc);color:var(--r)}
.qp{background:var(--vc);color:var(--v)}
.titem-tot{font-weight:900;min-width:48px;text-align:right;font-size:14px;flex-shrink:0}

/* TOTALES */
.trow{display:flex;justify-content:space-between;align-items:center;padding:5px 0;font-size:14px}
.trow-big{font-size:21px;font-weight:900;color:var(--v);border-top:2px solid var(--g2);margin-top:6px;padding-top:9px}
.trow-lbl{color:var(--t2);font-weight:700}

/* CAMBIO */
.cbox{border-radius:12px;padding:12px;text-align:center;margin-top:9px}
.cbox-ok{background:var(--nc);border:2px solid var(--n2)}
.cbox-err{background:var(--rc);border:2px solid var(--r)}
.cbox-num{font-size:30px;font-weight:900}
.cbox-lbl{font-size:12px;font-weight:700;color:var(--t2)}

/* PROMO DOTS */
.pdots{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.pd{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;border:2px solid var(--g2);color:var(--g3);background:var(--g);transition:all .15s}
.pd.lleno{background:var(--vc);border-color:var(--v2);color:var(--v)}
.pd.regalo{background:var(--nc);border-color:var(--n2);color:var(--n2);font-size:16px}

/* IVA badge */
.iva-badge{display:inline-block;background:linear-gradient(135deg,#e65100,#f57c00);color:#fff;font-size:10px;font-weight:900;border-radius:6px;padding:2px 6px;margin-left:6px;vertical-align:middle}

/* JORNADA / ESTADO DE RESULTADOS */
.jrow{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px dashed var(--g2);font-size:13px}
.jrow:last-child{border-bottom:none}
.jval{font-weight:900;color:var(--v);font-size:15px}
.jval-n{font-weight:900;color:var(--n2);font-size:15px}
.jval-r{font-weight:900;color:var(--r);font-size:15px}
.jval-pur{font-weight:900;color:var(--pur);font-size:15px}

/* ESTADO DE RESULTADOS */
.er-card{border-radius:16px;padding:16px;margin-bottom:11px}
.er-ing{background:linear-gradient(135deg,#e8f5ec,#c8e6c9);border:2px solid var(--v2)}
.er-gas{background:linear-gradient(135deg,#fdecea,#ffcdd2);border:2px solid #e57373}
.er-util{border:3px solid var(--v2)}
.er-util.positivo{background:linear-gradient(135deg,#e8f5ec,#c8e6c9)}
.er-util.negativo{background:linear-gradient(135deg,#fdecea,#ffcdd2);border-color:#e57373}
.er-label{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px}
.er-label.ing{color:var(--v)}
.er-label.gas{color:var(--r)}
.er-label.util{color:var(--c)}
.er-monto{font-size:32px;font-weight:900;line-height:1}
.er-monto.ing{color:var(--v)}
.er-monto.gas{color:var(--r)}
.er-monto.positivo{color:var(--v)}
.er-monto.negativo{color:var(--r)}
.er-sub{font-size:12px;color:var(--t2);margin-top:4px;font-weight:700}
.er-formula{text-align:center;font-size:13px;color:var(--g3);font-weight:700;padding:6px 0;margin-bottom:4px}

/* HISTORIAL PERIODOS */
.hitem{background:linear-gradient(135deg,#fdf8f5,#f5ebe6);border-radius:12px;padding:10px;margin-bottom:8px;border:1px solid #e8d5c8}
.hitem-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}
.hitem-hora{font-size:11px;font-weight:700;color:var(--g3)}
.hitem-monto{font-size:16px;font-weight:900;color:var(--v)}
.hitem-det{font-size:13px;font-weight:600;color:var(--c)}
.hitem-promo{font-size:11px;color:var(--n2);font-weight:700;margin-top:2px}
.hitem-met{font-size:11px;font-weight:800;margin-top:1px}

/* PERIODOS */
.periodo-card{background:#fff;border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.07);padding:13px;margin-bottom:10px;border-left:4px solid var(--v)}
.periodo-titulo{font-size:13px;font-weight:900;color:var(--v);margin-bottom:8px}
.periodo-fila{display:flex;justify-content:space-between;font-size:13px;padding:3px 0}
.periodo-util{font-size:16px;font-weight:900;margin-top:6px;padding-top:6px;border-top:1px solid var(--g2)}
.putil-pos{color:var(--v)}
.putil-neg{color:var(--r)}

/* GASTOS */
.gitem{background:linear-gradient(135deg,#fdecea,#fff);border-radius:12px;padding:10px;margin-bottom:8px;border:1px solid #f1c4c0;display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.gitem-inf{flex:1;min-width:0}
.gitem-cat{font-size:10px;font-weight:900;color:var(--r);text-transform:uppercase;letter-spacing:.4px}
.gitem-desc{font-size:14px;font-weight:700;color:var(--t)}
.gitem-hora{font-size:11px;color:var(--g3);margin-top:1px}
.gitem-monto{font-size:18px;font-weight:900;color:var(--r);white-space:nowrap}
.gitem-del{background:var(--rc);border:none;border-radius:8px;padding:5px 8px;font-size:13px;cursor:pointer;flex-shrink:0}

/* ADMIN */
.switch-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0}
.swt{width:48px;height:27px;background:var(--g2);border-radius:14px;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0;border:none}
.swt::after{content:'';position:absolute;width:21px;height:21px;background:#fff;border-radius:50%;top:3px;left:3px;transition:left .2s;box-shadow:0 2px 5px rgba(0,0,0,.22)}
.swt.on{background:var(--v)}
.swt.on::after{left:24px}
.eitem{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:var(--g);border-radius:10px;margin-bottom:7px}

/* MODALES / PIN */
.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:999;align-items:flex-end}
.modal-bg.open{display:flex}
.modal{background:#fff;border-radius:22px 22px 0 0;padding:20px 16px 36px;width:100%;max-height:82vh;overflow-y:auto}
.pin-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:998;align-items:center;justify-content:center}
.pin-bg.open{display:flex}
.pin-box{background:#fff;border-radius:20px;padding:26px 22px 22px;width:88%;max-width:320px;text-align:center;box-shadow:0 8px 40px rgba(0,0,0,.28)}
.pin-title{font-size:17px;font-weight:900;color:var(--v);margin-bottom:3px}
.pin-sub{font-size:13px;color:var(--g3);margin-bottom:16px}
.pin-dots{display:flex;justify-content:center;gap:12px;margin-bottom:18px}
.pin-dot{width:16px;height:16px;border-radius:50%;background:var(--g2);border:2px solid var(--g2);transition:all .15s}
.pin-dot.filled{background:var(--v);border-color:var(--v)}
.pin-dot.error{background:var(--r);border-color:var(--r)}
.pin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:10px}
.pin-key{background:var(--g);border:none;border-radius:10px;padding:15px 0;font-size:22px;font-weight:900;cursor:pointer;transition:all .1s;color:var(--t)}
.pin-key:active{background:var(--vc);color:var(--v);transform:scale(0.93)}
.pin-key.del{background:var(--rc);color:var(--r);font-size:15px}
.pin-key.vacio{background:transparent;cursor:default}
.pin-err{color:var(--r);font-size:13px;font-weight:700;min-height:18px;margin-top:3px}

/* TABS */
.tabs{display:flex;background:var(--g);border-radius:10px;padding:3px;gap:3px;margin-bottom:12px}
.tab{flex:1;padding:8px 4px;border:none;border-radius:8px;font-size:11px;font-weight:800;color:var(--g3);background:transparent;cursor:pointer;transition:all .15s}
.tab.act{background:#fff;color:var(--v);box-shadow:0 1px 4px rgba(0,0,0,.1)}

/* UTIL */
.vacio{text-align:center;color:var(--g3);padding:26px 0;font-size:14px}
.vacio-ico{font-size:38px;display:block;margin-bottom:8px}
.mt8{margin-top:8px}
.mt10{margin-top:10px}
.mt12{margin-top:12px}
.mb8{margin-bottom:8px}
.fw9{font-weight:900}
.sep{height:1px;background:var(--g2);margin:8px 0}

/* CHIP método pago */
.met-chip{display:inline-block;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:900;margin-top:4px}
.chip-efec{background:var(--vc);color:var(--v)}
.chip-trans{background:#e8f0fe;color:#1a5fc8}
.chip-card{background:var(--cardc);color:var(--card)}

/* MERMA badge */
.merma-badge{background:linear-gradient(135deg,#880e4f,#c2185b);color:#fff;border-radius:8px;padding:2px 7px;font-size:10px;font-weight:900}

/* PIN SECTION in Admin */
.pin-section{background:var(--g);border-radius:12px;padding:12px;margin-bottom:10px}
.pin-section-title{font-size:12px;font-weight:900;color:var(--t2);margin-bottom:8px;text-transform:uppercase;letter-spacing:.4px}

/* ── 3.0 ───────────────────────────────────────── */
.exist-box.neg{background:linear-gradient(135deg,#fdecea,#ffcdd2);border-color:var(--r)}
.exist-box.neg .exist-num{color:var(--r)}
.neg-aviso{font-size:11px;color:var(--r);font-weight:800;margin-top:3px}
.sbox-num.neg{color:var(--r)!important}
.fecha-fija{font-size:15px;font-weight:900;color:var(--v);padding:10px 0}
.mov-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;margin-bottom:5px;font-size:13px;font-weight:700}
.mov-carga{background:var(--vc);border:1px solid #a8d5b5}
.mov-merma{background:#fce4ec;border:1px solid #f48fb1}
.mov-del{background:var(--rc);border:none;border-radius:6px;padding:3px 7px;cursor:pointer;font-size:12px}
.btn[disabled]{opacity:.55;pointer-events:none}
.hitem.cancelada{opacity:.6;background:#f3f3f3;border-style:dashed}
.hitem.cancelada .hitem-monto{text-decoration:line-through;color:var(--g3)}
.cancel-tag{font-size:11px;font-weight:800;color:var(--r)}
.hbtn{border:none;border-radius:6px;padding:3px 7px;font-size:12px;cursor:pointer;font-weight:900}
.edit-item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--g2)}
/* Gráfica */
.graf-box{background:#f0faf4;border-radius:10px;padding:8px 8px 6px;border:1px solid #c8e6c9;overflow:hidden;width:100%}
.graf-tit{margin:0 0 6px;font-size:10px;font-weight:900;color:#1b7a3e;text-transform:uppercase;letter-spacing:.5px}
.graf-svg{width:100%;overflow:hidden}
.graf-ley{display:flex;gap:14px;font-size:11px;color:#555;margin-top:4px}
.graf-ley i{display:inline-block;width:10px;height:9px;border-radius:2px;margin-right:4px;vertical-align:-1px}
/* Pantallas anchas (Mac) */
@media (min-width:700px){
  .scr{max-width:680px;margin:0 auto}
  .nav{justify-content:center}
  .nb{max-width:140px}
}

/* ── Eventos ─────────────────────────────────── */
.nb{position:relative}
.nb-badge{position:absolute;top:4px;right:calc(50% - 20px);background:var(--r);color:#fff;border-radius:10px;font-size:9px;font-weight:900;min-width:16px;height:16px;line-height:16px;padding:0 4px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-tit{font-size:16px;font-weight:900;color:var(--v);text-transform:capitalize}
.cal-nav{width:38px;height:38px;border-radius:10px;border:none;background:var(--g);font-size:22px;font-weight:900;color:var(--v);cursor:pointer}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-dow{font-size:10px;font-weight:900;color:var(--g3);text-align:center;padding:2px 0}
.cal-dia{min-height:44px;border-radius:8px;background:var(--g);border:2px solid transparent;padding:3px 2px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;font-weight:800;color:var(--t)}
.cal-dia.otro{background:transparent;color:#ccc;cursor:default}
.cal-dia.hoy{border-color:var(--v2);color:var(--v)}
.cal-dia.sel{background:var(--vc);border-color:var(--v)}
.cal-dots{display:flex;gap:2px;flex-wrap:wrap;justify-content:center}
.cal-dots i{width:7px;height:7px;border-radius:50%;display:block}
.cal-ley{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:#555;margin-top:8px}
.cal-ley i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;vertical-align:-1px}
.ev-item{border-radius:12px;padding:10px;margin-bottom:8px;border:1px solid var(--g2);border-left:5px solid;background:#fff;cursor:pointer}
.ev-item-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.ev-item-nom{font-size:14px;font-weight:900}
.ev-item-sub{font-size:12px;color:var(--t2);margin-top:2px}
.ev-chip{display:inline-block;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:900;color:#fff;white-space:nowrap}
.ev-aviso{border-radius:12px;padding:10px 12px;margin-bottom:8px;font-size:13px;font-weight:800;border:2px solid}
.ev-aviso.hoy{background:#fdecea;border-color:var(--r);color:var(--r)}
.ev-aviso.manana{background:var(--nc);border-color:var(--n2);color:var(--n)}
.ev-aviso.semana{background:var(--azc);border-color:#64b5f6;color:var(--az)}
.ev-aviso.deposito{background:var(--cc);border-color:#a1887f;color:var(--c)}
.modal-alta{max-height:92vh}
.ev-tipos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.ev-tipo{border:2px solid var(--g2);background:var(--g);border-radius:12px;padding:8px 4px;font-size:22px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}
.ev-tipo span{font-size:11px;font-weight:800;color:var(--t2);line-height:1.2}
.ev-tipo.act{background:var(--vc);border-color:var(--v)}
.ev-tipo.act span{color:var(--v)}
.ev-cuenta{background:linear-gradient(135deg,#e8f5ec,#c8e6c9);border:2px solid var(--v2);border-radius:12px;padding:10px 12px;margin-bottom:6px}
.ev-cuenta .periodo-fila{font-size:13px}
textarea{width:100%;padding:10px 12px;border:2px solid var(--g2);border-radius:10px;font-size:15px;font-family:inherit;resize:vertical}

.nube-est{cursor:pointer;display:inline-block;margin-top:5px;background:rgba(0,0,0,.18);color:#fff;font-size:11px;font-weight:800;padding:2px 9px;border-radius:20px}

/* En vivo */
.vivo-num{font-size:34px;font-weight:900;color:var(--v);margin:4px 0 2px}
.vivo-p{border-left:5px solid var(--v)}
.vivo-p.cerrada{border-left-color:var(--g2);opacity:.75}
.vivo-p .vp-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.vivo-p .vp-nom{font-weight:900;font-size:15px}
.vivo-p .vp-tot{font-weight:900;font-size:20px;color:var(--v)}
.vivo-p .vp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}
.vivo-p .vp-grid div{background:var(--g1,#f4f4f4);border-radius:8px;padding:6px;text-align:center;font-size:11px;color:var(--g3)}
.vivo-p .vp-grid b{display:block;font-size:15px;color:#222}
.vivo-alerta{background:#fdecea;color:#b71c1c;font-weight:800;font-size:12px;border-radius:8px;padding:6px 8px;margin-top:8px}
.vivo-p .vp-pie{font-size:11px;color:var(--g3);margin-top:6px}
.hdr{padding-top:calc(13px + env(safe-area-inset-top))}
