:root{--buncss-light: ;--buncss-dark:initial;color-scheme:dark;--bg:#14110f;--bg-raised:#1f1a16;--bg-sunken:#0e0c0a;--line:#3a3129;--fg:#f3eadb;--muted:#b3a690;--accent:#d4a24c;--accent-fg:#1a1408;--ok:#7cc47f;--danger:#e8685d;--radius:14px;--space:16px;--font-body:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-display:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--font-mono:ui-monospace,"SF Mono",Menlo,monospace}*,*:before,*:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);font-family:var(--font-body);-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;margin:0;font-size:17px;line-height:1.45}body{padding:env(safe-area-inset-top)env(safe-area-inset-right)env(safe-area-inset-bottom)env(safe-area-inset-left);min-height:100dvh}h1,h2,h3{font-family:var(--font-display);margin:0 0 .5em;font-weight:600;line-height:1.15}h1{font-size:1.8rem}h2{font-size:1.35rem}h3{font-size:1.1rem}p{margin:0 0 .8em}a{color:var(--accent)}img{max-width:100%;height:auto}.muted{color:var(--muted)}.small{font-size:.85rem}.prewrap{white-space:pre-wrap}.mono{font-family:var(--font-mono)}.center{text-align:center}.stack>*+*{margin-top:var(--space)}.row{display:flex;flex-wrap:wrap;align-items: center;gap:8px}.spacer{flex:1}.page{padding:var(--space);max-width:560px;margin:0 auto}.card{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space)}.btn{appearance:none;display:inline-flex;border:1px solid var(--line);background:var(--bg-raised);color:var(--fg);font:inherit;cursor:pointer;text-decoration:none;touch-action:manipulation;border-radius:12px;justify-content:center;align-items: center;gap:8px;min-height:48px;padding:0 20px;font-weight:600}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-block{display:flex;width:100%}.btn-big{min-height:64px;font-size:1.15rem}.btn-small{min-height:36px;padding:0 12px;font-size:.9rem}.input,select.input{border:1px solid var(--line);background:var(--bg-sunken);color:var(--fg);font:inherit;border-radius:12px;width:100%;min-height:48px;padding:10px 14px}.input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field{display:block}.field>span{display:block;color:var(--muted);margin-bottom:4px;font-size:.85rem}.error{color:var(--danger)}.ok{color:var(--ok)}.badge{display:inline-block;border:1px solid var(--line);color:var(--muted);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:600}.badge-ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok)50%,transparent)}.badge-accent{color:var(--accent);border-color:color-mix(in srgb,var(--accent)50%,transparent)}.badge-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger)50%,transparent)}.banner{position:sticky;z-index:20;background:var(--accent);color:var(--accent-fg);text-align:center;padding:6px;font-size:.9rem;font-weight:600;top:0}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}.shake{animation:shake .45s}@keyframes pop{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.pop{animation:pop .3s ease-out}@media (prefers-reduced-motion:reduce){.shake,.pop{animation:none}}@media print{:root{--buncss-light:initial;--buncss-dark: ;color-scheme:light;--bg:#fff;--fg:#000;--muted:#444;--line:#bbb}.no-print{display:none!important}body{min-height:0}}body{background:radial-gradient(ellipse at 50% -10%,color-mix(in srgb,var(--accent)14%,transparent),transparent 60%),var(--bg);background-attachment:fixed}.sr-only{position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px}.hero{text-align:center;padding-top:24px}.hero-mark{margin-bottom:8px;font-size:3rem;line-height:1}.game-header{position:sticky;z-index:10;display:flex;padding:10px var(--space);background:color-mix(in srgb,var(--bg)88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);align-items: center;gap:12px;top:0}.game-title{all:unset;font-family:var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;flex:1;min-width:0;font-weight:600}.timer{display:flex;flex-direction:column;align-items: flex-end;line-height:1.1}.timer-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-right:-.06em;padding-right:8px;font-size:.7rem}.timer-clock{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:700}.timer-overtime .timer-clock,.timer-overtime .timer-label{color:var(--danger)}.timer .timer-clock{border-radius:999px;padding:1px 8px}.timer.stage-warning .timer-clock{background:color-mix(in srgb,var(--accent)25%,transparent);color:var(--accent)}.timer.stage-warning .timer-label{color:var(--accent)}.timer.stage-last .timer-clock{background:var(--danger);color:#fff;animation:timer-pulse 1s ease-in-out infinite}.timer.stage-last .timer-label{color:var(--danger)}.game-header.stage-up{color:#fff;animation:header-flash 1.2s ease-in-out 3;background:#c93a32;border-bottom-color:#c93a32}.game-header.stage-up .timer-label,.game-header.stage-up .timer-clock{color:#fff}@keyframes timer-pulse{50%{transform:scale(1.08);box-shadow:0 0 0 6px color-mix(in srgb,var(--danger)30%,transparent)}}@keyframes header-flash{50%{background:#ff6b5e}}@media (prefers-reduced-motion:reduce){.timer.stage-last .timer-clock,.game-header.stage-up{animation:none}}.timer-big{align-items: center}.timer-big .timer-label{padding-right:0}.timer-big .timer-clock{font-size:3rem}.scan-button{min-height:76px;font-size:1.25rem}.player-list{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}.player-list li{background:var(--bg-raised);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.9rem}.player-list li.me{border-color:var(--accent);color:var(--accent)}.journal-head{all:unset;display:flex;cursor:pointer;flex-wrap:wrap;align-items: center;gap:8px;width:100%}.reveal{margin-top:12px}.reveal img{display:block;border:1px solid var(--line);border-radius:10px;margin-top:8px}.station{text-align:center}.station .prewrap{text-align:left}.station .station-prompt{text-align:center}.station-icon{font-size:2.6rem;line-height:1}.station-locked{border-color:color-mix(in srgb,var(--danger)40%,var(--line))}.station-unlocked{border-color:color-mix(in srgb,var(--ok)45%,var(--line))}.lock{display:flex;flex-direction:column;gap:16px}.slots{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.slot{border:2px solid var(--line);background:var(--bg-sunken);display:grid;font-family:var(--font-mono);border-radius:10px;place-items: center;width:46px;height:56px;font-size:1.6rem;font-weight:700}.slot.filled{border-color:var(--accent)}.slot-colour{border-radius:50%;width:48px;height:48px}.slot-colour.filled{border-color:var(--fg)}.keypad{display:grid;gap:8px}.keypad-digits{grid-template-columns:repeat(3,1fr);width:100%;max-width:320px;margin:0 auto}.keypad-letters{grid-template-columns:repeat(7,1fr)}.keypad-directions{grid-template-columns:repeat(3,72px);grid-template-rows:repeat(3,72px);justify-content:center}.keypad-colours{grid-template-columns:repeat(2,1fr)}.key{appearance:none;border:1px solid var(--line);color:var(--fg);font:inherit;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;background:linear-gradient(#2a231d,#1c1713);border-radius:12px;min-height:56px;font-size:1.4rem;font-weight:700}.key:active:not(:disabled){background:var(--accent);color:var(--accent-fg)}.key:disabled{opacity:.4}.keypad-letters .key{min-height:46px;font-size:1.05rem}.key-muted{color:var(--muted)}.key-wide{grid-column:span 2}.key-up{grid-area:1/2}.key-left{grid-area:2/1}.key-center{grid-area:2/2;font-size:1.1rem}.key-right{grid-area:2/3}.key-down{grid-area:3/2}.key-up-left{grid-area:1/1}.key-up-right{grid-area:1/3}.key-down-left{grid-area:3/1}.key-down-right{grid-area:3/3}.key-phone{display:flex;flex-direction:column;justify-content:center;align-items: center;line-height:1.05}.key-phone small{letter-spacing:.12em;color:var(--muted);font-size:.6rem}.keyboard{display:flex;flex-direction:column;gap:6px}.keyboard-row{display:flex;justify-content:center;gap:4px}.keyboard-row .key{flex:0 34px;min-width:0;min-height:46px;padding:0;font-size:1rem}.keyboard-row .key-back{flex-basis:52px}.key-colour-bare{justify-content:center}.key-colour-bare .swatch{width:36px;height:36px}.key-dir{font-size:2rem}.key-colour{display:flex;text-align:left;align-items: center;gap:10px;padding:0 14px;font-size:1rem}.swatch{border:2px solid #ffffff59;border-radius:50%;flex:none;width:28px;height:28px}.scanner{display:flex;flex-direction:column;gap:12px}.scanner-view{position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:1;background:#000}.scanner-view video{object-fit:cover;display:block;width:100%;height:100%}.scanner-frame{position:absolute;border:3px solid var(--accent);border-radius:18px;inset:18%;box-shadow:0 0 0 9999px #00000059}.finished{position:relative;overflow:hidden;text-align:center}.finished-note{color:var(--muted)}.card.finished-victory{color:#fff;background:radial-gradient(circle at 50% 25%,#ff8a3d 0%,#e5397a 48%,#5b2fc9 100%);border:0;padding-top:32px;padding-bottom:28px}.finished-victory h1{text-shadow:0 2px 10px #00000040;font-size:2rem}.finished-victory .finished-note{color:#fff;opacity:.95}.finished-victory .hero-mark{animation:trophy-pop .8s cubic-bezier(.2,1.6,.4,1)both;font-size:4rem}.finished-stats{display:inline-block;background:#ffffff2e;border-radius:14px;margin-top:14px;padding:10px 16px;line-height:1.6}.fireworks{position:absolute;pointer-events:none;width:100%;height:100%;inset:0}@keyframes trophy-pop{0%{transform:scale(0)}}@media (prefers-reduced-motion:reduce){.finished-victory .hero-mark{animation:none}}.finished-time{font-family:var(--font-mono);font-size:1.4rem;font-weight:700}.toasts{position:fixed;left:0;right:0;bottom:calc(16px + env(safe-area-inset-bottom));display:flex;pointer-events:none;z-index:30;flex-direction:column;align-items: center;gap:8px;padding:0 16px}.toast{background:var(--fg);color:var(--bg);border-radius:12px;max-width:480px;padding:10px 16px;font-weight:600;box-shadow:0 6px 24px #00000073}.code-input{font-family:var(--font-mono);letter-spacing:.15em;text-align:center;text-transform:uppercase;font-size:1.4rem}.lock-row{display:flex;text-align:left;color:inherit;font:inherit;cursor:pointer;align-items: center;gap:12px;width:100%}.lock-row-icon{font-size:1.5rem}.lock-row-text{display:flex;flex-direction:column;flex:1;min-width:0}.lock-row-go{color:var(--muted);font-size:1.6rem}.paused-cover{position:fixed;z-index:50;display:flex;text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items: center;gap:8px;padding:24px;inset:0}.paused-mark{color:var(--accent);font-size:4rem;line-height:1}
