: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}.object-outline{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:.26;transition:opacity .3s,filter .3s;filter:drop-shadow(0 0 2px #e8ba6a55)}.object-outline path{fill:none;stroke:#edc78c;stroke-width:1;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}.hotspot:hover .object-outline,.hotspot:focus-visible .object-outline{opacity:.95;filter:drop-shadow(0 0 3px #ffc97d99) drop-shadow(0 0 7px #f3b85466)}.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}.entrance .object-outline{opacity:.55;filter:drop-shadow(0 0 3px #e8ba6a77)}.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}

/* Thin persistent lavender contours, brighter only at the active object. */
.object-outline{opacity:.62;filter:drop-shadow(0 0 2px #b598ff55)}.object-outline path{stroke:#b6a0ee;stroke-width:1.05}.hotspot:hover .object-outline,.hotspot:focus-visible .object-outline{opacity:1;filter:drop-shadow(0 0 3px #b59affaa) drop-shadow(0 0 8px #8f6fd866)}.entrance .object-outline{filter:drop-shadow(0 0 3px #b59aff66);opacity:.6}.hotspot .label{border-color:#8d75b1;background:#181321ed}
.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 #ba9bff;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 #b69beb;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}
