:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--navy:#1b2f5b;--sand:#e0a56e;--chalk:#f2f4f8;--yellow:#f4d35e;--yellow-deep:#e9bf3a;--board:#14231b;--board-2:#1e3a2b;--board-3:#2d533f;--text:#f0fdf4;--muted:#9fbfae;--ok:#4ade80;--warn:#f4d35e;--bad:#f87171}*{box-sizing:border-box}body{background:var(--board);color:var(--text);overscroll-behavior:none;margin:0;font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.welcome{flex-direction:column;gap:1.1rem;width:min(34rem,100%);margin:auto;padding:2rem 1.25rem 2.5rem;display:flex}.brand{align-self:center;width:min(15rem,62%);height:auto}.welcome h1{text-align:center;margin:.4rem 0 0;font-size:1.5rem}.lead{color:var(--yellow);text-align:center;margin:0}.steps{gap:.6rem;margin:0;padding-left:1.2rem;display:grid}.steps li::marker{color:var(--sand);font-weight:700}.steps strong{color:var(--chalk)}.muted{color:var(--muted);margin:0;font-size:.9rem}.code-form{gap:.5rem;margin-top:.4rem;display:grid}.code-form label{color:var(--muted);font-size:.85rem}.code-form .row{gap:.5rem;display:flex}.code-form input{border:1px solid var(--board-3);background:var(--board-2);min-width:0;color:var(--text);font:inherit;border-radius:.6rem;flex:1;padding:.7rem .8rem;font-size:.85rem}.code-form input:focus-visible{outline:2px solid var(--yellow);outline-offset:1px}.error{min-height:1.2rem;color:var(--bad);margin:0;font-size:.85rem}.button{background:var(--yellow);color:#20180a;cursor:pointer;border:0;border-radius:.6rem;justify-content:center;align-items:center;padding:.7rem 1.1rem;font-size:.95rem;font-weight:700;text-decoration:none;display:inline-flex}.button:hover{background:var(--yellow-deep)}:root{--glass:#02061773;--glass-line:#fff3;--chip:#ffffff1a;--chip-hover:#fff3;--indigo:#4f46e5;--indigo-ring:#a5b4fc}#app{position:relative}.glass{background:var(--glass);color:#fff;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);border:1px solid var(--glass-line);border-radius:1.5rem;box-shadow:0 0 0 1px #ffffff1a,0 8px 32px #00000080}.stage{background:#000;place-items:center;display:grid;position:absolute;inset:0;overflow:hidden}.frame{aspect-ratio:16/9;width:100%;position:relative}.frame video{object-fit:fill;width:100%;height:100%;display:block;position:absolute;inset:0}.frame canvas{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.bar{z-index:2;top:max(.6rem, env(safe-area-inset-top));align-items:center;gap:.6rem;padding:.4rem .5rem .4rem .8rem;display:flex;position:absolute;left:.6rem;right:.6rem}.bar .mark{flex:none;width:1.5rem;height:1.5rem}.room{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-weight:600}.spacer{flex:1}.stage-label{color:var(--muted);font-size:.75rem}.stage-label[data-stage=scanning]{color:var(--ok)}.stage-label[data-stage=error]{color:var(--bad)}.stage-label[hidden]{display:none}.link{color:var(--muted);align-items:center;gap:.4rem;font-size:.8rem;display:inline-flex}.link:before{content:"";background:var(--warn);border-radius:50%;width:.6rem;height:.6rem}.link[data-connection=online]:before{background:var(--ok);box-shadow:0 0 8px var(--ok)}.link[data-connection=offline]{color:var(--bad)}.link[data-connection=offline]:before{background:var(--bad)}.close-btn{font:inherit;border:1px solid var(--glass-line);background:var(--chip);color:#fecaca;cursor:pointer;border-radius:999px;height:2.25rem;padding:0 .9rem;font-size:.75rem;font-weight:600;transition:background .15s,transform .1s}.close-btn:hover{background:var(--chip-hover)}.close-btn:active{transform:scale(.95)}.close-btn[hidden]{display:none}.dock{z-index:2;left:.6rem;right:.6rem;bottom:max(.6rem, env(safe-area-inset-bottom));flex-direction:column;gap:.6rem;max-height:46dvh;padding:.8rem;display:flex;position:absolute}.progress{align-items:baseline;gap:1.2rem;display:flex}.count{align-items:baseline;gap:.4rem;display:flex}.count strong{font-variant-numeric:tabular-nums;font-size:1.8rem;line-height:1}.count span{color:var(--muted);font-size:.8rem}.count:first-child strong{color:var(--ok)}.outside-count strong{color:var(--bad)}.count[hidden]{display:none}.debug-stats{color:var(--muted);gap:1rem;font-size:.75rem;display:flex}.debug-stats[hidden]{display:none}.cards{flex-wrap:wrap;flex:auto;align-content:flex-start;gap:.35rem;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.cards:empty{display:none}.chip{font-variant-numeric:tabular-nums;border:1px solid var(--glass-line);background:var(--chip);color:#fff;border-radius:999px;place-items:center;min-width:2.25rem;height:2.25rem;padding:0 .5rem;font-size:.85rem;font-weight:600;display:grid}.chip.read{color:#d8ffe6;background:#4ade8033;border-color:#4ade8099}.chip.outside{color:#ffe1e1;background:#f8717133;border-color:#f8717199}.notice{color:var(--warn);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.8rem;overflow:hidden}.notice:empty{display:none}.control-btn{font:inherit;background:var(--indigo);color:#fff;cursor:pointer;height:3rem;box-shadow:0 0 0 2px var(--indigo-ring), 0 4px 12px #0006;border:0;border-radius:999px;flex:none;font-weight:700;transition:transform .1s}.control-btn:active{transform:scale(.97)}.control-btn[hidden]{display:none}.report{color:#a7f3c8;white-space:pre-wrap;background:#0a140e;margin:0;padding:.8rem;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
