/* AtithiVani Dine. Built from the AtithiVani design system (Sondhya colourway) and the Dine design canvas:
   Cormorant for headings and dish names, Space Grotesk for anything operated, mono for every figure.
   The kitchen board runs dark on ink and plum for glare. Accent is the only action colour. */
:root{
  --page:#fdf4ee; --card:#fff; --sunken:#fbede4; --wash:#ffe4d5; --sky:#ffd9c4; --inverse:#4a2340;
  --ink:#2a1226; --ink-soft:#5b3a54; --ink-muted:#7a5a72; --ink-inv:#fff3ea; --ink-inv-soft:#e6c9d9; --on-accent:#fff7f1;
  --line:#ebd6c9; --line-soft:#f5e6dc; --line-strong:#9e7288; --gold:rgba(201,168,106,.35);
  --ridge-far:#ff9b78; --ridge-near:#f2603f; --accent:#c0492b; --accent-strong:#a33b21;
  --live:#2e7d57; --live-bg:#e6f1ea; --live-ink:#1f5a3e; --warn:#9a6410; --warn-bg:#fbefd9; --warn-ink:#7a4e0c;
  --crit:#b3301f; --crit-bg:#fbe3df; --crit-ink:#8f2416; --info:#2c6a8c; --info-bg:#e7f0f5; --info-ink:#245a77;
  --serif:"Cormorant Garamond",Georgia,serif; --sans:"Space Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sh:0 1px 2px rgba(42,18,38,.06),0 8px 24px rgba(42,18,38,.07); --lift:0 4px 10px rgba(42,18,38,.10),0 18px 44px rgba(42,18,38,.12);
  --ease:cubic-bezier(.2,.7,.2,1);
  --ridges:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 90' preserveAspectRatio='none'%3E%3Cpath d='M0 62 L60 44 L118 58 L176 30 L232 52 L290 26 L346 48 L400 36 L400 90 L0 90Z' fill='%23ff9b78'/%3E%3Cpath d='M0 74 L70 60 L140 72 L210 50 L280 68 L340 56 L400 64 L400 90 L0 90Z' fill='%23f2603f'/%3E%3C/svg%3E");
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--page);color:var(--ink);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--inverse);outline-offset:2px}
a{color:var(--accent)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.serif{font-family:var(--serif);font-weight:600}
.eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted)}
.muted{color:var(--ink-muted)} .soft{color:var(--ink-soft)} .small{font-size:13px}
.rule{height:1px;background:var(--gold);margin:12px 0 2px}
.hidden{display:none!important}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- shared components ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border:0;border-radius:11px;
  background:var(--accent);color:var(--on-accent);font-weight:600;font-size:15px;text-decoration:none;transition:background .12s var(--ease)}
.btn:hover{background:var(--accent-strong)}
.btn:disabled{opacity:.45;cursor:default}
.btn.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line-strong)}
.btn.secondary:hover{background:var(--sunken)}
.btn.quiet{background:none;color:var(--accent);padding:0 6px;text-decoration:underline}
.btn.light{background:var(--ink-inv);color:var(--ink)}
.btn.outline-inv{background:transparent;border:1px solid rgba(255,243,234,.4);color:var(--ink-inv)}
.btn.block{width:100%} .btn.lg{min-height:54px;font-size:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh)}
.card.flat{box-shadow:none}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;letter-spacing:.02em;padding:4px 11px;border-radius:999px;white-space:nowrap;background:var(--sunken);color:var(--ink-soft)}
.pill.new{background:var(--info-bg);color:var(--info-ink)} .pill.cooking,.pill.waiting{background:var(--warn-bg);color:var(--warn-ink)}
.pill.ready,.pill.ok{background:var(--live-bg);color:var(--live-ink)} .pill.late{background:var(--crit-bg);color:var(--crit-ink)}
.pill.served{background:var(--card);border:1px solid var(--line)}
.live-dot{width:8px;height:8px;border-radius:50%;background:#5fd39a;display:inline-block}
.veg{flex:none;width:14px;height:14px;border:1.5px solid var(--live);border-radius:3px;display:grid;place-items:center;margin-top:8px}
.veg::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--live)}
.add{flex:none;align-self:center;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--accent);background:var(--card);color:var(--accent);font-size:22px;line-height:1}
.add:hover{background:var(--wash)}
.stepper{flex:none;align-self:center;display:inline-flex;align-items:center;background:var(--inverse);color:var(--ink-inv);border-radius:999px}
.stepper button{width:40px;height:40px;border:0;background:none;color:inherit;font-size:20px}
.stepper span{font-family:var(--mono);min-width:16px;text-align:center}
.stepper.light{background:var(--card);color:var(--inverse);border:1px solid var(--line)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-height:42px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:var(--card)}
.chip[aria-pressed="true"]{background:var(--inverse);color:var(--ink-inv);border-color:var(--inverse)}
.field label{display:block;font-size:13px;color:var(--ink-soft);margin:18px 0 6px}
textarea,input[type=text],input[type=password],input[type=number],input[type=url],input[type=date],select{width:100%;border:1px solid var(--line);border-radius:11px;padding:12px 14px;background:var(--card);font-size:15px}
textarea{resize:vertical}
.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:var(--ink);color:var(--ink-inv);padding:12px 18px;border-radius:12px;z-index:50;box-shadow:var(--lift);max-width:90vw;animation:rise .22s var(--ease)}
@keyframes rise{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.sheet{position:fixed;inset:0;background:rgba(42,18,38,.55);z-index:30;display:flex;align-items:flex-end;justify-content:center;animation:fade .22s var(--ease)}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet>.panel{background:var(--page);width:100%;max-width:560px;max-height:94vh;overflow:auto;border-radius:28px 28px 0 0;padding:10px 20px calc(24px + env(safe-area-inset-bottom))}
.sheet .grab{width:40px;height:4px;border-radius:4px;background:var(--line);margin:0 auto 18px}
@media (min-width:700px){.sheet{align-items:center}.sheet>.panel{border-radius:20px}}

/* ---------- guest ---------- */
.g-hero{background:var(--inverse) var(--ridges) no-repeat bottom/100% 90px;color:var(--ink-inv);padding:20px 22px 74px}
.g-hero .top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.g-hero .eyebrow{color:var(--ink-inv-soft)}
.g-hero h1{font:600 46px/1 var(--serif);margin:24px 0 8px}
.g-hero p{margin:0;color:var(--ink-inv-soft);font-size:15px}
.g-live{display:inline-flex;align-items:center;gap:7px;font-size:12px;border:1px solid rgba(201,168,106,.45);border-radius:999px;padding:5px 11px}
.g-wrap{max-width:560px;margin:0 auto;padding:0 16px 120px}
.g-service{margin:-40px 0 0;position:relative;z-index:2;box-shadow:var(--lift);padding:12px 6px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px}
.g-service button{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:7px;padding:6px 2px;min-height:68px;font-size:12px;font-weight:500;border-radius:11px}
.g-service button .ic{width:42px;height:42px;border-radius:50%;background:var(--wash);color:var(--inverse);display:grid;place-items:center;transition:background .12s}
.g-service button[aria-pressed="true"] .ic{background:var(--live);color:#fff}
.g-service button[aria-pressed="true"]{color:var(--live-ink)}
.g-tabs{display:flex;gap:8px;padding:22px 0 4px;overflow-x:auto;scrollbar-width:none;position:sticky;top:0;z-index:5;background:linear-gradient(var(--page) 80%,transparent)}
.g-tabs a{flex:none;text-decoration:none;padding:9px 15px;border-radius:9px;background:var(--card);border:1px solid var(--line);color:var(--ink);font-size:13px}
.g-tabs a.on{background:var(--inverse);color:var(--ink-inv);border-color:var(--inverse)}
.g-sec{padding-top:22px;scroll-margin-top:70px}
.g-sec h2{font:600 30px/1.1 var(--serif);margin:4px 0 0}
.dish{display:flex;gap:14px;padding:18px 0;border-bottom:1px solid var(--line-soft)}
.dish:last-child{border-bottom:0}
.dish h3{font:600 23px/1.15 var(--serif);margin:0}
.dish p{margin:5px 0 8px;font-size:14px;line-height:1.5;color:var(--ink-soft)}
.dish .meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:12px}
.dish .tag{color:var(--ink-soft);border:1px solid var(--line);border-radius:9px;padding:2px 8px}
.dish .gone{font-weight:600;letter-spacing:.06em;color:var(--crit)}
.g-bar{position:fixed;left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));max-width:536px;margin:0 auto;background:var(--ink);color:var(--ink-inv);border-radius:14px;padding:10px 10px 10px 18px;display:flex;align-items:center;gap:12px;box-shadow:0 18px 44px rgba(42,18,38,.28);z-index:20;animation:rise2 .22s var(--ease)}
@keyframes rise2{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.g-bar b{display:block;font-size:15px} .g-bar span{font-size:12px;color:var(--ink-inv-soft)}
.o-line{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line-soft)}
.o-line:last-child{border-bottom:0}
.o-line .n{flex:1;min-width:0} .o-line .n b{display:block;font:600 21px/1.2 var(--serif)} .o-line .n span{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}
.pace{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;cursor:pointer}
.pace.on{border:2px solid var(--inverse);padding:15px}
.pace input{margin:3px 0 0;accent-color:var(--inverse);width:18px;height:18px;flex:none}
.pace b{display:block;font-size:15px} .pace small{display:block;font-size:13px;color:var(--ink-soft);margin-top:3px}
.note-box{display:flex;gap:10px;align-items:center;padding:14px 16px;background:var(--wash);border-radius:14px;font-size:13px;color:var(--ink-soft)}
.status-card{padding:18px 18px 8px;margin-top:14px}
.status-card .hd{display:flex;justify-content:space-between;align-items:center;gap:10px}
.status-card .hd b{font-size:15px}
.tl{list-style:none;margin:14px 0 0;padding:0}
.tl li{display:flex;gap:14px;align-items:center;padding-bottom:14px;font-size:14px}
.tl .dot{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center}
.tl li.done .dot{background:var(--live);border-color:var(--live);color:#fff}
.tl li.now .dot{border-color:var(--live)} .tl li.now .dot::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--live);animation:pulse 1.6s ease-in-out infinite}
.tl li.now{font-weight:600} .tl li.todo{color:var(--ink-muted)}
.tl li time{margin-left:auto;font-family:var(--mono);font-size:13px;color:var(--ink-muted)}
@keyframes pulse{50%{opacity:.35}}
.rate{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.rate button{height:46px;border-radius:11px;border:1px solid var(--line);background:var(--card);font-family:var(--mono);font-size:15px;color:var(--ink-soft)}
.rate button[aria-pressed="true"]{background:var(--inverse);border-color:var(--inverse);color:var(--ink-inv);font-weight:600}
.fb-row{padding:16px 0;border-bottom:1px solid var(--line-soft)} .fb-row:last-child{border-bottom:0}
.fb-row legend,.fb-row .lg{font-weight:600;font-size:15px;margin-bottom:12px;display:block}
.ends{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-muted);margin-top:8px}
.cta-row{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--wash);border-radius:14px;text-decoration:none;color:var(--ink);border:0;width:100%;text-align:left}

/* ---------- staff shell ---------- */
.s-head{background:var(--inverse);color:var(--ink-inv)}
.s-head .in{max-width:1240px;margin:0 auto;padding:16px 20px;display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.wordmark{font:24px/1 var(--serif)} .wordmark b{font-weight:600} .wordmark i{font-style:normal;color:var(--ridge-far)}
.wordmark small{font:12px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-inv-soft);margin-left:8px}
.s-nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.s-nav button{border:0;background:none;color:var(--ink-inv-soft);padding:8px 14px;border-radius:9px;font-size:14px}
.s-nav button[aria-selected="true"]{background:var(--ink-inv);color:var(--ink);font-weight:600}
.s-meta{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--ink-inv)}
.s-meta button{border:1px solid rgba(255,243,234,.3);background:none;color:var(--ink-inv);border-radius:999px;padding:5px 12px;font-size:12px}
.login{max-width:440px;margin:8vh auto;padding:0 16px}
.login h1{font:600 44px/1.05 var(--serif);margin:12px 0 22px}
.roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.roles button{min-height:72px;border-radius:14px;border:1px solid var(--line);background:var(--card);text-align:left;padding:12px 14px}
.roles button b{display:block;font-size:15px} .roles button span{font-size:12px;color:var(--ink-muted)}
.roles button[aria-pressed="true"]{border:2px solid var(--inverse);padding:11px 13px}
.pin{font-family:var(--mono);font-size:26px;letter-spacing:.4em;text-align:center}

/* floor */
.f-wrap{max-width:720px;margin:0 auto;padding:0 16px 110px}
.f-stats{background:var(--inverse);color:var(--ink-inv)}
.f-stats .in{max-width:720px;margin:0 auto;padding:4px 20px 20px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.f-stats .v{font:28px/1 var(--mono)} .f-stats .l{font-size:12px;color:var(--ink-inv-soft);margin-top:4px} .f-stats .hot{color:var(--sky)}
.h-serif{font:600 26px/1.15 var(--serif);margin:24px 0 12px}
.need{position:relative;overflow:hidden;padding:14px 16px 14px 20px;margin-bottom:10px}
.need::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--bar,var(--info))}
.need .row{display:flex;align-items:center;gap:12px}
.need .tn{font:600 26px/1 var(--mono);width:52px;flex:none}
.need .what{flex:1;min-width:0} .need .what b{display:block;font-size:15px} .need .what span{font-size:13px;color:var(--ink-soft)}
.need .clock{text-align:right} .need .clock .mono{font-size:18px;display:block} .need .clock small{font-size:11px;font-weight:600;letter-spacing:.06em}
.need .acts{display:flex;gap:8px;margin-top:12px} .need .acts .btn{flex:1}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media (min-width:600px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
.tile{min-height:94px;border-radius:14px;border:1px solid var(--line);background:var(--card);text-align:left;padding:12px;display:flex;flex-direction:column;justify-content:space-between;gap:6px}
.tile .tn{font:600 20px/1 var(--mono)} .tile .st{font-size:12px;color:var(--ink-soft)}
.tile.free .st{color:var(--ink-muted)} .tile.busy{background:var(--sunken)}
.tile.waiting{border:2px solid var(--warn);background:var(--warn-bg);padding:11px} .tile.waiting b{color:var(--warn-ink)}
.tile.late{border:2px solid var(--crit);background:var(--crit-bg);padding:11px} .tile.late b{color:var(--crit-ink)}
.tile.new{border:2px solid var(--info);background:var(--info-bg);padding:11px} .tile.new b{color:var(--info-ink)}
.f-dock{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);padding:10px 16px calc(14px + env(safe-area-inset-bottom));z-index:15}
.f-dock .in{max-width:720px;margin:0 auto;display:flex;gap:10px} .f-dock .btn{flex:1}
.empty{padding:22px;text-align:center;color:var(--ink-muted);border:1px dashed var(--line);border-radius:14px}

/* kitchen (dark) */
body.kitchen{background:var(--ink);color:var(--ink-inv)}
body.kitchen .s-head{background:var(--ink);border-bottom:1px solid rgba(201,168,106,.25)}
.k-wrap{padding:18px 22px 40px}
.k-bar{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin-bottom:18px}
.k-bar .t{flex:1;font:600 32px/1.05 var(--serif)}
.k-fig{text-align:right} .k-fig .mono{font-size:28px;line-height:1;display:block} .k-fig small{font-size:12px;color:var(--ink-inv-soft)}
.k-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}
@media (max-width:900px){.k-cols{grid-template-columns:minmax(0,1fr)}}
.k-cols h2{margin:0 0 12px;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-inv-soft);font-weight:600}
.ticket{background:var(--inverse);border-radius:14px;overflow:hidden;margin-bottom:12px}
.ticket .band{height:5px;background:#5fd39a} .ticket.amber .band{background:#f2c070} .ticket.red .band{background:#ff9d8f}
.ticket.red{box-shadow:0 0 0 2px #ff9d8f}
.ticket .bd{padding:16px 18px 18px}
.ticket .hd{display:flex;align-items:baseline;gap:12px}
.ticket .hd .tn{font:600 34px/1 var(--mono)} .ticket .hd .src{font-size:13px;color:var(--ink-inv-soft)} .ticket .hd .clk{margin-left:auto;font:24px var(--mono);color:#5fd39a}
.ticket.amber .clk{color:#f2c070} .ticket.red .clk{color:#ff9d8f}
.ticket ul{list-style:none;margin:14px 0 0;padding:0;font-size:21px;line-height:1.5}
.ticket li b{font-family:var(--mono);display:inline-block;width:40px}
.ticket .jain{font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--ink);background:#ff9d8f;border-radius:6px;padding:2px 7px;vertical-align:3px;margin-left:6px}
.ticket .knote{margin:12px 0 0;font-size:15px;color:var(--sky);background:rgba(255,217,196,.08);border-radius:9px;padding:8px 12px}
.ticket .late{margin-top:10px;font-size:13px;font-weight:600;letter-spacing:.06em;color:#ff9d8f}
.ticket .btn{width:100%;min-height:56px;margin-top:16px;font-size:17px}
.ticket.held{background:transparent;border:1.5px dashed rgba(255,243,234,.28)} .ticket.held .band{display:none} .ticket.held ul,.ticket.held .tn{color:var(--ink-inv-soft)}
.k-empty{border:1px dashed rgba(255,243,234,.2);border-radius:14px;padding:24px;text-align:center;color:var(--ink-inv-soft);font-size:14px}
.k-86{margin-top:18px;border-top:1px solid rgba(201,168,106,.3);padding-top:14px}
.k-86 .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:12px}
.k-86 button{min-height:48px;border-radius:11px;border:1px solid rgba(255,243,234,.25);background:transparent;color:var(--ink-inv);text-align:left;padding:0 14px;display:flex;justify-content:space-between;align-items:center}
.k-86 button.off{border-color:#ff9d8f;color:#ff9d8f}

/* manager */
.m-hero{background:var(--inverse) var(--ridges) no-repeat bottom/100% 110px;color:var(--ink-inv)}
.m-hero .in{max-width:1240px;margin:0 auto;padding:30px 20px 110px}
.m-hero .eyebrow{color:var(--ink-inv-soft)}
.m-hero h1{font:600 clamp(36px,5vw,62px)/1.02 var(--serif);margin:10px 0 0;max-width:22ch}
.m-main{max-width:1240px;margin:-52px auto 0;position:relative;z-index:2;padding:0 20px 80px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media (max-width:860px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi{padding:20px 22px;box-shadow:var(--lift)} .kpi .mono{font-size:34px;display:block;margin-top:10px;line-height:1.05} .kpi .mono small{font-size:15px;color:var(--ink-muted)} .kpi .sub{font-size:13px;color:var(--ink-soft);margin-top:4px}
.kpi .crit{color:var(--crit)}
.m-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:24px;margin-top:36px}
@media (max-width:900px){.m-grid{grid-template-columns:minmax(0,1fr)}}
.m-h{font:600 32px/1.1 var(--serif);margin:0 0 14px}
.unhappy{padding:22px 24px;margin-bottom:12px}
.unhappy blockquote{margin:14px 0 12px;font:italic 500 26px/1.3 var(--serif)}
.unhappy .sc{display:flex;flex-wrap:wrap;gap:18px;font-size:13px;color:var(--ink-soft)} .unhappy .sc b{font-family:var(--mono);color:var(--ink)}
.unhappy .acts{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.wait-row{display:flex;align-items:center;gap:16px;padding:16px 20px;margin-bottom:10px}
.wait-row .tn{font:600 24px/1 var(--mono);width:52px;flex:none} .wait-row .w{flex:1;min-width:0} .wait-row .w b{display:block;font-size:15px} .wait-row .w span{font-size:13px;color:var(--ink-soft)}
.dossier{padding:24px 26px;position:relative}
.dossier::before{content:"";position:absolute;inset:8px;border:1px solid rgba(201,168,106,.3);border-radius:10px;pointer-events:none}
.dossier ol{margin:14px 0 0;padding-left:22px;font-size:15px;line-height:1.6} .dossier li{margin-bottom:6px} .dossier li:last-child{font-weight:600}
.stages{padding:10px 26px}
.stage{display:grid;grid-template-columns:220px minmax(0,1fr) 150px;align-items:center;gap:20px;padding:16px 0;border-bottom:1px solid var(--line-soft)}
.stage:last-child{border-bottom:0}
@media (max-width:700px){.stage{grid-template-columns:minmax(0,1fr) 110px}.stage .bar{grid-column:1/-1;order:3}}
.stage .bar{position:relative;height:12px;background:var(--sunken);border-radius:6px}
.stage .bar i{position:absolute;left:0;top:0;bottom:0;border-radius:6px;background:var(--ridge-far)} .stage.worst .bar i{background:var(--ridge-near)}
.stage .bar u{position:absolute;top:-4px;width:2px;height:20px;background:var(--inverse)}
.stage .v{font-family:var(--mono);font-size:15px;text-align:right}
.stage.worst>span:first-child{font-weight:600}
.tbl{overflow-x:auto} table{border-collapse:collapse;width:100%;font-size:14px}
th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line-soft);vertical-align:top}
th{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);font-weight:600}
td.mono{font-family:var(--mono)}
.set-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.qrgrid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.qrcard{padding:22px 18px;text-align:center;break-inside:avoid;position:relative}
.qrcard::before{content:"";position:absolute;inset:8px;border:1px solid rgba(201,168,106,.35);border-radius:10px;pointer-events:none}
.qrcard h3{font:600 26px/1.1 var(--serif);margin:6px 0 2px} .qrcard .qr{display:flex;justify-content:center;margin:14px 0}
@media print{.s-head,.noprint{display:none!important}body{background:#fff}.m-hero{display:none}.m-main{margin:0}}

/* ================= v2 · from the research (moodboard on the design canvas) ================= */
/* guest: photograph-led hero, signature carousel, thumbnails, honest wait range */
.g2-hero{position:relative;min-height:440px;color:var(--ink-inv);overflow:hidden;display:flex;flex-direction:column;background:#160d14}
.g2-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.g2-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(22,13,20,.6) 0%,rgba(22,13,20,.12) 38%,rgba(22,13,20,.94) 100%)}
.g2-hero>*{position:relative;z-index:1}
.g2-top{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:18px 20px}
.g2-top .eyebrow{color:var(--ink-inv)}
.glass{background:rgba(255,243,234,.12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,243,234,.16)}
.g2-chip{display:inline-flex;align-items:center;gap:7px;font-size:12px;border-radius:999px;padding:7px 13px;color:var(--ink-inv);text-decoration:none}
.g2-body{margin-top:auto;padding:0 20px 66px}
.g2-body .k{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--sky)}
.g2-body h1{font:600 50px/.98 var(--serif);margin:8px 0 8px}
.g2-body h1 em,.serif em,.m2-hero h1 em{font-style:italic;font-weight:500;color:var(--ridge-far)}
.g2-body p{margin:0;font-size:14px;color:var(--ink-inv-soft)}
.g2-hero.table{min-height:480px}.g2-hero.table .g2-body{padding-bottom:26px}.g2-hero.table h1{font-size:42px;line-height:1.02;margin-bottom:16px}
.eta{border-radius:14px;padding:14px 16px}
.eta .r{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--ink-inv-soft)}
.eta .v{font:30px/1.2 var(--mono);color:var(--ink-inv);margin:4px 0 10px}
.eta .bar{height:6px;border-radius:6px;background:rgba(255,243,234,.18);overflow:hidden}
.eta .bar i{display:block;height:100%;background:linear-gradient(135deg,var(--ridge-far),var(--ridge-near))}
.g-service{border-radius:18px}
.g-tabs a{border-radius:999px}.g-tabs a.on{background:var(--ink);border-color:var(--ink)}
.sig{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px;padding:0 16px 8px;scrollbar-width:none}
.sig::-webkit-scrollbar{display:none}
.sig article{flex:none;width:252px;scroll-snap-align:start;background:var(--card);border-radius:16px;overflow:hidden;box-shadow:var(--sh)}
.sig img{width:100%;height:188px;object-fit:cover;display:block}
.sig .b{padding:14px 16px 16px} .sig h3{font:600 24px/1.1 var(--serif);margin:0} .sig p{margin:4px 0 12px;font-size:13px;line-height:1.45;color:var(--ink-soft)}
.sig .row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px}
.pill-add{height:40px;padding:0 18px;border-radius:999px;border:0;background:var(--accent);color:var(--on-accent);font-weight:600}
.dish .th{flex:none;width:92px;height:92px;border-radius:14px;object-fit:cover;align-self:center}
.dish.off .th{filter:grayscale(.85);opacity:.6} .dish.off h3{color:var(--ink-muted)}
.dish.text{padding:14px 0;align-items:center} .dish.text h3{font-size:21px}
.dish .vrow{display:flex;align-items:center;gap:8px} .dish .vrow .veg{margin-top:0;width:12px;height:12px}
.stepper{background:var(--ink)}
.g-bar{border-radius:18px;box-shadow:0 18px 44px rgba(42,18,38,.35)}
.g-bar .stack{display:flex} .g-bar .stack img{width:34px;height:34px;border-radius:50%;object-fit:cover;border:2px solid var(--ink)} .g-bar .stack img+img{margin-left:-10px}
.oc{padding:18px;margin-top:12px;border-radius:18px}
.oc .hd{display:flex;align-items:center;gap:12px} .oc .hd img{width:52px;height:52px;border-radius:12px;object-fit:cover;flex:none}
.oc .hd .t{flex:1;min-width:0} .oc .hd b{display:block;font:600 22px/1.15 var(--serif)} .oc .hd span{font-size:13px;color:var(--ink-soft)}
.rail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:18px;position:relative;list-style:none;padding:0}
.rail::before{content:"";position:absolute;left:12.5%;right:12.5%;top:11px;height:2px;background:var(--line)}
.rail .fill{position:absolute;left:12.5%;top:11px;height:2px;background:var(--live)}
.rail li{display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;font-size:12px;text-align:center}
.rail .dot{width:24px;height:24px;border-radius:50%;background:#fff;border:2px solid var(--line);display:grid;place-items:center}
.rail .done .dot{background:var(--live);border-color:var(--live);color:#fff} .rail .now .dot{border-color:var(--live)}
.rail .now .dot::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--live);animation:pulse 1.6s ease-in-out infinite}
.rail .now{font-weight:600} .rail .todo{color:var(--ink-muted)} .rail time{font:11px var(--mono);color:var(--ink-muted)}
.reqs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.reqs button{min-height:58px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-weight:500}
.reqs button[aria-pressed="true"]{background:var(--live);border-color:var(--live);color:#fff;font-weight:600}
.fb-dark{margin:28px 0 10px;background:var(--ink);color:var(--ink-inv);border-radius:18px;padding:24px 22px;position:relative;overflow:hidden;border:0;width:100%;text-align:left}
.fb-dark::before{content:"";position:absolute;inset:8px;border:1px solid rgba(201,168,106,.3);border-radius:12px;pointer-events:none}
.fb-dark .eyebrow{color:var(--ink-inv-soft)} .fb-dark .t{font:600 28px/1.1 var(--serif);margin:8px 0 6px} .fb-dark .t em{font-style:italic;font-weight:500;color:var(--ridge-far)}
.fb-dark p{margin:0;font-size:13px;color:var(--ink-inv-soft)}

/* kitchen: the pass */
body.kitchen{background:#0f0a0e;color:#f4e9e4}
body.kitchen .s-head{display:none}
.kp{min-height:100vh;display:flex;flex-direction:column}
.kp-head{display:flex;align-items:center;gap:30px;flex-wrap:wrap;padding:16px 24px;border-bottom:1px solid rgba(201,168,106,.22);font-family:var(--mono)}
.kp-head .t{flex:1;font-size:15px;letter-spacing:.12em;color:#a8919e} .kp-head .t b{font-size:20px;letter-spacing:.08em;color:#f4e9e4}
.kp-head .f{font-size:14px;color:#a8919e} .kp-head .f b{font-size:22px;color:#f4e9e4;margin-left:4px} .kp-head .f b.hot{color:#ff8a65}
.kp-head .clk{font-size:24px}
.kp-head button{font-family:var(--sans);border:1px solid rgba(244,233,228,.25);background:none;color:#f4e9e4;border-radius:10px;padding:8px 14px;font-size:13px}
.kp-rail{flex:1;display:flex;flex-wrap:wrap;gap:12px;padding:18px 24px;align-content:flex-start}
.tk{width:252px;border:1px solid rgba(255,255,255,.12);border-radius:12px;overflow:hidden;background:#1a1117;display:flex;flex-direction:column}
.tk.late{border:2px solid #ff8a65} .tk.flag{border:2px solid #ffd166}
.tk .h{padding:12px 14px;font-family:var(--mono)} .tk .h .r{display:flex;justify-content:space-between;align-items:baseline}
.tk .h b{font-size:26px} .tk .h small{font-size:13px;color:#a8919e} .tk .h .m{font-size:13px;color:#a8919e;margin-top:2px;text-transform:uppercase}
.tk .band{font:700 14px var(--mono);letter-spacing:.04em;padding:8px 14px;text-transform:uppercase}
.tk .band.late{background:#ff8a65;color:#1a0f0c} .tk .band.flag{background:#ffd166;color:#1a1205}
.tk .strip{height:4px;background:#5fd39a} .tk .strip.amber{background:#ffd166}
.tk ul{list-style:none;margin:0;padding:12px 14px;font-size:19px;line-height:1.45;flex:1}
.tk li b{font-family:var(--mono);display:inline-block;width:30px}
.tk .mod{display:block;margin-left:30px;font:700 13px var(--mono);color:#ffd166;text-transform:uppercase}
.tk .note{margin:0 14px 12px;font:700 13px var(--mono);color:#ffd166;text-transform:uppercase}
.tk .ft{display:flex;border-top:1px solid rgba(255,255,255,.08)}
.tk .ft button{flex:1;height:58px;border:0;font:700 16px var(--sans);letter-spacing:.04em;text-transform:uppercase}
.tk .ft .go{background:var(--accent);color:var(--on-accent)} .tk .ft .rd{background:#f4e9e4;color:#1a0f0c}
.tk .ft .age{width:86px;display:grid;place-items:center;font:600 18px var(--mono);color:#5fd39a} .tk .ft .age.amber{color:#ffd166} .tk .ft .age.red{color:#ff8a65}
.tk.held{background:transparent;border:1.5px dashed rgba(244,233,228,.25)} .tk.held ul{color:#cdb8c4}
.tk.held .ft button{background:transparent;color:#f4e9e4;border-top:1px dashed rgba(244,233,228,.25)}
.kp-empty{color:#a8919e;font:15px var(--mono);padding:40px 0}
.kp-foot{display:flex;align-items:center;gap:26px;flex-wrap:wrap;padding:12px 24px;border-top:1px solid rgba(201,168,106,.22);font:14px var(--mono);color:#a8919e}
.kp-foot b{color:#f4e9e4} .kp-foot .x{color:#ff8a65}
.kp-86{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;padding:0 24px 18px}
.kp-86 button{min-height:48px;border-radius:10px;border:1px solid rgba(244,233,228,.2);background:none;color:#f4e9e4;text-align:left;padding:0 14px;display:flex;justify-content:space-between;align-items:center;font-size:14px}
.kp-86 button.off{border-color:#ff8a65;color:#ff8a65}

/* manager: rail + photo band */
body.manager .s-head{display:none}
.m2{display:flex;min-height:100vh}
.m2-rail{width:248px;flex:none;background:var(--ink);color:var(--ink-inv);padding:26px 18px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}
.m2-rail .wordmark{padding:0 10px 26px}
.m2-rail button{display:flex;align-items:center;gap:12px;text-align:left;border:0;background:none;color:var(--ink-inv-soft);padding:11px 12px 11px 32px;border-radius:11px;font-size:14px}
.m2-rail button[aria-selected="true"]{background:rgba(255,243,234,.1);color:var(--ink-inv);font-weight:600;padding-left:12px}
.m2-rail button[aria-selected="true"]::before{content:"";width:8px;height:8px;border-radius:50%;background:#5fd39a}
.m2-rail .foot{margin-top:auto;border-top:1px solid rgba(201,168,106,.25);padding:16px 12px 0;font-size:13px;color:var(--ink-inv-soft)}
.m2-rail .foot button{padding:8px 0;color:var(--ink-inv);text-decoration:underline}
.m2-main{flex:1;min-width:0}
@media (max-width:900px){.m2{display:block}.m2-rail{width:auto;height:auto;position:static;flex-direction:row;flex-wrap:wrap;padding:12px}.m2-rail .wordmark{padding:6px 10px;width:100%}.m2-rail .foot{display:none}.m2-rail button{padding:9px 12px}}
.m2-hero{position:relative;min-height:340px;color:var(--ink-inv);overflow:hidden;background:#160d14}
.m2-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.m2-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(22,13,20,.93) 0%,rgba(22,13,20,.6) 60%,rgba(22,13,20,.3) 100%)}
.m2-hero .in{position:relative;z-index:1;padding:40px 48px 110px}
.m2-hero .eyebrow{color:var(--sky)} .m2-hero h1{font:600 clamp(34px,4.4vw,58px)/1.04 var(--serif);margin:14px 0 0;max-width:20ch}
.m2-body{padding:0 48px 64px;margin-top:-80px;position:relative;z-index:2}
@media (max-width:700px){.m2-hero .in{padding:28px 20px 100px}.m2-body{padding:0 16px 48px}}
.m2-body .kpi{border:0;border-radius:16px;box-shadow:0 18px 44px rgba(42,18,38,.16);background:rgba(255,255,255,.97)}
.m2-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;margin-top:34px}
@media (max-width:1000px){.m2-grid{grid-template-columns:minmax(0,1fr)}}
.care{display:flex;overflow:hidden;border:0;border-radius:16px;margin-bottom:10px}
.care>img{width:150px;flex:none;object-fit:cover}
.care .b{padding:18px 22px;flex:1;min-width:0}
.care blockquote{margin:12px 0 10px;font:italic 500 25px/1.25 var(--serif)}
@media (max-width:600px){.care{flex-direction:column}.care>img{width:100%;height:150px}}
.wrow{display:flex;gap:10px;flex-wrap:wrap}
.wrow .card{flex:1;min-width:220px;display:flex;align-items:center;gap:12px;padding:14px 16px;border:0}
.note-dark{background:var(--ink);color:var(--ink-inv);border-radius:16px;padding:24px 26px;position:relative}
.note-dark::before{content:"";position:absolute;inset:8px;border:1px solid rgba(201,168,106,.3);border-radius:11px;pointer-events:none}
.note-dark .eyebrow{color:var(--ink-inv-soft)} .note-dark ol{margin:12px 0 0;padding-left:20px;font-size:15px;line-height:1.6;position:relative}
.note-dark li:last-child{font-weight:600;color:var(--sky)}
.top-d{padding:8px 20px;border:0;border-radius:16px}
.top-d .r{display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid var(--line-soft)} .top-d .r:last-child{border-bottom:0}
.top-d img,.top-d .ph{width:46px;height:46px;border-radius:10px;object-fit:cover;background:var(--sunken)}
.top-d .n{flex:1;font:600 20px var(--serif)} .top-d b{font:16px var(--mono)}
.floor-counts{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 14px}

/* ================= voice waiter: the orb ================= */
.vx-orb{position:fixed;right:18px;bottom:calc(92px + env(safe-area-inset-bottom));z-index:40;width:68px;height:68px;border-radius:50%;border:0;padding:0;
  background:radial-gradient(circle at 30% 30%,#6a3560,#4a2340 60%,#2a1226);color:#fff3ea;box-shadow:0 12px 30px rgba(42,18,38,.45);display:grid;place-items:center}
.vx-orb .core{position:relative;z-index:2;display:grid;place-items:center}
.vx-orb .ring{position:absolute;inset:-5px;border-radius:50%;border:2px solid transparent;background:linear-gradient(135deg,#ff9b78,#f2603f) border-box;
  -webkit-mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.vx-orb .r2{inset:-5px;opacity:0}
.vx-orb .bars{display:none;position:absolute;z-index:2;gap:3px;align-items:center;height:26px}
.vx-orb .bars i{width:4px;border-radius:2px;background:#ffd9c4;height:8px;animation:vbar .9s ease-in-out infinite}
.vx-orb .bars i:nth-child(2){animation-delay:.12s}.vx-orb .bars i:nth-child(3){animation-delay:.24s}.vx-orb .bars i:nth-child(4){animation-delay:.36s}.vx-orb .bars i:nth-child(5){animation-delay:.48s}
@keyframes vbar{50%{height:24px}}
.vx-orb.listening .ring{animation:vpulse 1.4s var(--ease) infinite}.vx-orb.listening .r2{animation:vpulse 1.4s var(--ease) .7s infinite}
@keyframes vpulse{0%{transform:scale(1);opacity:.9}100%{transform:scale(1.55);opacity:0}}
.vx-orb.thinking .ring{animation:vspin 1.1s linear infinite;background:conic-gradient(from 0deg,#ff9b78,transparent 60%) border-box}
@keyframes vspin{to{transform:rotate(360deg)}}
.vx-orb.speaking .core{display:none}.vx-orb.speaking .bars{display:flex}
.vx-orb.open{bottom:calc(22px + env(safe-area-inset-bottom));right:50%;transform:translateX(50%);width:76px;height:76px}
.vx-label{position:fixed;right:96px;bottom:calc(112px + env(safe-area-inset-bottom));z-index:40;background:var(--ink);color:var(--ink-inv);font-size:12px;padding:6px 11px;border-radius:999px;box-shadow:var(--sh);pointer-events:none}
.vx-state{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(106px + env(safe-area-inset-bottom));z-index:41;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-inv-soft)}
.vx-panel{position:fixed;left:0;right:0;bottom:0;z-index:39;max-width:560px;margin:0 auto;background:rgba(22,13,20,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  color:var(--ink-inv);border-radius:24px 24px 0 0;padding:14px 18px calc(130px + env(safe-area-inset-bottom));box-shadow:0 -18px 44px rgba(22,13,20,.35);animation:rise2 .22s var(--ease)}
.vx-top{display:flex;align-items:center;gap:10px}
.vx-langs{display:flex;gap:6px;flex:1;overflow-x:auto}
.vx-langs button{border:1px solid rgba(255,243,234,.22);background:none;color:var(--ink-inv-soft);border-radius:999px;padding:7px 12px;font-size:13px;white-space:nowrap}
.vx-langs button[aria-pressed="true"]{background:var(--ink-inv);color:var(--ink);border-color:var(--ink-inv);font-weight:600}
.vx-close{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,243,234,.12);color:var(--ink-inv);font-size:22px}
.vx-log{min-height:92px;max-height:30vh;overflow:auto;display:flex;flex-direction:column;gap:8px;margin-top:14px}
.vx-log p{margin:0;max-width:86%;font-size:16px;line-height:1.45;padding:10px 14px;border-radius:16px}
.vx-log .it{background:rgba(255,243,234,.1);align-self:flex-start;font-family:var(--serif);font-size:20px;line-height:1.3}
.vx-log .me{background:var(--accent);color:var(--on-accent);align-self:flex-end}
.vx-log .interim{opacity:.7}
.vx-type{margin-top:10px} .vx-type input{background:rgba(255,243,234,.95)}
.vx-hint{margin:10px 0 0;font-size:12px;color:var(--ink-inv-soft);text-align:center}
.dish.hl{animation:hl 2.6s var(--ease)}
@keyframes hl{0%,60%{background:var(--wash);box-shadow:0 0 0 2px var(--ridge-far);border-radius:14px}100%{background:transparent;box-shadow:none}}
@media (prefers-reduced-motion:reduce){.vx-orb *{animation:none!important}}
body.sheet-open .vx-panel,body.sheet-open .vx-state,body.sheet-open .vx-label{display:none}
body.sheet-open .vx-orb{z-index:46}
body.voice-on .sheet>.panel{padding-bottom:120px}
body.voice-on .g-bar{display:none}
.crew{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:860px){.crew{grid-template-columns:repeat(2,minmax(0,1fr))}}
.crew-t{padding:16px 18px;border:0;border-radius:14px} .crew-t .mono{font-size:28px;display:block;margin-top:6px} .crew-t .sub{font-size:13px;color:var(--ink-soft)}
.prop{border:1px solid var(--info-bg)}
.kp-q{display:flex;flex-direction:column;gap:8px;padding:14px 24px 0}
.kp-q .q{display:flex;align-items:center;gap:14px;background:#2a1d10;border:1px solid #ffd166;border-radius:10px;padding:10px 14px;font:15px var(--mono);color:#ffd166}
.kp-q .q span{flex:1;color:#f4e9e4;font-family:var(--sans)} .kp-q button{border:1px solid rgba(244,233,228,.3);background:none;color:#f4e9e4;border-radius:9px;padding:8px 12px;font-size:13px}
body.sheet-open .vx-orb{top:calc(16px + env(safe-area-inset-top));bottom:auto;right:16px;transform:none;width:54px;height:54px}
.vx-label{animation:labelout .4s var(--ease) 7s forwards}
@keyframes labelout{to{opacity:0;visibility:hidden}}

/* Voice step 2: the panel's footer, the in-app-browser note, the dish lit from partial words, and the picture menu. */
.vx-foot{display:flex;align-items:center;gap:10px;margin-top:10px}
.vx-foot .vx-hint{flex:1;margin:0;text-align:left}
.vx-pics{border:1px solid rgba(255,243,234,.3);background:none;color:var(--ink-inv);border-radius:999px;padding:8px 14px;font-size:13px;white-space:nowrap}
.vx-note{margin:12px 0 0;font-size:13px;color:var(--ink-inv-soft)} .vx-note a{color:var(--ridge-far);font-weight:600}
.pic.hl{animation:hl 2.6s var(--ease)}
.g-pics{display:flex;align-items:center;gap:10px;width:100%;margin:14px 0 0;padding:12px 16px;border:1px dashed var(--line-strong);border-radius:14px;background:none;color:var(--ink-soft);font-size:14px;text-align:left}
.g-pics .ic{display:grid;place-items:center;color:var(--accent)}
.pics{position:fixed;inset:0;z-index:28;overflow:auto;background:var(--page);padding:calc(16px + env(safe-area-inset-top)) 16px calc(120px + env(safe-area-inset-bottom));animation:fade .2s var(--ease)}
.pics>*{max-width:720px;margin-left:auto;margin-right:auto}
.pics-top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.pics-top h2{font-family:var(--serif);font-weight:600;font-size:38px;line-height:1;margin:4px 0 0}
.pics-close{width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:var(--card);font-size:26px;color:var(--ink)}
.pics-steward{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;margin-top:18px;padding:18px;border:0;border-radius:16px;background:var(--ink);color:var(--ink-inv);font-size:20px;font-weight:600}
.pics-cat{margin-top:26px} .pics-cat .eyebrow{margin-bottom:10px}
.pics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (min-width:640px){.pics-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.pic{position:relative;border-radius:18px;background:var(--card);box-shadow:0 1px 2px rgba(42,18,38,.06),0 8px 24px rgba(42,18,38,.07);overflow:hidden}
.pic.in{box-shadow:0 0 0 3px var(--accent)}
.pic.off{opacity:.45}
.pic-hit{display:block;width:100%;border:0;padding:0;background:none;text-align:left;color:inherit}
.pic img,.pic-mono{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}
.pic-mono{display:grid;place-items:center;background:var(--inverse);color:var(--ink-inv);font-family:var(--serif);font-size:44px;letter-spacing:.04em}
.pic-name{display:flex;flex-direction:column;gap:2px;padding:12px 14px 14px}
.pic-name b{font-family:var(--serif);font-weight:600;font-size:22px;line-height:1.1}
.pic-name small{font-size:13px;color:var(--ink-muted)}
.pic-q{position:absolute;top:10px;right:10px;min-width:40px;height:40px;border-radius:20px;display:grid;place-items:center;background:var(--accent);color:var(--on-accent);font-size:20px;font-weight:600;padding:0 10px}
.pic-gone{position:absolute;top:10px;left:10px;background:var(--ink);color:var(--ink-inv);font-size:12px;padding:5px 9px;border-radius:999px;letter-spacing:.08em;text-transform:uppercase}
.pic-less{position:absolute;top:10px;left:10px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.94);font-size:24px;color:var(--ink);box-shadow:0 2px 8px rgba(42,18,38,.2)}
.pics-bar{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto;z-index:29}
body.pics-open .vx-label{display:none}
body.pics-open.voice-on .pics-bar{bottom:calc(120px + env(safe-area-inset-bottom))}
.said{display:flex;flex-direction:column;gap:4px;min-width:150px} .said input{padding:6px 8px;font-size:13px}
.seg{display:flex;gap:6px} .seg button{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 14px;font-size:14px}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--ink-inv);border-color:var(--ink)}
body.voice-on .dish,body.voice-on .pic{scroll-margin-top:84px}
body.pics-open .vx-orb:not(.open){bottom:calc(104px + env(safe-area-inset-bottom))}
/* The floor plan. The room is a warm floor with a window edge; tables are drawn to shape with their chairs, and colour
   carries the state: white free, plum seated, a gold ring while the kitchen cooks, gold for the bill, amber needs a
   hand, coral late, dashed blue to confirm. Sizes are in container units so the room scales from phone to console. */
.fp{position:relative;container-type:inline-size;aspect-ratio:16/9.6;border-radius:18px;overflow:hidden;
  background:radial-gradient(120% 70% at 50% -10%,rgba(255,155,120,.16),transparent 60%),
    repeating-linear-gradient(90deg,transparent 0 5.8%,rgba(158,114,136,.075) 5.8% 5.95%),#fbf1ea;
  box-shadow:inset 0 0 0 1px var(--line),inset 0 18px 40px -30px rgba(42,18,38,.35)}
.fp::before{content:"";position:absolute;left:3%;right:3%;top:0;height:5px;border-radius:0 0 6px 6px;
  background:repeating-linear-gradient(90deg,var(--sky) 0 7%,transparent 7% 7.6%)}
.fp.tall{aspect-ratio:10/15}
.fp.tall::before{left:0;right:auto;top:3%;bottom:3%;width:5px;height:auto;border-radius:0 6px 6px 0;
  background:repeating-linear-gradient(180deg,var(--sky) 0 7%,transparent 7% 7.6%)}
.fp-zone{position:absolute;left:1.1%;transform:translateY(-50%) rotate(180deg);writing-mode:vertical-rl;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-muted);white-space:nowrap;pointer-events:none}
.fp.tall .fp-zone{left:auto;top:1.6%;transform:translateX(-50%);writing-mode:horizontal-tb}
.fp-t{--w:8.6cqw;--h:8.6cqw;--bg:var(--card);--ink2:var(--ink-muted);--chair:var(--line-strong);
  position:absolute;width:var(--w);height:var(--h);transform:translate(-50%,-50%);border:0;padding:0;border-radius:50%;
  background:var(--bg);color:var(--ink2);box-shadow:0 1px 0 rgba(255,255,255,.6) inset,0 6px 16px rgba(42,18,38,.12),0 0 0 1px var(--line);
  display:grid;place-items:center;transition:transform .2s var(--ease),box-shadow .2s var(--ease);cursor:pointer}
.fp-t:hover{transform:translate(-50%,-50%) scale(1.05)}
.fp-t.square{--w:9.6cqw;--h:9.6cqw;border-radius:22%}
.fp-t.long{--w:17cqw;--h:8.6cqw;border-radius:2.4cqw}
.fp.tall .fp-t{--w:17cqw;--h:17cqw} .fp.tall .fp-t.square{--w:18.5cqw;--h:18.5cqw} .fp.tall .fp-t.long.tall{--w:17cqw;--h:31cqw;border-radius:4cqw}
.fp-top{display:flex;flex-direction:column;align-items:center;gap:1px;line-height:1;pointer-events:none}
.fp-top b{font:600 clamp(12px,1.55cqw,22px)/1 var(--mono)}
.fp-top small{font-size:clamp(8px,.85cqw,11px);letter-spacing:.12em;text-transform:uppercase;opacity:.85}
.fp.tall .fp-top b{font-size:clamp(14px,4.2cqw,22px)} .fp.tall .fp-top small{font-size:clamp(8px,2.2cqw,11px)}
.fp-c{position:absolute;width:2.5cqw;height:1.15cqw;border-radius:.5cqw .5cqw .35cqw .35cqw;border:1.5px solid var(--chair);background:rgba(255,255,255,.7);pointer-events:none}
.fp.tall .fp-c{width:5cqw;height:2.3cqw}
.fp-c.on{background:var(--chair);border-color:var(--chair)}
.fp-t.free{box-shadow:0 1px 0 #fff inset,0 3px 10px rgba(42,18,38,.07),0 0 0 1px var(--line)}
.fp-t.seated,.fp-t.cooking{--bg:linear-gradient(160deg,#5a2c4e,#3a1a33);--ink2:var(--ink-inv);--chair:#5a2c4e}
.fp-t.cooking{box-shadow:0 0 0 .35cqw #fbf1ea,0 0 0 .7cqw #d9a441,0 8px 18px rgba(42,18,38,.25)}
.fp-t.bill{--bg:linear-gradient(160deg,#e3c78f,#c9a86a);--ink2:#3d2a0e;--chair:#b8945a}
.fp-t.waiting{--bg:linear-gradient(160deg,#ffcf7a,#f0a63a);--ink2:#4a2a05;--chair:#d68f22;animation:fpPulse 1.8s var(--ease) infinite;--pulse:rgba(240,166,58,.55)}
.fp-t.late{--bg:linear-gradient(160deg,#e0603f,#b3301f);--ink2:#fff7f1;--chair:#b3301f;animation:fpPulse 1.2s var(--ease) infinite;--pulse:rgba(192,73,43,.6)}
.fp-t.new{--bg:var(--info-bg);--ink2:var(--info-ink);--chair:var(--info);box-shadow:0 0 0 2px var(--info),0 6px 16px rgba(44,106,140,.18)}
@keyframes fpPulse{0%{box-shadow:0 0 0 0 var(--pulse),0 8px 18px rgba(42,18,38,.22)}70%{box-shadow:0 0 0 1.4cqw transparent,0 8px 18px rgba(42,18,38,.22)}100%{box-shadow:0 0 0 0 transparent,0 8px 18px rgba(42,18,38,.22)}}
@media (prefers-reduced-motion:reduce){.fp-t{animation:none!important}}
.fp.arranging .fp-t{cursor:grab;touch-action:none} .fp.arranging .fp-t:active{cursor:grabbing}
.fp-t.sel{outline:2px dashed var(--accent);outline-offset:1.2cqw}
.fp-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:14px;font-size:12px;color:var(--ink-soft)}
.fp-legend span{display:inline-flex;align-items:center;gap:6px}
.fp-sw{width:14px;height:14px;border-radius:50%;display:inline-block;box-shadow:0 0 0 1px var(--line)}
.fp-sw.free{background:#fff} .fp-sw.seated{background:#4a2340} .fp-sw.cooking{background:#4a2340;box-shadow:0 0 0 2px #fff,0 0 0 4px #d9a441}
.fp-sw.bill{background:#c9a86a} .fp-sw.waiting{background:#f0a63a} .fp-sw.late{background:#c0492b} .fp-sw.new{background:var(--info-bg);box-shadow:0 0 0 2px var(--info)}
.fp-card{padding:18px}
.fp-phone{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:12px;box-shadow:var(--sh)}
.fp-avail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:6px 0 18px}
@media (max-width:1000px){.fp-avail{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fp-avail .card{padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.fp-avail .big{font-size:34px;line-height:1.05} .fp-avail .big small{font-size:14px;color:var(--ink-soft)} .fp-avail .muted-n{color:var(--ink-muted)}
.fp-avail .sizes{display:flex;flex-wrap:wrap;gap:6px}
.meter{height:8px;border-radius:999px;background:var(--sunken);overflow:hidden} .meter i{display:block;height:100%;background:linear-gradient(90deg,#4a2340,#c0492b);border-radius:inherit}
.fp-stage{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
.fp-stage.with-panel{grid-template-columns:minmax(0,1fr) 280px}
@media (max-width:1000px){.fp-stage.with-panel{grid-template-columns:minmax(0,1fr)}}
.fp-panel{padding:18px 20px;align-self:start}
.fp-top em{font:500 clamp(9px,.9cqw,12px)/1 var(--mono);font-style:normal;margin-top:3px;opacity:.9;white-space:nowrap}
.fp.tall .fp-top em{font-size:clamp(9px,2.4cqw,11px)}
.fp-panel label{display:block}
.fp-t.free .fp-top em{opacity:.75}

/* Staff sign-in: a candle-lit panel beside role tiles and a keypad sized for a tablet on the pass. */
body.signin{background:var(--page);overflow-x:hidden}
.lg2{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.lg-side{position:relative;overflow:hidden;background:#120a10;color:var(--ink-inv)}
.lg-side img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.6}
.lg-side::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,10,16,.55),rgba(18,10,16,.15) 40%,rgba(18,10,16,.92))}
.lg-side-in{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:40px 48px 52px}
.lg-side .wordmark{font-size:24px}
.lg-time{font-size:15px;letter-spacing:.12em;color:#d9a441}
.lg-side h1{font:600 clamp(48px,5.4vw,80px)/.98 var(--serif);margin:10px 0 18px}
.lg-side h1 em{font-style:italic;font-weight:500;color:var(--ridge-far)}
.lg-side p{max-width:34ch;color:var(--ink-inv-soft);margin:0}
.lg-main{position:relative;align-self:center;justify-self:center;width:min(440px,100%);padding:40px 24px}
.lg-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.lg-roles button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:16px 14px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:var(--ink);transition:all .15s var(--ease)}
.lg-roles .ic{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--sunken);color:var(--inverse);margin-bottom:6px}
.lg-roles b{font-size:16px} .lg-roles small{font-size:12px;color:var(--ink-muted);line-height:1.3}
.lg-roles button[aria-checked="true"]{background:var(--inverse);border-color:var(--inverse);color:var(--ink-inv);box-shadow:0 12px 30px -12px rgba(74,35,64,.6)}
.lg-roles button[aria-checked="true"] .ic{background:rgba(255,243,234,.14);color:var(--ink-inv)} .lg-roles button[aria-checked="true"] small{color:var(--ink-inv-soft)}
.pin-dots{display:flex;gap:14px;justify-content:center;margin:18px 0 22px}
.pin-dots i{width:16px;height:16px;border-radius:50%;border:2px solid var(--line-strong);transition:all .12s}
.pin-dots i.on{background:var(--inverse);border-color:var(--inverse);transform:scale(1.08)}
.pin-dots.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.pin-typed{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.pad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}
.pad button{height:68px;border-radius:18px;border:1px solid var(--line);background:var(--card);font:500 28px var(--sans);font-variant-numeric:lining-nums tabular-nums;color:var(--ink);box-shadow:0 1px 2px rgba(42,18,38,.05)}
.pad button:active{background:var(--sunken);transform:scale(.97)}
.pad button.fn{font:500 15px var(--sans);color:var(--ink-soft);background:transparent;border-color:transparent;box-shadow:none}
@media (max-width:860px){.lg2{grid-template-columns:1fr}.lg-side{min-height:240px}.lg-side-in{padding:24px}.lg-side h1{font-size:44px}.lg-side p{display:none}}
