:root{
  --bg:#eef3f0;--card:#fff;--tx:#14231c;--mu:#5d6f66;--ac:#0f6b57;--on:#fff;
  --bd:#d4dfd9;--wa:#b7791f;--wb:#fdf3df;--ok:#166534;--ob:#e3f4e8;
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0e1714;--card:#17231e;--tx:#e8f1ec;--mu:#93a89d;--ac:#3ecfa5;--on:#0e1714;
    --bd:#2a3b34;--wa:#f5b942;--wb:#3a2f14;--ok:#6ee7a0;--ob:#173a26;
  }
}
:root[data-theme="dark"]{
  --bg:#0e1714;--card:#17231e;--tx:#e8f1ec;--mu:#93a89d;--ac:#3ecfa5;--on:#0e1714;
  --bd:#2a3b34;--wa:#f5b942;--wb:#3a2f14;--ok:#6ee7a0;--ob:#173a26;
}

*{box-sizing:border-box}
html{scroll-padding-top:env(safe-area-inset-top,0px);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--tx);font:16px/1.45 'Bricolage Grotesque',system-ui,sans-serif}
.wrap{max-width:760px;margin:0 auto;padding:12px 14px 40px}
h1{font-size:22px;margin:6px 0 10px;font-weight:800}
h1[hidden]{display:none}
h2{font-size:17px;margin:18px 0 8px}
h3{font-size:12px;color:var(--mu);text-transform:uppercase;letter-spacing:.06em;margin:16px 0 6px;font-weight:700}
.hint{color:var(--mu);font-size:14px;margin:12px 0 0}

/* Demo bar */
.demobar{
  display:flex;align-items:center;gap:4px;
  padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top,0px));
  background:#14231c;color:#e8f1ec;font-size:12px;font-weight:600;
  overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;
}
.demobar .demo-label{opacity:.5;text-transform:uppercase;letter-spacing:.06em;font-size:10px;margin-right:4px}
.demobar a{color:inherit;text-decoration:none;padding:5px 9px;border-radius:6px;opacity:.75;flex-shrink:0}
.demobar a:hover{opacity:1;background:rgba(255,255,255,.08)}
.demobar a.on{background:rgba(255,255,255,.16);opacity:1}

/* Nav staff */
nav{display:flex;gap:5px;position:sticky;top:env(safe-area-inset-top,0px);background:var(--bg);padding:8px 0;z-index:2}
nav[hidden]{display:none}
nav button{
  flex:1;padding:10px 2px;border:1px solid var(--bd);background:var(--card);color:var(--tx);
  border-radius:10px;font:inherit;font-weight:600;font-size:13px;cursor:pointer;position:relative;
}
nav button.on{background:var(--ac);color:var(--on);border-color:var(--ac)}
nav .b{position:absolute;top:-6px;right:-4px;background:var(--wa);color:#fff;border-radius:99px;font-size:12px;min-width:20px;padding:0 5px;font-weight:700}
@media(max-width:400px){nav button{font-size:12px;padding:8px 1px}nav .b{font-size:11px;min-width:18px;padding:0 4px}}

/* Cards */
.card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:12px 14px;margin:0 0 10px}
.row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.mu{color:var(--mu);font-size:14px}

button.p,button.s{font:inherit;font-weight:600;border-radius:10px;padding:9px 14px;cursor:pointer;border:1px solid var(--ac)}
button.p{background:var(--ac);color:var(--on)}
button.s{background:transparent;color:var(--ac)}
button.p:disabled{opacity:.45;cursor:default}
button:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible{outline:3px solid var(--wa);outline-offset:2px}

select,textarea,input{font:inherit;padding:10px 12px;border-radius:10px;border:1px solid var(--bd);background:var(--card);color:var(--tx)}
select{padding:8px}
textarea{width:100%;margin-top:8px;resize:vertical}

.tag{display:inline-block;font-size:12px;font-weight:600;padding:3px 10px;border-radius:99px;background:var(--wb);color:var(--wa)}
.tag.g{background:var(--ob);color:var(--ok)}

.star{border:0;background:none;font-size:24px;color:var(--bd);cursor:pointer;padding:6px 4px;line-height:1;min-width:38px;min-height:38px;border-radius:8px}
.star.on{color:var(--wa)}

ul{margin:6px 0;padding-left:20px}
.empty{color:var(--mu);text-align:center;padding:26px 0}
.tot{font-weight:800}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.rv{border-top:1px solid var(--bd);margin-top:10px;padding-top:10px}

/* ========== Cliente ========== */
.client-header{
  display:flex;justify-content:space-between;align-items:flex-start;gap:10px;
  padding:4px 2px 12px;border-bottom:1px solid var(--bd);margin-bottom:12px;
}
.client-header .brand{font-weight:800;font-size:17px}
.client-header .meta{color:var(--mu);font-size:13px;margin-top:2px}
.diner-pill{
  display:flex;align-items:center;gap:6px;
}
.diner-pill .who{
  font:inherit;font-size:13px;font-weight:600;
  background:var(--card);border:1px solid var(--bd);color:var(--tx);
  padding:6px 12px;border-radius:99px;cursor:pointer;
  max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.diner-pill .who:hover{border-color:var(--ac)}
.diner-pill .ic{
  width:32px;height:32px;border-radius:50%;
  background:var(--card);border:1px solid var(--bd);color:var(--mu);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:15px;cursor:pointer;padding:0;
}
.diner-pill .ic:hover{border-color:var(--ac);color:var(--ac)}

/* Segmented tabs */
.seg{display:flex;background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:4px;margin-bottom:14px}
.seg button{
  flex:1;border:0;background:transparent;color:var(--tx);font:inherit;font-weight:600;
  font-size:14px;padding:9px;border-radius:9px;cursor:pointer;
}
.seg button.on{background:var(--ac);color:var(--on)}
.seg .badge{display:inline-block;background:var(--wa);color:#fff;border-radius:99px;font-size:11px;padding:1px 7px;margin-left:6px;font-weight:700}
.seg button.on .badge{background:rgba(255,255,255,.25)}

/* Menu grid */
.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:12px}
.dish{
  background:var(--card);border:1px solid var(--bd);border-radius:14px;
  overflow:hidden;display:flex;flex-direction:column;
}
.dish-img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--bd)}
.dish-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:6px;flex:1}
.dish-name{font-weight:700;font-size:15px;line-height:1.25}
.dish-price{color:var(--mu);font-size:14px;font-weight:600}
.dish-foot{margin-top:auto;display:flex;justify-content:flex-end;padding-top:4px}
.qty{display:flex;align-items:center;gap:8px}
.qty button{
  min-width:34px;height:34px;border-radius:50%;border:1px solid var(--ac);
  background:transparent;color:var(--ac);font-size:19px;cursor:pointer;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;padding:0;
}
.qty button.p{border-radius:50%}
.qty b{min-width:16px;text-align:center}

/* Sticky cart FAB */
.cart-fab{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(16px + env(safe-area-inset-bottom,0px));
  width:min(calc(100% - 28px),732px);
  margin:0;padding:12px 14px;
  box-shadow:0 10px 28px rgba(0,0,0,.15);
  z-index:5;border-radius:14px;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.spacer-fab{height:90px}

/* ========== Salón ========== */
.tables{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px}
.table{
  aspect-ratio:1;border-radius:14px;display:flex;align-items:center;justify-content:center;
  font:inherit;font-weight:800;font-size:22px;
  border:2px solid var(--bd);background:var(--card);color:var(--mu);
  cursor:pointer;position:relative;transition:transform .08s,background .15s,border-color .15s;
}
.table:active{transform:scale(.97)}
.table.libre{background:var(--card);color:var(--mu);border-color:var(--bd)}
.table.activa{background:var(--ob);color:var(--ok);border-color:var(--ok)}
.table.llamando,.table.propuesta{background:var(--wb);color:var(--wa);border-color:var(--wa)}
.table:focus-visible{outline:3px solid var(--wa);outline-offset:2px}
.table .dot{
  position:absolute;top:-6px;right:-6px;background:var(--wa);color:#fff;border-radius:99px;
  font-size:11px;font-weight:700;min-width:18px;height:18px;
  display:flex;align-items:center;justify-content:center;padding:0 5px;
}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--mu);margin-top:16px}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:14px;height:14px;border-radius:5px;display:inline-block;border:2px solid}
.legend i.libre{background:var(--card);border-color:var(--bd)}
.legend i.activa{background:var(--ob);border-color:var(--ok)}
.legend i.pendiente{background:var(--wb);border-color:var(--wa)}

/* ========== QR grid (Salón) ========== */
.qr-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-top:10px;
}
.qr-card{
  background:#fff;color:#14231c;border:1px solid var(--bd);border-radius:12px;
  padding:12px;text-align:center;
}
.qr-card .qr-img{width:100%;aspect-ratio:1;display:block;border-radius:8px;background:#fff}
.qr-card .qr-label{font-weight:800;margin-top:8px;font-size:15px}
.qr-card .qr-zone{color:#5d6f66;font-size:12px;margin-top:2px}
.qr-card .qr-url{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:10px;color:#5d6f66;margin-top:6px;
  word-break:break-all;line-height:1.3;
}

/* Toasts */
.toasts{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(20px + env(safe-area-inset-bottom,0px));
  display:flex;flex-direction:column;gap:6px;z-index:99;pointer-events:none;
  width:min(92vw,420px);
}
.toast{
  background:var(--tx);color:var(--bg);padding:10px 14px;border-radius:10px;
  font-weight:600;font-size:14px;text-align:center;
  box-shadow:0 6px 20px rgba(0,0,0,.18);
  opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s;
}
.toast.show{opacity:1;transform:translateY(0)}

@media print{
  .demobar,nav,.hint,h1,.toasts{display:none!important}
  .qr-grid{grid-template-columns:repeat(3,1fr)}
  .qr-card{break-inside:avoid;border:1px solid #999}
}