/* 2Ø2 Reservaciones · mismo lenguaje visual que el «Interior moderno» de 2Ø2 P.O.S.:
   barra superior de cristal oscuro, fondo con brillo del color del restaurante y puntos finos, paneles flotantes,
   botones con degradado y brillo, mosaicos que se levantan al tocar. Tema claro y oscuro con los mismos tokens.
   --accent es el color de la marca del restaurante (Panel → Ajustes); js/comun.js lo cambia con RES.color(). */
[hidden]{display:none!important}
:root{
  --bg:#f3f4f8; --surface:#ffffff; --surface-2:#f6f7fb; --hover:#eef0f6; --line:#e4e7ef; --line-2:#d5d9e4;
  --ink:#0b1220; --muted:#64708a; --faint:#98a1b5;
  --accent:#6366f1; --accent-ink:#ffffff; --brass:#f59e0b; --busy:#e11d48; --ok:#16a34a;
  --floor:#f8f9fc; --wall:#2b3346;
  --sombra:0 1px 2px rgba(16,24,40,.04),0 2px 8px rgba(16,24,40,.05);
  --sombra-2:0 12px 32px rgba(16,24,40,.12),0 2px 6px rgba(16,24,40,.06);
  --f-display:"Inter","SF Pro Display",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-body:"Inter","SF Pro Text",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0a0d14; --surface:#121722; --surface-2:#171d2a; --hover:#1d2433; --line:#232b3b; --line-2:#2e3749;
  --ink:#e8ebf2; --muted:#9aa3b7; --faint:#6b7489; --busy:#fb7185; --floor:#0f141e; --wall:#c3cad8;
  --sombra:0 1px 2px rgba(0,0,0,.4),0 2px 10px rgba(0,0,0,.25); --sombra-2:0 18px 40px rgba(0,0,0,.55); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0a0d14; --surface:#121722; --surface-2:#171d2a; --hover:#1d2433; --line:#232b3b; --line-2:#2e3749;
  --ink:#e8ebf2; --muted:#9aa3b7; --faint:#6b7489; --busy:#fb7185; --floor:#0f141e; --wall:#c3cad8;
  --sombra:0 1px 2px rgba(0,0,0,.4),0 2px 10px rgba(0,0,0,.25); --sombra-2:0 18px 40px rgba(0,0,0,.55); color-scheme:dark}

*{box-sizing:border-box}
html{min-height:100%;background:var(--bg)}
body{margin:0;min-height:100vh;color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;
  background:radial-gradient(70% 60% at 0% 0%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 60%),
    radial-gradient(60% 50% at 100% 100%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 60%),var(--bg);
  background-attachment:fixed;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 32px}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;
  background-image:radial-gradient(color-mix(in srgb,var(--ink) 7%,transparent) 1px,transparent 1px);background-size:24px 24px}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
a{color:color-mix(in srgb,var(--accent) 85%,var(--ink))}
.wrap{max-width:1200px;margin:0 auto}
.wide{max-width:960px}

/* ---------- barra superior de cristal oscuro ---------- */
header{position:sticky;top:max(10px,env(safe-area-inset-top,0px));z-index:10;margin-block:12px 18px;padding:10px 12px 10px 18px;border-radius:20px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#e8ebf2;
  background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,0)),rgba(9,11,16,.9);
  backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);
  border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 34px rgba(0,0,0,.22)}
header::after{content:"";position:absolute;left:24px;right:24px;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 80%,transparent),transparent);opacity:.8}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.brand::before{content:"";flex:none;width:34px;height:34px;border-radius:11px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 95%,#fff),color-mix(in srgb,var(--accent) 70%,#000));
  box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 45%,transparent),inset 0 1px 0 rgba(255,255,255,.3)}
.brand h1{font-family:var(--f-display);font-weight:800;font-size:1.25rem;letter-spacing:-.02em;margin:0;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand small{color:rgba(255,255,255,.5);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600;white-space:nowrap}
.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.seg{display:inline-flex;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:3px;gap:2px}
.seg button{border:0;background:none;padding:6px 12px;border-radius:9px;font-weight:700;font-size:.8rem;color:rgba(255,255,255,.6)}
.seg button:hover{color:#fff}
.seg button[aria-pressed="true"]{color:#fff;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 90%,#fff),color-mix(in srgb,var(--accent) 70%,#000));
  box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 40%,transparent),inset 0 1px 0 rgba(255,255,255,.25)}
header .btn.ghost{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.85)}
header .btn.ghost:hover{background:rgba(255,255,255,.12);color:#fff}
/* páginas sueltas (portada, acceso, reserva): el selector de idioma va sobre panel claro */
.panel .seg{background:var(--surface-2);border-color:var(--line)}
.panel .seg button{color:var(--muted)}

/* ---------- distribución ---------- */
.layout{display:grid;grid-template-columns:360px minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:880px){.layout{grid-template-columns:minmax(0,1fr)}}
.panel,.stage{background:var(--surface);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:22px;
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset,var(--sombra-2);min-width:0}
.panel{padding:20px;display:flex;flex-direction:column;gap:20px}
.stage{padding:16px;display:flex;flex-direction:column;gap:12px;position:sticky;top:96px}
@media (max-width:880px){.stage{position:static}}

/* ---------- pasos ---------- */
.step{display:flex;flex-direction:column;gap:10px}
.step h2{margin:0;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;display:flex;gap:10px;align-items:center}
.step h2 b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink);font-size:.74rem;letter-spacing:0}
.step.done h2 b{border-color:transparent;color:#fff;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 92%,#fff),color-mix(in srgb,var(--accent) 75%,#000));
  box-shadow:0 4px 12px color-mix(in srgb,var(--accent) 35%,transparent)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip,.day,.time{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;transition:transform .12s,box-shadow .2s,border-color .2s,background .2s}
.chip{padding:10px 0;min-width:46px;font-weight:700;font-variant-numeric:tabular-nums}
.chip:hover:not(:disabled),.day:hover:not(:disabled),.time:hover:not(:disabled){transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:0 8px 20px rgba(16,24,40,.08)}
.chip[aria-pressed="true"],.day[aria-pressed="true"],.time[aria-pressed="true"]{border-color:transparent;color:#fff;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 92%,#fff),color-mix(in srgb,var(--accent) 75%,#000));
  box-shadow:0 8px 22px color-mix(in srgb,var(--accent) 38%,transparent),inset 0 1px 0 rgba(255,255,255,.25)}
.chip:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.days{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;margin:-4px -2px 0;scrollbar-width:thin}
.day{flex:0 0 auto;min-width:58px;padding:8px 10px;text-align:center;line-height:1.15}
.day span{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}
.day strong{font-size:1.2rem;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.day[aria-pressed="true"] span{color:rgba(255,255,255,.8)}
.times{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px}
.time{padding:8px 0 6px;font-family:var(--f-mono);font-size:.88rem;line-height:1.1}
.time small{display:block;font-family:var(--f-body);font-size:.64rem;color:var(--muted);margin-top:3px;font-weight:600}
.time[aria-pressed="true"] small{color:rgba(255,255,255,.85)}
.time:disabled{opacity:.35;cursor:not-allowed}

/* ---------- plano ---------- */
.stage-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:2px 4px 0}
.stage-head h2{font-family:var(--f-display);font-weight:800;letter-spacing:-.02em;font-size:1.15rem;margin:0}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.76rem;color:var(--muted);font-weight:600}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.planbox{overflow-x:auto;border-radius:16px;border:1px solid var(--line)}
svg.plan{display:block;width:100%;min-width:560px;height:auto;touch-action:none;
  background:radial-gradient(color-mix(in srgb,var(--ink) 8%,transparent) 1px,transparent 1px) 0 0/22px 22px,var(--floor)}
.plan .wall{fill:none;stroke:var(--wall);stroke-width:5;stroke-linecap:round}
.plan .zone{fill:var(--muted);font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-family:var(--f-body);font-weight:700;opacity:.65}
.plan .fixture{fill:var(--line);stroke:none}
.plan .window{stroke:var(--accent);stroke-width:5;opacity:.4}
.plan .terrace{fill:var(--accent);opacity:.07}
.tbl{transition:opacity .2s}
.tbl .top{stroke-width:2;transition:fill .15s}
.tbl .chair{stroke:none}
.tbl text{font-family:var(--f-body);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.tbl .lbl{font-weight:800;font-size:13px}
.tbl .cap{font-size:10px;font-weight:600}
.tbl.fit{cursor:pointer;filter:drop-shadow(0 4px 10px color-mix(in srgb,var(--accent) 35%,transparent))}
.tbl.fit .top{fill:var(--surface);stroke:var(--accent)} .tbl.fit .chair{fill:var(--accent)} .tbl.fit .lbl{fill:var(--accent)} .tbl.fit .cap{fill:var(--muted)}
.tbl.fit:hover .top,.tbl.fit:focus-visible .top{fill:var(--accent)} .tbl.fit:hover text,.tbl.fit:focus-visible text{fill:#fff}
.tbl.sel{filter:drop-shadow(0 6px 14px color-mix(in srgb,var(--brass) 55%,transparent))}
.tbl.sel .top{fill:var(--brass);stroke:var(--brass)} .tbl.sel .chair{fill:var(--brass)} .tbl.sel text{fill:#fff}
.tbl.busy .top{fill:url(#hatch);stroke:var(--busy)} .tbl.busy .chair{fill:var(--busy);opacity:.55} .tbl.busy text{fill:var(--busy)}
.tbl.nofit{opacity:.3} .tbl.nofit .top{fill:var(--surface);stroke:var(--muted)} .tbl.nofit .chair{fill:var(--muted)} .tbl.nofit text{fill:var(--muted)}
.tbl.idle .top{fill:var(--surface);stroke:var(--ink)} .tbl.idle .chair{fill:var(--ink)} .tbl.idle text{fill:var(--ink)}
.tbl.edit{cursor:grab} .tbl.edit.drag{cursor:grabbing}
.tbl.picked{filter:drop-shadow(0 6px 14px color-mix(in srgb,var(--accent) 50%,transparent))} .tbl.picked .top{stroke:var(--accent);stroke-width:4}
.hint{font-size:.86rem;color:var(--muted);margin:0;padding:0 4px}

/* ---------- botones y formularios ---------- */
.btn{border:1px solid transparent;border-radius:14px;padding:12px 18px;font-weight:700;color:#fff;transition:filter .15s,transform .12s,box-shadow .2s;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 92%,#fff),color-mix(in srgb,var(--accent) 78%,#000));
  box-shadow:0 8px 22px color-mix(in srgb,var(--accent) 32%,transparent),inset 0 1px 0 rgba(255,255,255,.25)}
.btn:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.ghost{background:var(--surface);border-color:var(--line);color:var(--ink);font-weight:600;box-shadow:var(--sombra)}
.btn.ghost:hover:not(:disabled){background:var(--hover)}
.btn.small{padding:7px 11px;font-size:.8rem;border-radius:10px}
.btn.danger{background:color-mix(in srgb,var(--busy) 8%,var(--surface));border-color:color-mix(in srgb,var(--busy) 45%,transparent);color:var(--busy);box-shadow:none}
.field{display:flex;flex-direction:column;gap:6px;font-size:.8rem;color:var(--muted);font-weight:600}
.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:10px 12px;font-size:.95rem;color:var(--ink);font-weight:500;width:100%;transition:border-color .15s,box-shadow .15s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 15%,transparent)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:420px){.row{grid-template-columns:1fr}}
.summary{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.9rem;background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.summary b{font-variant-numeric:tabular-nums}

/* ---------- ventana ---------- */
.scrim{position:fixed;inset:0;z-index:20;display:grid;place-items:end center;background:rgba(6,8,14,.55);backdrop-filter:blur(8px) saturate(1.2);-webkit-backdrop-filter:blur(8px) saturate(1.2)}
@media (min-width:700px){.scrim{place-items:center}}
.sheet{background:var(--surface);width:min(470px,100%);border-radius:26px 26px 0 0;padding:22px 22px calc(22px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:14px;max-height:92vh;overflow:auto;
  box-shadow:0 30px 80px rgba(0,0,0,.4),0 1px 0 rgba(255,255,255,.06) inset;border:1px solid var(--line)}
@media (min-width:700px){.sheet{border-radius:26px}}
.sheet h3{font-family:var(--f-display);font-weight:800;letter-spacing:-.025em;font-size:1.45rem;margin:0;text-wrap:balance}
.code{font-family:var(--f-mono);font-size:1.8rem;letter-spacing:.16em;text-align:center;border-radius:16px;padding:14px;font-weight:500;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--surface-2)),var(--surface-2));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line))}
.actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}

/* ---------- panel del restaurante ---------- */
.subtabs{display:flex;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:4px;margin:0}
.subtabs button{flex:1;border:0;background:none;padding:8px 6px;border-radius:10px;font-weight:700;font-size:.84rem;color:var(--muted)}
.subtabs button[aria-pressed="true"]{color:#fff;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 92%,#fff),color-mix(in srgb,var(--accent) 78%,#000));box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 30%,transparent)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stat{position:relative;overflow:hidden;background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:12px 10px 10px}
.stat::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--accent),transparent);opacity:.85}
.stat strong{display:block;font-family:var(--f-display);font-weight:800;letter-spacing:-.03em;font-size:1.55rem;font-variant-numeric:tabular-nums}
.stat span{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.list{display:flex;flex-direction:column;gap:6px;max-height:460px;overflow:auto;padding:2px}
.bk{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);transition:border-color .15s,box-shadow .2s}
.bk:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));box-shadow:0 6px 18px rgba(16,24,40,.07)}
.bk .t{font-family:var(--f-mono);font-size:.9rem;font-weight:500}
.bk .who{min-width:0}
.bk .who b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk .who span{font-size:.78rem;color:var(--muted)}
.pill{font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:4px 9px;border-radius:999px;white-space:nowrap}
.pill.confirmed{color:color-mix(in srgb,var(--accent) 80%,var(--ink));background:color-mix(in srgb,var(--accent) 14%,transparent)}
.pill.seated{color:#b45309;background:rgba(245,158,11,.15)}
.pill.cancelled{color:var(--muted);background:var(--hover);text-decoration:line-through}
.bk-acts{display:flex;gap:4px;justify-content:flex-end;grid-column:2/4}
.empty{color:var(--muted);font-size:.9rem;padding:18px 0;text-align:center}
.slider{display:flex;align-items:center;gap:10px}
.slider input{flex:1;accent-color:var(--accent)}
.slider output{font-family:var(--f-mono);min-width:48px;color:var(--ink)}
.copyrow{display:flex;gap:8px}
.copyrow input{flex:1;min-width:0}
.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:30;padding:11px 18px;border-radius:14px;font-weight:700;font-size:.9rem;color:#fff;
  background:rgba(9,11,16,.92);border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 30px rgba(0,0,0,.3);backdrop-filter:blur(10px)}
.note,.foot{font-size:.78rem;color:var(--muted);margin:0}
.foot{text-align:center;padding-top:18px}

/* ---------- páginas sueltas ---------- */
.solo{max-width:460px;margin:8vh auto 0;display:flex;flex-direction:column;gap:16px}
.solo .panel h1,.panel h1{font-family:var(--f-display);font-weight:800;letter-spacing:-.03em;font-size:1.7rem;margin:0;text-wrap:balance}
.err{color:var(--busy);font-size:.88rem;margin:0;font-weight:600}
.muted{color:var(--muted)}
.demo-box{background:color-mix(in srgb,var(--accent) 8%,var(--surface-2));border:1px dashed color-mix(in srgb,var(--accent) 40%,var(--line));border-radius:12px;padding:10px 12px;font-size:.85rem}
.demo-box code{font-family:var(--f-mono)}
table.adm{width:100%;border-collapse:collapse;font-size:.88rem}
table.adm th,table.adm td{text-align:left;padding:10px 6px;border-top:1px solid var(--line);vertical-align:top}
table.adm th{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-top:0}

/* firma de 2Ø2 (logo blanco: en tema claro se invierte) */
.firma{display:flex;align-items:center;justify-content:center;gap:8px;padding-block:26px 8px;font-size:.72rem;color:var(--muted);letter-spacing:.04em}
.firma img{height:14px;width:auto;filter:invert(1) brightness(.35)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .firma img{filter:none;opacity:.75}}
:root[data-theme="dark"] .firma img{filter:none;opacity:.75}

/* ---------- celular ---------- */
@media (max-width:560px){
  header{padding:8px 8px 8px 12px;border-radius:16px}
  .brand::before{width:28px;height:28px;border-radius:9px}
  .brand h1{font-size:1.05rem}
  .brand small{display:none}
  .panel{padding:16px;border-radius:18px}
  .stage{padding:10px;border-radius:18px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .pill.seated{color:#fcd34d}}
:root[data-theme="dark"] .pill.seated{color:#fcd34d}
