:root{color-scheme:dark;--ink:#0b0c0a;--text:#d3cbbb;--muted:#a59d8c;--paper:#d4c7a8;--paper-ink:#3c372d;--line:rgba(197,183,157,.22);--ease:cubic-bezier(.22,.7,.18,1);font-family:'Songti SC','Noto Serif CJK SC',STSong,Georgia,serif;background:var(--ink);color:var(--text)}
*{box-sizing:border-box}body{margin:0}button,textarea{font:inherit}button{color:inherit;cursor:pointer;background:none;border:0}button:disabled{opacity:.3;cursor:default}button:focus-visible{outline:1px solid #d5c5a6;outline-offset:5px}button:hover:not(:disabled){color:#f0e2c9}button{transition:color .2s,opacity .2s}kbd{font:11px monospace;color:var(--muted);border:1px solid var(--line);padding:2px 5px;border-radius:2px}h1,h2,h3,p{margin:0}[hidden]{display:none!important}
#room{height:100svh;min-height:420px;position:relative;overflow:hidden;background:#080907}.room-caption{position:absolute;z-index:3;top:max(28px,env(safe-area-inset-top));left:3.5%;pointer-events:none;animation:caption-in 2.4s both}.edition,.eyebrow{font:10px 'Courier New',monospace;letter-spacing:.22em;color:var(--muted)}h1{font-weight:400;font-size:30px;letter-spacing:.24em;margin-top:10px;display:flex;align-items:baseline;gap:18px}h1 span{font:10px 'Courier New',monospace;letter-spacing:.25em}.room-caption p{font-size:12px;letter-spacing:.2em;margin-top:10px;color:var(--muted)}
.viewport{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.scene{position:relative;flex:none;opacity:0;transform:translate(calc(var(--camera-x,0px) + var(--px,0px)),calc(var(--camera-y,0px) + var(--py,0px))) scale(var(--zoom,1));transition:transform 1.45s var(--ease),opacity 1.8s ease;will-change:transform}.ready .scene{opacity:1}.scene>img{display:block;width:100%;height:100%;user-select:none}.window-light{position:absolute;inset:6% 4% 25% 64%;background:radial-gradient(ellipse at 70% 20%,rgba(233,190,119,.16),transparent 70%);mix-blend-mode:soft-light;pointer-events:none;animation:daylight 24s ease-in-out infinite alternate}.object-light{position:absolute;backdrop-filter:brightness(1.17);opacity:0;transition:opacity .5s;pointer-events:none}.object-light.lit{opacity:1}.hotspot{position:absolute;padding:0;touch-action:manipulation;cursor:pointer;min-width:44px;min-height:44px}.hotspot:focus-visible{outline:0}.hotspot-dot{position:absolute;top:50%;left:50%;width:5px;height:5px;border-radius:50%;background:#dac6a4;opacity:0;transition:opacity .5s;box-shadow:0 0 0 4px #dac6a415}.hotspot-label{position:absolute;left:50%;top:calc(100% + 12px);min-width:160px;transform:translate(-50%,4px);text-align:left;font-size:15px;padding:12px 15px;background:rgba(15,16,12,.91);border-top:1px solid #9d8c6b;pointer-events:none;opacity:0;transition:opacity .3s,transform .3s;letter-spacing:.1em;white-space:nowrap}.hotspot-label small{display:block;font:10px 'Courier New','Songti SC',serif;color:#b2a58d;letter-spacing:.13em;margin-bottom:7px}.hotspot-label b{font-size:14px;font-weight:400;float:right;margin-left:24px}.hotspot:hover .hotspot-label,.hotspot:focus-visible .hotspot-label,.show-hints .hotspot-label{opacity:1;transform:translate(-50%,0)}.hotspot:focus-visible .hotspot-label{outline:1px solid #d5c5a6}.show-hints .hotspot-dot,.hotspot:hover .hotspot-dot,.hotspot:focus-visible .hotspot-dot{opacity:.8}.focused .hotspot,.focused .object-light{visibility:hidden}
.room-footer{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:3.5%;right:3.5%;z-index:3;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:12px;letter-spacing:.08em;animation:caption-in 2.4s both}.room-footer p{color:#b3aa98}.room-tools{display:flex;align-items:center;gap:24px;font-family:'Courier New','Songti SC',serif}.room-tools button{padding:12px 0;font-size:12px}.room-tools span{font-size:11px;color:var(--muted)}#hints span{font-size:16px;margin-left:6px}.load-status{position:absolute;inset:50% 0 auto;text-align:center;font-size:13px;letter-spacing:.2em}.ready .load-status{display:none}body.is-inspecting .room-caption,body.is-inspecting .room-footer{opacity:0;visibility:hidden;animation:none;transition:opacity .4s,visibility .4s}
dialog{position:fixed;inset:0;max-width:none;max-height:none;width:100%;height:100dvh;border:0;margin:0;padding:0;background:transparent;color:var(--text);overflow:auto}dialog::backdrop{background:rgba(5,7,5,.66);animation:backdrop-in 1s both}dialog[open]{animation:dialog-in 1.1s var(--ease) both}dialog.closing{animation:dialog-out .32s ease both}.dialog-top{position:relative;z-index:5;display:flex;align-items:center;justify-content:space-between;max-width:1240px;margin:auto;padding:28px 36px 16px;gap:20px}.dialog-top h2{font-size:18px;letter-spacing:.16em;font-weight:400;margin-top:8px}.return{display:flex;align-items:center;gap:12px;min-height:44px;font-size:13px}.return>span{font-size:22px}.object-view{min-height:calc(100% - 105px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 24px 32px}.writer{width:min(620px,100%)}.letter,.document-paper{color:var(--paper-ink);background-color:var(--paper);background-image:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(49,39,18,.025) 4px),radial-gradient(ellipse at top left,#e2d9bf,transparent 70%);box-shadow:0 18px 65px #0006,inset 0 0 55px #6c522b1a}.letter{padding:32px 44px 20px;transform:rotate(-.45deg)}.paper-heading{display:flex;justify-content:space-between;font:9px 'Courier New',monospace;letter-spacing:.12em;color:#746950;border-bottom:1px solid #77644640;padding-bottom:14px}.letter h3{font-size:23px;font-weight:400;letter-spacing:.12em;margin:25px 0 22px}.letter label{font-size:14px;display:block;margin-bottom:16px}.letter textarea{display:block;width:100%;height:clamp(150px,28vh,300px);resize:none;background:transparent;border:0;outline:0;color:#39352d;font:17px/1.9 'Courier New','Songti SC',serif;caret-color:#55482c;border-bottom:1px solid transparent}.letter textarea:focus-visible{border-bottom-color:#71634660}.letter textarea::placeholder{color:#877c65}.letter.strike textarea{animation:key-strike .12s ease-out}.paper-foot{display:flex;justify-content:space-between;font-size:11px;color:#766b55;padding-top:20px}.typewriter-rail{height:36px;margin:0 -18px;position:relative;z-index:2;background:linear-gradient(#33362e,#161b17 25%,#282e26 66%,#0b0e0c);border:1px solid #45483e;box-shadow:0 10px 22px #0009;border-radius:6px;display:flex;align-items:center;justify-content:space-between;padding:0 20px}.typewriter-rail span{font:8px 'Courier New',monospace;color:#a79e89}.typewriter-rail i{height:20px;width:8px;background:#646556;border:2px solid #242a23;border-radius:2px}.writer-actions{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:16px 0;gap:15px;color:var(--muted)}.writer-actions button{font-size:13px;min-height:44px;white-space:nowrap}.writer-actions button span{margin-left:8px}
.television{width:min(780px,100%);background:linear-gradient(115deg,#45392a,#29271f 62%,#3c352a);padding:20px 22px 0;border:1px solid #65513b;border-radius:20px 20px 12px 12px;box-shadow:0 30px 90px #0009,inset 0 1px 1px #af967b50}.crt-bezel{padding:15px;background:linear-gradient(130deg,#191e18,#48493d);border-radius:38px/28px;box-shadow:inset 0 2px 14px #000}.crt{position:relative;min-height:360px;overflow:hidden;border-radius:30px/24px;background:radial-gradient(ellipse,#1b2820,#0c150f 85%);color:#acba92;box-shadow:inset 0 0 40px #0008;font:14px/1.7 'Courier New','Songti SC',monospace}.crt::after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0px,transparent 2px,#0002 3px);opacity:.55}.terminal-content{padding:28px 32px}.terminal-heading{font-size:10px;letter-spacing:.08em;display:flex;justify-content:space-between;border-bottom:1px solid #89997150;padding-bottom:15px;gap:12px}.online{color:#a8b793;white-space:nowrap}.terminal-content h3{font-size:22px;font-weight:400;margin:22px 0 8px;letter-spacing:.1em}.terminal-description{font-size:13px;color:#9ca98b;margin-bottom:16px}.terminal-menu{display:flex;flex-direction:column;gap:3px;margin-top:22px}.terminal-menu button{text-align:left;padding:9px 12px;font:14px 'Courier New','Songti SC',serif;border:1px solid transparent;min-height:44px}.terminal-menu button:hover,.terminal-menu button:focus-visible{background:#b3c29412;border-color:#89997150;color:#d2dcbc;outline:none}.terminal-menu button span{margin-right:18px;color:#78896b}.terminal-prompt{font-size:12px;margin-top:20px;color:#839777}.cursor{animation:blink 1.2s steps(1) infinite}.terminal-back{border-bottom:1px solid #82926f55;font-size:12px;margin-top:15px;padding:10px 0}.terminal-text{margin-top:18px;font-size:14px;line-height:1.9}.terminal-text p+p{margin-top:12px}.terminal-list{margin-top:20px;display:grid;gap:13px}.terminal-list div{display:flex;justify-content:space-between;border-bottom:1px dashed #a3b68b30;padding-bottom:8px}.terminal-list small{color:#94a77f}.boot-line{display:none}.booting .boot-line{display:block;position:absolute;top:50%;left:12%;width:76%;height:2px;background:#b5c5a2;animation:crt-start .85s both}.booting .terminal-content{animation:crt-content 1.1s both}.tv-hardware{height:68px;display:flex;align-items:center;gap:22px;padding:0 8px}.tv-hardware>span{font:10px Georgia,serif;letter-spacing:.18em;color:#c3b499}.tv-hardware small{display:block;font:7px 'Courier New',monospace;letter-spacing:.1em;margin-top:5px;color:#968875}.speaker{flex:1;height:24px;background:repeating-linear-gradient(0deg,#151812 0,#151812 2px,transparent 2px,transparent 4px);opacity:.6}.tv-hardware button{font:22px sans-serif;width:44px;height:44px;border:1px solid #6a6251;border-radius:50%;background:#25281f;box-shadow:2px 3px 4px #0007;color:#afa58b}.object-note{font-size:12px;letter-spacing:.2em;color:#a59d8b;margin-top:22px}
.dossier{width:min(580px,100%);position:relative}.dossier::before{content:'';position:absolute;inset:9px 5px 65px;background:#b6a987;transform:rotate(1.4deg);box-shadow:0 8px 30px #0006}.document-paper{position:relative;min-height:450px;padding:38px 44px 30px;transform:rotate(-.65deg);transform-origin:10% 50%}.document-paper.turning{animation:paper-turn .45s var(--ease)}.document-meta{display:flex;justify-content:space-between;font:10px 'Courier New',monospace;border-bottom:1px solid #74664a70;padding-bottom:15px;letter-spacing:.1em}.document-paper h3{font-size:28px;letter-spacing:.13em;font-weight:400;margin:30px 0 10px}.document-date{font-size:11px;color:#75684e;letter-spacing:.1em}.document-body{font-size:16px;line-height:2.05;margin:28px 0}.document-body p+p{margin-top:18px}.document-foot{font-size:11px;border-top:1px solid #74664a40;padding-top:16px;display:flex;justify-content:space-between;color:#75684e}.page-controls{position:relative;display:flex;align-items:center;justify-content:space-between;padding-top:20px;font:12px 'Courier New','Songti SC',serif}.page-controls button{min-height:44px}.page-controls span{color:#a99e89;font-size:11px}
@keyframes daylight{from{opacity:.12}to{opacity:.55}}@keyframes caption-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes backdrop-in{from{background:transparent}to{background:rgba(5,7,5,.66)}}@keyframes dialog-in{0%,22%{opacity:0;transform:translateY(22px)}100%{opacity:1;transform:none}}@keyframes dialog-out{to{opacity:0;transform:translateY(10px)}}@keyframes key-strike{from{transform:translateY(.7px);opacity:.87}to{transform:none;opacity:1}}@keyframes blink{50%{opacity:0}}@keyframes crt-start{0%{transform:scaleX(.02);opacity:0}20%{transform:scaleX(1);opacity:.8}60%{transform:scaleY(1);opacity:.5}100%{transform:scaleY(120);opacity:0}}@keyframes crt-content{0%,60%{opacity:0;transform:scaleY(.02)}100%{opacity:1;transform:scaleY(1)}}@keyframes paper-turn{0%{opacity:.3;transform:perspective(1000px) rotateY(-9deg) rotate(-.65deg)}100%{opacity:1;transform:rotate(-.65deg)}}
@media(max-width:700px){.room-caption{top:max(28px,env(safe-area-inset-top));left:7%}h1{font-size:32px;display:block}h1 span{display:block;margin-top:15px;font-size:10px}.room-caption p{margin-top:18px}.room-footer{left:7%;right:7%;bottom:max(25px,env(safe-area-inset-bottom));flex-direction:column;align-items:flex-start;gap:15px}.room-tools{width:100%;justify-content:space-between;gap:12px}.hotspot-dot{opacity:.8}.hotspot-label{min-width:95px;font-size:12px;padding:8px;top:calc(100% + 8px)}.hotspot-label small{font-size:9px;margin-bottom:5px}.hotspot-label b{display:none}.hotspot[data-object=television] .hotspot-label{top:auto;bottom:calc(100% + 8px)}.dialog-top{padding:max(18px,env(safe-area-inset-top)) 20px 12px;position:sticky;top:0;background:linear-gradient(#11140ff5,#11140fe8);backdrop-filter:blur(8px)}.dialog-top h2{font-size:15px}.eyebrow{font-size:9px}.return{font-size:12px;gap:6px}.return kbd{display:none}.object-view{padding:20px 20px max(28px,env(safe-area-inset-bottom));min-height:calc(100% - 82px)}.letter{padding:24px 24px 16px}.letter h3{font-size:21px}.letter textarea{height:clamp(180px,30dvh,350px);font-size:16px}.paper-heading{font-size:8px}.writer-actions{align-items:flex-start}.writer-actions>span{max-width:170px;line-height:1.8;padding-top:10px}.typewriter-rail{margin:0 -8px}.television{padding:10px 10px 0;border-radius:16px}.crt-bezel{padding:8px;border-radius:22px}.crt{min-height:375px;border-radius:17px}.terminal-content{padding:24px 18px}.terminal-heading{font-size:8px;letter-spacing:0}.terminal-content h3{font-size:20px}.terminal-menu button{font-size:13px;padding:10px 6px}.terminal-menu button span{margin-right:10px}.tv-hardware{gap:12px;padding:0;height:62px}.tv-hardware>span{font-size:8px}.tv-hardware small{font-size:6px}.tv-hardware button{width:44px;flex:none}.document-paper{padding:27px 26px 22px;min-height:450px}.document-paper h3{font-size:25px}.document-body{font-size:15px}.document-meta{font-size:9px}}
@media(max-height:600px) and (min-width:701px){.room-caption{top:16px}.room-caption p,.edition{display:none}h1{font-size:22px}.room-footer{bottom:8px}.dialog-top{padding-top:12px}.object-view{justify-content:flex-start}.letter textarea{height:140px}.crt{min-height:320px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.scene{will-change:auto}.boot-line{display:none!important}}
