:root{--bg: #0b0d10;--fg: #d8d4c8;--dim: #668899;--gold: #d4a853;--glow: #ffd98a}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}@font-face{font-family:Atkinson Hyperlegible;src:url(/fonts/AtkinsonHyperlegible-Regular-43b63ccfb94f25a68c23a34e556753d1.ttf?vsn=d) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Atkinson Hyperlegible;src:url(/fonts/AtkinsonHyperlegible-Bold-4de508efffb2d7043a48713a238812db.ttf?vsn=d) format("truetype");font-weight:700;font-display:swap}@font-face{font-family:OpenDyslexic;src:url(/fonts/OpenDyslexic-Regular-c8d60dfe32728b96c15dd08841be2597.otf?vsn=d) format("opentype");font-weight:400;font-display:swap}@font-face{font-family:OpenDyslexic;src:url(/fonts/OpenDyslexic-Bold-3fd59234675c2eddab36402c29517885.otf?vsn=d) format("opentype");font-weight:700;font-display:swap}html.font-hyperlegible body,html.font-hyperlegible button,html.font-hyperlegible input,html.font-hyperlegible textarea{font-family:Atkinson Hyperlegible,system-ui,sans-serif}html.font-dyslexic body,html.font-dyslexic button,html.font-dyslexic input,html.font-dyslexic textarea{font-family:OpenDyslexic,system-ui,sans-serif}.terminal,.mono,.clock,.map-title{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}html.contrast{--bg: #000;--fg: #f4f1e8;--dim: #9fb8c8}html.contrast .plate,html.contrast .overlay.photo .photo-frame .scene{filter:contrast(1.25)}.quarks-intro{position:fixed;inset:0;width:100vw;height:100vh}.skip-link{position:fixed;right:1rem;bottom:1rem;color:var(--dim);font-size:.75rem;text-decoration:none}.library{max-width:40rem;margin:0 auto;padding:3rem 1rem}.library h1{color:var(--gold);letter-spacing:.5rem}.library ul{list-style:none;padding:0}.library .shelf{display:grid;gap:1.25rem}.library .shelf li{position:relative;animation:shelf-in .6s ease-out both;animation-delay:calc(var(--i, 0) * .12s)}@keyframes shelf-in{0%{opacity:0;translate:0 12px}}.case-link{display:block;border:1px solid var(--dim);background:#0a0d18;color:var(--fg);text-decoration:none;overflow:hidden;transition:border-color .3s,transform .4s ease-out,box-shadow .4s}.case-link:hover,.case-link:focus-visible{border-color:var(--gold);transform:translateY(-3px);box-shadow:0 12px 30px #0009}.case-link .vignette{position:relative;aspect-ratio:16 / 7;overflow:hidden;background:#05070f}.case-link .vignette .scene{display:block;width:100%;height:100%;filter:saturate(.8) brightness(.8);transform:scale(1.05);transition:transform 1.2s ease-out,filter .6s}.case-link:hover .vignette .scene{filter:saturate(1) brightness(1);transform:scale(1.12) translate(-1.5%)}.case-link .vignette:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(110% 90% at 50% 40%,transparent 45%,rgba(0,0,0,.75) 100%)}.case-link .stamp{position:absolute;right:.7rem;bottom:.6rem;z-index:1;padding:.1rem .45rem;border:1px solid var(--gold);color:var(--gold);font-size:.75rem;letter-spacing:.1rem;background:rgba(5,7,15,.7)}.case-link .resume-tag{position:absolute;left:.7rem;top:.6rem;z-index:1;padding:.1rem .45rem;border:1px solid var(--dim);color:var(--glow);font-size:.75rem;letter-spacing:.1rem;background:rgba(5,7,15,.7)}.shelf li .go{color:var(--gold);font-size:.8rem;letter-spacing:.12rem}.shelf li .start-over{position:absolute;right:1rem;bottom:1rem;padding:.15rem .5rem;background:rgba(5,7,15,.7);border:1px solid var(--dim);border-radius:6px;color:var(--dim);font-size:.8rem;letter-spacing:.12rem;cursor:pointer}.shelf li .start-over:hover{border-color:var(--gold);color:var(--glow)}.case-link .card-text{display:grid;gap:.25rem;padding:.9rem 1rem 1rem}.case-link strong{display:block;color:var(--glow);font-size:1.1rem;letter-spacing:.08rem}.case-link span{color:var(--fg);font-size:.85rem}.case-link small{color:var(--dim);font-size:.75rem;letter-spacing:.05rem}.terminal{flex:1;overflow-y:auto}.line{margin:0 0 .25rem;white-space:pre-wrap}.prompt{display:flex;gap:.5rem;border-top:1px solid var(--dim);padding-top:.75rem}.prompt input{flex:1;background:transparent;border:0;outline:0;color:var(--glow);font:inherit}.empty{color:var(--dim);font-size:.8rem}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.4;cursor:default}.game{position:fixed;inset:0;overflow:hidden;background:#05070f}.world{position:absolute;inset:0;overflow:hidden}.plate{position:absolute;left:50%;top:50%;width:max(100vw,177.78vh);height:max(100vh,56.25vw);transform:translate(calc(-50% + var(--px, 0%)),calc(-50% + var(--py, 0%))) scale(1.04);transition:filter .5s,transform .9s ease-out}.wipe{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(90deg,transparent 0%,#05070f 35%,#05070f 65%,transparent 100%);translate:140% 0;animation:wipe .9s ease-in-out both}@keyframes wipe{0%{translate:-140% 0}to{translate:140% 0}}.plate .scene{position:absolute;inset:0;width:100%;height:100%}.lightning{position:absolute;inset:0;z-index:2;pointer-events:none;background:#dfe8ff;opacity:0}.lightning.strike{animation:preamble-lightning .7s ease-out both}.tools .full[aria-pressed=true]{border-color:var(--gold)}.tools .full[aria-pressed=true] span{color:var(--gold)}.game .scene{transition:filter 1.2s ease}.game[data-beats="1"] .scene{filter:brightness(.9)}.game[data-beats="2"] .scene{filter:brightness(.8) saturate(.85)}.game:not([data-beats="0"]):not([data-beats="1"]):not([data-beats="2"]) .scene{filter:brightness(.72) saturate(.75)}.game[data-talking=true] .plate{filter:blur(4px) brightness(.55)}.game[data-talking=true] .hot,.game[data-talking=true] .doors{display:none}.hud{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:flex-start;gap:1rem;padding:.6rem 1rem;background:linear-gradient(rgba(5,7,15,.85),transparent);pointer-events:none}.hud button,.hud a,.hud form,.hud select,.hud input{pointer-events:auto}.where{flex:1;min-width:0}.where small{max-width:70ch}.where strong{display:block;color:var(--gold);letter-spacing:.15rem;text-transform:uppercase}.where small{display:block;color:var(--dim);line-height:1.3;text-wrap:pretty;text-shadow:0 0 2px #06080c,0 0 6px #06080c,0 1px 10px #06080c}.where strong{text-shadow:0 0 2px #06080c,0 0 8px #06080c}.where small.roster{display:block;white-space:nowrap;text-overflow:ellipsis}.clock{color:var(--glow);font-size:1.5rem}.tools{display:flex;align-items:flex-start;gap:.35rem}.tools>button,.tools>a.settings{position:relative;display:flex;flex-direction:column;align-items:center;gap:.1rem;min-width:3.1rem;padding:.3rem .45rem .25rem;background:rgba(11,16,32,.7);border:1px solid #2b3556;border-radius:8px;color:var(--ink);font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;transition:border-color .15s,transform .15s}.tools>button i,.tools>a.settings i{font-size:1.35rem;line-height:1;font-style:normal}.tools>button span,.tools>a.settings span{color:var(--dim)}.tools>button:hover:not(:disabled),.tools>a.settings:hover{border-color:var(--gold);transform:translateY(-1px)}.tools>button:hover:not(:disabled) span,.tools>a.settings:hover span{color:var(--gold)}.tools>button b{position:absolute;top:-.35rem;right:-.35rem;margin:0}.tools .waits{display:flex;align-items:center;gap:.2rem;margin-right:.3rem;padding:.2rem .35rem;background:rgba(11,16,32,.7);border:1px solid #2b3556;border-radius:8px;pointer-events:auto}.tools .waits i{font-size:1.1rem;line-height:1;font-style:normal}.tools .waits .wait{padding:.2rem .4rem;background:none;border:1px solid transparent;border-radius:6px;color:var(--dim);font-size:.72rem}.tools .waits .wait:hover:not(:disabled){border-color:var(--gold);color:var(--gold)}.tools button,.choices button,.card button,.tabs button{padding:.3rem .65rem;background:rgba(11,16,32,.7);border:1px solid #2b3556;border-radius:6px;font-size:.8rem}.tools button:hover:not(:disabled),.choices button:hover:not(:disabled),.card button:hover:not(:disabled){border-color:var(--gold)}.tools b{margin-left:.2rem;padding:0 .35rem;border-radius:8px;background:var(--gold);color:#1a1420;font-size:.7rem}.doors{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.door{padding:.3rem .8rem;background:rgba(11,16,32,.75);border:1px solid var(--gold);border-radius:999px;font-size:.8rem}.chip{padding:.3rem .8rem;background:rgba(11,16,32,.75);border:1px solid var(--dim);border-radius:999px;font-size:.8rem}.door:before{content:"\2192  ";color:var(--gold)}.door:hover:not(:disabled){background:var(--gold);color:#1a1420}.door.locked{border-style:dashed;border-color:var(--dim);color:var(--dim)}.hot{position:absolute;z-index:2;display:grid;place-items:center;padding:0;background:none;border:0;transform:translate(-50%,-50%)}.hot i{width:1.5rem;height:1.5rem;border:2px solid var(--gold);border-radius:50%;background:rgba(242,184,75,.2);box-shadow:0 0 12px #f2b84b99;animation:ping 1.8s ease-in-out infinite}.hot span{position:absolute;top:120%;padding:.1rem .4rem;background:rgba(11,16,32,.9);border:1px solid #2b3556;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s}.hot:hover span,.hot:focus-visible span{opacity:1}.hot.done i{border-color:var(--dim);background:rgba(0,0,0,.4);box-shadow:none;animation:none}.fig{position:absolute;bottom:-2%;z-index:2;display:flex;flex-direction:column;align-items:center;width:15%;padding:0;background:none;border:0;transform:translate(-50%);transition:translate .2s;animation:walk-in .9s ease-out}.fig:hover:not(:disabled){translate:0 -1.5%}.fig .lie-dot{position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:#c23b3b}.lies{font-size:.8rem;letter-spacing:.06em;color:var(--dim)}.fig.talking{opacity:0;pointer-events:none}.fig .bark{position:absolute;top:auto;bottom:calc(100% + .4rem);left:50%;z-index:3;width:max-content;max-width:16rem;padding:.25rem .6rem;background:#f4efe6;border:0;border-radius:8px;white-space:normal;opacity:1;box-shadow:0 4px 12px #00000073;color:#1a1420;font-size:.8rem;line-height:1.3;text-align:center;transform:translate(-50%);animation:bark 4s ease forwards}@keyframes bark{0%,90%{opacity:1}to{opacity:0}}.fig .portrait{width:100%;height:auto;filter:drop-shadow(0 4px 10px rgba(0,0,0,.7));mask-image:linear-gradient(#000 78%,transparent);-webkit-mask-image:linear-gradient(#000 78%,transparent);transform-origin:50% 100%;animation:breathe 4.2s ease-in-out infinite;animation-delay:var(--idle, 0s)}@keyframes breathe{50%{transform:scaleY(1.012) translateY(-.4%)}}.eyes{transform-box:fill-box;transform-origin:center;animation:eyelid 5.2s infinite;animation-delay:var(--idle, 0s)}@keyframes eyelid{0%,93%,to{transform:scaleY(1)}96%{transform:scaleY(.1)}}.mouth{transform-box:fill-box;transform-origin:50% 0}.portrait .torso{transform-box:fill-box;transform-origin:50% 100%;animation:sway 5.6s ease-in-out infinite;animation-delay:var(--idle, 0s)}@keyframes sway{50%{transform:rotate(.6deg) translateY(-.3px)}}.portrait .glint{opacity:0;animation:glint 7s ease-in-out infinite;animation-delay:var(--idle, 0s)}@keyframes glint{0%,88%,to{opacity:0}92%{opacity:.9}}.talk.typing .hero-wrap .mouth{animation:jaw .17s ease-in-out infinite alternate}@keyframes jaw{to{transform:scaleY(2.4)}}.fig span{position:absolute;top:2%;padding:.1rem .5rem;background:rgba(11,16,32,.85);border:1px solid #2b3556;border-radius:6px;font-size:.75rem;white-space:nowrap;opacity:0;transition:opacity .15s}.fig:hover span,.fig:focus-visible span{opacity:1}.fig .leaving{position:absolute;top:12%;padding:.05rem .4rem;background:rgba(139,47,47,.85);border-radius:6px;font-size:.7rem;font-style:normal;white-space:nowrap}.talk{position:absolute;inset:auto 0 0;z-index:4;display:flex;align-items:flex-end;gap:1.5rem;padding:0 clamp(1rem,4vw,4rem) 1.2rem;background:linear-gradient(transparent,rgba(5,7,15,.85) 40%)}.hero-wrap{flex:none;width:min(48vh,34vw);margin-bottom:-1.2rem}.hero-wrap .portrait{width:100%;height:auto;filter:drop-shadow(0 6px 18px rgba(0,0,0,.8));animation:bob 3s ease-in-out infinite;mask-image:linear-gradient(#000 85%,transparent);-webkit-mask-image:linear-gradient(#000 85%,transparent)}.dialog{flex:1;min-width:0;padding:.9rem 1.1rem;background:rgba(20,27,48,.92);border:1px solid #2b3556;border-radius:10px}.who{display:flex;align-items:baseline;gap:.7rem}.who strong{color:var(--gold)}.who small{color:var(--dim)}.glance{margin:.35rem 0 0;font-style:italic;font-size:.92rem;color:var(--dim)}.leave{margin-left:auto;background:none;border:0;color:var(--dim)}.said{min-height:3.2em;margin:.6rem 0;font-size:1.05rem;line-height:1.5;cursor:pointer}.said.typing:after{content:"\258c";margin-left:.1em;color:var(--gold);animation:blink .8s steps(2,start) infinite}.thinking{min-height:3.2em;margin:.6rem 0;line-height:1.5}.thinking i{display:inline-block;width:8px;height:8px;margin-right:5px;border-radius:50%;background:var(--gold);animation:think 1s ease-in-out infinite}.thinking i:nth-child(2){animation-delay:.2s}.thinking i:nth-child(3){animation-delay:.4s}@keyframes think{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.say input:disabled,.choices button:disabled{opacity:.55}.say input{width:100%;margin-bottom:.5rem;padding:.4rem .7rem;background:rgba(11,16,32,.8);border:1px solid #2b3556;border-radius:6px;color:var(--fg);font:inherit;font-size:.85rem}.choices.show .confront{background:transparent;border:1px solid #8b2f2f;border-radius:6px;color:#ff9b9b;padding:.3rem .65rem}.choices{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem}.choices button{border-color:#4fd1c5;border-radius:999px;color:#4fd1c5}.choices.show button{border-color:#6b8cb8;color:#9db9e0}.accuse{padding:.3rem .8rem;background:transparent;border:1px solid #8b2f2f;border-radius:6px;color:#ff9b9b;font-size:.8rem}.accuse:hover{background:#8b2f2f;color:#fff}.sheet{position:absolute;inset:0;z-index:9;display:grid;align-content:center;justify-items:center;gap:.6rem;padding:1rem;pointer-events:none}.sheet form{pointer-events:auto;display:grid;gap:.6rem;width:min(26rem,calc(100% - 2rem));padding:1rem;background:var(--bg);border:1px solid var(--gold);border-radius:6px}.sheet-row{color:var(--fg);font-size:.85rem;line-height:1.6}.sheet-row select,.sheet-row input[type=time]{background:var(--bg);border:1px solid var(--dim);color:var(--fg);font:inherit;padding:.2rem .4rem}.sheet-actions{display:flex;justify-content:flex-end;gap:.5rem}.sheet-cancel{background:transparent;border:1px solid var(--dim);border-radius:6px;color:var(--dim);font:inherit;font-size:.8rem;padding:.3rem .8rem}.toast{position:absolute;top:6.4rem;left:50%;z-index:6;max-width:min(70ch,90vw);padding:.6rem 1rem;background:#f4efe6;border-radius:10px;box-shadow:0 6px 24px #00000080;color:#1a1420;pointer-events:none;transform:translate(-50%);animation:toast 7s ease forwards}.toast p{margin:.2rem 0}.discovery{position:absolute;top:40%;left:50%;z-index:6;display:flex;flex-direction:column;align-items:center;padding:1rem 1.6rem;background:rgba(11,16,32,.92);border:2px solid var(--gold);border-radius:10px;color:var(--glow);pointer-events:none;animation:discover 3.4s ease-in both}.discovery p{margin:0 0 .3rem;color:var(--dim);font-size:.8rem;text-transform:uppercase}.discovery.lab{border-color:#4fd1c5;border-style:double;color:#9ff3ea;box-shadow:0 0 24px #4fd1c559}.discovery.lab p{color:#4fd1c5}.discovery.lab p:before{content:"\2697  "}#case-button.filed{animation:filed .5s ease-out}@keyframes filed{30%{transform:scale(1.25);background:var(--gold);color:#1a1420}}.overlay{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:rgba(5,7,15,.8)}.mapboard{position:relative;width:min(90vw,160vh);aspect-ratio:16 / 9;background:radial-gradient(circle at 50% 50%,#1b2848,#0b1020);border:2px solid #2b3556;border-radius:10px;animation:pop .25s ease-out;overflow:hidden}.map-art{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.map-art .map-title{font:4.5px monospace;letter-spacing:1px}.scorecard{width:100%;max-width:36rem;display:block;margin:1rem auto 0;border-radius:8px}.card-actions{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.cardpage{min-height:100vh;margin:0;display:grid;place-items:center;align-content:center;gap:.5rem;padding:1.5rem;background:#0b0d10;color:#d8d4c8;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.cardpage .scorecard{max-width:42rem}.cardpage .meta{color:var(--dim);margin:.75rem 0}.cardpage a{color:var(--gold)}.front-page{display:block;width:min(86vw,460px);height:auto;border:1px solid #2b3556;box-shadow:0 18px 50px #0000008c}.front-page .portrait *{animation:none!important}.overlay.ending .card{max-height:94vh;overflow-y:auto}.overlay.photo{padding:1.5rem 1rem}.overlay.photo .photo-frame{position:relative;display:flex;flex-direction:column;gap:.75rem;align-items:center;width:min(1280px,96vw)}.overlay.photo .photo-frame .scene{display:block;width:100%;height:auto;aspect-ratio:16 / 9;background:#05070f;border:1px solid #2b3556;border-radius:6px}.overlay.photo .photo-at{display:flex;gap:.9rem;align-items:center;width:100%}.overlay.photo .photo-at input[type=range]{flex:1;accent-color:var(--gold);cursor:pointer}.overlay.photo .photo-at .clock{min-width:5ch;color:var(--glow);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:1.1rem;font-variant-numeric:tabular-nums;letter-spacing:.15rem}.overlay.photo #save-photo{padding:.4rem 1.1rem;background:#1b2848;border:1px solid var(--gold);border-radius:6px;color:var(--gold);font-size:.85rem;cursor:pointer}.ending .badges{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem;margin:.3rem 0 0;padding:0;list-style:none}.ending .badges li{padding:.15rem .6rem;border:1px solid var(--gold);border-radius:999px;color:var(--gold);font-size:.75rem;letter-spacing:.1rem;background:rgba(5,7,15,.7)}.edges{position:absolute;inset:0;width:100%;height:100%;z-index:1;opacity:.35}.edges line{stroke:#2b3556;stroke-width:2}.pin{position:absolute;display:flex;flex-direction:column;align-items:center;gap:2px;padding:0;background:none;border:0;transform:translate(-50%,-50%);z-index:1}.pin i{width:18px;height:18px;background:rgba(242,184,75,.27);border:2px solid var(--gold);border-radius:50%}.pin span{padding:.1rem .5rem;background:#0b1020;border:1px solid #2b3556;border-radius:6px;font-size:.8rem;white-space:nowrap}.pin small{color:var(--dim);font-size:.7rem}.pin.here{z-index:2}.pin.here i{border-color:#4fd1c5;box-shadow:0 0 14px #4fd1c5;animation:here-pulse 1.8s ease-in-out infinite}.pin.here span{border-color:#4fd1c5;color:#e9fffc}.pin.here .you{color:#9ff3ea;font-size:.68rem;font-weight:700;letter-spacing:.14rem;text-transform:uppercase;text-shadow:0 0 6px #4fd1c5}@keyframes here-pulse{0%,to{box-shadow:0 0 10px #4fd1c5}50%{box-shadow:0 0 22px #4fd1c5,0 0 0 6px #4fd1c52e}}.pin.far{opacity:.55}.pin.far i{border-color:var(--dim)}.pin.locked i{border-style:dashed;border-color:var(--dim)}.pin.exit:hover i{background:var(--gold)}.pin.taped i{border-color:#e8c23a;border-style:solid;background:repeating-linear-gradient(45deg,#e8c23a 0 3px,#111 3px 6px);box-shadow:0 0 10px #e8c23a80}.pin .sealed{padding:0 .35rem;background:#e8c23a;color:#111;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase}.close{position:absolute;top:.5rem;right:.5rem;z-index:2;background:none;border:0;color:var(--dim);font-size:1.2rem}.game.panel-open .talk{right:calc(min(400px,92vw) + 1.6rem)}.game.panel-open .toast{left:calc((100% - min(400px,92vw))/2)}.game.photo-open .hud{opacity:0;pointer-events:none}.timeline{display:flex;flex-direction:column;gap:.6rem}.strip{position:relative;height:3.4rem;border-bottom:2px solid #2b3556}.strip .tick{position:absolute;bottom:2px;transform:translate(-50%);color:var(--dim);font-size:.62rem;white-space:nowrap}.strip .tick i{display:inline-block;width:1px;height:.55rem;margin-right:2px;vertical-align:-1px;background:#3a4560}.strip .peg{display:block;position:absolute;bottom:1.1rem;max-width:11rem;padding:.15rem .4rem;overflow:hidden;transform:translate(-50%);background:rgba(20,27,48,.95);border:1px solid var(--gold);border-radius:4px;font-size:.7rem;text-overflow:ellipsis;white-space:nowrap}.strip .peg.loose{color:var(--dim);background:rgba(11,16,32,.9);border-style:dashed;border-color:var(--dim)}.strip .peg small{color:var(--dim)}.tray{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.tray .tray-item{display:flex;gap:.3rem;align-items:center}.tray .tray-card{padding:.25rem .5rem;background:rgba(20,27,48,.95);border:1px solid #2b3556;border-radius:4px;font-size:.72rem;cursor:grab}.tray form{display:inline-flex;gap:.25rem;align-items:center}.tray input[type=time]{background:#0b1020;border:1px solid #2b3556;border-radius:4px;color:var(--dim);font-size:.72rem}.tray button{background:#1b2848;border:1px solid #2b3556;border-radius:4px;color:var(--dim);font-size:.72rem}.casefile{position:absolute;top:3.4rem;right:.8rem;bottom:.8rem;z-index:7;display:flex;flex-direction:column;width:min(400px,92vw);padding:.8rem;background:rgba(20,27,48,.95);border:1px solid #2b3556;border-radius:10px;animation:slide .25s ease-out}.items li[draggable=true]{cursor:grab}.tabs{display:flex;gap:.25rem;margin:0 1.6rem .6rem 0}.casefile .tabs{display:flex;flex-wrap:wrap;gap:.25rem;margin-right:2.4rem}.casefile .tabs button{flex:0 1 auto;padding:.25rem .2rem;font-size:.72rem;white-space:nowrap}.tabs button{flex:1;font-size:.75rem}.tabs .active{background:var(--gold);border-color:var(--gold);color:#1a1420}.items{margin:0;padding:0;overflow-y:auto;list-style:none;font-size:.85rem}.items li{padding:.5rem 0;border-bottom:1px dashed #2b3556}.items strong{display:block;color:var(--glow)}.items .lab-send,.items .lab-rush{display:block;margin-top:.35rem;padding:.15rem .5rem;background:transparent;border:1px solid var(--dim);border-radius:6px;color:var(--fg);font-size:.75rem;cursor:pointer}.items .lab-send:hover,.items .lab-rush:hover{border-color:var(--gold);color:var(--glow)}.items .lab-rush{border-style:dashed;color:var(--dim)}.items li.hidden,.items li.hidden strong{color:var(--dim);font-style:italic}.items .share{display:block;margin-top:.35rem;padding:.15rem .5rem;background:transparent;border:1px solid var(--dim);border-radius:6px;color:var(--fg);font-size:.75rem;cursor:pointer}.items .share:hover{border-color:var(--gold);color:var(--glow)}.logtab{display:flex;flex:1;flex-direction:column;min-height:0;font-size:.8rem}.logtab .filter{padding-bottom:.5rem;border-bottom:1px solid var(--dim)}.logtab .filter input{width:100%;padding:.35rem .6rem;background:#0b1020;border:1px solid #2b3556;border-radius:6px;color:var(--glow);font:inherit;font-size:.8rem}.line.hit{padding-left:.5rem;border-left:3px solid var(--gold)}.card{display:flex;flex-direction:column;align-items:center;gap:.6rem;max-width:min(60ch,90vw);padding:1.6rem 2rem;background:rgba(20,27,48,.95);border:2px solid var(--gold);border-radius:10px;text-align:center;animation:pop .25s ease-out}.card h2{margin:0;color:var(--gold);letter-spacing:.2rem}.card a{color:var(--dim)}.glow{animation:glow 3s ease-in-out infinite}.blink{animation:blink 1.6s steps(2,start) infinite}.mono{font-family:ui-monospace,Menlo,monospace}.scene-in{animation:scene-in 1.1s ease-out}@keyframes scene-in{0%{opacity:0;scale:1.08;translate:2.5% .5%}}.scene .steam{transform-box:fill-box;transform-origin:50% 100%;animation:steam 3s ease-in-out infinite}@keyframes steam{0%{opacity:.22;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-28px) scale(1.6)}}.scene .shimmer{animation:city-shimmer 5s ease-in-out infinite alternate}.scene .flicker{animation:flicker 4.6s steps(1,end) infinite}.scene .win-flicker{animation:win-flicker 4.6s steps(1,end) infinite}.scene .glow-pulse{animation:glow-pulse 5s ease-in-out infinite}.scene .fog-drift{animation:fog-drift 24s ease-in-out infinite alternate}.scene .rain-fall{animation:rain-fall .7s linear infinite}.scene .dust-mote{animation:dust-mote 9s ease-in-out infinite alternate}@keyframes win-flicker{0%,to{opacity:1}47%{opacity:.82}50%{opacity:.95}83%{opacity:.88}}@keyframes glow-pulse{50%{opacity:.72}}@keyframes fog-drift{to{transform:translate(10px)}}@keyframes rain-fall{to{transform:translate(-2px,6px)}}@keyframes dust-mote{to{transform:translate(2px,-3px)}}@keyframes flicker{0%,to{opacity:.8}43%{opacity:.2}46%{opacity:.7}49%{opacity:.1}52%{opacity:.8}81%{opacity:.3}84%{opacity:.8}}.scene .clouds{animation:clouds 60s linear infinite alternate}@keyframes clouds{to{transform:translate(90px)}}.scene .drone{animation:drone 22s linear infinite}@keyframes drone{to{transform:translate(880px)}}.scene .rain{animation:rain .9s linear infinite}@keyframes rain{to{transform:translateY(320px)}}.scene .twinkle{animation:twinkle 3.6s ease-in-out infinite alternate;animation-delay:calc(var(--i, 0) * .4s)}.scene .twinkle:nth-child(odd){--i: 1}.scene .twinkle:nth-child(3n){--i: 2}@keyframes twinkle{to{opacity:.2}}.scene .dust{animation:dust 9s ease-in-out infinite alternate}@keyframes dust{to{transform:translate(8px,-12px)}}.scene .tape{transform-box:fill-box;transform-origin:50% 50%;animation:tape 6s ease-in-out infinite alternate}@keyframes tape{to{transform:translateY(2px) rotate(.3deg)}}.scene.late{filter:saturate(.85) contrast(1.05)}@keyframes walk-in{0%{opacity:0;translate:8% 0}}.fig.walk-out{animation:walk-out .6s ease-in forwards;pointer-events:none}@keyframes walk-out{to{opacity:0;translate:-8% 0}}@keyframes ping{50%{transform:scale(1.25);box-shadow:0 0 20px #f2b84bcc}}@keyframes bob{50%{transform:translateY(-5px)}}@keyframes pop{0%{opacity:0;transform:translateY(6px)}}@keyframes slide{0%{opacity:0;transform:translate(30px)}}@keyframes toast{0%{opacity:0}6%,85%{opacity:1}to{opacity:0}}@keyframes discover{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}10%,72%{opacity:1;transform:translate(-50%,-50%) scale(1)}96%{opacity:.9;transform:translate(calc(-50% + var(--fly-x, 30vw)),calc(-50% + var(--fly-y, -35vh))) scale(.12)}to{opacity:0;transform:translate(calc(-50% + var(--fly-x, 30vw)),calc(-50% + var(--fly-y, -35vh))) scale(.05)}}@keyframes glow{50%{opacity:.55}}@keyframes blink{50%{opacity:.2}}.replay .note-card{position:absolute;left:1.2rem;bottom:calc(9% + 8rem);z-index:4;max-width:22rem;padding:.55rem .8rem;background:#f4efe6;border-radius:8px;box-shadow:0 4px 12px #00000073;color:#1a1420;font-size:.85rem;line-height:1.35;animation:scene-in .9s ease-out}.replay .note-card small{display:block;font-size:.7rem;font-weight:700;letter-spacing:.08rem;opacity:.7;text-transform:uppercase}.replay .note-card p{margin:.15rem 0 0}.flash{position:fixed;top:1rem;right:1rem;z-index:42;max-width:24rem;background:var(--bg);color:var(--fg);border:1px solid var(--gold);border-radius:6px;padding:.6rem 2.2rem .6rem .9rem}.flash-error{border-color:#c23b3b}.flash-error .flash-title{color:#c23b3b}.flash-title{margin:0;font-weight:700}.flash-text{margin:.25rem 0 0;font-size:.9rem}.flash-close{position:absolute;top:0;right:0;width:44px;height:44px;padding:0;background:transparent;border:0;color:var(--dim);font:inherit;cursor:pointer}.ballot{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.4rem}.ballot h3{flex:1 1 100%;margin:0;color:var(--dim);font-size:.75rem;font-weight:400;letter-spacing:.1rem}.ballot button{padding:.1rem .5rem;background:var(--bg);border:1px solid var(--dim);border-radius:4px;color:var(--fg);font:inherit;font-size:.75rem;cursor:pointer}.ballot button[aria-pressed=true]{outline:2px solid var(--gold);outline-offset:2px}.poll{display:grid;gap:.4rem;margin:.6rem 0}.ballot .row,.poll .row{display:flex;gap:.3rem;align-items:center}.ballot .row{flex:1 1 100%}.ballot .row small,.poll .row small{min-width:3.2rem;color:var(--dim)}.bar{min-width:.6rem;height:.6rem;border-radius:2px;background:var(--gold)}.ballot .bar:nth-child(2),.poll .bar:nth-child(2){background:#7fdcff}.ballot .bar:nth-child(3),.poll .bar:nth-child(3){background:#ffd98a}.ballot .bar:nth-child(4),.poll .bar:nth-child(4){background:#ff9b9b}.ballot .bar:nth-child(5),.poll .bar:nth-child(5){background:#9fb8c8}@media (max-width: 52rem){.admin{padding:1rem;font-size:.82rem}.cardpage{padding:1rem}.admin table{font-size:.78rem}.admin th,.admin td{padding-right:.5rem}.talk{flex-direction:column;align-items:stretch}.hero-wrap{display:none}.tools .waits,.tools .sound,.tools .photo,.tools .full,.tools>button span,.tools>a.settings span{display:none}.tools>button,.tools>a.settings{min-width:0;padding:.25rem .4rem}.plate{top:0;left:50%;width:100vw;height:56.25vw;transform:translate(-50%)}.where>small:not(.roster){position:fixed;top:calc(56.25vw + 3.4rem + 194px);right:.8rem;left:.8rem;display:-webkit-box;max-width:none;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:5;font-size:.82rem;line-height:1.35}.hud button,.hud a{min-height:44px;min-width:44px}.game .cast{top:calc(56.25vw + 3.4rem);right:0;bottom:auto;left:0;display:flex;gap:.5rem;padding:0 .8rem;overflow-x:auto}.cast>.fig,.fig{position:static;left:auto;width:72px;flex:none;transform:none}.fig .bark{max-width:60vw}.doors{position:absolute;top:calc(56.25vw + 3.4rem + 110px);right:0;left:0;display:flex;flex-wrap:nowrap;gap:.5rem;padding:.6rem .8rem;overflow-x:auto;white-space:nowrap}.door{flex:none}.game.panel-open .where>small:not(.roster),.game:has(.overlay) .where>small:not(.roster){display:none}.door{display:inline-flex;align-items:center;min-height:44px}.talk{padding-bottom:calc(1.2rem + env(safe-area-inset-bottom))}.talk input,.talk button{min-height:44px}.toast{right:1rem;left:1rem;transform:none}.game.panel-open .toast{left:1rem}.casefile{position:fixed;inset:0;width:auto;padding-top:calc(.8rem + env(safe-area-inset-top));border-radius:0;background:#141b30}.casefile .close{display:grid;width:44px;height:44px;place-items:center}.mapboard{width:96vw}.overlay.photo .photo-at input[type=range]::-webkit-slider-thumb{width:28px;height:28px}.overlay.photo .photo-at input[type=range]::-moz-range-thumb{width:28px;height:28px}.overlay.ending .card{max-height:100vh;overflow-y:auto}.hud{flex-wrap:wrap;gap:.5rem}.hud>.clock{flex:none}.where{flex:1 1 100%;order:2}.mapboard .pin span{padding:.05rem .35rem;max-width:22vw;white-space:normal;text-align:center;line-height:1.1;font-size:.62rem}.mapboard .pin small:not(.sealed):not(.you){display:none}.flash{left:1rem;right:1rem;max-width:none}.replay .note-card{left:1rem;right:1rem;bottom:.6rem;max-width:none;font-size:.78rem}.ballot button{min-height:44px}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.account,.rooms{max-width:40rem;margin:0 auto;padding:3rem 1rem}.account h1,.rooms h1{color:var(--gold);letter-spacing:.5rem}.account form,.rooms .open{display:grid;gap:1rem;margin:1rem 0}.account label{display:grid;gap:.35rem;color:var(--dim);font-size:.85rem}.account input,.account select,.rooms select{background:transparent;border:1px solid var(--dim);color:var(--fg);font:inherit;padding:.5rem}.account select option,.rooms select option{background:var(--bg);color:var(--fg)}.account input:focus,.account select:focus,.rooms select:focus{outline:0;border-color:var(--gold)}.account input[type=checkbox],.account input[type=radio]{accent-color:var(--gold)}.account p{color:var(--dim)}.account p a,.account p a:visited{color:var(--fg);text-decoration:underline dotted var(--dim);text-underline-offset:.2rem}.account p a:hover{color:var(--gold);text-decoration-color:var(--gold)}.admin{min-height:100vh;margin:0;padding:1.5rem 2rem 3rem;background:#0b0d10;color:#d8d4c8;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem}.admin .top{display:flex;justify-content:space-between;align-items:baseline}.admin h1{margin:0;color:var(--gold);font-size:1rem;letter-spacing:.35rem}.admin h2{margin:1.5rem 0 .75rem;color:var(--gold);font-size:1.05rem;letter-spacing:.12rem;text-transform:uppercase}.admin h3{margin:1.5rem 0 .5rem;color:var(--glow);font-size:.85rem;letter-spacing:.18rem}.admin nav{display:flex;gap:.5rem}.admin a{color:var(--dim);text-decoration:none}.admin a:hover{color:var(--glow)}.admin table{width:100%;border-collapse:collapse;font-size:.85rem}.admin th{padding:.35rem 1rem .35rem 0;border-bottom:1px solid var(--dim);color:var(--gold);text-align:left;white-space:nowrap}.admin td{padding:.35rem 1rem .35rem 0;border-bottom:1px dotted #2b3556;vertical-align:top}.admin pre{margin:.5rem 0 0;padding:1rem;background:#05070f;border:1px solid #2b3556;border-radius:6px;white-space:pre-wrap;word-break:break-word;font-size:.8rem;line-height:1.55}.admin .tl{padding:.3rem 0;border-bottom:1px dotted #2b3556;font-size:.82rem}.admin .tl .reply{display:block;margin-left:1.2rem;color:var(--dim)}.admin .meta{margin:.5rem 0;color:var(--dim);font-style:italic}.admin .live,.account .locked{color:var(--gold)}.account .briefs{display:grid;gap:.6rem;margin:0;padding:0;list-style:none;font-size:.85rem}.account .briefs li{padding-left:.75rem;border-left:2px solid var(--dim)}.account .briefs strong{display:block;color:var(--gold);letter-spacing:.05rem}.account .briefs span{color:var(--dim)}.account button,.rooms .open button{justify-self:start;background:transparent;border:1px solid var(--gold);color:var(--gold);font:inherit;padding:.5rem 1rem;cursor:pointer}.account .error{color:#e08080}.account small{color:var(--dim)}.rooms header{display:flex;justify-content:space-between;align-items:baseline}.rooms nav{display:flex;gap:1rem;align-items:baseline}.rooms nav a,.rooms nav button,.rooms .links a,.rooms .links button{color:var(--dim);background:none;border:0;font:inherit;text-decoration:none;cursor:pointer;padding:0}.rooms nav a:hover,.rooms nav button:hover,.rooms .links a:hover,.rooms .links button:hover{color:var(--gold)}.rooms form.inline{display:inline}.rooms .list{list-style:none;padding:0;display:grid;gap:.75rem}.rooms .list li{border:1px solid var(--dim);padding:1rem;display:grid;gap:.35rem}.rooms .links{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center}.rooms .links.share{display:grid;gap:.25rem;font-size:.8rem}.rooms .links.share small{display:inline-block;min-width:3.5rem;color:var(--gold);letter-spacing:.05rem}.rooms .links.share a{color:var(--fg);overflow-wrap:anywhere}.rooms .empty{color:var(--dim)}.roster{color:var(--gold)}.where .roster .player{margin-right:.5rem}.where .roster em{margin-left:.25rem;color:var(--dim);font-style:normal}.where .roster em:before{content:"("}.where .roster em:after{content:")"}.where .roster .assign{display:inline;margin-left:.25rem}.where .roster .assign select{padding:0 .2rem;background:rgba(11,16,32,.7);border:1px solid #2b3556;border-radius:4px;color:var(--fg);font:inherit;font-size:.7rem}.where .roster .kick{margin-left:.15rem;padding:0 .3rem;background:transparent;border:0;color:var(--dim);font-size:.8rem;line-height:1;cursor:pointer}.where .roster .kick:hover{color:#e07a7a}.where .roster .locked{color:var(--dim)}.where .brief{margin-top:.15rem;font-size:.75rem;color:var(--dim)}.where .brief summary{color:var(--gold);cursor:pointer}.where .brief p{margin:.25rem 0 0;max-width:48ch;white-space:normal}.tools .hunch b{background:var(--glow)}.game.spectating .hot,.game.spectating .fig,.game.spectating .doors,.game.spectating .talk,.game.spectating .prompt{pointer-events:none}.game.spectating .talk{display:none}.account label.toggle{display:flex;gap:.75rem;align-items:flex-start;border:1px solid var(--dim);padding:.75rem}.account label.toggle input{width:auto;margin-top:.2rem}.account label.toggle span{display:grid;gap:.25rem;color:var(--fg)}.account fieldset.choice{display:grid;gap:.5rem;border:1px solid var(--dim);padding:.75rem}.account fieldset.choice legend{color:var(--dim);font-size:.85rem;padding:0 .35rem}.account label.radio{display:flex;gap:.5rem;align-items:center;color:var(--fg)}.account label.radio input{width:auto;margin-top:0}.account label.radio span{display:grid;gap:.15rem}.account .saved{color:var(--gold)}.library .topbar{display:flex;justify-content:space-between;align-items:baseline}.library .topbar a{color:var(--dim);font-size:.85rem;text-decoration:none}.library .topbar a:hover{color:var(--gold)}.preamble{position:absolute;inset:0;z-index:30;overflow:hidden;background:var(--bg);display:grid;place-items:center}.preamble-art{position:absolute;inset:0}.preamble-scene{position:absolute;inset:0;opacity:0;animation-name:preamble-scene;animation-timing-function:linear;animation-fill-mode:both}.preamble-scene .scene{width:100%;height:100%;filter:brightness(.55) saturate(.85);transform:scale(1.06);animation:preamble-drift 16s ease-in-out infinite alternate}.preamble-scene:nth-child(even) .scene{animation-name:preamble-drift-back}@keyframes preamble-scene{0%{opacity:0;transform:scale(1.03)}9%{opacity:1;transform:scale(1)}88%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.02)}}@keyframes preamble-drift{0%{transform:scale(1.06) translate(0)}to{transform:scale(1.18) translate(-2.5%,-1%)}}@keyframes preamble-drift-back{0%{transform:scale(1.1) translate(1.5%)}to{transform:scale(1.2) translate(-1%,1%)}}.preamble-scene.beat .scene{animation-name:preamble-push;animation-duration:var(--preamble-step);animation-timing-function:cubic-bezier(.4,0,.9,1);animation-iteration-count:1;animation-direction:normal;animation-fill-mode:both}@keyframes preamble-push{0%{transform:scale(1.04);filter:brightness(.55) saturate(.85)}50%{transform:scale(1.32);filter:brightness(.75) saturate(.6)}56%{transform:scale(1.4);filter:brightness(1.6) saturate(0)}62%,to{transform:scale(1.4);filter:brightness(0) saturate(0)}}.preamble-line{position:absolute;max-width:34ch;margin:0;padding:0 1.5rem;text-align:center;font-size:clamp(1.05rem,2.6vw,1.55rem);line-height:1.5;letter-spacing:.05em;color:var(--fg);text-shadow:0 2px 18px rgba(0,0,0,.95);opacity:0;animation-name:preamble-card;animation-duration:var(--preamble-step);animation-fill-mode:both}.preamble-line.card{mask-image:linear-gradient(90deg,#000 45%,transparent 55%);-webkit-mask-image:linear-gradient(90deg,#000 45%,transparent 55%);mask-size:250% 100%;-webkit-mask-size:250% 100%;animation-name:preamble-card,preamble-wipe;animation-duration:var(--preamble-step),var(--preamble-step);animation-fill-mode:both,both}.preamble-line.card:after{content:"\258c";margin-left:.15em;color:var(--gold);animation:blink .7s steps(2,start) infinite}@keyframes preamble-wipe{0%{mask-position:100% 0;-webkit-mask-position:100% 0}28%,to{mask-position:0% 0;-webkit-mask-position:0% 0}}.preamble-line.title{color:var(--gold);font-size:clamp(2rem,8vw,4rem);letter-spacing:.45em;text-indent:.45em;font-weight:700;animation-name:preamble-title}.preamble-line.title .letter{display:inline-block;white-space:pre;opacity:0;animation:preamble-letter 1.4s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i, 0) * 90ms + .2s)}@keyframes preamble-letter{0%{opacity:0;transform:translate(.6em) scale(1.3);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}@keyframes preamble-title{0%{opacity:1;letter-spacing:.9em}30%{letter-spacing:.45em}82%{opacity:1;letter-spacing:.45em}to{opacity:0;letter-spacing:.5em}}@keyframes preamble-card{0%{opacity:0;transform:translateY(12px)}14%{opacity:1;transform:translateY(0)}80%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.preamble-line.beat{color:var(--gold);animation-name:preamble-beat-card;mask-image:none;-webkit-mask-image:none}.preamble-line.beat:after{content:none}@keyframes preamble-beat-card{0%,64%{opacity:0;transform:translateY(6px)}72%{opacity:1;transform:translateY(0)}94%{opacity:1}to{opacity:0}}.preamble-motes{position:absolute;inset:0;pointer-events:none;overflow:hidden}.preamble-motes i{position:absolute;width:var(--s, 2px);height:var(--s, 2px);border-radius:50%;background:var(--glow);opacity:0;animation:mote 12s linear infinite;animation-delay:var(--d, 0s)}@keyframes mote{0%{opacity:0;transform:translate(0)}15%{opacity:.55}85%{opacity:.3}to{opacity:0;transform:translate(-40px,-90px)}}.preamble-grain{position:absolute;inset:-50%;pointer-events:none;opacity:.08;background-image:radial-gradient(rgba(255,255,255,.7) .6px,transparent 1px),radial-gradient(rgba(0,0,0,.8) .6px,transparent 1px);background-size:5px 5px,7px 7px;background-position:0 0,3px 2px;animation:grain .35s steps(3) infinite}@keyframes grain{0%{transform:translate(0)}33%{transform:translate(-3%,2%)}66%{transform:translate(2%,-3%)}to{transform:translate(-1%,1%)}}.preamble-pulse{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(100% 80% at 50% 50%,transparent 55%,rgba(120,10,25,.75) 100%);animation-name:preamble-heart;animation-duration:var(--preamble-step);animation-fill-mode:both}@keyframes preamble-heart{0%,8%{opacity:0}12%{opacity:.6}16%{opacity:.1}24%{opacity:.7}28%{opacity:.15}34%{opacity:.8}38%{opacity:.2}42%{opacity:.9}46%{opacity:.3}50%{opacity:1}54%,to{opacity:0}}.preamble-black{position:absolute;inset:0;pointer-events:none;background:#000;opacity:0;animation-name:preamble-cut;animation-duration:var(--preamble-step);animation-timing-function:steps(1,end);animation-fill-mode:both}@keyframes preamble-cut{0%,59%{opacity:0}60%,96%{opacity:1}to{opacity:0}}.preamble-beat{position:absolute;left:calc(50% - 115px);bottom:14%;opacity:0;animation-name:preamble-figure;animation-duration:var(--preamble-step);animation-fill-mode:both}@keyframes preamble-figure{0%{opacity:0}12%,94%{opacity:1}to{opacity:0}}.preamble-beat .stand,.preamble-beat .down,.preamble-beat .pool{transform-box:fill-box;animation-duration:var(--preamble-step);animation-fill-mode:both}.preamble-beat .stand{transform-origin:50% 100%;animation-name:preamble-stand}@keyframes preamble-stand{0%,30%{opacity:1;transform:none}40%{opacity:1;transform:rotate(-2deg)}48%{opacity:1;transform:rotate(2deg) scaleY(.98)}54%{opacity:1;transform:translateY(5px) scaleY(.9) rotate(5deg)}58%,to{opacity:0;transform:translateY(10px) scaleY(.84) rotate(8deg)}}.preamble-beat .down{transform-origin:50% 100%;opacity:0;animation-name:preamble-down}@keyframes preamble-down{0%,63%{opacity:0;transform:translateY(4px)}70%,to{opacity:1;transform:none}}.preamble-beat .pool{opacity:0;transform-origin:center;animation-name:preamble-pool}@keyframes preamble-pool{0%,66%{opacity:0;transform:scale(.2)}84%{opacity:.95;transform:scale(1.6,1.3)}to{opacity:.95;transform:scale(1.8,1.4)}}.preamble-flash{position:absolute;inset:0;background:#f4dede;opacity:0;animation-name:preamble-flash;animation-duration:var(--preamble-step);animation-fill-mode:both}@keyframes preamble-flash{0%,46%{opacity:0}51%{opacity:.6}57%{opacity:.12}63%{opacity:.45}74%,to{opacity:0}}.preamble-rain{position:absolute;inset:-20% 0;opacity:.18;background:repeating-linear-gradient(105deg,transparent 0 23px,#8fd3ff44 23px 24px);background-size:110px 110px;animation:preamble-rain 1.1s linear infinite}@keyframes preamble-rain{to{background-position:-30px 110px}}.preamble-lightning{position:absolute;inset:0;background:#dfe8ff;opacity:0;animation:preamble-lightning .7s ease-out both}@keyframes preamble-lightning{0%{opacity:0}15%{opacity:.7}30%{opacity:.1}45%{opacity:.5}to{opacity:0}}.preamble.hit{animation:preamble-shake .62s cubic-bezier(.2,.8,.3,1)}@keyframes preamble-shake{10%{transform:translate(-9px,4px) rotate(-.4deg)}25%{transform:translate(8px,-4px) rotate(.3deg)}40%{transform:translate(-6px,3px)}55%{transform:translate(4px,-2px)}70%{transform:translate(-2px,1px)}to{transform:none}}.preamble .begin{position:absolute;bottom:15%;padding:.8rem 1.6rem;font-size:1rem;letter-spacing:.15em;background:var(--gold);color:var(--bg);border:0;font-weight:700;cursor:pointer;opacity:0;animation-name:preamble-appear,preamble-pulse;animation-duration:1s,1.6s;animation-timing-function:ease,ease-in-out;animation-iteration-count:1,infinite;animation-fill-mode:both,both}@keyframes preamble-appear{to{opacity:1}}@keyframes preamble-pulse{50%{box-shadow:0 0 24px #d4a853b3}}.preamble .skip{position:absolute;top:1rem;right:1rem;background:transparent;color:var(--dim);border:1px solid var(--dim);padding:.3rem .7rem;cursor:pointer}.preamble .skip:hover{color:var(--gold);border-color:var(--gold)}@media (prefers-reduced-motion: reduce){.preamble{display:block;padding:2.5rem 1.25rem 7rem;overflow-y:auto}.preamble-art,.preamble-beat,.preamble-flash,.preamble-rain,.preamble-lightning,.preamble-motes,.preamble-grain,.preamble-pulse,.preamble-black{display:none}.preamble-line{position:static;opacity:1;margin:0 auto 1.75rem;mask-image:none;-webkit-mask-image:none}.preamble-line.card:after{content:none}.preamble-line.title .letter{opacity:1;animation:none}.preamble .begin{position:static;display:block;margin:0 auto;opacity:1}.preamble .skip{position:fixed}}.preamble-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(115% 85% at 50% 42%,transparent 40%,rgba(0,0,0,.72) 100%)}.preamble-scene .scene-city{filter:brightness(.85) saturate(.9)}.city-train{animation:city-train 7.5s linear infinite}@keyframes city-train{0%{transform:translate(0)}to{transform:translate(880px)}}.city-glint{animation:city-glint 3.4s ease-in-out infinite alternate}@keyframes city-glint{0%{opacity:.35}to{opacity:1}}.city-shimmer{animation:city-shimmer 5s ease-in-out infinite alternate}@keyframes city-shimmer{0%{opacity:.15}to{opacity:.55}}.replay{max-width:56rem;margin:0 auto;padding:1.5rem 1rem 3rem;display:grid;gap:.9rem}.replay header{display:flex;align-items:baseline;gap:1rem}.replay header h1{margin:0;color:var(--gold);font-size:1.1rem;letter-spacing:.35rem}.replay header small{color:var(--dim)}.replay header nav{margin-left:auto;display:flex;gap:1rem}.replay header nav a{color:var(--dim);font-size:.85rem;text-decoration:none}.replay header nav a:hover{color:var(--gold)}.replay .stage{border:1px solid var(--dim);overflow:hidden}.replay .stage .scene{display:block;width:100%;height:auto}.replay .film{position:relative;background:#000;animation:scene-in .9s ease-out}.replay .film .scene{filter:saturate(.85) contrast(1.08) sepia(.12)}.replay .film.rolling .scene{animation:film-grain .25s steps(2) infinite}@keyframes film-grain{50%{filter:saturate(.85) contrast(1.1) sepia(.12) brightness(1.03)}}.replay .letterbox{position:absolute;left:0;right:0;height:7%;background:#000;pointer-events:none}.replay .letterbox.top{top:0}.replay .letterbox.bottom{bottom:0}.replay .film-clock{position:absolute;top:9%;right:1.2rem;padding:.15rem .6rem;border:1px solid var(--gold);background:rgba(5,7,15,.7);color:var(--gold);font-variant-numeric:tabular-nums;letter-spacing:.2rem;animation:clock-tick .6s ease-out}@keyframes clock-tick{0%{background:var(--gold);color:#1a1420;transform:scale(1.15)}}.replay .speaker{position:absolute;left:1.2rem;bottom:9%;display:flex;align-items:flex-end;gap:.8rem;max-width:70%;animation:speaker-in .5s ease-out both}@keyframes speaker-in{0%{opacity:0;translate:-16px 0}}.replay .speaker .portrait{width:5.5rem;flex:none;filter:drop-shadow(0 4px 10px rgba(0,0,0,.8));mask-image:linear-gradient(#000 78%,transparent);-webkit-mask-image:linear-gradient(#000 78%,transparent)}.replay .speaker-card{padding:.6rem .9rem;border-left:3px solid var(--gold);background:rgba(5,7,15,.82);font-size:.9rem;line-height:1.4}.replay .speaker-card strong{display:block;color:var(--gold);letter-spacing:.1rem;font-size:.8rem;text-transform:uppercase}.replay .speaker-card q{color:var(--fg);font-style:italic}.replay .mute{background:transparent;border:1px solid var(--dim);color:var(--fg);font:inherit;padding:0 .5rem;cursor:pointer}.replay .mute[aria-pressed=false]{opacity:.5}.replay .scrub input[type=range]{width:100%;accent-color:var(--gold);cursor:pointer}.replay .status{margin:0;color:var(--fg);font-size:.9rem}.replay .tape{border:1px solid var(--dim);padding:.75rem;min-height:11rem;max-height:14rem;overflow-y:auto;display:flex;flex-direction:column;justify-content:flex-end;gap:.3rem}.replay .tape .line{margin:0;font-size:.9rem;color:var(--fg);white-space:pre-wrap}.replay .tape .empty{margin:0;color:var(--dim)}.replay .controls{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.replay .controls button{background:transparent;border:1px solid var(--dim);color:var(--fg);font:inherit;padding:.4rem .9rem;cursor:pointer}.replay .controls button:hover:not(:disabled){border-color:var(--gold);color:var(--gold)}.replay .controls button:disabled{opacity:.4;cursor:default}.items li.lab strong,.items li.lab span{color:var(--dim)}.items li.lab strong:before{content:"\2697  ";color:#4fd1c5}.cork{display:flex;flex:1;flex-direction:column;min-height:0;overflow-y:auto}.cork .empty{margin:0 0 .5rem}.board{position:relative;flex:none;height:max(12rem,calc(var(--rows, 3) * 4.2rem));border:6px solid #3a2a1c;border-radius:4px;background:radial-gradient(rgba(0,0,0,.18) 1px,transparent 1.5px) 0 0 / 7px 7px,linear-gradient(135deg,#8a6236,#6b4a2b);box-shadow:inset 0 0 30px #00000073}.strings{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.strings line{stroke:#d9d4c8;stroke-width:1;stroke-dasharray:3 4;opacity:.45}.strings line.linked{stroke:#e8e2d2;stroke-dasharray:none;opacity:.9}.strings line.taut{stroke:#c0392b;stroke-width:2;stroke-dasharray:none;opacity:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6))}.strings line.snap{stroke:#c0392b;stroke-width:2;animation:snap 1s ease-in both}@keyframes snap{0%,60%{opacity:1}to{opacity:0;stroke-dashoffset:40}}.note{position:absolute;max-width:42%;padding:.45rem .5rem .4rem;background:#f4efe6;border-radius:2px;box-shadow:0 3px 8px #00000080;color:#1a1420;font-size:.72rem;line-height:1.25;text-align:center;transform:translate(-50%,-50%) rotate(var(--tilt, -1.5deg));animation:pop .3s ease-out both}.note:nth-child(even){--tilt: 1.5deg}.note i{position:absolute;top:-5px;left:50%;width:10px;height:10px;border-radius:50%;background:#c0392b;box-shadow:0 1px 3px #0009;transform:translate(-50%)}.note.missing{background:#5a5266;color:#d9d4c8;font-weight:700}.note.missing i{background:#8a8a92}.note.point{background:#e8e2d2;border-left:3px solid #8a6d2b}.note.point:not(.proven){background:#43404a;color:#8a8a92;border-left-color:#5a5266;font-style:italic}.note.proven{border-left-color:var(--gold);box-shadow:0 3px 8px #00000080,0 0 14px #d4a85366}.note.proven i{background:var(--gold)}.note.clue[draggable=true]{cursor:grab}.note.clue.picked{outline:2px solid var(--gold);outline-offset:2px}.tour{position:fixed;inset:0;z-index:40;pointer-events:none}.game:has(.overlay) .tour{display:none}.cast{position:absolute;inset:0;pointer-events:none}.cast>.fig{pointer-events:auto}.tour-cut{position:fixed;border:1px solid var(--gold);border-radius:6px;box-shadow:0 0 0 100vmax #0b0d10b8;transition:left .16s ease,top .16s ease,width .16s ease,height .16s ease}.tour-card{position:fixed;max-width:320px;padding:14px 16px;background:#141821;border:1px solid var(--gold);border-radius:8px;box-shadow:0 14px 44px #0000008c;pointer-events:auto;z-index:41}.tour-text{margin:0;line-height:1.45}.tour-actions{display:flex;gap:8px;align-items:center;margin-top:12px}.tour-progress{margin-right:auto;color:var(--dim)}.tour-next,.tour-skip{font:inherit;padding:6px 12px;border-radius:4px;cursor:pointer}.tour-next{border:1px solid var(--gold);background:transparent;color:var(--gold)}.tour-next[disabled]{opacity:.4;cursor:default}.tour-skip{border:1px solid var(--dim);background:transparent;color:var(--dim)}@media (prefers-reduced-motion: reduce){.tour-cut{transition:none}}
