@import url('https://fonts.googleapis.com/css2?family=Spectral:wght@400;500;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;500;600;700;800&family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#090909;--panel:#111111;--panel2:#171717;--line:#303030;--red:#c1121f;--red2:#f12a37;--text:#f1efec;--muted:#8f8d8b;--mono:'DM Mono',monospace;--display:'Barlow Condensed',sans-serif;--body:'Manrope',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:14px;min-height:100vh}button,a{font:inherit}button{cursor:pointer;color:inherit}.grain{position:fixed;inset:0;pointer-events:none;z-index:20;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,76px);position:relative;z-index:21;background:#090909}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--text);font-family:var(--display);font-size:22px;line-height:.9;letter-spacing:1px}.brand b{color:var(--red2)}.brand small{display:block;font:9px var(--mono);color:var(--muted);letter-spacing:1.8px;margin-top:7px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--red);color:var(--red2);font-size:18px;font-weight:800}.top-status,.case-chip{font:10px var(--mono);letter-spacing:1.4px;color:#b6b3af;display:flex;align-items:center;gap:9px}.pulse{width:7px;height:7px;background:var(--red2);border-radius:50%;box-shadow:0 0 12px #c1121f;display:inline-block}.menu-button{background:transparent;border:1px solid var(--line);padding:10px 13px;font:10px var(--mono);letter-spacing:1px;color:#aaa}.menu-button:hover{border-color:var(--red)}main{min-height:calc(100vh - 125px)}.screen{display:none;max-width:1440px;margin:auto;padding:clamp(25px,5vw,72px)}.screen.active{display:block;animation:fadeIn .35s ease}@keyframes fadeIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:center;min-height:calc(100vh - 220px)}.eyebrow{font:10px var(--mono);letter-spacing:2px;color:var(--red2);margin:0 0 18px}.hero-copy h1,.section-head h2,.verdict-wrap h2{font:800 clamp(58px,8vw,116px)/.83 var(--display);letter-spacing:-1px;margin:0 0 28px}.hero-copy h1 em,.section-head h2 em,.verdict-wrap h2 em{font-style:normal;color:var(--red2)}.red-dot{color:var(--red2)}.lede{font-size:15px;line-height:1.9;color:#c4c0bb;max-width:450px}.rule{width:65px;height:3px;background:var(--red);margin:30px 0 20px}.small{font-size:11px;line-height:1.8}.muted{color:var(--muted)}.button{border:1px solid #444;background:#171717;padding:15px 19px;font:11px var(--mono);letter-spacing:1px;transition:.2s;display:inline-flex;align-items:center;justify-content:space-between;gap:24px}.button:hover:not(:disabled){border-color:var(--red2);transform:translateY(-1px)}.button.red{background:var(--red);border-color:var(--red);color:#fff}.button.red:hover{background:#e11b2a}.button.ghost{background:transparent;border-color:var(--line)}.button:disabled{opacity:.35;cursor:not-allowed}.full{width:100%;justify-content:center;margin-top:15px}.hero-art{position:relative;padding:28px;border:1px solid var(--line);background:linear-gradient(135deg,#151515,#0b0b0b);min-height:450px;display:flex;align-items:center;justify-content:center}.stamp{position:absolute;top:15px;right:15px;border:1px solid var(--red);color:var(--red2);padding:8px 11px;font:10px var(--mono);letter-spacing:2px;transform:rotate(5deg);text-align:center}.stamp b{font-size:16px}.blueprint-mini{width:min(100%,430px);height:330px;border:1px solid #4a4a4a;position:relative;background-image:linear-gradient(#262626 1px,transparent 1px),linear-gradient(90deg,#262626 1px,transparent 1px);background-size:18px 18px}.bp-label,.hero-caption{font:9px var(--mono);letter-spacing:1.5px;color:#8e8e8e}.bp-label{position:absolute;top:12px;left:14px}.bp-courtyard{position:absolute;left:34%;top:35%;width:32%;height:30%;border:1px dashed #777;display:grid;place-content:center;text-align:center;font:9px var(--mono);color:#bbb}.bp-block{position:absolute;width:27%;height:25%;background:#181818;border:1px solid #777;display:flex;flex-direction:column;align-items:center;justify-content:center;font:700 28px var(--display)}.bp-block small{font:8px var(--mono);color:#aaa;letter-spacing:1px}.bp-a{left:5%;top:17%}.bp-b{right:5%;top:17%;border-color:var(--red)}.bp-c{left:5%;bottom:8%}.bp-d{right:5%;bottom:8%}.bp-line{position:absolute;background:var(--red);height:1px;width:15%;opacity:.8}.l1{left:27%;top:30%;transform:rotate(25deg)}.l2{right:27%;top:30%;transform:rotate(-25deg)}.l3{left:27%;bottom:27%;transform:rotate(-25deg)}.l4{right:27%;bottom:27%;transform:rotate(25deg)}.hero-caption{position:absolute;bottom:14px;left:22px}.bottom-note{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:15px;color:#777;font:9px var(--mono);letter-spacing:1.2px}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:28px}.section-head h2{font-size:clamp(42px,5vw,68px);line-height:.92;margin-bottom:12px}.section-head .muted{margin:0}.investigation-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(250px,.75fr);gap:16px}.map-panel,.side-panel,.inspection-panel{border:1px solid var(--line);background:var(--panel)}.map-top,.panel-title{display:flex;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line);font:9px var(--mono);letter-spacing:1.4px;color:#aaa}.campus-map{position:relative;height:440px;overflow:hidden;background-color:#0d0d0d;background-image:linear-gradient(#202020 1px,transparent 1px),linear-gradient(90deg,#202020 1px,transparent 1px);background-size:25px 25px}.map-road{position:absolute;background:#242424;border:1px solid #363636}.road-h{left:0;right:0;height:44px;top:47%}.road-v{top:0;bottom:0;width:44px;left:48%}.map-courtyard{position:absolute;left:calc(48% - 36px);top:calc(47% - 31px);width:116px;height:106px;background:#171717;border:1px dashed #6e6e6e;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;font:9px var(--mono);letter-spacing:1px;z-index:2}.map-courtyard small{color:#777;font-size:7px;margin-top:6px}.building{position:absolute;width:30%;height:30%;background:#171717;border:1px solid #525252;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;transition:.2s}.building:hover,.building.selected{border-color:var(--red2);background:#211011;box-shadow:0 0 22px #c1121f20}.building b{font:800 44px var(--display);color:var(--red2)}.building span{font:10px var(--mono);letter-spacing:1px}.building small{font:8px var(--mono);color:#777}.building.a{left:5%;top:7%}.building.b{right:5%;top:7%}.building.c{left:5%;bottom:7%}.building.d{right:5%;bottom:7%}.map-north,.map-scale{position:absolute;right:12px;top:12px;color:#777;font:9px var(--mono)}.map-scale{top:auto;bottom:10px;left:12px;right:auto}.map-legend{display:flex;gap:20px;padding:12px 15px;border-top:1px solid var(--line);font:9px var(--mono);color:#8d8d8d}.legend-dot{display:inline-block;width:7px;height:7px;border:1px solid #888;margin-right:6px}.red-dot-bg{background:var(--red);border-color:var(--red)}.side-panel{padding-bottom:18px}.panel-title{padding:16px}.progress-track{height:3px;background:#333;margin:0 16px}.progress-track span{display:block;height:100%;width:0;background:var(--red2);transition:.3s}.side-panel>.small{padding:0 16px}.building-picker{padding:0 12px}.pick-row{display:flex;width:100%;align-items:center;gap:12px;text-align:left;padding:13px 8px;border:0;border-bottom:1px solid #252525;background:transparent}.pick-row:hover{background:#1a1a1a}.pick-code{font:700 22px var(--display);color:var(--red2);width:28px}.pick-row b{display:block;font-size:11px}.pick-row small{display:block;font:9px var(--mono);color:#777;margin-top:4px}.pick-row .arrow{margin-left:auto;color:#666}.room-area{margin-top:16px}.room-empty{border:1px dashed #363636;padding:32px;text-align:center;color:#777}.crosshair{font-size:25px;color:var(--red2)}.room-empty h3{font:700 24px var(--display);letter-spacing:1px;color:#ddd}.room-empty p{font-size:12px}.room-card-list{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.room-card{border:1px solid var(--line);background:#111;padding:16px;text-align:left;min-height:110px}.room-card:hover{border-color:var(--red)}.room-card b{display:block;font:700 24px var(--display);color:var(--red2)}.room-card span{display:block;font-size:11px;margin:5px 0}.room-card small{font:9px var(--mono);color:#777}.back-link{border:0;background:transparent;color:#aaa;font:10px var(--mono);letter-spacing:1px;padding:0;margin-bottom:30px}.back-link:hover{color:var(--red2)}.room-heading{align-items:center}.room-status{font:9px var(--mono);letter-spacing:1px;border:1px solid var(--line);padding:10px;color:#999}.room-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.7fr);gap:16px}.room-visual{border:1px solid var(--line);background:#101010;padding:18px}.room-plan{height:250px;border:1px solid #555;position:relative;margin-bottom:14px;background-image:linear-gradient(#242424 1px,transparent 1px),linear-gradient(90deg,#242424 1px,transparent 1px);background-size:20px 20px;display:grid;place-items:center}.plan-center{width:40%;height:50%;border:1px dashed #555;display:grid;place-content:center;text-align:center;font:11px var(--mono);color:#777}.plan-door{position:absolute;bottom:-1px;left:44%;width:12%;height:5px;background:var(--red2);font:7px var(--mono);color:#aaa;text-align:center}.object-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.object-button{border:1px solid #333;background:#151515;text-align:left;padding:13px;display:flex;gap:10px;align-items:center}.object-button:hover,.object-button.selected{border-color:var(--red)}.object-button.found{border-color:#713239}.obj-icon{width:30px;height:30px;display:grid;place-items:center;border:1px solid #444;color:var(--red2);font-size:15px}.object-button b{font-size:11px;display:block}.object-button small{font:8px var(--mono);color:#777;display:block;margin-top:4px}.inspection-panel{padding:22px;min-height:380px}.inspection-panel h3{font:700 27px var(--display);margin:18px 0 10px}.inspect-icon{width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--red);color:var(--red2);font-size:23px;margin-top:26px}.inspect-text{font-size:12px;line-height:1.9;color:#b7b2ae}.inspection-meta{border-top:1px solid var(--line);margin-top:18px;padding-top:14px;font:9px/1.8 var(--mono);color:#777}.room-footer{display:flex;align-items:center;gap:10px;margin-top:18px}.room-footer>span{margin-right:auto;font:9px var(--mono);color:#777}.room-footer .button{padding:12px}.evidence-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.evidence-card{border:1px solid var(--line);background:var(--panel);padding:18px;min-height:190px;position:relative}.evidence-card:before{content:'';position:absolute;left:0;top:0;width:3px;height:100%;background:var(--red)}.evidence-code{font:9px var(--mono);color:var(--red2);letter-spacing:1px}.evidence-card h3{font:700 24px var(--display);margin:15px 0 8px}.evidence-card p{font-size:11px;line-height:1.8;color:#aaa}.evidence-card small{font:9px var(--mono);color:#777}.empty-evidence{grid-column:1/-1;text-align:center;padding:50px;border:1px dashed #333;color:#777}.evidence-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:24px;border-top:1px solid var(--line);padding-top:20px}.verdict-wrap{max-width:1000px;margin:0 auto}.verdict-wrap h2{font-size:clamp(55px,8vw,100px);margin-bottom:18px}.suspect-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:28px 0}.suspect-option{position:relative;border:1px solid var(--line);background:#111;padding:0;text-align:left;overflow:hidden}.suspect-option input{position:absolute;opacity:0}.suspect-option img{width:100%;height:180px;object-fit:cover;filter:grayscale(1);opacity:.72;display:block;transition:.25s}.suspect-option span{display:block;padding:13px}.suspect-option b{font:700 23px var(--display);display:block}.suspect-option small{font:9px var(--mono);color:#777;display:block;margin-top:4px}.suspect-option:hover,.suspect-option.chosen{border-color:var(--red2)}.suspect-option.chosen img{filter:grayscale(.25);opacity:1}.suspect-option.chosen:after{content:'SELECTED';position:absolute;top:10px;right:10px;background:var(--red);padding:5px 7px;font:8px var(--mono);letter-spacing:1px}.lock-row{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:18px}.ending-screen{min-height:70vh;align-items:center;justify-content:center}.ending-screen.active{display:flex}.ending-content{width:min(760px,100%);text-align:left}.terminal-line{font:500 clamp(24px,4vw,42px)/1.5 var(--display);letter-spacing:.6px;white-space:pre-line;min-height:180px}.terminal-line:after{content:'▋';color:var(--red2);animation:blink .8s infinite}@keyframes blink{50%{opacity:0}}.ending-actions{display:flex;gap:10px;margin-top:30px}.hidden{display:none!important}.tiny{font:9px/1.8 var(--mono)}footer{border-top:1px solid var(--line);padding:18px clamp(20px,5vw,76px);display:flex;justify-content:space-between;color:#666;font:9px var(--mono);letter-spacing:1px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:30;background:#f1efec;color:#111;padding:12px 18px;font:11px var(--mono);transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:850px){.hero-grid,.investigation-layout,.room-layout{grid-template-columns:1fr}.hero-grid{padding:15px 0}.hero-art{min-height:350px}.section-head{align-items:flex-start;flex-direction:column}.campus-map{height:400px}.room-card-list{grid-template-columns:repeat(2,1fr)}.evidence-grid{grid-template-columns:repeat(2,1fr)}.suspect-grid{grid-template-columns:repeat(2,1fr)}.suspect-option img{height:160px}.bottom-note span:nth-child(2){display:none}}@media(max-width:520px){.topbar{height:65px;padding:0 14px}.top-status{display:none}.screen{padding:25px 16px}.hero-copy h1{font-size:64px}.hero-art{padding:18px;min-height:300px}.blueprint-mini{height:270px}.section-head h2{font-size:45px}.campus-map{height:340px}.building{width:34%;height:28%}.building span{font-size:8px}.building b{font-size:34px}.map-courtyard{left:calc(48% - 36px);width:100px}.room-card-list,.evidence-grid{grid-template-columns:1fr}.room-footer{flex-wrap:wrap}.room-footer>span{width:100%}.room-footer .button{flex:1;font-size:9px;padding:11px 8px}.object-list{grid-template-columns:1fr}.suspect-grid{grid-template-columns:repeat(2,1fr);gap:7px}.suspect-option img{height:125px}.suspect-option b{font-size:19px}.suspect-option span{padding:10px}.lock-row,.evidence-footer{align-items:stretch;flex-direction:column}.lock-row .button,.evidence-footer .button{width:100%;justify-content:center}.bottom-note{font-size:8px}footer{gap:10px;line-height:1.7}footer span:last-child{text-align:right}}
/* Part 2: follow-up interrogation */
.interrogation-layout{display:grid;grid-template-columns:minmax(250px,.72fr) minmax(0,1.5fr);gap:16px;align-items:start}.interrogation-roster{display:grid;gap:8px}.interview-card{display:grid;grid-template-columns:70px 1fr 18px;gap:12px;align-items:center;text-align:left;padding:9px;border:1px solid var(--line);background:var(--panel);min-width:0}.interview-card:hover,.interview-card.read{border-color:#773039;background:#171112}.interview-card img{width:70px;height:84px;object-fit:cover;filter:grayscale(.6);display:block}.interview-card span{min-width:0}.interview-card small,.interview-card em{display:block;font:9px var(--mono);color:var(--muted);font-style:normal;line-height:1.6}.interview-card b{display:block;font:700 22px var(--display);margin:4px 0}.interview-card i{font-style:normal;color:var(--red2)}.interrogation-detail{border:1px solid var(--line);background:var(--panel);padding:clamp(14px,3vw,26px);min-width:0}.interview-profile{display:grid;grid-template-columns:145px 1fr;gap:22px;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--line)}.interview-profile img{width:100%;height:190px;object-fit:cover;filter:grayscale(.35);border:1px solid #444}.interview-profile h3{font:800 clamp(32px,4vw,48px)/.95 var(--display);margin:0 0 12px}.interview-profile p:not(.eyebrow){font-size:12px;line-height:1.8;color:#aaa}.interview-tag{font:9px var(--mono);letter-spacing:1px;color:var(--red2)}.question-list{margin:18px 0}.question-row{border-bottom:1px solid #303030}.question-row summary{display:flex;gap:14px;align-items:flex-start;cursor:pointer;list-style:none;padding:15px 2px;font-size:12px;line-height:1.7}.question-row summary::-webkit-details-marker{display:none}.question-row summary:after{content:'+';margin-left:auto;color:var(--red2);font:18px var(--mono)}.question-row[open] summary:after{content:'−'}.question-row summary span{font:10px var(--mono);color:var(--red2);min-width:34px}.question-row p{margin:0 0 16px 48px;color:#c7c2bd;font-size:12px;line-height:1.9;max-width:780px}.extra-question{border:1px solid #6b2a30;padding:0 12px;margin-top:12px}.extra-question summary span{min-width:52px}.interview-profile .eyebrow{margin-bottom:10px}
@media(max-width:850px){.interrogation-layout{grid-template-columns:1fr}.interrogation-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.interview-card{grid-template-columns:54px 1fr 12px;gap:8px}.interview-card img{width:54px;height:68px}.interview-card b{font-size:18px}.interview-profile{grid-template-columns:110px 1fr;gap:14px}.interview-profile img{height:150px}}
@media(max-width:520px){.interrogation-roster{grid-template-columns:1fr 1fr}.interview-card{grid-template-columns:42px 1fr;gap:8px;padding:7px}.interview-card img{width:42px;height:55px}.interview-card i{display:none}.interview-card b{font-size:16px}.interview-card small,.interview-card em{font-size:8px}.interview-profile{grid-template-columns:90px 1fr}.interview-profile img{height:125px}.question-row p{margin-left:0}.question-row summary{gap:8px}}

/* Revised interrogation: transcript presented as a phone chat */
.interrogation-layout{grid-template-columns:minmax(220px,.62fr) minmax(0,1.38fr)}
.interrogation-detail{padding:14px;background:#080808;border-color:#343434}
.phone-shell{width:min(100%,620px);margin:0 auto;border:1px solid #3b3b3b;border-radius:22px;overflow:hidden;background:#0c0d0e;box-shadow:0 18px 50px #0008}
.phone-status{display:flex;justify-content:space-between;padding:13px 17px;background:#151617;color:#a8a8a8;font:9px var(--mono);letter-spacing:1px;border-bottom:1px solid #282828}
.phone-contact{display:flex;align-items:center;gap:12px;padding:13px 16px;background:#171819;border-bottom:1px solid #303030}
.phone-contact img{width:45px;height:45px;border-radius:50%;object-fit:cover;border:1px solid #666;filter:grayscale(.25)}
.phone-contact div{flex:1;min-width:0}.phone-contact b{display:block;font-size:13px}.phone-contact small{display:block;color:#999;font-size:10px;line-height:1.5;margin-top:4px}.online-dot{width:7px;height:7px;border-radius:50%;background:#9d2630;box-shadow:0 0 8px #9d2630}
.chat-thread{padding:18px 13px 25px;max-height:680px;overflow:auto;background:radial-gradient(ellipse at top,#171819,#0c0d0e 65%)}
.chat-message{display:flex;flex-direction:column;margin:0 0 18px;max-width:91%}.chat-message.investigator{align-items:flex-start;margin-right:auto}.chat-message.suspect{align-items:flex-end;margin-left:auto}
.chat-sender{font:9px var(--mono);letter-spacing:1px;color:#a7a7a7;margin:0 8px 6px}.chat-sender small{color:var(--red2);margin-left:7px}
.chat-bubble{font-size:12px;line-height:1.9;padding:12px 14px;white-space:pre-line;border:1px solid #343638;background:#1c1e20;color:#e5e2df;border-radius:3px 13px 13px 13px}
.suspect .chat-bubble{background:#321317;border-color:#62252d;border-radius:13px 3px 13px 13px;color:#f4e9e8}
.chat-time{text-align:center;color:#666;font:9px var(--mono);letter-spacing:1px;padding:18px 0 4px;border-top:1px solid #292929}
.phone-footer{display:flex;justify-content:space-between;padding:12px 16px;border-top:1px solid #303030;background:#151617;color:#888;font:9px var(--mono);letter-spacing:1px}
.case-map{height:auto;min-height:350px;padding:24px;display:grid;grid-template-columns:1fr;gap:12px;align-content:center;position:relative;background:#0c0c0c}
.case-map-node{position:relative;z-index:1;display:grid;grid-template-columns:42px 1fr;column-gap:12px;align-items:center;padding:15px;border:1px solid #4a4a4a;background:#151515}
.case-map-node>b{grid-row:span 2;font:800 30px var(--display);color:var(--red2)}.case-map-node strong{font:700 17px var(--display);letter-spacing:1px}.case-map-node span{font:9px var(--mono);color:#999;margin-top:4px}.case-map-node.murder{border-color:#9e2934;background:#201012}.case-map-link{height:12px;width:1px;background:#8d2730;margin:-12px 0 -12px 36px;z-index:0}.case-map-note{margin-top:8px;padding:12px;border-top:1px solid #363636;color:#c9babb;font:10px/1.8 var(--mono);text-align:center}
.school-reveal-screen{min-height:calc(100vh - 125px);background:#070707;overflow:hidden}.school-intro,.board-reveal,.secret-conversation{max-width:900px;margin:0 auto;text-align:center}.red-running{font-weight:bold;animation:redPulse 1.15s steps(2,end) infinite;line-height:1.9}@keyframes redPulse{50%{opacity:.28}}.school-intro h2,.board-reveal h2{font:800 clamp(42px,7vw,84px)/.9 var(--display);letter-spacing:1px;margin:28px 0}.school-intro h2 em,.board-reveal h2 em{font-style:normal;color:var(--red2)}.school-subtitle{font:11px var(--mono);letter-spacing:2px;color:#ddd;margin:30px 0}.school-illustration{height:300px;position:relative;overflow:hidden;margin:25px auto 30px;max-width:680px;border:1px solid #252525;background:linear-gradient(#10151c,#090909 76%)}.school-moon{position:absolute;width:90px;height:90px;border-radius:50%;background:#c9c5bc;opacity:.15;right:14%;top:28px;box-shadow:0 0 55px #c9c5bc22}.school-building{position:absolute;left:17%;right:17%;bottom:33px;height:170px;background:#191a1d;border:1px solid #555;clip-path:polygon(8% 15%,50% 0,92% 15%,100% 100%,0 100%);padding-top:48px}.school-roof{position:absolute;left:0;right:0;top:0;height:42px;background:#262629;border-bottom:1px solid #555}.school-nameplate{position:relative;z-index:1;font:10px var(--mono);letter-spacing:2px;color:#e7e1d8;margin:8px auto 18px}.school-windows{height:46px;margin:0 12%;background:repeating-linear-gradient(90deg,#521c22 0 18px,#111 18px 30px);border:1px solid #333}.school-steps{position:absolute;bottom:0;left:20%;right:20%;height:12px;border-top:2px solid #555}.school-ground{position:absolute;bottom:0;left:0;right:0;height:34px;background:#111;border-top:1px solid #383838}.board-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:35px 0}.board-grid article{padding:25px 12px;border:1px solid #4c2226;background:linear-gradient(145deg,#171111,#0c0c0c);min-height:130px;display:flex;flex-direction:column;justify-content:center}.board-grid span{font:9px var(--mono);color:#a9a1a1;letter-spacing:1px}.board-grid h3{font:700 clamp(22px,3vw,32px) var(--display);margin:14px 0;color:#f1e9e8}.devil-line{font:700 clamp(16px,2.7vw,25px)/1.6 var(--display);letter-spacing:1px;color:var(--red2);margin:35px 0}.secret-conversation{position:relative;min-height:65vh;display:flex;flex-direction:column;justify-content:center;align-items:stretch;text-align:left;padding:35px 0}.glitch-label{font:10px var(--mono);letter-spacing:2px;color:#777;text-align:center;margin-bottom:35px}.secret-message{max-width:78%;padding:18px;border:1px solid #4c2428;background:#171112;color:#f3eeee;font-size:clamp(15px,2vw,21px);line-height:1.7;margin-bottom:18px}.secret-message.right{align-self:flex-end;background:#2a1115}.secret-stage{text-align:center;color:#aaa;font:italic 13px var(--body);margin:22px 0}.secret-final{text-align:center;font:800 54px var(--display);letter-spacing:7px;color:var(--red2);margin-top:30px}.glitch-flash{position:absolute;inset:-10px;pointer-events:none;opacity:0;background:#b90018;mix-blend-mode:screen}.glitch-active{animation:glitchFlash .18s steps(2,end) 18}@keyframes glitchFlash{0%{opacity:0;background:#c1121f}45%{opacity:.6;background:#f4eeee}100%{opacity:.08;background:#090909}}
@media(max-width:700px){.board-grid{grid-template-columns:1fr}.board-grid article{min-height:90px}.school-illustration{height:245px}.school-building{left:7%;right:7%;height:150px}.chat-thread{max-height:70vh}.chat-message{max-width:96%}.case-map{padding:14px}.interrogation-layout{grid-template-columns:1fr}}

/* Phone-like interrogation transcript: deliberately narrow, framed, and vertically scrollable. */
.interrogation-detail{background:transparent;border:0;padding:0;min-width:0}
.phone-shell{width:min(100%,460px);min-height:600px;margin:0 auto;border:2px solid #454545;border-radius:30px;padding:7px;background:#050505;box-shadow:0 22px 65px #000b;position:relative}
.phone-shell:before{content:'';position:absolute;z-index:2;top:9px;left:50%;transform:translateX(-50%);width:86px;height:13px;border-radius:0 0 10px 10px;background:#050505;border:1px solid #222;border-top:0}
.phone-status{padding:19px 16px 12px;border-radius:22px 22px 0 0}
.phone-contact{padding:14px 13px}
.chat-thread{height:min(62vh,590px);min-height:380px;max-height:none;overflow-y:auto;scrollbar-color:#633038 #111;border-radius:0 0 3px 3px}
.phone-footer{border-radius:0 0 22px 22px}
@media(max-width:520px){.phone-shell{width:100%;min-height:540px;border-radius:26px;padding:5px}.chat-thread{height:62vh;min-height:350px;padding:15px 10px}.chat-bubble{font-size:12px;line-height:1.8;padding:11px 12px}.phone-contact img{width:40px;height:40px}}

/* Revision: messages are revealed one tap at a time. */
.chat-thread{display:flex;flex-direction:column;gap:14px;max-height:58vh;overflow-y:auto;scroll-behavior:smooth;padding:18px 14px;background:#101010;}
.chat-start-note{color:#9b9696;text-align:center;font-size:.68rem;letter-spacing:.12em;line-height:1.7;padding:18px 8px;border:1px dashed #423033;border-radius:8px;}
.chat-controls{display:grid;gap:9px;margin-top:12px;}
.chat-controls button:disabled{opacity:.42;cursor:not-allowed;}
.chat-message{max-width:92%;animation:chatPop .22s ease-out;}
.chat-message.investigator{align-self:flex-start;}
.chat-message.suspect{align-self:flex-end;}
.chat-sender{display:block;font-size:.63rem;letter-spacing:.1em;color:#bdb6b6;margin:0 8px 5px;}
.chat-message.suspect .chat-sender{text-align:right;}
.chat-bubble{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65;font-size:.9rem;padding:12px 14px;border-radius:14px 14px 14px 3px;background:#292326;border:1px solid #503039;color:#f2eeee;}
.chat-message.suspect .chat-bubble{background:#242424;border-color:#3a3a3a;border-radius:14px 14px 3px 14px;}
.phone-shell{overflow:hidden;}
.phone-footer{position:sticky;bottom:0;}
.reveal-line-stage{min-height:110px;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:12px;}
.reveal-line{color:#d51f32;text-align:center;font-weight:800;letter-spacing:.08em;line-height:1.7;animation:redMarquee 2.6s linear both;max-width:100%;}
.reveal-line.fade-out{opacity:0;transform:translateY(-16px);transition:opacity .4s ease,transform .4s ease;}
#schoolIllustration{margin:24px auto;}
#showSchoolBoard{margin:12px auto 0;}
.board-grid article p{color:#b9b2b2;line-height:1.6;font-size:.88rem;margin-top:10px;}
.blackout-chat{background:#000;min-height:65vh;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:26px;padding:30px 20px;}
.blackout-chat .glitch-label{color:#777;letter-spacing:.18em;font-size:.7rem;text-align:center;}
.blackout-chat .secret-message{max-width:80%;padding:16px 18px;border:1px solid #383838;background:#0c0c0c;color:#f0eeee;line-height:1.6;animation:chatPop .3s ease-out;}
.blackout-chat .secret-message.left{align-self:flex-start;border-left:3px solid #8d1724;}
.blackout-chat .secret-message.right{align-self:flex-end;border-right:3px solid #8d1724;}
.blackout-chat .secret-stage{color:#aaa;text-align:center;font-style:italic;}
@keyframes chatPop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes redMarquee{0%{opacity:0;transform:translateX(65%)}12%{opacity:1}85%{opacity:1}100%{opacity:1;transform:translateX(-65%)}}
@media(max-width:680px){.chat-thread{max-height:54vh;padding:12px 9px}.chat-message{max-width:96%}.chat-bubble{font-size:.86rem}.blackout-chat .secret-message{max-width:94%}.reveal-line{font-size:.92rem}}


/* Final revision based on the requested notes */
.bp-block{padding:0;color:var(--text);cursor:pointer;z-index:2;transition:background .2s,border-color .2s,transform .2s;}
.bp-block:hover,.bp-block:focus-visible{background:#2a1114;border-color:var(--red2);transform:scale(1.035);outline:1px solid var(--red2);}
.bp-block small{text-align:center;line-height:1.5;padding:0 3px;}
.chat-action{align-self:center;max-width:94%;margin:2px auto 8px;padding:5px 12px;color:#b5adad;text-align:center;font:italic 12px/1.8 var(--body);letter-spacing:.01em;background:transparent;border:0;white-space:pre-wrap;}
.reveal-line-stage{min-height:150px;}
.typewriter-line{font-family:'Spectral',serif;font-size:clamp(17px,2.5vw,25px);font-weight:500;letter-spacing:.08em;line-height:1.9;color:#d51f32;text-align:center;max-width:900px;margin:0 auto;white-space:normal;overflow-wrap:anywhere;}
.typewriter-line:after{content:'▋';display:inline-block;margin-left:3px;animation:blink .75s steps(2,end) infinite;color:#f12a37;}
.typewriter-line.fade-out{opacity:0;transform:translateY(-5px);transition:opacity .9s ease,transform .9s ease;}
.blackout-chat{min-height:68vh;justify-content:center;align-items:center;gap:0;padding:40px 20px;background:#000;}
.blackout-chat .glitch-label{margin-bottom:40px;}
.blackout-chat .plain-secret-line{max-width:100%;width:100%;padding:15px 8px;border:0;background:transparent;text-align:center;font-family:'Spectral',serif;font-size:clamp(18px,3vw,28px);letter-spacing:.04em;line-height:1.8;opacity:0;transition:opacity 1.2s ease;text-shadow:0 0 12px #7b111b;}
.blackout-chat .plain-secret-line.line-visible{opacity:1;animation:secretBlink 1.15s steps(2,end) 2;}
.blackout-chat .plain-secret-line.line-fade{opacity:0;transition:opacity 1.3s ease;}
.blackout-chat .plain-secret-line.line-gone{display:none;}
.red-black-flash{animation:redBlackPulse .24s steps(2,end) 14!important;}
@keyframes secretBlink{0%,100%{opacity:1}45%{opacity:.12}}
@keyframes redBlackPulse{0%{opacity:.05;background:#050505}45%{opacity:.78;background:#a60014}70%{opacity:.12;background:#000}100%{opacity:.7;background:#c1121f}}

/* Access gate and four-building campus blueprint */
.access-gate{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:22px;background:radial-gradient(ellipse at center,#1a080b 0%,#050505 68%);transition:opacity .8s ease,visibility .8s ease;}
.access-gate.gate-hidden{opacity:0;visibility:hidden;pointer-events:none;}
.access-card{width:min(100%,420px);padding:clamp(24px,5vw,42px);text-align:center;background:linear-gradient(145deg,#111,#070707);border:1px solid #4a2025;box-shadow:0 25px 90px #000;border-radius:2px;}
.access-symbol{width:58px;height:58px;display:grid;place-items:center;margin:0 auto 22px;border:1px solid var(--red2);color:var(--red2);font:800 24px var(--display);}
.access-card h1{font:800 clamp(42px,8vw,62px)/.95 var(--display);margin:0 0 16px;letter-spacing:2px;}
.access-card h1 em{color:var(--red2);font-style:normal;}
.access-copy{color:#b6b0b0;font-size:12px;line-height:1.8;margin:0 auto 25px;max-width:280px;}
.access-label{display:block;text-align:left;color:#aaa;font:10px var(--mono);letter-spacing:2px;margin-bottom:8px;}
#accessCode{width:100%;padding:15px 12px;background:#050505;border:1px solid #4a393b;color:#fff;text-align:center;font:600 24px var(--mono);letter-spacing:12px;outline:none;margin-bottom:12px;border-radius:0;}
#accessCode:focus{border-color:var(--red2);box-shadow:0 0 0 1px #c1121f44;}
#accessSubmit:disabled{opacity:.6;cursor:wait;}
.access-message{font:10px/1.8 var(--mono);letter-spacing:1px;color:#888;margin:18px 0 0;}
.access-message.error{color:#ff6672;}
.player-id-label{display:block;margin-top:18px;color:#555;font:9px var(--mono);overflow-wrap:anywhere;}
body.access-locked{overflow:hidden;}
.building-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;}
.building-tile{min-height:155px;position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;gap:8px;padding:20px;border:1px solid #393939;background:linear-gradient(145deg,#171717,#090909);color:#f1efec;transition:border-color .2s,background .2s,transform .2s;}
.building-tile:hover,.building-tile:focus-visible,.building-tile.selected{border-color:var(--red2);background:linear-gradient(145deg,#261013,#0c0b0b);transform:translateY(-2px);outline:none;}
.building-letter{font:800 32px var(--display);color:var(--red2);line-height:1;}
.building-tile strong{font:700 clamp(14px,1.5vw,18px)/1.2 var(--display);letter-spacing:.7px;}
.building-tile small{font:9px var(--mono);letter-spacing:1px;color:#999;}
.building-open{font:9px var(--mono);letter-spacing:1px;color:#d6a2a6;margin-top:5px;}
@media(max-width:560px){.building-map{grid-template-columns:1fr}.building-tile{min-height:130px}.access-card{padding:25px 20px}}
.reveal-transition-flash{animation:introRedBlack 2.2s steps(1,end) both!important;}
@keyframes introRedBlack{0%,20%,55%,80%{background:#000}10%,40%,70%,92%{background:#8e0011}100%{background:#000}}


/* Final scene: typewriter text and full-screen signal glitch, while keeping the original case dialogue. */
#secretConversation.blackout-chat{
  position:fixed!important;
  inset:0!important;
  z-index:999!important;
  width:100vw!important;
  max-width:none!important;
  min-height:100vh!important;
  height:100vh!important;
  margin:0!important;
  padding:clamp(24px,6vw,80px)!important;
  box-sizing:border-box;
  background:#000!important;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:clamp(16px,3vh,30px);
}
#secretConversation.blackout-chat .glitch-label{color:#777;letter-spacing:.18em;font-size:.7rem;text-align:center}
#secretConversation.blackout-chat .plain-secret-line{
  width:min(100%,1100px);
  max-width:100%;
  padding:12px 8px;
  border:0;
  background:transparent;
  color:#c1121f;
  text-align:center;
  font-family:'Spectral',serif;
  font-size:clamp(20px,3.6vw,42px);
  line-height:1.5;
  letter-spacing:.04em;
  text-shadow:0 0 16px #c1121f66;
  overflow-wrap:anywhere;
  opacity:0;
  transition:opacity .9s ease;
}
#secretConversation.blackout-chat .plain-secret-line.line-visible{opacity:1}
#secretConversation.blackout-chat .plain-secret-line.line-fade{opacity:0}
#secretConversation.blackout-chat .plain-secret-line.line-gone{display:none}
#secretConversation.blackout-chat .glitch-flash{position:fixed;inset:0;z-index:1000}
#secretConversation.signal-lost{animation:endingSignalFlicker .18s steps(1,end) infinite}
#secretConversation.signal-lost .glitch-label,
#secretConversation.signal-lost .secret-final{visibility:hidden}
@keyframes endingSignalFlicker{0%,40%,80%{filter:brightness(.1)}20%,60%,100%{filter:brightness(1.8)}}

/* Intro uses the same typewriter pacing and red/black signal glitch as the final conversation. */
#schoolIntro{position:relative;}
#schoolIntro .intro-glitch-flash{position:fixed;inset:0;z-index:1000;pointer-events:none;opacity:0;background:#050505;}
#schoolIntro .intro-glitch-flash.intro-glitch-active{animation:redBlackPulse .24s steps(2,end) 14!important;}
