:root{--game-ink:#183249;--game-blue:#276d91;--game-gold:#ae8656;--game-paper:#f7f5ef;--game-line:#d7dedc;--game-shadow:0 20px 60px rgba(19,45,62,.11)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--game-paper);color:var(--game-ink)}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.47}button:focus-visible,a:focus-visible{outline:2px solid var(--game-blue);outline-offset:4px}#app{width:min(1440px,calc(100% - 72px));margin:0 auto;min-height:calc(100vh - 74px);padding:38px 0 72px}.topbar{position:relative;z-index:30;background:rgba(247,245,239,.91);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.stage-track{display:flex;gap:14px;align-items:center}.stage-track span{min-width:28px;text-align:center;letter-spacing:.08em}.stage-track span.active{color:var(--game-blue);font-weight:700}.source-link{white-space:nowrap}.game-scene,.intro-hero,.credits-scene{animation:sceneEnter .56s cubic-bezier(.2,.7,.2,1) both}@keyframes sceneEnter{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
.intro-hero{display:grid;grid-template-columns:minmax(0,1.03fr) minmax(0,.97fr);align-items:center;gap:clamp(30px,5vw,90px);min-height:min(710px,calc(100vh - 160px))}.intro-visual{position:relative;isolation:isolate;min-height:590px;display:grid;place-items:center}.intro-visual:before,.intro-visual:after{content:"";position:absolute;border:1px solid rgba(39,109,145,.16);border-radius:50%;inset:7% 13%;z-index:-1}.intro-visual:after{inset:16% 5%;transform:rotate(-16deg)}.intro-photo{display:block;width:min(89%,620px);max-height:560px;aspect-ratio:1.06;object-fit:cover;border-radius:14px;box-shadow:0 36px 75px rgba(24,50,73,.18);transform:rotate(-2deg);background:#d9dedb}.intro-year{position:absolute;right:1%;bottom:9%;padding:17px 21px;background:#fff;box-shadow:var(--game-shadow);font:700 17px/1.1 Georgia,serif;letter-spacing:.2em;color:var(--game-blue)}.intro-copy{max-width:620px}.intro-copy .eyebrow,.scene-heading .eyebrow,.credits-scene .eyebrow{color:var(--game-blue);font-size:12px;font-weight:700;letter-spacing:.23em;text-transform:uppercase}.intro-title,.scene-title,.credits-title{font-family:"Noto Serif SC","Source Han Serif SC","Songti SC",SimSun,serif;font-weight:500;letter-spacing:.035em}.intro-title{font-size:clamp(56px,6.4vw,108px);line-height:1.12;margin:22px 0 28px}.intro-title em{font-style:normal;color:var(--game-blue)}.intro-lead{font-size:clamp(17px,1.5vw,21px);line-height:1.9;color:#41566a}.intro-meta,.intro-note{color:#667b88;font-size:14px;line-height:1.7}.intro-actions{display:flex;flex-wrap:wrap;gap:12px;margin:28px 0}.game-button,.primary-button,.quiet-button,.next-button,.text-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:11px 19px;border-radius:7px;border:1px solid #b4c4ca;background:#fff;color:var(--game-ink);font-weight:700;transition:transform .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.game-button:hover:not(:disabled),.quiet-button:hover:not(:disabled),.next-button:hover:not(:disabled),.text-button:hover:not(:disabled){transform:translateY(-2px);border-color:var(--game-blue);box-shadow:0 9px 20px rgba(26,68,87,.1)}.primary-button,.next-button{background:var(--game-ink);border-color:var(--game-ink);color:#fff}.primary-button:hover:not(:disabled),.next-button:hover:not(:disabled){background:var(--game-blue);border-color:var(--game-blue);transform:translateY(-2px)}.text-button{border-color:transparent;background:transparent;color:var(--game-blue);box-shadow:none!important}.game-button:active:not(:disabled),.primary-button:active:not(:disabled),.quiet-button:active:not(:disabled),.next-button:active:not(:disabled),.text-button:active:not(:disabled){transform:translateY(0) scale(.985)}
.scene-heading{margin:0 0 24px}.scene-title{font-size:clamp(40px,4.3vw,70px);line-height:1.18;margin:8px 0 14px}.scene-intro{font-size:16px;line-height:1.8;color:#5f7280;max-width:920px;margin:0}.scene-media{position:relative;margin:0 0 26px;border-radius:12px;overflow:hidden;background:#d6dbd8;box-shadow:var(--game-shadow)}.scene-photo{display:block;width:100%;height:clamp(260px,39vw,510px);object-fit:cover}.photo-caption{position:absolute;left:20px;bottom:18px;max-width:calc(100% - 40px);background:rgba(19,45,62,.85);color:#fff;padding:9px 13px;border-radius:4px;font-size:12px;letter-spacing:.08em}.play-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(340px,.9fr);gap:22px;align-items:stretch}.play-layout>*{min-width:0}.founding-board{position:relative;min-height:460px;overflow:hidden;border-radius:12px;background:#bdc7c8;box-shadow:var(--game-shadow)}.board-photo{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;filter:saturate(.72)}.founding-board:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(9,29,42,.02) 40%,rgba(9,29,42,.36));pointer-events:none}.hotspot{position:absolute;z-index:2;width:48px;height:48px;border:1px solid #fff;border-radius:50%;background:rgba(255,255,255,.24);color:#fff;backdrop-filter:blur(8px);box-shadow:0 0 0 9px rgba(255,255,255,.13);font-size:15px;font-weight:700;transition:transform .22s,background-color .22s,box-shadow .22s}.hotspot:hover{transform:scale(1.12);background:var(--game-blue);box-shadow:0 0 0 10px rgba(255,255,255,.2)}.hotspot.done{background:#e1bd88;color:var(--game-ink);box-shadow:0 0 0 7px rgba(225,189,136,.18)}.evidence-panel,.records-panel,.machine-panel,.archive-table,.route-preview,.emblem-workbench,.emblem-explanation,.motto-meaning,.credits-player{background:rgba(255,255,255,.79);border:1px solid var(--game-line);border-radius:12px;box-shadow:0 14px 38px rgba(24,50,73,.055)}.evidence-panel,.records-panel,.machine-panel,.archive-table{padding:clamp(20px,3vw,36px)}.panel-title{font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:clamp(23px,2.2vw,34px);line-height:1.35;margin:0 0 17px}.evidence-list{display:grid;gap:11px}.evidence-card,.record-card,.archive-paper,.film-card,.film-slot,.archive-target{border:1px solid var(--game-line);border-radius:8px;background:rgba(255,255,255,.9);color:var(--game-ink);padding:15px 18px;line-height:1.65;transition:transform .2s,border-color .2s,background-color .2s,box-shadow .2s}.evidence-card.active,.record-card.active,.archive-paper.active,.film-card.active,.film-slot.filled,.archive-target.filled{background:#edf4f5;border-color:#7eabbc;box-shadow:0 7px 17px rgba(42,105,132,.09)}.progress-note{font-size:13px;color:var(--game-blue);font-weight:700;letter-spacing:.08em}.scene-footer{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:24px 0 0;padding-top:18px;border-top:1px solid var(--game-line)}.scene-footer .next-button{margin-left:auto}
.records-panel,.machine-panel{min-height:410px}.record-card{display:block;width:100%;text-align:left;margin:0 0 10px;cursor:pointer}.record-card:hover,.film-card:hover,.archive-paper:hover{transform:translateY(-2px);border-color:#7aa9ba}.record-date{color:var(--game-gold);font-family:Georgia,serif;font-size:20px;font-weight:700;margin-right:12px}.film-slots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:20px 0}.film-slot{min-height:104px;display:grid;place-items:center;text-align:center;cursor:pointer;font-size:13px;padding:10px}.film-slot:empty:before{content:"＋";font-size:22px;color:#8aa3ae}.film-pool{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.film-card{text-align:left;cursor:pointer;min-height:72px}.archive-papers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.archive-paper{min-height:145px;text-align:left;cursor:grab}.archive-paper:active{cursor:grabbing}.archive-target{min-height:105px;border-style:dashed;display:grid;place-items:center;text-align:center;margin:18px 0}.archive-detail{border-left:3px solid var(--game-gold);padding:12px 16px;background:#f1f4f2;line-height:1.7;color:#3e5968}
.puzzle-board{display:grid;grid-template-columns:repeat(3,1fr);width:min(100%,620px);aspect-ratio:1;border:5px solid #fff;border-radius:10px;overflow:hidden;box-shadow:var(--game-shadow);margin:0 auto}.puzzle-piece{position:relative;border:2px solid #fff;background-repeat:no-repeat;background-size:300% 300%;cursor:pointer;transition:filter .18s,transform .18s}.puzzle-piece:hover{filter:brightness(1.13)}.puzzle-piece.selected{z-index:1;outline:4px solid #e7b969;outline-offset:-5px;filter:brightness(1.13)}.route-map{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.8fr);gap:22px}.route-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:20px;border-radius:12px;background:linear-gradient(135deg,#dfebe9,#f4f1e8);box-shadow:var(--game-shadow)}.route-cell{aspect-ratio:1;min-width:0;border:1px solid rgba(56,114,134,.26);border-radius:8px;background:rgba(255,255,255,.65);color:#537c89;transition:transform .2s,background-color .2s,border-color .2s}.route-cell:hover:not(:disabled){transform:scale(1.045);background:#fff;border-color:var(--game-blue)}.route-cell.active,.route-cell.done{background:var(--game-blue);color:#fff}.route-cell.wrong{background:#d5b698;color:#fff}.route-preview{padding:20px}.route-photo{width:100%;aspect-ratio:1.45;object-fit:cover;border-radius:8px;background:#d7dcda;margin:0 0 15px}
.emblem-workbench{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.8fr);gap:20px;padding:25px}.emblem-svg{display:block;width:min(100%,500px);height:auto;margin:auto;filter:drop-shadow(0 12px 22px rgba(34,85,110,.1))}.emblem-ring{fill:none;stroke:var(--game-blue);stroke-width:5}.emblem-sail{fill:var(--game-blue)}.emblem-text{fill:var(--game-blue);font-family:Georgia,serif;font-weight:700}.emblem-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-content:center}.emblem-control{min-height:80px;padding:12px;border:1px solid #a8c1c9;border-radius:8px;background:#f4f8f7;color:var(--game-ink);font-size:16px;font-weight:700;transition:transform .2s,background-color .2s,border-color .2s}.emblem-control:hover{transform:translateY(-2px);border-color:var(--game-blue)}.emblem-control.active{background:var(--game-blue);color:#fff}.emblem-explanation{padding:22px;margin-top:16px;line-height:1.8}.motto-wall{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:22px}.motto-words{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;align-items:stretch;padding:20px;border-radius:12px;background:linear-gradient(145deg,#1b394f,#376c82);box-shadow:var(--game-shadow)}.motto-word{display:flex;min-width:0;min-height:330px;flex-direction:column;align-items:center;justify-content:center;gap:15px;padding:12px 6px;border:1px solid rgba(255,255,255,.42);border-radius:7px;background:rgba(255,255,255,.055);color:white;transition:transform .2s,background-color .2s,border-color .2s}.motto-word:hover{transform:translateY(-3px);background:rgba(255,255,255,.14)}.motto-word.active{background:rgba(209,181,131,.35);border-color:#e5c99b}.motto-word strong{font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:clamp(31px,3vw,52px);font-weight:500;white-space:nowrap}.motto-word small{font-size:13px;letter-spacing:.1em;line-height:1.5;max-width:100%;overflow-wrap:anywhere}.motto-meaning{padding:clamp(20px,3vw,36px);min-height:330px;line-height:1.8}.motto-pair{margin:17px 0 0;color:#607786}.action-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:15px}.action-choice{padding:11px 15px;border:1px solid var(--game-line);border-radius:7px;background:#fff;color:var(--game-ink);text-align:left;transition:background-color .2s,border-color .2s,transform .2s}.action-choice:hover{transform:translateY(-2px);border-color:var(--game-blue)}.action-choice.active{background:#e6f0f3;border-color:var(--game-blue)}
.credits-scene{max-width:1500px}.credits-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:26px;align-items:start}.credits-title{font-size:clamp(45px,5vw,76px);line-height:1.2;margin:12px 0}.credits-intro{line-height:1.8;color:#607480}.credits-controls{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0}.credits-scroll{height:min(72vh,760px);min-height:450px;overflow-y:hidden;border-radius:12px;background:linear-gradient(160deg,#132d42,#1b4259);color:#f3f6f5;scrollbar-width:none;overscroll-behavior:contain;box-shadow:0 25px 50px rgba(12,35,52,.2)}.credits-scroll::-webkit-scrollbar{display:none}.credits-scroll.unlocked{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#7997a2 transparent}.credits-scroll.unlocked::-webkit-scrollbar{display:block;width:9px}.credits-scroll.unlocked::-webkit-scrollbar-thumb{background:#7997a2;border-radius:9px}.credits-inner{width:min(100% - 54px,790px);margin:auto;padding:75px 0 100px}.credits-opening{text-align:center;font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:clamp(27px,3vw,42px);line-height:1.5;margin:0 0 95px;color:#fff}.credit-entry{display:grid;grid-template-columns:105px minmax(0,1fr);column-gap:20px;margin:0 0 72px;line-height:1.8}.credit-entry h3{font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:clamp(20px,2vw,27px);font-weight:500;margin:0 0 13px}.credit-entry p{margin:0;color:#d6e1e5;font-size:15px}.credit-year{font-family:Georgia,serif;font-size:18px;font-weight:700;letter-spacing:.08em;color:#ddb77b;padding-top:4px}.credit-photo{grid-column:2;display:block;width:min(100%,460px);max-height:250px;object-fit:cover;border-radius:6px;margin:19px 0 0;filter:saturate(.8)}.credits-final{text-align:center;color:#fff;font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:clamp(27px,3vw,42px);padding:50px 0}.credits-player{position:sticky;top:95px;padding:22px;overflow:hidden}.player-title{font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:24px;margin:4px 0}.player-subtitle{font-size:13px;color:#6b7e8a}.player-album{position:relative;overflow:hidden;margin:17px 0 20px;border-radius:10px;background:#d4dcdc}.player-cover{display:block;width:100%;aspect-ratio:1.4;object-fit:cover}.lyric-box{min-height:132px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px}.lyric-current{font-size:17px;line-height:1.6;font-weight:700;color:var(--game-ink);transition:opacity .3s,transform .3s}.lyric-prev,.lyric-next{font-size:12px;line-height:1.4;color:#90a0a7}.player-progress{display:flex;justify-content:space-between;margin:14px 0 6px;color:#6d818d;font:12px Georgia,serif}.player-bar{height:5px;background:#dce5e6;border-radius:5px;overflow:hidden}.player-bar-fill{height:100%;width:0;background:linear-gradient(90deg,var(--game-blue),#d1a773);border-radius:5px;transition:width .16s linear}.credits-notice{font-size:12px;color:#71838c;line-height:1.6;margin:12px 0 0}.cursor-trail{position:fixed;left:0;top:0;z-index:100;pointer-events:none;border-radius:50%;background:var(--game-blue);mix-blend-mode:multiply;opacity:.28;will-change:transform}.game-toast{position:fixed;z-index:90;left:50%;bottom:30px;transform:translateX(-50%);max-width:min(500px,calc(100vw - 30px));padding:11px 18px;border-radius:30px;background:#19364a;color:#fff;box-shadow:0 15px 35px rgba(16,44,62,.2);font-size:13px;text-align:center;animation:toastIn .25s ease both}@keyframes toastIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:1000px){#app{width:min(100% - 40px,900px)}.intro-hero{gap:25px}.intro-visual{min-height:480px}.play-layout,.route-map,.motto-wall{grid-template-columns:1fr}.credits-main{grid-template-columns:minmax(0,1fr) 290px}.motto-word{min-height:220px}}
@media(max-width:720px){#app{width:calc(100% - 28px);padding-top:24px}.topbar{min-height:68px}.stage-track{gap:6px}.stage-track span{min-width:20px;font-size:11px}.intro-hero{display:flex;flex-direction:column;align-items:stretch;min-height:0}.intro-visual{min-height:0;order:-1}.intro-photo{width:100%;max-height:360px;aspect-ratio:1.28;transform:none}.intro-year{right:8px;bottom:-13px;padding:10px 12px;font-size:12px}.intro-title{font-size:56px;margin-top:12px}.scene-title{font-size:39px}.scene-photo{height:245px}.founding-board{min-height:350px}.archive-papers{grid-template-columns:1fr}.archive-paper{min-height:85px}.film-slots{grid-template-columns:repeat(2,1fr)}.emblem-workbench{grid-template-columns:1fr}.motto-words{padding:10px;gap:5px}.motto-word{min-height:160px;padding:7px 3px}.motto-word strong{font-size:28px}.motto-word small{font-size:11px}.credits-main{display:flex;flex-direction:column-reverse}.credits-player{position:static;width:100%}.credits-scroll{width:100%;height:58vh;min-height:400px}.credits-inner{width:calc(100% - 32px)}.credit-entry{grid-template-columns:68px minmax(0,1fr);gap:10px;margin-bottom:58px}.credit-photo{max-height:180px}.scene-footer .next-button{margin-left:0}}
@media(max-width:430px){.intro-title{font-size:46px}.scene-title{font-size:34px}.motto-word strong{font-size:23px}.motto-word small{font-size:10px}.route-grid{padding:9px;gap:4px}.film-pool{grid-template-columns:1fr}.scene-footer>*{flex:1}.credits-scroll{min-height:350px}.credit-entry{grid-template-columns:55px minmax(0,1fr)}}

[hidden]{display:none!important}
.inference-challenge{margin-top:20px;padding:18px;border:1px solid var(--game-line);border-radius:9px;background:#f4f8f7}
.inference-challenge h3,.emblem-quiz h3{margin:0 0 14px;font-size:18px;line-height:1.6}
.inference-choice,.emblem-options .emblem-control{display:block;width:100%;min-height:48px;margin:8px 0;padding:11px 14px;text-align:left;border:1px solid #a8c1c9;border-radius:7px;background:#fff;color:var(--game-ink);line-height:1.5}
.inference-choice:hover,.emblem-options .emblem-control:hover{border-color:var(--game-blue);background:#e8f1f4}
.emblem-workbench{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:360px}
.emblem-symbol{font:700 clamp(42px,6vw,78px)/1.4 Georgia,serif;letter-spacing:.12em;color:var(--game-blue);border:2px solid var(--game-blue);border-radius:50%;width:min(65vw,260px);aspect-ratio:1;display:grid;place-items:center}
.emblem-official{display:block;width:min(72%,330px);height:auto;max-height:340px;object-fit:contain;margin:12px auto 16px}
.emblem-workbench .body-copy{max-width:360px;margin:0 auto}
.emblem-quiz{margin-top:22px}
.emblem-explanation{margin:12px 0 0;min-height:72px}
.hotspot.discovered{background:#e1bd88;color:var(--game-ink);box-shadow:0 0 0 7px rgba(225,189,136,.18)}
.motto-word.opened{background:rgba(209,181,131,.35);border-color:#e5c99b}
.action-choice.selected{background:#e6f0f3;border-color:var(--game-blue)}
.route-cell.active-stop,.route-cell.visited-stop{background:var(--game-blue);color:#fff}
.route-cell.visited-stop{opacity:.65}
.credits-scene{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);grid-template-areas:"header header" "cast player";column-gap:26px;row-gap:0;align-items:start}
.credits-header{grid-area:header}
.credits-main{grid-area:cast;display:block;min-width:0}
.credits-player{grid-area:player}
@media(max-width:720px){.credits-scene{grid-template-columns:minmax(0,1fr);grid-template-areas:"header" "player" "cast";row-gap:18px}.credits-player{position:static;width:100%}}
.pointer-glow,.pointer-ring,.pointer-trail{display:none;position:fixed;left:0;top:0;pointer-events:none}
.pointer-glow{z-index:0;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(40,100,139,.12),transparent 68%);opacity:0;transition:opacity .4s;will-change:transform}
.pointer-ring{z-index:100;width:24px;height:24px;border:1px solid var(--game-blue);border-radius:50%;opacity:0;transition:opacity .3s;will-change:transform}
.pointer-trail{z-index:99;inset:0;overflow:hidden;contain:strict}
.pointer-echo{position:absolute;left:0;top:0;width:24px;height:24px;border:1px solid var(--game-blue);border-radius:50%;background:radial-gradient(circle,rgba(40,100,139,.2),transparent 68%);opacity:0;will-change:transform,opacity;pointer-events:none}
.stage-track .stage-mark{display:grid;place-items:center;min-width:32px;min-height:32px;padding:4px;border-radius:50%;transition:background-color .25s,color .25s,box-shadow .25s}
.stage-track .stage-mark.current{background:#dceef8;color:#175c86;box-shadow:0 0 0 1px #a9d5ec,0 0 18px rgba(79,159,202,.28);font-weight:800}
.motto-layout{align-items:start}
.motto-wall{display:block;min-width:0}
.motto-wall>.eyebrow{margin:0 0 14px}
.motto-words{grid-template-columns:repeat(4,minmax(0,1fr));padding:14px}
.motto-word{min-height:178px}
.motto-meaning{min-height:145px;margin-top:14px;padding:24px 28px}
.motto-meaning h2{margin:4px 0 8px;font-size:28px}
.motto-meaning p{margin:0}
.motto-pairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.motto-pair{margin:0;padding:12px 14px;border-left:2px solid #b9d2dc;background:rgba(255,255,255,.55);font-size:13px;line-height:1.6}
.motto-layout>.evidence-panel{align-self:start}
.credits-player .lyric-box{position:relative;display:block;height:186px;min-height:0;overflow:hidden;margin:25px 0 18px;mask-image:linear-gradient(180deg,transparent 0%,#000 17%,#000 83%,transparent 100%)}
.lyric-stack{position:relative;display:flex;flex-direction:column;gap:5px;width:100%;transition:transform 1.05s cubic-bezier(.22,.72,.18,1);will-change:transform}
.lyric-row{flex:0 0 auto;min-height:43px;margin:0;padding:7px 0;text-align:center;color:#8299a5;font-size:15px;line-height:1.55;opacity:.1;filter:blur(.7px);transform:scale(.985);transition:opacity .75s ease,filter .75s ease,transform .75s cubic-bezier(.2,.7,.2,1),color .75s ease}
.lyric-row.is-active{color:var(--game-ink);font-size:18px;font-weight:700;opacity:1;filter:none;transform:scale(1)}
.lyric-row.is-previous{opacity:.32;filter:blur(.25px);transform:scale(.99)}
.lyric-row.is-next{opacity:.55;filter:blur(.1px);transform:scale(.995)}
.lyric-row.lyric-placeholder{font-size:22px}
.source-dialog{width:min(620px,calc(100vw - 32px));max-height:min(80vh,720px);padding:28px 32px;border:1px solid var(--game-line);border-radius:14px;background:#fbfaf6;color:var(--game-ink);box-shadow:0 28px 85px rgba(14,38,55,.27);line-height:1.8}
.source-dialog::backdrop{background:rgba(9,31,45,.6);backdrop-filter:blur(4px)}
.source-dialog h2{margin:10px 0 18px;font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:30px;font-weight:500}
.source-dialog p{margin:13px 0;color:#4c6371;font-size:14px}
.source-dialog .dialog-top{display:flex;justify-content:space-between;align-items:center;gap:16px}
.source-dialog .icon-button{width:36px;height:36px;border:0;border-radius:50%;background:#eaf1f2;color:var(--game-ink);font-size:23px}
.source-dialog #sourceDone{margin-top:12px;padding:10px 18px;border:0;border-radius:7px;background:var(--game-ink);color:#fff}
.credits-scroll .credit-photo{width:auto;max-width:100%;height:auto;max-height:280px;object-fit:contain}
.credits-scroll .credit-entry>p{grid-column:2;max-width:650px}
.credits-scroll .emblem-credit-photo{width:min(100%,310px);max-height:none;aspect-ratio:1;object-fit:contain;padding:17px;border-radius:10px;background:#f4f7f7}
@media(prefers-reduced-motion:reduce){.lyric-stack,.lyric-row{transition:none!important}}
.route-map{display:block}
.route-map>.eyebrow{margin:0 0 12px;color:var(--game-blue);font-size:12px;font-weight:700;letter-spacing:.18em}
.route-map>.panel-title{margin:0 0 18px}
.route-preview{display:flex;flex-direction:column;min-width:0;padding:24px}
.route-moment{min-height:142px;padding:4px 2px 20px;border-bottom:1px solid var(--game-line)}
.route-moment-year{color:var(--game-blue);font:700 14px Georgia,serif;letter-spacing:.13em}
.route-moment-title{margin:9px 0;font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:27px;font-weight:500}
.route-moment .body-copy{margin:0;color:#526a79;line-height:1.7}
.route-archive-label{margin:20px 0 12px;color:var(--game-blue);font-size:12px;font-weight:700;letter-spacing:.14em}
.route-archive{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.route-archive-card{min-width:0;margin:0;padding:7px;border:1px solid var(--game-line);border-radius:9px;background:#f9faf8;transition:border-color .22s,box-shadow .22s}
.route-archive-card.current{border-color:#6ca3bb;box-shadow:0 0 0 3px rgba(82,153,185,.15)}
.route-archive-card .route-photo{display:block;width:100%;height:auto;aspect-ratio:1.45;object-fit:cover;margin:0}
.route-photo-caption{padding:9px 3px 3px;color:#526a79;font-size:12px;line-height:1.45}
#app{view-transition-name:game-stage}
::view-transition,::view-transition-old(game-stage),::view-transition-new(game-stage){pointer-events:none}
::view-transition-old(root),::view-transition-new(root){animation:none}
::view-transition-old(game-stage){animation:sceneLeave .22s ease-in both}
::view-transition-new(game-stage){animation:sceneArrive .44s cubic-bezier(.2,.7,.2,1) both}
@keyframes sceneLeave{to{opacity:0;transform:translateY(-9px)}}
@keyframes sceneArrive{from{opacity:0;transform:translateY(13px)}to{opacity:1;transform:translateY(0)}}
.is-switching-scene .game-scene,.is-switching-scene .intro-hero,.is-switching-scene .credits-scene{animation:none}
.next-button{position:relative}
.next-button.is-ready::after{content:"";position:absolute;inset:-5px;border:1px solid rgba(39,109,145,.6);border-radius:10px;pointer-events:none;animation:readyHalo .72s ease-out both}
@keyframes readyHalo{from{opacity:.75;transform:scale(.96)}to{opacity:0;transform:scale(1.07)}}
.film-slot{padding:0}
.film-slot .film-card{display:grid;place-items:center;width:100%;height:100%;min-height:104px;padding:8px;text-align:center;font-size:12px;line-height:1.4}
.archive-paper.collected{pointer-events:none}
.archive-paper.not-this-period{animation:paperNudge .35s ease-out}
@keyframes paperNudge{25%{transform:translateX(-5px)}65%{transform:translateX(4px)}}
.archive-target.receiving{animation:folderReceive .45s ease-out}
@keyframes folderReceive{35%{background:#e2f0f1;border-color:var(--game-blue);transform:scale(1.015)}}
.puzzle-piece{transition:filter .18s}
.route-board{position:relative}
.route-grid{position:relative}
.route-path{position:absolute;inset:0;z-index:1;width:100%;height:100%;overflow:visible;pointer-events:none}
.route-line{fill:none;stroke:#91bfd1;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.route-cell{position:relative;z-index:2}
.route-cell.route-stop:not(.visited-stop),.route-cell.active-stop{background:#edf5f6;border-color:#80aabb;color:#28566b;font-weight:700}
.route-cell.visited-stop{background:var(--game-blue);border-color:var(--game-blue);color:#fff;opacity:1}
.game-toast{opacity:0;visibility:hidden;pointer-events:none;animation:none;transform:translate(-50%,8px);transition:opacity .22s ease,transform .22s ease,visibility .22s}
.game-toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}
@media(max-width:720px){.motto-words{padding:9px;gap:5px}.motto-word{min-height:122px}.motto-meaning{min-height:125px;padding:19px}.motto-pairs{grid-template-columns:1fr}.stage-track .stage-mark{min-width:24px;min-height:24px;padding:2px}.source-dialog{padding:20px}}
@media(max-width:430px){.route-preview{padding:18px}.route-archive{gap:8px}.route-photo-caption{font-size:11px}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.pointer-glow,.pointer-ring,.pointer-trail{display:block}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}.cursor-trail{display:none!important}}

.author-easter-egg{grid-column:1/-1;display:grid;gap:9px;margin-top:28px;padding:24px 28px;border:1px solid #cbdce2;border-radius:12px;background:rgba(255,255,255,.78);color:#29465a;text-decoration:none;transition:transform .2s,box-shadow .2s}.author-easter-egg:hover{transform:translateY(-3px);box-shadow:0 14px 32px rgba(24,50,73,.12)}.author-easter-egg strong{font-family:Georgia,"Songti SC",serif;font-size:21px}.author-easter-egg span:last-child{font-size:13px;line-height:1.7}.author-easter-label{font-size:11px;letter-spacing:.16em;color:#477a91}.author-easter-egg:focus-visible{outline:2px solid #276d91;outline-offset:4px}
