:root{--paper:#f3ebdd;--paper-2:#ebe2d1;--blue:#344a80;--coral:#ee6852;--sun:#ffd428;--teal:#008c8a;--ink:#262320;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--paper);color:var(--blue);font-family:var(--mono);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit;color:inherit}::selection{background:var(--sun)}.stage{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:-webkit-grab;cursor:grab;outline:none}.stage.drag{cursor:-webkit-grabbing;cursor:grabbing}.stage.hover{cursor:pointer}.title{position:fixed;left:20px;top:16px;pointer-events:none;z-index:3}.title h1{margin:0;font-size:13px;font-weight:500;letter-spacing:.02em}.title p{margin:2px 0 0;opacity:.7}.corner{position:fixed;right:20px;top:16px;z-index:3;opacity:.7}.corner a:hover{opacity:1;text-decoration:underline}.tip{position:fixed;z-index:4;pointer-events:none;background:var(--paper);border:1.5px solid var(--blue);padding:8px 11px;box-shadow:3px 3px 0 var(--blue);max-width:240px}.tip b{font-weight:500}.tip small{display:block;opacity:.7}.veil{position:fixed;inset:0;z-index:10;background:rgba(38,35,32,.28);display:grid;place-items:center;padding:16px}.door{background:var(--paper);border:1.5px solid var(--blue);box-shadow:5px 5px 0 var(--blue);width:100%;max-width:380px;padding:20px}.door h2{margin:0 0 2px;font-size:15px;font-weight:500}.door .blurb{margin:0 0 16px;opacity:.7}.door label{display:block;margin:12px 0 6px;opacity:.8}.door input[type=text]{width:100%;padding:8px 10px;background:var(--paper-2);border:1.5px solid var(--blue);outline:none}.door input[type=text]:focus{box-shadow:2px 2px 0 var(--blue)}.avatars{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:6px;gap:6px}.avatars button{background:var(--paper-2);border:1.5px solid transparent;padding:4px 0 0;cursor:pointer;display:grid;place-items:center}.avatars button.on,.avatars button:hover{border-color:var(--blue)}.avatars button.on{background:var(--sun);box-shadow:2px 2px 0 var(--blue)}.avatars canvas{display:block}.door .go{margin-top:16px;width:100%;padding:9px 12px;background:var(--blue);color:var(--paper);border:1.5px solid var(--blue);cursor:pointer}.door .go:hover{background:var(--coral);border-color:var(--coral)}.door .go:disabled{opacity:.5;cursor:default}.door .x{float:right;background:none;border:0;cursor:pointer;opacity:.6;padding:0 0 0 8px}.door .x:hover{opacity:1}.door .who{margin:8px 0 0;opacity:.7}.room{display:grid;grid-template-columns:minmax(0,1fr) 360px;height:100dvh}.room-scene{position:relative;min-width:0;overflow:hidden}.room-scene canvas{display:block;width:100%;height:100%}.room-scene .title{position:absolute}.room-scene .back{position:absolute;left:20px;bottom:16px;z-index:3;opacity:.7}.room-scene .back:hover{opacity:1;text-decoration:underline}.chat{display:flex;flex-direction:column;border-left:1.5px solid var(--blue);background:var(--paper-2);min-height:0}.chat header{padding:14px 16px 10px;border-bottom:1.5px solid var(--blue)}.chat header h2{margin:0;font-size:13px;font-weight:500}.here{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px;opacity:.8}.here span.me{color:var(--coral)}.log{flex:1 1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px;min-height:0}.msg{display:grid;grid-template-columns:28px 1fr;grid-gap:8px;gap:8px;align-items:start}.msg canvas{display:block}.msg .n{opacity:.7;margin-right:6px}.msg.me .n{color:var(--coral);opacity:1}.msg .t{word-break:break-word;white-space:pre-wrap}.msg.sys{grid-template-columns:1fr;opacity:.55;font-style:italic}.say{display:flex;border-top:1.5px solid var(--blue)}.say input{flex:1 1;min-width:0;padding:12px 14px;background:var(--paper);border:0;outline:none}.say button{padding:0 16px;background:var(--blue);color:var(--paper);border:0;cursor:pointer}.say button:hover{background:var(--coral)}.say button:disabled{opacity:.5;cursor:default}@media (max-width:760px){.room{grid-template-columns:1fr;grid-template-rows:38vh minmax(0,1fr)}.chat{border-left:0;border-top:1.5px solid var(--blue)}.title{left:16px}.corner{right:16px}.room-scene .back{left:16px}}.floors{position:fixed;left:20px;bottom:20px;z-index:3;display:flex;flex-direction:column;gap:6px;width:168px}.floors button{display:grid;grid-template-columns:22px 1fr;grid-template-rows:auto auto;grid-column-gap:8px;column-gap:8px;align-items:center;text-align:left;padding:7px 10px;background:var(--paper);border:1.5px solid var(--blue);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.floors button b{grid-row:1/3;font-weight:500;font-size:16px;line-height:1}.floors button span{line-height:1.2}.floors button small{opacity:.65;line-height:1.2}.floors button:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:2px 2px 0 var(--blue)}.floors button.on{background:var(--sun);box-shadow:3px 3px 0 var(--blue)}.floors button:disabled{cursor:default}.floors p{margin:6px 0 0;opacity:.65;line-height:1.35}.floors.turning p{opacity:.35}@media (max-width:760px){.floors{left:16px;right:16px;bottom:16px;width:auto;flex-direction:row;gap:6px;flex-wrap:wrap}.floors button{flex:1 1;grid-template-columns:18px 1fr;padding:6px 8px}.floors button small,.floors p{display:none}}.stage.outside{cursor:default}.stage.outside.hover{cursor:pointer}.floors button.house{margin-top:4px;opacity:.85}.floors button.house.on{opacity:1}.case-btn{background:var(--sun);border:1.5px solid var(--blue);box-shadow:2px 2px 0 var(--blue);padding:3px 9px;cursor:pointer;white-space:nowrap}.case-btn:hover{background:var(--coral);color:var(--paper)}.corner{display:flex;align-items:center;gap:12px;opacity:1}.corner>span{opacity:.7}.pin-dot{display:inline-block;width:8px;height:8px;margin-left:6px;border-radius:50%;background:var(--coral);box-shadow:0 0 0 1.5px var(--blue);vertical-align:1px}.room-scene canvas.glint{cursor:pointer}.kicker{margin:0 0 2px;color:var(--coral)}.link{background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px;opacity:.75}.link:hover{opacity:1;color:var(--coral)}.doornote{position:fixed;right:20px;bottom:20px;z-index:4;width:340px;background:var(--paper);border:1.5px solid var(--blue);box-shadow:5px 5px 0 var(--blue);padding:16px 18px;transform:rotate(-1deg)}.doornote h2{margin:0 0 6px;font-size:15px;font-weight:500}.doornote p{margin:0 0 12px;line-height:1.45}.doornote .row{display:flex;align-items:center;gap:14px}.casefile .go,.doornote .go{padding:7px 14px;background:var(--blue);color:var(--paper);border:1.5px solid var(--blue);cursor:pointer}.casefile .go:hover,.doornote .go:hover{background:var(--coral);border-color:var(--coral)}.casefile{background:var(--paper);border:1.5px solid var(--blue);box-shadow:5px 5px 0 var(--blue);width:100%;max-width:460px;max-height:calc(100dvh - 32px);overflow-y:auto;padding:20px}.casefile h2{margin:0 0 6px;font-size:15px;font-weight:500}.casefile .premise{margin:0 0 14px;opacity:.8}.casefile .x{float:right;background:none;border:0;cursor:pointer;opacity:.6;padding:0 0 0 8px}.casefile .x:hover{opacity:1}.casefile section{border-top:1.5px dashed rgba(52,74,128,.35);padding:12px 0 2px}.casefile h3{margin:0 0 6px;font-size:13px;font-weight:500;color:var(--coral)}.casefile section p{margin:0 0 8px}.casefile .hint{background:var(--sun);display:inline;padding:1px 4px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.casefile ul{list-style:none;padding:0;display:flex;flex-direction:column;gap:8px;margin:0 0 8px}.casefile .clues b{display:block;font-weight:500}.casefile .clues span{opacity:.8}.casefile .who b{font-weight:500;margin-right:6px}.casefile .reset{margin:10px 0 0;padding-top:10px;border-top:1.5px dashed rgba(52,74,128,.35);opacity:.8}.here button.me{background:none;border:0;padding:0;color:var(--coral);cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-underline-offset:3px}.here button.me:hover{-webkit-text-decoration-style:solid;text-decoration-style:solid}.msg.story{margin-left:-8px;padding-left:6px;border-left:2px solid var(--sun)}.msg.story.me{border-left-color:var(--coral)}.msg.card{display:flex;flex-direction:column;gap:2px;grid-template-columns:none;background:var(--paper);border:1.5px solid var(--blue);box-shadow:3px 3px 0 var(--blue);padding:8px 10px;margin:4px 3px 6px 0}.msg.card .k{color:var(--coral)}.msg.card b{font-weight:500}.msg.card span:not(.k){opacity:.85}@media (max-width:760px){.corner .case-btn{position:fixed;right:16px;bottom:116px}.doornote{left:16px;right:16px;bottom:auto;top:76px;width:auto;transform:none}.casefile{padding:16px}}.clock{display:inline-flex;align-items:baseline;gap:8px;white-space:nowrap}.clock b{font-weight:500;font-size:15px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.clock i{font-style:normal;opacity:.65}.clock.late b,.clock.late i{color:var(--coral);opacity:1}.chat header .bar-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.chat .here{margin-top:8px;gap:2px 12px}.chat .here b{font-weight:500}.chat .accusing{margin:8px 0 0;padding:4px 8px;background:var(--sun);border:1.5px solid var(--blue)}.msg.narr{grid-template-columns:1fr;opacity:.9;padding:2px 0}.msg .t,.msg.narr{font-family:Georgia,Iowan Old Style,Times New Roman,serif;font-size:14.5px;line-height:1.5}.msg .n{display:block;margin:0;font-size:12px}.msg.me .t{font-family:var(--mono);font-size:13px}.msg.me{background:var(--paper);margin:6px -6px 0;padding:5px 6px;border-left:2px solid var(--coral)}.msg.card.clue{background:#fff6cf}.msg.card.clue.testimony{background:var(--paper);border-style:dashed}.msg.card em{font-style:normal;color:var(--coral);margin-top:2px}.msg.card.act{background:var(--blue);color:var(--paper);box-shadow:3px 3px 0 var(--coral)}.msg.card.act .k{color:var(--sun)}.msg.card.act span:not(.k){opacity:.95;font-family:Georgia,Iowan Old Style,serif;font-size:14px}.say input::placeholder{opacity:.45}.say button{font-size:16px}.casefile .prose{margin:0 0 10px;font-family:Georgia,Iowan Old Style,Times New Roman,serif;font-size:15px;line-height:1.55}.casefile.ending,.casefile.intro{max-width:540px}.casefile .how{margin:12px 0 14px;padding:10px 12px;background:var(--paper-2);border-left:2px solid var(--coral);gap:6px}.casefile p.how{margin:0 0 6px;padding:0;background:none;border:0;opacity:.85}.casefile .row{display:flex;align-items:center;gap:16px;margin-top:4px}.casefile .go:disabled{opacity:.5;cursor:default}.casefile .empty{opacity:.6}.casefile .clues em{display:block;font-style:normal;color:var(--coral)}.casefile .met li{display:flex;align-items:center;gap:8px}.casefile .met b{font-weight:500;margin-right:4px}.casefile .met li.gone{opacity:.5;text-decoration:line-through}.ending-veil{background:rgba(38,35,32,.55)}.casefile.ending.won{box-shadow:5px 5px 0 var(--teal)}.casefile.ending.lost{box-shadow:5px 5px 0 var(--coral)}.casefile .reveal{border-left:2px solid var(--coral);padding-left:10px}.casefile .stats{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px 14px;gap:4px 14px;margin:14px 0;padding:10px 0;border-top:1.5px dashed rgba(52,74,128,.35);border-bottom:1.5px dashed rgba(52,74,128,.35);opacity:.85}.casefile .stats b{font-weight:500;font-size:15px}.ending-tab{position:fixed;right:20px;bottom:20px;z-index:6}.chai-btn{margin-top:14px;width:100%;padding:8px 12px;background:var(--sun);border:1.5px solid var(--blue);box-shadow:2px 2px 0 var(--blue);cursor:pointer}.chai-btn:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--blue)}.chai{margin-top:14px;padding:12px;background:var(--paper-2);border:1.5px solid var(--blue);display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.chai .note{margin:0;opacity:.8}.chai img{display:block;background:#fff;padding:6px;border:1.5px solid var(--blue)}.chai small{opacity:.6}.chai .switch{display:inline-flex;border:1.5px solid var(--blue)}.chai .switch button{padding:3px 14px;background:var(--paper);border:0;cursor:pointer}.chai .switch button.on{background:var(--blue);color:var(--paper)}.hud-chip{position:fixed;left:20px;top:64px;z-index:5;padding:2px 8px;background:var(--ink);color:var(--paper);border:0;font-size:11px;opacity:.75;cursor:pointer;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hud-chip:hover{opacity:1}.room-scene .hud,.room-scene .hud-chip{position:absolute}.hud{position:fixed;left:20px;top:64px;z-index:5;width:380px;max-width:calc(100% - 40px);max-height:calc(100% - 120px);overflow-y:auto;background:var(--ink);color:#e9e2d2;padding:10px 12px;font-size:11.5px;line-height:1.45;box-shadow:4px 4px 0 var(--coral)}.hud footer,.hud header{display:flex;justify-content:space-between;align-items:center;gap:10px}.hud header b{font-weight:500;color:var(--sun)}.hud footer{margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,.15);opacity:.85;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hud .link{color:inherit}.hud .dim{opacity:.6;margin:6px 0 0}.hud .in{margin:6px 0;color:#fff;word-break:break-word}.hud dl{display:grid;grid-template-columns:96px 1fr;grid-gap:2px 8px;gap:2px 8px;margin:0}.hud dt{opacity:.55}.hud dd{margin:0;word-break:break-word;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hud dd.jev{color:#7fe0c8}.hud dd.fallback{color:var(--sun)}.hud dd.wrap{display:flex;flex-wrap:wrap;gap:2px 8px}.hud .hit{color:#7fe0c8}.hud .miss{opacity:.4}.hud .note{color:var(--sun)}.hud .bar{display:inline-block;width:44px;height:6px;margin-right:6px;background:rgba(255,255,255,.14);vertical-align:1px}.hud .bar i{display:block;height:100%;background:#7fe0c8}@media (max-width:760px){.hud,.hud-chip{left:16px;top:84px}.room-scene .hud-chip{top:auto;bottom:40px}.room-scene .hud{top:8px;max-height:calc(100% - 16px)}.casefile .stats{grid-template-columns:1fr}.corner{flex-direction:column;align-items:flex-end;gap:6px}.corner .case-btn{position:static}}.log>*{flex:0 0 auto;min-height:min-content;max-height:none;overflow:visible}.msg,.msg .t,.msg b,.msg em,.msg span,.msg>div{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;-webkit-line-clamp:unset;line-clamp:unset}.msg>div{min-width:0}.casefile .clues b,.casefile .clues span{overflow-wrap:anywhere}.msg.sys.pending{display:flex;align-items:center;gap:8px;opacity:.85;font-style:normal;color:var(--coral)}.spin{display:inline-block;width:10px;height:10px;border:1.5px solid;border-right:1.5px solid transparent;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.dots:after{content:"";animation:dots 1.2s steps(4) infinite}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.say.busy input{opacity:.6}.say.busy button{opacity:1;background:var(--coral)}.dir-wrap{position:fixed;right:20px;bottom:20px;z-index:3;width:300px;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.dir-toggle{background:var(--paper);border:1.5px solid var(--blue);padding:3px 9px;cursor:pointer}.dir-toggle:hover{background:var(--sun)}.directory{width:100%;background:var(--paper);border:1.5px solid var(--blue);box-shadow:3px 3px 0 var(--blue);padding:10px 12px 8px}.directory section+section{margin-top:8px;padding-top:8px;border-top:1.5px dashed rgba(52,74,128,.3)}.directory h3{margin:0 0 3px;font-size:12px;font-weight:500;color:var(--coral)}.directory h3 button{background:none;border:0;padding:0;color:inherit;cursor:pointer}.directory h3 button:hover{text-decoration:underline}.directory section.open h3{color:var(--blue)}.directory section.open h3:after{content:" · open";opacity:.6}.directory ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:1px 0;line-height:1.5}.directory li:not(:last-child):after{content:"·";margin:0 6px;opacity:.4}.directory li button{background:none;border:0;padding:0;cursor:pointer;opacity:.85}.directory li button:focus-visible,.directory li button:hover{opacity:1;background:var(--sun);outline:none}.directory li button.seen{-webkit-text-decoration:underline dotted var(--teal);text-decoration:underline dotted var(--teal);text-underline-offset:3px}.directory li button.here{background:var(--coral);color:var(--paper);padding:0 4px;opacity:1}.directory .key{margin:8px 0 0;font-size:11px;opacity:.6}.directory .dot{display:inline-block;width:14px;height:0;margin:0 4px 3px 0;border-bottom:2px dotted var(--teal);vertical-align:middle}.directory .dot.here{height:8px;width:8px;border:0;background:var(--coral);margin-left:10px}.chat header .btns{display:inline-flex;gap:8px}.case-btn.plain,.chat header .directory{background:var(--paper);box-shadow:none}.chat header .directory{margin-top:10px}@media (max-width:760px){.dir-wrap{right:16px;left:16px;bottom:128px;width:auto}.dir-wrap:not(.open){left:auto}.directory{max-height:46dvh;overflow-y:auto}}.chat header .bar-row{flex-wrap:wrap;row-gap:6px}.chat header .btns{margin-left:auto;flex-shrink:0}.chat header .case-btn{padding:3px 8px}.directory li{display:inline-flex;align-items:baseline;white-space:nowrap}.directory li button.here{line-height:1.35}.orbit-stage{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:100;cursor:none}html[data-orbit] body>:not(.orbit-stage){display:none!important}html[data-orbit],html[data-orbit] body{overflow:hidden;cursor:none}.chai .amounts{display:inline-flex;gap:6px}.chai .amounts button{padding:2px 10px;background:var(--paper);border:1.5px solid var(--blue);cursor:pointer}.chai .amounts button.on{background:var(--sun);box-shadow:2px 2px 0 var(--blue)}.chai .upi-go{display:block;width:100%;padding:9px 12px;background:var(--blue);color:var(--paper);border:1.5px solid var(--blue);text-align:center}