:root{--bg: #10151c;--panel: #1a222c;--panel-2: #243040;--text: #f4f7fa;--muted: #a5b1be;--line: #33414f;--accent: #2f7fe0;--ok: #0b8a3e;--bad: #c4121f;--warn: #f5b301;--touch: 56px;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:17px/1.35 -apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif;overscroll-behavior:none;-webkit-text-size-adjust:100%}button,input{font:inherit;color:inherit}button{min-height:var(--touch);padding:0 18px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);touch-action:manipulation;cursor:pointer}button:disabled{opacity:.55;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);font-weight:700}button.quiet{background:transparent;min-height:44px}button.small{min-height:48px}input{font-size:18px;min-height:var(--touch);padding:0 14px;border:1px solid var(--line);border-radius:10px;background:#0c1116;width:100%}input[type=checkbox]{width:24px;min-height:24px;height:24px}.muted{color:var(--muted)}.note{color:var(--warn);margin:8px 0}.error{background:var(--bad);color:#fff;font-weight:700;padding:12px 16px}.card .error{border-radius:10px;margin-bottom:12px}.screen{height:100dvh;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overflow:hidden}.center{align-items:center;justify-content:center;overflow-y:auto}.card{width:min(420px,calc(100vw - 32px));padding:16px}.card h1{margin:0 0 12px;text-align:center;font-size:26px}.field{display:block;color:var(--muted);margin-bottom:12px}.field input{color:var(--text);margin-top:4px}.pin-dots{display:flex;justify-content:center;gap:14px;margin:12px 0}.dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--muted)}.dot.on{background:var(--text);border-color:var(--text)}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.keypad button{min-height:64px;font-size:28px;font-weight:600}.keypad button.quiet{font-size:18px;min-height:64px}.login .primary{width:100%;font-size:20px}.topbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--line)}.title{display:flex;flex-direction:column;flex:1 1 200px;min-width:0}.title strong{font-size:19px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.title .muted{font-size:14px}.sync{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;font-size:15px;background:#0e3b20}.sync.off{background:var(--bad)}.sync.stale.on{background:#6b4e00}.light{width:12px;height:12px;border-radius:50%;background:#3ee07a}.sync.off .light{background:#fff}.offline-note{color:var(--warn);font-size:14px}.stat{font-size:15px;color:var(--muted);white-space:nowrap}.stat b{color:var(--text);font-size:20px}.stat.warn b{color:var(--warn)}.events{padding:14px;overflow-y:auto;display:grid;gap:10px;align-content:start;flex:1}.event{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;text-align:left;font-size:19px;min-height:76px}.counts{display:flex;flex-wrap:wrap;gap:8px;padding:8px 14px;align-items:stretch}.tile{background:var(--panel);border-radius:10px;padding:4px 16px;min-width:110px;text-align:center}.tile span{display:block;font-size:12px;letter-spacing:.08em;color:var(--muted)}.tile b{font-size:34px;line-height:1.1;font-variant-numeric:tabular-nums}.by-type{flex:1 1 220px;display:flex;flex-direction:column;justify-content:center;font-size:14px;color:var(--muted);min-width:0}.by-type div{display:flex;justify-content:space-between;gap:12px}.tabs{display:flex;gap:8px;padding:0 14px 8px}.tabs button{flex:1;min-height:48px;font-weight:600}.tabs button.active{background:var(--text);color:var(--bg);border-color:var(--text)}.scan{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;padding:0 14px 14px}.camera{position:relative;flex:1;min-height:160px;background:#05080b;border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center}.reader{flex:none}.reader video{width:100%!important;height:100%!important;object-fit:contain;display:block}.camera-off{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;text-align:center}.camera-off .primary{min-width:260px;min-height:72px;font-size:22px}.camera-msg{max-width:620px;margin:0;font-size:17px}.camera-stop{position:absolute;right:10px;bottom:10px;background:#0000008c}.manual label{display:block;font-size:14px;color:var(--muted);margin-bottom:4px}.manual-row{display:flex;gap:8px}.manual-row input{flex:1;min-width:0}.list{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 14px 14px}.list-tools{display:flex;gap:14px;align-items:center;margin-bottom:8px}.list-tools input[type=search]{flex:1;min-width:0}.toggle{display:flex;align-items:center;gap:8px;white-space:nowrap;min-height:44px}.orders{overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch}.order{background:var(--panel);border-radius:10px;margin-bottom:8px;padding:10px 12px;content-visibility:auto;contain-intrinsic-size:auto 120px}.order header{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;margin-bottom:6px}.order header strong{font-size:18px}.in{margin-left:auto;color:var(--muted)}.in.done{color:#5fe394;font-weight:700}.row{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--line)}.who{flex:1;min-width:0}.state{font-size:14px;color:var(--muted);white-space:nowrap}.row button{min-width:120px}.row.void .who{text-decoration:line-through;color:var(--muted)}.result{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vmin;padding:4vmin;text-align:center;color:#fff;pointer-events:none}.result.good{background:var(--ok)}.result.bad{background:var(--bad)}.glyph{font-size:26vmin;line-height:1;font-weight:900}.headline{font-size:clamp(38px,9vmin,92px);line-height:1.05;font-weight:900}.ticket-type{font-size:clamp(30px,7vmin,72px);font-weight:800}.ticket-name{font-size:clamp(24px,5vmin,52px);font-weight:600}.late{margin-top:1vmin;padding:1vmin 4vmin;border-radius:12px;background:var(--warn);color:#201600;font-size:clamp(22px,4.5vmin,44px);font-weight:800}.group-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;flex-direction:column;gap:16px;padding:max(16px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));background:var(--bg);overflow-y:auto}.group-screen .error{border-radius:10px}.group-info{flex:1 0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;text-align:center}.group-label{font-size:28px;color:var(--muted);font-weight:600}.group-party{font-size:clamp(44px,9vmin,72px);line-height:1.05;font-weight:900}.group-breakdown{font-size:clamp(32px,6.5vmin,52px);line-height:1.1;font-weight:800;color:var(--warn)}.group-remaining{font-size:clamp(24px,4.5vmin,36px);font-weight:600;font-variant-numeric:tabular-nums}.late-group{box-shadow:inset 0 0 0 10px var(--warn)}.late-group .group-party{color:var(--warn)}.late-group .group-breakdown{color:var(--text)}.late-group .group-remaining{background:var(--warn);color:#201600;border-radius:12px;padding:6px 20px;font-weight:800}.group-controls{display:flex;flex-direction:column;gap:14px}.group-all{min-height:clamp(120px,22vh,180px);width:100%;border:0;background:var(--ok);color:#fff;font-size:clamp(44px,8vmin,68px);font-weight:900}.group-row{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch}.stepper{display:flex;align-items:stretch;gap:8px}.stepper button{width:104px;min-height:104px;font-size:56px;font-weight:800;line-height:1;padding:0}.stepper output{min-width:92px;display:flex;align-items:center;justify-content:center;font-size:56px;font-weight:900;font-variant-numeric:tabular-nums}.group-some{flex:1 1 180px;min-height:104px;font-size:34px}.group-cancel{flex:0 1 160px;min-height:104px;font-size:26px;background:transparent}.row.lookup{border-top:0;padding-top:0}@media(orientation:landscape)and (min-width:900px){.scan{display:grid;grid-template-rows:1fr auto}}
