:root{--navy:#101a29;--deep:#0b1421;--panel:#162431;--panel2:#1c303c;--line:#53666b;--paper:#e8dec6;--white:#f6eee0;--muted:#b7b9ac;--gold:#efc076;--red:#d87468;--sea:#91b4ab;--mono:Consolas,'Courier New',monospace;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:1080px;background:var(--deep);color:var(--white);font-family:var(--sans)}button,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}a:hover,button:hover{filter:brightness(1.14)}:focus-visible{outline:2px solid var(--gold);outline-offset:3px}[hidden]{display:none!important}.game-shell{min-height:100vh;max-width:1900px;margin:auto;background:var(--navy);position:relative}.hud{height:78px;position:relative;z-index:20;display:flex;align-items:center;gap:26px;padding:0 3.1%;background:#0b1725;border-bottom:2px solid #627077;box-shadow:0 7px 22px #07111d83}.game-logo{display:flex;align-items:center;gap:12px;min-width:200px;font:700 15px/.9 var(--serif);letter-spacing:.11em}.game-logo b{color:var(--gold);font-size:19px}.logo-glyph{color:var(--gold);font:37px var(--serif);line-height:1}.hud-center{display:flex;flex-direction:column;gap:7px;padding-left:24px;border-left:1px solid #455665}.hud-label,.signal-indicator,.hud-nav,.hud-clock,.game-footer,.eyebrow{font:10px var(--mono);letter-spacing:.12em}.hud-label{color:#8fa6a6}.signal-indicator{color:#dca08a}.signal-indicator i{display:inline-block;width:7px;height:7px;background:var(--red);border-radius:50%;box-shadow:0 0 12px var(--red);margin-right:6px;animation:pulse 2s infinite}.hud-nav{margin-left:auto;display:flex;height:100%;align-items:center;gap:26px;color:#b9c1b8;white-space:nowrap}.hud-nav a{display:flex;align-items:center;height:100%;position:relative}.hud-nav a.current{color:var(--gold)}.hud-nav a.current:after{content:'';height:3px;background:var(--gold);position:absolute;bottom:-2px;left:0;right:0}.hud-clock{border-left:1px solid #455665;padding-left:24px;text-align:right;white-space:nowrap}.hud-clock small{display:block;font-size:9px;color:#91a2a0;margin-bottom:2px}.hud-clock strong{font-size:24px;letter-spacing:0;color:var(--gold);font-weight:400}.game-footer{min-height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 3%;background:#0a1623;border-top:1px solid #3f545f;color:#8d9e9d;font-size:9px}.game-footer a{color:var(--gold)}.game-button{border:2px solid #f6d194;background:#d89855;color:#1a2630;box-shadow:5px 5px 0 #091622;display:inline-flex;align-items:center;justify-content:space-between;gap:31px;padding:0 21px;min-height:49px;font:700 11px var(--mono);letter-spacing:.09em;white-space:nowrap}.game-button span{font-size:18px}.game-button:hover{background:#efb977;filter:none;transform:translate(2px,2px);box-shadow:3px 3px 0 #091622}.eyebrow{color:var(--gold)}@keyframes pulse{50%{opacity:.45;box-shadow:0 0 2px var(--red)}}

/* Opening scene */
.home-scene{height:max(730px,calc(100vh - 116px));position:relative;overflow:hidden;background:#172c3b}.scene-art,.room-art,.map-illustration,.photo-art{position:absolute;inset:0;background-image:url('assets/greyhaven.svg');background-size:cover;background-position:center 49%}.scene-art{transform:scale(1.02);animation:drift 14s ease-in-out infinite alternate}@keyframes drift{to{transform:scale(1.065) translateX(-.6%)}}.rain-layer{position:absolute;inset:0;opacity:.28;pointer-events:none;background:repeating-linear-gradient(106deg,transparent 0 53px,#bed3cf2d 54px 55px,transparent 56px 109px);animation:rain 6s linear infinite}@keyframes rain{to{background-position:-200px 390px}}.scene-vignette{position:absolute;inset:0;background:linear-gradient(90deg,#0c1827e8 0%,#101f30a8 31%,transparent 64%),linear-gradient(0deg,#07121ee8 0%,transparent 34%,#0a18298f 100%)}.scene-caption{position:absolute;top:28px;left:3.3%;font:10px var(--mono);letter-spacing:.17em;color:#d0d2bd}.scene-caption span{color:var(--gold);padding:0 7px}.title-card{position:absolute;top:12%;left:6%;width:520px}.quest-label{font:11px var(--mono);letter-spacing:.13em;color:#e4c28e}.quest-label span{color:var(--red);font-size:15px}.title-card h1{font:500 clamp(82px,7.2vw,122px)/.91 var(--serif);letter-spacing:-.065em;text-shadow:0 5px 15px #0d1b2d9c;margin:25px 0 27px}.title-card h1 em{font-style:italic;color:#f0c581}.title-period{color:var(--red)}.title-card p{max-width:465px;color:#e7e3d1;font:17px/1.62 var(--serif);text-shadow:0 2px 8px #071623;margin:0 0 32px}.scene-hotspot{position:absolute;z-index:2;display:flex;align-items:center;gap:10px}.hotspot-relay{left:56%;top:29%}.hotspot-sluice{left:73%;top:58%}.hotspot-ring{height:38px;width:38px;display:grid;place-items:center;border:2px solid var(--gold);background:#132533d9;color:var(--gold);border-radius:50%;font:700 16px var(--mono);box-shadow:0 0 0 8px #efc07624,0 0 24px #efc07686;animation:hotspot 2.6s ease-in-out infinite}.hotspot-sluice .hotspot-ring{border-color:#aad0bd;color:#aad0bd;box-shadow:0 0 0 8px #aad0bd22,0 0 24px #aad0bd64}@keyframes hotspot{50%{box-shadow:0 0 0 13px #efc07610,0 0 27px #efc076a8}}.hotspot-label{background:#101e2bdd;border:1px solid #799090a8;padding:11px 13px;font:10px var(--mono);letter-spacing:.08em;white-space:nowrap}.hotspot-label small{display:block;color:#d5a99a;font-size:8px;margin-top:4px}.scene-bottom{position:absolute;left:3.2%;right:3.2%;bottom:30px;display:flex;gap:20px;align-items:stretch}.dialogue-box{background:#101e2cf2;border:2px solid #b09f7b;box-shadow:7px 7px 0 #0a1623,0 12px 35px #06111ab0;display:flex;align-items:center;min-height:146px;max-width:850px;flex:1;padding:11px;gap:20px}.dialogue-box img{height:118px;width:118px;object-fit:cover;object-position:top;border:2px solid #938568;image-rendering:auto}.dialogue-copy{flex:1}.speaker{color:var(--gold);font:700 11px var(--mono);letter-spacing:.12em;margin-bottom:11px}.speaker span{font-weight:400;color:#93a7a3;margin-left:9px}.dialogue-copy p{font:16px/1.55 var(--serif);margin:0;max-width:650px}.dialogue-next{border:0;background:transparent;color:var(--gold);align-self:flex-end;font-size:15px;padding:10px}.scene-side-note{min-width:245px;align-self:end;background:#102230e3;border-left:3px solid var(--red);padding:19px 21px;display:flex;flex-direction:column;gap:6px}.scene-side-note span{font:10px var(--mono);color:var(--red);letter-spacing:.13em}.scene-side-note strong{font:18px var(--serif)}.scene-side-note small{color:#a6b7b2;font:10px var(--mono)}

/* Chapter map */
.map-main{height:max(740px,calc(100vh - 116px));position:relative;overflow:hidden}.map-illustration{filter:brightness(.49) saturate(.72);background-position:center 48%;transform:scale(1.05)}.map-shade{position:absolute;inset:0;background:linear-gradient(90deg,#101d2bae,#0b1927aa),linear-gradient(0deg,#071321ad,transparent 40%)}.map-top{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:flex-end;padding:35px 4% 25px}.map-top h1,.journal-intro h1{font:500 59px/.98 var(--serif);letter-spacing:-.05em;margin:14px 0}.map-top h1 em,.journal-intro h1 em{color:var(--gold)}.map-top p,.journal-intro p{font:14px/1.5 var(--serif);color:#c2c8ba;margin:0}.map-counter{text-align:right}.map-counter strong{font:52px var(--serif);color:var(--gold)}.map-counter span{display:block;color:#a8bcb2;font:9px var(--mono);letter-spacing:.11em}.map-content{position:relative;z-index:3;margin:0 4%;height:calc(100% - 174px);display:grid;grid-template-columns:minmax(600px,1fr) minmax(350px,32%);gap:22px}.act-map{position:relative;border:2px solid #a09c7a;background:#16313a8a;box-shadow:inset 0 0 100px #06131ea1,5px 5px 0 #0a1624;overflow:hidden}.act-map:before{content:'';position:absolute;inset:0;background-image:linear-gradient(#b4b59812 1px,transparent 1px),linear-gradient(90deg,#b4b59812 1px,transparent 1px);background-size:48px 48px;transform:rotate(-7deg) scale(1.2)}.route-path{position:absolute;left:16%;top:17%;width:68%;height:64%;border:3px dashed #c4ba8e83;transform:rotate(-17deg);border-radius:45% 54% 36% 48%}.act-node{position:absolute;z-index:2;border:0;background:transparent;color:var(--white);display:flex;align-items:center;gap:10px;text-align:left;padding:0}.node-1{left:12%;top:73%}.node-2{left:28%;top:46%}.node-3{left:47%;top:63%}.node-4{left:60%;top:30%}.node-5{left:73%;top:52%}.node-6{left:72%;top:13%}.node-dot{width:47px;height:47px;flex:none;display:grid;place-items:center;background:#182b3a;border:2px solid #9fb0a4;box-shadow:0 4px 0 #07131f;border-radius:50%;font:700 15px var(--mono)}.act-node.selected .node-dot{background:var(--gold);border-color:#f6dfa6;color:#26313a;box-shadow:0 0 0 8px #efc0762a,0 5px 0 #07131f}.node-label{background:#101e2be8;border:1px solid #667b7c;padding:7px 9px;color:var(--gold);font:9px var(--mono);white-space:nowrap}.node-label strong{display:block;color:var(--white);font:15px var(--serif);margin:4px 0}.node-label small{color:#94a9a4;font:9px var(--mono)}.map-legend{position:absolute;left:25px;top:25px;display:flex;gap:17px;color:#b7c2b5;font:9px var(--mono)}.map-legend i{display:inline-block;width:9px;height:9px;border:1px solid #abbbae;background:#283a3e;margin-right:4px}.map-legend span:first-child i{background:var(--gold)}.chapter-scroll{background:#111f2bea;border:2px solid #8b9384;box-shadow:5px 5px 0 #091522;display:flex;flex-direction:column;min-height:0}.scroll-head{height:60px;padding:13px 18px;background:#283b42;border-bottom:1px solid #61746d;display:flex;flex-direction:column;gap:5px}.scroll-head span{font:9px var(--mono);color:var(--gold);letter-spacing:.11em}.scroll-head strong{font:12px var(--serif)}.act-chapters{padding:0 15px 15px;overflow:auto;flex:1;scrollbar-color:#8b9c8e #152530;scrollbar-width:thin}.act-description{color:#a8b6ac;font:12px/1.6 var(--serif);padding:13px 4px 5px;margin:0}.chapter-entry{display:grid;grid-template-columns:31px 1fr auto;align-items:center;gap:9px;padding:13px 8px;border-bottom:1px solid #4d62685c}.chapter-entry span{color:var(--gold);font:11px var(--mono)}.chapter-entry strong{font:14px var(--serif);font-weight:400}.chapter-entry small{color:#8caaa6;font:8px var(--mono)}.chapter-entry.available{background:#34433c91;border:1px solid #a3ad8b}.chapter-entry.available small{color:var(--gold)}.chapter-entry.locked{opacity:.67}.scroll-bottom{border-top:1px solid #4c6669;padding:12px 15px;color:#93a9a1;font:9px var(--mono);letter-spacing:.06em}

/* Relay puzzle */
.puzzle-scene{height:340px;position:relative;overflow:hidden}.room-art{background-image:url('assets/control-room.svg');background-position:center 51%;filter:saturate(.85)}.room-shade{position:absolute;inset:0;background:linear-gradient(90deg,#0b1724db,transparent 70%),linear-gradient(0deg,#0b1724e5,transparent 65%)}.puzzle-scene-info{position:absolute;top:20px;left:3%;right:3%;display:flex;justify-content:space-between;color:#d6dfd2;font:9px var(--mono);letter-spacing:.1em}.puzzle-scene-info a{color:var(--gold)}.scene-chapter{position:absolute;left:4%;top:85px}.scene-chapter small{font:10px var(--mono);color:var(--gold);letter-spacing:.12em}.scene-chapter h1{font:500 52px/.97 var(--serif);letter-spacing:-.05em;margin:14px 0;text-shadow:0 4px 12px #071320}.scene-chapter h1 span{color:var(--gold)}.puzzle-dialogue{position:absolute;right:3%;bottom:22px;width:550px;display:flex;gap:14px;align-items:center;border:2px solid #b4a783;background:#111e2cf3;box-shadow:5px 5px 0 #0a1723;padding:9px}.puzzle-dialogue img{height:74px;width:74px;object-fit:cover;border:1px solid #9e987b}.puzzle-dialogue span{color:var(--gold);font:10px var(--mono)}.puzzle-dialogue p{font:13px/1.45 var(--serif);margin:7px 0 0}.workbench{background:#10202c;padding:27px 3% 20px;min-height:530px}.workbench-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}.workbench-heading h2{font:500 29px var(--serif);margin:5px 0 0}.workbench-progress{min-width:205px;color:#9aafa9;font:9px var(--mono)}.workbench-progress>div{height:5px;background:#314956;margin:8px 0}.workbench-progress i{display:block;width:5.1%;height:5px;background:var(--gold)}.workbench-progress strong{color:var(--gold);font-weight:400}.workbench-grid{display:grid;grid-template-columns:minmax(290px,31%) 1fr;gap:18px}.mission-panel,.coding-panel{border:2px solid #617573;background:#192b36;box-shadow:4px 4px 0 #081722}.panel-header,.file-tabs,.console-label{display:flex;justify-content:space-between;align-items:center;min-height:41px;padding:0 15px;background:#293d46;border-bottom:1px solid #65756e;color:var(--gold);font:10px var(--mono);letter-spacing:.09em}.mission-content{padding:18px}.mini-label{color:#9db8ad;font:9px var(--mono);letter-spacing:.1em}.packet{position:relative;background:#0d1c28;border:1px solid #6f867f;color:var(--gold);font:21px var(--mono);padding:18px;margin:13px 0}.packet span{color:var(--red)}.packet small{display:block;color:#8eaaa3;font:8px var(--mono);margin-top:10px}.mission-content p{font:13px/1.6 var(--serif);color:#d1d4c5}.mission-content code,.hint code{font:11px var(--mono);color:var(--gold)}.mission-content ol{border-top:1px solid #526b70;margin:17px 0 0;padding:13px 0 0 22px;font:11px/2 var(--mono);color:#b8c7b9}.mission-content li::marker{color:var(--gold)}.hint{border-top:1px solid #607772}.hint summary{padding:15px 18px;cursor:pointer;list-style:none;font:10px var(--mono);color:var(--gold)}.hint summary::-webkit-details-marker{display:none}.hint summary span{float:right}.hint p{padding:0 17px 17px;font:12px/1.5 var(--serif);margin:0}.file-tabs{padding:0;justify-content:flex-start;background:#233a45}.file-tabs button{align-self:stretch;background:transparent;border:0;border-right:1px solid #51676a;color:#9eb2ac;font:11px var(--mono);padding:0 17px}.file-tabs button.active{background:#102431;color:var(--gold);border-bottom:2px solid var(--gold)}.file-tabs button small{font-size:8px;color:#879b99}.file-tabs>span{margin-left:auto;padding-right:17px;color:#8ba6a3;font-size:9px}.code-view{height:189px;display:flex;background:#0b1a26;padding-top:16px}.gutter{width:49px;flex:none;padding-right:10px;text-align:right;color:#637d83;font:12px/29px var(--mono)}.code-view textarea{height:155px;width:calc(100% - 55px);resize:none;border:0;outline:0;background:transparent;color:#d3e8d4;font:13px/29px var(--mono);tab-size:4}.test-view{height:189px;background:#0b1a26;color:#d2e4d3;padding:11px 20px;margin:0;overflow:auto;font:11px/16px var(--mono)}.test-console{background:#081620}.console-label{min-height:31px;color:#abbcaf;background:#21353f;font-size:9px}.test-console pre{height:91px;overflow:auto;margin:0;padding:12px 17px;color:#d5dace;font:11px/1.6 var(--mono);white-space:pre-wrap}.muted{color:#7c9a9b}.error{color:#e48e7b}.success{color:#a0d9b5!important}.coding-actions{height:57px;border-top:1px solid #425e64;display:flex;align-items:center;justify-content:space-between;padding:0 15px;color:var(--red);font:10px var(--mono)}.coding-actions .game-button{min-height:36px;padding:0 12px;font-size:10px}.prototype-note{font:9px var(--mono);color:#7e9e9f;margin-top:17px;text-align:right;letter-spacing:.04em}

/* Casebook */
.journal-main{min-height:calc(100vh - 116px);padding:40px 4% 18px;background:radial-gradient(circle at 28% 25%,#263947,#0e1b2a 70%)}.journal-intro h1{margin:14px 0}.journal-intro{margin-bottom:23px}.journal-layout{display:grid;grid-template-columns:minmax(600px,1.5fr) minmax(335px,.7fr);gap:25px;min-height:525px}.evidence-board{position:relative;min-height:525px;overflow:hidden;border:11px solid #725a46;box-shadow:inset 0 0 0 3px #9a8060,7px 7px 0 #07131e,0 13px 35px #071320a6;background:linear-gradient(120deg,#6b6757,#4d5a54 52%,#5d5c4b)}.board-grain{position:absolute;inset:0;opacity:.3;background-image:repeating-linear-gradient(0deg,transparent 0 4px,#162f3320 5px 6px),repeating-linear-gradient(90deg,transparent 0 17px,#14273314 18px 19px)}.board-label{position:absolute;top:13px;left:17px;right:17px;color:#e0ddc5;font:10px var(--mono);letter-spacing:.1em;display:flex;justify-content:space-between}.string{position:absolute;border-top:3px solid #c86e5d;transform-origin:left center;z-index:2;box-shadow:0 2px 3px #1c252984}.string-one{width:34%;left:37%;top:35%;transform:rotate(12deg)}.string-two{width:29%;left:44%;top:54%;transform:rotate(-18deg)}.pin{position:absolute;z-index:5;height:12px;width:12px;border-radius:50%;background:#c76657;box-shadow:2px 3px 2px #172327a8}.pin-one{left:37%;top:34%}.pin-two{left:70%;top:40%}.photo-card,.paper-clue,.station-note{position:absolute;box-shadow:5px 7px 9px #17252a8c}.photo-card{left:5%;top:13%;width:32%;padding:9px;background:#dfd5b9;transform:rotate(-5deg)}.photo-art{position:relative;height:180px;background-size:cover;background-position:center 54%;filter:sepia(.3) brightness(.75)}.photo-caption{color:#33414a;font:9px var(--mono);padding:12px 3px 2px}.paper-clue{left:40%;top:12%;width:28%;min-height:290px;background:#e5d8b9;color:#29353a;padding:22px;transform:rotate(3deg)}.paper-clue>span,.station-note span{font:9px var(--mono);letter-spacing:.12em;color:#855347}.paper-clue h2{font:500 26px/1.13 var(--serif);margin:23px 0}.paper-clue p{font:24px var(--mono);color:#8b4c3c}.paper-rule{border-bottom:1px solid #9b8c76;margin:24px 0}.paper-clue small{font:9px/1.6 var(--mono)}.station-note{left:22%;bottom:7%;width:34%;background:#bbcfb5;color:#293d41;padding:17px 19px;transform:rotate(-3deg)}.station-note p{font:16px/1.35 var(--serif);margin:11px 0}.station-note strong{font:11px var(--mono);color:#914f41}.red-stamp{position:absolute;right:7%;bottom:12%;border:4px double #c47a6c;color:#b85f53;transform:rotate(9deg);padding:14px;font:700 19px var(--mono);text-align:center;letter-spacing:.12em}.red-stamp small{font-size:9px}.board-edge{position:absolute;bottom:12px;right:14px;color:#c9cebd;font:8px var(--mono);letter-spacing:.08em}.case-ledger{border:2px solid #7f8c7e;background:#172b35;box-shadow:5px 5px 0 #091623;padding:20px;display:flex;flex-direction:column}.ledger-head{display:flex;justify-content:space-between;color:var(--gold);font:10px var(--mono);letter-spacing:.1em;border-bottom:1px solid #526c6d;padding-bottom:15px;margin-bottom:13px}.ledger-head strong{font-weight:400}.ledger-entry{display:grid;grid-template-columns:55px 1fr;gap:11px;position:relative;padding:13px 0 22px;border-bottom:1px solid #4c666253}.ledger-entry time{font:10px var(--mono);color:var(--gold)}.ledger-entry strong{font:16px var(--serif);font-weight:400}.ledger-entry p{color:#aebfb4;font:11px/1.5 var(--serif);margin:7px 0 0}.ledger-entry.pending{opacity:.55}.ledger-callout{border-left:3px solid var(--red);padding:10px 12px;background:#243740;margin:20px 0}.ledger-callout span{font:9px var(--mono);color:var(--red)}.ledger-callout p{font:14px/1.4 var(--serif);margin:7px 0}.case-ledger .game-button{align-self:flex-start;margin-top:auto}.journal-note{text-align:right;color:#809e9e;font:9px var(--mono);padding-top:20px}

/* V3: case file directory */
.cases-main{background:#12232f}.cases-hero{height:320px;position:relative;overflow:hidden;border-bottom:3px solid #907f62}.cases-hero-art,.case-hero-art,.story-scene-art{position:absolute;inset:0;background:url('assets/greyhaven.svg') center 43%/cover no-repeat}.cases-hero-art{filter:saturate(.7) brightness(.82)}.cases-hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#0c1929f5 0%,#11283cc5 42%,#10243a1f 80%),linear-gradient(0deg,#081522a8,transparent 80%)}.cases-hero-content{position:absolute;left:4%;top:43px;max-width:660px}.cases-hero h1{font:500 76px/.98 var(--serif);letter-spacing:-.055em;margin:15px 0}.cases-hero h1 em{color:var(--gold)}.cases-hero p{font:15px/1.5 var(--serif);color:#e1e1ce;max-width:580px;margin:0}.cases-summary{display:flex;gap:25px;margin-top:22px;font:10px var(--mono);letter-spacing:.1em;color:#becbbb}.cases-summary b{font:20px var(--serif);color:var(--gold);margin-right:6px}.case-stamp{position:absolute;right:8%;top:26%;transform:rotate(12deg);border:5px double #d98271;color:#e69a84;padding:18px 27px;text-align:center;font:700 22px/1.1 var(--mono);letter-spacing:.14em;text-shadow:0 2px 8px #101d2d}.case-directory{padding:0 4% 90px;background:radial-gradient(circle at 12% 8%,#2a3c42,#112330 38%,#0d1d29 85%)}.directory-top{height:70px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #5e756f;color:#a8b9ac;font:10px var(--mono);letter-spacing:.11em}.directory-top span:last-child{color:var(--gold)}.case-act{padding-top:39px;scroll-margin-top:20px}.case-act-heading{display:flex;align-items:center;gap:24px;border-bottom:1px solid #819184;padding-bottom:18px;margin-bottom:22px}.act-index{background:var(--gold);color:#202e31;font:700 11px var(--mono);padding:13px 12px;white-space:nowrap;box-shadow:3px 3px 0 #0b1622}.case-act-heading h2{font:500 33px var(--serif);margin:0 0 4px}.case-act-heading p{font:12px var(--serif);color:#aebdb1;margin:0}.act-range{margin-left:auto;color:var(--gold);white-space:nowrap;font:10px var(--mono);letter-spacing:.1em}.case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.case-card{background:#e3d9c2;color:#26343a;border:2px solid #ceb88f;box-shadow:5px 6px 0 #071520;min-height:270px;display:flex;flex-direction:column;position:relative;transition:transform .18s,box-shadow .18s}.case-card:after{content:'';position:absolute;top:7px;bottom:7px;left:7px;right:7px;border:1px solid #6e685439;pointer-events:none}.case-card.active:hover{transform:translate(-3px,-4px);box-shadow:8px 10px 0 #071520;filter:none}.case-card.future{background:#d1ccb9}.case-card-art{height:73px;flex:none;display:flex;align-items:start;justify-content:space-between;padding:11px 13px;background:#253b46;color:#ead4ab;font:10px var(--mono);letter-spacing:.11em;border-bottom:3px solid #b39164}.case-card.active .case-card-art{border-bottom-color:var(--red)}.case-card-content{padding:15px 18px 17px;display:flex;flex-direction:column;flex:1}.case-card-meta{display:flex;justify-content:space-between;gap:8px;color:#835b4f;font:9px var(--mono);letter-spacing:.08em}.case-card.active .case-card-meta span:last-child{color:#a34f42;font-weight:700}.case-card h3{font:500 25px/1.09 var(--serif);letter-spacing:-.025em;margin:18px 0 10px}.case-card p{font:12px/1.45 var(--serif);color:#58625e;margin:0 0 17px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.case-card-bottom{margin-top:auto;padding-top:12px;border-top:1px solid #a6a088;display:flex;align-items:center;justify-content:space-between;gap:8px}.concept-tag{font:9px/1.35 var(--mono);color:#42605c;text-transform:uppercase;max-width:85%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.case-arrow{width:28px;height:28px;border:1px solid #9a9d83;border-radius:50%;display:grid;place-items:center;font-size:16px;flex:none}.case-card.active .case-arrow{background:#b65d4c;color:#fff4df;border-color:#9f453d}.case-directory-end{display:flex;align-items:center;gap:17px;border:1px solid #8e927d;background:#263a3f;padding:20px 25px;margin-top:45px}.case-directory-end>span{font-size:24px;color:var(--gold)}.case-directory-end p{font:17px var(--serif);margin:0}.case-directory-end a{margin-left:auto;font:10px var(--mono);color:var(--gold);letter-spacing:.08em}

/* V3: individual case and three primary tabs */
.case-main{background:#10212d;min-height:calc(100vh - 116px)}.case-hero{height:225px;position:relative;overflow:hidden;border-bottom:2px solid #8e907c}.case-hero-art{background-image:url('assets/control-room.svg');background-position:center 47%}.case-hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#0d1c2df0 0%,#112739cc 55%,#1025393b 100%),linear-gradient(0deg,#0815239c,transparent)}.case-hero-top{position:absolute;top:20px;left:3%;right:3%;display:flex;justify-content:space-between;font:10px var(--mono);letter-spacing:.1em;color:#bcc9b9}.case-hero-top a{color:var(--gold)}.case-hero-copy{position:absolute;left:4%;bottom:27px}.case-hero-copy>span{font:10px var(--mono);color:var(--gold);letter-spacing:.13em}.case-hero-copy h1{font:500 46px/.95 var(--serif);letter-spacing:-.04em;margin:10px 0}.case-hero-copy h1 span{color:var(--gold)}.case-hero-copy p{font:14px var(--serif);color:#c6d0bd;margin:0}.case-hero-mark{position:absolute;right:5%;bottom:20px;font:70px var(--serif);color:#f1d39675}.case-hero-mark small{font:18px var(--serif);color:#d4c9ab}.case-tab-shell{padding:0 3% 34px}.case-tabs{min-height:60px;display:flex;align-items:stretch;border-bottom:2px solid #8b9888;background:#162b36}.case-tabs button{border:0;border-right:1px solid #465e63;background:transparent;color:#a8beb1;padding:0 27px;font:11px var(--mono);letter-spacing:.06em}.case-tabs button span{color:var(--gold);margin-right:9px}.case-tabs button.selected{background:#e0d6bc;color:#21343b;font-weight:700;position:relative}.case-tabs button.selected span{color:#9d5d4c}.case-tabs button.selected:after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:3px;background:var(--gold)}.tab-progress{margin-left:auto;display:flex;align-items:center;gap:13px;padding:0 18px;color:#95a9a4;font:9px var(--mono);white-space:nowrap}.tab-progress b{color:var(--gold);font-weight:400}.case-panel{min-height:525px;border:1px solid #657970;border-top:0;box-shadow:5px 5px 0 #081723}.story-panel{display:grid;grid-template-columns:55% 45%}.story-scene{position:relative;min-height:525px;overflow:hidden}.story-scene-art{background-image:url('assets/control-room.svg');background-position:center center}.story-scene-filter{position:absolute;inset:0;background:linear-gradient(0deg,#081823e9 0%,#1023363b 55%,#11213252)}.story-scene-tag{position:absolute;top:20px;left:22px;background:#102331c9;border:1px solid #a2aa88;color:var(--gold);padding:10px;font:9px var(--mono);letter-spacing:.07em}.story-speech{position:absolute;left:20px;right:20px;bottom:24px;display:flex;gap:15px;align-items:center;background:#0f202ff0;border:2px solid #b6a27a;padding:12px;box-shadow:5px 5px 0 #081622}.story-speech img{width:84px;height:84px;object-fit:cover;border:1px solid #afaa89}.story-speech strong{color:var(--gold);font:11px var(--mono)}.story-speech small{color:#9eada4;font:9px var(--mono);margin-left:8px}.story-speech p{font:15px/1.45 var(--serif);margin:7px 0 0}.story-brief{background:#e1d5b9;color:#2a383a;padding:30px 33px;display:flex;flex-direction:column}.brief-heading{display:flex;justify-content:space-between;align-items:center;color:#a45d4e;font:10px var(--mono);letter-spacing:.1em}.brief-heading i{font-size:22px;font-style:normal}.story-brief h2{font:500 40px/1.06 var(--serif);letter-spacing:-.04em;margin:22px 0 19px}.story-brief p{font:15px/1.6 var(--serif);color:#4b5a55}.story-brief code,.code-brief code{font:13px var(--mono);color:#8f4d43}.story-objective{border-top:1px solid #9a9279;padding:15px 0;margin-top:auto;margin-bottom:18px}.story-objective span{display:block;color:#9f5749;font:10px var(--mono);letter-spacing:.1em;margin-bottom:7px}.story-objective strong{font:18px var(--serif);font-weight:400}.story-brief .game-button{align-self:flex-start}
.intro-panel{display:grid;grid-template-columns:55% 45%;background:#e1d8c2;color:#283a3d}.intro-left{padding:37px 39px}.intro-left .eyebrow{color:#a4574d}.intro-left h2{font:500 45px var(--serif);letter-spacing:-.04em;margin:18px 0}.intro-lead{font:17px/1.5 var(--serif);max-width:630px;color:#40544e}.lesson-list{margin-top:25px;border-top:1px solid #afa489}.lesson-list>div{display:flex;gap:19px;border-bottom:1px solid #afa489;padding:13px 0}.lesson-list>div>span{color:#a75b4d;font:11px var(--mono);padding-top:3px}.lesson-list strong{font:20px var(--serif)}.lesson-list p{font:12px/1.4 var(--serif);color:#5e6b5f;margin:4px 0 0}.technical-note{border-left:4px solid #b66654;background:#d1c9b0;padding:13px 16px;margin-top:22px}.technical-note span{font:9px var(--mono);color:#9c4f44}.technical-note p{font:13px/1.5 var(--serif);margin:6px 0 0}.intro-right{background:#1a303a;padding:28px 29px;display:flex;flex-direction:column;gap:17px}.technical-card{background:#142531;border:1px solid #849484;color:var(--white);padding:20px}.technical-card-top{display:flex;justify-content:space-between;color:var(--gold);font:9px var(--mono);letter-spacing:.1em}.technical-card h3{font:500 28px/1.1 var(--serif);margin:25px 0 10px}.technical-card>p{font:13px/1.5 var(--serif);color:#b8c6b8}.technical-card pre{background:#0a1a25;border-left:3px solid var(--gold);padding:17px;color:#d4e7d1;font:12px/1.8 var(--mono);overflow:auto}.technical-steps{display:flex;justify-content:space-between;gap:8px}.technical-steps>div{display:flex;gap:6px;align-items:center}.technical-steps span{color:var(--gold);font:14px var(--serif)}.technical-steps p{font:10px var(--mono);color:#adbeaf}.reference-strip{border-left:3px solid var(--red);padding:10px 14px;background:#273d43}.reference-strip span{display:block;color:#e09a87;font:9px var(--mono);margin-bottom:6px}.reference-strip strong{font:15px var(--serif);font-weight:400}.intro-right .game-button{align-self:flex-start;margin-top:auto}
.code-panel{background:#142833;padding:23px}.code-brief{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:19px}.code-brief h2{font:500 29px var(--serif);margin:8px 0}.code-brief p{font:13px var(--serif);color:#bfcbbd;margin:0}.code-brief code{color:var(--gold);font-size:11px}.code-brief-status{min-width:190px;border:1px solid #82958a;background:#1e3740;padding:10px 14px}.code-brief-status span{display:block;color:#a6bbae;font:9px var(--mono);margin-bottom:7px}.code-brief-status strong{font:17px var(--mono);color:#e7dfbd;font-weight:400}.code-brief-status i{color:var(--red);font-style:normal}.case-workspace{display:grid;grid-template-columns:minmax(310px,40%) minmax(470px,1fr);gap:15px;align-items:start}.test-sheet{background:#ded5bb;color:#26393a;border:2px solid #b8ab87;box-shadow:4px 4px 0 #0a1822}.sheet-header,.editor-head,.console-head{min-height:39px;display:flex;justify-content:space-between;align-items:center;padding:0 14px;font:11px var(--mono);letter-spacing:.02em}.sheet-header{background:#b6b59b;color:#24363a}.sheet-header small{font:9px var(--mono);color:#6c6256}.test-sheet pre{margin:0;padding:21px 17px;font:11px/1.65 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}.test-sheet-foot{border-top:1px solid #b8ad8f;padding:12px 17px;font:12px var(--serif);color:#6e6756}.case-hint{border-top:1px solid #b8ad8f}.case-hint summary{cursor:pointer;list-style:none;padding:13px 17px;color:#9e5647;font:10px var(--mono)}.case-hint summary::-webkit-details-marker{display:none}.case-hint summary span{float:right}.case-hint p{padding:0 17px 13px;font:12px/1.5 var(--serif);margin:0}.case-hint code{font:11px var(--mono)}.editor-stack{display:flex;flex-direction:column;gap:12px}.case-editor,.case-console{border:2px solid #6a807c;background:#0a1b26;box-shadow:4px 4px 0 #091722}.editor-head,.console-head{background:#2a414a;color:var(--gold)}.editor-head small{color:#b1c4b7;font:9px var(--mono)}.editor-body{display:flex;height:190px;padding-top:17px}.editor-gutter{flex:none;width:38px;text-align:right;color:#638085;font:12px/27px var(--mono);padding-right:8px}.editor-body textarea{height:160px;width:calc(100% - 40px);border:0;outline:0;resize:none;background:transparent;color:#d5e9d2;font:12px/27px var(--mono);tab-size:4}.case-console pre{min-height:96px;margin:0;padding:11px 15px;color:#d5e4d5;font:11px/1.65 var(--mono);white-space:pre-wrap}.console-actions{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #516c71;padding:8px 13px;color:var(--red);font:10px var(--mono)}.console-actions .game-button{min-height:35px;font-size:10px;padding:0 12px}.clue-reveal{display:flex;align-items:center;gap:20px;background:#29463e;border:1px solid #9fbd9d;padding:14px 18px;margin-top:18px}.clue-reveal span{color:#b2dfb8;font:10px var(--mono)}.clue-reveal strong{font:17px var(--serif);font-weight:400}.clue-reveal a{margin-left:auto;color:var(--gold);font:10px var(--mono)}.code-panel .prototype-note{margin:18px 0 0;color:#92aaa6}

/* The game HUD spans the full viewport on every screen. */
.game-shell{max-width:none;width:100%}

/* Start page refinement */
.page-home .game-shell{max-width:none;width:100%}.page-home .home-scene{height:max(730px,calc(100vh - 121px))}.page-home .scene-art{background-image:url('assets/greyhaven-home.svg');background-position:center 51%}.logo-glyph{position:relative;isolation:isolate;text-shadow:0 0 5px #fff2bb,0 0 16px #e9b96d,0 0 31px #e9b96d99;animation:logo-beacon 3.8s ease-in-out infinite}.logo-glyph:before{content:'';position:absolute;z-index:-1;left:50%;top:52%;width:48px;height:48px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,#f8d58d5c 0%,#f2bb6d1c 42%,transparent 70%)}@keyframes logo-beacon{0%,100%{filter:brightness(.88);text-shadow:0 0 4px #fff2bb,0 0 11px #e9b96d}50%{filter:brightness(1.25);text-shadow:0 0 8px #fff5c9,0 0 23px #e9b96d,0 0 41px #e9b96d99}}.page-home .title-card{top:5%;left:4.8%;width:min(560px,52vw)}.page-home .title-card h1{margin:19px 0 17px}.page-home .title-card .hero-lead{max-width:515px;font:17px/1.53 var(--serif);color:#f1ead7;margin:0 0 17px}.learning-loop{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:555px;margin:0 0 20px}.learning-loop>div{background:#0c1e2cbd;border-top:2px solid #b4a17b;padding:9px 10px 10px;min-height:58px;display:flex;flex-direction:column;gap:5px}.learning-loop b{color:var(--gold);font:11px var(--mono)}.learning-loop span{color:#e3ead9;font:10px/1.25 var(--mono);letter-spacing:.04em}.page-home .hero-button{min-height:59px;min-width:283px;padding:0 22px;font:700 14px var(--mono);letter-spacing:.045em}.page-home .hero-button span{font-size:24px}.page-home .title-card .hero-footnote{font:11px/1.4 var(--serif);color:#d0d4c2;margin:14px 0 0}.page-home .hero-footnote em{color:#f1d49c}.page-home .hotspot-relay{left:61%;top:26%}.page-home .hotspot-sluice{left:76%;top:56%}.page-home .game-footer{min-height:43px;font-size:11px;color:#b2c5b6}.page-home .scene-vignette{background:linear-gradient(90deg,#0c1827ed 0%,#102031a6 34%,transparent 67%),linear-gradient(0deg,#07121ee6 0%,transparent 37%,#0a182976 100%)}@media (prefers-reduced-motion:reduce){.logo-glyph,.page-home .scene-art,.page-home .rain-layer,.page-home .hotspot-ring{animation:none}}

/* Provisional GO Silent wordmark */
.game-logo .brand-name{display:flex;flex-direction:column;gap:3px;line-height:1}.game-logo .brand-name b{color:#f4c77d;font:900 21px/1 var(--sans);letter-spacing:.08em}.game-logo .brand-name span{color:#f3eee2;font:500 13px/1 var(--sans);letter-spacing:.24em}.page-home .title-card .title-go{font-family:var(--sans);font-weight:900;letter-spacing:-.09em;color:#f7f2e4;text-shadow:0 4px 18px #071321,0 0 20px #e8c17d45}
.game-logo .brand-name small{color:#9fb0a6;font:700 8px/1 var(--mono);letter-spacing:.12em;white-space:nowrap}.page-home .title-card h1{margin-bottom:5px}.page-home .story-subtitle{color:#edc486;font:700 12px var(--mono);letter-spacing:.25em;margin:0 0 17px;text-shadow:0 2px 8px #071321}
/* Two-line title treatment: GO Silent / The Last Warning */
.game-logo .brand-name .brand-primary{display:flex;flex-direction:row;align-items:baseline;gap:7px;white-space:nowrap}.game-logo .brand-name .brand-primary span{color:#f3eee2;font:500 18px/1 var(--serif);letter-spacing:-.02em}.game-logo .brand-name small{color:#c5c7b7;font:500 12px/1 var(--serif);letter-spacing:.01em;white-space:nowrap}.page-home .title-card h1{font-size:clamp(78px,6.6vw,112px);line-height:1;white-space:nowrap;margin:20px 0 3px}.page-home .story-subtitle{color:#f0c989;font:500 36px/1.1 var(--serif);letter-spacing:-.035em;margin:0 0 19px;text-shadow:0 2px 9px #071321}
.page-home .learning-loop>div{min-height:69px;padding:10px 11px}.page-home .learning-loop b{font-size:12px}.page-home .learning-loop span{font-size:12px;line-height:1.3}

/* Harbor art direction: quiet sky for copy, inhabited city and floodworks on the right. */
.page-home .scene-art{
  background-image:url('assets/greyhaven-harbor.png');
  background-position:center;
  background-size:cover;
  transform:none;
  animation:none;
}
.page-home .scene-vignette{
  pointer-events:none;
  background:linear-gradient(90deg,rgba(7,17,29,.72) 0%,rgba(9,21,34,.53) 28%,rgba(11,24,37,.13) 47%,transparent 68%),linear-gradient(0deg,rgba(5,14,23,.68),transparent 30%);
}
.page-home .rain-layer{
  background:url('assets/harbor-rain.svg') repeat;
  opacity:.18;
  animation:harbor-rain 2.6s linear infinite;
}
@keyframes harbor-rain{to{background-position:240px 640px}}
.page-home .scene-hotspot{z-index:3;}
.page-home .hotspot-relay{transform:translate(-19px,-19px);}
.page-home .hotspot-sluice{flex-direction:row-reverse;transform:translate(calc(-100% + 19px),-19px);}
.page-home .hotspot-label{
  background:rgba(10,24,35,.86);
  border-color:rgba(185,197,175,.5);
  box-shadow:0 4px 18px rgba(3,11,18,.25);
  backdrop-filter:blur(5px);
}
.page-home .hotspot-ring{animation:none;box-shadow:0 0 0 6px #efc07616,0 0 18px #efc07640;}
.page-home .hotspot-sluice .hotspot-ring{box-shadow:0 0 0 6px #aad0bd16,0 0 18px #aad0bd40;}
.page-home .scene-hotspot:hover .hotspot-ring{box-shadow:0 0 0 9px #efc07624,0 0 26px #efc07670;}
.page-home .dialogue-box{background:rgba(12,25,37,.92);backdrop-filter:blur(8px);}
.page-home .scene-side-note{background:rgba(12,28,39,.9);backdrop-filter:blur(8px);}
@media(prefers-reduced-motion:reduce){.page-home .rain-layer{animation:none;}}

/* Case files: a selectable route across Greyhaven */
.page-cases .game-shell{max-width:none;width:100%}
.page-cases .cases-map{height:clamp(500px,39vw,590px);position:relative;overflow:hidden;border-bottom:3px solid #988f74;background:#102431}
.cases-map-art{position:absolute;inset:0;background:url('assets/greyhaven-act-map.png') center 52%/cover no-repeat}
.cases-map-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(7,18,28,.83),rgba(11,26,36,.28) 39%,rgba(9,21,31,.17) 100%),linear-gradient(0deg,rgba(6,17,25,.51),transparent 39%,rgba(6,17,25,.33))}
.cases-map-heading{position:absolute;z-index:2;left:4%;top:32px;max-width:530px;text-shadow:0 2px 12px #06131e}
.cases-map-heading h1{font:500 72px/.98 var(--serif);letter-spacing:-.055em;margin:10px 0 12px}
.cases-map-heading h1 em{color:var(--gold)}
.cases-map-heading p{font:16px/1.45 var(--serif);color:#e6e8d9;max-width:480px;margin:0}
.cases-map-count{position:absolute;z-index:2;right:4%;top:30px;border:1px solid #b2b79f96;background:#0c1c2cba;padding:12px 17px;color:#d6dfd0;font:10px var(--mono);letter-spacing:.12em;white-space:nowrap;backdrop-filter:blur(5px)}
.cases-map-count b{font:23px var(--serif);font-weight:400;color:var(--gold);letter-spacing:0;margin-right:4px}
.cases-map-count span{color:#9aafa8;margin:0 10px}
.cases-map-route{position:absolute;z-index:1;inset:0;width:100%;height:100%;pointer-events:none;opacity:.65}
.cases-map-route path{fill:none;stroke:#e6c488;stroke-width:2.5;stroke-dasharray:4 10;stroke-linecap:round;filter:drop-shadow(0 1px 2px #07121d)}
.cases-map-acts{position:absolute;inset:0;z-index:3}
.map-act{position:absolute;display:flex;flex-direction:column;align-items:center;gap:6px;width:170px;padding:0;border:0;background:none;color:var(--white);text-align:center;transform:translate(-50%,-50%);filter:drop-shadow(0 4px 7px #07131db5)}
.map-act-1{left:20.5%;top:66%}.map-act-2{left:39%;top:48%}.map-act-3{left:55%;top:68%}.map-act-4{left:68%;top:48%}.map-act-5{left:84%;top:66%}.map-act-6{left:78%;top:30%}
.map-act-pin{width:46px;height:46px;border:2px solid #dddbba;border-radius:50%;display:grid;place-items:center;background:#203946;color:#f5ead3;font:700 15px var(--mono);box-shadow:0 0 0 5px #0a1b2799,0 6px 15px #05111d9e;transition:transform .16s,background .16s}
.map-act-label{min-height:59px;width:100%;padding:7px 8px 8px;background:#10232de8;border:1px solid #b2b79d9e;backdrop-filter:blur(5px)}
.map-act-label small{display:block;color:#dfbd84;font:9px var(--mono);letter-spacing:.12em}
.map-act-label strong{display:block;color:#f0eddf;font:500 14px/1.12 var(--serif);margin-top:4px}
.map-act:hover .map-act-pin,.map-act:focus-visible .map-act-pin{transform:translateY(-3px);background:#b77d55}
.map-act.is-active .map-act-pin{background:var(--gold);border-color:#ffe0a7;color:#162632;box-shadow:0 0 0 6px #f4c87d43,0 0 26px #e6b769a8}
.map-act.is-active .map-act-label{background:#e8ddc1;border-color:#f1d49e;box-shadow:0 3px 0 #936d4d}
.map-act.is-active .map-act-label small{color:#9c5548}.map-act.is-active .map-act-label strong{color:#203238}
.map-compass{position:absolute;right:4%;bottom:20px;color:#d8d3af;font:12px var(--serif);opacity:.75}.map-compass span{display:block;font-size:25px;line-height:1}
.page-cases .case-directory{padding:0 4% 85px;background:radial-gradient(circle at 15% 0%,#2a3e43,#102431 48%,#0c1d29 100%);min-height:475px}
.page-cases .cases-map-heading .eyebrow{font-size:15px;letter-spacing:.14em;color:#f1d5a0;font-weight:700}
.page-cases .map-act.is-locked .map-act-pin{position:relative;background:#293b42;border-color:#8b978c;color:#aab7ae;box-shadow:0 0 0 5px #09161fc4,0 5px 15px #05111d9e}
.page-cases .map-act.is-locked .map-act-pin::after{content:'';position:absolute;right:-12px;bottom:-7px;width:21px;height:21px;background:#233844 url('assets/lock.svg') center/15px no-repeat;border:1px solid #a99f87;border-radius:2px;box-shadow:0 2px 6px #06121b}
.page-cases .map-act.is-locked .map-act-label{background:#142530ed;border-color:#7d8b83;box-shadow:inset 0 0 0 1px #101f29}
.page-cases .map-act.is-locked .map-act-label small{color:#c4b69c}
.page-cases .map-act.is-locked .map-act-label strong{color:#c4cec3}
.page-cases .map-act.is-locked:hover .map-act-pin,.page-cases .map-act.is-locked:focus-visible .map-act-pin{transform:translateY(-3px);background:#40535a}
.page-cases .map-act.is-locked.is-active .map-act-pin{border-color:#e2bd81;box-shadow:0 0 0 5px #cfa66c4d,0 0 18px #d9b57281}
.page-cases .map-act.is-locked.is-active .map-act-label{border-color:#d8b77f;box-shadow:0 3px 0 #6e644f}
.page-cases .map-act:focus-visible{outline:2px solid #f0c887;outline-offset:5px}
.page-cases .case-act{padding-top:36px}.page-cases .case-act[hidden]{display:none!important}
.page-cases .case-act-heading{border-bottom:0;padding-bottom:0;margin-bottom:22px}
.page-cases .case-act-heading h2{font-size:38px}.page-cases .case-act-heading p{font-size:16px}
.page-cases .case-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.page-cases .case-card{min-height:235px}
.page-cases .case-card-art{height:49px;align-items:center;padding:8px 14px;font-size:11px;letter-spacing:.08em;border-bottom:2px solid var(--act-edge);filter:none;background-image:repeating-linear-gradient(135deg,#ffffff0e 0 1px,transparent 1px 10px),linear-gradient(115deg,var(--act-deep),var(--act-light));background-size:auto;color:#f4eddf}
.page-cases .case-card-content{padding:12px 16px 14px}
.page-cases .case-card-meta{font-size:11px;letter-spacing:.07em}
.page-cases .case-card h3{font-size:29px;line-height:1.04;margin:12px 0 8px}
.page-cases .case-card p{font-size:16px;line-height:1.3;margin-bottom:10px}
.page-cases .case-card-bottom{padding-top:9px}
.page-cases .concept-tag{font-size:11px;line-height:1.25}
.page-cases .case-arrow{width:29px;height:29px;font-size:17px}
.page-cases .case-card.complete{background:#e3dec9;border-color:#97b19f}
.page-cases .case-card.complete .case-card-art{border-bottom-color:#729c88}
.page-cases .case-card.complete .case-card-meta span:last-child{color:#376956;font-weight:700}
.page-cases .case-card.complete .case-arrow{background:#3d6b59;border-color:#3d6b59;color:#f2ecd7;font-weight:700}
.page-cases .case-card.locked{background:#c9c9bf;border-color:#778681;box-shadow:4px 5px 0 #071520}
.page-cases .case-card.locked .case-card-art{color:#f0eadb}
.page-cases .case-card.locked .case-card-meta{color:#52635e}
.page-cases .case-card.locked .case-card-meta span:last-child{font-weight:700;letter-spacing:.13em}
.page-cases .case-card.locked h3{color:#354b4b}
.page-cases .case-card.locked p{color:#596a65}
.page-cases .case-card.locked .case-card-bottom{border-top-color:#9aa9a0}
.page-cases .case-card.locked .concept-tag{color:#4e6862}
.page-cases .case-card.locked .case-arrow{background:#30464c url('assets/lock.svg') center/16px no-repeat;border-color:#637a73;font-size:0}
.page-cases .act-art-1{--act-deep:#594934;--act-light:#816a4c;--act-edge:#c8a576}
.page-cases .act-art-2{--act-deep:#3c3b61;--act-light:#69658c;--act-edge:#a9a0d0}
.page-cases .act-art-3{--act-deep:#3f5139;--act-light:#687950;--act-edge:#a4bd83}
.page-cases .act-art-4{--act-deep:#603747;--act-light:#8e5865;--act-edge:#cc8992}
.page-cases .act-art-5{--act-deep:#25565b;--act-light:#438186;--act-edge:#7bc1bd}
.page-cases .act-art-6{--act-deep:#314c69;--act-light:#5c7c9b;--act-edge:#9db8d2}
.page-cases .case-card.locked .case-card-art{filter:saturate(.78) brightness(.87)}

/* Casebook: a field archive built from the same chart and paper language as the case files. */
.page-journal .casebook-main{min-height:calc(100vh - 116px);background:#142934}
.casebook-hero{height:310px;position:relative;overflow:hidden;border-bottom:3px solid #988f74;background:#132734 url('assets/greyhaven-act-map.png') center 41%/cover no-repeat}
.casebook-hero::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#071723f2 0%,#102534df 42%,#10253382 78%,#0c1d2aac),linear-gradient(0deg,#081722c9,transparent 58%)}
.casebook-hero::after{content:'';position:absolute;inset:12px;border:1px solid #d3c39435;pointer-events:none}
.casebook-hero-copy{position:absolute;z-index:1;left:4%;top:34px;max-width:740px}
.casebook-hero-copy .eyebrow{font-size:14px;letter-spacing:.14em;color:#f0d19c}
.casebook-hero h1{font:500 clamp(62px,5.5vw,88px)/.98 var(--serif);letter-spacing:-.055em;margin:16px 0 12px}
.casebook-hero h1 em{color:var(--gold)}
.casebook-hero-copy>p{font:18px/1.4 var(--serif);color:#e6e5d5;margin:0;max-width:650px}
.casebook-hero-stats{display:flex;gap:23px;align-items:center;margin-top:27px;color:#d1dacb;font:11px var(--mono);letter-spacing:.08em}
.casebook-hero-stats span{border-left:2px solid #bd9d6d;padding-left:11px;white-space:nowrap}
.casebook-hero-stats b{color:#f2c985;font:24px var(--serif);letter-spacing:0;margin-right:5px}
.casebook-hero-mark{position:absolute;z-index:1;right:4%;top:47px;width:240px;min-height:196px;padding:22px;border:1px solid #d1bb8a9e;background:#102532d9;box-shadow:6px 7px 0 #08151fc9;display:flex;flex-direction:column;gap:14px;color:#e8d1a5;transform:rotate(3deg)}
.casebook-hero-mark span,.casebook-hero-mark small{font:10px var(--mono);letter-spacing:.13em}
.casebook-hero-mark strong{font:500 31px/1.02 var(--serif);color:#f2eee2;letter-spacing:-.03em}
.casebook-hero-mark small{margin-top:auto;color:#b8c7b8;font-size:9px}
.casebook-content{padding:35px 4% 82px;background-color:#142934;}
.casebook-section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:22px}
.casebook-section-heading>div{display:flex;align-items:center;gap:22px}
.casebook-section-heading h2{font:500 39px/1 var(--serif);margin:0 0 5px}
.casebook-section-heading p{font:16px var(--serif);color:#b5c3b8;margin:0}
.casebook-count{color:#f0c989;font:11px var(--mono);letter-spacing:.1em;white-space:nowrap;padding-bottom:5px}
.casebook-layout{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(340px,.82fr);align-items:start;gap:22px}
.casebook-records{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.casebook-record{min-height:375px;background:#e3ddcb;color:#293b3d;border:2px solid #c7b997;box-shadow:5px 6px 0 #071520;display:flex;flex-direction:column;position:relative}
.casebook-record::after{content:'';position:absolute;inset:7px;border:1px solid #6e685439;pointer-events:none}
.casebook-record.is-verified{border-color:#a5baaa}
.casebook-record.is-open{border-color:#d6ad79}
.casebook-record-header{height:51px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 15px;border-bottom:2px solid #c8a576;background-image:repeating-linear-gradient(135deg,#ffffff0e 0 1px,transparent 1px 10px),linear-gradient(115deg,#594934,#816a4c);color:#f5ead8;font:11px var(--mono);letter-spacing:.08em}
.casebook-record-header strong{font-weight:700;white-space:nowrap}
.casebook-record.is-verified .casebook-record-header strong{color:#bfe2c1}
.casebook-record.is-open .casebook-record-header strong{color:#ffd198}
.casebook-record-body{padding:19px 20px 17px;display:flex;flex-direction:column;flex:1}
.casebook-record-type{color:#8d5b4d;font:11px var(--mono);letter-spacing:.09em}
.casebook-record h3{font:500 31px/1.05 var(--serif);letter-spacing:-.03em;margin:17px 0 11px}
.casebook-record p{color:#4e605c;font:16px/1.4 var(--serif);margin:0 0 18px}
.casebook-proof{margin-top:auto;background:#263d43;color:#e5e8d9;border-left:3px solid #c49a67;padding:11px 13px;display:flex;flex-direction:column;gap:8px}
.casebook-proof span{font:10px var(--mono);letter-spacing:.11em;color:#d8c39d}
.casebook-proof code{font:14px var(--mono);white-space:normal;overflow-wrap:anywhere}
.casebook-record-foot{display:flex;justify-content:space-between;gap:10px;margin-top:15px;border-top:1px solid #aca48d;padding-top:12px;color:#576d62;font:10px var(--mono);letter-spacing:.06em}
.casebook-record-foot a{color:#9e5346;font-weight:700;white-space:nowrap}
.casebook-field-note{grid-column:1/-1;display:flex;align-items:center;gap:22px;padding:17px 20px;background:#d0d8c6;color:#304745;border-left:4px solid #6f9a83;box-shadow:4px 5px 0 #071520}
.casebook-field-note span{color:#426f5b;font:700 10px var(--mono);letter-spacing:.1em;white-space:nowrap}
.casebook-field-note p{font:17px/1.35 var(--serif);margin:0}
.casebook-timeline{background:#1a3039;border:2px solid #809087;box-shadow:5px 6px 0 #071520;color:#f0ebdd;padding:20px 21px 22px}
.casebook-timeline-head{display:flex;justify-content:space-between;color:#e8c58e;font:11px var(--mono);letter-spacing:.1em;border-bottom:1px solid #73877d;padding-bottom:13px}
.casebook-timeline-head strong{font-weight:400;color:#b4c6b8}
.casebook-timeline h2{font:500 30px var(--serif);margin:20px 0 13px}
.casebook-timeline ol{list-style:none;margin:0 0 18px;padding:0}
.casebook-timeline li{display:grid;grid-template-columns:53px 1fr;gap:11px;position:relative;padding:13px 0 18px;border-bottom:1px solid #526a695e}
.casebook-timeline li::before{content:'';position:absolute;left:46px;top:18px;width:9px;height:9px;border-radius:50%;background:#b6bb9f;border:2px solid #1a3039;box-shadow:0 0 0 1px #8fa095}
.casebook-timeline time{color:#e2bf82;font:11px var(--mono);padding-top:2px}
.casebook-timeline li strong{font:18px var(--serif);font-weight:400}
.casebook-timeline li p{color:#bdc8bd;font:13px/1.4 var(--serif);margin:7px 0}
.casebook-timeline li small{color:#a9b9ac;font:9px var(--mono);letter-spacing:.08em}
.casebook-timeline li.is-current::before{background:#e0aa6b;box-shadow:0 0 0 1px #e0aa6b,0 0 12px #e0aa6b}
.casebook-timeline li.is-current small{color:#e5bd87}
.casebook-timeline li.is-pending{opacity:.62}
.casebook-next{border-left:3px solid #cf7c6e;background:#283d43;padding:14px 15px}
.casebook-next span{color:#e4a394;font:10px var(--mono);letter-spacing:.1em}
.casebook-next p{font:19px/1.22 var(--serif);margin:9px 0 13px}
.casebook-next a{color:#f0c989;font:700 10px var(--mono);letter-spacing:.09em}

/* Case 002: the dossier, lesson, and workbench share the newer archive treatment. */
.page-case .case-main{min-height:calc(100vh - 116px);background:#142934}
.page-case .case-hero{height:330px;border-bottom:3px solid #988f74;background:#102431}
.page-case .case-hero-art{background-image:url('assets/greyhaven-act-map.png');background-position:center 41%;background-size:cover;filter:none}
.page-case .case-hero-shade{background:linear-gradient(90deg,#071723f2 0%,#102534df 42%,#10253382 78%,#0c1d2aac),linear-gradient(0deg,#081722c9,transparent 58%)}
.page-case .case-hero::after{content:'';position:absolute;inset:12px;border:1px solid #d3c39435;pointer-events:none}
.page-case .case-hero-top{z-index:2;top:25px;left:4%;right:4%;font-size:11px;color:#d0d9ca}
.page-case .case-hero-top a{color:#f0ca8a}
.page-case .case-breadcrumbs{justify-content:flex-start;align-items:center;gap:12px}
.page-case .case-breadcrumbs span[aria-hidden="true"]{color:#8fa79f}
.page-case .case-breadcrumbs [aria-current="page"]{color:#e8eddf}
.page-case .case-hero-copy{z-index:2;left:4%;bottom:39px;max-width:730px}
.page-case .case-hero-copy>span{font-size:14px;font-weight:700;color:#efd09a}
.page-case .case-hero-copy h1{font-size:clamp(59px,5.3vw,86px);line-height:.91;margin:18px 0 15px;text-shadow:0 4px 18px #06111e}
.page-case .case-hero-copy p{font:18px var(--serif);color:#e3e5d8}
.page-case .case-hero-mark{z-index:2;right:4%;bottom:35px;width:215px;min-height:173px;border:1px solid #d1bb8a9e;background:#102532db;box-shadow:6px 7px 0 #07141dc9;padding:18px;display:flex;flex-direction:column;transform:rotate(3deg);color:#f1e8d2;text-align:left}
.page-case .case-hero-mark small{font:10px var(--mono);letter-spacing:.14em;color:#e6c38d}
.page-case .case-hero-mark strong{font:500 73px/.95 var(--serif);color:#f4e9d0}
.page-case .case-hero-mark span{font:9px var(--mono);letter-spacing:.09em;color:#b9cbbd;margin-top:auto}
.page-case .case-tab-shell{padding:26px 4% 78px;background:#142934}
.page-case .case-tabs{min-height:70px;border:2px solid #7d9185;border-bottom:2px solid #b9a982;background:#203741;box-shadow:5px 5px 0 #071520}
.page-case .case-tabs button{flex:1;padding:0 25px;border-right:1px solid #59716d;color:#c4d0c0;font-size:12px;letter-spacing:.07em}
.page-case .case-tabs button span{font-size:14px;margin-right:12px}
.page-case .case-tabs button.selected{background:#e7ddc5;color:#26383b;box-shadow:inset 0 4px 0 #d7a66b}
.page-case .case-tabs button.selected::after{background:#d7a66b}
.page-case .case-panel{min-height:555px;border:2px solid #87978a;border-top:0;box-shadow:5px 6px 0 #071520}
.page-case .story-panel{grid-template-columns:55% 45%}
.page-case .story-scene{min-height:555px}
.page-case .story-scene-art{background-image:url('assets/lantern-relay-room.png');background-position:center 50%;filter:none}
.page-case .story-scene-filter{background:linear-gradient(0deg,#091b28eb 0%,#10283833 58%,#10253676)}
.page-case .story-scene-tag{top:24px;left:24px;padding:10px 13px;border-color:#baac88;background:#132936df;font-size:10px}
.page-case .story-speech{left:24px;right:24px;bottom:25px;background:#102633ee;border-color:#bba57d;padding:15px;gap:17px}
.page-case .story-speech img{width:93px;height:93px}
.page-case .story-speech strong{font-size:12px}
.page-case .story-speech small{font-size:10px}
.page-case .story-speech p{font-size:17px;line-height:1.43}
.page-case .story-brief{padding:35px 38px;background:#e5dcc7}
.page-case .brief-heading{font-size:11px;color:#9e5b4c}
.page-case .story-brief h2{font-size:clamp(35px,3.1vw,49px);margin:24px 0 18px}
.page-case .story-brief p{font-size:17px;line-height:1.47;margin:0 0 17px}
.page-case .story-objective{padding:18px 0;margin:8px 0 20px}
.page-case .story-objective span{font-size:11px}
.page-case .story-objective strong{font-size:21px;line-height:1.25}
.page-case .intro-panel{grid-template-columns:55% 45%;background:#e5dcc7}
.page-case .intro-left{padding:36px 40px 38px}
.page-case .intro-left .eyebrow{font-size:12px}
.page-case .intro-left h2{font-size:49px;margin:16px 0}
.page-case .intro-lead{font-size:18px;line-height:1.45}
.page-case .lesson-list{margin-top:22px}
.page-case .lesson-list>div{padding:14px 0}
.page-case .lesson-list>div>span{font-size:12px}
.page-case .lesson-list strong{font-size:24px}
.page-case .lesson-list p{font-size:14px;line-height:1.35}
.page-case .technical-note{margin-top:22px;padding:15px 17px}
.page-case .technical-note span{font-size:10px}
.page-case .technical-note p{font-size:15px}
.page-case .intro-right{padding:28px 30px;background:#203741}
.page-case .technical-card{padding:23px;background:#132934;border-color:#829488;box-shadow:4px 5px 0 #0a1b25}
.page-case .technical-card-top{font-size:10px}
.page-case .technical-card h3{font-size:33px;margin:23px 0 12px}
.page-case .technical-card>p{font-size:15px;line-height:1.45}
.page-case .technical-card pre{font-size:14px;line-height:1.6;margin:18px 0;white-space:pre-wrap}
.page-case .technical-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.page-case .technical-steps>div{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;text-align:center;padding:10px 5px;border-top:1px solid #74867c}
.page-case .technical-steps span{font:700 21px var(--serif)}
.page-case .technical-steps p{font-size:11px;line-height:1.35;margin:0}
.page-case .reference-strip{padding:14px 16px;background:#2b4248}
.page-case .reference-strip span{font-size:10px}
.page-case .reference-strip strong{font-size:18px;color:#f1ebdd}
.page-case .code-panel{padding:29px;background:#1b303a}
.page-case .code-brief{margin-bottom:23px;align-items:center}
.page-case .code-brief .eyebrow{font-size:12px}
.page-case .code-brief h2{font-size:39px;margin:10px 0}
.page-case .code-brief p{font-size:16px;line-height:1.4;max-width:950px}
.page-case .code-brief code{font-size:14px}
.page-case .code-brief-status{min-width:220px;padding:13px 16px;background:#263e43;border-color:#9a9e83}
.page-case .code-brief-status span{font-size:10px}
.page-case .code-brief-status strong{font-size:20px}
.page-case .case-workspace{grid-template-columns:minmax(370px,42%) minmax(0,1fr);gap:21px}
.page-case .test-sheet{background:#e4dac4;border-color:#beaE91}
.page-case .sheet-header,.page-case .editor-head,.page-case .console-head{min-height:45px;font-size:12px;padding:0 16px}
.page-case .sheet-header{background-image:repeating-linear-gradient(135deg,#ffffff0e 0 1px,transparent 1px 10px),linear-gradient(115deg,#594934,#816a4c);color:#f4ecdc}
.page-case .sheet-header small{color:#f1d3ab;font-size:9px}
.page-case .test-sheet pre{font-size:13px;line-height:1.65;padding:21px 19px}
.page-case .test-sheet-foot{font-size:14px;padding:14px 18px}
.page-case .case-hint summary{font-size:11px;padding:15px 18px}
.page-case .case-hint p{font-size:14px;padding:0 18px 16px}
.page-case .editor-stack{gap:15px}
.page-case .case-editor,.page-case .case-console{border-color:#7d9187}
.page-case .editor-head,.page-case .console-head{background:#2a414a}
.page-case .editor-body{height:216px;padding-top:15px}
.page-case .editor-gutter{width:45px;font-size:13px;line-height:31px}
.page-case .editor-body textarea{height:190px;width:calc(100% - 47px);font-size:14px;line-height:31px}
.page-case .case-console pre{min-height:106px;font-size:13px;line-height:1.6;padding:13px 17px}
.page-case .console-actions{padding:10px 16px;font-size:11px}
.page-case .console-actions .game-button{min-height:43px;font-size:12px}
.page-case .clue-reveal{margin-top:22px;padding:17px 20px}
.page-case .clue-reveal span{font-size:11px}
.page-case .clue-reveal strong{font-size:20px}
.page-case .clue-reveal a{font-size:11px}
.page-case .prototype-note{font-size:11px;color:#b4c5b8;margin-top:20px}

/* Creator note: a quiet credit page outside the investigation. */
.page-creator .creator-main{min-height:calc(100vh - 116px);background:#142934}
.creator-hero{height:305px;position:relative;overflow:hidden;border-bottom:3px solid #988f74;background:#132734 url('assets/greyhaven-act-map.png') center 41%/cover no-repeat}
.creator-hero::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#071723f2 0%,#102534df 42%,#10253382 78%,#0c1d2aac),linear-gradient(0deg,#081722c9,transparent 58%)}
.creator-hero::after{content:'';position:absolute;inset:12px;border:1px solid #d3c39435;pointer-events:none}
.creator-hero-copy{position:absolute;z-index:1;left:4%;top:42px;max-width:750px}
.creator-hero-copy .eyebrow{font-size:14px;letter-spacing:.14em;color:#f0d19c}
.creator-hero h1{font:500 clamp(63px,5.5vw,88px)/.98 var(--serif);letter-spacing:-.055em;margin:18px 0 15px}
.creator-hero h1 em{color:var(--gold)}
.creator-hero-copy p{font:18px/1.4 var(--serif);color:#e6e5d5;margin:0}
.creator-hero-seal{position:absolute;z-index:1;right:5%;top:41px;width:220px;padding:18px 21px;display:flex;flex-direction:column;gap:11px;background:#102532d9;border:1px solid #d1bb8a9e;box-shadow:6px 7px 0 #08151fc9;transform:rotate(3deg)}
.creator-hero-seal span{color:#e8c88f;font:10px var(--mono);letter-spacing:.13em}
.creator-hero-seal strong{color:#f2eee2;font:500 27px/1 var(--serif);letter-spacing:-.025em}
.creator-content{padding:36px 4% 80px;background:#142934}
.creator-heading{display:flex;align-items:center;gap:23px;margin-bottom:23px}
.creator-heading h2{font:500 39px/1 var(--serif);margin:0 0 6px}
.creator-heading p{font:16px var(--serif);color:#b5c3b8;margin:0}
.creator-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(365px,.8fr);gap:22px;align-items:stretch}
.creator-letter{background:#e7ddc8;color:#2c3b3d;border:2px solid #c8b68d;box-shadow:5px 6px 0 #071520;padding:30px 35px 31px}
.creator-letter-head{display:flex;justify-content:space-between;gap:15px;color:#8b5f4b;font:11px var(--mono);letter-spacing:.08em}
.creator-letter h3{font:500 42px/1.07 var(--serif);letter-spacing:-.035em;margin:26px 0 20px}
.creator-letter h3 em{color:#98614e}
.creator-letter p{font:18px/1.52 var(--serif);color:#475a56;margin:0 0 17px;max-width:800px}
.creator-letter p strong{color:#253d3b}
.creator-letter p a{color:#80513f;text-decoration:underline;text-underline-offset:3px}
.creator-letter-rule{height:1px;background:#a89c80;margin:25px 0 18px}
.creator-letter .creator-letter-closing{margin:0;color:#536962}
.creator-source{background:#1a3039;border:2px solid #859487;box-shadow:5px 6px 0 #071520;color:#f0ebdd;display:flex;flex-direction:column;padding:24px}
.creator-source-head{display:flex;justify-content:space-between;gap:10px;padding-bottom:15px;border-bottom:1px solid #70847b;color:#e4c388;font:10px var(--mono);letter-spacing:.09em}
.creator-source-head span:last-child{color:#a9bdad}
.creator-source h3{font:500 51px/.99 var(--serif);letter-spacing:-.045em;margin:28px 0 17px}
.creator-source p{font:18px/1.4 var(--serif);color:#c2d0c2;margin:0 0 26px}
.creator-source-links{display:flex;flex-direction:column;gap:10px}
.creator-source-links a{min-height:47px;padding:0 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#e0d4b7;border:1px solid #efdaa8;box-shadow:3px 3px 0 #091a24;color:#283a3c;font:700 11px var(--mono);letter-spacing:.04em}
.creator-source-links a+ a{background:#293f45;color:#f0d09a;border-color:#8a9a8a}
.creator-source-links a span{font-size:19px}
.creator-source-foot{display:flex;flex-direction:column;gap:7px;margin-top:auto;padding-top:27px;color:#a8bdaf;font:10px var(--mono);letter-spacing:.09em}
.creator-source-foot strong{color:#f0c989;font-weight:400}
.creator-return{display:inline-block;color:#f0c989;font:11px var(--mono);letter-spacing:.08em;margin-top:29px}
.page-creator .footer-current{color:var(--gold)}
