@charset "UTF-8";
:root{color-scheme:dark;--ink:#ede7de;--muted:#a5a0a2;--rose:#bf7d7a;--gold:#c6b8a1;--serif:"Songti SC","STSong","Noto Serif CJK SC",serif;--sans:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#10131b;color:var(--ink)}body{font:14px var(--sans);overflow:hidden}button,input,select{font:inherit}button{color:inherit;background:none;border:0;cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible{outline:1px solid #e7c1b7;outline-offset:5px}button:hover:not(:disabled){color:#fff}a{color:#d4aa9d}button,select{transition:background .2s,color .2s,border .2s,opacity .2s}button[hidden],[hidden]{display:none!important}::selection{background:#8c515e;color:#fff}#novel{position:relative;width:100%;height:100svh;min-height:520px;overflow:hidden;background:#10151c}.stage-bg,.stage-light,.film-grain,.weather,#blackout{position:absolute;inset:0;pointer-events:none}.stage-bg{background:url('assets/backgrounds/gate.svg') center/cover no-repeat;transition:opacity .5s,filter .5s;filter:brightness(.9) saturate(.75)}.stage-light{background:linear-gradient(0deg,#10131bba,transparent 45%,#10131b55),linear-gradient(90deg,#10131b55,transparent 35%,transparent 70%,#10131b55)}.film-grain{z-index:30;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.65' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}.weather{opacity:.1;background:repeating-linear-gradient(105deg,transparent 0,transparent 110px,#dfdee066 111px,transparent 112px,transparent 170px);background-size:200px 400px;animation:rain 2s linear infinite;mask-image:linear-gradient(transparent,#000)}#blackout{background:#080b11;opacity:0;z-index:8;transition:opacity .35s}#blackout.active{opacity:.92}.screen-border{position:absolute;inset:12px;pointer-events:none;border:1px solid #d8c4ae0c;z-index:25}
#title-screen{position:absolute;inset:0;overflow:hidden}.title-character{position:absolute;height:115%;max-width:65%;right:4%;bottom:-22%;filter:brightness(.7) drop-shadow(-30px 0 50px #0007);opacity:.86;animation:appear 1.8s}.title-shadow{position:absolute;inset:0;background:linear-gradient(90deg,#10131bfa 0,#10131bcd 30%,#10131b0d 75%),linear-gradient(0deg,#10131bd9,transparent 50%)}.title-copy{position:absolute;top:11%;left:9%;z-index:2}.title-kicker{font-size:10px;letter-spacing:4px;color:#b1a5a5;margin:0 0 54px;display:flex;align-items:center;gap:14px}.title-kicker>span{width:28px;height:1px;background:#ba8585}.title-en{letter-spacing:7px;font-size:9px;color:#baa9a7;margin:0 0 18px}.title-copy h1{font:clamp(58px,6.5vw,96px)/1.2 var(--serif);letter-spacing:12px;margin:0;text-shadow:2px 4px 25px #0004}.title-sub{font:15px var(--serif);letter-spacing:7px;color:#c2b6b4;margin:24px 0}.title-line{height:1px;width:65px;background:linear-gradient(90deg,#c3968e,transparent);margin:28px 0}.title-menu{display:flex;flex-direction:column;gap:2px;width:228px}.title-menu button{font-family:var(--serif);font-size:18px;letter-spacing:5px;display:flex;align-items:center;text-align:left;padding:11px 7px 11px 0;border-bottom:1px solid transparent;color:#bbb4b5;gap:20px}.title-menu button:hover{border-color:#d8b1a94d;color:#f5ebe4}.title-menu button:first-child{color:#f2e7dc}.title-menu button>span{font:9px var(--sans);letter-spacing:1px;color:#8f797c}.title-menu button b{margin-left:auto;font:18px var(--sans);font-weight:400;color:#b48887;opacity:0;transform:translateX(-10px);transition:.25s}.title-menu button:hover b{opacity:1;transform:translateX(0)}.title-quote{position:absolute;right:10%;bottom:12%;z-index:3;text-align:right;text-shadow:0 2px 15px #000}.title-quote>span{font-size:10px;letter-spacing:4px;color:#cfaaa4}.title-quote p{font:20px var(--serif);letter-spacing:3px;margin:15px 0;color:#ebe2d5}.title-quote small{font-size:10px;color:#a49ba0;letter-spacing:2px}.title-footer{position:absolute;left:4%;right:4%;bottom:25px;display:flex;justify-content:space-between;color:#877f89;font-size:9px;letter-spacing:2px}.title-footer span:first-child:before{content:'◆';font-size:6px;margin-right:13px;color:#b28a86}
#story-screen{position:absolute;inset:0}.scene-hud{position:absolute;z-index:15;left:0;right:0;top:0;height:76px;padding:0 4.5%;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#10131bbb,transparent);text-shadow:0 2px 10px #000}.scene-meta{display:flex;gap:15px;align-items:center;font-size:10px;color:#b4aeb1;letter-spacing:2px}.scene-meta>span:first-child{font-size:9px;color:#d1bbb6}.meta-line{height:10px;width:1px;background:#b4aeb13a}.scene-meta time{color:#8d8991;font-size:10px;letter-spacing:1px;padding-left:9px}.scene-actions{display:flex;gap:20px}.scene-actions button{font-size:10px;letter-spacing:2px;color:#a9a2ab;padding:10px 0}.scene-actions button[aria-pressed=true]{color:#dfb3a6}.characters{position:absolute;inset:0;overflow:hidden;pointer-events:none}.character{position:absolute;height:92%;width:auto;max-width:62%;bottom:2%;object-fit:contain;transform:translateX(-50%);filter:brightness(.65) saturate(.65);opacity:.93;transition:filter .35s,opacity .35s;z-index:2;animation:character-in .5s ease}.character.left{left:31%}.character.right{left:71%}.character.center{left:54%}.character.speaking{filter:brightness(1) saturate(.88) drop-shadow(0 0 26px #bc9d8b0a);opacity:1;z-index:3}.character.memory{opacity:.62;filter:brightness(.8) saturate(.4);mix-blend-mode:screen}.character.memory.speaking{opacity:.8}.stage-caption{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);color:#cec1c2;letter-spacing:12px;font:26px var(--serif);text-shadow:0 0 24px #000;pointer-events:none;opacity:0}.stage-caption.visible{animation:caption 2.5s ease}.dialogue-wrap{position:absolute;z-index:12;bottom:4.8%;left:6%;right:6%;padding:28px 36px 0;background:linear-gradient(115deg,#181c29f7,#171c27ed 55%,#231b28ef);border:1px solid #b8b3b332;border-top-color:#c4b8ad77;box-shadow:0 14px 70px #0007;backdrop-filter:blur(14px)}.dialogue-wrap:before,.dialogue-wrap:after{content:'';position:absolute;top:9px;bottom:9px;width:5px;border-top:1px solid #d1c1b14d;border-bottom:1px solid #d1c1b14d;pointer-events:none}.dialogue-wrap:before{left:9px;border-left:1px solid #d1c1b133}.dialogue-wrap:after{right:9px;border-right:1px solid #d1c1b133}.speaker-name{position:absolute;top:-23px;left:30px;padding:11px 30px;background:#6e444f;min-width:150px;text-align:center;font:17px var(--serif);letter-spacing:5px;color:#f4e8dd;border:1px solid #c79d905e;box-shadow:0 4px 15px #0003}.dialogue-note{position:absolute;top:-22px;left:220px;font-size:10px;color:#c7b7b3;letter-spacing:2px;padding:9px 0;text-shadow:0 2px 6px #000}.dialogue{display:block;width:100%;text-align:left;padding:10px 0 18px;min-height:114px;cursor:pointer;font-family:var(--sans);font-size:21px;line-height:1.95;letter-spacing:1.5px;color:#e9e3df;position:relative}.dialogue:hover:not(:disabled){color:#e9e3df}.dialogue[aria-disabled=true]{cursor:default}.dialogue-text-thought{font-family:var(--serif);color:#cbc4d1}.dialogue-text-narration{font-family:var(--serif);color:#d2cdd1}.dialogue-wrap.narration .speaker-name{background:#343946;color:#c2c2cd;letter-spacing:6px;min-width:120px}.dialogue-wrap.thought .speaker-name{background:#3e4356;font-size:14px;letter-spacing:3px}.dialogue-wrap.broadcast .speaker-name{background:#474a4a;color:#d7d0bd}.next-cue{position:absolute;bottom:8px;right:3px;font-size:9px;color:#d0a69b;animation:next 1.3s infinite}.next-cue.typing{opacity:0;animation:none}.dialogue-bottom{padding:12px 0 14px;border-top:1px solid #e5d6d110;display:flex;justify-content:space-between;align-items:center;gap:15px}.dialogue-bottom>span{font-size:9px;color:#7d7886;letter-spacing:1px}.quick-menu{display:flex;gap:23px;align-items:center}.quick-menu button{font-size:10px;letter-spacing:2px;color:#9f98a6;padding:3px 0;white-space:nowrap}.quick-menu button.active,.quick-menu button[aria-pressed=true]{color:#e0b2a5}.quick-menu>span{height:10px;width:1px;background:#d4b9b126}.choice-layer{position:absolute;inset:0;z-index:11;display:flex;justify-content:center;align-items:center;flex-direction:column;padding:60px 25px 240px;background:linear-gradient(#080b143d,#080b147a 60%,transparent);animation:appear .4s}.choice-prompt{font:11px var(--serif);letter-spacing:4px;color:#c1a9ad;text-align:center;margin-bottom:20px;text-shadow:0 2px 6px #000}.choice-layer #choice-list{width:min(570px,70%);display:flex;flex-direction:column;gap:11px}.vn-choice{display:block;width:100%;padding:14px 30px;background:linear-gradient(90deg,#1a1e2ce6,#302632ea,#1a1e2ce6);border:1px solid #b7a2a160;box-shadow:0 6px 22px #0003;color:#e6d6ce;font:17px/1.65 var(--serif);letter-spacing:2px;text-align:center;position:relative}.vn-choice:before{content:'◆';font-size:6px;position:absolute;left:15px;top:24px;color:#a77c7e}.vn-choice:hover:not(:disabled){border-color:#dfb0a3;background:linear-gradient(90deg,#332731f5,#4b303df5,#332731f5);color:#fff2df}.vn-choice:disabled{opacity:.44;background:#151923ed}.vn-choice small{display:block;font:10px/1.5 var(--sans);letter-spacing:.5px;color:#b8a7ac;margin-top:6px}.restore-ui{position:absolute;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;padding-bottom:25px;color:#c3b8b3;font-size:10px;letter-spacing:2px;background:linear-gradient(transparent 80%,#10131b77)}.ui-hidden .dialogue-wrap,.ui-hidden .scene-hud{visibility:hidden}.ending-screen{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;background:radial-gradient(ellipse at 50% 40%,#151b2488,#11131bf2);padding:50px 30px}.ending-kicker{font-size:10px;letter-spacing:5px;color:#c4a6a5}.ending-screen h1{font:clamp(30px,4vw,58px) var(--serif);letter-spacing:9px;margin:28px 0 18px}.ending-screen .ending-sub{font:15px var(--serif);letter-spacing:4px;color:#b7a5ae}.ending-rule{height:60px;width:1px;background:linear-gradient(#c6988b,transparent);margin:28px 0}.ending-last{font:17px/2 var(--serif);letter-spacing:2px;color:#cec0c5;max-width:650px}.ending-actions{display:flex;gap:25px;margin-top:38px}.ending-actions button{border-bottom:1px solid #ae8e8a55;padding:12px 5px;font:13px var(--serif);letter-spacing:3px;color:#cdbab6}.ending-unlocked{font-size:10px;letter-spacing:2px;margin-top:26px;color:#827483}
dialog{color:var(--ink);background:linear-gradient(135deg,#1d202d,#201e2c);border:1px solid #a48c8c55;max-width:800px;width:calc(100% - 48px);max-height:84svh;padding:28px 34px;box-shadow:0 30px 120px #0009}dialog::backdrop{background:#070b15d9;backdrop-filter:blur(8px)}dialog>header{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:20px;border-bottom:1px solid #cbb9b220;margin-bottom:25px}dialog>header p{font-size:8px;letter-spacing:4px;color:#ac8586;margin:0 0 8px}dialog h2{font:26px var(--serif);letter-spacing:5px;margin:0}#close-modal{font:30px var(--serif);color:#aaa0ae;padding:0 5px}.modal-copy{font-size:13px;line-height:2.2;color:#b9b2bd}.modal-copy p{margin:0 0 18px}.modal-copy .small{font-size:10px;color:#89808e}.confirm-actions{display:flex;justify-content:flex-end;gap:18px;margin-top:28px}.confirm-actions button{padding:11px 22px;border:1px solid #a88c9155;font-size:12px;letter-spacing:2px}.confirm-actions .primary{background:#9d667538;border-color:#c4969766;color:#ead2c9}.save-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.save-card{border:1px solid #bba1a133;background:#10152055;padding:17px;text-align:left;min-height:110px}.save-card:hover:not(:disabled){border-color:#c59b9266;background:#52313a33}.save-card:disabled{opacity:.38}.save-card .slot-no{font:9px monospace;letter-spacing:2px;color:#b48a87}.save-card h3{font:16px var(--serif);letter-spacing:2px;line-height:1.6;margin:10px 0 7px}.save-card p{font-size:10px;color:#8f8596;line-height:1.7;margin:0}.save-card .save-preview{font:11px var(--serif);color:#aea1ae;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.save-footnote{font-size:10px;line-height:1.9;color:#938695;margin:20px 0 0}.log-entry{display:grid;grid-template-columns:105px 1fr;gap:14px;padding:16px 0;border-bottom:1px solid #cab5be12}.log-entry .log-speaker{font:12px var(--serif);letter-spacing:2px;color:#c29d9d}.log-entry p{font:15px/1.9 var(--sans);margin:0;color:#d0c6cf;letter-spacing:.5px}.log-entry.narrator p,.log-entry.thought p{font-family:var(--serif);color:#9e97a9}.log-place{padding:19px 0 8px;font-size:9px;letter-spacing:2px;color:#8f7182}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:18px 0;border-bottom:1px solid #d0b6c01a}.setting-row label,.setting-row>span{font-size:13px;color:#c8becb}.setting-row small{display:block;font-size:10px;line-height:1.8;color:#887e94;margin-top:6px}.setting-row input[type=range]{width:150px;accent-color:#b47f88}.setting-row button{padding:8px 15px;min-width:85px;border:1px solid #a28a9944;font-size:11px;color:#cbb3ba}.gallery-list{display:grid;grid-template-columns:1fr 1fr;gap:15px}.gallery-card{border:1px solid #c4a0a52c;padding:22px 18px;font:18px var(--serif);line-height:1.6;letter-spacing:2px}.gallery-card.locked{color:#766b7b}.gallery-card small{display:block;font:10px var(--sans);line-height:1.8;letter-spacing:1px;color:#9b7f8f;margin-top:10px}#notification{position:absolute;z-index:100;left:50%;top:82px;transform:translate(-50%,-8px);padding:12px 23px;background:#1d2332f5;border:1px solid #c6a5a333;font-size:11px;letter-spacing:2px;color:#d1c0ca;opacity:0;transition:.25s;pointer-events:none;max-width:90%;line-height:1.8;text-align:center}#notification.show{opacity:1;transform:translate(-50%,0)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.large-text .dialogue{font-size:25px;min-height:140px}.reduced-motion *, .reduced-motion *:before,.reduced-motion *:after{animation:none!important;transition:none!important}.reduced-motion .stage-caption.visible{opacity:.65}
@keyframes rain{from{transform:translateY(-100px)}to{transform:translateY(300px)}}@keyframes appear{from{opacity:0}to{opacity:1}}@keyframes character-in{from{opacity:0;transform:translate(-50%,10px)}to{opacity:.93;transform:translate(-50%,0)}}@keyframes next{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(3px);opacity:1}}@keyframes caption{0%,100%{opacity:0}30%,70%{opacity:.7}}
@media(min-width:1600px){.dialogue-wrap{left:12%;right:12%;bottom:6%;padding:35px 45px 0}.dialogue{font-size:24px;min-height:134px}.dialogue-bottom{padding:17px 0}.title-copy{top:14%;left:12%}.title-kicker{margin-bottom:75px}.title-menu{gap:8px}.title-quote{right:13%;bottom:17%}.characters .character.left{left:34%}.characters .character.right{left:69%}}
@media(max-width:1050px){.title-copy{left:7%;top:10%}.title-copy h1{font-size:66px;letter-spacing:8px}.title-en{font-size:8px;letter-spacing:5px}.title-kicker{margin-bottom:40px}.title-character{right:-11%;max-width:75%}.title-quote{right:7%;bottom:14%}.title-quote p{font-size:16px;letter-spacing:2px}.dialogue-wrap{left:4%;right:4%;padding:26px 28px 0;bottom:4%}.dialogue{font-size:19px;min-height:120px}.quick-menu{gap:17px}.dialogue-bottom>span{display:none}.dialogue-bottom{justify-content:flex-end}.scene-meta{gap:10px;font-size:9px;letter-spacing:1px}.scene-actions{gap:15px}.scene-meta time{display:none}.character.left{left:29%}.character.right{left:73%}.choice-layer #choice-list{width:min(530px,82%)}.choice-layer{padding-bottom:250px}.log-entry{grid-template-columns:85px 1fr}}
@media(max-height:650px) and (min-width:761px){.title-copy{top:8%}.title-kicker{margin-bottom:22px}.title-copy h1{font-size:62px}.title-sub{margin:17px 0}.title-line{margin:20px 0}.title-menu button{font-size:16px;padding:8px 0}.title-quote{bottom:13%}.dialogue-wrap{bottom:4%;padding:22px 30px 0}.dialogue{min-height:95px;font-size:18px}.dialogue-bottom{padding:9px 0}.choice-layer{padding-bottom:220px}.vn-choice{font-size:15px;padding:9px 25px}}
@media(max-width:760px){#novel{min-height:580px}.screen-border{inset:8px}.title-copy{left:8%;top:11%}.title-kicker{font-size:8px;letter-spacing:2px;margin-bottom:47px}.title-en{font-size:7px;letter-spacing:4px}.title-copy h1{font-size:clamp(48px,10.4vw,74px);letter-spacing:5px}.title-sub{font-size:12px;letter-spacing:4px;margin:20px 0}.title-character{height:85%;bottom:-10%;right:-31%;max-width:110%;filter:brightness(.58);opacity:.75}.title-shadow{background:linear-gradient(90deg,#10131bf5,#10131b8a 50%,#10131b10),linear-gradient(0deg,#10131b,transparent 60%)}.title-menu{width:184px;gap:5px}.title-menu button{font-size:17px;letter-spacing:4px;padding:11px 0}.title-menu button>span{font-size:8px}.title-line{margin:24px 0}.title-quote{right:8%;bottom:10%;left:8%}.title-quote p{font-size:14px;letter-spacing:1px}.title-quote>span{font-size:9px}.title-quote small{font-size:9px;letter-spacing:1px}.title-footer{left:8%;right:8%;bottom:24px;font-size:8px;letter-spacing:1px}.title-footer>span:last-child{display:none}.scene-hud{height:65px;padding:0 6%;align-items:center}.scene-meta{gap:7px;font-size:9px;letter-spacing:.5px;flex-wrap:wrap;max-width:65%;line-height:1.8}.scene-meta>span:first-child{font-size:8px;letter-spacing:1px;display:block;width:100%}.meta-line{display:none}.scene-actions{gap:12px}.scene-actions button{font-size:9px;letter-spacing:1px}#fullscreen-btn{display:none}.character{height:76%;max-width:88%;bottom:14%}.character.left{left:17%}.character.right{left:81%}.character.center{left:52%}.dialogue-wrap{bottom:max(24px,env(safe-area-inset-bottom));left:15px;right:15px;padding:25px 22px 0;background:linear-gradient(115deg,#181c29f5,#211c2af7)}.speaker-name{left:18px;top:-21px;min-width:120px;font-size:16px;padding:10px 23px;letter-spacing:3px}.dialogue-note{left:168px;top:-19px;font-size:9px;letter-spacing:.5px}.dialogue{font-size:17px;line-height:1.9;letter-spacing:.7px;min-height:132px;padding:5px 0 19px}.dialogue-bottom{justify-content:center;padding:12px 0 14px}.quick-menu{gap:14px;flex-wrap:wrap;justify-content:center;row-gap:9px}.quick-menu button{font-size:9px;letter-spacing:.5px}.quick-menu>span{display:none}.dialogue-wrap:before{left:6px}.dialogue-wrap:after{right:6px}.next-cue{bottom:5px;font-size:8px}.choice-layer{padding:65px 22px 266px}.choice-layer #choice-list{width:100%;gap:11px}.choice-prompt{font-size:10px;letter-spacing:3px;margin-bottom:17px}.vn-choice{font-size:15px;padding:13px 22px;letter-spacing:1px}.vn-choice small{font-size:9px}.vn-choice:before{left:11px;top:22px;font-size:5px}.stage-caption{font-size:18px;letter-spacing:7px}.ending-screen{padding:40px 23px}.ending-screen h1{font-size:31px;letter-spacing:4px;line-height:1.6}.ending-last{font-size:15px;line-height:2.1}.ending-actions{gap:16px}.ending-actions button{font-size:12px;letter-spacing:1px}.ending-screen .ending-sub{font-size:12px;letter-spacing:2px}.ending-kicker{font-size:8px;letter-spacing:3px}.large-text .dialogue{font-size:20px;min-height:160px}dialog{padding:25px 20px;width:calc(100% - 26px);max-height:86svh}dialog h2{font-size:22px}.save-grid,.gallery-list{grid-template-columns:1fr}.save-card{padding:15px}.log-entry{grid-template-columns:1fr;gap:7px;padding:13px 0}.log-entry p{font-size:14px}.log-entry .log-speaker{font-size:10px}.setting-row{gap:18px}.setting-row input[type=range]{width:110px}.setting-row label,.setting-row>span{font-size:12px}.setting-row small{font-size:9px}.setting-row button{min-width:70px;font-size:10px}#notification{top:75px;letter-spacing:1px;width:max-content;font-size:10px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-height:580px){#novel{min-height:100svh}.title-copy{top:8%;left:7%}.title-kicker{margin-bottom:18px}.title-copy h1{font-size:47px}.title-sub{font-size:11px;margin:12px 0}.title-line{margin:15px 0}.title-menu{gap:0}.title-menu button{padding:7px 0;font-size:14px}.title-quote{bottom:14%}.title-quote small{display:none}.title-footer{bottom:13px}.title-character{height:110%;bottom:-21%;right:0;max-width:65%}.scene-hud{height:45px}.dialogue-wrap{bottom:17px;padding:17px 24px 0;left:5%;right:5%}.dialogue{font-size:15px;min-height:79px;padding:5px 0 13px;line-height:1.75}.dialogue-bottom{padding:8px 0}.speaker-name{font-size:13px;min-width:110px;padding:8px 18px;top:-18px}.dialogue-note{top:-19px;left:165px;font-size:8px}.quick-menu{gap:17px}.quick-menu button{font-size:9px}.character{height:99%;bottom:1%;max-width:57%}.character.left{left:30%}.character.right{left:70%}.choice-layer{padding:42px 20px 170px}.choice-layer #choice-list{width:min(500px,80%);gap:7px}.choice-prompt{margin-bottom:10px;font-size:9px}.vn-choice{font-size:13px;padding:7px 20px}.vn-choice:before{top:17px}.vn-choice small{font-size:8px;margin-top:3px}.large-text .dialogue{font-size:18px;min-height:95px}}

/* V3: quiet movement, readable faces and horror in the depth of the scene. */
.atmosphere{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.atmosphere>div{position:absolute;pointer-events:none}
.mist-back{inset:36% -18% -7%;opacity:.15;background:radial-gradient(ellipse at 20% 74%,#8293995c,transparent 52%),radial-gradient(ellipse at 80% 55%,#7f91993b,transparent 45%);filter:blur(24px);animation:mist-drift 23s ease-in-out infinite alternate}
.lens-shade{inset:0;background:radial-gradient(ellipse at 50% 43%,transparent 34%,#080d1626 77%,#080c144a);opacity:.8}
.emergency-light{inset:9% 29% 25%;background:radial-gradient(ellipse at 51% 42%,#8c2b3925,transparent 53%);opacity:0;transition:opacity 1.6s}
#novel[data-scene="corridor"] .emergency-light,#novel[data-scene="basement"] .emergency-light{opacity:.8;animation:emergency-breathe 9s ease-in-out infinite}
#novel[data-scene="roof"] .mist-back{opacity:.07}
#novel:not([data-scene="gate"]):not([data-scene="roof"])>.weather{opacity:.025}
.far-shadow{left:50%;top:27%;width:38px;height:25%;border-radius:42% 45% 16% 18%;background:linear-gradient(#080b12e0,#0a0d12b8 60%,transparent);filter:blur(5px);transform:translateX(-50%) rotate(-2deg);opacity:0;transition:opacity 1.3s}
.far-shadow:before{content:'';position:absolute;left:7px;top:-25px;width:24px;height:33px;border-radius:50%;background:#080b12e0}
#novel[data-cue="whisper"]:not([data-scene="roof"]) .far-shadow{opacity:.65}
#novel[data-cue="bell"] .emergency-light{opacity:1}
.character{filter:brightness(.82) saturate(.78);opacity:.96;transform-origin:50% 83%;animation:character-in .6s ease,portrait-breathe 6.8s ease-in-out .6s infinite}
.character.right{animation-duration:.6s,7.6s;animation-delay:0s,-2.6s}
.character.speaking{filter:brightness(1.04) saturate(.91) drop-shadow(0 0 19px #a9bac010)}
.character.memory{opacity:.65;filter:brightness(.9) saturate(.38);animation:character-in .9s ease,memory-drift 10s ease-in-out infinite}
.character.memory.speaking{opacity:.83}
.title-character{filter:brightness(.84) saturate(.8) drop-shadow(-30px 0 50px #0007)}
@keyframes portrait-breathe{0%,100%{translate:0 1px;scale:1 1}50%{translate:0 -1px;scale:1.001 1.003}}
@keyframes memory-drift{0%,100%{translate:0 0}50%{translate:1px -3px}}
@keyframes mist-drift{from{translate:-2% 0}to{translate:3% -1.5%}}
@keyframes emergency-breathe{0%,100%{opacity:.5}50%{opacity:.85}}
.reduced-motion .far-shadow{transition:none!important}

/* Extended edition: investigation remains part of the visual-novel stage. */
#investigation-layer{position:absolute;inset:0;z-index:7;pointer-events:none}
#investigation-layer button{pointer-events:auto}
.explore-heading{position:absolute;left:5%;top:77px;max-width:65%;text-shadow:0 2px 8px #000}
.explore-heading>span{font:9px var(--sans);letter-spacing:3px;color:#b89c93}
.explore-heading h2{font:23px var(--serif);letter-spacing:4px;font-weight:400;margin:10px 0}
.explore-heading p{font:11px/1.9 var(--sans);color:#bfc0c7;letter-spacing:1px;margin:0;max-width:510px}
.hotspots{position:absolute;inset:0}
.hotspot{position:absolute;left:clamp(70px,var(--spot-x),calc(100% - 70px));top:var(--spot-y);transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;text-align:left;min-height:48px;padding:8px 12px 8px 8px;border:1px solid #baa09b55;background:linear-gradient(100deg,#131925ea,#1d2430b8);box-shadow:0 2px 15px #060a1366;backdrop-filter:blur(4px);max-width:225px;border-radius:2px}
.hotspot:hover:not(:disabled){border-color:#ddbbb0;background:#2c2530ed;box-shadow:0 0 25px #b9876126}
.spot-mark{flex-shrink:0;width:27px;height:27px;border:1px solid #c0a39880;border-radius:50%;display:grid;place-items:center;font:10px Georgia,serif;color:#ead1be;box-shadow:0 0 0 4px #c3a29109}
.spot-label{font:13px/1.6 var(--serif);letter-spacing:1px;color:#e5dcd0}
.spot-label small{display:block;font:8px/1.6 var(--sans);letter-spacing:1px;color:#a09ca7;margin-top:2px}
.hotspot.inspected{border-color:#8b9e9a38;background:#1b242ad4;opacity:.75}
.hotspot.inspected .spot-mark{color:#b4c6ba;border-color:#8aa79e66}
.hotspot:disabled{opacity:.4}
.explore-progress{position:absolute;right:5%;top:81px;display:flex;flex-direction:column;align-items:flex-end;gap:11px;pointer-events:auto}
.explore-progress>span{font:9px var(--sans);letter-spacing:2px;color:#b5a5ab}
.explore-progress button{font:12px var(--serif);letter-spacing:1px;padding:10px 15px;border:1px solid #baa09b66;background:#2a2330e6}
.explore-progress button b{font-weight:400;margin-left:10px;color:#e2baac}
.explore-progress button:disabled{opacity:.4}
.scene-investigating .character{opacity:0!important;filter:brightness(.7) saturate(.5)!important}
.scene-investigating .stage-bg{filter:brightness(1.05) saturate(.8)}
.scene-investigating .stage-light{opacity:.65}
.scene-puzzling .character{opacity:0!important}
#puzzle-layer{position:absolute;inset:0;z-index:10;pointer-events:none;background:linear-gradient(#080b1414,#080b1466 50%,transparent 73%)}
.puzzle-card{position:absolute;pointer-events:auto;top:12%;bottom:auto;max-height:calc(var(--dialogue-top,66vh) - 12vh - 30px);left:50%;transform:translateX(-50%);width:min(680px,86%);overflow:auto;overscroll-behavior:contain;scrollbar-color:#74616b #191e2a;scrollbar-width:thin;padding:23px 29px;background:linear-gradient(135deg,#181d2bf7,#241e2af7);border:1px solid #bfa7a266;box-shadow:0 20px 60px #0007;backdrop-filter:blur(16px)}
.puzzle-kicker{font:9px var(--sans);letter-spacing:3px;color:#b69590;margin:0 0 10px}
.puzzle-card h2{font:23px/1.4 var(--serif);font-weight:400;letter-spacing:3px;margin:0 0 15px;color:#e7dbcf}
.puzzle-prompt{font:13px/1.9 var(--sans);letter-spacing:.6px;color:#c3bbc6;margin:0 0 17px;white-space:pre-line}
.code-label{font:10px var(--sans);letter-spacing:2px;color:#9a8c9b;display:block;margin:10px 0 9px}
.puzzle-code{width:100%;padding:12px 15px;border:1px solid #b99a9a55;background:#0d1423b3;color:#e8d9c9;letter-spacing:8px;font:25px Georgia,serif;outline:none;border-radius:0}
.puzzle-code::placeholder{font:12px var(--sans);letter-spacing:2px;color:#7a7184}
.puzzle-code:focus{border-color:#dfb29f}
.puzzle-options{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.puzzle-option{padding:12px 14px;border:1px solid #a89ba440;text-align:left;background:#0d16255c;font:12px/1.65 var(--sans);color:#c5bdc9;letter-spacing:.5px}
.puzzle-option[aria-pressed=true]{background:#6d435338;border-color:#cf9c8f;color:#f0d8c8}
.puzzle-option:disabled{opacity:.46}
.puzzle-option:hover:not(:disabled){border-color:#c39e90;background:#46313d8a}
.sequence-result{padding:12px 14px;border-left:2px solid #ad8a85;background:#0f162563;margin:12px 0}
.sequence-result>span{font:9px var(--sans);letter-spacing:2px;color:#a596a4}
.sequence-result p{font:11px/1.7 var(--sans);color:#d0bcc7;display:flex;gap:7px;flex-wrap:wrap;margin:7px 0}
.sequence-result b{font-weight:400;background:#382f3b;padding:4px 8px}
.sequence-result button{font:9px var(--sans);color:#ad8c96;padding:4px 0;border-bottom:1px solid #ad8c964d}
.puzzle-feedback{font:11px/1.7 var(--sans);color:#d5a2a1;min-height:19px;margin:11px 0}
.puzzle-controls{display:flex;align-items:center;gap:17px;flex-wrap:wrap}
.puzzle-controls button{font:10px var(--sans);letter-spacing:1px;color:#baa7b5;padding:9px 0}
.puzzle-controls button:disabled{opacity:.4}
.puzzle-primary,.puzzle-controls .puzzle-primary{background:#6b414e6b;border:1px solid #bf92867d;padding:10px 23px;color:#eddbd0;font:12px var(--serif);letter-spacing:2px}
.puzzle-primary:hover{background:#81515f80}
.puzzle-hints{font:11px/1.9 var(--sans);color:#b9adbd;padding:14px 0 0 18px;margin:15px 0 0;border-top:1px solid #ccb2ba21}
.puzzle-hints li{margin:4px 0;padding-left:4px}
.puzzle-assist{font:11px var(--serif);letter-spacing:1px;color:#d9bcac;margin-top:16px;padding:9px 0;border-bottom:1px solid #b38a7966}
.solved-answer{padding:12px 15px;margin:18px 0 22px;border:1px solid #8caaa244;color:#bfd5c7;white-space:pre-line;font:14px/1.8 var(--serif);letter-spacing:2px}
.puzzle-solved{bottom:auto;max-height:55%}
.journal-intro{font:12px/1.9 var(--sans);color:#a79cac;letter-spacing:.5px;margin-bottom:22px}
.journal-list{display:flex;flex-direction:column;gap:17px}
.journal-entry{padding:20px 23px;background:#1019276b;border:1px solid #9b8b9438;border-left:2px solid #ab847c}
.journal-entry>span{font:8px var(--sans);letter-spacing:3px;color:#9c8088}
.journal-entry h3{font:18px var(--serif);letter-spacing:2px;color:#dbcac0;margin:10px 0 12px;font-weight:400}
.journal-entry p{font:13px/2 var(--sans);letter-spacing:.5px;color:#bdb4c1;margin:0;white-space:pre-line}
.ui-hidden #investigation-layer,.ui-hidden #puzzle-layer{visibility:hidden}
@media(max-width:760px){
 .explore-heading{top:78px;left:6%;max-width:63%}.explore-heading>span{font-size:7px;letter-spacing:1px}.explore-heading h2{font-size:18px;letter-spacing:2px;margin:7px 0}.explore-heading p{font-size:9px;line-height:1.7;letter-spacing:0;max-width:220px}
 .explore-progress{top:81px;right:5%;gap:9px}.explore-progress>span{font-size:8px;letter-spacing:.5px}.explore-progress button{font-size:9px;padding:8px;max-width:102px;line-height:1.6}.explore-progress button b{margin-left:3px}
 .hotspot{left:var(--spot-mobile-x);top:var(--spot-mobile-y);max-width:137px;padding:6px 8px 6px 6px;gap:6px;min-height:45px}.spot-mark{width:22px;height:22px;font-size:9px}.spot-label{font-size:11px;letter-spacing:.3px}.spot-label small{font-size:7px;letter-spacing:0}
 .puzzle-card{top:10%;bottom:auto;max-height:calc(var(--dialogue-top,70vh) - 10vh - 30px);width:calc(100% - 32px);padding:19px 19px}.puzzle-card h2{font-size:20px;letter-spacing:2px;margin-bottom:12px}.puzzle-kicker{font-size:8px;letter-spacing:2px}.puzzle-prompt{font-size:12px;line-height:1.8}.puzzle-options{grid-template-columns:1fr;gap:7px}.puzzle-option{font-size:11px;padding:10px 12px}.puzzle-controls{gap:14px}.puzzle-controls button{font-size:9px}.puzzle-controls .puzzle-primary{font-size:11px;padding:10px 14px}.puzzle-solved{bottom:auto;max-height:55%}.puzzle-code{font-size:22px}.journal-entry{padding:18px}.journal-entry p{font-size:12px}
 .quick-menu{gap:12px}.quick-menu button{font-size:9px}.scene-investigating .character{opacity:0!important}
}
@media(max-height:580px){.explore-heading{top:49px;max-width:55%}.explore-heading h2{font-size:16px;margin:5px 0}.explore-heading>span{display:none}.explore-heading p{font-size:9px}.explore-progress{top:50px}.explore-progress button{font-size:10px;padding:6px 10px}.hotspot{top:clamp(115px,var(--spot-y),calc(100% - 180px));padding:5px;min-height:34px}.spot-label{font-size:10px}.spot-mark{width:21px;height:21px}.spot-label small{font-size:7px}.puzzle-card{top:48px;bottom:auto;max-height:calc(var(--dialogue-top,63vh) - 75px);width:min(680px,86%);padding:16px 20px}.puzzle-solved{bottom:auto;max-height:calc(var(--dialogue-top,63vh) - 75px)}.puzzle-card h2{font-size:19px}.puzzle-options{grid-template-columns:1fr 1fr}.puzzle-prompt{font-size:11px}.puzzle-kicker{font-size:8px}.puzzle-code{font-size:18px;padding:8px 12px}}

.choice-layer #choice-list{max-height:calc(var(--dialogue-top,68vh) - 150px);overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#7c6470 #181c28;scrollbar-width:thin;padding:1px}
.choice-layer .vn-choice{flex-shrink:0}
@media(max-height:580px){.choice-layer #choice-list{max-height:calc(var(--dialogue-top,62vh) - 100px)}}

/* V4 Overhaul: Chapter transition card, flashlight spotlight, tactile puzzles & 3-tab dossier */
.chapter-card{position:absolute;inset:0;z-index:22;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 45%,#151b29ee,#090d15fa);pointer-events:none;opacity:0;transition:opacity .45s ease;text-align:center;padding:24px}
.chapter-card.active{opacity:1}
.chapter-card p{font:10px var(--sans);letter-spacing:5px;color:#c29994;margin:0 0 14px}
.chapter-card h2{font:clamp(26px,3.6vw,44px) var(--serif);letter-spacing:7px;color:#f2e7dc;margin:0 0 16px;text-shadow:0 4px 28px #000}
.chapter-card span{font:11px var(--serif);letter-spacing:3px;color:#a89fa8;padding-top:14px;border-top:1px solid #c9a69c44}
.hud-badge{display:inline-block;margin-left:5px;padding:1px 6px;border-radius:9px;background:#7d4d58;color:#f6e8df;font:9px var(--sans); font-weight:500;letter-spacing:0;vertical-align:1px}
.dialogue-wrap.spectral .speaker-name{background:#323f5e;color:#dce8f8;border-color:#8ca8d866}
#investigation-layer{--beam-x:50%;--beam-y:44%}
.flashlight-beam{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle 220px at var(--beam-x) var(--beam-y),#fff6dc14 0%,#d8e4f008 42%,#070b1378 100%);transition:background .06s linear}
.explore-bar{width:168px;height:3px;background:#ffffff18;overflow:hidden;border-radius:2px}
.explore-bar i{display:block;height:100%;background:linear-gradient(90deg,#b9847c,#e5c4b0);transition:width .35s ease}
.hotspot.required:not(.inspected) .spot-mark{border-color:#dfb19b;box-shadow:0 0 0 5px #dfb19b1c;animation:spot-pulse 2.2s ease-in-out infinite}
@keyframes spot-pulse{0%,100%{box-shadow:0 0 0 3px #dfb19b14}50%{box-shadow:0 0 0 8px #dfb19b2e}}
.code-dials{display:flex;gap:12px;justify-content:center;margin:6px 0 14px}
.code-dial{display:flex;flex-direction:column;align-items:center;background:#0e1524cc;border:1px solid #bca09b55;padding:4px 10px;min-width:56px}
.dial-step{font-size:10px;color:#b89c98;padding:4px 10px;width:100%;text-align:center}
.dial-step:hover{color:#f5dfd3;background:#ffffff0d}
.dial-digit{font:26px/1.3 Georgia,serif;color:#f0e2d2;padding:4px 0;user-select:none}
.sequence-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.sequence-head>span{font:9px var(--sans);letter-spacing:1.5px;color:#a899a7}
.seq-chip{padding:0;margin:2px;background:none;border:0}
.seq-chip b{display:inline-block;font-weight:400;background:#443342;border:1px solid #c59b9466;color:#f0ded4;padding:5px 10px;font-size:11px;transition:.2s}
.seq-chip:hover b{background:#684252;border-color:#e4b8ad}
.opt-tag{display:block;font:9px var(--sans);letter-spacing:1.5px;color:#a88f96;margin-bottom:4px}
.evidence-banner{padding:8px 12px;margin-bottom:10px;background:#2c222e88;border-left:2px solid #c7968b;font:10px var(--sans);letter-spacing:1.5px;color:#d8c2bc}
.dossier-tabs{display:flex;gap:10px;margin:-6px 0 20px;border-bottom:1px solid #cbb9b224;padding-bottom:12px;flex-wrap:wrap}
.dossier-tab{padding:8px 16px;font:12px var(--serif);letter-spacing:2px;color:#a69ba8;border:1px solid transparent;background:#14182480}
.dossier-tab.active{color:#f2e4da;border-color:#c79b9166;background:#4a303b66}
.journal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.journal-toolbar .journal-intro{margin:0;flex:1;min-width:220px}
.journal-search{padding:8px 13px;background:#101522cc;border:1px solid #b599994d;color:#ece0d6;font:12px var(--sans);min-width:210px;outline:none}
.journal-search:focus{border-color:#dfb1a1}
.fate-summary{padding:14px 18px;background:#141a2899;border:1px solid #b6999936;margin-bottom:18px}
.fate-summary>span{display:block;font:9px var(--sans);letter-spacing:2.5px;color:#ad8f92;margin-bottom:10px}
.fate-pills{display:flex;gap:8px;flex-wrap:wrap}
.fate-pill{font:11px var(--sans);font-weight:400;padding:4px 10px;border:1px solid #9d8b9644;background:#222738;color:#d6cbd4}
.fate-pill.good{border-color:#82a89d66;background:#1c313088;color:#cce4dc}
.fate-pill.warn{border-color:#b8838366;background:#38222988;color:#e6c4c4}
.cast-list{display:grid;grid-template-columns:1fr;gap:13px}
.cast-card{display:grid;grid-template-columns:84px 1fr;gap:18px;padding:15px 18px;background:#11172578;border:1px solid #a6929936;align-items:center}
.cast-avatar{width:84px;height:106px;overflow:hidden;background:radial-gradient(circle at 50% 35%,#2b3347,#121722);border:1px solid #bfa39c40; position:relative}
.cast-avatar img{width:150%;height:auto;position:absolute;left:50%;top:-6px;transform:translateX(-50%)}
.cast-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.cast-head h3{font:18px var(--serif);letter-spacing:3px;color:#eadbd0;margin:0}
.trust-pill{font:10px var(--sans);letter-spacing:1px;padding:3px 9px;background:#49303b88;border:1px solid #c79a9255;color:#edd6cb}
.trust-pill.spectral{background:#26344f88;border-color:#88a4d055;color:#d4e2f8}
.cast-role{display:block;font:10px var(--sans);letter-spacing:1.5px;color:#a88d92;margin:5px 0 8px}
.cast-info p{font:12px/1.85 var(--sans);color:#bdb5c2;margin:0}
.map-grid{display:flex;flex-direction:column;gap:10px}
.map-room{display:grid;grid-template-columns:108px 1fr;gap:16px;padding:14px 18px;background:#10162466;border:1px solid #9b8c9530;align-items:center}
.map-room.current{border-color:#d8a99b88;background:linear-gradient(90deg,#3d283366,#161d2c88)}
.map-room.unvisited{opacity:.52}
.map-floor{font:11px var(--serif);letter-spacing:2px;color:#bfa09a;border-right:1px solid #bfa09a2e;padding-right:12px}
.map-title{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:5px}
.map-title h3{font:16px var(--serif);letter-spacing:2px;color:#e6d8ce;margin:0}
.map-status{font:10px var(--sans);letter-spacing:1px;color:#b8a5ad}
.map-room.current .map-status{color:#f0c7b8}
.map-detail p{font:12px/1.75 var(--sans);color:#b2aab8;margin:0}
@media(max-width:760px){
 .cast-card{grid-template-columns:68px 1fr;gap:13px;padding:12px}
 .cast-avatar{width:68px;height:88px}
 .map-room{grid-template-columns:1fr;gap:6px}
 .map-floor{border-right:0;border-bottom:1px solid #bfa09a24;padding:0 0 5px}
 .journal-search{width:100%}
}
