:root { --ink:#101b1c; --paper:#e6d8b9; --muted:#9fa9a2; --gold:#d7b57a; --red:#ad493e; --line:rgba(222,199,155,.2); --serif:'STZhongsong','SimSun','Songti SC',serif; color-scheme:dark; }
.wall-lamps,.wall-shutters { display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0; }
.wall-lamp { background:#0d1818;border:1px solid var(--line);border-radius:5px;min-height:120px;display:grid;place-items:center;padding:16px 6px;gap:12px; }
.wall-lamp .lamp-shape { width:46px;height:64px;border-radius:35%;border:2px solid #796747;background:repeating-linear-gradient(90deg,#50432b 0 3px,#302e23 3px 12px);transition:background .4s,box-shadow .4s; }
.wall-lamp.lit .lamp-shape { background:repeating-linear-gradient(90deg,#c2975e 0 3px,#dfbb7e 3px 12px);box-shadow:0 0 26px #e6b77845; }
.wall-lamp small,.wall-shutter small { color:var(--muted); }
.wall-shutter { min-height:115px;background:repeating-linear-gradient(90deg,#202b27 0 6px,#514533 6px 9px);border:1px solid #9a7f57;border-radius:3px;display:grid;place-items:center;gap:10px;padding:12px; }
.wall-shutter.open { background:repeating-linear-gradient(90deg,#ad96584a 0 14px,#514533 14px 17px);box-shadow:inset 0 0 30px #dbc89926; }
.wall-shutter span { font:24px var(--serif);background:#142120bc;padding:6px 10px; }
.wall-event { position:absolute;inset:0;pointer-events:none;z-index:5; }
.wall-veil { position:absolute;inset:0;background:#031013;opacity:0; }
.wall-event-paint .wall-veil { animation:wall-ink 3.4s ease-in-out;mix-blend-mode:multiply; }
.wall-event-paint .wall-presence { position:absolute;left:40%;top:8%;width:40%;height:42%;background:radial-gradient(ellipse,#f1d49825,transparent 72%);animation:wall-breath 3.4s ease-in-out; }
.wall-event-patrol .wall-presence { position:absolute;left:50%;top:30%;width:10%;height:33%;background:linear-gradient(transparent,#020505 20%,#020505 90%,transparent);border-radius:40% 40% 0 0;filter:blur(7px);animation:wall-patrol 4.2s ease-in-out; }
.wall-event-breath .wall-presence { position:absolute;left:83%;top:58%;width:14%;height:25%;background:radial-gradient(ellipse,#d8e2d16b,transparent 67%);filter:blur(6px);animation:wall-breath 3.9s ease-in-out; }
.wall-event-call .wall-veil { animation:wall-ink 3.3s ease-in-out; }
.wall-event-call .wall-presence { position:absolute;left:62%;top:30%;width:3%;height:45%;background:linear-gradient(transparent,#ecd29190,transparent);filter:blur(3px);animation:wall-breath 3.3s ease-in-out; }
.wall-subdued .wall-presence { display:none; }
.wall-subdued .wall-veil { animation:none;opacity:.08; }
@keyframes wall-ink { 0%,100%{opacity:0} 45%,65%{opacity:.65} }
@keyframes wall-breath { 0%,100%{opacity:0;transform:scale(.85)} 55%{opacity:1;transform:scale(1.12)} }
@keyframes wall-patrol { 0%{opacity:0;transform:translateX(-160%)} 35%{opacity:.65} 65%{opacity:.8} 100%{opacity:0;transform:translateX(220%)} }
@media(max-height:500px){.wall-lamps,.wall-shutters{margin:12px 0;gap:8px}.wall-lamp,.wall-shutter{min-height:80px;padding:8px}.wall-lamp .lamp-shape{width:30px;height:40px}}
* { box-sizing:border-box; }
html,body { margin:0; min-height:100%; background:var(--ink); color:var(--paper); font-family:'Microsoft YaHei','PingFang SC',sans-serif; }
body { font-size:14px; }
button,input { font:inherit; }
button { color:inherit; cursor:pointer; border:0; }
button:disabled { cursor:default; opacity:.45; }
button:focus-visible,a:focus-visible,input:focus-visible { outline:2px solid var(--gold); outline-offset:5px; }
button { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
/* Images are game artwork; their enclosing controls handle every interaction. */
#app img, #modal img { pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none; }
.stage, button { -webkit-touch-callout:none; }
svg { width:20px; height:20px; stroke:currentColor; fill:none; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
button.primary { background:var(--red); border:1px solid #c87661; padding:15px 24px; border-radius:3px; min-height:48px; letter-spacing:3px; box-shadow:0 6px 25px #0005; }
button.primary:hover { background:#be5548; }
button.secondary { border:1px solid var(--line); background:#142222; padding:13px 19px; min-height:46px; border-radius:3px; }
button.secondary:hover { border-color:var(--gold); }
button.ghost { background:transparent; color:var(--muted); padding:12px; min-height:44px; }
.eyebrow { color:var(--gold); letter-spacing:4px; font-size:11px; }
.quiet { color:var(--muted); font-size:12px; line-height:1.8; }
.row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.home { min-height:100dvh; position:relative; overflow:hidden; background:#111c1c; }
.home-backdrop { position:absolute; inset:0; background:url('../assets/optimized/courtyard.webp') center 35% / cover; opacity:.72; }
.home-shade { position:absolute; inset:0; background:linear-gradient(90deg,#0d1818ed 0%,#101c1c7d 48%,#101b1c12 75%),linear-gradient(0deg,#101b1c 0%,#101b1cf0 18%,#101b1c00 70%); }
.home:after { content:''; position:absolute; inset:0; pointer-events:none; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.06' filter='url(%23n)'/%3E%3C/svg%3E"); opacity:.3; }
.home-inner { position:relative; z-index:1; margin:auto; max-width:1440px; padding:30px 6vw 24px; }
.masthead { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.brand { display:flex; align-items:center; gap:12px; font-family:var(--serif); letter-spacing:4px; font-size:18px; }
.brand img { width:32px; height:32px; }
.top-tools { display:flex; gap:8px; }
.top-tools button,.game-head button { display:flex; align-items:center; gap:8px; background:#101c1c80; border:1px solid var(--line); padding:9px 13px; min-height:44px; border-radius:3px; font-size:12px; }
.hero { padding:62px 0 44px; min-height:400px; }
.hero-title { display:flex; align-items:center; gap:24px; margin:17px 0 20px; }
.hero-title h1 { font-family:var(--serif); font-size:clamp(52px,6.8vw,92px); font-weight:400; letter-spacing:16px; line-height:1.15; margin:0; text-shadow:0 5px 35px #0009; }
.seal { writing-mode:vertical-rl; border:1px solid #bf685b; color:#da9780; padding:10px 5px; font-family:var(--serif); font-size:12px; letter-spacing:4px; align-self:flex-end; margin-bottom:8px; }
.hero p { font-family:var(--serif); font-size:19px; letter-spacing:4px; color:#c6c7b6; line-height:1.85; margin:0 0 26px; }
.hero .primary { min-width:196px; }
.continue-text { display:block; margin-top:14px; color:#a2aaa0; font-size:11px; letter-spacing:1px; }
.season-heading { display:flex; justify-content:space-between; align-items:center; padding:0 0 14px; border-bottom:1px solid var(--line); gap:12px; }
.season-heading h2 { font-family:var(--serif); font-weight:400; margin:0; font-size:20px; letter-spacing:4px; }
.episode-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:13px; margin-top:18px; }
.episode-card { position:relative; display:flex; flex-direction:column; text-align:left; padding:19px 16px 14px; min-height:195px; background:#172424; border:1px solid var(--line); overflow:hidden; border-radius:3px; transition:transform .25s,border-color .25s; }
.episode-card:hover { transform:translateY(-4px); border-color:#bd9866; }
.episode-card.active { border-color:#c79b68; }
.card-art { position:absolute; inset:0; background-size:cover; background-position:center; filter:saturate(.6); opacity:.23; }
.episode-card.active .card-art { opacity:.48; }
.card-shade { position:absolute; inset:0; background:linear-gradient(0deg,#132120,#12202028); }
.card-head,.card-title,.card-subtitle,.card-foot { position:relative; z-index:1; }
.card-head { display:flex; justify-content:space-between; align-items:center; color:#c6b188; font-family:var(--serif); margin-bottom:20px; }
.access-tag { font:10px 'Microsoft YaHei',sans-serif; border:1px solid #bfb08b45; padding:3px 6px; letter-spacing:1px; }
.card-title { font-family:var(--serif); font-size:26px; font-weight:400; letter-spacing:3px; margin:0 0 8px; }
.card-subtitle { font-size:10px; color:#b6b7a6; line-height:1.6; letter-spacing:1px; }
.card-foot { display:flex; align-items:center; justify-content:space-between; margin-top:auto; padding-top:20px; font-size:11px; color:#b7a684; }
.card-foot svg { width:15px; height:15px; }
.home-footer { display:flex; justify-content:space-between; gap:15px; flex-wrap:wrap; padding-top:22px; font-size:10px; color:#919f96; letter-spacing:1px; }
.game { min-height:100dvh; display:flex; flex-direction:column; background:radial-gradient(ellipse at center,#263432,#0e1718 75%); padding:0 max(12px,env(safe-area-inset-right)) max(9px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
.native-view .game { height:var(--app-height,100dvh);min-height:0;overflow:hidden; }
@media (orientation:landscape) {
  .native-view .game { position:relative;padding:0; }
  .native-view .game-head { position:absolute;inset:8px 14px auto;width:auto;max-width:none;z-index:5;padding:0; }
  .native-view .stage-wrap { position:absolute;inset:0;display:block;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;overscroll-behavior:contain;touch-action:pan-y; }
  .native-view .stage-wrap::-webkit-scrollbar { display:none; }
  .native-view .stage { width:100%;height:auto;min-height:100%;aspect-ratio:16/9;border:0;box-shadow:none; }
  .native-view .scene-caption { top:calc(64px + var(--scene-pan,0px)); }
  .native-view .game-bottom { position:absolute;inset:0;z-index:5;padding:0;pointer-events:none;max-width:none; }
  .native-view .objective { position:absolute;inset:auto 125px 9px;padding:0;text-shadow:0 1px 5px #000; }
  .native-view .toolbar { border:0;padding:0; }
  .native-view .toolbar-group { position:absolute;bottom:10px;flex-direction:column;align-items:flex-start;gap:6px; }
  .native-view .toolbar-group:first-child { left:12px; }
  .native-view .toolbar-group:last-child { right:12px;align-items:flex-end; }
  .native-view .toolbar button { pointer-events:auto;background:#102125db; }
  .native-view .save-label { display:none; }
}
.game-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 0; margin:0 auto; width:100%; max-width:1440px; }
.game-title { text-align:center; font-family:var(--serif); font-size:18px; letter-spacing:4px; }
.game-title small { display:block; font:10px 'Microsoft YaHei',sans-serif; color:var(--muted); letter-spacing:2px; margin-top:6px; }
.stage-wrap { display:flex; flex:1; align-items:center; justify-content:center; min-height:0; }
.stage { position:relative; width:min(100%, calc((100dvh - 182px) * 16 / 9)); aspect-ratio:16/9; overflow:hidden; border:1px solid #bfb39530; background:#0b1414; box-shadow:0 14px 60px #0008; isolation:isolate; }
.scene-art { position:absolute; inset:0; width:100%; height:100%; object-fit:fill; animation:scene-enter 1.3s ease-out; }
.vignette { position:absolute; inset:0; background:radial-gradient(ellipse,#0000 45%,#0005 100%); pointer-events:none; }
.mist { position:absolute; inset:0; pointer-events:none; background:radial-gradient(ellipse at 20% 88%,#c9dcd218,transparent 40%); animation:mist 18s ease-in-out infinite alternate; }
.rain { position:absolute; inset:-80px; background-image:repeating-linear-gradient(103deg,transparent 0px,transparent 29px,#c7d0ca12 30px,transparent 32px,transparent 76px); background-size:104px 190px; opacity:.28; pointer-events:none; animation:rain 1.8s linear infinite; }
.candle-glow { position:absolute; width:13%; aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,#ffc36a36,transparent 70%); pointer-events:none; animation:candle 2.8s ease-in-out infinite alternate; mix-blend-mode:screen; }
.scene-caption { position:absolute; left:22px; top:18px; right:22px; color:#ece0be; font-family:var(--serif); font-size:clamp(12px,1.3vw,17px); line-height:1.8; text-shadow:0 1px 9px #000; pointer-events:none; }
.scene-caption {display:flex;align-items:center;gap:10px;}
.scene-caption img {width:30px;height:30px;object-fit:cover;border:1px solid #b09b6870;border-radius:50%;opacity:.8;}
.scene-stamp { position:absolute; right:20px; bottom:20px; writing-mode:vertical-rl; font-family:var(--serif); font-size:18px; letter-spacing:6px; color:#d4bf9f95; pointer-events:none; }
.hotspot { position:absolute; transform:translate(-50%,-50%); padding:0; background:transparent; border:0; min-width:44px; min-height:44px; box-shadow:none; cursor:inherit; z-index:2; }
.hotspot:hover { background:transparent; }
.water-reflection,.window-shadow,.curtain-shadow,.departing-bride,.light-fall { position:absolute; opacity:0; pointer-events:none; z-index:3; }
.water-reflection { left:6.5%;top:67%;width:13%;height:9%;border-radius:50%;background:radial-gradient(ellipse at 42% 50%,#e8b2736b,transparent 32%),radial-gradient(ellipse at 70% 50%,#c53f2559,transparent 38%);overflow:hidden;mix-blend-mode:screen; }
.water-reflection i { position:absolute;inset:12%;border:1px solid #b5cab68c;border-radius:50%;opacity:0; }
.event-well .water-reflection { animation:trace-in 3.2s ease-in-out; }
.event-well .water-reflection i { animation:water-ring 2.8s ease-out; }
.event-well .water-reflection i:nth-child(2) { animation-delay:.35s; }
.event-well .water-reflection i:nth-child(3) { animation-delay:.7s; }
.window-shadow { left:82%;top:29%;width:9%;height:34%;overflow:hidden;mask-image:linear-gradient(transparent,#000 20%,#000 75%,transparent); }
.window-shadow img { width:100%;height:100%;object-fit:cover;filter:brightness(.14) blur(1px); }
.event-window .window-shadow { animation:window-pass 3.8s cubic-bezier(.37,0,.27,1); }
.curtain-shadow { left:79%;top:23%;width:10%;height:49%;overflow:hidden;mask-image:linear-gradient(transparent,#000 20%,#000 85%,transparent); }
.curtain-shadow img { height:100%;width:100%;object-fit:cover;filter:brightness(.82); }
.curtain-shadow:after { content:'';position:absolute;inset:0;background:linear-gradient(90deg,#3d161aad,#7c2922bf 55%,#3e181ddb);transform-origin:right; }
.event-screen .curtain-shadow { animation:trace-in 3.4s ease-in-out; }
.event-screen .curtain-shadow:after { animation:silk-pull 3.4s cubic-bezier(.4,0,.3,1); }
.departing-bride { left:77%;top:24%;width:12%;height:53%;mask-image:linear-gradient(transparent,#000 15%,#000 85%,transparent); }
.departing-bride img { height:100%;width:100%;object-fit:cover;filter:brightness(.8); }
.light-fall { inset:0;background:linear-gradient(90deg,#07111255,#071112da 78%);z-index:2; }
.event-procession .light-fall { animation:light-recede 5.2s ease-in-out; }
.event-procession .departing-bride { animation:departure 5.2s cubic-bezier(.4,0,.2,1); }
.event-procession .candle-glow { animation:candle-recede 5.2s ease-in-out; }
.subdued .window-shadow,.subdued .curtain-shadow,.subdued .departing-bride,.subdued .light-fall { display:none; }
.game-bottom { width:100%; max-width:1440px; margin:0 auto; }
.objective { display:flex; justify-content:space-between; align-items:center; gap:15px; padding:14px 3px 10px; }
.objective-text { font-size:12px; color:#c2c3b0; display:flex; align-items:center; gap:9px; }
.objective-text:before { content:''; width:4px; height:4px; background:var(--gold); transform:rotate(45deg); }
.progress-dots { display:flex; gap:6px; }
.progress-dots i { display:block; width:15px; height:3px; background:#b8b89b25; }
.progress-dots i.done { background:#c4aa75; }
.toolbar { display:flex; justify-content:space-between; gap:10px; border-top:1px solid var(--line); padding-top:7px; }
.toolbar-group { display:flex; gap:9px; align-items:center; }
.tool { display:flex; align-items:center; gap:7px; background:none; padding:9px 10px; min-height:44px; color:#acb6a7; font-size:12px; border-radius:3px; }
.tool:hover { background:#a2ac9012; }
.tool.selected { color:var(--gold); }
.tool .count { font-size:10px; background:#87785833; padding:2px 5px; border-radius:9px; }
.next-scene { background:#793c32; border:1px solid #b675574f; color:#ebd5a9; padding:9px 15px; font-size:12px; min-height:44px; border-radius:3px; }
.save-label { color:#899989; font-size:10px; letter-spacing:1px; }
dialog { color:var(--paper); border:1px solid #ba9b6460; border-radius:5px; padding:0; width:min(600px,calc(100vw - 32px)); max-height:calc(100dvh - 44px); background:#142120; box-shadow:0 24px 90px #000b; }
dialog::backdrop { background:#050d0ede; backdrop-filter:blur(5px); }
.modal-inner { padding:29px;display:flex;flex-direction:column;max-height:calc(100dvh - 44px); }
.modal-header { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom:20px;flex-shrink:0; }
.modal-header h2 { font:400 25px var(--serif); letter-spacing:3px; margin:5px 0 0; }
.close { background:none; color:#b6bda9; width:44px; height:44px; flex-shrink:0; padding:11px; border:1px solid var(--line); border-radius:50%; }
.modal-body { overflow:auto; max-height:calc(100dvh - 240px);min-height:0; line-height:1.9; font-size:14px; padding:0 1px; }
.modal-body p { margin:0 0 16px; white-space:pre-line; }
.modal-footer { display:flex; gap:10px; justify-content:flex-end; padding-top:22px; flex-wrap:wrap;flex-shrink:0; }
.modal-footer .primary { font-size:12px; padding:12px 22px; }
.door-status { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px; }
.door-status p { margin:0;padding:12px;border:1px solid var(--line);background:#0c191940; }
.door-status span { display:block;color:var(--muted);font-size:11px; }
.door-status strong { color:var(--gold);font:14px/1.8 var(--serif); }
@media (orientation:landscape) and (max-height:580px) {
  .reflection-modal .modal-body, .door-puzzle .modal-body { display:flex;flex-direction:column; }
  .reflection-modal .reflection-grid { order:0;width:170px!important;max-width:170px!important;flex-shrink:0;margin:0 auto 8px; }
  .door-puzzle .tokens { order:0;margin:0;flex-shrink:0; }
  .door-puzzle .answer-slots { order:1;margin:8px 0;flex-shrink:0; }
  .reflection-modal .feedback, .door-puzzle .feedback { order:2;flex-shrink:0; }
  .reflection-modal .reader, .door-puzzle .puzzle-help { order:3;flex-shrink:0; }
  .reflection-modal .puzzle-notebook, .door-puzzle .puzzle-notebook { order:4;flex-shrink:0; }
}
.puzzle-notebook { margin:0 0 20px;border:1px solid var(--line);border-radius:4px;background:#0c191940; }
.puzzle-notebook summary { cursor:pointer;min-height:44px;padding:10px 14px;color:var(--gold);font:14px/24px var(--serif); }
.puzzle-notebook summary span { float:right;color:var(--muted);font:11px/24px sans-serif; }
.puzzle-notebook summary:focus-visible { outline:2px solid var(--gold);outline-offset:-3px; }
.puzzle-notebook[open] summary { border-bottom:1px solid var(--line); }
.notebook-pages { padding:16px 14px 4px; }
.notebook-pages .journal-note:first-child { padding-top:0; }
.notebook-pages .journal-note h3 { font-size:14px; }
.notebook-pages p { font-size:13px;line-height:1.9; }
.dialogue { position:fixed; margin:0 auto; top:auto; bottom:max(20px,env(safe-area-inset-bottom)); width:min(820px,calc(100vw - 30px)); background:linear-gradient(130deg,#142220fc,#152323fa); }
.dialogue::backdrop { background:#07121535; backdrop-filter:none; }
.dialogue .modal-inner { padding:21px 28px; }
.dialogue .modal-body { font:17px/1.9 var(--serif); letter-spacing:1px; max-height:35dvh; min-height:68px; }
.dialogue .modal-header { margin-bottom:10px; }
.dialogue .modal-header h2 { font-size:16px; letter-spacing:2px; color:var(--gold); margin:0; }
.dialogue .close { width:auto; height:32px; min-width:50px; padding:4px 9px; border-radius:3px; font-size:11px; }
.dialogue .modal-footer { padding-top:5px; align-items:center; justify-content:space-between; }
.dialogue .modal-footer .primary { min-height:40px; padding:8px 18px; }
.reader { display:flex;align-items:flex-start;gap:23px; }
.character { width:110px;flex:0 0 110px;margin:0; }
.character img { display:block;width:100%;aspect-ratio:1;object-fit:cover;object-position:50% 30%;border:1px solid #b89c6670;border-radius:3px;box-shadow:0 4px 14px #0006; }
.character figcaption { font:13px/1.5 var(--serif);color:var(--gold);margin-top:7px;text-align:center;letter-spacing:1px; }
.character small { display:block;font:10px/1.5 'Microsoft YaHei',sans-serif;color:var(--muted);letter-spacing:0;margin-top:3px; }
.character.unknown img { filter:brightness(.12) saturate(0); }
.reader-text { flex:1;min-width:0; }
.dialogue .modal-body { max-height:45dvh; }
.dialogue .character figcaption { font-size:12px; }
.dialogue-line { position:relative; }
.dialogue-line .line-measure { visibility:hidden; }
.dialogue-line #dialogue-text { position:absolute;inset:0;margin:0; }
.reader.compact { gap:16px; }
.compact .character { width:72px;flex-basis:72px; }
.reflection-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:3px;max-width:290px;aspect-ratio:1;margin:18px auto;background:#b4a17a; padding:3px;border:1px solid #958b6a; }
.mirror-tile { aspect-ratio:1;position:relative;overflow:hidden;padding:0;background:#182727; }
.mirror-plane { position:absolute;inset:0;transition:transform .5s cubic-bezier(.2,.8,.2,1); }
.mirror-plane img { position:absolute;width:200%;height:200%;max-width:none;object-fit:cover;filter:saturate(.65) brightness(.9); }
.fragment-list { display:grid;gap:10px;margin-top:20px; }
.paper-fragment { display:flex;align-items:center;gap:14px;text-align:left;background:linear-gradient(100deg,#c6b58b,#d8c6a3);color:#353b32;border:1px solid #a3936c;min-height:58px;padding:10px 16px;font:17px var(--serif);border-radius:2px; }
.paper-fragment.selected { outline:2px solid var(--gold);outline-offset:3px;background:#ede0bf; }
.fragment-number { color:#7e5342;border-right:1px solid #685c454d;padding-right:13px;font-size:14px; }
.paper-fragment small { margin-left:auto;font:10px 'Microsoft YaHei',sans-serif;color:#676d58;white-space:nowrap; }
.accounts-modal { width:min(740px,calc(100vw - 32px)); }
.evidence-board { position:relative;display:grid;grid-template-columns:1fr 1fr;gap:75px;margin-top:24px; }
.evidence-column { display:grid;gap:15px;z-index:1; }
.evidence-node { display:flex;align-items:center;justify-content:space-between;gap:5px;background:#26382f;border:1px solid #a698664d;padding:12px;min-height:59px;text-align:left;font-size:12px; }
.evidence-node.selected { border-color:var(--gold);background:#614a30; }
.evidence-node.connected { border-color:#bd976688; }
.evidence-node small { color:var(--gold); }
.evidence-threads { position:absolute;inset:0;width:100%;height:100%;stroke:#c8ae7a;stroke-width:1.5;opacity:.85;pointer-events:none; }
.puzzle-help { font-size:12px; color:#b2b5a5; border-left:2px solid #aa8b57; padding-left:12px; margin:15px 0 24px; white-space:pre-line; }
.tokens { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.token { background:#25332d; border:1px solid #a496685c; padding:18px 9px; min-height:75px; font:24px var(--serif); color:#e5d0a8; border-radius:3px; }
.token:hover { border-color:var(--gold); background:#344334; }
.token small { display:block; font:10px 'Microsoft YaHei',sans-serif; color:#9ca994; margin-top:7px; }
.answer-slots { display:flex; align-items:center; gap:8px; justify-content:center; margin:22px 0 14px; }
.answer-slot { width:46px; height:48px; border-bottom:1px solid #c1a975; display:grid; place-items:center; font:22px var(--serif); background:#d0ba7310; }
.feedback { min-height:26px; font-size:12px; text-align:center; color:#dcb482; margin:12px 0 0; }
.seat-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:13px; margin:20px 0; }
.seat { display:flex; flex-direction:column; align-items:center; background:#29362f; border:1px solid #ac966c65; padding:16px 5px; min-height:100px; color:#ead1a3; font:20px var(--serif); gap:12px; }
.seat small { font:10px 'Microsoft YaHei',sans-serif; color:#9aa795; }
.door-position { color:#aab5a2; font-size:11px; text-align:left; margin-bottom:5px; }
.evidence-list { display:grid; gap:10px; margin:18px 0; }
.evidence { background:#d2c4a509; border-left:2px solid #a68e64; padding:11px 14px; font-size:12px; color:#bec1af; }
.verdict-options { display:grid; gap:10px; }
.verdict-options button { text-align:left; background:#29362f; border:1px solid #a4966840; border-radius:3px; padding:14px 16px; min-height:48px; }
.verdict-options button:hover { border-color:var(--gold); }
.journal-list { display:grid; gap:12px; }
.journal-note { padding:15px; border:1px solid var(--line); background:#23302840; }
.journal-note h3 { font:17px var(--serif); color:#d6bc85; margin:0 0 10px; }
.journal-note p { font-size:12px; color:#bfc3b1; margin:0; white-space:pre-line; }
.cup-illustration { width:72px; height:72px; display:block; margin:0 auto 18px; color:var(--gold); }
.settings-field { padding:16px 0; border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:15px; }
.settings-field span { font-size:13px; }
.segmented { display:flex; gap:5px; }
.segmented button { background:#28382e; border:1px solid #a9996140; padding:10px 12px; min-height:42px; font-size:12px; }
.segmented button.on { background:#6a4834; border-color:#c2a572; color:#efdcaf; }
input[type=range] { width:160px; accent-color:#bc8658; }
.ending-title { text-align:center; font:48px var(--serif); letter-spacing:15px; color:var(--gold); margin:8px 0 16px; }
.ending-caption { text-align:center; font-family:var(--serif); color:#c4c4ab; padding-bottom:20px; border-bottom:1px solid var(--line); }
.ending-text { font:15px/2 var(--serif); white-space:pre-line; }
.ending-credit { color:#9aab9c; font-size:11px; border-top:1px solid var(--line); padding-top:14px; margin-top:20px; }
.about-source { color:#d6bd89; }
.store-band { display:flex; align-items:center; justify-content:space-between; gap:16px; border:1px solid var(--line); padding:14px 18px; margin:0 0 18px; background:#152721c9; }
.store-band strong { display:block; font:18px var(--serif); color:var(--gold); }
.store-band span { display:block; margin-top:5px; color:#aab5a8; font-size:11px; }
.store-band button { white-space:nowrap; min-height:44px; }
.store-dialog { max-width:760px; }
.store-intro { display:flex; align-items:center; gap:18px; padding:4px 0 18px; }
.store-intro img { width:36px; height:66px; flex-shrink:0; }
.store-intro strong { font:22px var(--serif); color:var(--gold); }
.store-intro p { margin:6px 0 0; font-size:12px; color:#b8c1ae; line-height:1.8; }
.store-status { padding:12px 15px; border:1px solid #ba9a6440; background:#bd9d5910; color:#dfc794; font-size:12px; line-height:1.8; min-height:48px; }
.store-status[aria-busy=true] { opacity:.7; }
.store-volumes { margin-top:18px; }
.store-volume { display:flex; align-items:center; gap:16px; padding:17px 0; border-bottom:1px solid var(--line); }
.volume-number { font:30px var(--serif); color:#a88c54; width:32px; flex-shrink:0; }
.volume-copy { flex:1; min-width:0; }
.volume-title { display:flex; align-items:center; gap:12px; }
.volume-title h3 { margin:0; font:20px var(--serif); color:#e0d6b5; }
.volume-access { font-size:10px; color:#b6a37e; border:1px solid #b6a37e40; padding:0 7px; white-space:nowrap; }
.volume-copy p { margin:4px 0; font-size:12px; color:#b4c0ad; }
.volume-copy small,.store-fine-print { font-size:11px; color:#91a18f; line-height:1.8; }
.volume-button { min-width:96px; min-height:44px; white-space:nowrap; }
button:disabled { opacity:.45; cursor:default; }
@media (max-width:650px) { .store-band { padding:12px; gap:8px; } .store-band strong { font-size:16px; } .store-band span { font-size:9px; } .store-band button { font-size:11px; padding:8px; } .store-volume { gap:9px; padding:14px 0; } .volume-number { width:24px; font-size:24px; } .volume-title { gap:6px; flex-wrap:wrap; } .volume-title h3 { font-size:18px; } .volume-button { min-width:76px; padding:8px; font-size:12px; } .store-intro strong { font-size:19px; } }
#toast { position:fixed; z-index:50; bottom:22px; left:50%; transform:translate(-50%,20px); background:#25362bf5; border:1px solid #c8b38b60; padding:11px 20px; opacity:0; pointer-events:none; transition:opacity .25s,transform .25s; max-width:calc(100vw - 32px); font-size:12px; text-align:center; border-radius:3px; }
#toast.visible { opacity:1; transform:translate(-50%,0); }
.reduced-motion *, .reduced-motion *:before,.reduced-motion *:after { animation:none!important; transition:none!important; }
.reduced-motion .event-well .water-reflection { opacity:.2; }
@keyframes scene-enter { from { opacity:.15; } to { opacity:1; } }
@keyframes rain { to { background-position:32px 190px; } }
@keyframes mist { to { transform:translateX(7%); opacity:.6; } }
@keyframes candle { 0% { opacity:.65; transform:scale(.94); } 36% { opacity:.85; } 75% { opacity:.54; } 100% { opacity:1; transform:scale(1.12); } }
@keyframes trace-in { 0%,100% {opacity:0;} 35%,62% {opacity:.8;} }
@keyframes water-ring { from {opacity:.6;transform:scale(.25);} to {opacity:0;transform:scale(1.8);} }
@keyframes window-pass { 0%,100% {opacity:0;transform:translateX(15%);} 28% {opacity:.7;transform:translateX(0);} 65% {opacity:.65;transform:translateX(-3%);} 90% {opacity:0;transform:translateX(-15%);} }
@keyframes silk-pull { 0%,100% {transform:scaleX(1);} 45%,65% {transform:scaleX(.43) skewY(-2deg);} }
@keyframes light-recede { 0%,100% {opacity:0;} 30%,58% {opacity:.8;} }
@keyframes departure { 0%,12%,100% {opacity:0;transform:translateX(-12%) scale(.94);} 34% {opacity:.72;transform:translateX(0) scale(1);} 68% {opacity:.52;transform:translateX(28%) scale(.92);} 90% {opacity:0;transform:translateX(52%) scale(.86);} }
@keyframes candle-recede { 0%,100% {opacity:.7;} 35%,65% {opacity:.08;} }
@media (prefers-reduced-motion:reduce) { *,*:before,*:after { animation:none!important;transition:none!important; } .window-shadow,.curtain-shadow,.departing-bride,.light-fall {display:none;} }
@media (max-width:650px) { .reader {gap:13px;} .character {width:76px;flex-basis:76px;} .compact .character {width:55px;flex-basis:55px;} .character small {font-size:9px;} .dialogue .modal-body {max-height:42dvh;} .dialogue .modal-footer .quiet {font-size:10px;} .evidence-board {gap:35px;} .evidence-node {padding:8px;font-size:11px;min-height:66px;} .paper-fragment {font-size:14px;gap:10px;padding:10px;} .fragment-number {padding-right:8px;} }
@media (orientation:landscape) and (max-height:580px) { .character {width:78px;flex-basis:78px;} .character small {display:none;} .compact .character {width:48px;flex-basis:48px;} .reader {gap:16px;} .dialogue .modal-body {max-height:40dvh;} .dialogue .modal-header {margin-bottom:8px;} .dialogue .modal-footer {padding-top:8px;} .reflection-grid {max-width:195px;} .evidence-board {margin-top:16px;} .evidence-column {gap:10px;} .evidence-node {min-height:49px;} }
@media (max-width:1100px) { .home-inner { padding:24px 5vw; } .hero { padding:40px 0 35px; min-height:340px; } .episode-grid { grid-template-columns:repeat(3,1fr); } .episode-card { min-height:164px; } .card-head { margin-bottom:12px; } }
@media (max-width:650px) { .home-inner { padding:20px 22px; } .brand { font-size:15px; letter-spacing:2px; } .top-tools button { padding:8px 10px; } .top-tools .tool-label { display:none; } .hero { padding:66px 0 34px; min-height:400px; } .hero-title h1 { font-size:58px; letter-spacing:10px; } .hero-title { gap:8px; } .hero p { font-size:16px; letter-spacing:3px; } .home-shade { background:linear-gradient(90deg,#0d1818e8,#101c1c30),linear-gradient(0deg,#101b1c 15%,#101b1c00 100%); } .home-backdrop { background-position:44% 15%; } .season-heading h2 { font-size:18px; } .season-heading .quiet { font-size:10px; } .episode-grid { grid-template-columns:repeat(2,1fr); gap:10px; } .card-title { font-size:26px; } .game-head { padding:12px 0; } .game-title { font-size:16px; letter-spacing:2px; } .game-head button { padding:8px; } .game-head .tool-label { display:none; } .stage { width:100%; } .scene-caption { font-size:11px; top:10px; left:12px; right:12px; } .hotspot { padding:7px 8px; gap:4px; font-size:10px; min-height:44px; } .scene-stamp { display:none; } .stage-wrap { align-items:center; } .objective { padding-top:20px; } .objective-text { font-size:11px; } .progress-dots { gap:4px; } .progress-dots i { width:10px; } .toolbar { flex-wrap:wrap; padding:8px 0 4px; } .tool { padding:9px 5px; font-size:11px; gap:5px; } .toolbar-group { gap:5px; } .next-scene { padding:9px 12px; } .save-label { display:none; } .dialogue .modal-inner { padding:17px 20px; } .dialogue .modal-body { font-size:15px; line-height:1.9; min-height:85px; } .modal-inner { padding:22px; } .modal-header h2 { font-size:22px; } .tokens { gap:8px; } .token { padding:16px 5px; font-size:24px; } .settings-field { gap:10px; } input[type=range] { width:140px; } }
@media (orientation:landscape) and (max-height:580px) { .game-head { padding:5px 0; } .game-title small { display:none; } .game-head button { min-height:36px; } .stage { width:min(100%,calc((100dvh - 134px) * 16 / 9)); } .objective { padding:8px 3px 5px; } .toolbar { padding-top:3px; } .tool,.next-scene { min-height:36px; padding:6px 9px; } .dialogue { bottom:10px; } .dialogue .modal-inner { padding:12px 20px; } .dialogue .modal-body { min-height:36px; font-size:14px; } .modal-inner { padding:20px; } .modal-body { max-height:calc(100dvh - 185px); } .modal-header { margin-bottom:12px; } .modal-footer { padding-top:12px; } .token { min-height:58px; padding:12px 8px; } .seat { min-height:65px; padding:10px 5px; gap:8px; } .puzzle-help { margin:10px 0; } .answer-slots { margin:12px 0; } }
@media (orientation:landscape) and (max-height:580px) and (min-width:700px) {
  .store-dialog { width:min(820px,calc(100vw - 32px));max-width:820px; }
  .store-dialog .modal-body { max-height:none; }
  .store-dialog .store-intro { display:none; }
  .store-dialog .store-status { padding:7px 12px;min-height:36px; }
  .store-dialog .store-volumes { display:grid;grid-template-columns:1fr 1fr;gap:0 20px;margin-top:8px; }
  .store-dialog .store-volume { padding:9px 0;gap:10px; }
  .store-dialog .volume-number { width:24px;font-size:24px; }
  .store-dialog .volume-title { gap:7px; }
  .store-dialog .volume-title h3 { font-size:18px; }
  .store-dialog .volume-access { font-size:9px;padding:0 4px; }
  .store-dialog .volume-copy p { margin:0;font-size:11px; }
  .store-dialog .volume-copy small { display:none; }
  .store-dialog .volume-button { min-width:76px;padding:8px;font-size:11px; }
}
/* Season navigation keeps the artwork unobscured; discoveries remain unlabelled. */
.home-inner{padding-bottom:100px}.platform-dock{position:fixed;z-index:20;bottom:max(14px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:5px;align-items:center;padding:8px 12px;border:1px solid #796344;border-radius:16px;background:#132122f2;box-shadow:0 10px 30px #0008;max-width:calc(100% - 24px)}.platform-dock button{border:0;background:transparent;color:#d4c4a7;padding:10px 14px;white-space:nowrap}.platform-dock button.on{color:#e9c888;background:#9e825329;border-radius:10px}.coin-badge{color:#e7c68c;font-size:12px;white-space:nowrap;border-left:1px solid #776043;padding-left:10px}.platform-banner{font-size:12px;color:#bdab88;line-height:1.8;margin:12px 0}.task-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:17px 0;border-bottom:1px solid #96836a32}.task-row h3{font-size:16px;margin:0 0 7px}.task-row p{font-size:13px;margin:0 0 6px;color:#b9b0a0;line-height:1.7}.task-row small{display:block;font-size:11px;color:#bdac88}.task-row button{flex-shrink:0;min-height:42px}.ad-panel{margin-top:22px;padding:18px;background:#17282a;border:1px solid #8971454d;border-radius:12px}.ad-panel p{font-size:13px}.ad-panel small{display:block;margin-top:12px;color:#a99d85}.phone-field{display:block;margin:15px 0}.phone-field input{display:block;width:100%;padding:12px;background:#132426;border:1px solid #85714c;border-radius:7px;color:#ede0c7;margin-top:8px}.phone-consent{display:flex;gap:10px;align-items:center;font-size:13px}.theme-lantern .home-shade{background:linear-gradient(90deg,#0a3034ee,#14383a99,#0c262caa)}.theme-lantern .platform-dock{border-color:#7ca89c}.theme-lantern .primary{background:#71968a;color:#071b19}.season-effect{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:hidden}.season-effect i,.season-effect b{position:absolute;display:block;opacity:0}.effect-ink i{inset:0;background:radial-gradient(ellipse at 50% 40%,transparent 35%,#080f14b3 70%);animation:season-ink 2.7s ease both}.effect-shadow i{width:11%;height:65%;bottom:0;left:52%;background:#031019bd;filter:blur(16px);border-radius:50% 50% 0 0;animation:season-shadow 2.7s ease both}.effect-breath i{width:36%;height:75%;left:35%;top:10%;background:radial-gradient(ellipse,#d6efde22,transparent 65%);filter:blur(10px);animation:season-breath 2.7s ease both}.season-puzzle .answer-slots{margin:15px 0}.season-puzzle .wall-lamps{display:flex;gap:8px;justify-content:center}.season-puzzle .wall-lamp{min-width:60px;min-height:110px}.season-puzzle .tokens{display:flex;flex-wrap:wrap;gap:10px}.season-puzzle .token small{display:block;margin-top:8px}.season-puzzle .paper-fragment{width:100%;margin-bottom:10px;text-align:left}.season-puzzle .verdict-options{display:grid;gap:10px}.season-puzzle .verdict-options button{text-align:left;line-height:1.7}.season-puzzle .evidence-node{min-height:65px}.season-puzzle .evidence-node.selected{outline:2px solid #d7bb7f}.season-puzzle .evidence-node.connected{background:#385c504d}.season-puzzle .modal-footer{position:sticky;bottom:0;background:#172423;padding:14px}.season-effect{animation:none}@keyframes season-ink{0%,100%{opacity:0}40%,70%{opacity:.9}}@keyframes season-shadow{0%,100%{opacity:0;transform:translateX(35%)}40%,65%{opacity:.6;transform:translateX(-20%)}}@keyframes season-breath{0%,100%{opacity:0;transform:scale(.8)}50%{opacity:.7;transform:scale(1.2)}}.reduced-motion .season-effect{display:none}@media(max-width:560px){.platform-dock{gap:0;padding:6px}.platform-dock button{padding:10px 11px;font-size:13px}.coin-badge{font-size:10px;padding:0 7px}.platform-dialog .task-row{gap:10px}.platform-dialog .task-row button{font-size:12px;padding:10px 12px}.season-game .toolbar{gap:8px}.season-puzzle .modal-footer{flex-wrap:wrap}.season-game .toolbar-group{gap:6px}.season-game .tool{font-size:12px}}
/* Reading paths and account forms. */
.home-paths{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:28px 0 42px}.home-paths button{text-align:left;padding:20px;border:1px solid #ae92554d;background:#142522aa;min-height:96px}.home-paths strong{display:block;font:22px Georgia,serif;letter-spacing:3px;color:#e6d3aa}.home-paths span{display:block;font-size:12px;color:#b4ac96;margin-top:10px}.page-inner{min-height:100vh;padding-top:28px}.page-brand{border:0;background:transparent}.page-breadcrumb{display:flex;flex-wrap:wrap;gap:12px;margin:30px 0 38px}.page-breadcrumb button{min-height:44px}.page-breadcrumb .on,.catalog-filters .on{background:#b4986530;border:1px solid #a88c54;color:#e6c78d}.page-title{font:clamp(32px,5vw,54px) Georgia,serif;letter-spacing:7px;margin:15px 0 24px;color:#e7d4ad}.page-lead{max-width:680px;line-height:1.9;color:#bdb9a9;margin-bottom:26px}.catalog-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:25px}.catalog-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.catalog-card{display:grid;grid-template-columns:42% 1fr;text-align:left;overflow:hidden;border:1px solid #98815b66;border-radius:9px;background:#142522dd;padding:0;min-height:185px;color:#e0d5ba}.catalog-card img{width:100%;height:100%;object-fit:cover;pointer-events:none}.catalog-copy{display:flex;flex-direction:column;gap:11px;padding:23px}.catalog-copy strong{font:26px Georgia,serif;letter-spacing:4px}.catalog-copy small{font-size:11px;color:#c9af7b}.catalog-copy span{font-size:13px;color:#b7b5a7}.catalog-copy em{font-style:normal;color:#c4a468;font-size:12px;margin-top:auto}.chapter-hero{display:grid;grid-template-columns:1.15fr 1fr;gap:35px;align-items:center;background:#112321d9;border:1px solid #89724d66;padding:24px;border-radius:12px}.chapter-hero>img{width:100%;border-radius:8px}.chapter-hero h2{font:25px Georgia,serif;letter-spacing:2px}.chapter-hero p{line-height:1.9;color:#c6c3b5}.chapter-tag{font-size:12px;color:#ccb77e}.chapter-facts{display:flex;gap:12px;margin:24px 0}.chapter-facts span{border:1px solid #9d8a604d;padding:8px;font-size:12px}.chapter-scenes{margin-top:35px}.chapter-scenes>div,.world-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.chapter-scenes article,.world-grid article{background:#152724b3;border:1px solid #8b7d5933;padding:22px;line-height:1.7}.chapter-scenes h3{font:21px Georgia,serif}.chapter-scenes small{color:#bba471}.chapter-scenes p{font-size:13px;color:#b7b8ac}.chapter-links{display:flex;gap:15px;margin:26px 0}.archive-stats{display:flex;gap:40px;margin:28px 0;color:#b6b7a2}.archive-stats strong{font:36px Georgia,serif;color:#d6bd88;margin-right:14px}.empty-page{padding:35px;color:#c5c1ad;line-height:1.9}.world-note{max-width:760px;margin:25px 0 35px}.world-grid{margin-bottom:28px}.world-grid h2{font-size:20px}.world-grid p{font-size:14px;color:#c0bfac}.account-entry{display:flex;gap:12px;margin:20px 0}.auth-dialog form>.primary,.auth-dialog form>.danger{width:100%;min-height:46px;margin:10px 0}.auth-dialog input{font-size:16px}.auth-dialog .phone-field small{font-size:11px;display:block;margin-top:8px;color:#b3ac94}.auth-dialog [role=status]{font-size:13px;color:#e3ba8e;min-height:1.6em}.danger{background:#652d28;border:1px solid #b7614d;color:#efc6b6;border-radius:6px;padding:11px 17px}.auth-dialog .phone-consent{line-height:1.7}.auth-dialog input[type=checkbox]{flex-shrink:0;width:20px;height:20px}.page-shell .home-shade{position:fixed}.page-shell .home-backdrop{position:fixed}@media(max-width:740px){.home-paths{grid-template-columns:1fr;gap:10px;margin-top:22px}.home-paths button{min-height:78px;padding:16px}.home-paths strong{font-size:20px}.catalog-grid{grid-template-columns:1fr}.catalog-card{min-height:155px}.catalog-copy{padding:18px;gap:8px}.catalog-copy strong{font-size:24px}.chapter-hero{grid-template-columns:1fr;padding:15px;gap:20px}.chapter-scenes>div,.world-grid{grid-template-columns:1fr}.page-breadcrumb{gap:6px;margin:22px 0 27px}.page-breadcrumb button{font-size:12px;padding:10px}.account-entry{flex-wrap:wrap}.page-lead{font-size:14px}.page-shell .masthead{align-items:center}.page-shell .masthead .brand{font-size:21px}.page-title{letter-spacing:5px}.chapter-facts{flex-wrap:wrap}}
/* Standalone tasks, collections and accounts share the reading navigation. */
.platform-page-content{max-width:920px;margin:26px 0 30px}.platform-page-intro{padding:24px 26px;border:1px solid #8f785647;border-radius:14px;background:linear-gradient(120deg,#1e3030bd,#13232290);margin-bottom:22px}.platform-page-intro h2{font-size:23px;margin:0 0 12px;font-weight:500}.platform-page-intro p{color:#c1b6a2;line-height:1.8;margin:0}.page-actions,.account-shortcuts{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0}.page-actions button{min-height:44px}.platform-page-content .task-list{background:#142426b0;padding:8px 24px;border:1px solid #8f785633;border-radius:14px}.page-loading,.page-offline{min-height:180px;padding:24px 0}.platform-page-content .account-entry{margin:20px 0}.platform-dock button[aria-current=page]{color:#e9c888;background:#9e825329;border-radius:10px}@media(max-width:560px){.platform-page-intro{padding:18px}.platform-page-intro h2{font-size:19px}.platform-page-content .task-list{padding:4px 16px}.platform-page-content .task-row{gap:12px}.page-actions button{flex:1}.platform-page-content{margin-top:20px}}
/* Reserve the navigation area so a visible story link never sits beneath a tab. */
body:has(#app>.home){overflow:hidden}#app:has(>.home){height:calc(100dvh - 90px);overflow-y:auto;overscroll-behavior:contain}#app>.home .home-inner{padding-bottom:32px}.page-shell .home-backdrop{opacity:.65}.page-shell .home-shade{background:linear-gradient(90deg,#101a1ae8,#101a1ab8),linear-gradient(0deg,#101a1ae0,#101a1a40)}.page-shell[data-page-route=account] .home-backdrop{background-position:68% center}.page-shell[data-page-route=tasks] .home-backdrop{background-position:50% center}.page-shell[data-page-route=store] .home-backdrop{background-position:35% center}
.season-map{grid-column:1/-1;width:100%;overflow:hidden;border:1px solid #96815b55;border-radius:15px;background:linear-gradient(145deg,#142d2cd9,#0b191edb);box-shadow:inset 0 0 100px #020d1266}.map-heading{padding:22px 26px;border-bottom:1px solid #a58d5e33}.map-heading h2{font:28px Georgia,serif;letter-spacing:6px;margin:12px 0}.map-heading small{color:#c5aa74;font-size:11px}.map-heading p{color:#bdbaa8;font-size:13px;line-height:1.8;margin:0}.map-field{height:420px;position:relative;background:radial-gradient(ellipse at 55% 25%,#65857525,transparent 60%);isolation:isolate}.map-field svg{position:absolute;width:100%;height:100%;pointer-events:none}.map-ridge{fill:#081c20b3;stroke:#385b5644;stroke-width:2}.map-river{fill:none;stroke:#456b6833;stroke-width:28}.map-trail{fill:none;stroke:#aa95654d;stroke-width:2;stroke-dasharray:5 10}.map-node{position:absolute;width:128px;min-height:78px;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:0!important;background:#132423b3!important;border-radius:12px!important;padding:10px 6px!important;color:#d9cda8;z-index:2;box-shadow:none}.map-node .map-light{font-size:25px;color:#d2ad69;text-shadow:0 0 16px #f1c27577}.map-node strong{font:18px Georgia,serif;letter-spacing:3px}.map-node small{font-size:10px;color:#a7a993}.map-node.veiled{background:#11222591!important;color:#647b76}.map-node.veiled .map-light{color:#6a827c;text-shadow:none}.map-node.completed .map-light{color:#8fbba4}.map-node:hover,.map-node:focus-visible{outline:1px solid #c2a774;outline-offset:2px}.map-water-label{position:absolute;bottom:13%;right:21%;font-size:12px;letter-spacing:4px;color:#5a7773;transform:rotate(-13deg)}.map-legend{display:flex;gap:18px;flex-wrap:wrap;padding:16px 22px;font-size:11px;color:#b7af94;border-top:1px solid #9a815133}.map-horizon{margin:0 22px 22px;padding:16px;border:1px dashed #6a766655;border-radius:10px;display:flex;gap:18px;align-items:center;color:#8c9a8b}.map-horizon>span{font-size:35px}.map-horizon strong{font-size:14px}.map-horizon p{font-size:12px;margin:7px 0 0}.page-shell .season-map{max-width:1080px}@media(max-width:560px){.map-field{height:430px}.map-node{width:94px;min-height:74px;padding:8px 3px!important}.map-node strong{font-size:15px;letter-spacing:2px}.map-heading{padding:18px}.map-heading h2{font-size:24px}.map-legend{gap:10px;padding:14px}.map-horizon{margin:0 14px 14px}.map-water-label{font-size:10px;right:18%}}
.tutorial-pointer[data-inline=true] .tutorial-callout{display:none}.tutorial-inline{flex-basis:100%;font-size:11px;line-height:1.6;color:#e5c68b;margin:0 0 6px;padding:7px 9px;border-left:2px solid #bd9f61;background:#a58b4510;pointer-events:none}body:has(#modal[open]) .tutorial-strip{visibility:hidden}
#orientation-gate{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-width:none;max-height:none;border:0;border-radius:0;background:radial-gradient(ellipse at 50% 35%,#233735,#0b1719 75%);box-shadow:none;padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));overflow:auto}#orientation-gate::backdrop{background:#0b1719}.orientation-card{min-height:100%;max-width:420px;margin:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:17px}.orientation-phone{width:145px;height:110px;flex-shrink:0;stroke:#cdb786;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}.orientation-card .eyebrow{margin:0;font-size:11px}.orientation-card h2{font:24px/1.6 var(--serif);letter-spacing:2px;margin:0;color:#e5d3ad}.orientation-card>p:not(.eyebrow){font-size:14px;line-height:1.9;color:#aab9b2;margin:0}.orientation-card button{min-height:46px;min-width:190px}.orientation-home{background:transparent;border:1px solid #75877c66;color:#bdc5b8;padding:10px 18px;border-radius:5px}.needs-landscape #app>.game,.needs-landscape #modal{visibility:hidden}.needs-landscape .tutorial-pointer{visibility:hidden}
@media(orientation:landscape){.native-view .scene-caption{position:fixed;top:max(64px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right))}.native-view .stage-wrap{overflow:auto;touch-action:pan-x pan-y}.native-view .stage{width:max(100%,calc(var(--app-height,100dvh) * 16 / 9));max-width:none;min-height:0;height:auto;aspect-ratio:16/9}.native-view .game-head{left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));top:max(8px,env(safe-area-inset-top))}.native-view .game-head button,.native-view .toolbar button{min-height:44px;min-width:44px}.native-view .game-title{font-size:clamp(14px,2.2vw,20px);max-width:36vw;text-align:center}.native-view .toolbar-group{bottom:max(10px,env(safe-area-inset-bottom))}.native-view .toolbar-group:first-child{left:max(12px,env(safe-area-inset-left))}.native-view .toolbar-group:last-child{right:max(12px,env(safe-area-inset-right))}.native-view .objective{bottom:max(12px,env(safe-area-inset-bottom))}}
@media(orientation:landscape){.native-view .tutorial-strip{position:absolute;top:70px;left:12px;right:auto;bottom:auto;max-width:calc(100% - 24px);margin:0;padding:7px 10px;pointer-events:auto}.native-view .tutorial-strip img,.native-view .tutorial-strip span{display:none}.native-view .tutorial-strip strong{font-size:11px}.native-view .game:has(.tutorial-strip) .scene-caption{visibility:hidden}}

/* Collected endings remain readable without replaying a completed branch. */
.relic-ending{border-top:1px solid #b8a66a35;padding:12px 0}.relic-ending summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--gold,#d9c899)}.relic-ending[open] summary{margin-bottom:10px}.relic-ending .reader-text p{line-height:1.9;white-space:normal}.relic-ending .reader{align-items:flex-start}
