:root{color-scheme:dark;font-family:'Courier New',monospace;color:#e8d6b5;background:#090b0e}*{box-sizing:border-box}body{margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}#world{height:100svh;display:grid;place-items:center;overflow:auto;background:#08090b}#scene{position:relative;width:min(100vw,160svh);aspect-ratio:1.6;flex-shrink:0;overflow:hidden}#background{display:block;width:100%;height:100%;object-fit:fill}.grain{position:absolute;inset:0;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.7' filter='url(%23n)'/%3E%3C/svg%3E")}.hotspot{position:absolute;background:transparent;border:0;padding:0;outline:none!important}.hotspot .label{position:absolute;left:50%;bottom:calc(100% + 12px);transform:translateX(-50%);padding:7px 10px;font-size:11px;white-space:nowrap;background:#16120ded;border:1px solid #ad8557;border-radius:4px;opacity:0;transition:opacity .2s;pointer-events:none}.hotspot:hover .label,.hotspot:focus-visible .label{opacity:1}.entrance .label{display:none}.invitation{position:absolute;left:46%;top:74%;width:14%;height:18%;border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#ffe0a4;text-shadow:0 0 5px #ffd28daa,0 0 15px #e8a34b88;letter-spacing:3px;font-size:clamp(10px,1vw,15px);text-transform:uppercase;animation:neon-breathe 4s ease-in-out infinite}.invitation svg{height:70%;width:65%;overflow:visible;transform:perspective(200px) rotateX(45deg);filter:drop-shadow(0 0 3px #ffd38d) drop-shadow(0 0 9px #f3b85499)}.invitation path{fill:none;stroke:#ffe1a7;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.invitation:hover,.invitation:focus-visible{color:#fff1d4;filter:brightness(1.2);outline:none}.invitation:focus-visible span{text-decoration:underline;text-underline-offset:5px}@keyframes neon-breathe{50%{opacity:.7}}
#controls{position:fixed;bottom:0;left:0;right:0;padding:20px 30px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(transparent,#090805dc);font-size:11px;letter-spacing:2px}#controls[hidden]{display:none}#controls button{border:0;background:none;padding:12px;text-transform:uppercase}button:focus-visible{outline:1px solid #e2bd7e;outline-offset:5px}dialog{width:min(560px,calc(100vw - 32px));max-height:85svh;border:1px solid #756045;background:#15130fec;padding:48px 32px 32px;box-shadow:0 25px 100px #000;border-radius:5px}dialog::backdrop{background:#030408b8;backdrop-filter:blur(7px)}#close{position:absolute;top:10px;right:16px;font-size:26px;border:0;background:none}h1,h2{font-family:Georgia,serif;font-weight:normal;font-size:32px;margin:8px 0 24px}p{font-size:14px;line-height:1.8}.eyebrow{font-size:10px;letter-spacing:3px;color:#ae9878;text-transform:uppercase}.paper{background:#e4d8bd;color:#29241d;padding:28px;transform:rotate(-1deg);box-shadow:0 10px 30px #0005}.paper h2{font-family:monospace;font-size:20px}.paper p{font-size:13px}.choices{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.choices button{background:#252118;border:1px solid #7d6748;padding:12px 16px;font-size:12px}.photo{max-width:100%;max-height:45svh;display:block;margin:18px auto;border:10px solid #eadfc8;border-bottom-width:30px;transform:rotate(-2deg)}.screen{padding:24px;background:#080e12;border:8px solid #33342e;box-shadow:inset 0 0 30px #2f62731f;color:#a1bac2}.screen h2{font:18px monospace}.muted{color:#9d907c;font-size:12px}audio{width:100%;margin:16px 0}#transition{position:fixed;inset:0;background:#08090c;pointer-events:none;opacity:0;transition:opacity .45s}#transition.active{opacity:1}@media(max-width:650px){#scene{width:160svh;max-width:none}#world{justify-items:start}#controls{padding:12px;font-size:10px;letter-spacing:1px}#clock{display:none}dialog{padding:45px 22px 25px}.hotspot .label{font-size:13px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

#world{overflow-x:auto;overflow-y:hidden;scrollbar-width:none}#world::-webkit-scrollbar{display:none}

.radio-tuner{text-align:center;border:1px solid #5a4933;padding:22px;background:linear-gradient(135deg,#292319,#161510);border-radius:8px}.radio-display{background:#11130d;box-shadow:inset 0 0 18px #000;padding:14px;color:#e3be74;font-size:30px;text-shadow:0 0 8px #e3a94c55}.radio-display small{font-size:12px}.radio-display p{margin:5px 0 0;font-size:13px;letter-spacing:3px}.dial-face{margin:24px auto 16px;width:86px;height:86px;border:1px solid #6b5739;border-radius:50%;padding:6px}#dial-knob{width:100%;height:100%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#706451,#322d23 60%,#191611);box-shadow:3px 5px 10px #0008;position:relative;transition:transform .35s}#dial-knob i{position:absolute;top:9px;left:50%;height:17px;width:2px;background:#f0ce8f;box-shadow:0 0 5px #f0ce8f}.tuner-label{display:block;font-size:10px;letter-spacing:3px;margin-bottom:18px}#tuning{width:100%;accent-color:#d9b575;cursor:ew-resize}.dial-scale{display:flex;justify-content:space-between;font-size:11px;color:#bda982;margin-top:8px}#radio-status{font-size:12px;color:#bda982;margin-bottom:0}.radio-credits{font-size:10px;color:#8d806a;line-height:1.6;margin-top:24px}.radio-credits a{color:#b29b76}.hotspot .label{border-color:#b69b36;background:#19160eed}
.radio-hardware{position:relative;aspect-ratio:1.6;background-image:url('assets/counter.jpg');background-size:480% 455%;background-position:0 58%;border-radius:13px;border:5px solid #3b2415;box-shadow:0 10px 35px #0008;overflow:hidden}.radio-readout{position:absolute;left:7%;top:14%;width:62%;height:30%;background:#151109ef;border:2px inset #9e7c45;padding:10px;color:#edcb83;box-shadow:inset 0 0 15px #000;text-shadow:0 0 5px #dda95366}.radio-readout strong{font-size:clamp(22px,5vw,34px);font-weight:normal}.radio-readout small{font-size:10px}.radio-readout span{display:block;font-size:11px;margin-top:4px}.radio-presets{position:absolute;left:7%;bottom:13%;width:62%;display:flex;gap:6px}.radio-presets button{width:25%;border:2px outset #aa8350;background:linear-gradient(#b69560,#755633);color:#20190e;padding:8px 1px;border-radius:3px;box-shadow:0 4px 0 #3f2c1b;font-size:12px}.radio-presets button[aria-pressed=true]{border-style:inset;transform:translateY(3px);box-shadow:0 1px 0 #3f2c1b;background:linear-gradient(#6a4a29,#b6945d);color:#fff0c6}.radio-presets button:focus-visible{outline:2px solid #ffe34d;outline-offset:4px}.hardware-knob{position:absolute;left:75%;top:38%;width:19%;aspect-ratio:1;border-radius:50%;border:3px solid #77562f;background:radial-gradient(circle at 35% 30%,#c5a16c,#876036 52%,#392515 95%);box-shadow:3px 6px 8px #0009;cursor:grab;touch-action:none}#dial-knob{width:19%;height:auto;transform:rotate(var(--dial-angle));transition:transform .25s}.hardware-knob.turning{cursor:grabbing}.hardware-knob:focus-visible{outline:2px solid #ffe34d;outline-offset:5px}#dial-knob i{top:12%;height:25%;background:#fff0bd;box-shadow:0 0 5px #f4c980}.radio-credits p{font-size:10px;line-height:1.5}.radio-credits summary{cursor:pointer}#radio-status{text-align:center}@media(max-width:500px){.radio-hardware{aspect-ratio:1.45}.radio-readout{padding:7px}.radio-readout span{font-size:9px}.radio-presets button{font-size:10px;padding:8px 1px}.radio-presets{gap:4px}}

#dial-knob.hardware-knob{position:absolute;background:radial-gradient(circle at 35% 30%,#c5a16c,#876036 52%,#392515 95%);box-shadow:3px 6px 8px #0009}

#dial-knob.hardware-knob{border-color:#ffe34d;box-shadow:3px 6px 8px #0009,0 0 0 1px #ffe34d78,0 0 9px #ffe34d65,0 0 20px #d9b42330}#dial-knob.hardware-knob:hover,#dial-knob.hardware-knob:focus-visible,#dial-knob.hardware-knob.turning{box-shadow:3px 6px 8px #0009,0 0 0 2px #ffe34da0,0 0 14px #ffe34d90,0 0 27px #d9b42345}

.inspection-dialog{width:min(860px,calc(100vw - 32px))}.inspection-view{margin:0 0 24px;aspect-ratio:4/3;background-color:#17130e;background-repeat:no-repeat;border:1px solid #5e4934;border-radius:4px;overflow:hidden;box-shadow:0 10px 32px #0006}.inspection-view img{display:block;width:100%;height:100%;object-fit:cover}.inspection-dialog .paper{transform:none}.inspection-dialog h2{font-size:27px}@media(max-width:650px){.inspection-view{margin-bottom:18px}}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:14px;margin-top:24px}.photo-grid button{background:#e5d9bd;border:0;padding:6px;color:#33291d;transform:rotate(-1deg)}.photo-grid button:hover{transform:rotate(1deg)}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.photo-grid span{display:block;padding:6px;font-size:10px}.collection-photo{max-height:52svh}.console-shell{border:12px solid #514233;border-radius:20px;background:#221e18;box-shadow:0 18px 45px #0008,inset 0 0 0 3px #b18c5633;padding:12px;margin-top:20px}.crt-screen{position:relative;border:5px solid #141716;border-radius:18px;padding:30px;background:radial-gradient(ellipse,#183239,#070f13);color:#c6d2b7;box-shadow:inset 0 0 45px #000a;text-align:center;overflow:hidden}.crt-screen:after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0 3px,#0002 3px 4px)}.crt-screen h2{font:24px 'Courier New',monospace;letter-spacing:4px;color:#e5c275}.crt-brand{font-size:10px;letter-spacing:3px;color:#adbcaa}.crt-screen small{display:block;margin-top:25px;color:#85988a;font-size:10px}.crt-screen button{background:#162724;border:1px solid #90a28a;color:#e4d6ad;padding:13px;margin:6px;border-radius:3px;font-size:12px}#console-menu,#video-list{display:flex;flex-direction:column}.console-trim{display:flex;justify-content:space-between;margin:15px 8px 3px;color:#c5ad78;font-size:10px}.game-layout{display:flex;gap:20px;justify-content:center;align-items:center}.game-screen{padding:18px}.game-side{width:145px;text-align:left}.game-side h2{font-size:17px;letter-spacing:2px}.game-side img{width:65px;height:80px;object-fit:cover;border:3px solid #e8dcb1;transform:rotate(3deg)}.game-side p{font-size:11px;line-height:1.7}#blocks{max-width:55%;width:calc(42svh / 2);height:auto;max-height:42svh;aspect-ratio:1 / 2;object-fit:contain;background:#071113;outline:1px solid #809080;touch-action:none}#blocks:focus-visible{outline:2px solid #ffe34d}.game-buttons{display:flex;justify-content:center;gap:3px;margin-top:12px}.game-buttons button{padding:12px;margin:1px}.memory-video{display:block;width:100%;max-height:54svh;background:#000}.crt-screen video{position:relative;z-index:1}@media(max-width:500px){.console-shell{padding:4px;border-width:8px}.crt-screen{padding:16px}.game-layout{gap:9px}.game-side{width:95px}.game-side h2{font-size:12px}.game-side button{padding:8px;font-size:10px;margin:2px}.game-screen{padding:9px}.game-buttons button{padding:10px}.photo-grid{grid-template-columns:repeat(3,1fr);gap:8px}}

@media(max-width:650px){body:has(#world[data-scene="corridor"]) #clock.corridor-hint{display:block;font-size:8px;letter-spacing:0}.room-door .label{opacity:.8;bottom:15%;font-size:11px;white-space:normal;max-width:100px}}

.corridor-mobile{display:none}@media(max-width:650px){.corridor-desktop{display:none}.corridor-mobile{display:inline}}

.photo-stack .scene-print{position:absolute;display:block;width:68%;height:82%;padding:4%;padding-bottom:10%;background:#d5c2a2;box-shadow:3px 5px 7px #0008;filter:brightness(.7) sepia(.12);pointer-events:none;transform-origin:center}.scene-print img{display:block;width:100%;height:100%;object-fit:cover}.scene-print:after{content:'';position:absolute;inset:0;border:2px solid #ffe34daa;box-shadow:0 0 3px #ffe34d55}.photo-stack .print-1{left:2%;top:10%;transform:rotate(-12deg) skewX(-12deg)}.photo-stack .print-2{left:29%;top:2%;transform:rotate(5deg) skewX(-12deg)}.photo-stack:hover .scene-print:after,.photo-stack:focus-visible .scene-print:after{border-color:#ffed75;box-shadow:0 0 5px #ffe34d99}.enlarged-photo{display:block;max-width:100%;max-height:68svh;width:auto;height:auto;margin:16px auto;object-fit:contain}

/* Words belong to the print and appear only in its close inspection. */
.closer-print{display:block;width:auto;max-width:100%;height:auto;max-height:60svh;aspect-ratio:1;margin:16px auto;isolation:isolate}
.hidden-mark{font-family:Georgia,serif;font-style:italic;letter-spacing:2px;fill:#73502b;opacity:.76;mix-blend-mode:multiply}
.hidden-mark.awning{fill:#e6d7ab;opacity:.85;mix-blend-mode:normal;font-family:'Courier New',monospace;font-style:normal;letter-spacing:3px;text-shadow:0 1px 2px #0b194d}
.hidden-mark.moon{fill:#b47e34;opacity:.73;letter-spacing:5px;text-shadow:0 1px 0 #fff5c3}
.hidden-mark.cloud{fill:#f5f5ed;mix-blend-mode:normal;opacity:.88;letter-spacing:5px;text-shadow:0 2px 3px #525d6799}
.hidden-mark.ceramic{fill:#354e65;font-style:normal;opacity:.8;letter-spacing:1px}
.hidden-mark.reflection{fill:#66538e;opacity:.42;letter-spacing:5px;font-style:normal}
.hidden-mark.cloth{fill:#826950;opacity:.73;font-family:'Courier New',monospace;font-style:normal;letter-spacing:1px}
.hidden-mark.leaf{fill:#346331;opacity:.65;letter-spacing:3px}
.hidden-mark.stone{fill:#746960;opacity:.7;letter-spacing:2px}
.hidden-mark.starlight{fill:#faf2c1;mix-blend-mode:normal;opacity:.9;font-style:normal;text-shadow:0 0 5px #fff9c7;letter-spacing:3px}
.hidden-mark.paint{fill:#6a4544;opacity:.8;font-family:'Courier New',monospace;font-style:normal;letter-spacing:1px}
.hidden-mark.water{fill:#656092;opacity:.72;letter-spacing:5px}
.hidden-mark.tape{fill:#4b4a47;opacity:.9;font-family:'Courier New',monospace;font-style:normal;letter-spacing:3px}
.hidden-mark.mushroom{fill:#f9d8af;mix-blend-mode:normal;opacity:.83;letter-spacing:2px}
.hidden-mark.metal{fill:#a6e974;mix-blend-mode:normal;opacity:.7;font-family:'Courier New',monospace;font-style:normal;letter-spacing:2px}
.hidden-mark.cone{fill:#865d34;opacity:.76;letter-spacing:1px}

.hidden-mark.ring{fill:#eee0be;mix-blend-mode:normal;opacity:.85;font-family:Georgia,serif;letter-spacing:1px}.hidden-mark.chalk{fill:#cbc6b2;mix-blend-mode:normal;opacity:.78;font-family:'Courier New',monospace;font-style:normal;letter-spacing:2px}

/* The window is a quiet scene: no object hotspots or clock. */
#window-caption{position:fixed;left:0;right:0;bottom:62px;margin:0;padding:32px 24px 16px;background:linear-gradient(transparent,#07090cc7);font-family:Georgia,serif;font-size:clamp(17px,1.55vw,23px);line-height:1.6;text-align:center;text-shadow:0 2px 12px #000;color:#eee1c8;pointer-events:none}
#window-caption[hidden]{display:none}.window-controls #clock{display:none}.window-controls{background:linear-gradient(transparent,#07090ccc)}
@media(max-width:650px){#window-caption{bottom:54px;padding:28px 22px 12px;font-size:18px}#world[data-scene="window"]{overflow-x:hidden}#world[data-scene="window"] #scene{width:100vw;height:100svh;aspect-ratio:auto}#world[data-scene="window"] #background{object-fit:cover;object-position:55% center}}

/* The counter has separate paths to the kitchen and the corridor. */
.counter-corridor{display:flex;align-items:center;justify-content:center;gap:clamp(6px,1vw,16px);border:2px solid #ffe34d99;border-radius:3px;background:linear-gradient(105deg,#302218f2,#1a140eee);box-shadow:2px 5px 10px #0007,0 0 5px #ffe34d55;transform:rotate(-2deg);color:#e0ceb1;transition:box-shadow .25s,border-color .25s}
.counter-corridor:hover,.counter-corridor:focus-visible{border-color:#ffed75;box-shadow:2px 5px 10px #0007,0 0 12px #ffe34d88}
.passage-arrow{font-family:Georgia,serif;font-size:clamp(21px,2.4vw,38px);color:#ffe34d;text-shadow:0 0 5px #ffe34d88}
.passage-text{display:flex;flex-direction:column;gap:3px;text-align:left}.passage-text [lang]{font-size:clamp(13px,1.3vw,20px);letter-spacing:4px}.passage-text span:last-child{font-size:clamp(8px,.75vw,12px);letter-spacing:2px;text-transform:uppercase}
@media(max-width:650px){.counter-corridor{position:fixed;left:12px!important;top:36%!important;width:110px!important;height:52px!important;z-index:2;gap:10px}.passage-arrow{font-size:27px}.passage-text [lang]{font-size:17px}.passage-text span:last-child{font-size:9px;letter-spacing:1px}}

.bathroom-controls #clock{display:none}

@media(max-width:650px){#world[data-scene="bathroom"]{overflow-x:hidden}#world[data-scene="bathroom"] #scene{width:100vw;height:100svh;aspect-ratio:auto}#world[data-scene="bathroom"] #background{object-fit:cover;object-position:45% center}}
#world[data-scene="lab"],#world[data-scene="meeting"]{background:#f4f5f6}#world[data-scene="lab"] .grain,#world[data-scene="meeting"] .grain{opacity:.015}
#controls.clinical-controls{color:#35404a;background:linear-gradient(transparent,#f5f6f7ed)}.clinical-controls #clock{display:none}.clinical-controls button:focus-visible{outline-color:#8a98a8}
body:has(#world[data-scene="lab"]) dialog{color:#26323e;background:#f6f7f8f7;border-color:#bac5cf}body:has(#world[data-scene="lab"]) dialog::backdrop{background:#b8c2ca70}.project-file{padding:24px;background:#fff;border:1px solid #d9dfe5;color:#283541}.project-file h2{font-family:monospace;font-size:24px;line-height:1.4}.project-file .muted{color:#6f7d88}.project-file .eyebrow{color:#6c7d8e}
@media(max-width:650px){#world[data-scene="meeting"]{overflow-x:hidden}#world[data-scene="meeting"] #scene{width:100vw;height:100svh;aspect-ratio:auto}#world[data-scene="meeting"] #background{object-fit:cover;object-position:center}.project-file{padding:18px}.project-file h2{font-size:21px}}

/* Every image-based highlight lives in the same coordinate layer as its photograph. */
:root{--noodl-glow:#ffe34d}
#scene-outline-layer{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:hidden}
.outline-object{opacity:.6;filter:drop-shadow(0 0 2px #ffe34d45);transition:opacity .2s,filter .2s}
.outline-object path{fill:none;stroke:var(--noodl-glow);stroke-width:2.2px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}
.outline-object.active{opacity:1;filter:drop-shadow(0 0 2px #ffe34daa) drop-shadow(0 0 7px #e3bb354d)}
.outline-object.entrance{opacity:.7}.outline-object.entrance.active{opacity:1}
.outline-object.secret-door{opacity:.28;filter:drop-shadow(0 0 1px #ffe34d30)}.outline-object.secret-door.active{opacity:.9;filter:drop-shadow(0 0 4px #ffe34d80)}
.outline-object.lab-file{opacity:.82;filter:drop-shadow(0 0 1px #90711e80) drop-shadow(0 0 3px #ffe34d40)}.outline-object.lab-file.active{opacity:1;filter:drop-shadow(0 0 2px #90711e80) drop-shadow(0 0 6px #ffe34d80)}
.outline-object.lab-door{opacity:.5}.outline-object.lab-door.active{opacity:1}
.hotspot{z-index:2}.outlined-hotspot{transform:translate(-50%,-50%);min-width:44px;min-height:44px}
.hotspot .label{z-index:3;border-color:#bd9f39;background:#19160ef2}
button:focus-visible{outline-color:var(--noodl-glow)}
#dial-knob.hardware-knob{border-color:var(--noodl-glow);box-shadow:3px 6px 8px #0009,0 0 0 1px #ffe34d80,0 0 8px #ffe34d60,0 0 18px #d9b42330}
#dial-knob.hardware-knob:hover,#dial-knob.hardware-knob:focus-visible,#dial-knob.hardware-knob.turning{box-shadow:3px 6px 8px #0009,0 0 0 2px #ffe34da0,0 0 13px #ffe34d90,0 0 25px #d9b42345}
.invitation{color:var(--noodl-glow);text-shadow:0 0 5px #ffe34daa,0 0 15px #e3bb3580}.invitation path{stroke:var(--noodl-glow);stroke-width:2.7}.invitation svg{filter:drop-shadow(0 0 3px #ffe34d) drop-shadow(0 0 9px #e3bb3580)}
#scene{isolation:isolate}
.photo-stack .scene-print:after{border:2.2px solid #ffe34dee;box-shadow:0 0 3px #ffe34d65}
.photo-stack:hover .scene-print:after,.photo-stack:focus-visible .scene-print:after{border-color:#ffe34d;box-shadow:0 0 6px #ffe34d99}
.counter-corridor{z-index:4}

/* The locked room is a quiet holding chamber until the conversational Noodl is ready. */
#upload-message{position:fixed;z-index:3;left:0;right:0;bottom:64px;padding:12px 24px;text-align:center;pointer-events:none;color:#374752;text-shadow:0 1px 9px #fff,0 0 24px #fff;font-family:'Courier New',monospace}
#upload-message[hidden]{display:none}
#upload-message p{margin:0;line-height:1.7;font-size:clamp(11px,1.05vw,16px);letter-spacing:1.6px}
#upload-message .upload-wait{margin-top:18px;font-size:clamp(10px,.8vw,12px);letter-spacing:2px}
#upload-message .upload-later{margin-top:5px;font-size:clamp(10px,.8vw,12px);letter-spacing:2px}
#world[data-scene="lab"] .upload-line{opacity:0;animation:upload-reveal 2.8s ease-out forwards}
#world[data-scene="lab"] .upload-title{animation-delay:1.1s}
#world[data-scene="lab"] .upload-wait{animation-delay:3.4s}
#world[data-scene="lab"] .upload-later{animation-delay:5s}
@keyframes upload-reveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:650px){#world[data-scene="lab"]{overflow-x:hidden}#world[data-scene="lab"] #scene{width:100vw;height:100svh;aspect-ratio:auto}#world[data-scene="lab"] #background{object-fit:cover;object-position:center}#upload-message{bottom:64px;padding:12px 20px}#upload-message .upload-title{max-width:360px;margin-inline:auto;font-size:11px;letter-spacing:1px}}
@media(prefers-reduced-motion:reduce){#world[data-scene="lab"] .upload-line{opacity:1;animation:none}}

/* Matrix-like digital rain, clipped inside each lens rather than across the face. */
#eye-code-layer{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;mix-blend-mode:screen;opacity:.88;overflow:hidden}
.eye-code-glyph{font-family:'Courier New',monospace;font-size:4.8px;font-weight:bold;filter:drop-shadow(0 0 .45px #39ff78)}
.eye-code-stream{animation-timing-function:linear;animation-iteration-count:infinite}
.eye-code-down{animation-name:eye-code-fall}.eye-code-up{animation-name:eye-code-rise}
@keyframes eye-code-fall{from{transform:translateY(-44.8px)}to{transform:translateY(0)}}
@keyframes eye-code-rise{from{transform:translateY(0)}to{transform:translateY(-44.8px)}}
@media(prefers-reduced-motion:reduce){.eye-code-stream{animation:none}}

/* Copy-only contract markings: a quiet footer and lettering cut into the counter. */
.home-contract{position:fixed;z-index:3;bottom:13px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 24px);border:0;background:transparent;padding:12px 4px;color:#c7b187;font-size:clamp(9px,.78vw,12px);letter-spacing:.35px;white-space:nowrap;opacity:.64;text-shadow:0 1px 5px #000;transition:opacity .2s}
.home-contract[hidden]{display:none}.home-contract:hover,.home-contract:focus-visible{opacity:1}.ca-label{font-size:9px;letter-spacing:1px;margin-right:6px;color:#a68d63}
.counter-contract{position:absolute;z-index:3;left:36%;top:85.3%;width:30%;height:4%;min-height:44px;container-type:inline-size;border:0;background:transparent;padding:0;transform:rotate(-.8deg);color:#4c2e17;opacity:.82;transition:opacity .2s}
.counter-contract span{display:block;font-size:3.2cqw;letter-spacing:.25px;white-space:nowrap;text-shadow:0 1px .6px #e9b87590,-.5px -.5px .6px #130901b0;mix-blend-mode:multiply}
.counter-contract:hover,.counter-contract:focus-visible{opacity:1;color:#784d23}.counter-contract:focus-visible{outline:1px dashed #ffe34d80;outline-offset:0}
#copy-notice{position:fixed;z-index:5;left:50%;bottom:65px;transform:translateX(-50%);max-width:calc(100vw - 32px);margin:0;padding:8px 14px;border-radius:3px;background:#17130eed;color:#ead9b7;font-size:11px;text-align:center;pointer-events:none}
#copy-notice:empty{display:none}
