/* Full-height scene presentation: the frame changes, dialogue never accumulates. */
dialog.scene-mode{overflow:hidden;background:#050608}
.scene-mode>.close{right:max(12px,calc((100vw - 480px)/2 + 12px));top:max(14px,env(safe-area-inset-top));z-index:60;background:transparent;border:0;box-shadow:none}
.scene-screen{width:min(100%,480px);height:100dvh;position:relative;isolation:isolate;overflow:hidden;margin:auto;background:#030a0d;--scene-accent:#81e7e1;--scene-border:#77cbd54d}
.scene-screen.noel{--scene-accent:#f4bacb;--scene-border:#e6a0b04d;background:#140c10}
.scene-screen .scene-art{position:absolute;inset:0;background-size:200% auto;background-position:100% 15%;animation:scene-reveal .45s ease-out both;pointer-events:none}
.scene-screen .scene-art.zero{background-size:cover;background-position:50% 12%}
.scene-screen.framing-close .scene-art{transform:scale(1.16);transform-origin:50% 32%}
.scene-screen.framing-wide .scene-art{transform:scale(1);filter:brightness(.7)}
.scene-screen.narration .scene-art{filter:brightness(.4) blur(2px)}
.scene-atmosphere{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 10% 25%,#57f5e510,transparent 60%)}
.scene-tap-area{position:absolute;inset:75px 0 0;z-index:1;background:none;border:0;cursor:pointer}.scene-dialogue{z-index:2}.scene-location{pointer-events:none}
.noel .scene-atmosphere{background:radial-gradient(ellipse at 80% 25%,#ffcedd22,transparent 60%)}
.scene-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#03080ef5 0%,#03080e96 25%,transparent 65%,#03080e77 100%)}
.noel .scene-vignette{background:linear-gradient(0deg,#140c10fa,#140c1096 25%,transparent 65%,#140c1077)}
.scene-header{position:absolute;top:0;left:0;right:0;padding:20px 55px 25px 22px;background:linear-gradient(#0009,transparent);z-index:3}
.scene-header strong{font-size:11px;letter-spacing:-.2px;font-weight:600;color:#f2edf6}
.scene-header span{display:block;font-size:8px;color:#c1bec9;letter-spacing:.6px;margin-top:7px}
.scene-progress{height:2px;position:absolute;top:0;left:0;right:0;background:#ffffff11;z-index:4}.scene-progress span{display:block;height:100%;background:var(--scene-accent);transition:width .3s}
.scene-location{position:absolute;top:22%;left:0;right:0;text-align:center;font-size:10px;letter-spacing:2px;color:#e9e8f5b3}
.scene-dialogue{position:absolute;left:0;right:0;bottom:0;padding:38px 26px max(28px,env(safe-area-inset-bottom));background:linear-gradient(transparent,#060b11d9 14%,#060b11fa 100%);animation:dialogue-reveal .3s ease-out both}
.noel .scene-dialogue{background:linear-gradient(transparent,#180f16d9 14%,#180f16fa)}
.scene-dialogue-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px;border-top:1px solid var(--scene-border);padding-top:17px}
.scene-dialogue-top>span{font-size:12px;font-weight:600;letter-spacing:.5px;color:var(--scene-accent)}
.scene-dialogue-top button{font-size:9px;color:#c6becf;background:none;border:0;padding:4px}
.scene-line{font-size:17px;font-weight:500;line-height:1.95;letter-spacing:-.4px;color:#fff;min-height:70px;text-shadow:0 1px 8px #0005;overflow-wrap:anywhere}
.scene-continue{display:flex;justify-content:flex-end;align-items:center;gap:15px;margin-top:23px;width:100%;padding:12px 0 0;font-size:10px;letter-spacing:2px;color:#d0c9d8}
.scene-continue span{font-size:18px;color:var(--scene-accent)}
.scene-screen.narration .scene-dialogue{bottom:22%;background:none;text-align:center}
.narration .scene-dialogue-top{border:0;justify-content:flex-end;margin-bottom:18px}
.narration .scene-line{font-size:18px;font-weight:400;line-height:2.2;text-shadow:0 2px 12px #000}
.narration .scene-continue{justify-content:center;margin-top:36px}
.scene-choices{display:grid;gap:9px;margin-top:24px}
.scene-choices button{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--scene-border);border-radius:5px;background:#152c32b3;padding:14px 15px;text-align:left;color:#e4f4f4;font-size:12px;line-height:1.6}
.noel .scene-choices button{background:#3d2332bd;color:#ffeef4}.scene-choices button:hover{border-color:var(--scene-accent);background:#315057b3}.noel .scene-choices button:hover{background:#674054bd}
.scene-choices button span{color:var(--scene-accent);font-size:16px}
.scene-dialogue.with-input{padding-top:50px}.scene-input{margin-top:15px}
.scene-input .field{font-size:10px;margin:12px 0 15px}.scene-input .field input,.scene-input .field select{background:#08191dd9;border:1px solid #629aa366;border-radius:5px;padding:13px 12px;font-size:14px;color:#f1fcff;width:100%;margin-top:8px;color-scheme:dark}
.noel .scene-input .field input,.noel .scene-input .field select{background:#26141cd9;border-color:#b47b8c66}
.scene-input .solid,.scene-review .solid{border-radius:5px;background:var(--scene-accent);color:#132329;padding:13px 15px;font-size:12px;min-height:46px}.noel .scene-input .solid,.noel .scene-review .solid{color:#3d1c29}
.scene-input .unknown-choice{border-radius:5px;border-color:var(--scene-border);font-size:11px;color:#d4c8dc;margin-bottom:13px;padding:10px}
.scene-data-note{display:block;font-size:8px;line-height:1.9;color:#a7a6b5;margin-top:12px}
.scene-review{max-height:calc(100dvh - 76px);overflow-y:auto;scrollbar-width:thin;overscroll-behavior:contain;background:linear-gradient(#09121bea,#09121bfa);border-top:1px solid var(--scene-border);padding-top:5px}
.noel .scene-review{background:linear-gradient(#20121bea,#20121bfa)}
.scene-review .scene-line{font-size:19px;min-height:0}.scene-review-copy{font-size:11px;line-height:1.9;color:#c7bdcf;margin-top:10px}
.scene-review .birth-summary{margin:18px 0;border-color:var(--scene-border);padding:2px 0}.scene-review .birth-summary>div{padding:8px 0;font-size:11px}
.scene-review .check{font-size:9px;line-height:1.8;margin:15px 0}
.scene-checkout-scroll{position:absolute;left:0;right:0;bottom:0;top:82px;overflow-y:auto;overscroll-behavior:contain;background:linear-gradient(#100e18d9,#100e18fa 20%);scrollbar-width:thin}.noel .scene-checkout-scroll{background:linear-gradient(#20101bd9,#20101bfa 20%)}
.scene-checkout-scroll .checkout-scene{padding-top:25px}.scene-checkout-scroll .checkout-lock{font-size:42px;margin-bottom:15px}
.scene-checkout-scroll .checkout-scene h2{font-size:22px}.scene-checkout-scroll .checkout-scene .kicker{font-size:8px}
@keyframes scene-reveal{from{opacity:.55}to{opacity:1}}@keyframes dialogue-reveal{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
@media(max-width:380px),(max-height:700px){.scene-dialogue{padding-left:21px;padding-right:21px;padding-bottom:20px}.scene-line{font-size:15px;line-height:1.9;min-height:60px}.scene-choices button{padding:11px 13px;font-size:11px}.scene-dialogue-top{margin-bottom:12px;padding-top:13px}.scene-continue{margin-top:17px}.scene-input .field input,.scene-input .field select{padding:10px 12px}.scene-input .solid{padding:11px 14px;min-height:42px}.scene-data-note{font-size:7px}.narration .scene-line{font-size:16px}}
.scene-screen.zero.mood-playful .scene-art{background-image:url('assets/zero-playful-v1.png');background-size:cover;background-position:50% 12%}
.scene-screen.zero.mood-analysis .scene-art{background-image:url('assets/zero-analysis-v1.png');background-size:cover;background-position:50% 12%}
.scene-screen.zero.mood-serious .scene-art{background-image:url('assets/zero-serious-v1.png');background-size:cover;background-position:50% 12%}
.result-story.zero.mood-playful .portrait.zero{background-image:url('assets/zero-playful-v1.png')}.result-story.zero.mood-analysis .portrait.zero{background-image:url('assets/zero-analysis-v1.png')}.result-story.zero.mood-serious .portrait.zero{background-image:url('assets/zero-serious-v1.png')}
.story-intro-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:5}.skip-intro-video{position:absolute;bottom:max(25px,env(safe-area-inset-bottom));right:22px;z-index:7;padding:12px 17px;border:1px solid #95d8dc66;border-radius:6px;background:#08171acc;color:#effcff;font-size:11px}
@media(prefers-reduced-motion:reduce){.scene-screen .scene-art,.scene-dialogue{animation:none}.scene-progress span{transition:none}}
.scene-idle-stage{position:absolute;inset:0;pointer-events:none;overflow:hidden;isolation:isolate}
.idle-background{position:absolute;inset:-12px;background:url('assets/zero-idle-background-v1.png') center 35%/cover no-repeat;animation:archive-drift 24s ease-in-out infinite alternate;will-change:transform}
.idle-screen-glow{position:absolute;inset:0;background:radial-gradient(ellipse at 12% 35%,#5affdf25,transparent 50%),radial-gradient(ellipse at 90% 60%,#4cd8f016,transparent 45%);animation:archive-glow 8s ease-in-out infinite;mix-blend-mode:screen}
.idle-character-frame{position:absolute;inset:0;transform-origin:50% 30%;transition:transform .7s ease,filter .7s ease}
.idle-character-motion{position:absolute;inset:0;transform-origin:50% 85%;animation:zero-breathe 5.8s ease-in-out infinite;will-change:transform}
.idle-character{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 8%;filter:drop-shadow(0 0 12px #0005)}
.idle-particles{position:absolute;inset:-25px;background-image:radial-gradient(circle at 8% 20%,#b8fff4b0 0 1px,transparent 2px),radial-gradient(circle at 85% 37%,#b8fff470 0 1px,transparent 2px),radial-gradient(circle at 18% 69%,#67fff980 0 1px,transparent 2px),radial-gradient(circle at 92% 85%,#a7efff80 0 1px,transparent 2px);animation:archive-particles 13s ease-in-out infinite alternate}
.framing-close .idle-character-frame{transform:scale(1.09)}
.framing-wide .idle-character-frame{transform:scale(.97);filter:brightness(.85)}
.narration .scene-idle-stage{filter:brightness(.5)}
dialog:not([open]) .scene-idle-stage *{animation-play-state:paused}
@keyframes zero-breathe{0%,100%{transform:translate3d(0,0,0) scale(1,1) rotate(-.08deg)}50%{transform:translate3d(0,-3px,0) scale(1.003,1.008) rotate(.08deg)}}
@keyframes archive-drift{from{transform:scale(1.04) translate3d(-3px,0,0)}to{transform:scale(1.055) translate3d(3px,-4px,0)}}
@keyframes archive-glow{0%,100%{opacity:.35}50%{opacity:.8}}
@keyframes archive-particles{from{transform:translate3d(0,8px,0);opacity:.35}to{transform:translate3d(3px,-12px,0);opacity:.8}}
@media(prefers-reduced-motion:reduce){.scene-idle-stage *{animation:none!important;transition:none!important}}
.scene-idle-stage .idle-background{inset:0;animation:none;transform:none;background-position:center}
.scene-idle-stage .idle-character-motion{animation:none;transform:none;will-change:auto}
.scene-idle-stage .idle-screen-glow{animation:none;opacity:.18}
.scene-idle-stage .idle-particles{display:none}
.idle-hair-canvas{position:absolute;inset:0;display:block;width:100%;height:100%;visibility:hidden}
.scene-idle-stage[data-rig-ready="true"] .idle-hair-canvas{visibility:visible}
.scene-idle-stage[data-rig-ready="true"] .idle-character{visibility:hidden}
.idle-data-network{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen;opacity:.8}
.data-trace{fill:none;stroke:#64fbe5;stroke-width:1;opacity:.12}
.data-packet{fill:none;stroke:#91fff1;stroke-width:2;stroke-linecap:round;stroke-dasharray:16 245;filter:drop-shadow(0 0 4px #46ffe8);animation:data-transfer var(--packet-duration) linear var(--packet-delay) infinite}
.data-nodes{fill:#c3fff3;filter:drop-shadow(0 0 6px #50ffe5);animation:data-node-light 4s ease-in-out infinite}
.scene-idle-stage[data-motion-paused="true"] .idle-data-network *{animation-play-state:paused}
@keyframes data-transfer{to{stroke-dashoffset:-783}}
@keyframes data-node-light{0%,100%{opacity:.25}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.idle-data-network *{animation:none!important}}
.scene-idle-stage[data-motion-mode="on"] .data-packet{animation:data-transfer var(--packet-duration) linear var(--packet-delay) infinite!important}
.scene-idle-stage[data-motion-mode="on"] .data-nodes{animation:data-node-light 4s ease-in-out infinite!important}
.scene-idle-stage[data-motion-paused="true"] .idle-data-network *{animation-play-state:paused!important}

.scene-screen.mate{--scene-accent:#ffd37a;--scene-border:#e6c27a4d;background:#15120c}
.scene-screen.mate .scene-idle-stage.school-stage{background:#15120c}
.scene-screen.mate .idle-character-frame{transform:none!important}
.scene-screen.moon{--scene-accent:#c9d8ff;--scene-border:#a9bdf04d;background:#0e1220}
.scene-screen.moon .scene-idle-stage.school-stage{background:#0e1220}
.scene-screen.moon .idle-character-frame{transform:none!important}
.scene-screen.mujin{--scene-accent:#ff9b8a;--scene-border:#d9594d4d;background:#150909}
.scene-screen.mujin .scene-idle-stage.school-stage{background:#150909}
.scene-screen.mujin .idle-character-frame{transform:none!important}
.scene-screen.keeper{--scene-accent:#f3cf6b;--scene-border:#d9b24d4d;background:#141008}
.scene-screen.keeper .scene-idle-stage.school-stage{background:#141008}
.scene-screen.keeper .idle-character-frame{transform:none!important}
