:root{
  --bg:#f1f5f9; --panel:#ffffff; --ink:#0f172a; --muted:#64748b;
  --teal:#0f766e; --teal-d:#115e59; --line:#e2e8f0;
  --ok:#16a34a; --warn:#d97706; --bad:#dc2626;
  --shadow:0 1px 3px rgba(15,23,42,.08),0 8px 24px rgba(15,23,42,.06);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  background:var(--bg);color:var(--ink);
}
button{font:inherit;cursor:pointer;border:0;border-radius:8px}
input{font:inherit}
.error{color:var(--bad);font-size:.9rem;margin:.4rem 0 0}
[hidden]{display:none !important}

/* ===== Login ===== */
.login{min-height:100vh;display:grid;place-items:center;padding:1rem;
  background:linear-gradient(135deg,#0f766e,#155e75)}
.login-card{background:var(--panel);padding:2rem;border-radius:16px;
  box-shadow:var(--shadow);width:min(360px,100%);display:flex;flex-direction:column;gap:.85rem}
.login-card h1{margin:0;color:var(--teal);font-size:1.7rem}
.login-card .sub{margin:0 0 .5rem;color:var(--muted)}
.login-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}
.login-card input{padding:.7rem;border:1px solid var(--line);border-radius:8px;font-size:1rem}
.login-card button{background:var(--teal);color:#fff;padding:.8rem;font-size:1rem;font-weight:600}
.login-card button:hover{background:var(--teal-d)}

/* ===== Topbar ===== */
.caja{min-height:100vh;display:flex;flex-direction:column}
.topbar{display:flex;justify-content:space-between;align-items:center;
  background:var(--teal);color:#fff;padding:.6rem 1rem}
.marca{font-weight:700;font-size:1.1rem}
.tienda{font-weight:400;opacity:.85;margin-left:.4rem;font-size:.9rem}
.estado{display:flex;align-items:center;gap:.7rem}
.pill{font-size:.78rem;padding:.2rem .55rem;border-radius:999px;background:rgba(255,255,255,.15)}
.pill.online{color:#bbf7d0}.pill.offline{color:#fecaca;background:rgba(220,38,38,.35)}
.pill.pendientes{background:var(--warn);color:#fff;font-weight:600}
.usuario{font-size:.85rem;opacity:.9}
.link{background:transparent;color:#fff;text-decoration:underline;opacity:.9}

/* ===== Layout ===== */
.layout{flex:1;display:grid;grid-template-columns:1fr 420px;gap:1rem;padding:1rem;max-width:1200px;margin:0 auto;width:100%}
@media(max-width:820px){.layout{grid-template-columns:1fr}}

.col-izq{display:flex;flex-direction:column;gap:1rem;min-width:0}
.escaner{display:flex;gap:.5rem}
.escaner input{flex:1;padding:.85rem 1rem;border:2px solid var(--teal);border-radius:10px;font-size:1.1rem}
.escaner button{background:var(--teal);color:#fff;padding:0 1.3rem;font-weight:600}
.escaner button:hover{background:var(--teal-d)}
.escaner-msg{margin:0;padding:.6rem .8rem;border-radius:8px;font-size:.9rem}
.escaner-msg.ok{background:#dcfce7;color:#166534}
.escaner-msg.bad{background:#fee2e2;color:#991b1b}

.catalogo{background:var(--panel);border-radius:12px;box-shadow:var(--shadow);padding:1rem;display:flex;flex-direction:column;gap:.7rem;flex:1}
.filtro{padding:.6rem .8rem;border:1px solid var(--line);border-radius:8px}
.lista-catalogo{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem;overflow:auto;align-content:start}
.prod-btn{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:.7rem;text-align:left;display:flex;flex-direction:column;gap:.2rem}
.prod-btn:hover{border-color:var(--teal);background:#f0fdfa}
.prod-btn .n{font-weight:600;font-size:.9rem;line-height:1.15}
.prod-btn .p{color:var(--teal);font-weight:700}
.prod-btn .s{font-size:.72rem;color:var(--muted)}
.prod-btn .s.low{color:var(--bad)}

/* ===== Ticket ===== */
.col-der{min-width:0}
.ticket{background:var(--panel);border-radius:12px;box-shadow:var(--shadow);padding:1rem;display:flex;flex-direction:column;gap:.8rem;position:sticky;top:1rem}
.carrito{width:100%;border-collapse:collapse;font-size:.9rem}
.carrito th{text-align:left;color:var(--muted);font-weight:600;border-bottom:2px solid var(--line);padding:.4rem .3rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}
.carrito td{padding:.45rem .3rem;border-bottom:1px solid var(--line);vertical-align:middle}
.carrito .num{text-align:right}
.carrito .vacio td{text-align:center;color:var(--muted);padding:2rem 0}
.cant-ctrl{display:inline-flex;align-items:center;gap:.3rem}
.cant-ctrl button{width:26px;height:26px;background:#f1f5f9;font-weight:700;line-height:1}
.cant-ctrl button:hover{background:var(--line)}
.cant-ctrl span{min-width:2ch;text-align:center}
.quitar{background:transparent;color:var(--bad);font-size:1.1rem;padding:0 .2rem}

.total-box{display:flex;justify-content:space-between;align-items:baseline;border-top:2px dashed var(--line);padding-top:.7rem}
.total-box>span:first-child{font-size:1rem;color:var(--muted)}
.total-monto{font-size:1.9rem;font-weight:800;color:var(--teal)}
.acciones{display:flex;gap:.6rem}
.acciones button{flex:1;padding:.85rem;font-weight:700}
.primario{background:var(--teal);color:#fff}.primario:hover{background:var(--teal-d)}
.primario:disabled,.secundario:disabled{opacity:.45;cursor:not-allowed}
.secundario{background:#f1f5f9;color:var(--ink)}.secundario:hover{background:var(--line)}

/* ===== Modal ===== */
.modal{position:fixed;inset:0;background:rgba(15,23,42,.5);display:grid;place-items:center;padding:1rem;z-index:50}
.modal-card{background:var(--panel);border-radius:16px;padding:1.5rem;width:min(380px,100%);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.85rem}
.modal-card h2{margin:0;color:var(--teal)}
.cobro-total{font-size:1rem;color:var(--muted)}.cobro-total strong{font-size:1.6rem;color:var(--ink);display:block}
.modal-card label{display:flex;flex-direction:column;gap:.3rem;color:var(--muted);font-size:.85rem}
.modal-card input{padding:.8rem;border:2px solid var(--teal);border-radius:10px;font-size:1.4rem;text-align:right}
.cobro-cambio{display:flex;justify-content:space-between;align-items:baseline;background:#f0fdfa;padding:.7rem .9rem;border-radius:10px}
.cobro-cambio strong{font-size:1.5rem;color:var(--teal)}

/* ===== Toast ===== */
.toast{position:fixed;left:50%;bottom:1.5rem;transform:translateX(-50%);
  background:var(--ink);color:#fff;padding:.8rem 1.2rem;border-radius:10px;
  box-shadow:var(--shadow);z-index:60;max-width:90vw;font-size:.92rem;white-space:pre-line}
.toast.ok{background:var(--ok)}.toast.warn{background:var(--warn)}

/* ===== Modo oscuro ===== */
[data-theme="dark"]{
  --bg:#0b1220; --panel:#111a2e; --ink:#e5e7eb; --muted:#94a3b8; --line:#1e293b;
  --teal:#14b8a6; --teal-d:#0d9488;
  --shadow:0 1px 3px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);
}
[data-theme="dark"] .prod-btn{background:#0f1a30}
[data-theme="dark"] .prod-btn:hover{background:#13233f}
[data-theme="dark"] .cant-ctrl button{background:#1e293b;color:#e5e7eb}
[data-theme="dark"] .secundario{background:#1e293b;color:#e5e7eb}
[data-theme="dark"] .secundario:hover{background:#334155}
[data-theme="dark"] .filtro,[data-theme="dark"] .escaner input,
[data-theme="dark"] .modal-card input,[data-theme="dark"] .modal-card select{background:#0b1220;color:#e5e7eb}
[data-theme="dark"] .cobro-cambio{background:#0f1a30}

/* ===== Elementos nuevos (corte, fiados, fiar, pie) ===== */
.modal-card.ancho{width:min(560px,100%)}
.corte-body{display:flex;flex-direction:column;gap:.4rem;font-size:.95rem}
.corte-row{display:flex;justify-content:space-between;padding:.35rem 0;border-bottom:1px solid var(--line)}
.corte-row.big{font-size:1.2rem;font-weight:800;color:var(--teal);border:0}
.corte-row .lbl{color:var(--muted)}
.fiar-toggle{display:flex;align-items:center;gap:.5rem;flex-direction:row !important;color:var(--ink);font-size:.95rem;cursor:pointer;margin-top:.3rem}
.fiar-toggle input{width:auto}
#fiar-box{display:flex;flex-direction:column;gap:.5rem;border-top:1px dashed var(--line);padding-top:.6rem}
.fiados-acciones{display:flex;justify-content:flex-end;margin-bottom:.4rem}
.fiados-lista{display:flex;flex-direction:column;gap:.4rem;max-height:50vh;overflow:auto}
.fiado-item{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.6rem .7rem;background:var(--bg);border:1px solid var(--line);border-radius:10px}
.fiado-item .info b{display:block}
.fiado-item .info span{font-size:.8rem;color:var(--muted)}
.fiado-item .saldo{font-weight:800;color:var(--bad)}
.fiado-item .saldo.cero{color:var(--ok)}
/* ===== Gestor de productos ===== */
#prod-form{display:flex;flex-direction:column;gap:.5rem}
#prod-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--muted)}
#prod-form input{padding:.6rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}
.prod-form-fila{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}
.prod-item{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.55rem .7rem;background:var(--bg);border:1px solid var(--line);border-radius:10px}
.prod-item .info b{display:block}
.prod-item .info span{font-size:.78rem;color:var(--muted)}
.prod-item .precio{font-weight:700;color:var(--teal)}
.prod-item .st{font-size:.75rem;color:var(--muted);min-width:5ch;text-align:right}
.prod-item .st.low{color:var(--bad)}
.prod-item button{padding:.3rem .6rem;font-size:.8rem}
[data-theme="dark"] #prod-form input{background:#0b1220}
.prod-preview-resumen{font-size:.95rem;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:.7rem .9rem;margin:0 0 .6rem}
.prod-preview-resumen b{color:var(--teal)}
.prod-preview-tabla{max-height:42vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.prod-preview-tabla table{width:100%;border-collapse:collapse;font-size:.85rem}
.prod-preview-tabla th{position:sticky;top:0;background:var(--panel);text-align:left;color:var(--muted);font-size:.72rem;text-transform:uppercase;padding:.4rem .5rem;border-bottom:1px solid var(--line)}
.prod-preview-tabla td{padding:.35rem .5rem;border-bottom:1px solid var(--line)}
.prod-preview-tabla td.num{text-align:right}

.secundario.peligro{background:transparent;color:var(--bad);border:1px solid var(--bad)}
.secundario.peligro:hover{background:var(--bad);color:#fff}

/* ===== Reportes ===== */
.rep-sub{font-size:.85rem;color:var(--muted);margin:.8rem 0 .4rem;text-transform:uppercase;letter-spacing:.03em}
.rep-diario{display:flex;flex-direction:column;gap:.3rem}
.rep-bar-row{display:grid;grid-template-columns:64px 1fr 90px;align-items:center;gap:.5rem;font-size:.82rem}
.rep-bar-row .d{color:var(--muted)}
.rep-bar-track{background:var(--bg);border-radius:6px;height:18px;overflow:hidden}
.rep-bar-fill{background:var(--teal);height:100%;border-radius:6px;min-width:2px}
.rep-bar-row .v{text-align:right;font-weight:600}
.rep-top{display:flex;flex-direction:column;gap:.3rem}
.rep-top-row{display:grid;grid-template-columns:1fr auto auto;gap:.7rem;align-items:center;padding:.4rem .6rem;background:var(--bg);border:1px solid var(--line);border-radius:8px;font-size:.88rem}
.rep-top-row .cant{color:var(--muted);font-size:.8rem}
.rep-top-row .imp{font-weight:700;color:var(--teal);min-width:6ch;text-align:right}

/* ===== Ajustes (Telegram) ===== */
.ajustes-ayuda{font-size:.82rem;color:var(--muted);margin:0 0 .3rem;line-height:1.45}
.ajustes-estado{font-size:.85rem;margin:.2rem 0;font-weight:600}
.ajustes-estado.on{color:var(--ok)}.ajustes-estado.off{color:var(--muted)}
#modal-ajustes label{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--muted)}
#modal-ajustes input{padding:.6rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}
[data-theme="dark"] #modal-ajustes input{background:#0b1220}

.pie-marca{text-align:center;font-size:.78rem;color:var(--muted);margin:.2rem 0 0}
.pie-marca a{color:var(--muted);text-decoration:none}
.pie-marca a:hover{color:var(--teal)}
.link{background:transparent;border:0;cursor:pointer;font:inherit}

/* ============================================================
   Shell con menú lateral + secciones (rediseño dashboard)
   ============================================================ */
.app{min-height:100vh;display:flex;flex-direction:column}
.cuerpo{flex:1;display:flex;min-height:0}
.solo-movil{display:none}

.sidebar{width:184px;background:var(--panel);border-right:1px solid var(--line);
  padding:.6rem;display:flex;flex-direction:column;gap:.25rem;flex-shrink:0}
.nav-item{display:flex;align-items:center;gap:.6rem;padding:.7rem .8rem;border-radius:10px;
  background:transparent;color:var(--ink);text-align:left;font-size:.95rem;font-weight:500;width:100%}
.nav-item:hover{background:var(--bg)}
.nav-item.activo{background:var(--teal);color:#fff}

.contenido{flex:1;overflow:auto;padding:1.2rem;min-width:0;background:var(--bg)}
.vista-titulo{font-size:1.5rem;margin:0 0 1rem}
.vista-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.vista-head .vista-titulo{margin:0}
.vista-acciones{display:flex;gap:.5rem;flex-wrap:wrap}

/* KPIs del inicio */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.2rem}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.2rem;
  display:flex;flex-direction:column;gap:.15rem;box-shadow:var(--shadow)}
.kpi-lbl{color:var(--muted);font-size:.82rem}
.kpi-val{font-size:1.8rem;font-weight:800;color:var(--teal);line-height:1.1}
.kpi-sub{color:var(--muted);font-size:.76rem}
.kpi.alerta .kpi-val{color:var(--warn)}
.inicio-cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem}

.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:1rem 1.2rem;box-shadow:var(--shadow);margin-bottom:1rem}
.panel-tit{margin:0 0 .7rem;font-size:1rem;color:var(--ink)}

/* Caja dentro de su vista (ocupa todo) */
#vista-caja{height:100%}
#vista-caja .layout{max-width:none;padding:0;margin:0;height:100%}

/* Inventario: barra + tabla */
.inv-barra{display:flex;gap:.8rem;align-items:center;margin-bottom:.8rem;flex-wrap:wrap}
.inv-barra .filtro{flex:1;min-width:200px}
.chk{display:flex;align-items:center;gap:.4rem;font-size:.88rem;color:var(--muted);white-space:nowrap}
.prod-tabla{display:flex;flex-direction:column;gap:.4rem}

/* Editor de producto a pantalla completa */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;max-width:720px;margin-bottom:.6rem}
.form-grid label{display:flex;flex-direction:column;gap:.3rem;font-size:.84rem;color:var(--muted)}
.form-grid input{padding:.65rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);font-size:1rem}
[data-theme="dark"] .form-grid input{background:#0b1220}
#vista-ajustes .form-grid{max-width:560px}

/* Móvil: menú lateral como cajón */
@media(max-width:820px){
  .solo-movil{display:inline-block}
  .sidebar{position:fixed;top:0;left:0;bottom:0;z-index:40;transform:translateX(-100%);
    transition:transform .2s;width:230px;padding-top:3.6rem}
  .sidebar.abierto{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.45)}
  .inicio-cols{grid-template-columns:1fr}
  #vista-caja .layout{grid-template-columns:1fr}
  .contenido{padding:.8rem}
}

/* ===== Fase B: formas de pago + descuentos ===== */
.metodos{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.metodo{padding:.6rem;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font-weight:600;font-size:.9rem}
.metodo:hover{border-color:var(--teal)}
.metodo.activo{background:var(--teal);color:#fff;border-color:var(--teal)}
.pago-panel{display:flex;flex-direction:column;gap:.6rem}
.pago-nota{margin:0;color:var(--muted);background:var(--bg);border-radius:10px;padding:.8rem;text-align:center;font-size:.95rem}
#pago-mixto label{flex-direction:row !important;align-items:center;justify-content:space-between;gap:.6rem}
#pago-mixto input{max-width:55%;font-size:1.1rem}

/* Totales del ticket */
.totales{display:flex;flex-direction:column;gap:.2rem;font-size:.9rem;color:var(--muted)}
.tot-row{display:flex;justify-content:space-between}
.tot-row .desc{color:var(--bad);font-weight:600}
.imp-btn{background:transparent;color:inherit;font:inherit;padding:0;text-decoration:underline dotted;text-underline-offset:2px}
.imp-btn:hover{color:var(--teal)}
.lin-desc{display:block;font-size:.72rem;color:var(--bad)}
[data-theme="dark"] .metodo{background:#0b1220}

/* ===== Fase C: cajeros (acciones) ===== */
.fiado-item .acts{display:flex;gap:.3rem;flex-wrap:wrap;align-items:center}
.fiado-item .acts button{padding:.35rem .6rem;font-size:.78rem;flex:none}

/* ===== Fase D: selector de periodo en reportes ===== */
#rep-dias{padding:.5rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);font:inherit}
[data-theme="dark"] #rep-dias{background:#0b1220}

/* ===== Fase E: selects de filtro ===== */
#prod-depto-filtro{padding:.5rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);font:inherit}
[data-theme="dark"] #prod-depto-filtro{background:#0b1220}
