:root{--ink:#e9dcc0;--dim:#a89670;--gold:#d9b45a;--ember:#ff9a48;--moon:#8fa8ff;--panel:#0c0908db;--serif:"Cormorant Garamond", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, "Times New Roman", serif}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--serif);background:#000;margin:0;overflow:hidden}#app{position:fixed;inset:0}canvas#view{outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.layer{pointer-events:none;position:absolute;inset:0}.hidden{display:none!important}#crosshair{background:#fff0d28c;border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;transition:all .15s;position:absolute;top:50%;left:50%;box-shadow:0 0 6px #ffbe6e80}#crosshair.on{background:0 0;border:1.5px solid #ffd696e6;width:10px;height:10px;margin:-5px 0 0 -5px;box-shadow:0 0 10px #ffaa5099}#hint{letter-spacing:.06em;color:var(--ink);text-shadow:0 2px 10px #000,0 0 3px #000;opacity:0;white-space:nowrap;font-size:21px;transition:opacity .18s;position:absolute;top:calc(50% + 46px);left:50%;transform:translate(-50%)}#hint.on{opacity:1}#hint kbd{min-width:26px;font:600 17px var(--serif);text-align:center;background:#00000073;border:1px solid #e9dcc0b3;border-radius:4px;margin-right:8px;padding:1px 8px 2px;display:inline-block}#notice{text-align:center;text-shadow:0 2px 14px #000,0 0 4px #000;opacity:0;max-width:min(760px,86vw);font-size:24px;font-style:italic;line-height:1.35;transition:opacity .5s;position:absolute;top:auto;bottom:15%;left:50%;transform:translate(-50%)}#notice.on{opacity:1}#roomName{letter-spacing:.32em;text-transform:uppercase;color:var(--ink);text-shadow:0 2px 20px #000;opacity:0;font-size:30px;transition:opacity 1.4s;position:absolute;bottom:5%;left:50%;transform:translate(-50%)}#roomName.on{opacity:.9}#chime{opacity:0;background:radial-gradient(#0000008c,#0000 70%);flex-direction:column;justify-content:flex-start;align-items:center;padding-top:12vh;transition:opacity 1.2s;display:flex;position:absolute;inset:0}#chime.on{opacity:1}#chime .t{letter-spacing:.22em;color:#f3e6c4;text-shadow:0 0 40px #ffaa4699;font-size:78px}#chime .s{color:var(--dim);text-align:center;max-width:70vw;margin-top:10px;font-size:26px;font-style:italic}#fade{opacity:0;pointer-events:none;background:#000;position:absolute;inset:0}#vignetteEcho{opacity:0;transition:opacity .4s;position:absolute;inset:0;box-shadow:inset 0 0 160px 30px #6eaaff4d}#vignetteEcho.on{opacity:1;animation:1.6s infinite pulse}@keyframes pulse{50%{box-shadow:inset 0 0 220px 60px #6eaaffb3}}#echoHud{letter-spacing:.2em;color:#b9d3ff;text-shadow:0 0 12px #78aaffcc;font-size:22px;position:absolute;top:8%;left:50%;transform:translate(-50%)}#mirrorHud{color:var(--dim);text-shadow:0 1px 6px #000;font-size:16px;position:absolute;bottom:22px;right:26px}#debug{color:#9f9;white-space:pre;background:#0000008c;max-width:46vw;padding:8px 10px;font:12px/1.35 ui-monospace,Menlo,Consolas,monospace;position:absolute;top:10px;left:10px}#clockTag{letter-spacing:.18em;color:#e9dcc08c;text-shadow:0 1px 8px #000;font-size:20px;position:absolute;top:18px;right:22px}.screen{pointer-events:auto;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.screen.dim{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:radial-gradient(#0403058c,#020103e6)}.menu{text-align:center}.title-name{letter-spacing:.1em;color:#f0e2bf;text-shadow:0 0 50px #ff963c59,0 4px 30px #000;margin:0 0 6px;font-size:clamp(46px,8.4vw,118px);font-weight:500;line-height:1}.title-sub{letter-spacing:.28em;color:#cdbb94;text-shadow:0 2px 12px #000;text-transform:lowercase;margin-bottom:52px;font-size:clamp(16px,1.8vw,24px);font-style:italic}.btn{white-space:nowrap;width:min(340px,78vw);font:500 25px var(--serif);letter-spacing:.14em;color:var(--ink);cursor:pointer;text-transform:uppercase;background:#0a080859;border:1px solid #d9b45a59;border-radius:2px;margin:10px auto;padding:12px 20px 13px;transition:all .18s;display:block}.btn:hover,.btn:focus-visible{color:#fff2d0;letter-spacing:.18em;background:#3c1e0a8c;border-color:#ffbe64f2;outline:none;box-shadow:0 0 26px #ff963c40}.btn.small{width:auto;padding:8px 22px;font-size:18px;display:inline-block}.panel{background:var(--panel);border:1px solid #d9b45a59;max-width:min(720px,92vw);max-height:88vh;padding:32px 44px;overflow:auto;box-shadow:0 0 80px #000000e6}.panel h2{letter-spacing:.2em;text-transform:uppercase;text-align:center;color:var(--gold);margin:0 0 20px;font-size:30px;font-weight:500}.row{justify-content:space-between;align-items:center;gap:22px;margin:16px 0;font-size:22px;display:flex}.row label{text-align:left;min-width:190px}.row input[type=range]{accent-color:var(--gold);flex:1;height:6px}.row .val{text-align:right;min-width:48px;color:var(--dim);font-variant-numeric:tabular-nums}.row select{color:var(--ink);font:20px var(--serif);background:#120d0a;border:1px solid #d9b45a66;padding:4px 8px}.footer-note{color:var(--dim);letter-spacing:.08em;margin-top:30px;font-size:15px}.controls{color:var(--dim);text-align:left;grid-template-columns:auto 1fr;gap:6px 22px;margin-top:22px;font-size:19px;display:grid}.controls b{color:var(--ink);text-align:right;font-weight:600}.credits p{margin:8px 0;font-size:19px;line-height:1.4}.credits h3{color:var(--gold);letter-spacing:.16em;text-transform:uppercase;margin:18px 0 4px;font-weight:500}.paper{color:#2b1e12;background:radial-gradient(at 30% 20%,#dfcd9e,#c9b382 65%,#b39c68);width:min(560px,90vw);padding:40px 48px 44px;font-family:Palatino Linotype,Palatino,Georgia,serif;position:relative;transform:rotate(-.6deg);box-shadow:0 30px 90px #000000e6,inset 0 0 70px #5a3c1480}.paper h3{letter-spacing:.04em;margin:0 0 16px;font-size:26px;font-weight:600}.paper p{white-space:pre-line;margin:0;font-size:21px;font-style:italic;line-height:1.5}.paper .close{letter-spacing:.12em;color:#6b5636;text-align:right;margin-top:24px;font-size:15px}.journal{width:min(900px,94vw);max-height:none;overflow:visible}.jmore{text-align:center;letter-spacing:.12em;color:var(--ember);margin-top:4px;font-size:14px}.jbody{scrollbar-width:thin;scrollbar-color:#d9b45a #1a1410;max-height:52vh;padding-right:8px;overflow-y:auto;-webkit-mask-image:linear-gradient(#000 90%,#0000);mask-image:linear-gradient(#000 90%,#0000)}@media (height<=800px){.jhint{display:none}.journal h2{margin-bottom:6px}.journal .tabs{margin-bottom:8px}.doorrow{gap:8px;margin:4px 0 8px}.doorrow .lbl{min-width:170px;font-size:17px}.sig{width:64px;font-size:10px}.sig img{width:34px;height:34px}.entry{margin-bottom:10px;padding-bottom:8px}.journal .entry p{font-size:15px;line-height:1.3}.journal .entry h4{margin-bottom:2px;font-size:17px}.journal .empty{margin:2px 0 4px;font-size:13px}.title-name{font-size:min(8.4vw,12vh)}.title-sub{margin-bottom:4vh}.btn{margin:6px auto;padding:7px 16px 8px;font-size:21px}.panel{padding:18px 28px}.panel h2{margin-bottom:10px;font-size:24px}.jbody{max-height:calc(100vh - 235px)}.journal.panel{padding:14px 24px}}.journal .tabs{justify-content:center;gap:8px;margin-bottom:20px;display:flex}.tab{font:500 18px var(--serif);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:6px 18px}.tab.on{color:var(--ink);border-color:var(--gold)}.entry{border-bottom:1px solid #d9b45a2e;margin:0 0 22px;padding-bottom:18px}.entry h4{color:var(--gold);margin:0 0 6px;font-size:21px;font-weight:600}.entry p{white-space:pre-line;color:#d9ccb0;margin:0;font-size:19px;font-style:italic;line-height:1.45}.doorrow{flex-wrap:wrap;align-items:center;gap:14px;margin:10px 0 16px;display:flex}.doorrow .lbl{min-width:250px;font-size:20px}.sigs{align-items:center;gap:8px;display:flex}.sig{text-align:center;letter-spacing:.06em;width:78px;color:var(--dim);text-transform:uppercase;font-size:11px;line-height:1.15}.sig img{background:#100c09;border:1px solid #d9b45a4d;border-radius:50%;width:46px;height:46px;margin:0 auto 2px;padding:3px;display:block}.sig.now img{border-color:var(--ember);box-shadow:0 0 12px #ff963cb3}.empty{color:var(--dim);font-style:italic}#ending{text-align:center;opacity:0;pointer-events:auto;background:linear-gradient(#0000 35%,#00000059 55%,#000000eb);flex-direction:column;justify-content:flex-end;padding-bottom:7vh;transition:opacity 2.5s,background 3s;overflow-y:auto}#ending.on{opacity:1}#ending.black{background:#000000db;justify-content:center;padding-bottom:0}#ending .line{text-shadow:0 2px 14px #000,0 0 4px #000;opacity:0;color:#e9dcc0;max-width:760px;margin:12px 24px;font-size:clamp(22px,2.8vw,34px);font-style:italic;line-height:1.5;transition:opacity 2.5s}#ending .line.on{opacity:1}#ending .btn{width:auto;min-width:0;padding:12px 34px 13px;display:inline-block}#ending .big{white-space:nowrap;letter-spacing:.14em;color:#f0e2bf;text-shadow:0 0 40px #ffaa4666;font-size:clamp(32px,5vw,72px);font-style:normal}#loading{letter-spacing:.3em;text-transform:uppercase;color:var(--dim);background:#050305;flex-direction:column;font-size:22px}#loading .bar{background:#d9b45a33;width:220px;height:2px;margin-top:22px;overflow:hidden}#loading .bar i{background:var(--gold);width:40%;height:100%;animation:1.2s ease-in-out infinite slide;display:block}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}@media (width<=700px){.panel{padding:22px 20px}.row label{min-width:110px;font-size:18px}}@media (height<=600px){.jbody{max-height:calc(100vh - 215px);-webkit-mask-image:none;mask-image:none}.journal .tabs{margin-bottom:4px}}
