:root{color-scheme:dark;font-family:Georgia,'Times New Roman',serif;color:#f7e8cb;background:#211c27;font-synthesis:none}*{box-sizing:border-box}body{margin:0;height:100dvh;overflow:hidden;display:grid;place-items:center;background:#211c27}button{font:inherit;color:inherit;cursor:pointer;border:1px solid #c9a46c8a;background:#302739;min-height:48px;min-width:48px;touch-action:manipulation}button:focus-visible,canvas:focus-visible,[tabindex]:focus-visible{outline:3px solid #ffe6a5;outline-offset:-3px}button:active{filter:brightness(1.2)}[hidden]{display:none!important}#game{width:100%;height:100%;max-width:1900px;max-height:1069px}#stage{width:100%;height:100%;position:relative;overflow:hidden;isolation:isolate;background:#443e31}canvas{display:block;width:100%;height:100%;touch-action:none;cursor:default}#loading{position:absolute;inset:0;display:grid;place-items:center;background:#29232d;z-index:10;font-style:italic}.scene-label{position:absolute;left:max(18px,env(safe-area-inset-left));top:max(14px,env(safe-area-inset-top));font-size:clamp(12px,1.4vw,17px);letter-spacing:.04em;text-shadow:0 2px 5px #1b152a,0 0 14px #1b152a;pointer-events:none;opacity:.9}#cast{position:absolute;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));border-radius:50%;width:62px;height:62px;padding:13px;background:linear-gradient(145deg,#694b68ee,#322638f5);color:#ffe0a2;box-shadow:0 3px 16px #0005;z-index:4}#cast svg{width:100%;height:100%}#spells{position:absolute;right:max(16px,env(safe-area-inset-right));bottom:max(88px,calc(env(safe-area-inset-bottom) + 80px));width:min(300px,calc(100% - 32px));padding:22px;background:#292235f5;border:1px solid #b89765;border-radius:22px;box-shadow:0 12px 50px #0006;z-index:5}#spells h2{font-weight:normal;font-size:21px;margin:0 30px 18px 0;color:#f8d59f}#spell-list p{font-style:italic;line-height:1.5;color:#d5c4ce;font-size:15px;margin:0}#spell-list button{border-radius:12px;width:100%;padding:12px;background:#54415e}.close{position:absolute;right:5px;top:5px;font:26px system-ui;border:0;background:none;border-radius:50%}#dialogue{position:absolute;bottom:max(14px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(650px,calc(100% - 32px));background:#2b2234f5;border:1px solid #b58d67;border-radius:18px;padding:14px 64px 16px 20px;z-index:7;box-shadow:0 12px 45px #0005;cursor:pointer}#speaker{font-size:13px;letter-spacing:.04em;color:#f6c37b}#dialogue p{font-size:clamp(16px,1.7vw,20px);line-height:1.4;margin:6px 0 0}#dialogue-next{position:absolute;right:8px;bottom:8px;border:0;background:transparent;border-radius:50%;font-size:32px;color:#eac78f}#toast{position:absolute;top:15%;left:50%;transform:translateX(-50%);max-width:85%;padding:10px 16px;border-radius:14px;background:#281f32e8;color:#ffe5aa;text-align:center;opacity:0;transition:opacity .25s;pointer-events:none;font-size:15px;z-index:8}#toast.visible{opacity:1}@media(max-height:420px){#cast{width:54px;height:54px;padding:10px;bottom:max(10px,env(safe-area-inset-bottom))}#dialogue{bottom:10px;padding-top:10px;padding-bottom:12px}#dialogue p{font-size:16px}#spells{bottom:72px;padding:18px}#spells h2{font-size:18px;margin-bottom:12px}}

#dialogue{min-height:120px}#dialogue-sound{position:absolute;right:8px;top:8px;width:44px;height:44px;min-width:44px;min-height:44px;border:0;background:transparent;color:#ebd4a8;font-size:23px;cursor:pointer}#voice-status{display:block;font-size:12px;color:#e1cbae;min-height:0}#voice-status:empty{display:none}

#dialogue{padding-left:94px}#portrait{position:absolute;left:14px;top:15px;width:64px;height:72px;border-radius:18px;background-color:#685463;background-repeat:no-repeat;background-size:auto 240%;background-position:center 4%;border:1px solid #a88965}#portrait[data-speaker="Luna"],#portrait[data-speaker="Frosch"],#portrait[data-speaker="Henne"],#portrait[data-speaker="Pferd"]{background-size:contain;background-position:center}#speaker{font-size:14px}#feed{position:absolute;left:max(16px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));padding:8px 17px;border-radius:18px;background:#302739e8;z-index:4}@media(max-height:420px){#dialogue{padding-left:82px;min-height:104px;width:min(730px,calc(100% - 24px))}#portrait{width:54px;height:62px;left:12px;top:12px}#dialogue p{font-size:16px;line-height:1.25}#feed{bottom:10px}}@media(orientation:portrait){#dialogue{padding-left:78px}#portrait{width:50px;height:60px;left:12px}}

/* The atlas is painted by the same canvas renderer as the story. Native buttons
   preserve keyboard/screen-reader access over the illustrated destination art. */
#map{position:absolute;inset:0;z-index:6;overflow:hidden;color:#fff2cd;touch-action:none}
#map-viewport{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab;outline-offset:-5px}
#map-viewport.dragging{cursor:grabbing}
#map .map-place{position:absolute;display:block;min-width:60px;min-height:60px;padding:0;border:0;border-radius:22px;background:transparent;color:transparent;touch-action:none;transform:translate(-50%,-100%);cursor:pointer;filter:none}
#map .map-place:focus-visible{outline:3px solid #fff3b3;outline-offset:5px}
.map-title{position:absolute;top:max(17px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);font-size:clamp(21px,3vw,32px);font-style:italic;letter-spacing:.02em;white-space:nowrap;text-shadow:0 2px 4px #172b29,0 0 18px #172b29;pointer-events:none}
#map-close,#map-home{position:absolute;border:1px solid #e9d79d99;background:#233e3bdc;color:#fff0c5;box-shadow:0 3px 14px #13272855;border-radius:50%;height:48px;min-width:48px;min-height:48px;font:27px Georgia;touch-action:manipulation}
#map-close{top:max(12px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));display:flex;align-items:center;gap:6px;padding:0 14px;border-radius:25px;font-size:24px}
#map-close span{font-size:15px}
#map-home{right:max(14px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));font-size:31px}
#map-help{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);padding:6px 13px;border-radius:18px;background:#23443bc9;color:#fff1cd;font-size:13px;white-space:nowrap;pointer-events:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:480px){#map-close span{display:none}#map-close{width:48px;padding:0;justify-content:center}.map-title{top:max(23px,env(safe-area-inset-top));font-size:24px}#map-help{left:14px;transform:none;max-width:calc(100% - 88px);font-size:11px;padding:7px 10px}}
@media(prefers-reduced-motion:reduce){#map button{transition:none}}

#spell-blossom{border-radius:12px;width:100%;padding:12px;background:#54415e;margin-top:16px;color:#ffe3ac}#sound-toggle{position:absolute;right:max(16px,env(safe-area-inset-right));top:max(10px,env(safe-area-inset-top));width:44px;min-width:44px;height:44px;min-height:44px;border-radius:50%;font-size:22px;background:#302739ba;z-index:7}#portrait[data-speaker="Pippa"]{background-size:contain;background-position:center}

#quest-hint{font-size:14px;line-height:1.45;margin:15px 0 0;padding-top:12px;border-top:1px solid #b897654a;color:#f2dcae}

#spells{max-height:calc(100% - 140px);overflow-y:auto;overscroll-behavior:contain}

/* Scene controls are available to keyboard and assistive tech without permanent
   button chrome or intercepting the existing canvas touch/drag gestures. */
#scene-actions{position:absolute;inset:0;pointer-events:none;z-index:3}
.scene-action{position:absolute;width:1px;height:1px;min-width:1px;min-height:1px;padding:0;border:0;opacity:0;pointer-events:none;overflow:hidden}
.scene-action:focus-visible{left:50%;top:max(62px,env(safe-area-inset-top));transform:translateX(-50%);width:auto;height:auto;min-height:44px;max-width:calc(100% - 32px);padding:10px 16px;opacity:1;overflow:visible;background:#302739f0;border:1px solid #e8cf91;border-radius:16px;outline-offset:3px}
#replay{border:0;border-top:1px solid #b897654a;width:100%;margin-top:18px;padding-top:12px;background:none;color:#d5c4ce;font-size:14px}
#replay-confirm p{font-size:15px;line-height:1.45;color:#f2dcae}
#replay-confirm button{width:100%;border-radius:12px;margin-top:8px;font-size:15px}
#replay-yes{background:#633f49}
#dialogue{max-height:calc(100% - 72px);overflow-y:auto;overscroll-behavior:contain}
#dialogue:not([hidden]){animation:dialogue-arrive .19s ease-out}
#spells:not([hidden]){animation:spells-arrive .18s ease-out}
@keyframes dialogue-arrive{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes spells-arrive{from{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){#dialogue,#spells{animation:none!important}#toast{transition:none}}

/* Plain-language map help remains readable on narrow screens. */
#map-help{white-space:normal;text-align:center;width:max-content;max-width:calc(100% - 136px)}
@media(max-width:480px){#map-help{max-width:calc(100% - 88px)}}

/* Illustrated four-slot spellbook. The only permanent game action is the wand. */
#spells{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(610px,calc(100% - 28px));max-height:calc(100% - 28px);padding:14px 28px 16px;background:#302639f2;border:1px solid #c3a06d;border-radius:24px;overflow-y:auto;color:#f7e5bd;box-shadow:0 15px 60px #17112299}
#spells:not([hidden]){animation:book-arrive .2s ease-out}
#spells h2{text-align:center;font-size:21px;margin:0 36px 5px;font-style:italic;color:#ffe2a3}
#book-slots{background:url('assets/book.png') center/100% 100% no-repeat;aspect-ratio:1.5;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2% 13%;padding:10% 17% 18%;margin:0 -18px}
#book-slots .spell-slot{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;min-width:48px;min-height:48px;width:auto;height:auto;padding:3px;border:1px solid #ad83594d;border-radius:50%;background:radial-gradient(ellipse,#fff7d499,#e5c08222 70%);color:#684e33;box-shadow:inset 0 0 12px #fef6d56e;margin:0;}
#book-slots .spell-slot svg{height:75%;max-height:94px;width:auto;max-width:100%;filter:drop-shadow(0 2px 1px #79654435)}
#book-slots .spell-slot span{font-size:12px;line-height:1.1;font-weight:bold;margin:0}
#book-slots .spell-slot:disabled{cursor:default;filter:grayscale(1);opacity:.36}
#book-slots .spell-slot:disabled svg,#book-slots .spell-slot:disabled>span{visibility:hidden}
#book-slots .spell-slot:disabled:after{content:'✧';position:absolute;inset:0;display:grid;place-items:center;font:36px Georgia;color:#76583b}
#book-slots .spell-slot[aria-pressed=true]{outline:2px solid #c99c48;box-shadow:0 0 12px #f0cc66}
#spell-list{font-size:13px;line-height:1.35;text-align:center;color:#e4cdaa;margin-top:-12px}
#quest-hint{font-size:14px;line-height:1.35;margin:9px 0 0;padding:8px 0 0;color:#f7e3bc}
.book-settings{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;border-top:1px solid #b897654a;padding-top:6px}
.book-settings #sound-toggle{position:static;flex:0 0 44px}
.book-settings #replay,.book-settings #restore{flex:1;min-width:130px;width:auto;min-height:44px;font-size:12px;line-height:1.2;padding:6px;border:0;background:transparent;margin:0;color:#d9c7ac}
#replay-confirm{padding:10px;border-radius:12px;background:#302639;border:1px solid #b89765}
#portrait[data-speaker="Maus"],#portrait[data-speaker="Schaf"],#portrait[data-speaker="Lämmchen"],#portrait[data-speaker="Alte Eiche"]{background-size:contain;background-position:center}
@keyframes book-arrive{from{opacity:0;transform:translate(-50%,-48%) scale(.98)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@media(max-height:500px) and (orientation:landscape){#spells{width:min(600px,calc(100% - 28px));padding:8px 20px 10px;display:grid;grid-template-columns:58% 42%;grid-template-rows:auto auto auto;gap:3px 0;max-height:calc(100% - 12px)}#spells h2{grid-column:1/-1;font-size:18px;margin:0 40px}#book-slots{grid-column:1;grid-row:2/5;margin:0 3px 0 -12px}#spell-list{grid-column:2;align-self:end;margin:0 3px;font-size:12px}#quest-hint{grid-column:2;line-height:1.3;font-size:13px;margin:4px 3px;padding-top:5px}.book-settings{grid-column:2;margin:0 3px;gap:2px}.book-settings #replay,.book-settings #restore{min-width:100px;min-height:35px;font-size:11px}.book-settings #sound-toggle{flex-basis:35px;height:35px;min-height:35px;min-width:35px;font-size:19px}#replay-confirm{grid-column:1/-1}#replay-confirm p{margin:0;font-size:13px}#replay-confirm button{width:calc(50% - 5px);margin-top:5px;font-size:13px;min-height:40px}#book-slots .spell-slot svg{max-height:72px}#book-slots .spell-slot span{font-size:10px}}
@media(prefers-reduced-motion:reduce){#spells:not([hidden]){animation:none}}

/* A luminous glass bubble framing the exact flower-tipped wand from Raya's cast art. */
#cast{width:94px;height:94px;padding:0;display:grid;place-items:center;border:1px solid #f5d79ddd;background:radial-gradient(circle at 33% 23%,#fce7b15c,transparent 38%),radial-gradient(circle at 60% 58%,#b584785c,#4a3455ed 65%,#251d32f5);box-shadow:inset 0 0 0 4px #d8b78522,inset 0 0 22px #f8d39545,0 5px 22px #17112270,0 0 20px #eeb96529;transition:transform .26s ease,box-shadow .26s ease;transform-origin:center;isolation:isolate;-webkit-tap-highlight-color:transparent}
#cast::before{content:"";position:absolute;inset:7px;border:1px solid #f6ddb85c;border-radius:50%;pointer-events:none}
#cast .wand-art{display:block;width:72px;height:72px;background:url('assets/raya-cast-2.png') -229px -9px/384px 384px no-repeat;clip-path:polygon(19% 79%,17% 72%,37% 47%,38% 26%,49% 9%,74% 7%,91% 28%,91% 52%,68% 65%,50% 58%);mask-image:radial-gradient(ellipse 67% 68% at 56% 35%,#000 35%,transparent 80%);filter:drop-shadow(0 0 6px #ffe3a2);transform:scale(1.32) translate(-2px,2px);transition:transform .3s cubic-bezier(.2,.75,.3,1);pointer-events:none}
@media(hover:hover) and (pointer:fine){#cast:hover{transform:scale(1.09);box-shadow:inset 0 0 0 4px #f8d8a12e,inset 0 0 26px #f8d39566,0 8px 26px #17112270,0 0 28px #ffd48555}#cast:hover .wand-art{transform:scale(1.46) translate(-2px,-1px) rotate(-12deg)}}
#cast:active{transform:scale(.95);filter:brightness(1.13)}
#cast:active .wand-art{transform:scale(1.3) rotate(8deg)}
#cast:focus-visible{outline:3px solid #fff0c4;outline-offset:3px}
#cast[aria-expanded=true]{box-shadow:inset 0 0 0 4px #f8d8a15c,0 0 26px #ffd48555}
@media(max-width:480px){#cast{width:84px;height:84px;right:max(14px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom))}}
@media(max-height:420px){#cast{width:76px;height:76px;bottom:max(12px,env(safe-area-inset-bottom))}#cast .wand-art{transform:scale(1.18)}}
@media(prefers-reduced-motion:reduce){#cast,#cast .wand-art{transition:none}#cast:hover,#cast:active{transform:none}#cast:hover .wand-art,#cast:active .wand-art{transform:scale(1.32) translate(-2px,2px)}}

@media(prefers-reduced-motion:reduce) and (max-height:420px){#cast:hover .wand-art,#cast:active .wand-art{transform:scale(1.18)}}

/* The opening portrait speaks above the atlas; only its accessible audio/text controls are active. */
#dialogue.map-intro{cursor:default;padding-bottom:62px;width:min(760px,calc(100% - 32px))}
#dialogue.map-intro #dialogue-next{font-size:16px;border:1px solid #b58d67;border-radius:16px;padding:8px 16px;min-height:44px}
#dialogue.map-intro #dialogue-next:disabled{opacity:.45;cursor:default}
#map[aria-hidden="true"] #map-help,#map[aria-hidden="true"] #map-home{visibility:hidden}

/* One-tap atlas return, paired with the wand and kept inside phone safe areas. */
#world-map{position:absolute;left:max(16px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));width:72px;height:72px;padding:14px;border-radius:50%;z-index:4;border:1px solid #eddaa6cc;background:radial-gradient(circle at 32% 22%,#a8b99c66,#334d45ee 66%,#20382ff5);box-shadow:inset 0 0 0 4px #d4d3a422,0 5px 22px #17112270;transition:transform .2s ease;-webkit-tap-highlight-color:transparent}
#world-map svg{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 3px #172b2d66)}
#world-map:active{transform:scale(.95)}#world-map:disabled{opacity:.6;cursor:default}
#feed{bottom:max(102px,calc(env(safe-area-inset-bottom) + 88px))}
@media(max-width:480px){#world-map{width:66px;height:66px;left:max(14px,env(safe-area-inset-left));bottom:max(14px,env(safe-area-inset-bottom));padding:12px}}
@media(max-height:420px){#world-map{width:60px;height:60px;bottom:max(12px,env(safe-area-inset-bottom));padding:10px}#feed{bottom:max(82px,calc(env(safe-area-inset-bottom) + 70px))}}
@media(prefers-reduced-motion:reduce){#world-map{transition:none}}

/* One shared illustrated source keeps Zora’s scene and conversation identity exact. */
#portrait[data-speaker="Zora"]{background-size:auto 330%;background-position:46% 12%}

/* Dialogue advances on audio completion; only text fallback exposes a read button. */
#dialogue{cursor:default}#dialogue-next{font-size:14px;border:1px solid #b58d67;border-radius:14px;padding:6px 10px}#dialogue:has(#dialogue-next:not([hidden])){padding-bottom:62px}

/* Cinematic overlay consumes taps without obscuring its canvas artwork. */
#opening-title{position:absolute;inset:0;z-index:9;outline:0;touch-action:none;cursor:default}



/* Chapter one celebration. Decorative movement never competes with the copy. */
#chapter-ending{position:absolute;inset:0;z-index:40;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:auto;padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));background:radial-gradient(ellipse at 50% 35%,#75548b88,#211b35d9 80%);color:#4b3551;touch-action:pan-y}
#chapter-ending[hidden]{display:none}
.victory-card{position:relative;isolation:isolate;flex:none;box-sizing:border-box;width:min(540px,100%);margin:auto;padding:28px 42px 30px;border:1px solid #fff7d1;border-radius:32px;background:radial-gradient(ellipse at 50% 10%,#fffbed 0%,#fbefd9 56%,#ecdcec 100%);box-shadow:0 0 0 6px #fff2c81c,0 22px 70px #140c3288,inset 0 0 0 7px #fff9eb88;text-align:center}
.victory-card:after{content:"";position:absolute;inset:13px;border:1px solid #b592b94d;border-radius:21px;z-index:-1;pointer-events:none}
.victory-star{width:140px;height:140px;margin:-8px auto 3px;filter:drop-shadow(0 9px 12px #d9993566);animation:victory-bounce 3.6s ease-in-out infinite;transform-origin:50% 80%}
.victory-star svg{display:block;width:100%;height:100%}
.victory-eyebrow{display:block;text-transform:uppercase;letter-spacing:.15em;font:600 11px/1.5 system-ui,sans-serif;color:#806181}
#chapter-ending h2{margin:8px 0;font:700 clamp(25px,4.5vw,37px)/1.14 Georgia,serif;letter-spacing:-.035em;color:#53365d}
.victory-divider{color:#b98b48;font:17px/1.5 Georgia,serif;letter-spacing:.2em;margin:10px 0}
#chapter-ending p{margin:0 auto;max-width:410px;font:clamp(16px,2.3vw,19px)/1.55 Georgia,serif}
.victory-next{display:block;margin:18px 0 20px;font:600 11px/1.4 system-ui,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:#806181}
#chapter-ending-close{display:block;width:100%;min-height:50px;padding:12px 22px;border:1px solid #b397bf;border-radius:16px;background:linear-gradient(#775585,#61436e);box-shadow:0 3px 0 #493151;color:#fff5df;font:600 16px/1.3 system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
#chapter-ending-close span{margin-left:12px}#chapter-ending-close:hover{background:#805b90}#chapter-ending-close:focus-visible{outline:3px solid #d39f34;outline-offset:5px}
.victory-rain{position:absolute;inset:0;overflow:hidden;pointer-events:none}.victory-rain i{position:absolute;left:var(--x);top:-30px;color:#ffdc87;font:var(--size) Georgia,serif;opacity:.65;animation:victory-fall var(--duration) linear var(--delay) infinite;text-shadow:0 0 10px #e8b65d55}
@keyframes victory-bounce{0%,100%{transform:translateY(0) rotate(-3deg)}45%{transform:translateY(-9px) rotate(3deg)}65%{transform:translateY(-3px) rotate(1deg)}}
@keyframes victory-fall{from{transform:translateY(-20px) rotate(0deg)}to{transform:translateY(105vh) rotate(110deg)}}
@media(max-width:420px){.victory-card{padding:24px 26px 28px;border-radius:26px}.victory-star{width:116px;height:116px}.victory-next{font-size:10px}#chapter-ending{padding:20px 16px}}
@media(max-height:540px) and (min-width:500px){.victory-card{width:min(660px,100%);padding:20px 28px 22px 174px;min-height:278px}.victory-star{position:absolute;left:24px;top:50%;margin-top:-66px;width:124px;height:124px}.victory-eyebrow{font-size:10px}#chapter-ending h2{font-size:29px}#chapter-ending p{font-size:16px;line-height:1.4}.victory-divider{margin:7px 0}.victory-next{margin:12px 0}.victory-card:after{inset:10px}}
@media(prefers-reduced-motion:reduce){.victory-star,.victory-rain i{animation:none}.victory-rain i{top:calc(8% + var(--x));transform:none;opacity:.5}}

#dialogue-chapter-label{display:block;margin:4px 32px 4px 0;font:600 10px/1.4 system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#e7c792}#dialogue-chapter-label[hidden]{display:none}
@media(max-height:540px) and (min-width:500px){.victory-card{padding:16px 24px 18px 164px;min-height:0}.victory-eyebrow,.victory-divider{display:none}#chapter-ending h2{font-size:27px;margin:0 0 10px}.victory-next{margin:10px 0;font-size:10px}.victory-star{left:22px;width:120px;height:120px;margin-top:-60px}}
@media(max-height:360px) and (min-width:500px){#chapter-ending{padding:12px}.victory-card{padding:12px 20px 14px 132px}.victory-star{left:18px;width:96px;height:96px;margin-top:-48px}#chapter-ending h2{font-size:24px}#chapter-ending p{font-size:14px;line-height:1.35}.victory-next{margin:8px 0;font-size:9px}#chapter-ending-close{min-height:44px;padding:9px 14px;font-size:14px}}
/* Constrain the grid track to the viewport on rotation/window resizing.
   Canvas intrinsic pixels must never enlarge its containing grid row. */
body{grid-template-rows:minmax(0,1fr)}
#game{min-height:0;height:min(100dvh,1069px)}
#stage{min-height:0}

/* An explicit continuation for already-finished chapter-one saves. */
#gorge-journey{position:absolute;left:max(16px,env(safe-area-inset-left));bottom:max(102px,calc(env(safe-area-inset-bottom) + 88px));z-index:4;max-width:calc(100% - 100px);min-height:44px;padding:10px 16px;border-radius:18px;border:1px solid #e9cf91;background:#30483eef;color:#fff1c8;font:600 15px/1.3 system-ui,sans-serif;box-shadow:0 3px 14px #17201c55}
#gorge-journey[hidden]{display:none}
@media(max-height:420px){#gorge-journey{bottom:82px;font-size:14px;padding:8px 12px}}

#c2-choice{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:20px;background:#14251fcc;backdrop-filter:blur(4px)}#c2-choice[hidden]{display:none}#c2-choice>div{max-width:520px;padding:24px;border:1px solid #ddc58f;border-radius:24px;background:#344b3d;color:#fff4d8;box-shadow:0 10px 60px #0005}#c2-choice h2{font:700 26px/1.15 Georgia,serif;margin:0 0 14px}#c2-choice p{font:16px/1.5 system-ui,sans-serif}#c2-choice button{display:block;width:100%;min-height:48px;margin-top:12px;padding:12px;border:1px solid #ecd595;border-radius:15px;background:#efdba5;color:#293d31;font:600 16px/1.3 system-ui,sans-serif}#c2-choice-no{background:transparent!important;color:#fff4d8!important}

.spark-spell{display:block;min-height:48px;width:100%;margin:3px 0 12px;padding:10px;border-radius:15px;border:1px solid #e5be63;background:linear-gradient(120deg,#6c5135,#8a6738);color:#fff0b8;font:600 16px/1.4 Georgia,serif}.spark-spell span{font-size:24px;margin-right:8px;color:#ffe7a0}

/* Isolated checkpoints: small book entry, unmistakable test banner and touch-safe picker. */
#test-panel{position:absolute;inset:0;z-index:150;background:#171526d9;display:grid;place-items:center;padding:12px}#test-panel[hidden],#test-banner[hidden]{display:none}.test-card{box-sizing:border-box;width:min(100%,540px);max-height:calc(100dvh - 24px);overflow:auto;background:#fff5df;color:#382936;border:2px solid #c7a67e;border-radius:20px;padding:20px;box-shadow:0 12px 60px #0008}.test-card h2{margin:4px 0 14px}.test-card label{display:block;margin:14px 0 7px}.test-card select{width:100%;min-height:48px;font:inherit;background:white;color:#382936;border:1px solid #aa8b73;border-radius:9px;padding:8px}.test-card button,#test-banner button{min-height:44px;font:inherit;border:1px solid #a68670;border-radius:10px;background:#fff8ea;color:#382936;padding:8px 12px;margin:5px 3px}.test-card button:focus-visible,.test-card select:focus-visible,#test-banner button:focus-visible{outline:3px solid #6252a1;outline-offset:2px}#test-confirm{margin-top:12px;border-top:1px solid #bba187}#test-banner{position:absolute;top:max(4px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:120;display:flex;align-items:center;justify-content:center;gap:4px;width:max-content;max-width:calc(100% - 12px);padding:3px 8px;border:2px solid #be9d63;border-radius:12px;background:#fff0cdea;color:#382936;font-size:12px}#test-banner button{font-size:12px;margin:0;padding:5px 7px}#test-banner strong{white-space:nowrap}@media(max-width:400px){.test-card{padding:14px}#test-banner{gap:2px;padding:3px 5px}#test-banner button{max-width:132px}}

.book-settings #test-open{min-height:44px;min-width:88px;padding:7px 10px;border:1px solid #b89765;border-radius:9px;background:#49394f;color:#ffedc6;font:inherit;font-size:13px}

#discovery-help{min-height:44px;width:100%;padding:9px 12px;background:#4c3c54;border:1px solid #b89765;border-radius:10px;color:#fff0d0;font:inherit;font-size:13px}#spell-spark-description{font-size:12px;line-height:1.45;margin:8px 3px;color:#eadcc8}#discovery-help:focus-visible{outline:3px solid #ffe2a3;outline-offset:3px}
