@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600;650;700&family=Space+Mono:wght@400;700&display=swap');
:root{font-family:'DM Sans',Arial,sans-serif;color:#f2f1e7;background:#181813;font-synthesis:none;--acid:#cedd98;--muted:#b9b9a9;--mono:'Space Mono',monospace}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--acid);outline-offset:5px}button{border:0}button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}#app,#world{position:fixed;inset:0}#world canvas{width:100%;height:100%;display:block;touch-action:none}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(13,15,11,.54) 0%,transparent 23%,transparent 70%,rgba(13,15,11,.85) 100%),linear-gradient(90deg,rgba(13,15,11,.16),transparent 40%)}.masthead{position:absolute;top:0;left:0;right:0;padding:29px 38px;display:flex;align-items:center;gap:25px;pointer-events:none}.masthead>*{pointer-events:auto}.wordmark{display:flex;align-items:center;gap:13px;text-decoration:none;color:inherit;font-size:13px;font-weight:700;letter-spacing:1.5px}.brand-mark{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;font-size:34px;letter-spacing:-3px;line-height:1;background:var(--acid);color:#272c20;padding:0 5px 5px 0}.wordmark small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:1.1px;color:var(--muted);margin-top:5px;font-weight:400}.room-status{margin-left:auto;display:flex;gap:12px;align-items:center;font-family:var(--mono);font-size:10px;letter-spacing:.8px;color:#dbddce}.live-dot{width:5px;height:5px;border-radius:50%;background:var(--acid);box-shadow:0 0 8px #c4d69177}.divider{opacity:.35;margin:0 8px}.round-button{border:1px solid #ffffff25;border-radius:50%;height:34px;width:34px;background:#191c1838;font-size:15px}.round-button:hover{background:#ffffff18}.intro{position:absolute;top:19%;left:38px;pointer-events:none;max-width:300px}.eyebrow{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;color:var(--acid)}h1{font-size:clamp(32px,3.65vw,62px);line-height:1.02;letter-spacing:-2.7px;font-weight:450;margin:18px 0}.intro p{font-size:12px;color:#d1d1c0;line-height:1.7;margin:0;max-width:180px}.bottom-bar{position:absolute;bottom:40px;left:38px;right:38px;display:flex;align-items:center;justify-content:space-between;gap:16px}.location{display:flex;gap:12px;align-items:center;font-family:var(--mono);font-size:10px;letter-spacing:.7px;min-width:210px}.floor-icon{font-size:28px;font-family:Arial;color:var(--acid);margin-top:-7px}.location small{display:block;font-size:8px;color:#999e8f;margin-top:6px;letter-spacing:1.1px}.view-switcher{display:flex;gap:4px;background:#20251dbd;border:1px solid #dce1c522;backdrop-filter:blur(20px);padding:5px;border-radius:30px}.view-switcher button{background:transparent;color:#bfc4b3;padding:11px 20px;border-radius:23px;font-size:12px;white-space:nowrap;transition:background .2s,color .2s}.view-switcher button:hover{color:white}.view-switcher button.active{background:var(--acid);color:#252d1c}.world-controls{display:flex;gap:17px;align-items:center;min-width:210px;justify-content:flex-end}.world-controls button{background:transparent;display:flex;align-items:center;gap:8px;padding:7px 0;font-size:10px;color:#d5d9cb}.world-controls button:hover{color:var(--acid)}.explore-hint{position:absolute;bottom:15px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:8px;letter-spacing:1px;white-space:nowrap;color:#909987;display:flex;align-items:center;gap:10px}.explore-hint>span:first-child{font-size:17px}.help-panel{position:absolute;right:38px;top:90px;width:300px;padding:24px;background:#20251eef;border:1px solid #cad5b030;border-radius:12px;backdrop-filter:blur(20px);z-index:4}.help-panel h2{font-size:20px;font-weight:500;margin:0 0 15px;letter-spacing:-.5px}.help-panel p{font-size:14px;line-height:1.6;color:#c4c9ba}.help-panel .help-small{font-size:12px;color:#9ea895;border-top:1px solid #ffffff16;padding-top:16px}#toast{position:absolute;bottom:116px;left:50%;transform:translate(-50%,12px);opacity:0;pointer-events:none;background:#20271aeb;border:1px solid #d6dfc02a;padding:11px 18px;border-radius:6px;font-size:12px;transition:opacity .3s,transform .3s;max-width:90vw;text-align:center}#toast.visible{opacity:1;transform:translate(-50%,0)}#loading{position:fixed;inset:0;background:#181d16;z-index:10;display:flex;align-items:center;justify-content:center;flex-direction:column;transition:opacity .65s}#loading.loaded{opacity:0;pointer-events:none}.loading-brand{font-size:80px;letter-spacing:-8px;color:var(--acid);font-weight:650}.loading-brand+p{font-family:var(--mono);font-size:11px;color:#c8cebd}.loading-track{width:140px;height:2px;background:#c4d39c22;margin-top:12px}.loading-track span{display:block;height:100%;width:40%;background:var(--acid);animation:load 1.2s ease-in-out infinite alternate}@keyframes load{to{transform:translateX(150%)}}#fallback{position:absolute;inset:0;background:#181d16;z-index:20;padding:20vh 12vw}#fallback p{max-width:480px;line-height:1.7}#fallback button{background:var(--acid);color:#20271a;border-radius:20px;padding:12px 24px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}
@media(min-width:1800px){.masthead{padding:36px 48px}.intro{left:48px}.bottom-bar{left:48px;right:48px}.wordmark{font-size:15px}.wordmark small,.room-status{font-size:11px}.view-switcher button{font-size:14px}.intro p{font-size:14px;max-width:220px}}
@media(max-width:900px){.masthead{padding:23px}.intro{left:23px;top:17%}.intro h1{font-size:42px}.room-status{font-size:8px}.bottom-bar{left:23px;right:23px;bottom:42px}.location{display:none}.world-controls{min-width:0}.view-switcher button{padding:10px 15px}.intro p{font-size:11px;max-width:160px}}
@media(max-width:600px){.masthead{padding:20px;gap:12px}.brand-mark{width:37px;height:37px;font-size:30px}.wordmark{font-size:11px;letter-spacing:1px}.wordmark small{font-size:7px}.room-status{display:none}.round-button{margin-left:auto}.intro{top:110px;left:22px}.intro h1{font-size:36px;letter-spacing:-1.5px;margin:12px 0}.eyebrow{font-size:8px}.intro p{display:none}.bottom-bar{bottom:46px;left:16px;right:16px;gap:10px}.view-switcher{gap:0;padding:4px}.view-switcher button{font-size:11px;padding:10px 12px}.world-controls{gap:12px}.world-controls button span{display:none}.world-controls button svg{width:18px;height:18px}#reset-view{display:none}.explore-hint{bottom:20px;font-size:7px;letter-spacing:.4px;gap:6px}.help-panel{right:18px;top:74px;width:min(300px,calc(100vw - 36px))}#toast{bottom:105px;width:max-content;max-width:88vw}.vignette{background:linear-gradient(180deg,#0d0f0b88,transparent 35%,transparent 72%,#0d0f0be8)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* The room itself becomes the playing field. */
.playing-ping-pong .masthead,.playing-ping-pong .intro,.playing-ping-pong .bottom-bar,.playing-ping-pong #object-actions,.playing-ping-pong #object-tooltip,.playing-ping-pong .explore-hint,.playing-ping-pong .help-panel,.playing-ping-pong #toast{display:none}
.playing-ping-pong .vignette{background:linear-gradient(180deg,#11170e77,transparent 20%,transparent 72%,#11170eaa)}
#ping-pong-hud{position:absolute;inset:0;pointer-events:none;z-index:5}.game-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 30px}.game-topbar button,.game-bottom button{pointer-events:auto;min-height:44px;border:1px solid #e2eac12a;border-radius:8px;padding:11px 18px;font-size:14px}.game-secondary{background:#1d261be8;backdrop-filter:blur(16px);color:#e7eadb}.game-secondary:hover{background:#35422e}.game-score{display:flex;gap:26px;align-items:center;padding:14px 30px;background:#1b241aeb;border:1px solid #dce5bd30;backdrop-filter:blur(20px);border-radius:12px}.game-score>span{display:flex;flex-direction:column;align-items:center;gap:4px;font:12px var(--mono);letter-spacing:1px}.game-score strong{font:500 38px 'DM Sans',sans-serif;line-height:1.1;font-variant-numeric:tabular-nums}.game-score>span:first-child strong{color:var(--acid)}.game-score-divider{color:#89957a;font-size:26px!important}.game-bottom{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);text-align:center;width:min(600px,calc(100% - 32px))}.game-rally{font:12px var(--mono);color:#d5dfbd;letter-spacing:1px;margin:0 0 7px}#ping-pong-status{font-size:19px;font-weight:600;margin:0 0 12px;text-shadow:0 1px 7px #000}.game-primary{background:var(--acid);color:#24321c;min-width:132px;font-weight:650}.game-primary:hover{background:#e3edbf}.game-primary:disabled,.game-secondary:disabled{opacity:.5;cursor:default}.game-instructions{font-size:14px;line-height:1.5;color:#e2e6d8;margin:12px 0 0;text-shadow:0 1px 7px #000}.game-instructions small{display:block;font-size:12px;color:#b6c2a8;margin-top:4px}.game-touch-hint{display:none}
@media(pointer:coarse){.game-mouse-hint{display:none}.game-touch-hint{display:inline}.game-instructions small{display:none}}
@media(max-width:600px){.game-topbar{padding:14px 12px;gap:8px}.game-topbar button{font-size:12px;padding:9px 11px}.game-score{gap:12px;padding:10px 15px}.game-score>span{font-size:10px;letter-spacing:.5px}.game-score strong{font-size:30px}.game-bottom{bottom:max(20px,env(safe-area-inset-bottom))}.game-instructions{font-size:13px}#ping-pong-status{font-size:17px}.game-rally{font-size:11px}}
@media(max-height:520px){.game-topbar{padding:10px 16px}.game-score{padding:7px 20px}.game-score strong{font-size:27px}.game-bottom{bottom:10px}.game-instructions{margin-top:5px;font-size:12px}.game-instructions small{display:none}.game-rally{display:none}#ping-pong-status{font-size:15px;margin-bottom:6px}}

/* Object discovery is drawn on the 3D surfaces; keyboard actions appear on focus. */
#object-tooltip{position:fixed;z-index:4;pointer-events:none;padding:8px 12px;border:1px solid #dceab14d;border-radius:6px;background:#20271aeb;color:#e3eacb;font:11px var(--mono);box-shadow:0 6px 25px #0004}
.object-action{position:fixed;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;background:#263020;color:#e3eacb}
.object-action:focus-visible{width:auto;height:auto;clip-path:none;left:50%;bottom:115px;transform:translateX(-50%);padding:12px 18px;border:1px solid var(--acid);border-radius:8px;z-index:8}
#record-browser{position:absolute;top:105px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;padding:9px 12px;border:1px solid #dce5bd30;border-radius:10px;background:#1b241ae8;color:#e7eadb;z-index:3;max-width:calc(100% - 32px)}
#record-browser[hidden],.playing-ping-pong #record-browser{display:none}
#record-volume-panel{position:absolute;right:22px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 12px;border:1px solid #dce5bd30;border-radius:12px;background:#1b241ae8;color:#e7eadb;z-index:4;font-size:14px}
#record-volume-panel[hidden],.playing-ping-pong #record-volume-panel{display:none}
#record-volume{writing-mode:vertical-lr;direction:rtl;width:28px;height:150px;accent-color:var(--acid);cursor:pointer}
#record-volume-value{font:13px var(--mono)}
@media(max-width:600px){#record-volume-panel{right:10px;padding:12px 8px;font-size:12px}#record-volume{height:110px}}
#record-browser div{text-align:center;min-width:180px}#record-browser strong{display:block;font:500 15px var(--mono)}#record-browser small{display:block;margin-top:5px;font-size:12px;color:#bec9ad;white-space:normal;max-width:320px}
#record-browser button{width:44px;height:44px;flex-shrink:0;border:1px solid #dce5bd30;border-radius:7px;background:#35422e;color:#e7eadb;font-size:21px;cursor:pointer}#record-browser button:hover{background:#4a593d}
@media(max-width:600px){#record-browser{top:84px;gap:5px;padding:7px}#record-browser small{font-size:11px}#record-browser div{min-width:0}#record-browser strong{font-size:14px}}

/* Keep keyboard volume access; pointer users drag the actual deck slider. */
#record-volume-panel:not(:focus-within){clip-path:inset(50%);width:1px;height:1px;overflow:hidden;padding:0;border:0}

#computer-exit-hint{position:absolute;top:68px;z-index:3;max-width:calc(100% - 32px);text-align:center;left:50%;transform:translateX(-50%);padding:10px 16px;border-radius:20px;background:#20251de8;color:#d5d9cb;font:12px var(--mono);pointer-events:none;white-space:normal}

.arcade-controls{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:5;padding:12px 18px;background:#172326ed;border:1px solid #7c947b80;border-radius:14px;text-align:center;color:#e4e8ce;font:14px monospace;white-space:nowrap}
.arcade-controls[hidden]{display:none}.arcade-controls>div{display:flex;gap:8px;margin-top:8px}.arcade-controls button{min-width:44px;min-height:42px;padding:6px 10px;background:#324238;border:1px solid #718066;color:#f0ebc9;border-radius:6px;font:18px monospace;cursor:pointer;touch-action:manipulation}.arcade-controls button:hover,.arcade-controls button:focus-visible{background:#506343;outline:2px solid #cedb96}
@media(max-width:600px){.arcade-controls{bottom:16px;padding:10px}.arcade-controls>div{gap:5px}.arcade-controls button{font-size:15px;padding:5px 8px}}

.arcade-controls>button{margin-top:8px;font-size:14px;min-height:32px}
.brand-mark{padding:0 4px 3px 0}
