:root{--ink: #101810;--ink-deep: #0a0f0a;--panel: #18231b;--panel-high: #1f2d22;--line: #2f3f33;--line-strong: #526048;--paper: #f1ecdf;--muted: #a8b3a4;--gold: #d4b779;--ok: #2f7d3a;--ok-bright: #5bd069;--warn: #9a6b12;--warn-bright: #f2c14e;--bad: #8a2d22;--bad-bright: #ff6b55;--room-a: #d4b779;--room-b: #74b9e0;--room-c: #c28ae0;--room-d: #7fd1b9;--room: var(--room-a);--radius: 12px;--tap: 56px;--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--ink-deep);color:var(--paper);font-family:var(--sans);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button,input,select{font:inherit;color:inherit}.app{display:flex;flex-direction:column;min-height:100%;min-height:100dvh}.topbar{display:flex;align-items:center;gap:12px;padding:max(10px,env(safe-area-inset-top)) 16px 10px;background:var(--ink);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.topbar h1{margin:0;font-size:15px;font-weight:650;letter-spacing:.01em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .sub{display:block;font-size:12px;font-weight:450;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.main{flex:1;min-height:0;display:flex;flex-direction:column}.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 16px 24px}.nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--ink);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);position:sticky;bottom:0;z-index:20}.nav button{appearance:none;background:none;border:0;border-top:3px solid transparent;color:var(--muted);min-height:var(--tap);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600;letter-spacing:.02em;cursor:pointer}.nav button svg{width:22px;height:22px}.nav button[aria-current=page]{color:var(--gold);border-top-color:var(--gold)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.row{display:flex;align-items:center;gap:12px;width:100%;min-height:var(--tap);padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-align:left;cursor:pointer;appearance:none}.row:active{background:var(--panel-high)}.row+.row{margin-top:8px}.row .grow{flex:1;min-width:0}.row .title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .meta{font-size:13px;color:var(--muted)}.btn{appearance:none;min-height:var(--tap);width:100%;padding:0 18px;border-radius:var(--radius);border:1px solid var(--gold);background:var(--gold);color:#241c08;font-weight:700;font-size:16px;cursor:pointer}.btn:active{filter:brightness(1.12)}.btn[disabled]{opacity:.5;cursor:default}.btn.ghost{background:transparent;color:var(--paper);border-color:var(--line-strong)}.btn.danger{background:transparent;color:var(--bad-bright);border-color:var(--bad)}.btn.small{min-height:44px;font-size:14px;width:auto}.field{display:block;margin-bottom:14px}.field span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.field input,.field select{width:100%;min-height:var(--tap);padding:0 14px;background:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--paper)}.field input:focus-visible,.field select:focus-visible,.row:focus-visible,.btn:focus-visible,.nav button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.pill{display:inline-flex;align-items:center;gap:5px;flex-shrink:0;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.02em;border:1px solid currentColor}.pill.ok{color:var(--ok-bright)}.pill.part{color:var(--warn-bright)}.pill.none{color:var(--muted)}.pill.bad{color:var(--bad-bright)}.note{color:var(--muted);font-size:14px}.error{color:var(--bad-bright);font-size:14px}.mono{font-family:var(--mono);font-size:13px;letter-spacing:.04em;word-break:break-all}h2{font-size:20px;margin:0 0 12px}h3{font-size:14px;color:var(--muted);font-weight:650;letter-spacing:.04em;text-transform:uppercase;margin:22px 0 10px}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 10px;text-align:center}.tile b{display:block;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.tile span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.scanner{position:relative;flex:1;background:#000;overflow:hidden}.scanner video{width:100%;height:100%;object-fit:cover;display:block}.scanner .hint{position:absolute;left:0;right:0;bottom:16px;text-align:center;font-size:14px;color:#fff;text-shadow:0 1px 6px #000;padding:0 24px}.scanner .tools{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:8px}.scanner .tools button{appearance:none;width:48px;height:48px;border-radius:50%;border:1px solid #fff5;background:#0009;color:#fff;display:grid;place-items:center;cursor:pointer}.outcome{position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;animation:pop .14s ease-out}@keyframes pop{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.outcome{animation:none}}.outcome.ok{background:#14401c}.outcome.already,.outcome.offline{background:#4a3408}.outcome.void,.outcome.unknown,.outcome.wrong_event,.outcome.unpaid,.outcome.error{background:#4a1510}.outcome .glyph{font-size:64px;line-height:1}.outcome h2{font-size:34px;font-weight:800;margin:0;letter-spacing:-.01em}.outcome p{margin:0;font-size:17px;max-width:30ch}.outcome .when{font-size:15px;color:#fffc}.outcome .tap{margin-top:18px;font-size:14px;color:#fff9}.search{position:sticky;top:0;z-index:5;padding:12px 16px;background:var(--ink-deep);border-bottom:1px solid var(--line)}.search input{width:100%;min-height:48px;padding:0 14px;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--paper)}.seat{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.seat+.seat{margin-top:6px}.seat .n{width:28px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.seat.in{border-color:#2f7d3a66;background:#16281a}.seat.out{opacity:.85}.seat.voided{opacity:.5;text-decoration:line-through}.empty{text-align:center;color:var(--muted);padding:48px 24px}.banner{background:#4a3408;border:1px solid var(--warn);border-radius:var(--radius);padding:12px 14px;margin-bottom:14px;font-size:14px}.centered{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;gap:14px}.auth{width:100%;max-width:360px;text-align:left}.auth .brand{text-align:center;margin-bottom:26px}.auth .brand b{display:block;font-size:30px;letter-spacing:.06em;color:var(--gold)}.auth .brand span{font-size:13px;color:var(--muted)}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;margin:12px 16px 0;padding:4px;background:var(--panel);border:1px solid var(--line);border-radius:999px}.segmented button{appearance:none;border:0;background:none;color:var(--muted);font:inherit;font-weight:600;padding:9px 12px;border-radius:999px;cursor:pointer}.segmented button[aria-selected=true]{background:var(--panel-high);color:var(--paper)}.placing{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;background:var(--panel-high);border:1px solid var(--gold);border-radius:var(--radius)}.placing .meta{color:var(--muted);font-size:13px}.tables{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;margin-bottom:22px}.table{appearance:none;text-align:left;display:flex;flex-direction:column;gap:2px;min-height:var(--tap);padding:10px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);color:var(--paper);font:inherit;cursor:pointer}.table .n{font-size:20px;font-weight:800;line-height:1.1}.table .who{font-size:13px;overflow-wrap:anywhere}.table .seats{font-size:12px;color:var(--muted)}.table.free{color:var(--muted)}.table.free .who{font-style:italic}.table.taken{border-color:var(--line-strong);background:var(--panel-high)}.table.mine{border-color:var(--gold);background:var(--panel-high);color:var(--gold)}.table:disabled{cursor:default;opacity:.65}.row.picked{border-color:var(--gold)}.seated{margin:0 0 10px;color:var(--gold);font-weight:600}.outcome .table-call{font-size:30px;font-weight:800;letter-spacing:-.01em;margin:2px 0 4px}.rooms{display:flex;gap:8px;margin-bottom:14px;overflow-x:auto;scrollbar-width:none}.rooms::-webkit-scrollbar{display:none}.rooms button{appearance:none;display:inline-flex;align-items:center;gap:7px;flex-shrink:0;padding:9px 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted);font:inherit;font-weight:600;cursor:pointer}.rooms button[aria-selected=true]{border-color:var(--room);color:var(--room);background:var(--panel-high)}.dot{width:9px;height:9px;flex-shrink:0;border-radius:50%;background:var(--room);display:inline-block}.title .dot{margin-right:7px;vertical-align:1px}.room-head{border-left:3px solid var(--room)}.table.taken{border-color:var(--room);background:var(--panel-high)}.table.taken .n{color:var(--room)}.table.mine{border-color:var(--room);background:color-mix(in oklab,var(--room) 16%,var(--panel-high));color:var(--room)}
