:root{--ink:#d9d4c7;--night:#070b12;--gold:#d4ad63}
*{box-sizing:border-box}
html,body,#root{margin:0;min-height:100%;height:100%;background:var(--night);color:var(--ink);font-family:"Yu Mincho","Hiragino Mincho ProN",serif;overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
#root *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
button,img,canvas{-webkit-user-drag:none}
button{font:inherit;touch-action:manipulation}
.title-screen{min-height:100svh;display:grid;place-items:center;position:relative;background:radial-gradient(circle at 60% 35%,#293347 0,#101725 25%,#05070b 70%)}
.title-screen:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.8%,rgba(222,185,102,.13) 50%,transparent 50.2%)}
.rain,.grain{position:absolute;inset:0;pointer-events:none;opacity:.16;background-image:repeating-linear-gradient(103deg,transparent 0 12px,rgba(255,255,255,.22) 13px,transparent 14px 31px);animation:rain .9s linear infinite}
@keyframes rain{to{transform:translate(-14px,32px)}
}
.title-card{width:min(88vw,580px);padding:48px 44px;border-left:1px solid rgba(212,173,99,.55);position:relative;z-index:1}
.eyebrow{color:var(--gold);letter-spacing:.28em;font:11px ui-monospace,monospace}
h1{font-size:clamp(44px,9vw,84px);font-weight:400;line-height:1.05;letter-spacing:.07em;margin:18px 0 26px;text-shadow:0 4px 20px #000}
.tagline{color:#a7a397;line-height:2;font-size:14px}
.start-button{margin-top:28px;background:#7b3035!important;color:#f4e9d5!important;border:1px solid #bd7777!important;border-radius:1px!important;padding:22px 34px!important;letter-spacing:.18em}
.controls{margin-top:24px;color:#686d73;font:11px ui-monospace,monospace}
.game-shell{height:100svh;display:grid;grid-template-rows:56px 1fr 86px;background:#080c13}
header{display:flex;align-items:center;justify-content:space-between;padding:0 22px;border-bottom:1px solid #242933;background:#0b1019}
header span{letter-spacing:.12em}
header small{margin-left:13px;color:#686f79}
header p{color:#9b8a69;font-size:12px}
.game-view{position:relative;min-height:0;overflow:hidden}
canvas{width:100%;height:100%;display:block;image-rendering:pixelated}
.grain{opacity:.055;animation:none;background-size:17px 17px}
.interact{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);background:rgba(8,11,16,.9);color:#e5dece;border:1px solid #77705f;padding:10px 16px;white-space:nowrap}
kbd{color:#d8ae61;margin-right:4px}
footer{display:grid;grid-template-columns:70px 1fr 70px;align-items:center;gap:12px;padding:10px 18px;background:#0b1018;border-top:1px solid #252c37}
footer button{height:52px;background:#151c27;color:#c9c1b0;border:1px solid #343c48;font-size:20px;touch-action:none}
footer div{text-align:center}
footer p{margin:0 0 6px;font-size:13px}
footer span{color:#747b84;font:11px ui-monospace,monospace}
.overlay,.ending{position:fixed;inset:0;z-index:10;display:grid;place-items:center;background:rgba(2,4,8,.73);padding:20px}
.dialogue{width:min(680px,92vw);min-height:140px;align-self:end;margin-bottom:104px;padding:25px 28px;background:rgba(8,12,18,.97);border:1px solid #766a53;box-shadow:0 18px 60px #000}
.dialogue p{font-size:16px;line-height:1.9;margin:0 0 18px}
.dialogue span{display:block;text-align:right;color:#716c62;font-size:11px}
.phone-panel{width:min(330px,92vw);padding:24px;background:#17191a;border:8px solid #53252a;box-shadow:0 20px 80px #000;text-align:center}
.phone-panel p{color:#aaa292;font-size:12px}
output{display:block;margin:18px 0;color:#d4b46f;font:28px ui-monospace,monospace;letter-spacing:.35em}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.keypad button{height:44px;background:#292a28;border:1px solid #4e4b44;color:#ddd4c2}
.hangup{margin-top:14px;border:0;background:transparent;color:#8d8580;text-decoration:underline}
.choice{position:fixed;z-index:8;right:20px;bottom:105px;width:min(360px,calc(100vw - 40px));display:grid;gap:8px;padding:20px;background:#111720f2;border:1px solid #88775a}
.choice p{margin:0 0 8px}
.choice button{border-radius:0!important}
.ending{text-align:center;background:radial-gradient(circle,#1c3044 0,#070a10 65%)}
.ending>p{color:#c3a466;letter-spacing:.25em;font:11px ui-monospace,monospace}
.ending h2{max-width:650px;font-size:clamp(25px,5vw,42px);font-weight:400;line-height:1.6}
.ending h2+p{max-width:570px;line-height:2;color:#aaa69d}
.ending button{margin:22px;border-radius:0!important;background:#7b3035!important}
.ending small{display:block;color:#666}
@media(max-width:640px){.game-shell{grid-template-rows:46px 1fr 76px}
header{padding:0 12px}
header small{display:none}
header p{font-size:10px}
.dialogue{margin-bottom:82px;padding:20px}
.title-card{padding:32px 24px}
}

/* Art direction: rain-polished European midnight */
.title-screen{background:linear-gradient(90deg,rgba(2,5,10,.9),rgba(2,5,10,.28)),url('assets/european-street-night.png') center/cover no-repeat}
.game-view{background:#050910}
.scene-art{position:absolute;inset:-2px;background-image:url('assets/european-street-night.png');background-repeat:no-repeat;background-size:auto 100%;transition:background-position .18s linear,filter 1.4s ease;image-rendering:pixelated}
.loop-0 .scene-art{filter:saturate(.78) brightness(.7) contrast(1.12)}
.loop-1 .scene-art{filter:saturate(.68) brightness(.62) contrast(1.18) hue-rotate(12deg)}
.loop-2 .scene-art{filter:saturate(.88) brightness(.82) contrast(1.06) hue-rotate(-8deg)}
.game-view canvas{position:absolute;inset:0;z-index:2}
.mist{position:absolute;z-index:3;inset:50% -20% -10%;pointer-events:none;background:radial-gradient(ellipse at 30% 70%,rgba(168,190,204,.11),transparent 38%),radial-gradient(ellipse at 75% 50%,rgba(168,190,204,.08),transparent 42%);animation:drift 12s ease-in-out infinite alternate}
.vignette{position:absolute;z-index:4;inset:0;pointer-events:none;box-shadow:inset 0 0 110px 28px rgba(0,0,0,.72)}
.game-view .grain{z-index:5;opacity:.08;animation:rain .9s linear infinite}
.interact{z-index:6;backdrop-filter:blur(5px);box-shadow:0 8px 30px rgba(0,0,0,.55)}
@keyframes drift{to{transform:translateX(8%) translateY(-3%)}}
@media(max-width:640px){.scene-art{background-size:auto 100%}.vignette{box-shadow:inset 0 0 58px 10px rgba(0,0,0,.68)}}

/* True top-down exploration mode */
.topdown-title{background:linear-gradient(90deg,rgba(2,5,10,.92),rgba(2,5,10,.3)),url('assets/topdown-night-map-v1.png') center/cover no-repeat}
.topdown-shell{grid-template-rows:52px 1fr}
.topdown-view{position:relative;min-height:0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at center,#152136,#05080e 72%)}
.map-stage{position:relative;height:min(100%,calc(100vw - 20px));aspect-ratio:1;max-width:100%;overflow:hidden;box-shadow:0 0 0 1px #313846,0 20px 80px #000;touch-action:none}
.map-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated;user-select:none;transition:filter 1.2s ease}
.loop-0 .map-art{filter:saturate(.78) brightness(.72) contrast(1.08)}
.loop-1 .map-art{filter:saturate(.66) brightness(.6) contrast(1.16) hue-rotate(12deg)}
.loop-2 .map-art{filter:saturate(.9) brightness(.82) contrast(1.04) hue-rotate(-7deg)}
.map-light{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 20% 72%,rgba(214,75,47,.13),transparent 10%),radial-gradient(circle at 50% 25%,rgba(255,190,91,.11),transparent 16%),radial-gradient(circle at 80% 25%,rgba(255,190,91,.1),transparent 13%);mix-blend-mode:screen}
.map-rain{position:absolute;inset:-15%;pointer-events:none;opacity:.14;background-image:repeating-linear-gradient(105deg,transparent 0 15px,rgba(203,221,235,.48) 16px,transparent 17px 34px);animation:mapRain .95s linear infinite}
.map-vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 90px 20px rgba(0,0,0,.72)}
@keyframes mapRain{to{transform:translate(-18px,36px)}}
.player-topdown{position:absolute;width:2.8%;aspect-ratio:.72;transform:translate(-50%,-68%);z-index:5;background:#344860;border:2px solid #121820;box-shadow:0 6px 8px rgba(0,0,0,.65);image-rendering:pixelated}
.player-topdown:before{content:"";position:absolute;width:72%;aspect-ratio:1;left:14%;top:-48%;background:#b89a82;border:2px solid #15171c}
.player-topdown:after{content:"";position:absolute;width:110%;height:25%;left:-5%;bottom:-18%;background:rgba(0,0,0,.45);border-radius:50%;z-index:-1}
.player-topdown span{position:absolute;inset:12% 18%;background:#263445;border-left:2px solid #62758b}
.map-interact{position:absolute;z-index:7;transform:translate(-50%,-100%);padding:7px 10px;background:rgba(5,8,13,.9);border:1px solid #a18c62;color:#e8dfcc;white-space:nowrap;font-size:12px;box-shadow:0 8px 24px #000}
.objective{position:absolute;z-index:8;top:14px;left:14px;width:176px;padding:12px 14px;background:rgba(5,9,15,.88);border:1px solid #343d4b;backdrop-filter:blur(7px)}
.objective span{display:block;color:#8b8f95;font-size:10px;letter-spacing:.12em}.objective strong{display:block;margin:3px 0;color:#d7b36f;font:21px ui-monospace,monospace}.objective p{margin:0;color:#c8c1b3;font-size:11px}
.dpad{position:absolute;z-index:9;right:18px;bottom:18px;width:138px;height:138px;display:grid;grid-template:repeat(3,1fr)/repeat(3,1fr);gap:3px;filter:drop-shadow(0 8px 14px rgba(0,0,0,.65))}
.dpad,.dpad button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.dpad button{border:1px solid #4b5665;background:rgba(14,20,29,.88);color:#ddd3c2;touch-action:none;user-select:none}.dpad button:active{background:#653036}.dpad .up{grid-area:1/2}.dpad .left{grid-area:2/1}.dpad .center{grid-area:2/2;color:#d9b76f}.dpad .right{grid-area:2/3}.dpad .down{grid-area:3/2}
.topdown-shell .dialogue{margin-bottom:22px}
@media(max-width:640px){.topdown-shell{grid-template-rows:44px 1fr}.topdown-view{place-items:start center}.map-stage{width:100%;height:auto;max-height:calc(100svh - 44px)}.objective{top:8px;left:8px;width:145px;padding:8px 10px}.objective strong{font-size:17px}.dpad{right:10px;bottom:10px;width:126px;height:126px}.map-vignette{box-shadow:inset 0 0 52px 8px rgba(0,0,0,.68)}.player-topdown{width:3.6%}.map-interact{font-size:10px;padding:6px 8px}}

/* Overnight cinematic pass */
.title-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 42%,rgba(209,164,83,.16),transparent 32%);animation:titlePulse 5s ease-in-out infinite}
@keyframes titlePulse{50%{opacity:.45;transform:scale(1.04)}}
.title-card{border-left:0;text-align:center;padding:34px;background:linear-gradient(180deg,rgba(3,7,12,.2),rgba(3,7,12,.72));box-shadow:0 30px 100px rgba(0,0,0,.4)}
.title-logo{display:block;width:min(100%,560px);max-height:220px;object-fit:contain;margin:0 auto 8px;filter:drop-shadow(0 8px 20px rgba(0,0,0,.9))}.fallback-logo{display:none}.title-card .eyebrow{margin-bottom:2px}.title-card .tagline{letter-spacing:.08em}.start-button{box-shadow:0 0 0 1px rgba(220,180,112,.2),0 8px 30px rgba(0,0,0,.65);transition:transform .2s,filter .2s}.start-button:hover{transform:translateY(-2px);filter:brightness(1.15)}
.english-logo{display:grid;justify-items:center;margin:18px 0 24px;font-family:Georgia,"Times New Roman",serif;line-height:.88;text-transform:uppercase}.english-logo span{font-size:clamp(25px,5vw,46px);font-weight:400;letter-spacing:.2em;color:#d9d0bd}.english-logo strong{font-size:clamp(78px,16vw,142px);font-weight:400;letter-spacing:.08em;color:#e7d8b9;text-shadow:0 5px 0 #432126,0 12px 35px #000}.english-logo:after{content:"";width:68%;height:1px;margin-top:20px;background:linear-gradient(90deg,transparent,#b48f53,transparent)}
.header-actions{display:flex;align-items:center;gap:14px}.header-actions p{margin:0}.header-actions button{border:1px solid #313a47;background:#111824;color:#9d9484;padding:5px 8px;font:9px ui-monospace,monospace;letter-spacing:.08em}
.memory-strip{position:absolute;top:15px;left:15px;z-index:8;display:flex;gap:7px;padding:8px;background:rgba(5,9,15,.72)}.memory-strip i{display:block;width:28px;height:3px;background:#303744}.memory-strip i.current{background:#a7854e;box-shadow:0 0 9px #a7854e}.memory-strip i.recovered{background:#d8bd7c}
.memory-light{position:absolute;z-index:3;width:9%;aspect-ratio:1;left:46%;top:44%;border-radius:50%;background:radial-gradient(circle,rgba(194,170,222,.25),transparent 65%);animation:memoryPulse 3s ease-in-out infinite}.fallen-flowers{position:absolute;z-index:3;left:74%;top:53%;width:8%;height:3%;background:radial-gradient(circle at 20% 40%,#8f4965 0 8%,transparent 9%),radial-gradient(circle at 55% 70%,#b46d7e 0 7%,transparent 8%),radial-gradient(circle at 80% 30%,#76517a 0 8%,transparent 9%);filter:drop-shadow(0 2px 2px #000)}.dawn-wash{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(160deg,rgba(102,147,190,.16),transparent 38%,rgba(230,174,95,.08));mix-blend-mode:screen}.open-gate{position:absolute;z-index:4;left:46%;top:31%;width:8%;height:4%;border-left:3px solid #080b0f;border-right:3px solid #080b0f;box-shadow:0 -8px 18px rgba(211,180,111,.16)}@keyframes memoryPulse{50%{opacity:.45;transform:scale(1.18)}}
.player-topdown{background-color:transparent;background-image:url('assets/player-sprites-fixed.png');background-size:400% 400%;background-repeat:no-repeat;border:0;box-shadow:none;width:4%;aspect-ratio:1;overflow:visible}.player-topdown:before,.player-topdown span{display:none}.player-topdown.sprite-down{background-position-y:0}.player-topdown.sprite-left{background-position-y:33.333%}.player-topdown.sprite-right{background-position-y:66.666%}.player-topdown.sprite-up{background-position-y:100%}.player-topdown.is-walking{animation:spriteWalk .46s steps(1) infinite,walkBob .23s steps(2) infinite alternate}@keyframes spriteWalk{0%{background-position-x:0}25%{background-position-x:33.333%}50%{background-position-x:66.666%}75%{background-position-x:100%}}@keyframes walkBob{to{margin-top:-.3%}}
.receiver-line{height:11px;width:82%;margin:0 auto 17px;border:5px solid #090a0a;border-bottom:0;border-radius:18px 18px 0 0}.phone-overlay{background:radial-gradient(circle,rgba(83,30,35,.26),rgba(1,3,6,.88) 58%)}.phone-panel{position:relative;background:linear-gradient(145deg,#222321,#101110);border-color:#6d252c;box-shadow:0 0 0 2px #1b1011,0 30px 100px #000}.keypad button{transition:transform .08s,background .08s}.keypad button:active{transform:translateY(2px);background:#5b3433}
.line-static{height:2px;margin:0 22px 12px;background:repeating-linear-gradient(90deg,#8d7650 0 2px,transparent 2px 7px);opacity:.42;animation:lineNoise .18s steps(2) infinite}@keyframes lineNoise{50%{transform:translateX(3px);opacity:.2}}
.scene-transition{position:fixed;z-index:30;inset:0;display:grid;place-items:center;background:#020305;animation:sceneFade 1.3s ease both}.scene-transition:before,.scene-transition:after{content:"";position:absolute;width:1px;height:36%;background:linear-gradient(transparent,#b49358,transparent)}.scene-transition:before{left:calc(50% - 145px)}.scene-transition:after{right:calc(50% - 145px)}.scene-transition span{color:#d6c39e;letter-spacing:.42em;font-size:14px}@keyframes sceneFade{0%{opacity:0}35%,70%{opacity:1}100%{opacity:0;pointer-events:none}}
.final-choice{z-index:12;width:min(430px,calc(100vw - 36px));padding:28px;background:linear-gradient(160deg,rgba(12,18,27,.98),rgba(28,17,20,.98));box-shadow:0 24px 90px #000}.final-choice h3{font-size:24px;font-weight:400;margin:5px 0 9px}.final-choice>p:not(.eyebrow){color:#9d978c;font-size:12px;line-height:1.8}
.ending{padding:0;overflow:hidden;background:#05090f}.ending>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated;animation:endingZoom 16s ease-out both}.ending-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,6,10,.94) 0%,rgba(3,6,10,.68) 43%,rgba(3,6,10,.12) 76%),linear-gradient(0deg,rgba(3,6,10,.62),transparent 45%)}.ending section{position:relative;z-index:2;width:min(650px,88vw);margin-right:auto;margin-left:7vw;text-align:left;animation:endingText 1.8s .35s ease both}.ending section>p:first-child{color:#d2ac65;letter-spacing:.28em;font:11px ui-monospace,monospace}.ending section h2{font-size:clamp(27px,4vw,48px);line-height:1.5;margin:14px 0}.ending section h2+p{color:#c1bbb0;line-height:2;max-width:570px}.ending-rule{width:75px;height:1px;background:#b79659;margin:25px 0}.ending blockquote{margin:0;color:#d8c8a9;font-style:italic;letter-spacing:.05em}.ending section button{margin:28px 0 0;background:#6f3035!important;border-radius:0}.ending-past>img{filter:hue-rotate(18deg) saturate(.72)}@keyframes endingZoom{from{transform:scale(1.08)}to{transform:scale(1)}}@keyframes endingText{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@media(max-width:640px){.title-logo{max-height:170px}.title-card{padding:24px 18px}.memory-strip{top:auto;bottom:8px;left:8px}.header-actions{gap:5px}.header-actions button{padding:4px}.player-topdown{width:5.2%}.ending-shade{background:linear-gradient(0deg,rgba(3,6,10,.95) 0%,rgba(3,6,10,.64) 58%,rgba(3,6,10,.2))}.ending section{align-self:end;margin:0 auto 7vh;text-align:left}.ending section h2{font-size:25px}.ending section h2+p{font-size:13px;line-height:1.75}.ending blockquote{font-size:13px}}

/* Mystery route and ending archive */
.map-interact.is-seen{border-color:#46505b;color:#8f968f}.map-interact.is-seen kbd{color:#777f83}
.ending-record{position:absolute;z-index:8;right:16px;top:15px;padding:8px 10px;background:rgba(5,9,15,.72);border-right:1px solid #6d5839;text-align:right}.ending-record span{display:block;color:#777f88;font-size:9px;letter-spacing:.12em}.ending-record b{color:#c9ab70;font:13px ui-monospace,monospace}
.final-choice small{margin-top:5px;color:#716b62;font-size:10px;text-align:center}.truth-call{border-color:#af9159!important;color:#dfc68f!important;box-shadow:inset 0 0 24px rgba(187,145,75,.09)}.stay-choice,.cancel-choice{border:0!important;background:transparent!important;color:#89847c;padding:7px;text-decoration:underline;text-underline-offset:4px}.stay-choice{color:#9f8a88}
.ending section small{display:block;margin-top:20px;color:#908575;letter-spacing:.12em}.ending-stay>img{filter:brightness(.42) saturate(.5) hue-rotate(20deg)}.ending-truth>img{filter:saturate(.72) contrast(1.12) hue-rotate(-12deg)}.ending-particles{position:absolute;inset:0;z-index:1;pointer-events:none;background-image:radial-gradient(circle,#e1c995 0 1px,transparent 1.5px);background-size:73px 91px;opacity:.2;animation:embers 14s linear infinite}@keyframes embers{to{background-position:40px -120px}}
@media(max-width:640px){.ending-record{top:6px;right:6px}.ending section{margin-bottom:5vh}.ending section h2{font-size:23px}.ending section h2+p{font-size:12px;line-height:1.7}.ending blockquote{font-size:12px}.ending section button{margin-top:18px}}

/* Complete edition finishing pass */
.title-record{margin:18px 0 0;color:#c0a36d;font-size:11px;letter-spacing:.14em}.version-mark{display:block;margin-top:8px;color:#4f565f;font:9px ui-monospace,monospace;letter-spacing:.18em}
.help-overlay{z-index:25;background:rgba(2,4,8,.86);backdrop-filter:blur(5px)}.help-panel{width:min(460px,92vw);padding:30px;background:linear-gradient(150deg,#101722,#171216);border:1px solid #735f40;box-shadow:0 28px 100px #000}.help-panel h2{font-size:27px;font-weight:400;margin:6px 0 20px}.help-panel dl{margin:0 0 24px}.help-panel dl div{display:grid;grid-template-columns:72px 1fr;gap:14px;padding:11px 0;border-bottom:1px solid #2b3038}.help-panel dt{color:#c4a566;font-size:12px}.help-panel dd{margin:0;color:#aaa69d;font-size:12px;line-height:1.7}.help-panel button{width:100%;border-radius:0;background:#6f3035!important}
.completion-line{color:#d4bb86!important;font-size:12px!important;letter-spacing:.12em}.credits{margin-top:22px!important;color:#575b61!important;font:8px ui-monospace,monospace!important;letter-spacing:.12em!important}.player-topdown{filter:drop-shadow(0 5px 3px rgba(0,0,0,.55))}
.ending section h2+p{white-space:pre-line}.dialogue p{white-space:pre-line}
.replay-hint{max-width:560px;margin:18px 0 0!important;color:#b9a57f!important;font-size:11px!important;line-height:1.7!important;letter-spacing:.04em}
@media(max-width:640px){.help-panel{padding:22px}.help-panel h2{font-size:23px}.help-panel dl div{grid-template-columns:60px 1fr}.version-mark{margin-top:6px}}

/* Branching third nights */
.route-mother .map-art{filter:saturate(.74) brightness(.9) contrast(1.02) hue-rotate(-16deg)}
.route-child .map-art{filter:saturate(.42) brightness(.58) contrast(1.24) hue-rotate(24deg)}
.route-zero .map-art{filter:saturate(.32) brightness(.66) contrast(1.28) hue-rotate(158deg)}
.route-mother .dawn-wash{background:linear-gradient(145deg,rgba(220,229,210,.3),transparent 42%,rgba(229,171,103,.15))}
.route-child .dawn-wash{background:radial-gradient(circle at 50% 50%,rgba(100,126,164,.14),transparent 25%),linear-gradient(rgba(17,23,43,.18),rgba(4,7,13,.46))}
.route-zero .dawn-wash{background:repeating-linear-gradient(105deg,transparent 0 42px,rgba(115,178,175,.08) 43px 44px),radial-gradient(circle at 18% 23%,rgba(165,213,195,.16),transparent 28%)}
.hospital-glow{position:absolute;z-index:4;left:42%;top:17%;width:16%;height:12%;background:radial-gradient(ellipse,rgba(235,238,205,.5),transparent 68%);animation:memoryPulse 2.8s ease-in-out infinite}
.dry-fountain{position:absolute;z-index:4;left:45.5%;top:45.5%;width:9%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#10131a 0 22%,#30333b 23% 42%,#121720 43% 60%,transparent 61%);box-shadow:0 0 20px rgba(0,0,0,.8)}
.child-shadow{position:absolute;z-index:5;left:48.7%;top:43%;width:2.5%;height:5%;background:#080b12;clip-path:polygon(36% 0,64% 0,76% 28%,100% 100%,0 100%,24% 28%);filter:drop-shadow(8px 12px 3px rgba(8,10,18,.72));animation:childWait 3.5s ease-in-out infinite}
@keyframes childWait{50%{transform:translateY(2px)}}
.zero-platform{position:absolute;z-index:4;left:14%;top:20%;width:72%;height:11%;display:grid;place-items:center;border-top:1px solid rgba(152,211,195,.35);border-bottom:1px solid rgba(152,211,195,.25);color:rgba(176,224,208,.34);font:clamp(22px,6vw,70px) Georgia,serif;text-shadow:0 0 18px rgba(144,218,195,.5)}
.voice-lines{position:absolute;z-index:4;inset:0;background:radial-gradient(circle at 20% 72%,transparent 0 5%,rgba(129,205,187,.2) 5.2% 5.5%,transparent 5.8% 8%,rgba(129,205,187,.12) 8.2% 8.4%,transparent 8.8%),radial-gradient(circle at 50% 24%,transparent 0 7%,rgba(129,205,187,.13) 7.2% 7.4%,transparent 7.8%);animation:lineBreath 3s ease-in-out infinite}
@keyframes lineBreath{50%{opacity:.35;transform:scale(1.015)}}
.route-mother .map-rain{opacity:.08}.route-child .map-rain{opacity:.22}.route-zero .map-rain{opacity:.1;transform:rotate(8deg)}

/* Telephone-box puzzles and the fourth-night station */
.loop-3 .map-art{filter:saturate(.34) brightness(.48) contrast(1.3) hue-rotate(8deg);transform:scale(1.035)}
.loop-3 .map-light,.loop-3 .fallen-flowers,.loop-3 .memory-light,.loop-3 .open-gate,.loop-3 .hospital-glow,.loop-3 .dry-fountain,.loop-3 .child-shadow,.loop-3 .voice-lines{opacity:.12}
.station-layer{position:absolute;z-index:4;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(6,9,14,.7) 0 9%,transparent 9% 91%,rgba(6,9,14,.7) 91%),repeating-linear-gradient(0deg,transparent 0 10%,rgba(209,184,132,.08) 10.2% 10.5%,transparent 10.7% 20%)}
.track{position:absolute;left:9%;right:9%;height:4%;border-top:3px solid rgba(153,159,158,.48);border-bottom:3px solid rgba(153,159,158,.35);background:repeating-linear-gradient(90deg,transparent 0 3%,rgba(85,72,60,.65) 3.2% 4.2%,transparent 4.4% 7%)}
.track-a{top:35%}.track-b{bottom:25%}
.platform-sign{position:absolute;left:45%;top:12%;min-width:10%;padding:1.2% 2%;text-align:center;background:rgba(9,14,18,.9);border:1px solid #b5a06f;color:#d8c59b;font:clamp(8px,1.2vw,15px) ui-monospace,monospace;letter-spacing:.18em;box-shadow:0 0 18px #000}
.departure-board{position:absolute;right:11%;top:28%;padding:1% 1.5%;background:#080d0c;border:1px solid #3f5e4e;color:#8dc395;font:clamp(6px,.9vw,12px) ui-monospace,monospace;letter-spacing:.08em;box-shadow:0 6px 18px #000}
.puzzle-overlay{z-index:26;background:radial-gradient(circle,rgba(86,35,40,.32),rgba(1,3,6,.93) 65%)}
.puzzle-panel{width:min(620px,94vw);padding:30px;background:linear-gradient(150deg,#17191a,#0b0d10);border:7px solid #5f252b;box-shadow:0 30px 110px #000;text-align:center}
.puzzle-panel h2{margin:7px 0 10px;font-size:clamp(20px,4vw,31px);font-weight:400}.puzzle-panel>p:not(.eyebrow){color:#9b978e;font-size:12px;line-height:1.7}
.puzzle-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:22px 0 14px}.puzzle-slots span{min-height:62px;display:grid;place-items:center;padding:7px;background:#080b10;border:1px solid #4b4f54;color:#d6c6aa;font-size:11px;line-height:1.5}
.puzzle-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}.puzzle-options button{min-height:48px;padding:8px;background:#242525;border:1px solid #59564f;color:#ddd4c2;font-size:12px}.puzzle-options button:disabled{opacity:.25}.puzzle-panel strong{display:block;margin:13px 0 0;color:#b7666a;font-size:12px}.puzzle-panel .cancel-choice{margin-top:16px}
@media(max-width:640px){.puzzle-panel{padding:20px 16px}.puzzle-slots span{min-height:54px;font-size:9px}.puzzle-options button{font-size:10px}.departure-board{top:31%}}

/* A separate station scene: the town map is not visible beneath it. */
.station-scene{position:absolute;inset:0;z-index:1;overflow:hidden;background:linear-gradient(#090e16 0 12%,#18222b 12% 43%,#41413d 43% 68%,#171b20 68% 100%)}
.station-roof{position:absolute;inset:0 0 66%;background:repeating-linear-gradient(90deg,#0b1119 0 7%,#1d2931 7.3% 7.8%,#0b1119 8% 15%);border-bottom:5px solid #080b10;box-shadow:0 12px 30px #000}
.station-wall{position:absolute;left:5%;right:5%;top:18%;height:25%;background:linear-gradient(rgba(18,28,36,.94),rgba(29,39,44,.96)),repeating-linear-gradient(90deg,transparent 0 9%,rgba(154,130,89,.16) 9.2% 9.5%);border:1px solid #303b43;box-shadow:inset 0 -18px 32px rgba(0,0,0,.55)}
.station-wall:before{content:"";position:absolute;left:7%;right:7%;bottom:12%;height:42%;background:repeating-linear-gradient(90deg,#101820 0 12%,#46535a 12.4% 12.8%,#101820 13% 25%);border-top:2px solid #786947}
.station-wall span{position:absolute;z-index:1;left:50%;top:12%;transform:translateX(-50%);padding:7px 16px;background:#0a1016;border:1px solid #aa9567;color:#d4c49f;font:clamp(8px,1.2vw,14px) ui-monospace,monospace;letter-spacing:.2em;white-space:nowrap}
.platform-edge{position:absolute;left:0;right:0;top:64%;height:7%;background:repeating-linear-gradient(90deg,#c5b47c 0 2%,#56503f 2% 4%);border-top:4px solid #d0c190;border-bottom:5px solid #090c10;box-shadow:0 -18px 45px rgba(190,164,102,.08)}
.station-track{position:absolute;inset:72% 0 0;background:repeating-linear-gradient(0deg,#15191e 0 18%,#363c40 18.5% 22%,#11151a 22.5% 46%)}
.station-track:before,.station-track:after{content:"";position:absolute;left:-2%;right:-2%;height:6px;background:#74797a;box-shadow:0 3px 0 #090b0d}.station-track:before{top:22%}.station-track:after{top:67%}
.station-track i{position:absolute;top:0;bottom:0;width:5%;background:#2c2520;transform:skewX(-10deg)}.station-track i:nth-child(1){left:20%}.station-track i:nth-child(2){left:49%}.station-track i:nth-child(3){left:78%}
.station-scene .departure-board{right:8%;top:29%;z-index:2}
.platform-objects{position:absolute;left:9%;right:9%;top:47%;height:15%;display:grid;grid-template-columns:repeat(4,1fr);align-items:end;justify-items:center}
.platform-objects b{display:block;width:25%;height:48%;background:#182028;border:1px solid #6e624a;box-shadow:0 7px 12px #000}.platform-objects b:last-child{height:70%;background:#421c21;border-color:#7e393e}
.loop-3 .map-rain{z-index:3;opacity:.08}.loop-3 .map-vignette{z-index:4}.loop-3 .player-topdown{z-index:5}.loop-3 .map-interact{z-index:7}
.station-scene{background:#080d13}
.station-scene>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated;user-select:none}
.station-memory{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen}
.station-memory-mother{background:linear-gradient(135deg,rgba(223,190,126,.1),transparent 42%),radial-gradient(circle at 88% 35%,rgba(239,215,161,.12),transparent 12%)}
.station-memory-child{background:linear-gradient(rgba(16,25,45,.18),rgba(3,6,12,.28)),radial-gradient(circle at 16% 38%,rgba(99,126,169,.16),transparent 13%)}
.station-memory-zero{background:repeating-linear-gradient(90deg,transparent 0 12%,rgba(94,178,162,.045) 12.2% 12.4%),linear-gradient(rgba(45,109,103,.08),rgba(4,9,12,.25))}

/* Expanded edition: notebook, inventory and final walk */
.loop-4 .map-art{filter:saturate(.78) brightness(1.02) contrast(.98) hue-rotate(-12deg)}
.loop-4 .map-rain{opacity:.045}.loop-4 .map-vignette{box-shadow:inset 0 0 65px 12px rgba(0,0,0,.48)}
.last-walk-layer{position:absolute;z-index:4;inset:0;pointer-events:none;background:linear-gradient(155deg,rgba(133,176,205,.26),transparent 34%,rgba(231,181,108,.17) 72%,transparent)}
.sunrise-line{position:absolute;left:9%;right:9%;top:18%;height:1px;background:linear-gradient(90deg,transparent,#e1ba75,transparent);box-shadow:0 0 25px 7px rgba(218,167,92,.18);animation:titlePulse 4s ease-in-out infinite}
.last-call-mark{position:absolute;right:12%;top:24%;color:rgba(226,201,151,.42);font:clamp(7px,1vw,13px) ui-monospace,monospace;letter-spacing:.25em}
.inventory-strip{position:absolute;z-index:8;left:15px;bottom:15px;max-width:42%;display:flex;flex-wrap:wrap;gap:5px;padding:7px 8px;background:rgba(5,9,15,.78);border-left:1px solid #6d5839}.inventory-strip span{width:100%;color:#817a6e;font-size:8px;letter-spacing:.14em}.inventory-strip i{font-style:normal;color:#c9b78f;font-size:9px;padding:3px 5px;border:1px solid #3b4149;background:#0d121a}
.notebook-overlay{z-index:27;background:rgba(2,4,8,.88);backdrop-filter:blur(5px)}
.notebook-panel{width:min(760px,94vw);max-height:88svh;overflow:auto;padding:31px;background:linear-gradient(95deg,#181611 0 49.7%,#292319 50%,#16140f 50.3%);border:1px solid #7c6947;box-shadow:0 30px 110px #000}
.notebook-panel h2{margin:5px 0 20px;font-size:30px;font-weight:400}.notebook-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px}.notebook-grid h3{margin:0 0 10px;color:#c8ab72;font-size:13px;font-weight:400;letter-spacing:.13em}.notebook-grid h3:not(:first-child){margin-top:24px}.notebook-grid article{padding:9px 0;border-bottom:1px solid rgba(154,135,99,.22)}.notebook-grid article b{color:#d4c8ac;font-size:12px}.notebook-grid article p{margin:4px 0 0;color:#9b9485;font-size:10px;line-height:1.65}.notebook-grid small{color:#6f6b62}.notebook-item{display:inline-block;margin:0 4px 5px 0;padding:5px 7px;border:1px solid #5b513e;color:#bbae91;font-size:10px}.notebook-panel>button{display:block;margin:25px auto 0;border-radius:0;background:#6f3035!important}
@media(max-width:640px){.header-actions{gap:3px}.header-actions p{max-width:105px;line-height:1.2}.header-actions button{font-size:8px;padding:4px 5px}.inventory-strip{left:8px;bottom:8px;max-width:48%}.inventory-strip i{font-size:8px}.notebook-panel{padding:20px 16px}.notebook-panel h2{font-size:24px}.notebook-grid{grid-template-columns:1fr;gap:25px}.notebook-grid>div+div{padding-top:20px;border-top:1px solid rgba(154,135,99,.25)}}
/* Standalone public-build button styles (replaces shadcn/Tailwind runtime classes). */
.ui-button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:36px;padding:9px 14px;border:1px solid #565c66;background:#202733;color:#e2daca;border-radius:5px;cursor:pointer;line-height:1.2;transition:background .15s,border-color .15s,opacity .15s}
.ui-button:hover{background:#2a3341;border-color:#77715e}
.ui-button:disabled{opacity:.45;cursor:not-allowed}
.ui-button-outline{background:transparent;color:#d6cdbb;border-color:#6c665a}
.ui-button-outline:hover{background:#171d26}

/* Item-use confirmation */
.item-use-overlay{z-index:28;background:rgba(2,4,8,.82);backdrop-filter:blur(4px)}
.item-use-panel{width:min(360px,90vw);padding:26px 24px;text-align:center;background:linear-gradient(155deg,#121821,#181316);border:1px solid #806b49;box-shadow:0 24px 90px #000}
.item-use-panel h3{margin:7px 0 12px;font-size:23px;font-weight:400;color:#d9c7a0}
.item-use-panel>p:not(.eyebrow){margin:0;color:#b9b1a3;font-size:13px}
.item-use-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.item-use-actions button{border-radius:0}
.use-yes{background:#6f3035;border-color:#a56c69}

.topdown-view,.map-stage,.dpad,.dpad button,.inventory-strip,.inventory-strip *,.memory-strip,.memory-strip *,.interact,.map-interact,.choice,.choice *,.dialogue,.dialogue *,.header-actions,.header-actions *{ -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; }
.dpad button,.map-interact,footer button,.choice button,.ui-button{touch-action:none}

/* Mystery rework: explicit line connection choice */
.connection-overlay{z-index:28;background:radial-gradient(circle,rgba(40,54,70,.28),rgba(2,4,8,.9) 62%)}
.connection-panel{width:min(430px,92vw);padding:28px 24px;background:linear-gradient(155deg,#111925,#171215);border:1px solid #8a744f;box-shadow:0 28px 90px #000;text-align:center}
.connection-panel h2{margin:8px 0 8px;font-size:24px;font-weight:400;letter-spacing:.08em}
.connection-panel>p:not(.eyebrow){color:#aaa397;font-size:12px;line-height:1.8}
.connection-panel>strong{display:block;margin:15px auto;color:#d7b36f;font:28px ui-monospace,monospace;letter-spacing:.22em}
.connection-panel .ui-button{width:100%;margin-top:10px;border-radius:0;background:#6f3035}
.connection-panel .cancel-choice{display:block;width:100%;margin-top:10px}
@media(max-width:640px){.connection-panel{padding:22px 18px}.connection-panel h2{font-size:21px}.connection-panel>strong{font-size:24px}}
