:root{--bg: #0a0d12;--panel: #141821;--panel-2: #1c2230;--panel-hi: #232a3a;--text: #e8ecf3;--muted: #8b95a7;--muted-2: #6b7587;--border: #2a3142;--border-soft: #1f2533;--accent: #6aa6ff;--accent-soft: rgba(106, 166, 255, .15);--good: #4ade80;--bad: #f87171;--warn: #fbbf24}*{box-sizing:border-box}html,body{margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 50% -200px,rgba(106,166,255,.08),transparent 60%),var(--bg);color:var(--text);line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}em{font-style:normal;color:var(--accent);font-weight:500}code{font-family:SF Mono,Menlo,Consolas,monospace;font-size:.9em;background:var(--panel-2);padding:1px 6px;border-radius:4px;border:1px solid var(--border-soft)}.page-header{text-align:center;padding:56px 24px 8px;max-width:760px;margin:0 auto}.page-header h1{font-size:34px;margin:0 0 14px;letter-spacing:-.02em;background:linear-gradient(180deg,#fff,#b8c4d8);-webkit-background-clip:text;background-clip:text;color:transparent}.lede{color:var(--muted);font-size:16px;margin:0 auto;max-width:560px}.lede strong{color:var(--text);font-weight:600}.badges{display:flex;justify-content:center;align-items:center;gap:8px;margin:18px 0 0;flex-wrap:wrap}.badges img{display:block;height:20px}.controls{display:flex;align-items:center;gap:16px;max-width:1240px;margin:36px auto 16px;padding:12px 16px;background:var(--panel);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;box-shadow:0 1px #ffffff08 inset}.btn-wifi{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:10px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;font-weight:600;font-size:14px;transition:all .15s ease}.btn-wifi:hover{background:var(--panel-hi)}.btn-wifi .dot{width:10px;height:10px;border-radius:50%;background:var(--good);box-shadow:0 0 10px var(--good);transition:all .15s ease}.btn-wifi[data-state=offline]{background:#f871711a;border-color:#f8717159;color:var(--bad)}.btn-wifi[data-state=offline] .dot{background:var(--bad);box-shadow:0 0 10px var(--bad);animation:blink 1.2s ease-in-out infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.4}}.btn-secondary{background:transparent;color:var(--muted);border:1px solid var(--border);padding:9px 14px;border-radius:8px;cursor:pointer;font-size:13px;margin-left:auto;transition:all .15s ease}.btn-secondary:hover{background:var(--panel-2);color:var(--text)}.toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle input{position:absolute;opacity:0;pointer-events:none}.toggle-track{width:42px;height:24px;background:var(--panel-2);border-radius:12px;position:relative;transition:background .15s ease;border:1px solid var(--border)}.toggle-thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--muted);border-radius:50%;transition:all .18s cubic-bezier(.2,.8,.4,1)}.toggle input:checked+.toggle-track{background:var(--accent);border-color:var(--accent)}.toggle input:checked+.toggle-track .toggle-thumb{left:22px;background:#fff}.toggle-label{font-weight:500}.walkthrough{max-width:1240px;margin:0 auto 24px;padding:14px 22px;background:#6aa6ff0d;border:1px solid rgba(106,166,255,.2);border-radius:12px;font-size:14px}.walkthrough ol{margin:8px 0 0;padding-left:22px;color:var(--muted)}.walkthrough ol li{margin-bottom:2px}.walkthrough strong{color:var(--text)}.main-grid{display:grid;grid-template-columns:1.05fr .95fr 1fr;gap:16px;max-width:1240px;margin:0 auto;padding:0 24px 24px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px 18px 16px;display:flex;flex-direction:column;min-height:540px;box-shadow:0 1px #ffffff08 inset,0 8px 24px #00000040}.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.panel-header h2{margin:0;font-size:16px;letter-spacing:.01em;font-weight:600}.panel-hint{margin:0 0 12px;font-size:12px;color:var(--muted-2)}.stat{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;padding:3px 10px;border-radius:12px;background:var(--panel-2);border:1px solid var(--border)}.stat.mode-on{color:var(--accent);border-color:#6aa6ff66;background:var(--accent-soft)}.stat.mode-off{color:var(--warn);border-color:#fbbf2466;background:#fbbf241a}.queue-pill{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 10px;border-radius:12px;background:var(--panel-2);border:1px solid var(--border);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600;transition:all .15s ease}.queue-pill.queue-active{background:#fbbf2426;border-color:#fbbf2473;color:var(--warn);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #fbbf244d}50%{box-shadow:0 0 0 6px #fbbf2400}}.guests{display:flex;flex-direction:column;gap:6px;overflow-y:auto;flex:1;padding-right:4px}.guest{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;transition:background .12s ease}.guest:hover{background:var(--panel-hi)}.guest-main{flex:1;min-width:0}.guest-name{font-weight:500;font-size:14px}.guest-status{font-size:11px;color:var(--muted-2);margin-top:2px;font-variant-numeric:tabular-nums}.guest-status.good{color:var(--good)}.guest-status.bad{color:var(--bad);font-weight:500}.btn-admit{background:var(--accent);color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;white-space:nowrap;transition:all .12s ease;box-shadow:0 1px #ffffff26 inset}.btn-admit:hover{filter:brightness(1.1);transform:translateY(-1px)}.btn-admit:active{transform:translateY(0)}.pending-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;overflow-y:auto;flex:1}.pending-list li{padding:9px 12px;background:#fbbf240f;border:1px solid rgba(251,191,36,.25);border-radius:8px;display:flex;flex-direction:column;gap:2px;animation:slide-in .22s ease-out}@keyframes slide-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.pending-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.pending-name{font-weight:500;font-size:14px;color:var(--text)}.pending-time{font-size:11px;color:var(--muted-2);font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,Consolas,monospace}.pending-key{font-family:SF Mono,Menlo,Consolas,monospace;font-size:10px;color:var(--warn);letter-spacing:.04em;opacity:.85}.empty-state{margin:0;padding:24px 12px;text-align:center;font-size:13px;color:var(--muted);border:1px dashed var(--border);border-radius:10px;background:#ffffff03}.empty-state span{display:block;margin-top:6px;font-size:11px;color:var(--muted-2);max-width:220px;margin-left:auto;margin-right:auto;line-height:1.4}.dup-banner{background:#f871711a;border:1px solid rgba(248,113,113,.4);color:var(--bad);padding:9px 12px;border-radius:8px;font-size:13px;margin-bottom:10px;animation:shake .36s ease-out}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.ledger{list-style:none;padding:0;margin:0;overflow-y:auto;flex:1;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px}.ledger li{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:7px 10px;margin-bottom:4px;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;align-items:center;animation:slide-in .22s ease-out}.ledger .seq{color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums}.ledger .who{color:var(--text);font-family:inherit}.ledger .when{color:var(--muted-2);font-variant-numeric:tabular-nums;font-size:11px}.explainer{max-width:1240px;margin:8px auto 72px;padding:24px 28px;background:var(--panel);border:1px solid var(--border);border-radius:14px}.explainer h3{margin:0 0 16px;font-size:18px}.explainer-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:16px}.explainer-col{padding:16px 18px;border-radius:10px;border:1px solid var(--border)}.explainer-bad{background:#f871710d;border-color:#f8717140}.explainer-good{background:#4ade800d;border-color:#4ade8040}.explainer h4{margin:0 0 10px;font-size:14px}.explainer-bad h4 em{color:var(--bad)}.explainer-good h4 em{color:var(--good)}.explainer ul{margin:0;padding-left:18px;color:var(--muted);font-size:13px}.explainer ul li{margin-bottom:6px}.explainer strong{color:var(--text)}.footer-note{color:var(--muted);font-size:13px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border-soft)}.guests::-webkit-scrollbar,.pending-list::-webkit-scrollbar,.ledger::-webkit-scrollbar{width:8px}.guests::-webkit-scrollbar-thumb,.pending-list::-webkit-scrollbar-thumb,.ledger::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.guests::-webkit-scrollbar-track,.pending-list::-webkit-scrollbar-track,.ledger::-webkit-scrollbar-track{background:transparent}@media (max-width: 1080px){.main-grid{grid-template-columns:1fr 1fr}.pending-panel{grid-column:1 / -1;min-height:320px}.panel{min-height:460px}}@media (max-width: 720px){.main-grid,.explainer-grid{grid-template-columns:1fr}.pending-panel{grid-column:auto}.panel{min-height:auto}.page-header{padding-top:32px}.page-header h1{font-size:28px}}
