:root {
  --bg: #ffffff;
  --bg-soft: #f5f6f8;
  --card: #ffffff;
  --card2: #f5f6f8;
  --txt: #1a1a1a;
  --muted: #6b6b6b;
  --borde: #e5e5e5;
  --verde: #1a6b3a;
  --verde-claro: #2d9257;
  --rojo: #c8161d;
  --accent: #2d9257;
  --ok: #16a34a;
  --bad: #dc2626;
  --warn: #d97706;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  background: var(--bg-soft); color: var(--txt);
  padding: env(safe-area-inset-top) 0 24px;
  -webkit-font-smoothing: antialiased;
}
header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 18px; position: sticky; top: 0; z-index: 5;
  background: rgba(255,255,255,.92); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--borde);
}
.brand { display: flex; align-items: center; gap: 12px; min-width: 0; }
/* Logo blanco sobre chip oscuro (como pizzan1) para que destaque en cabecera clara */
.logo { height: 44px; width: auto; max-width: 150px; border-radius: 8px; display: block;
  background: #0a0a0a; padding: 5px; box-shadow: 0 2px 8px rgba(0,0,0,.15); }
header h1 { font-size: 19px; font-weight: 800; letter-spacing: -.3px; }

/* Pestañas (Venta Global / Venta por Establecimiento) */
.tabs {
  display: flex; gap: 6px; padding: 12px 14px 4px;
  background: var(--bg-soft); position: sticky; top: 57px; z-index: 4;
}
.tab {
  flex: 1; padding: 11px 12px; border: 1px solid var(--borde); background: var(--card);
  border-radius: 10px; font-size: 14px; font-weight: 700; color: var(--muted);
  cursor: pointer; transition: .12s;
}
.tab.active { background: var(--rojo); color: #fff; border-color: var(--rojo); }

.sec { font-size: 18px; font-weight: 800; padding: 16px 16px 0; letter-spacing: -.3px; }
.sec-sub { font-size: 13px; color: var(--muted); padding: 2px 16px 0; }

/* Tarjeta TOTAL */
.total-card {
  background: var(--card); border: 1px solid var(--borde); border-radius: 16px;
  margin: 14px; padding: 22px 18px; text-align: center; box-shadow: 0 1px 3px rgba(0,0,0,.05);
}
.total-lbl { font-size: 13px; color: var(--muted); text-transform: uppercase; letter-spacing: 1px; font-weight: 700; }
.total-val { font-size: 40px; font-weight: 800; color: var(--txt); margin: 4px 0 14px; letter-spacing: -1px; }

/* Box HOY compacto con vs-ayer integrado */
.hoy-card { cursor: pointer; }
.hoy-card .hoy-ver { font-size:10px; color:var(--verde-claro); font-weight:700; margin-left:6px; }
.hoy-main { display:flex; align-items:baseline; justify-content:center; gap:14px; margin:2px 0 6px; }
.hoy-main .total-val { font-size:30px; margin:0; }
.hoy-sub { font-size:12px; color:var(--muted); }

/* Modal de gráfica */
#grafica-modal { position:fixed; inset:0; background:rgba(0,0,0,.45); display:flex; align-items:center; justify-content:center; padding:14px; z-index:20; }
#grafica-modal[hidden] { display:none; }
.gmodal-card { background:#fff; border-radius:16px; width:100%; max-width:680px; padding:16px; box-shadow:0 10px 40px rgba(0,0,0,.2); }
.gmodal-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
.gmodal-head span { font-size:16px; font-weight:800; }
.gmodal-close { border:0; background:var(--bg-soft); border-radius:8px; width:32px; height:32px; font-size:15px; cursor:pointer; }
.gmodal-msg { font-size:13px; color:var(--muted); margin-bottom:10px; }
.gmodal-msg .pos { color:var(--positivo); } .gmodal-msg .neg { color:var(--negativo); }
.comp-row { cursor:pointer; transition:transform .1s; }
.comp-row:active { transform:scale(.99); }
.total-sub {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  border-top: 1px solid var(--borde); padding-top: 14px;
}
.total-sub b { display: block; font-size: 18px; font-weight: 800; }
.total-sub span { font-size: 11px; color: var(--muted); line-height: 1.2; }

.form-toggle { display:flex; align-items:center; gap:8px; margin:10px 14px 0; font-size:13px; font-weight:600; color:var(--muted); cursor:pointer; }
.form-toggle input { width:16px; height:16px; }
.comp-list { display:flex; flex-direction:column; gap:8px; margin:14px; }
.comp-row {
  display:flex; align-items:center; gap:12px;
  background:var(--card); border:1px solid var(--borde); border-radius:12px;
  padding:14px 16px; box-shadow:0 1px 3px rgba(0,0,0,.05);
}
.comp-period {
  font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.5px;
  color:var(--txt); width:84px; flex-shrink:0;
}
.comp-nums { flex:1; min-width:0; display:flex; flex-direction:column; }
.comp-nums b { font-size:17px; font-weight:800; }
.comp-nums span { font-size:11px; color:var(--muted); }
.comp-pct {
  font-size:20px; font-weight:800; white-space:nowrap;
  padding:4px 12px; border-radius:10px;
}
.comp-pct.pos { color:#15803d; background:#e7f7ee; }
.comp-pct.neg { color:#b91c1c; background:#fde8ea; }
.comp-pct.neu { color:var(--muted); background:var(--bg-soft); }

/* Lista establecimiento → venta */
.vlist-card { background: var(--card); border: 1px solid var(--borde); border-radius: 16px; margin: 14px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.vlist-head { display: flex; justify-content: space-between; padding: 16px; font-weight: 700; border-bottom: 1px solid var(--borde); }
.vrow { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--borde); text-decoration: none; color: var(--txt); }
.vrow:last-child { border-bottom: 0; }
.vrow:active { background: var(--bg-soft); }
.vrow-dot { width: 11px; height: 11px; border-radius: 50%; flex-shrink: 0; }
.vrow-info { flex: 1; min-width: 0; }
.vrow-name { display: block; font-size: 15px; font-weight: 600; }
.vrow-date { display: block; font-size: 12px; color: var(--muted); }
.vrow-venta { font-size: 16px; font-weight: 800; }
.status { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); }
.dot { width: 9px; height: 9px; border-radius: 50%; background: var(--muted); }
.dot.ok { background: var(--ok); } .dot.bad { background: var(--bad); }

.totals {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px;
  padding: 14px;
}
.kpi {
  background: var(--card); border-radius: 14px; padding: 16px;
  display: flex; flex-direction: column; gap: 4px;
  border: 1px solid var(--borde); box-shadow: 0 1px 3px rgba(0,0,0,.05);
}
.kpi:first-child { border-top: 3px solid var(--verde); }
.kpi-val { font-size: 24px; font-weight: 800; letter-spacing: -.5px; color: var(--verde); }
.kpi-lbl { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; font-weight: 600; }

.chart-card { background: var(--card); border: 1px solid var(--borde); border-radius: 16px; margin: 14px; padding: 16px; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.chart-wrap { height: 300px; position: relative; }

main { display: flex; flex-direction: column; gap: 12px; padding: 14px; }
.local {
  background: var(--card); border-radius: 16px; overflow: hidden;
  border: 1px solid var(--borde); box-shadow: 0 1px 3px rgba(0,0,0,.05);
}
.local-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px; cursor: pointer; border-left: 4px solid var(--verde);
}
.local-head .name { font-size: 16px; font-weight: 700; }
.local-head .sub { font-size: 12px; color: var(--muted); margin-top: 2px; }
.badge { font-size: 11px; padding: 3px 9px; border-radius: 999px; background: var(--bg-soft); font-weight: 700; }
.badge.ok { color: var(--ok); } .badge.bad { color: var(--bad); }

.local-body { padding: 0 16px 16px; display: none; }
.local.open .local-body { display: block; }
.row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 12px; }
.cell { background: var(--card2); border-radius: 10px; padding: 12px; text-align: center; border: 1px solid var(--borde); }
.cell b { display: block; font-size: 18px; font-weight: 800; }
.cell span { font-size: 11px; color: var(--muted); }

.sub-title { font-size: 12px; color: var(--muted); margin: 12px 0 6px; text-transform: uppercase; letter-spacing: .5px; font-weight: 600; }
.list { display: flex; flex-direction: column; gap: 4px; }
.li { display: flex; justify-content: space-between; font-size: 13px; padding: 8px 10px; background: var(--card2); border-radius: 8px; border: 1px solid var(--borde); }
.li .muted { color: var(--muted); }
.err { color: var(--bad); font-size: 12px; padding: 8px; background: #fde8ea; border-radius: 8px; }

.ver-dashboard {
  display: inline-block; margin-top: 12px; padding: 9px 14px;
  background: var(--verde); color: #fff !important; font-weight: 700; font-size: 13px;
  border-radius: 10px; text-decoration: none;
}
.ver-dashboard:active { transform: scale(.98); }

footer { text-align: center; color: var(--muted); font-size: 11px; margin-top: 18px; }
.footer-info { margin-top: 10px; }
.logout-btn {
  border: 1px solid var(--borde); background: #fff; color: var(--txt);
  border-radius: 10px; padding: 9px 18px; font-size: 13px; font-weight: 700; cursor: pointer;
}
.logout-btn:active { transform: scale(.98); }

/* Logo centrado en cabecera (logo arriba, título debajo) */
header { justify-content: center; }
header .brand { flex-direction: column; align-items: center; justify-content: center; gap: 8px; width: 100%; }

/* ---- Modo compacto: totales + gráfico en una pantalla (móvil) ---- */
body { padding: 8px 12px 24px; }
header { padding: 8px 14px; }
header .brand { gap: 5px; }
.logo { height: 34px; }
header h1 { font-size: 16px; }

.total-card { margin: 10px 0 0; padding: 12px 16px; }
.total-lbl { font-size: 12px; }
.hoy-main { margin: 0 0 4px; }
.hoy-main .total-val { font-size: 26px; }
.hoy-sub { font-size: 11px; }

.comp-list { margin: 8px 0 0; gap: 6px; }
.comp-row { padding: 9px 14px; }
.comp-nums b { font-size: 15px; }
.comp-pct { font-size: 17px; padding: 3px 10px; }

.chart-card { margin: 10px 0 0; padding: 10px 12px; }
.chart-wrap { height: 188px; }
.vlist-card { margin: 10px 0 0; }
footer { margin-top: 12px; }

@media (min-width: 720px) {
  .totals { grid-template-columns: repeat(4, 1fr); }
  main { display: grid; grid-template-columns: repeat(2, 1fr); }
}
