@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700;900&family=Noto+Sans+SC:wght@400;500&display=swap');
:root{--ink:#254d48;--mint:#d6e5d9;--paper:#fcfaf3;--orange:#d97e55}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Noto Sans SC',sans-serif}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible{outline:3px solid var(--orange);outline-offset:5px}button{transition:transform .2s,background .2s}button:hover{transform:translateY(-2px)}.serif,h1,h2,h3{font-family:'Noto Serif SC',serif}header{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;border-bottom:1px solid #244d4820}header .logo{font:700 23px 'Noto Serif SC';letter-spacing:4px}nav{display:flex;gap:28px}nav button,.plain{border:0;background:none;font-size:12px;letter-spacing:2px}.edition{font-size:10px;letter-spacing:3px;color:#71847b}.landing{position:relative;min-height:calc(100vh - 88px);display:grid;grid-template-columns:47% 53%;overflow:hidden}.intro{padding:9vh 0 40px 11%;position:relative;z-index:2}.eyebrow{font-size:11px;letter-spacing:4px;display:flex;align-items:center;gap:13px}.eyebrow:before{content:'';width:35px;height:1px;background:var(--orange)}h1{font-size:clamp(65px,7.5vw,120px);line-height:1.12;font-weight:500;letter-spacing:7px;margin:32px 0 24px}h1 span{display:block;color:var(--orange);margin-left:55px}.sub{font:500 18px 'Noto Serif SC';letter-spacing:4px}.desc{color:#77877b;font-size:13px;line-height:2.1;margin:24px 0 30px}.primary{background:var(--ink);color:white;border:0;padding:18px 34px;letter-spacing:4px;min-width:218px}.secondary{background:transparent;border:1px solid #254d4840;padding:17px 24px;letter-spacing:2px}.actions{display:flex;gap:12px;flex-wrap:wrap}.footnote{margin-top:35px;color:#8a9589;font-size:10px;letter-spacing:2px}.hero-art{position:relative;margin:40px 6% 40px 0;min-height:620px}.photo{position:absolute;background-size:300% 200%;background-image:url('assets/atlas.png');box-shadow:0 15px 35px #29483f22;border:9px solid #fffdf6}.photo.main{width:75%;height:76%;top:5%;left:13%;background-position:0 0;transform:rotate(3deg)}.photo.portrait{width:39%;height:46%;top:43%;left:-1%;background-position:50% 0;transform:rotate(-9deg)}.photo.small{width:37%;height:40%;top:55%;right:0;background-position:100% 0;transform:rotate(8deg)}.stamp{position:absolute;right:2%;top:7%;width:100px;height:100px;border:1px solid #d97e5580;border-radius:50%;color:var(--orange);display:grid;place-content:center;transform:rotate(14deg);font:14px 'Noto Serif SC';text-align:center;line-height:1.8}.hand{position:absolute;bottom:7%;left:34%;font:18px 'Noto Serif SC';transform:rotate(-6deg)}.vertical{position:absolute;right:0;top:29%;writing-mode:vertical-rl;font-size:10px;letter-spacing:5px}.scene{height:100dvh;position:relative;background:#203d36;overflow:hidden}.backdrop{position:absolute;inset:-2%;background-image:url('assets/atlas.png');background-size:300% 200%;animation:drift 18s ease-in-out infinite alternate}.scene:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#102e33c9,transparent 75%);pointer-events:none}.gamebar{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:center;justify-content:space-between;padding:24px 4%;color:white;background:linear-gradient(#163b3966,transparent)}.gamebar .plain{color:white}.chapter{font-size:12px;letter-spacing:3px}.dialogue{position:absolute;z-index:3;bottom:5%;left:10%;width:80%;max-height:75vh;overflow:auto;background:#fffdf5ed;border:1px solid #ffffff88;padding:28px 40px;box-shadow:0 12px 80px #13352c33;backdrop-filter:blur(20px)}.speaker{font:600 21px 'Noto Serif SC';color:var(--orange);margin-bottom:13px}.prose{font:18px/1.95 'Noto Serif SC';white-space:pre-line}.choices{display:grid;gap:9px;margin-top:20px}.choice{background:#fffefa;border:1px solid #254d4830;text-align:left;padding:14px 18px;font-size:14px}.choice:hover{background:#e5eee5;border-color:var(--ink)}.choice span{color:var(--orange);margin-right:15px;font-size:11px}.next{display:block;margin:22px 0 0 auto}.tag{font-size:10px;letter-spacing:3px}.toast{position:absolute;top:100px;left:50%;transform:translateX(-50%);z-index:9;background:#fffcf2ed;padding:12px 25px;font-size:13px;animation:appear .5s}.progress{height:2px;background:#ffffff40;position:absolute;top:76px;left:4%;right:4%}.progress i{height:100%;display:block;background:#f1c69d;transition:width .5s}.ending{text-align:center;padding:4vh 0}.ending h2{font-size:40px;margin:20px 0}.ending p{max-width:620px;margin:20px auto;line-height:2}.ending .actions{justify-content:center}dialog{width:min(850px,92vw);max-height:86vh;border:1px solid #254d4833;background:var(--paper);color:var(--ink);padding:42px}dialog::backdrop{background:#173b3bcc;backdrop-filter:blur(8px)}.close{position:absolute;right:16px;top:12px;background:none;border:0;font-size:28px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card-art{height:210px;background-image:url('assets/atlas.png');background-size:300% 200%}.cards h3{margin-bottom:6px}.cards p{font-size:12px;line-height:1.9;color:#738074}.muted{font-size:12px;line-height:1.9;color:#738074}.log-item{border-bottom:1px solid #254d4822;padding:14px 0;line-height:1.8;font-size:14px}.slots{display:grid;gap:12px}.slot{display:flex;justify-content:space-between;align-items:center;padding:17px;border:1px solid #254d4833}.slot button{padding:8px;border:0;background:#e1e9df;margin-left:8px}@keyframes drift{to{transform:scale(1.04) translateX(.4%)}}@keyframes appear{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}.dialogue{animation:appear .45s} @media(max-width:760px){header{height:70px;padding:0 6%}nav{gap:12px}nav button{letter-spacing:0}.edition{display:none}.landing{display:flex;flex-direction:column}.intro{padding:45px 7% 15px}h1{font-size:74px;margin:22px 0}.hero-art{min-height:430px;margin:0 7% 30px 15%}.intro .desc{margin:20px 0}.footnote{margin-top:22px}.dialogue{left:4%;width:92%;bottom:3%;padding:22px}.prose{font-size:16px}.gamebar{padding:20px 4%;gap:10px}.gamebar nav{gap:5px}.gamebar .plain{font-size:10px;letter-spacing:0}.chapter{font-size:10px;letter-spacing:1px}.cards{grid-template-columns:repeat(2,1fr)}.card-art{height:180px}.ending h2{font-size:28px}dialog{padding:30px 22px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
header .logo{white-space:nowrap}nav button{white-space:nowrap}@media(max-width:400px){header .logo{font-size:18px;letter-spacing:1px}header{padding:0 5%}header nav{gap:9px}header nav button{font-size:10px;padding:0}.sub{font-size:16px;letter-spacing:2px}}
.long-note{font-size:11px;color:var(--orange)}.campus-map,.practice{min-height:100dvh;background:var(--paper)}.campus-top{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:78px;border-bottom:1px solid #254d4822;padding:18px 4%;position:relative;z-index:4}.campus-top .brand{font:700 23px 'Noto Serif SC';letter-spacing:3px;padding:0}.week-title{font-size:12px;letter-spacing:2px}.campus-event .campus-top{color:white;background:#123b3960;border:0}.map-heading{padding:45px 6% 25px}.map-heading h2{font-size:40px;font-weight:500;margin:18px 0}.map-heading>p{color:#728579;font-size:13px}.campus-stats{display:flex;gap:25px;font-size:11px;color:#728579;margin:25px 0}.week-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;padding:0 6%}.week-card{text-align:left;border:1px solid #254d4822;padding:0;background:white;overflow:hidden}.week-card.finished{opacity:.6;cursor:default}.week-art{height:310px;background-image:url('assets/atlas.png');background-size:300% 200%;position:relative}.week-art>span{position:absolute;top:14px;left:14px;background:#fffdf2e8;font-size:10px;padding:7px 11px;letter-spacing:2px}.week-info{padding:23px}.week-info small{font-size:10px;letter-spacing:1px;color:var(--orange)}.week-info h3{font-size:21px;margin:12px 0;line-height:1.6}.week-info p{font-size:12px;color:#7d8c7e;line-height:1.9}.event-link{display:block;font-size:12px;margin-top:18px}.week-footer{padding:28px 6% 40px;display:flex;justify-content:space-between;gap:20px;align-items:center}.event-caption{position:absolute;left:5%;top:115px;color:white;z-index:2;text-shadow:0 2px 15px #123b39}.event-caption h2{font-size:32px;font-weight:500;margin:15px 0}.decision-prompt{font-size:13px;margin-top:23px;color:var(--orange)}.response{font-size:13px;line-height:1.9;background:#edf0e5;padding:15px;margin:20px 0 0}.practice-body{max-width:1050px;margin:auto;padding:35px 30px 50px}.practice-head h2{font-size:34px;font-weight:500;margin:16px 0}.practice-head p{font-size:13px;line-height:1.9;color:#738074}.practice-bottom{display:flex;flex-wrap:wrap;gap:20px;margin:25px 0;align-items:center;font-size:12px}.practice-bottom .plain{padding:10px 0;letter-spacing:1px}.practice-bottom #game-feedback{color:var(--orange);line-height:1.8}.game-counter{font-size:12px;letter-spacing:2px;margin:25px 0 20px}.memory-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.memory-card{height:125px;position:relative;overflow:hidden;border:1px solid #cedbca;background:#e2eadd;padding:0}.card-cover{display:grid;place-content:center;font:28px 'Noto Serif SC';position:absolute;inset:0;background:#dce7d9;color:#66816d}.card-face{display:none;position:absolute;inset:0;background-size:300% 200%}.flipped .card-face,.matched .card-face{display:block}.matched{opacity:.55}.round-result{padding:25px 0;text-align:center;animation:appear .3s}.round-result h3{font-size:23px}.round-result p{font-size:13px;line-height:1.9}.round-result .primary{margin-top:10px}.basket-art,.music-art{height:230px;background-image:url('assets/locations.png');background-size:300% 200%;background-position:50% 0%;border:7px solid white;box-shadow:0 8px 30px #244d4811}.music-art{background-position:100% 0%}.shot-meter{height:45px;position:relative;background:#e2ddd0;border:5px solid white;margin:26px 0 12px;box-shadow:0 0 0 1px #254d4830;overflow:hidden}.target-zone{position:absolute;top:0;bottom:0;background:#83af91}.shot-meter i{position:absolute;left:0;top:2px;bottom:2px;width:7px;border:2px solid white;background:#d97e55;box-shadow:0 0 0 2px #95512e;transform:translateX(-50%)}.meter-label,.center{text-align:center;font-size:12px;color:#7c8a7c}.center-actions{display:flex;justify-content:center;gap:15px;margin-top:24px}.note-keyboard{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;max-width:700px;margin:auto}.note-key{background:white;border:1px solid #cedbca;min-height:90px;font-family:Georgia,serif;font-size:26px}.note-key small{display:block;color:#a5afa2;font-size:11px;margin-top:12px}.note-key:active,.note-key.lit{background:var(--orange);color:white;transform:translateY(3px)}.note-sequence{display:flex;gap:15px;justify-content:center;min-height:50px;align-items:center;margin:15px}.note-sequence span{min-width:24px;font-family:Georgia,serif}.photo-brief{padding:22px;background:#e9eee3;margin:20px 0}.photo-brief p{font-family:'Noto Serif SC';font-size:18px;line-height:1.8;margin-bottom:0}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.photo-option{padding:7px 7px 13px;background:white;border:1px solid #254d4822;font-size:12px}.photo-option.selected{border:3px solid var(--orange);padding:5px 5px 11px}.photo-image{display:block;height:175px;background-image:url('assets/locations.png');background-size:300% 200%;margin-bottom:13px}.setting{padding:17px 0;border-bottom:1px solid #254d4820;font-size:14px;line-height:2}.setting input{accent-color:var(--ink);margin-right:10px}.letter-film{width:140px;height:210px;margin:auto;background:url('assets/letter-motion.png') 0 0 / 400% 100%;animation:letterframes 5s steps(1) infinite;border:5px solid white;box-shadow:0 5px 25px #244d4822}@keyframes letterframes{0%,20%{background-position:0 0}30%,45%{background-position:33.333% 0}55%,70%{background-position:66.666% 0}80%,100%{background-position:100% 0}}.ending .letter-film~h2{font-size:32px}.ending .muted{font:12px/1.9 'Noto Sans SC';max-width:620px}.campus-event .dialogue{bottom:4%;max-height:65dvh}.campus-event .prose{font-size:18px;line-height:2.05}.campus-event .speaker small{font:10px 'Noto Sans SC';margin-left:10px}.campus-event .backdrop{filter:brightness(.83)}@media(min-width:1200px){.campus-event .dialogue{left:15%;width:70%}.memory-card{height:145px}}@media(max-width:850px){.week-cards{grid-template-columns:repeat(2,1fr)}.week-art{height:300px}.campus-top{flex-wrap:wrap;gap:14px}.campus-top nav{gap:15px}.week-title{margin-left:auto}.campus-event .campus-top nav{width:100%;justify-content:flex-end}.event-caption{top:140px}.event-caption h2{font-size:25px}.campus-event .dialogue{max-height:61dvh}.memory-grid{gap:7px;grid-template-columns:repeat(4,1fr)}.memory-card{height:110px}}@media(max-width:480px){header nav{gap:10px}.landing h1{font-size:68px}.campus-top{padding:17px 6%;gap:10px}.campus-top .brand{font-size:19px}.campus-top nav{width:100%;justify-content:space-between;gap:10px}.campus-top nav .plain{font-size:11px;padding:2px}.week-title{font-size:10px;letter-spacing:1px}.map-heading{padding-top:28px}.map-heading h2{font-size:30px}.campus-stats{gap:12px;font-size:9px;flex-wrap:wrap}.week-cards{gap:12px}.week-art{height:205px}.week-art>span{font-size:9px;letter-spacing:0;top:8px;left:8px;padding:5px}.week-info{padding:13px}.week-info small{font-size:9px;line-height:1.6;display:block}.week-info h3{font-size:16px}.week-info p{font-size:10px}.week-footer{display:block}.week-footer .primary{margin-top:10px}.practice-body{padding:25px 18px}.practice-head h2{font-size:25px}.practice-head p{font-size:12px}.memory-grid{grid-template-columns:repeat(4,1fr);gap:6px}.memory-card{height:90px}.game-counter{font-size:10px;letter-spacing:1px}.basket-art,.music-art{height:180px}.note-keyboard{gap:7px}.note-key{font-size:21px;min-height:85px}.photo-grid{grid-template-columns:repeat(2,1fr);gap:9px}.photo-image{height:130px}.photo-option{font-size:10px}.photo-brief p{font-size:16px}.event-caption{left:6%;top:135px}.event-caption h2{font-size:23px}.campus-event .dialogue{max-height:65dvh;padding:20px}.campus-event .prose{font-size:16px;line-height:1.95}.gamebar{flex-wrap:wrap}.gamebar .chapter{width:100%}.gamebar nav{width:100%;justify-content:space-between}.progress{top:94px}.dialogue .ending{padding-top:5px}.letter-film{height:150px;width:100px}.ending h2{font-size:25px!important}.practice-bottom{gap:16px}.footnote{letter-spacing:1px}h1 span{margin-left:35px}}
/* Fixed artwork and reading panes. Atlas pixels always scale uniformly. */
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
button { touch-action:manipulation; }
.scene,.scene.campus-event {
 height:100vh;height:100dvh;min-height:0;display:grid;
 grid-template-columns:minmax(0,1.25fr) minmax(320px,1fr);
 grid-template-rows:76px minmax(0,1fr);gap:0;background:#e4eadd;
 padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
.scene:after { display:none; }
.scene > .gamebar,.scene > .campus-top {
 grid-area:1 / 1 / 2 / -1;position:relative;inset:auto;min-height:0;
 padding:12px 24px;display:flex;flex-wrap:nowrap;color:var(--ink);
 background:var(--paper);border-bottom:1px solid #254d4826;gap:15px;
}
.scene .gamebar .plain {color:var(--ink)}
.scene .gamebar nav,.scene .campus-top nav{width:auto;gap:8px;flex-shrink:0;}
.scene nav button{min-height:40px;min-width:40px;padding:7px;letter-spacing:0;font-size:12px}
.scene .chapter{width:auto;font-size:12px;letter-spacing:1px}
.scene .progress{top:auto;bottom:0;left:0;right:0;background:#dce4d8}
.scene .progress i{background:var(--orange)}
.visual-stage{grid-area:2 / 1;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column;align-items:center;background:#dfe7d9;padding:20px 24px 24px;gap:14px;}
.stage-label{width:100%;display:flex;justify-content:space-between;color:#657c69;font:10px/1.5 'Noto Sans SC';letter-spacing:2px;flex-shrink:0;}
.scene-art{display:block;min-height:0;min-width:0;flex:1;width:100%;height:100%;overflow:hidden;filter:none;}
.scene .event-caption{position:static;inset:auto;flex-shrink:0;color:var(--ink);text-shadow:none;align-self:flex-start;display:flex;align-items:baseline;gap:16px;}
.scene .event-caption h2{font-size:21px;margin:0;line-height:1.5;font-weight:500;}
.scene .event-caption .tag{font-size:9px;white-space:nowrap;letter-spacing:1px;}
.scene > .dialogue,.scene.campus-event > .dialogue {
 grid-area:2 / 2;position:relative;inset:auto;width:100%;height:100%;max-height:none;
 min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;
 padding:clamp(22px,3.5vw,52px);border:0;border-left:1px solid #254d4820;
 background:var(--paper);box-shadow:none;backdrop-filter:none;animation:none;
 scrollbar-color:#b7c6b2 transparent;scrollbar-width:thin;
}
.scene .speaker{font-size:21px;margin:0 0 24px;}
.scene .prose,.scene.campus-event .prose{font-size:17px;line-height:2.05;}
.scene .choices{margin-top:24px;gap:12px;}
.scene .choice{min-height:48px;line-height:1.7;padding:13px 16px;border-radius:3px;}
.scene .next{min-height:44px;background:var(--ink);color:white;padding:10px 20px;margin-top:24px;border-radius:3px;letter-spacing:1px;}
.scene .ending{padding:0}.scene .ending h2{font-size:28px!important;line-height:1.5;}
.scene .ending p{font-size:15px;line-height:1.9;}
.scene .ending .actions{flex-direction:column;}
.card-art,.week-art,.photo-image,.memory-card{height:auto;aspect-ratio:1 / 1;}
.photo.main,.photo.portrait,.photo.small{height:auto;aspect-ratio:1 / 1;}
.basket-art,.music-art{height:auto;width:min(100%,350px);aspect-ratio:1 / 1;margin:0 auto;background-origin:padding-box;}
.letter-film{width:96px;height:256px;border:0;background-size:400% 100%;}
.ending .letter-film{width:72px;height:192px;}
header nav button{min-height:44px;}
.toast{position:fixed;top:auto;bottom:max(16px,env(safe-area-inset-bottom));max-width:90vw;width:max-content;pointer-events:none;border:1px solid #d4dece;box-shadow:0 5px 25px #1a413323;}
@media(max-width:1000px) and (orientation:portrait){
 .scene,.scene.campus-event{grid-template-columns:minmax(0,1fr);grid-template-rows:88px minmax(160px,42dvh) minmax(0,1fr);}
 .scene > .gamebar,.scene > .campus-top{padding:8px 16px;display:flex;flex-wrap:wrap;align-content:center;gap:0 12px;}
 .scene .gamebar nav,.scene .campus-top nav{width:100%;justify-content:space-between;gap:0;}
 .scene .campus-top .brand{font-size:18px;letter-spacing:1px;min-height:24px;}
 .scene .chapter,.scene .week-title{font-size:10px;line-height:20px;}
 .visual-stage{grid-area:2 / 1;padding:12px 16px;gap:8px;}
 .scene .event-caption h2{font-size:17px;}
 .scene > .dialogue,.scene.campus-event > .dialogue{grid-area:3 / 1;padding:20px 22px 26px;border-left:0;border-top:1px solid #254d4820;}
 .scene .speaker{font-size:18px;margin-bottom:15px;}
 .scene .prose,.scene.campus-event .prose{font-size:16px;line-height:1.9;}
 .scene .choice{font-size:13px;}.scene .choices{margin-top:20px;gap:10px;}
 .scene .next{margin-top:18px;font-size:12px;}
 .scene .ending .letter-film{display:none;}
}
@media(orientation:landscape) and (max-height:600px){
 .scene,.scene.campus-event{grid-template-columns:minmax(0,1fr) minmax(280px,1fr);grid-template-rows:52px minmax(0,1fr);}
 .scene > .gamebar,.scene > .campus-top{padding:4px 14px;gap:8px;flex-wrap:nowrap;}
 .scene .campus-top .brand{font-size:17px;letter-spacing:1px;}
 .scene .week-title,.scene .chapter{font-size:10px;letter-spacing:0;}
 .scene .gamebar nav,.scene .campus-top nav{gap:0;}
 .scene nav button{font-size:10px;min-width:36px;padding:5px;}
 .visual-stage{padding:10px 12px;gap:7px;}
 .scene .event-caption{gap:10px;}.scene .event-caption h2{font-size:16px;}
 .scene > .dialogue,.scene.campus-event > .dialogue{padding:20px;}
 .scene .speaker{font-size:18px;margin-bottom:14px;}
 .scene .prose,.scene.campus-event .prose{font-size:15px;line-height:1.85;}
 .scene .choice{font-size:12px;padding:10px;}
 .scene .ending .letter-film{display:none;}
 .basket-art,.music-art{width:160px;}
}
@media(max-width:380px){header{height:auto;min-height:80px;flex-wrap:wrap;padding:10px 16px;gap:5px;}header .logo{font-size:20px;}header nav{width:100%;justify-content:space-between;}header nav button{font-size:11px;}.scene nav button{font-size:11px;}.primary{min-width:0;}.slot{padding:12px;gap:8px;flex-wrap:wrap;}}
/* Cinematic VN: a fixed film frame above a compact dialogue rail. */
.scene,.scene.campus-event{grid-template-columns:minmax(0,1fr);grid-template-rows:50px minmax(0,1fr) 170px;background:#17241f;color:#f5f4e9;}
.scene > .gamebar,.scene > .campus-top{grid-area:1 / 1;background:#17241f;color:#f5f4e9;border-bottom:1px solid #ffffff20;padding:4px 4%;}
.scene .gamebar .plain{color:#e9eddf}.scene .progress{display:none;}
.visual-stage{grid-area:2 / 1;background:#101b18;position:relative;padding:0;gap:0;justify-content:center;}
.scene-art{flex:none;width:100%;height:100%;object-fit:contain;}
.stage-label,.scene .event-caption{position:absolute;z-index:1;top:16px;left:4%;width:auto;color:#fff;display:flex;gap:12px;background:#17241fb8;padding:7px 12px;border-radius:2px;}
.stage-label span:last-child{display:none;}.scene .event-caption h2{font-size:14px;letter-spacing:1px;}.scene .event-caption .tag{opacity:.65;}
.scene > .dialogue,.scene.campus-event > .dialogue{grid-area:3 / 1;overflow:visible;background:linear-gradient(105deg,#21392f,#1c2e27);border:0;border-top:1px solid #c8cdb650;padding:16px 7% 14px;color:#fff;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:26px minmax(0,1fr);gap:8px 20px;}
.scene .speaker{grid-area:1 / 1 / 2 / -1;color:#edc99a;font-size:17px;margin:0;display:flex;align-items:center;gap:14px;}
.vn-count{font:10px 'Noto Sans SC';letter-spacing:2px;color:#9cac9c;margin-left:auto;}
.scene .prose,.scene.campus-event .prose{grid-area:2 / 1;font:19px/1.85 'Noto Serif SC';letter-spacing:.4px;align-self:start;max-height:100%;overflow:auto;}
.scene .next{grid-area:2 / 2;align-self:end;margin:0;background:transparent;color:#f3dfbb;border:1px solid #d0d3bd44;min-width:88px;padding:8px 14px;white-space:nowrap;}
.scene .choices{position:absolute;bottom:calc(100% + 25px);left:6%;width:min(440px,43vw);margin:0;gap:10px;z-index:5;}
.scene .choice{color:#faf8ec;background:#213a30ed;border:1px solid #d2d8b780;box-shadow:0 4px 18px #0003;font-size:15px;min-height:48px;line-height:1.6;}
.scene .choice:hover{background:#4a6855}.scene .choice span{color:#e5c598;}
.scene .decision-prompt{display:none;}.scene .response{display:none;}
[hidden]{display:none!important;}
.scene:has(.ending){grid-template-rows:50px minmax(0,1fr) minmax(200px,40%);}
.scene > .dialogue:has(.ending){display:block;overflow:auto;}.scene .ending .letter-film{display:none;}
@media(orientation:portrait){
 .scene,.scene.campus-event{grid-template-rows:80px minmax(180px,1fr) 220px;}
 .scene > .gamebar,.scene > .campus-top{padding:6px 15px;flex-wrap:wrap;gap:0;}
 .scene .gamebar nav,.scene .campus-top nav{width:100%;justify-content:space-between;}
 .visual-stage{padding:0;}.scene .event-caption{top:10px;left:10px;}.scene .event-caption h2{font-size:12px;}
 .scene > .dialogue,.scene.campus-event > .dialogue{grid-area:3 / 1;padding:16px 22px;grid-template-columns:minmax(0,1fr);grid-template-rows:24px minmax(0,1fr) 36px;gap:8px;}
 .scene .speaker{font-size:16px;}.scene .prose,.scene.campus-event .prose{font-size:16px;line-height:1.85;grid-area:2 / 1;}
 .scene .next{grid-area:3 / 1;justify-self:end;min-height:36px;font-size:12px;padding:5px 12px;}
 .scene .choices{left:16px;bottom:calc(100% + 16px);width:calc(100% - 32px);gap:8px;}
 .scene .choice{font-size:13px;min-height:44px;padding:10px 14px;}
}
@media(orientation:landscape) and (max-height:600px){
 .scene,.scene.campus-event{grid-template-columns:minmax(0,1fr);grid-template-rows:40px minmax(0,1fr) 112px;}
 .scene > .gamebar,.scene > .campus-top{grid-area:1 / 1;padding:0 3%;}
 .scene .visual-stage{grid-area:2 / 1;}
 .scene > .dialogue,.scene.campus-event > .dialogue{grid-area:3 / 1;padding:9px 5%;grid-template-rows:20px minmax(0,1fr);gap:3px 14px;}
 .scene .speaker{font-size:14px;}.scene .prose,.scene.campus-event .prose{font-size:14px;line-height:1.8;}
 .scene .next{min-height:32px;padding:4px 10px;font-size:11px;}
 .scene .choices{bottom:calc(100% + 12px);left:4%;width:43%;gap:6px;}
 .scene .choice{font-size:12px;min-height:40px;padding:8px 12px;}
 .scene .event-caption{top:7px;padding:4px 9px;}.scene .event-caption h2{font-size:11px;}
}
.scene .speaker > small{display:none;}
