:root{color-scheme:dark;--ink:oklch(93% .018 86);--dim:oklch(75% .014 100);--panel:oklch(18% .012 150 / .96);--line:oklch(78% .025 100 / .3);--accent:oklch(83% .047 92)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#101815;font:15px/1.6 "Microsoft YaHei",system-ui,sans-serif;color:var(--ink)}[hidden]{display:none!important}button,input{font:inherit}button{color:var(--ink);background:oklch(17% .013 150 / .8);border:1px solid var(--line);padding:11px 20px;border-radius:3px;cursor:pointer;transition:background .18s,opacity .18s;min-height:44px}button:hover{background:oklch(32% .025 150 / .92)}button:active{background:oklch(40% .025 150)}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button.primary{background:var(--accent);color:oklch(19% .02 150);border-color:var(--accent)}button.primary:hover{background:oklch(93% .025 95)}small{opacity:.65;margin-left:12px}canvas{width:100%;height:100%;display:block;touch-action:none;outline:none}#shade{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 40%,#0006 100%);z-index:1}header{position:fixed;top:26px;left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;z-index:2;pointer-events:none}header button{pointer-events:auto}header>div{display:flex;gap:20px;align-items:center;text-shadow:0 2px 8px #000}.room{font:24px Georgia,serif;letter-spacing:3px}#time{font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}#objective{position:fixed;top:95px;left:32px;max-width:290px;font-size:13px;color:var(--ink);text-shadow:0 1px 6px #000;background:#0c151755;padding:6px 10px;z-index:2}#crosshair{position:fixed;top:50%;left:50%;width:4px;height:4px;margin:-2px;border-radius:50%;background:#e4e3cec0;box-shadow:0 0 5px #000;z-index:2;pointer-events:none}#caption{position:fixed;bottom:145px;left:50%;transform:translateX(-50%);width:max-content;max-width:min(78vw,740px);text-align:center;font-size:17px;letter-spacing:1px;color:#f0efe5;text-shadow:0 2px 6px #000,0 0 14px #000;padding:10px 16px;background:#081010b8;z-index:3;pointer-events:none}#caption:empty{display:none}#actions{position:fixed;bottom:60px;left:50%;transform:translateX(-50%);display:flex;gap:10px;z-index:3;white-space:nowrap}#hint{position:fixed;bottom:20px;left:0;right:0;text-align:center;font-size:12px;color:#dbdfd7;text-shadow:0 1px 5px #000;z-index:2}.screen{position:fixed;inset:0;z-index:5;background:linear-gradient(90deg,#06100fec 0%,#081211b0 36%,#0812110a 85%);display:flex;align-items:center}.entry-copy{margin:0 7vw;width:390px;max-width:86vw}.chapter{font-size:13px;color:var(--dim);margin:0 0 22px;letter-spacing:3px}h1{font:400 clamp(38px,5vw,66px)/1.3 "Songti SC","SimSun",serif;letter-spacing:6px;margin:0 0 30px;text-wrap:balance}.intro{font-size:17px;line-height:2;letter-spacing:2px;margin:0 0 26px}.entry-rule{height:1px;width:42px;background:var(--dim);margin:25px 0}.subtle{font-size:13px;color:var(--dim);line-height:1.9}.entry-copy>.primary{min-width:240px;margin-top:20px}.controls{font-size:12px;color:var(--dim);margin-top:24px}.entry-number{position:absolute;right:6vw;bottom:8vh;font:24px Georgia;letter-spacing:7px;color:#d7dec18c}dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:30px;width:min(450px,90vw);max-height:90dvh;box-shadow:0 20px 80px #0009}dialog::backdrop{background:#03110ddd;backdrop-filter:blur(4px)}dialog h2{font-size:23px;margin:0 0 15px;font-weight:500}dialog p{color:var(--dim)}dialog button{display:block;width:100%;margin-top:12px}dialog label{display:flex;align-items:center;gap:12px;margin:20px 0}dialog input[type=range]{flex:1;min-width:0;accent-color:var(--accent)}#rules{width:min(580px,92vw);padding:0;background:#e6ddc8;overflow:auto;color:#282722}#rules img{display:block;width:100%;height:auto}.dialog-top{position:sticky;top:0;background:#ded4bd;display:flex;align-items:center;justify-content:space-between;padding:8px 18px}.dialog-top button{width:auto;margin:0;color:#282722;background:transparent;border-color:#a39982;padding:5px 14px}#touchMove{position:fixed;bottom:45px;left:18px;z-index:3;text-align:center;touch-action:none}#touchMove button{width:48px;height:48px;padding:0;background:#1b292366;margin:2px;touch-action:none}#touchMove>div{display:flex}#exploreAgain{display:block;margin-top:12px;min-width:240px}@media(max-width:759px){#touchMove:not([hidden]){display:block}#hint{font-size:11px}#actions{left:auto;right:20px;transform:none;bottom:52px;flex-direction:column}#actions small{display:none}#caption{bottom:210px;max-width:85vw;font-size:15px}#objective{max-width:65vw}header{top:16px;left:20px;right:20px}#objective{top:75px;left:20px}}@media(max-height:600px){.entry-copy{width:490px}.entry-rule{display:none}h1{font-size:40px;margin-bottom:14px}.intro{margin-bottom:10px}.entry-copy>.primary{margin-top:8px}.controls{margin-top:10px}.chapter{margin-bottom:10px}#caption{bottom:125px}#objective{top:72px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}} 

#keySink{position:fixed;left:-100px;top:-100px;width:1px;height:1px;opacity:0;pointer-events:none}header nav{display:flex;gap:8px;pointer-events:auto}#hint{padding:0 14px}body[data-control="locked"] #crosshair{background:#e5e7d5}@media(max-width:759px){#fullscreen{display:none}}

#dormIssue{box-sizing:border-box;position:fixed;inset:auto;top:24px;left:50%;right:auto;bottom:auto;transform:translateX(-50%);z-index:9;display:block;width:min(560px,calc(100vw - 32px));min-width:0;max-width:calc(100vw - 32px);height:auto;max-height:calc(100dvh - 48px);overflow:auto;padding:24px;background:#15221f;color:#ecece1;border:1px solid #67766b;border-radius:4px;writing-mode:horizontal-tb;white-space:normal;box-shadow:0 12px 40px #0009}#dormIssue h2{font-size:22px;line-height:1.4;margin:0 0 12px;letter-spacing:0;writing-mode:horizontal-tb;width:auto}#dormIssue p{font-size:14px;line-height:1.7;margin:0 0 12px}#dormIssue pre{font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0 18px;color:#c8d2cc}#dormIssue .dorm-issue-actions{display:flex;gap:10px;flex-wrap:wrap}
