:root{
  color-scheme:light;
  --ink:#17365f;
  --night:#182452;
  --night-deep:#101733;
  --blue:#4c9fe1;
  --mint:#70d9cf;
  --mint-soft:#e8fbf8;
  --orange:#ff9a3c;
  --purple:#7355b7;
  --pink:#e64e89;
  --yellow:#ffd34d;
  --paper:#fff;
  --muted:#66778a;
  --line:#d8e6ef;
  --shadow:0 20px 54px rgba(23,54,95,.16);
}
html,body{forced-color-adjust:none;background-color:#eef8fb!important;color:#17365f!important}
html{color-scheme:light!important}
button,input,dialog{color-scheme:light!important}
.fact-table-button{font-size:1.35rem;line-height:1}
.fact-table-dialog{width:min(94vw,760px);max-height:94vh;padding:0;border:0;border-radius:28px;background:transparent;color:#17365f}
.fact-table-dialog::backdrop{background:rgba(7,10,34,.78);backdrop-filter:blur(8px)}
.fact-table-panel{position:relative;overflow:auto;max-height:94vh;padding:24px;background:radial-gradient(circle at 75% 12%,rgba(112,217,207,.22),transparent 30%),linear-gradient(145deg,#fff,#eefaff);border:2px solid #b8e8e3;border-radius:28px;box-shadow:0 24px 70px rgba(4,7,28,.35)}
.fact-table-panel h1{margin:.15rem 0 .75rem;color:#17365f}
.fact-table-close{position:absolute;right:15px;top:13px;width:42px;height:42px;border:0;border-radius:50%;background:#e64e89;color:#fff;font-size:1.8rem;cursor:pointer}
.fact-table-equations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 16px}
.fact-table-equations strong{padding:9px 12px;border-radius:14px;background:#fff;color:#17365f;text-align:center;font-size:clamp(.95rem,3.2vw,1.18rem);box-shadow:0 2px 9px rgba(23,54,95,.1)}
.fact-table-equations strong:nth-child(1){color:#7a5a00;background:#fff6bd}.fact-table-equations strong:nth-child(2){color:#176e68;background:#dcfaf6}.fact-table-equations strong:nth-child(n+3){color:#9a2858;background:#ffe5f0}
.fact-table-wrap{overflow:auto;padding:3px}
.fact-table-grid{width:100%;border-collapse:separate;border-spacing:4px;table-layout:fixed}
.fact-table-grid th,.fact-table-grid td{min-width:34px;height:39px;padding:0;border:0;border-radius:9px;text-align:center;font-weight:900;color:#284968;background:#e5f1f7}
.fact-table-grid th{cursor:pointer;background:#7355b7;color:#fff}
.fact-table-grid th:first-child{cursor:default;background:#e64e89}
.fact-table-grid .is-axis{background:#e64e89;color:#fff;box-shadow:0 0 0 2px #ffd34d}
.fact-table-grid .is-row-path,.fact-table-grid .is-column-path{background:#ffe78a;color:#654c00;box-shadow:inset 0 0 0 2px #f4c942}
.fact-table-grid .is-result{background:#70d9cf;color:#17365f;box-shadow:0 0 0 3px #e64e89,0 0 14px rgba(112,217,207,.75);animation:factPulse 1.4s ease-in-out infinite}
@keyframes factPulse{50%{transform:scale(1.1);box-shadow:0 0 18px rgba(112,217,207,.8)}}
@media(max-width:540px){.fact-table-panel{padding:20px 10px 14px}.fact-table-grid{border-spacing:2px}.fact-table-grid th,.fact-table-grid td{min-width:27px;height:31px;border-radius:7px;font-size:.72rem}.fact-table-equations{grid-template-columns:1fr 1fr}}
@media(min-width:1101px){
  .fact-table-dialog{width:min(92vw,980px);max-height:92vh}
  .fact-table-panel{overflow:hidden;max-height:92vh;padding:18px 18px 16px}
  .fact-table-panel h1{margin:.1rem 0 .45rem;font-size:clamp(1.8rem,2.3vw,2.35rem)}
  .fact-table-close{right:12px;top:10px;width:36px;height:36px;font-size:1.45rem}
  .fact-table-equations{gap:6px;margin:0 0 10px}
  .fact-table-equations strong{padding:7px 10px;border-radius:12px;font-size:1rem}
  .fact-table-wrap{overflow:visible;padding:0}
  .fact-table-grid{border-spacing:3px}
  .fact-table-grid th,.fact-table-grid td{height:30px;min-width:0;border-radius:8px;font-size:.92rem}
}

/* Chapters 12–15: one production-safe scene system, four unmistakably
   different cosmic worlds. Each earned step remains visible. */
.journey-world{--sky1:#25164e;--sky2:#09647c;--ground:#164d61;--accent:#ef4fa0;--accent2:#ffe15c;position:absolute;inset:0;display:none;overflow:hidden;border-radius:inherit;background:radial-gradient(circle at 78% 17%,var(--accent2) 0 2%,transparent 11%),radial-gradient(circle at 17% 22%,rgba(255,255,255,.16),transparent 1.2%),linear-gradient(155deg,var(--sky1),var(--sky2))}
.journey-world[data-theme="crystals"]{--sky1:#080a28;--sky2:#202054;--ground:#24233b;--accent:#76c8f5;--accent2:#bb77ff}
.journey-world[data-theme="rain"]{--sky1:#101937;--sky2:#164e6a;--ground:#172b48;--accent:#49d7ea;--accent2:#ffbd63}
.journey-world[data-theme="fire"]{--sky1:#190d20;--sky2:#561d26;--ground:#20151c;--accent:#ff672f;--accent2:#ffd34d}
.journey-world[data-theme="observatory"]{--sky1:#06081f;--sky2:#1a2251;--ground:#131a38;--accent:#93deff;--accent2:#ffd86d;background:radial-gradient(circle at 76% 16%,rgba(255,216,109,.38),transparent 12%),radial-gradient(circle at 18% 24%,rgba(147,222,255,.14),transparent 18%),linear-gradient(160deg,var(--sky1),var(--sky2))}
.journey-world[data-theme="clouds"]{--sky1:#8fdcff;--sky2:#d8f4ff;--ground:#a8d7f0;--accent:#4fb6e8;--accent2:#ffd76d;background:radial-gradient(circle at 74% 15%,rgba(255,215,109,.55),transparent 14%),linear-gradient(180deg,#a8e4ff 0,#dff7ff 54%,#b4e2f7 100%)}
.journey-world[data-theme="tree"]{--sky1:#16243a;--sky2:#304d2c;--ground:#4e321f;--accent:#8ad36c;--accent2:#ffd46b;background:radial-gradient(circle at 50% 0,rgba(138,211,108,.18),transparent 28%),radial-gradient(circle at 80% 18%,rgba(255,212,107,.24),transparent 15%),linear-gradient(180deg,#21372a 0,#284629 34%,#5b3822 100%)}
[data-theme="observatory"] .journey-stars{background:radial-gradient(circle at 12% 16%,rgba(255,216,109,.16),transparent 16%),linear-gradient(118deg,transparent 0 28%,rgba(147,222,255,.17) 29% 31%,transparent 32% 51%,rgba(255,216,109,.13) 52% 54%,transparent 55% 100%);opacity:1}
[data-theme="observatory"] .journey-stars i{width:8px;height:8px;border-radius:50% 50% 0 50%;transform:rotate(45deg);background:#fff3bb;box-shadow:0 0 12px #93deff}
[data-theme="clouds"] .journey-stars{background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.75),transparent 12%),radial-gradient(circle at 76% 18%,rgba(255,215,109,.42),transparent 10%),linear-gradient(180deg,rgba(255,255,255,.18),transparent 58%);opacity:1}
[data-theme="clouds"] .journey-stars i{width:18px;height:7px;border-radius:999px;background:rgba(255,255,255,.9);box-shadow:0 0 8px rgba(255,255,255,.65);transform:none}
[data-theme="tree"] .journey-stars{background:radial-gradient(circle at 50% 12%,rgba(138,211,108,.42),transparent 20%),radial-gradient(circle at 22% 22%,rgba(255,255,255,.14),transparent 16%),linear-gradient(180deg,rgba(255,212,107,.06),transparent 45%);opacity:1}
[data-theme="tree"] .journey-stars i{width:7px;height:7px;border-radius:50%;background:#ffd46b;box-shadow:0 0 10px #8ad36c}
[data-theme="observatory"] .journey-sky{width:124px;height:124px;right:4%;top:4%;border-width:8px;border-color:var(--accent2);box-shadow:0 0 24px rgba(147,222,255,.45)}
[data-theme="observatory"] .journey-sky:before,[data-theme="observatory"] .journey-sky:after{content:"";position:absolute;inset:18px;border-radius:50%;border:2px solid rgba(147,222,255,.72)}
[data-theme="observatory"] .journey-sky:after{inset:32px;border-color:rgba(255,216,109,.7)}
[data-theme="clouds"] .journey-sky{width:94px;height:94px;right:7%;top:7%;border-width:0;background:radial-gradient(circle at 35% 35%,#fff7c7 0 36%,#ffd76d 37% 62%,transparent 63%);box-shadow:none}
[data-theme="clouds"] .journey-sky b{right:-26px;top:10px;width:52px;height:22px;border-radius:999px;background:rgba(255,255,255,.92);box-shadow:-18px 8px 0 6px rgba(255,255,255,.85),0 0 12px rgba(255,255,255,.55)}
[data-theme="tree"] .journey-sky{width:118px;height:118px;right:6%;top:2%;border-width:0;background:radial-gradient(circle at 50% 42%,rgba(255,255,255,.2),rgba(255,255,255,.04) 48%,transparent 49%),radial-gradient(circle at 50% 50%,#9fe07d 0 18%,#456e34 52%,transparent 54%);box-shadow:0 0 18px rgba(138,211,108,.35)}
[data-theme="tree"] .journey-sky b{right:14px;top:56px;width:28px;height:28px;background:#ffd46b;box-shadow:0 0 14px #ffd46b}
[data-theme="observatory"] .journey-land{left:-2%;right:-2%;bottom:-8%;height:38%;border-radius:32% 32% 0 0;background:linear-gradient(180deg,#1f2856,#111b3d)}
[data-theme="observatory"] .journey-land i,[data-theme="observatory"] .journey-land b,[data-theme="observatory"] .journey-land em{bottom:64%;height:18px;border-radius:999px;background:rgba(255,216,109,.9)}
[data-theme="clouds"] .journey-land{left:-10%;right:-10%;bottom:-10%;height:44%;border-radius:55% 55% 0 0;background:linear-gradient(180deg,rgba(255,255,255,.95),#caeafb 46%,#9fd4ee 100%);box-shadow:0 -10px 24px rgba(255,255,255,.55)}
[data-theme="clouds"] .journey-land i,[data-theme="clouds"] .journey-land b,[data-theme="clouds"] .journey-land em{bottom:72%;height:26px;border-radius:999px;background:rgba(255,255,255,.92);box-shadow:none}
[data-theme="tree"] .journey-land{left:-6%;right:-6%;bottom:-12%;height:50%;border-radius:18% 18% 0 0;background:linear-gradient(180deg,#7a4a28,#4e321f)}
[data-theme="tree"] .journey-land i,[data-theme="tree"] .journey-land b,[data-theme="tree"] .journey-land em{bottom:68%;height:18px;border-radius:16px;background:#6c9f54}
[data-theme="observatory"] .journey-feature{width:104px;height:122px}
[data-theme="observatory"] .journey-feature i{width:26px;height:90px;border-radius:16px;background:#8fcbff;box-shadow:0 0 12px rgba(147,222,255,.5)}
[data-theme="observatory"] .journey-feature b{width:82px;height:18px;bottom:70px;border-radius:999px;background:#ffd86d;box-shadow:0 0 12px rgba(255,216,109,.45)}
[data-theme="observatory"] .journey-feature em{width:56px;height:56px;bottom:18px;border-radius:50%;background:#edf7ff;box-shadow:0 0 14px rgba(147,222,255,.45)}
[data-theme="clouds"] .journey-feature{width:102px;height:98px}
[data-theme="clouds"] .journey-feature i{width:78px;height:38px;border-radius:999px;background:rgba(255,255,255,.96);box-shadow:0 10px 0 rgba(79,182,232,.18),0 0 16px rgba(255,255,255,.45)}
[data-theme="clouds"] .journey-feature b{width:50px;height:50px;bottom:6px;border-radius:50%;background:#ffd76d}
[data-theme="clouds"] .journey-feature em{width:18px;height:66px;bottom:0;border-radius:12px;background:#4fb6e8}
[data-theme="tree"] .journey-feature{width:110px;height:128px}
[data-theme="tree"] .journey-feature i{width:72px;height:72px;border-radius:50%;background:#78bf57;box-shadow:0 0 16px rgba(138,211,108,.4)}
[data-theme="tree"] .journey-feature b{width:28px;height:86px;bottom:0;border-radius:14px;background:#7a4a28}
[data-theme="tree"] .journey-feature em{width:42px;height:42px;bottom:48px;border-radius:50%;background:#ffd46b}
[data-theme="observatory"] .journey-path{height:8px;border-radius:999px;background:linear-gradient(90deg,transparent 0 3%,var(--accent2) 4% 96%,transparent 97%)}
[data-theme="clouds"] .journey-path{height:12px;border-radius:999px;background:linear-gradient(90deg,rgba(255,255,255,.9),#4fb6e8,rgba(255,255,255,.9));box-shadow:0 0 14px rgba(79,182,232,.35)}
[data-theme="tree"] .journey-path{height:12px;border-radius:999px;background:linear-gradient(90deg,#ffd46b,#8ad36c,#ffd46b)}
[data-theme="observatory"] .journey-resident,[data-theme="observatory"] .journey-children{background:#e8f8ff;box-shadow:0 0 12px rgba(147,222,255,.38)}
[data-theme="clouds"] .journey-resident,[data-theme="clouds"] .journey-children{background:#fff;box-shadow:0 0 10px rgba(79,182,232,.28)}
[data-theme="tree"] .journey-resident,[data-theme="tree"] .journey-children{background:#d6f0bf;box-shadow:0 0 10px rgba(138,211,108,.28)}
[data-theme="observatory"] .journey-finale{background:radial-gradient(circle at 52% 56%,rgba(147,222,255,.34),transparent 28%),radial-gradient(circle at 38% 52%,rgba(255,216,109,.24),transparent 18%)}
[data-theme="clouds"] .journey-finale{background:radial-gradient(circle at 58% 54%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 36% 44%,rgba(79,182,232,.24),transparent 18%)}
[data-theme="tree"] .journey-finale{background:radial-gradient(circle at 55% 56%,rgba(138,211,108,.36),transparent 24%),radial-gradient(circle at 38% 50%,rgba(255,212,107,.28),transparent 16%)}
.journey-stars{position:absolute;inset:0;background-image:radial-gradient(#fff 1px,transparent 1.5px);background-size:31px 31px;opacity:.55}
.journey-stars i{position:absolute;width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 9px #fff}.journey-stars i:nth-child(1){left:9%;top:13%}.journey-stars i:nth-child(2){left:35%;top:8%}.journey-stars i:nth-child(3){left:62%;top:24%}.journey-stars i:nth-child(4){right:10%;top:40%}.journey-stars i:nth-child(5){left:48%;top:34%}
[data-theme="flowers"] .journey-stars{background-image:radial-gradient(circle at 13% 18%,#ffe15c 0 2px,transparent 3px),radial-gradient(circle at 72% 12%,#ff91cb 0 2px,transparent 3px),radial-gradient(circle at 43% 34%,#a4fff2 0 1.5px,transparent 2.5px);background-size:79px 71px,113px 97px,47px 53px;opacity:.75}
[data-theme="crystals"] .journey-stars{background:linear-gradient(118deg,transparent 0 35%,rgba(118,200,245,.16) 36% 38%,transparent 39% 57%,rgba(187,119,255,.14) 58% 61%,transparent 62%),radial-gradient(ellipse at 68% 18%,rgba(118,200,245,.32),transparent 25%),radial-gradient(ellipse at 20% 32%,rgba(187,119,255,.24),transparent 28%);opacity:1}
[data-theme="crystals"] .journey-stars i{width:8px;height:8px;border-radius:1px;transform:rotate(45deg);background:#aee7ff;box-shadow:0 0 12px #76c8f5}
[data-theme="rain"] .journey-stars{background:radial-gradient(ellipse at 72% 15%,rgba(255,189,99,.2),transparent 19%),linear-gradient(180deg,rgba(73,215,234,.1),transparent 55%);opacity:1}
[data-theme="rain"] .journey-stars i{width:3px;height:13px;border-radius:60% 60% 70% 70%;background:#bcefff;box-shadow:0 0 9px #49d7ea;transform:rotate(18deg)}
[data-theme="fire"] .journey-stars{background:radial-gradient(ellipse at 22% 17%,rgba(255,103,47,.3),transparent 23%),linear-gradient(145deg,transparent 0 47%,rgba(255,211,77,.13) 48% 49%,transparent 50%);opacity:1}
[data-theme="fire"] .journey-stars i{width:9px;height:4px;border-radius:50%;background:#ff8a45;box-shadow:0 0 12px #ff672f;transform:rotate(-24deg)}
.journey-life{position:absolute;z-index:4;opacity:0;transform:scale(.65) translateY(14px);transition:opacity .7s,transform 1.2s cubic-bezier(.2,.8,.2,1)}
.journey-life.is-earned{opacity:1;transform:none}.journey-life.is-new-reward{animation:journeyReveal 2.3s ease-out forwards}
.journey-sky{right:8%;top:7%;width:88px;height:88px;border:12px solid var(--accent);border-radius:50%;box-shadow:0 0 26px var(--accent)}
.journey-sky b{position:absolute;width:28px;height:28px;right:-38px;top:45px;border-radius:50%;background:var(--accent2);box-shadow:0 0 16px var(--accent2)}
.journey-land{left:-8%;right:-8%;bottom:-12%;height:48%;border-radius:50% 50% 0 0;background:var(--ground);box-shadow:0 -12px 35px color-mix(in srgb,var(--accent) 30%,transparent)}
.journey-land i,.journey-land b,.journey-land em{position:absolute;bottom:70%;width:72px;height:32px;border-radius:50%;background:color-mix(in srgb,var(--accent) 50%,var(--ground))}
.journey-land i{left:18%}.journey-land b{left:48%;width:105px}.journey-land em{right:5%}
.journey-feature{bottom:20%;width:90px;height:110px}.feature-a{left:30%}.feature-b{left:48%;bottom:28%}.feature-c{right:13%;bottom:18%}.feature-d{left:17%;bottom:13%}
.journey-feature i,.journey-feature b,.journey-feature em{position:absolute;left:50%;transform:translateX(-50%);border-radius:55% 45% 55% 45%;background:var(--accent);box-shadow:0 0 15px var(--accent)}
.journey-feature i{width:58px;height:58px;bottom:28px}.journey-feature b{width:42px;height:42px;bottom:2px;background:var(--accent2)}.journey-feature em{width:24px;height:88px;bottom:0;background:color-mix(in srgb,var(--accent) 75%,#fff)}
[data-theme="flowers"] .journey-feature i{border-radius:50% 10% 50% 10%;transform:translateX(-50%) rotate(45deg)}[data-theme="flowers"] .journey-feature b{border-radius:50%}
[data-theme="crystals"] .journey-feature i,[data-theme="crystals"] .journey-feature b,[data-theme="crystals"] .journey-feature em{clip-path:polygon(50% 0,100% 75%,72% 100%,25% 88%,0 72%);border-radius:0}
[data-theme="rain"] .journey-feature i{width:86px;height:42px;border-radius:50% 50% 15% 15%}.journey-world[data-theme="rain"]::after{content:"";position:absolute;inset:-20%;background:repeating-linear-gradient(106deg,transparent 0 28px,rgba(153,233,255,.25) 29px 31px,transparent 32px 52px);animation:journeyRain 4s linear infinite}
[data-theme="fire"] .journey-feature i,[data-theme="fire"] .journey-feature b{clip-path:polygon(50% 0,72% 35%,100% 63%,73% 100%,27% 100%,0 63%,28% 36%);border-radius:0}
.journey-path{left:14%;right:13%;bottom:14%;height:10px;border-radius:50%;background:linear-gradient(90deg,var(--accent2),var(--accent),var(--accent2));box-shadow:0 0 18px var(--accent)}
.journey-resident,.journey-children{bottom:13%;width:42px;height:65px;border-radius:48% 48% 40% 40%;background:color-mix(in srgb,var(--accent) 75%,#fff);box-shadow:0 0 12px var(--accent)}.resident-a{left:57%}.resident-b{left:67%}.journey-children{left:76%;width:58px;height:35px}
.journey-resident:before,.journey-resident:after,.journey-children:before,.journey-children:after{content:"";position:absolute;top:15px;width:9px;height:12px;border-radius:50%;background:#fff;box-shadow:inset 0 -5px #17224b}.journey-resident:before{left:8px}.journey-resident:after{right:8px}.journey-children:before{left:11px;top:9px}.journey-children:after{right:11px;top:9px}
.journey-finale{inset:0;background:radial-gradient(circle at 58% 58%,color-mix(in srgb,var(--accent) 30%,transparent),transparent 42%);mix-blend-mode:screen}
.journey-landing{left:5%;bottom:5%;width:110px;height:35px;border-radius:50%;background:radial-gradient(ellipse,var(--accent),transparent 70%)}.journey-rocket{left:3%;bottom:5%;width:72px}.journey-cat{left:13%;bottom:3%;width:96px}
.journey-departure{left:5%;top:8%;width:45%;height:45%;background:linear-gradient(145deg,transparent 40%,var(--accent2) 47% 50%,transparent 58%);filter:drop-shadow(0 0 8px var(--accent))}
.journey-world.journey-arriving .journey-landing.is-new-reward{animation:journeyLandingPulse 2.5s .55s ease-out both}
.journey-world.journey-arriving .journey-rocket.is-new-reward{z-index:8;animation:journeyRocketArrival 2.25s cubic-bezier(.18,.78,.26,1) both}
.journey-world.journey-arriving .journey-cat.is-new-reward{z-index:9;animation:journeyCatArrives .72s 2.05s ease-out both}
.journey-world.journey-departing .journey-rocket{z-index:8;animation:journeyRocketDeparture 3.3s .15s cubic-bezier(.35,.05,.7,.35) both}
.journey-world.journey-departing .journey-cat{animation:journeyCatBoards .55s ease-in both}
.journey-world.journey-departing .journey-departure{animation:journeyDepartureTrail 3.1s .15s ease-out both}
@keyframes journeyRocketArrival{0%{opacity:0;transform:translate(390px,-280px) rotate(-32deg) scale(.35)}58%{opacity:1;transform:translate(42px,-45px) rotate(-8deg) scale(.88)}82%{transform:translate(0,6px) rotate(2deg)}100%{opacity:1;transform:none}}
@keyframes journeyLandingPulse{0%{opacity:0;transform:scale(.25)}42%{opacity:0;transform:scale(.4)}72%{opacity:1;transform:scale(1.18)}100%{opacity:.72;transform:none}}
@keyframes journeyCatArrives{0%{opacity:0;transform:translate(-38px,-16px) scale(.42)}65%{opacity:1;transform:translate(6px,-3px) scale(1.06)}100%{opacity:1;transform:none}}
@keyframes journeyCatBoards{to{opacity:0;transform:translate(-34px,-18px) scale(.45)}}
@keyframes journeyRocketDeparture{0%{opacity:1;transform:none}18%{transform:translateY(5px) rotate(-2deg)}55%{opacity:1;transform:translate(115px,-85px) rotate(26deg) scale(.78)}100%{opacity:0;transform:translate(390px,-300px) rotate(34deg) scale(.35)}}
@keyframes journeyDepartureTrail{0%{opacity:0;transform:translate(-50px,70px) scale(.35)}32%{opacity:1}100%{opacity:0;transform:translate(230px,-155px) scale(1.25)}}
.reward-scene[class*="reward-chapter-"] .journey-world{z-index:6}.journey-world-map{z-index:3}
.chapter-twelve .story-twelve,.chapter-thirteen .story-thirteen,.chapter-fourteen .story-fourteen,.chapter-fifteen .story-fifteen,.reward-chapter-twelve #rewardJourneyFlowers,.reward-chapter-thirteen #rewardJourneyCrystals,.reward-chapter-fourteen #rewardJourneyRain,.reward-chapter-fifteen #rewardJourneyFire{display:block}
.reward-chapter-twelve>.reward-three-zone,.reward-chapter-twelve>.reward-four-zone,.reward-chapter-twelve>.reward-five-zone,.reward-chapter-twelve>.reward-six-zone,.reward-chapter-twelve>.reward-seven-zone,.reward-chapter-twelve>.reward-eight-zone,.reward-chapter-twelve>.reward-nine-zone,.reward-chapter-twelve>.reward-ten-zone,.reward-chapter-twelve>.reward-eleven-zone,.reward-chapter-twelve>.reward-twelve-zone,.reward-chapter-twelve>.reward-ship,.reward-chapter-twelve>.reward-portal,.reward-chapter-twelve>.result-cat-crop,
.reward-chapter-thirteen>.reward-three-zone,.reward-chapter-thirteen>.reward-four-zone,.reward-chapter-thirteen>.reward-five-zone,.reward-chapter-thirteen>.reward-six-zone,.reward-chapter-thirteen>.reward-seven-zone,.reward-chapter-thirteen>.reward-eight-zone,.reward-chapter-thirteen>.reward-nine-zone,.reward-chapter-thirteen>.reward-ten-zone,.reward-chapter-thirteen>.reward-eleven-zone,.reward-chapter-thirteen>.reward-twelve-zone,.reward-chapter-thirteen>.reward-ship,.reward-chapter-thirteen>.reward-portal,.reward-chapter-thirteen>.result-cat-crop,
.reward-chapter-fourteen>.reward-three-zone,.reward-chapter-fourteen>.reward-four-zone,.reward-chapter-fourteen>.reward-five-zone,.reward-chapter-fourteen>.reward-six-zone,.reward-chapter-fourteen>.reward-seven-zone,.reward-chapter-fourteen>.reward-eight-zone,.reward-chapter-fourteen>.reward-nine-zone,.reward-chapter-fourteen>.reward-ten-zone,.reward-chapter-fourteen>.reward-eleven-zone,.reward-chapter-fourteen>.reward-twelve-zone,.reward-chapter-fourteen>.reward-ship,.reward-chapter-fourteen>.reward-portal,.reward-chapter-fourteen>.result-cat-crop,
.reward-chapter-fifteen>.reward-three-zone,.reward-chapter-fifteen>.reward-four-zone,.reward-chapter-fifteen>.reward-five-zone,.reward-chapter-fifteen>.reward-six-zone,.reward-chapter-fifteen>.reward-seven-zone,.reward-chapter-fifteen>.reward-eight-zone,.reward-chapter-fifteen>.reward-nine-zone,.reward-chapter-fifteen>.reward-ten-zone,.reward-chapter-fifteen>.reward-eleven-zone,.reward-chapter-fifteen>.reward-twelve-zone,.reward-chapter-fifteen>.reward-ship,.reward-chapter-fifteen>.reward-portal,.reward-chapter-fifteen>.result-cat-crop{display:none!important}
.chapter-twelve .story-two,.chapter-twelve .story-three,.chapter-twelve .story-four,.chapter-twelve .story-five,.chapter-twelve .story-six,.chapter-twelve .story-seven,.chapter-twelve .story-eight,.chapter-twelve .story-nine,.chapter-twelve .story-ten,.chapter-twelve .story-eleven,
.chapter-thirteen .story-two,.chapter-thirteen .story-three,.chapter-thirteen .story-four,.chapter-thirteen .story-five,.chapter-thirteen .story-six,.chapter-thirteen .story-seven,.chapter-thirteen .story-eight,.chapter-thirteen .story-nine,.chapter-thirteen .story-ten,.chapter-thirteen .story-eleven,
.chapter-fourteen .story-two,.chapter-fourteen .story-three,.chapter-fourteen .story-four,.chapter-fourteen .story-five,.chapter-fourteen .story-six,.chapter-fourteen .story-seven,.chapter-fourteen .story-eight,.chapter-fourteen .story-nine,.chapter-fourteen .story-ten,.chapter-fourteen .story-eleven,
.chapter-fifteen .story-two,.chapter-fifteen .story-three,.chapter-fifteen .story-four,.chapter-fifteen .story-five,.chapter-fifteen .story-six,.chapter-fifteen .story-seven,.chapter-fifteen .story-eight,.chapter-fifteen .story-nine,.chapter-fifteen .story-ten,.chapter-fifteen .story-eleven{display:none!important}
.story-stage.chapter-two>.story-cat-crop,.story-stage.chapter-three>.story-cat-crop,.story-stage.chapter-four>.story-cat-crop,.story-stage.chapter-five>.story-cat-crop,.story-stage.chapter-six>.story-cat-crop,.story-stage.chapter-seven>.story-cat-crop,.story-stage.chapter-eight>.story-cat-crop,.story-stage.chapter-nine>.story-cat-crop,.story-stage.chapter-ten>.story-cat-crop,.story-stage.chapter-eleven>.story-cat-crop,.story-stage.chapter-twelve>.story-cat-crop,.story-stage.chapter-thirteen>.story-cat-crop,.story-stage.chapter-fourteen>.story-cat-crop,.story-stage.chapter-fifteen>.story-cat-crop{display:none!important}
.story-stage.chapter-two>.story-ship,.story-stage.chapter-three>.story-ship,.story-stage.chapter-four>.story-ship,.story-stage.chapter-five>.story-ship,.story-stage.chapter-six>.story-ship,.story-stage.chapter-seven>.story-ship,.story-stage.chapter-eight>.story-ship,.story-stage.chapter-nine>.story-ship,.story-stage.chapter-ten>.story-ship,.story-stage.chapter-eleven>.story-ship,.story-stage.chapter-twelve>.story-ship,.story-stage.chapter-thirteen>.story-ship,.story-stage.chapter-fourteen>.story-ship,.story-stage.chapter-fifteen>.story-ship,.story-stage.chapter-two>.story-portal,.story-stage.chapter-three>.story-portal,.story-stage.chapter-four>.story-portal,.story-stage.chapter-five>.story-portal,.story-stage.chapter-six>.story-portal,.story-stage.chapter-seven>.story-portal,.story-stage.chapter-eight>.story-portal,.story-stage.chapter-nine>.story-portal,.story-stage.chapter-ten>.story-portal,.story-stage.chapter-eleven>.story-portal,.story-stage.chapter-twelve>.story-portal,.story-stage.chapter-thirteen>.story-portal,.story-stage.chapter-fourteen>.story-portal,.story-stage.chapter-fifteen>.story-portal,.story-stage.chapter-two>.next-planet,.story-stage.chapter-three>.next-planet,.story-stage.chapter-four>.next-planet,.story-stage.chapter-five>.next-planet,.story-stage.chapter-six>.next-planet,.story-stage.chapter-seven>.next-planet,.story-stage.chapter-eight>.next-planet,.story-stage.chapter-nine>.next-planet,.story-stage.chapter-ten>.next-planet,.story-stage.chapter-eleven>.next-planet,.story-stage.chapter-twelve>.next-planet,.story-stage.chapter-thirteen>.next-planet,.story-stage.chapter-fourteen>.next-planet,.story-stage.chapter-fifteen>.next-planet,.story-stage.chapter-two>.story-energy-stream,.story-stage.chapter-three>.story-energy-stream,.story-stage.chapter-four>.story-energy-stream,.story-stage.chapter-five>.story-energy-stream,.story-stage.chapter-six>.story-energy-stream,.story-stage.chapter-seven>.story-energy-stream,.story-stage.chapter-eight>.story-energy-stream,.story-stage.chapter-nine>.story-energy-stream,.story-stage.chapter-ten>.story-energy-stream,.story-stage.chapter-eleven>.story-energy-stream,.story-stage.chapter-twelve>.story-energy-stream,.story-stage.chapter-thirteen>.story-energy-stream,.story-stage.chapter-fourteen>.story-energy-stream,.story-stage.chapter-fifteen>.story-energy-stream{display:none!important}
@keyframes journeyReveal{0%{opacity:0;transform:scale(.3) translateY(30px);filter:brightness(.6)}70%{opacity:1;transform:scale(1.08) translateY(-4px);filter:brightness(1.5)}100%{opacity:1;transform:none;filter:none}}
@keyframes journeyRain{to{transform:translate(60px,80px)}}
@media(max-width:560px){.journey-rocket{width:48px}.journey-cat{width:64px}.journey-feature{scale:.7;transform-origin:50% 100%}.journey-resident,.journey-children{scale:.72;transform-origin:50% 100%}.journey-sky{scale:.7;transform-origin:100% 0}}
@media(prefers-reduced-motion:reduce){
  .journey-world.journey-arriving .journey-landing.is-new-reward,
  .journey-world.journey-arriving .journey-rocket.is-new-reward,
  .journey-world.journey-arriving .journey-cat.is-new-reward{animation-duration:.01ms;animation-delay:0s}
}

*{box-sizing:border-box}
html{min-height:100%;background:#eef8fb}
body{
  margin:0;
  min-height:100vh;
  min-height:100dvh;
  font-family:"Trebuchet MS","Segoe UI",Arial,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(circle at 12% 10%,rgba(112,217,207,.18),transparent 28%),
    radial-gradient(circle at 88% 18%,rgba(115,85,183,.13),transparent 24%),
    linear-gradient(180deg,#fbfeff,#eef8fb);
}
button,a{font:inherit}
button{color:inherit;touch-action:manipulation}

.topbar{
  height:68px;
  padding:8px max(18px,env(safe-area-inset-right)) 8px max(18px,env(safe-area-inset-left));
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  background:rgba(255,255,255,.91);
  border-bottom:1px solid rgba(23,54,95,.12);
  backdrop-filter:blur(15px);
  position:sticky;
  top:0;
  z-index:30;
}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font-weight:900;letter-spacing:.08em}
.brand b{color:#44bcb2;text-shadow:0 1px 0 var(--ink)}
.brand-cat{width:50px;height:50px;display:block;overflow:hidden;border-radius:15px;background:#fff}
.brand-cat img{width:100%;display:block;transform:scale(1.55) translateY(-8%);transform-origin:50% 5%}
.top-actions{display:flex;align-items:center;gap:8px}
.tiny-button{border:1px solid var(--line);background:#fff;border-radius:999px;min-height:40px;padding:0 14px;font-weight:900;cursor:pointer}
.share-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;color:var(--purple);border-color:#d8d1f1;background:#f7f5ff;letter-spacing:.05em}
.share-button svg{width:19px;height:19px;fill:currentColor;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.share-button svg path{fill:none}
.share-button:hover{background:#efebff;transform:translateY(-1px)}
.share-button:focus-visible,.share-close:focus-visible,.share-copy-button:focus-visible{outline:4px solid var(--yellow);outline-offset:3px}
.sound-button{width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:#fff;display:grid;place-items:center;font-size:1.05rem;cursor:pointer;box-shadow:0 5px 12px rgba(23,54,95,.08)}
.sound-button:active{transform:translateY(1px)}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

.app-shell{width:min(1180px,calc(100% - 24px));margin:0 auto;padding:24px 0 45px}
.screen{display:none}
.screen.is-active{display:block;animation:screenIn .35s ease}
.eyebrow{margin:0 0 8px;color:var(--orange);font-size:.78rem;letter-spacing:.13em;font-weight:900}
.primary-button,.secondary-button{border:0;border-radius:999px;min-height:50px;padding:0 24px;font-weight:900;cursor:pointer;transition:.18s ease}
.primary-button{background:var(--ink);color:#fff;box-shadow:0 9px 20px rgba(23,54,95,.22)}
.secondary-button{background:#eef4f8;color:var(--ink);border:1px solid var(--line)}
.primary-button:hover,.secondary-button:hover{transform:translateY(-2px)}
.text-button{border:0;background:transparent;color:var(--purple);font-weight:900;min-height:46px;padding:0 14px;cursor:pointer}

/* Intro */
.story-card{min-height:680px;background:#fff;border:1px solid var(--line);border-radius:34px;box-shadow:var(--shadow);overflow:hidden;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(390px,.85fr)}
.story-copy{min-width:0;padding:clamp(30px,4vw,54px);display:flex;flex-direction:column;justify-content:center}
.story-copy h1,.map-head h1{font-size:clamp(2.5rem,4.5vw,4.6rem);line-height:.98;margin:0 0 16px}
.story-text{font-size:1.08rem!important;margin:0 0 20px}
.story-copy>p:not(.eyebrow){font-size:1.16rem;line-height:1.5;color:var(--muted);max-width:660px}
.table-settings{min-width:0;padding:16px 18px 13px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,#fbfdff,#f2f6ff)}
.settings-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
.settings-heading strong{font-size:1.03rem}
.settings-heading span{min-width:0;color:var(--purple);font-size:.82rem;font-weight:900;text-align:right;overflow-wrap:anywhere}
.rocket-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.rocket-choice{position:relative;height:78px;border:0;background:transparent;padding:0;cursor:pointer;filter:drop-shadow(0 5px 5px rgba(23,54,95,.13));transition:transform .18s ease,filter .18s ease}
.rocket-choice:hover{transform:translateY(-3px)}
.rocket-body{position:absolute;z-index:2;left:50%;top:3px;transform:translateX(-50%);width:48px;height:58px;border:3px solid #9ba8ba;border-radius:50% 50% 18px 18px;background:#e7edf3;color:#6d7887;display:grid;place-items:center;box-shadow:inset -7px -8px 0 rgba(23,54,95,.06)}
.rocket-body:before{content:"";position:absolute;left:-9px;right:-9px;bottom:2px;height:20px;border:3px solid #9ba8ba;border-top:0;border-radius:0 0 18px 18px;z-index:-1}
.rocket-body strong{font-size:.92rem}
.rocket-choice i{position:absolute;z-index:1;left:50%;bottom:3px;transform:translateX(-50%);width:18px;height:25px;background:#b7c0ca;clip-path:polygon(50% 100%,0 0,100% 0);transition:.18s ease}
.rocket-choice.is-selected{filter:drop-shadow(0 7px 6px rgba(115,85,183,.24))}
.rocket-choice.is-selected .rocket-body{border-color:var(--ink);background:linear-gradient(150deg,#8d75e4,var(--purple));color:#fff;box-shadow:inset -8px -9px 0 rgba(23,54,95,.12)}
.rocket-choice.is-selected .rocket-body:before{border-color:var(--ink);background:var(--mint)}
.rocket-choice.is-selected i{background:linear-gradient(180deg,var(--orange),var(--yellow))}
.rocket-choice.refuse{animation:rocketRefuse .35s ease}
.settings-feedback{min-height:18px;margin:8px 0 0!important;font-size:.78rem!important;line-height:1.25!important}
.operation-box{margin:17px 0 0}
.operation-box>strong{display:block;margin-bottom:10px}
.operation-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.operation-button{min-width:0;min-height:62px;border:1px solid var(--line);border-radius:18px;background:#f5f9fc;padding:7px 9px;font-weight:900;cursor:pointer;box-shadow:0 5px 12px rgba(23,54,95,.08);transition:.18s ease}
.operation-button span{display:block;color:var(--purple);font-size:1.55rem;line-height:1;margin-bottom:3px}
.operation-button:hover{transform:translateY(-2px)}
.operation-button.active{color:#fff;background:linear-gradient(145deg,#8d75e4,var(--purple));border-color:var(--purple);box-shadow:0 8px 18px rgba(115,85,183,.25)}
.operation-button.active span{color:var(--yellow)}
.speed-box{margin:17px 0}
.speed-box strong{display:block;margin-bottom:10px}
.speed-options{display:flex;gap:8px;flex-wrap:wrap}
.speed-button{border:1px solid var(--line);background:#f5f9fc;border-radius:999px;min-height:44px;padding:0 17px;font-weight:900;cursor:pointer}
.speed-button.active{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:0 7px 16px rgba(115,85,183,.24)}
.start-button{align-self:flex-start;min-width:210px}
.story-scene{position:relative;min-height:680px;overflow:hidden;background:radial-gradient(circle at 72% 24%,rgba(128,225,255,.22),transparent 26%),linear-gradient(165deg,#283b7a,#171d4b 58%,#5d3f8d)}
.story-scene:after{content:"";position:absolute;left:-15%;right:-15%;bottom:-25%;height:48%;border-radius:50%;background:linear-gradient(180deg,#6a55ae,#3f347b);box-shadow:0 -16px 50px rgba(112,217,207,.16)}
.intro-moon{position:absolute;width:135px;height:135px;border-radius:50%;background:#fff1a8;right:48px;top:52px;box-shadow:0 0 0 18px rgba(255,255,255,.08),0 0 70px rgba(255,222,109,.42)}
.intro-orbit{position:absolute;width:390px;height:230px;border:3px dashed rgba(255,255,255,.34);border-radius:50%;left:32px;bottom:92px;transform:rotate(-14deg)}
.intro-stars{position:absolute;inset:56px 30px auto;color:#fff;font-size:1.9rem;word-spacing:1.25em;animation:twinkle 1.8s ease-in-out infinite alternate}
.intro-stars span{color:var(--yellow)}
.story-cat-crop{position:absolute;z-index:3;width:285px;height:250px;left:50%;bottom:25px;transform:translateX(-50%);overflow:hidden}
.story-cat{width:100%;display:block;transform:scale(1.42) translateY(-9%);transform-origin:50% 4%;filter:drop-shadow(0 16px 12px rgba(8,15,47,.32));animation:catBob 1.8s ease-in-out infinite alternate}
.sign{position:absolute;z-index:5;right:42px;bottom:62px;width:76px;height:76px;border-radius:22px;background:var(--yellow);border:5px solid var(--ink);display:grid;place-items:center;font-size:3rem;font-weight:900;transform:rotate(7deg);box-shadow:0 10px 25px rgba(8,15,47,.3)}

/* Level map */
.map-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;margin:12px 0 20px}
.map-head h1{font-size:clamp(2.4rem,5vw,4.5rem);margin-bottom:8px}
.map-head p{color:var(--muted);font-size:1.08rem}
.energy-panel{background:#fff;border:1px solid var(--line);border-radius:22px;padding:13px 18px;display:flex;gap:14px;align-items:center;box-shadow:0 8px 22px rgba(23,54,95,.08)}
.energy-panel span{color:var(--muted);font-weight:800}
.energy-panel strong{font-size:1.3rem}
.map-board{height:470px;position:relative;border-radius:34px;overflow:hidden;background:radial-gradient(circle at 80% 16%,rgba(112,217,207,.3),transparent 18%),linear-gradient(145deg,#263e7f,#171d4c 62%,#5f448d);border:1px solid rgba(23,54,95,.18);box-shadow:var(--shadow)}
.map-board:before{content:"";position:absolute;inset:auto -100px -220px -100px;height:350px;border-radius:50%;background:#44377c;box-shadow:310px -65px 0 #57438d,670px -20px 0 #372d6b}
.map-board:after{content:"";position:absolute;left:45px;top:38px;width:90px;height:90px;border-radius:50%;background:#fff1a8;box-shadow:0 0 0 18px rgba(255,255,255,.08),0 0 55px rgba(255,211,77,.25)}
.map-sparkles{position:absolute;top:35px;left:20%;right:5%;color:rgba(255,255,255,.78);font-size:1.6rem;letter-spacing:.4em}
.map-line{position:absolute;inset:0;width:100%;height:100%;z-index:2}
.level-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);z-index:5;width:126px;height:126px;border-radius:50%;border:7px solid #fff;background:var(--orange);color:#fff;box-shadow:0 12px 0 rgba(12,20,55,.32),0 16px 30px rgba(7,13,41,.35);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer}
.level-node strong{font-size:2.1rem;line-height:1}
.level-node small{font-weight:900;margin-top:5px}
.node-number{position:absolute;left:-3px;top:-5px;width:35px;height:35px;border-radius:50%;background:var(--ink);display:grid;place-items:center;border:4px solid #fff}
.level-node.locked{filter:grayscale(.85);opacity:.68;cursor:not-allowed}
.level-node.completed{background:var(--purple)}
.level-node.completed:after{content:"★";position:absolute;right:-5px;top:-3px;width:38px;height:38px;border-radius:50%;background:var(--yellow);color:var(--ink);border:4px solid #fff;display:grid;place-items:center;font-size:1.05rem;font-weight:900}
.map-rocket{position:absolute;z-index:4;right:3.5%;bottom:2%;width:125px}
.map-rocket svg{width:100%;filter:drop-shadow(0 12px 8px rgba(7,13,41,.42))}
.map-tip{text-align:center;font-weight:900;color:var(--muted)}

/* Game */
.battle-screen{width:min(1040px,100%);margin:0 auto}
.battle-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;margin-bottom:12px}
.back-button{justify-self:start;border:1px solid var(--line);background:#fff;border-radius:999px;min-height:43px;padding:0 16px;font-weight:900;cursor:pointer}
.battle-title-wrap{text-align:center}
.battle-title-wrap span{color:var(--muted);font-weight:900;font-size:.82rem}
.battle-title-wrap h1{margin:0;font-size:2.15rem;line-height:1}
.progress-pill{justify-self:end;background:#fff;border:1px solid var(--line);border-radius:18px;padding:9px 13px;display:flex;gap:9px;align-items:center}
.progress-pill>span{color:var(--muted);font-weight:800}
.progress-pill strong{font-size:1.05rem;white-space:nowrap}
.progress-pill strong:first-letter{color:var(--yellow)}
.play-grid{display:grid;grid-template-columns:minmax(500px,610px) minmax(300px,350px);justify-content:center;align-items:stretch;gap:24px}
.scene-column{min-width:0;display:grid;grid-template-rows:auto 1fr;gap:12px}
.battle-stage{--level-accent:#7f68d9;position:relative;width:100%;height:540px;min-height:0;border-radius:34px;overflow:hidden;background:radial-gradient(circle at 25% 28%,rgba(100,171,255,.22),transparent 26%),radial-gradient(circle at 78% 72%,color-mix(in srgb,var(--level-accent) 28%,transparent),transparent 30%),linear-gradient(180deg,#111b45,#1c275d 58%,#433578);box-shadow:0 20px 54px rgba(19,29,74,.28);border:1px solid rgba(255,255,255,.22);isolation:isolate}
.battle-stage:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 12%,#fff 0 1px,transparent 2px),radial-gradient(circle at 72% 17%,#fff 0 1.5px,transparent 2.5px),radial-gradient(circle at 42% 68%,rgba(255,255,255,.8) 0 1px,transparent 2px),radial-gradient(circle at 88% 48%,rgba(255,255,255,.8) 0 1px,transparent 2px);background-size:92px 112px,137px 151px,121px 103px,173px 139px;opacity:.48;z-index:0}
.battle-stage:after{content:"";position:absolute;left:-12%;right:-12%;bottom:-15%;height:34%;border-radius:50%;background:linear-gradient(180deg,#6952a9,#3b2e72);box-shadow:0 -18px 60px rgba(112,217,207,.12);z-index:1}
.space-glow{position:absolute;border-radius:50%;filter:blur(2px);z-index:0}
.glow-a{width:180px;height:180px;background:rgba(112,217,207,.09);left:-60px;top:22%}
.glow-b{width:220px;height:220px;background:rgba(229,97,160,.08);right:-80px;top:48%}
.star-curtain{position:absolute;z-index:3;left:3%;right:3%;top:var(--shower-top,-39%);height:40%;transition:top .12s linear;pointer-events:none;filter:drop-shadow(0 0 8px rgba(255,211,77,.44));will-change:top,transform}
.star-curtain span{position:absolute;left:var(--x);top:var(--y);font-size:var(--size);color:var(--yellow);line-height:1;animation:starDrift 1.05s var(--delay) ease-in-out infinite alternate;will-change:transform,opacity}
.star-curtain span:nth-child(3n){color:#fff}
.star-curtain span:nth-child(4n){color:#8fe8e0}
.star-curtain.repelled{animation:showerRepel .48s ease-out}
.star-curtain.impact span{animation:starImpact .42s ease-in both}
.impact-flash{position:absolute;inset:0;z-index:10;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 72%,rgba(255,233,142,.94),rgba(255,154,60,.25) 28%,transparent 60%)}
.battle-stage.is-impact .impact-flash{animation:impactFlash .65s ease-out}
.shower-meter{position:absolute;z-index:9;right:14px;top:18px;bottom:23px;width:10px;border-radius:999px;background:rgba(255,255,255,.24);box-shadow:inset 0 0 0 1px rgba(255,255,255,.32),0 0 14px rgba(112,217,207,.18)}
.shower-meter span{display:block;width:100%;height:0;border-radius:999px;background:linear-gradient(180deg,var(--mint),var(--yellow),var(--orange));transition:height .12s linear}
.shower-meter i{position:absolute;left:50%;top:-9px;transform:translateX(-50%);color:var(--yellow);font-style:normal;font-size:18px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3));transition:top .12s linear}
.shower-meter:after{content:"";position:absolute;left:50%;bottom:-13px;width:20px;height:7px;border-radius:50%;background:#ff9a3c;transform:translateX(-50%);box-shadow:0 0 12px rgba(255,154,60,.75)}
.question-card{position:relative;z-index:8;width:100%;background:rgba(255,255,255,.97);border:3px solid #fff;border-radius:28px;padding:12px 22px;text-align:center;box-shadow:0 12px 30px rgba(23,54,95,.16);transition:border-color .16s,box-shadow .16s}
.question-label{margin:0;color:var(--muted);font-size:.84rem;font-weight:900}
.mobile-progress-pill{display:none}
.equation{display:flex;justify-content:center;align-items:center;gap:10px;font-size:clamp(2.7rem,5vw,4.7rem);font-weight:900;line-height:1.04}
.answer-slot{min-width:82px;color:var(--purple);border-bottom:6px solid var(--mint)}
.feedback{min-height:22px;margin:5px 0 0;font-weight:900}
.feedback.good{color:#18855d}
.feedback.bad{color:#c34a3f}
.question-card.is-correct{border-color:var(--mint);box-shadow:0 0 0 7px rgba(112,217,207,.18),0 12px 30px rgba(23,54,95,.16)}
.question-card.is-wrong{border-color:#ff7d6d;animation:cardShake .34s ease}
.question-card.is-wrong .answer-slot{color:#c34a3f;border-color:#ff7d6d}
.question-card.is-wrong .answer-slot.revealed-answer{transform:scale(1.13);text-shadow:0 3px 0 rgba(195,74,63,.12)}
.hero-zone{position:absolute;z-index:6;left:50%;bottom:1.5%;width:47%;max-width:235px;height:36%;transform:translateX(-50%)}
.hero-cat-crop{position:absolute;left:0;right:0;top:0;height:89%;overflow:hidden}
.hero-cat{width:100%;display:block;transform:scale(1.25) translateY(-10%);transform-origin:50% 4%;filter:drop-shadow(0 15px 11px rgba(7,13,41,.42));transition:transform .28s ease,filter .28s ease}
.hero-shadow{position:absolute;left:23%;right:23%;bottom:4%;height:10%;border-radius:50%;background:rgba(7,13,41,.38);filter:blur(5px)}
.hero-spark{position:absolute;right:4%;top:2%;font-size:2.3rem;color:var(--yellow);opacity:0;transform:scale(.4)}
.hero-zone.celebrate .hero-cat{animation:heroCelebrate .5s ease}
.hero-zone.celebrate .hero-spark{animation:sparkPop .55s ease}
.hero-zone.impact .hero-cat{animation:heroDuck .55s ease forwards;filter:drop-shadow(0 0 15px rgba(255,211,77,.7))}

.answer-panel{min-width:0;border:1px solid var(--line);border-radius:30px;background:rgba(255,255,255,.92);box-shadow:var(--shadow);padding:24px;display:flex;flex-direction:column;justify-content:center}
.answer-panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}
.answer-panel-head span{font-size:1.15rem;font-weight:900}
.keypad{width:100%;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.keypad button{min-height:76px;border:1px solid var(--line);border-radius:20px;background:#fff;font-weight:900;font-size:1.55rem;box-shadow:0 7px 15px rgba(23,54,95,.1);cursor:pointer}
.keypad button:active{transform:translateY(2px);background:var(--mint-soft)}
.keypad .key-clear{background:#fff1db;color:#8b5c12}
.keypad .key-clear-all{background:#f1effb;color:var(--purple)}
.active-tables-card{margin-top:18px;border-radius:18px;background:var(--mint-soft);padding:12px 14px;display:grid;gap:9px}
.active-tables-card div{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.active-tables-card span{color:var(--muted);font-size:.78rem;font-weight:800}
.active-tables-card strong{color:var(--purple);font-size:.94rem;text-align:right}

/* Results and dialogs */
.result-card{max-width:720px;margin:40px auto;background:#fff;border:1px solid var(--line);border-radius:34px;padding:clamp(32px,7vw,72px);text-align:center;box-shadow:var(--shadow)}
.result-animation{height:190px;position:relative;overflow:hidden}
.crystal{position:absolute;z-index:3;left:20%;top:5px;font-size:7rem;color:var(--yellow);filter:drop-shadow(0 8px 8px rgba(23,54,95,.22));animation:crystalSpin 1.5s ease-in-out infinite alternate}
.result-cat-crop{position:absolute;width:205px;height:180px;right:15%;bottom:-4px;overflow:hidden}
.result-cat{width:100%;display:block;transform:scale(1.42) translateY(-9%);transform-origin:50% 4%}
.result-card h1{font-size:clamp(2.4rem,6vw,4.4rem);margin:0 0 13px}
.result-card>p:not(.eyebrow){color:var(--muted);font-size:1.08rem}
.result-stats{display:grid;grid-template-columns:1fr auto 1fr auto;gap:13px;align-items:center;background:var(--mint-soft);border-radius:18px;padding:15px 18px;margin:24px 0}
.result-stats span{color:var(--muted);font-weight:800}
.result-stats strong{font-size:1.2rem}
.result-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
.retry-dialog,.final-dialog,.share-dialog{border:0;border-radius:30px;padding:0;width:min(560px,calc(100% - 22px));box-shadow:0 30px 90px rgba(23,54,95,.35)}
.retry-dialog::backdrop,.final-dialog::backdrop,.share-dialog::backdrop{background:rgba(16,39,67,.68);backdrop-filter:blur(5px)}
.retry-content,.final-content{text-align:center;padding:34px}
.share-content{position:relative;padding:34px;text-align:center;background:linear-gradient(180deg,#fff,#f6fbfd)}
.share-close{position:absolute;right:15px;top:13px;width:40px;height:40px;border:0;border-radius:50%;background:#edf4f7;color:var(--ink);font-size:1.65rem;line-height:1;cursor:pointer}
.share-symbol{width:76px;height:76px;margin:0 auto 15px;border-radius:24px;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,var(--purple),#9b7ce2);box-shadow:0 12px 24px rgba(115,85,183,.25)}
.share-symbol svg{width:38px;height:38px;fill:currentColor;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.share-symbol svg path{fill:none}
.share-content .eyebrow{margin-bottom:5px}
.share-content h2{margin:0 0 9px;font-size:2rem}
.share-content>p:not(.eyebrow):not(.share-status):not(.share-note){margin:0 auto 20px;color:var(--muted);line-height:1.45}
.share-link-row{display:flex;gap:8px;align-items:stretch}
.share-link-row input{min-width:0;flex:1;border:1px solid var(--line);border-radius:15px;padding:0 13px;background:#fff;color:var(--ink);font-weight:800}
.share-copy-button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}
.share-status{min-height:22px;margin:9px 0 0;color:#23857d;font-weight:900}
.share-note{margin:9px 0 0;color:var(--muted);font-size:.82rem;font-weight:800}
.retry-visual{width:150px;height:120px;margin:0 auto 12px;position:relative}
.retry-visual>span{position:absolute;z-index:3;right:0;top:0;color:var(--yellow);font-size:3.2rem;animation:twinkle 1s ease-in-out infinite alternate}
.retry-cat-crop{position:absolute;width:125px;height:112px;left:0;bottom:0;overflow:hidden}
.retry-cat-crop img{width:100%;display:block;transform:scale(1.42) translateY(-9%);transform-origin:50% 4%}
.retry-content h2,.final-content h2{font-size:2rem;margin:0 0 12px}
.retry-content p,.final-content p{color:var(--muted);line-height:1.5}
.retry-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.launch-scene{height:180px;border-radius:24px;background:linear-gradient(180deg,#17365f,#7355b7);overflow:hidden;position:relative;margin-bottom:22px}
.launch-stars{color:#fff;letter-spacing:.5em;padding-top:20px}
.launch-rocket{font-size:5.5rem;position:absolute;left:50%;bottom:14px;transform:translateX(-50%);animation:rocketFloat 1s ease-in-out infinite alternate}

@keyframes screenIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes catBob{to{transform:scale(1.42) translateY(-12%) rotate(1deg)}}
@keyframes twinkle{to{opacity:.55;transform:scale(.97)}}
@keyframes starDrift{to{transform:translate(var(--drift),22px) scale(.82);opacity:.5}}
@keyframes showerRepel{45%{transform:translateY(-52px) scale(.98)}100%{transform:none}}
@keyframes starImpact{to{transform:translateY(42px) scale(1.4);opacity:.25}}
@keyframes impactFlash{30%{opacity:1}100%{opacity:0}}
@keyframes cardShake{20%{transform:translateX(-3%)}40%{transform:translateX(3%)}60%{transform:translateX(-2%)}80%{transform:translateX(2%)}}
@keyframes heroCelebrate{45%{transform:scale(1.25) translateY(-14%) rotate(-2deg)}100%{transform:scale(1.25) translateY(-10%)}}
@keyframes sparkPop{55%{opacity:1;transform:scale(1.25) rotate(12deg)}100%{opacity:0;transform:scale(.8) rotate(30deg)}}
@keyframes heroDuck{to{transform:scale(1.25) translateY(-5%) scaleY(.91)}}
@keyframes crystalSpin{to{transform:rotate(12deg) scale(1.08)}}
@keyframes rocketFloat{to{transform:translate(-50%,-10px) rotate(3deg)}}
@keyframes rocketRefuse{25%{transform:translateX(-5px)}50%{transform:translateX(5px)}75%{transform:translateX(-3px)}}

@media(max-width:880px){
  .story-card{grid-template-columns:1fr}
  .story-scene{min-height:430px}
  .story-copy{padding:38px 28px}
  .battle-screen{width:min(540px,100%)}
  .play-grid{display:block}
  .scene-column{gap:8px}
  .answer-panel{margin-top:8px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
  .answer-panel-head,.active-tables-card{display:none}
  .keypad{margin-top:0}
}

@media(max-width:620px){
  .topbar{height:58px;padding-top:5px;padding-bottom:5px}
  .brand-cat{width:45px;height:45px}
  .reset-progress-button{display:none!important}
  .app-shell{width:calc(100% - 12px);padding:8px 0 24px}
  .story-card{border-radius:24px}
  .story-copy{padding:28px 20px}
  .story-copy h1{font-size:2.15rem;overflow-wrap:anywhere}
  .story-copy>p:not(.eyebrow){font-size:1rem}
  .story-text{margin-bottom:16px!important}
  .table-settings{padding:13px 11px 10px;border-radius:20px}
  .settings-heading{align-items:flex-start;margin-bottom:9px}
  .settings-heading strong{font-size:.92rem}
  .settings-heading span{font-size:.72rem;max-width:44%}
  .rocket-grid{gap:5px}
  .rocket-choice{height:66px}
  .rocket-body{width:40px;height:50px;border-width:2px}
  .rocket-body:before{left:-7px;right:-7px;height:17px;border-width:2px}
  .rocket-choice i{width:15px;height:21px}
  .settings-feedback{margin-top:6px!important}
  .operation-box{margin-top:13px}
  .operation-box>strong{margin-bottom:7px}
  .operation-options{gap:5px}
  .operation-button{min-height:54px;border-radius:15px;padding:6px 3px;font-size:.78rem}
  .operation-button span{font-size:1.35rem;margin-bottom:2px}
  .speed-box{margin:13px 0}
  .speed-options{gap:6px}
  .speed-button{min-height:40px;padding:0 13px;font-size:.89rem}
  .start-button{width:100%;min-height:48px}
  .story-scene{min-height:345px}
  .story-cat-crop{width:230px;height:205px}
  .intro-moon{width:100px;height:100px;right:25px;top:35px}
  .sign{right:26px;bottom:40px;width:58px;height:58px;font-size:2.2rem}
  .battle-top{position:relative;display:flex;justify-content:flex-start;margin-bottom:6px;min-height:42px}
  .battle-title-wrap{position:absolute;left:145px;right:88px;top:50%;transform:translateY(-50%);pointer-events:none}
  .battle-title-wrap span{display:none}
  .battle-title-wrap h1{font-size:clamp(1rem,5vw,1.35rem);white-space:nowrap}
  .back-button{padding:0 13px;min-height:38px;font-size:.86rem;z-index:2}
  .battle-top>.progress-pill{display:none}
  .battle-stage{height:clamp(320px,41dvh,400px);min-height:320px;border-radius:24px}
  .question-card{width:100%;padding:27px 14px 8px;border-radius:22px}
  .question-label{display:none}
  .mobile-progress-pill{position:absolute;right:9px;top:6px;display:flex;align-items:center;gap:4px;border-radius:999px;background:#f3f0ff;padding:3px 8px;color:var(--ink);font-size:.82rem;line-height:1;box-shadow:0 3px 9px rgba(23,54,95,.09)}
  .mobile-progress-pill>span{color:var(--yellow);font-size:1rem;text-shadow:0 1px 1px rgba(23,54,95,.2)}
  .mobile-progress-pill strong{white-space:nowrap}
  .equation{font-size:clamp(2.35rem,12vw,3.45rem);gap:7px}
  .answer-slot{min-width:61px;border-width:5px}
  .feedback{min-height:18px;margin-top:2px;font-size:.8rem}
  .hero-zone{width:45%;height:40%;bottom:.5%}
  .hero-cat-crop{height:94%}
  .shower-meter{right:8px;top:12px;bottom:12px}
  .keypad{gap:6px}
  .keypad button{min-height:43px;border-radius:13px;font-size:1.18rem}
  .result-stats{grid-template-columns:1fr auto}
  .result-cat-crop{right:4%}
  .crystal{left:5%}
}

@media(max-width:370px){
  .story-copy{padding:24px 15px}
  .speed-button{padding:0 12px}
  .battle-title-wrap{display:none}
  .battle-stage{height:315px;min-height:315px}
  .keypad button{min-height:40px}
}

@media(min-width:1101px){
  #battleScreen.is-active{
    width:min(960px,100%);
    min-height:0;
    margin:0 auto;
  }
  .battle-screen{width:min(960px,100%)}
  .battle-top{
    gap:10px;
    margin-bottom:7px;
    align-items:center;
  }
  .back-button{min-height:38px;padding:0 14px;font-size:.9rem}
  .battle-title-wrap span{font-size:.7rem}
  .battle-title-wrap h1{font-size:clamp(1.75rem,2.6vw,2.25rem)}
  .progress-pill{padding:7px 11px;border-radius:16px}
  .progress-pill>span{font-size:.86rem}
  .play-grid{
    grid-template-columns:minmax(0,620px) minmax(250px,290px);
    gap:14px;
    align-items:start;
    justify-content:center;
  }
  .scene-column{gap:7px}
  .question-card{padding:7px 14px 6px;border-radius:21px}
  .question-label{font-size:.74rem}
  .equation{font-size:clamp(2.15rem,3.5vw,3rem);gap:7px}
  .answer-slot{min-width:62px;border-bottom-width:4px}
  .feedback{min-height:16px;margin-top:1px;font-size:.8rem}
  .battle-stage{
    height:285px;
    min-height:285px;
    border-radius:23px;
  }
  .hero-zone{
    left:50%;
    bottom:2%;
    width:34%;
    max-width:190px;
    height:54%;
  }
  .hero-cat-crop{
    inset:0;
    height:100%;
    overflow:visible;
    display:flex;
    align-items:flex-end;
    justify-content:center;
  }
  .hero-cat{
    width:auto;
    height:100%;
    max-width:100%;
    object-fit:contain;
    transform:none;
    transform-origin:50% 100%;
  }
  .hero-shadow{left:18%;right:18%;bottom:1%;height:8%}
  .hero-zone.celebrate .hero-cat{animation:heroCelebrateDesktop .5s ease}
  .hero-zone.impact .hero-cat{animation:heroDuckDesktop .55s ease forwards}
  .answer-panel{
    padding:13px;
    border-radius:21px;
    justify-content:flex-start;
  }
  .answer-panel-head{margin-bottom:7px}
  .answer-panel-head span{font-size:.94rem}
  .choice-grid{gap:8px}
  .choice-grid button{
    min-height:64px;
    border-radius:16px;
    font-size:1.45rem;
  }
  .keypad{gap:7px}
  .keypad button{min-height:48px;border-radius:14px;font-size:1.12rem}
  .active-tables-card{margin-top:10px;padding:9px 10px}
  .top-actions{gap:6px}
  .top-actions .tiny-button{padding:0 12px}
  .install-button{max-width:165px}
}
@keyframes heroCelebrateDesktop{
  45%{transform:translateY(-8px) rotate(-2deg) scale(1.04)}
  100%{transform:none}
}
@keyframes heroDuckDesktop{
  to{transform:translateY(4px) scaleY(.93)}
}

@media(orientation:landscape) and (max-height:520px){
  .battle-screen{width:min(920px,100%)}
  .play-grid{display:grid;grid-template-columns:minmax(390px,1.2fr) minmax(280px,.8fr);gap:14px}
  .battle-stage{height:300px;min-height:300px}
  .answer-panel{margin:0;padding:12px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.92);box-shadow:var(--shadow)}
  .keypad{grid-template-columns:repeat(3,1fr)}
  .keypad button{min-height:51px}
}

@supports not (color:color-mix(in srgb,white,black)){
  .battle-stage{background:radial-gradient(circle at 25% 28%,rgba(100,171,255,.22),transparent 26%),linear-gradient(180deg,#111b45,#1c275d 58%,#433578)}
}

@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* v37 final cascade overrides */
.result-stats{width:min(300px,100%);margin:14px auto!important;display:grid!important;grid-template-columns:1fr auto!important;gap:6px 28px!important;text-align:left;padding:14px 22px!important}
.result-stats strong{text-align:right}.result-actions{margin-top:12px!important}
.result-stats .result-mission-label,.result-stats .result-mission-progress{color:#644d00;background:#ffd34d;border-radius:9px;padding:4px 8px}
.intro-play{width:auto!important;aspect-ratio:auto!important;min-width:clamp(138px,20vw,210px)!important;height:clamp(58px,8vw,76px)!important;padding:0 26px!important;border-radius:999px!important;font-size:clamp(1rem,2.4vw,1.35rem)!important}
@media(max-width:700px){.intro-play{width:auto!important;min-width:140px!important;height:58px!important}.intro-brand{top:max(7%,env(safe-area-inset-top))!important;font-size:2.55rem!important}}

/* Version 37: complete return, reward and install flow. */
.install-button{color:var(--ink);background:#e8fbf8;border-color:#a9e5df;font-size:.76rem}
.lesson-button{display:inline-flex;flex-direction:column;justify-content:center;line-height:1.05;padding-block:9px}
.lesson-button span{font-size:.72rem;letter-spacing:.1em;opacity:.8}.lesson-button strong{font-size:1.08rem}
.result-stats{width:min(300px,100%);margin-inline:auto;display:grid!important;grid-template-columns:1fr auto;gap:6px 28px!important;text-align:left;padding:14px 22px!important}
.result-stats strong{text-align:right}
.result-actions{margin-top:12px!important}
.intro-brand small{display:block;margin-top:.38rem;color:#fff7a8;font-size:clamp(.72rem,1.8vw,1.15rem);letter-spacing:.16em;text-align:center}
.intro-math{position:absolute;z-index:9;inset:0;pointer-events:none;font-weight:1000;color:#fff7a8;text-shadow:0 0 16px rgba(255,211,77,.8)}
.intro-math span{position:absolute;opacity:0;padding:.45em .75em;border:2px solid rgba(255,255,255,.4);border-radius:999px;background:rgba(24,36,82,.6);font-size:clamp(1rem,2.5vw,1.65rem)}
.intro-math span:first-child{left:8%;top:23%;animation:introMathFloat .65s 1.35s ease-out forwards}.intro-math span:last-child{right:7%;top:25%;animation:introMathFloat .65s 1.62s ease-out forwards}
.intro-play{width:auto!important;aspect-ratio:auto!important;min-width:clamp(138px,20vw,210px);height:clamp(58px,8vw,76px);padding:0 26px!important;border-radius:999px!important;font-size:clamp(1rem,2.4vw,1.35rem)!important;font-weight:1000;letter-spacing:.08em}
.install-phone{width:94px;height:150px;margin:0 auto 14px;padding:18px 10px;border:5px solid var(--ink);border-radius:19px;background:linear-gradient(150deg,#182452,#7355b7);display:grid;place-items:center;box-shadow:0 12px 24px rgba(23,54,95,.22)}
.install-phone span{width:54px;height:54px;border-radius:14px;display:grid;place-items:center;background:#fff;color:var(--ink);font-size:.72rem;font-weight:1000;line-height:.9;text-align:center;box-shadow:0 0 0 4px rgba(112,217,207,.45)}
@keyframes introMathFloat{from{opacity:0;transform:translateY(14px) scale(.86)}to{opacity:1;transform:none}}
@media(max-width:700px){
  .intro-brand{top:max(7%,env(safe-area-inset-top))!important;font-size:2.55rem!important}
  .intro-brand small{font-size:.64rem;letter-spacing:.11em}
  .intro-math span{font-size:.8rem}.intro-math span:first-child{left:4%;top:25%}.intro-math span:last-child{right:4%;top:31%}
  .intro-play{bottom:max(4%,env(safe-area-inset-bottom))!important;min-width:140px;height:58px}
  .install-button{max-width:132px;white-space:normal;line-height:1.05;padding:5px 9px}
}

/* Chapter 1: lesson and route */
.prototype-badge{padding:8px 11px;border-radius:999px;background:var(--mint-soft);color:#23857d;font-size:.72rem;font-weight:900;letter-spacing:.08em;white-space:nowrap}
.explanation-hub{position:relative;min-height:640px;padding:clamp(28px,5vw,64px);border-radius:34px;overflow:hidden;background:radial-gradient(circle at 84% 18%,rgba(112,217,207,.28),transparent 23%),radial-gradient(circle at 13% 76%,rgba(255,211,77,.16),transparent 22%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.8) 0 1px,transparent 2px),radial-gradient(circle at 72% 68%,rgba(255,255,255,.72) 0 1.5px,transparent 2.5px),linear-gradient(145deg,#263e7f,#171d4c 62%,#5f448d);background-size:auto,auto,91px 87px,137px 121px,auto;box-shadow:var(--shadow)}
.explanation-head{position:relative;z-index:2;max-width:720px}
.explanation-head .eyebrow{color:#8de8df}
.explanation-head h1{margin:4px 0 30px;color:#fff;font-size:clamp(2.65rem,5vw,5rem);line-height:.98}
.explanation-grid{position:relative;z-index:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:880px}
.explanation-choice{position:relative;min-height:210px;padding:28px 64px 28px 28px;border:2px solid rgba(255,255,255,.48);border-radius:29px;display:flex;align-items:center;gap:22px;text-align:left;color:var(--ink);background:rgba(255,255,255,.95);box-shadow:0 14px 0 rgba(8,14,46,.3),0 24px 42px rgba(7,12,41,.22);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}
.explanation-choice:hover:not(:disabled){transform:translateY(-5px);box-shadow:0 19px 0 rgba(8,14,46,.3),0 29px 48px rgba(7,12,41,.28)}
.explanation-choice:focus-visible{outline:5px solid var(--yellow);outline-offset:4px}
.explanation-orbit{position:relative;flex:0 0 auto;width:104px;height:104px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 32% 27%,#fff 0 5%,var(--mint) 9% 58%,#2f8f9d 82%);filter:drop-shadow(0 10px 8px rgba(20,43,91,.25))}
.explanation-orbit:after{content:"";position:absolute;left:-15px;right:-15px;top:39px;height:23px;border:6px solid rgba(115,85,183,.42);border-top-color:transparent;border-radius:50%;transform:rotate(-13deg)}
.division-choice .explanation-orbit{background:radial-gradient(circle at 32% 27%,#fff 0 5%,#f08aaa 10% 58%,#a84c85 82%)}
.explanation-orbit span{position:relative;z-index:2;color:#fff;font-size:3.15rem;font-weight:900;text-shadow:0 3px 2px rgba(14,24,65,.3)}
.explanation-name{display:block;min-width:0}
.explanation-name strong,.explanation-name small{display:block}
.explanation-name strong{font-size:clamp(1.45rem,3vw,2.2rem);line-height:1.02}
.explanation-name small{margin-top:8px;color:var(--muted);font-size:1rem;font-weight:900}
.explanation-arrow{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-size:2.2rem;font-weight:900;color:var(--purple)}
.explanation-lock{display:none;position:absolute;right:23px;top:22px;font-size:1.25rem}
.explanation-choice.locked{filter:grayscale(.82);opacity:.48;cursor:not-allowed;box-shadow:0 9px 0 rgba(8,14,46,.22)}
.explanation-choice.locked .explanation-arrow{display:none}
.explanation-choice.locked .explanation-lock{display:block}
.explanation-back{position:relative;z-index:2;margin-top:34px;border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.94)}
.explanation-cat{position:absolute;z-index:1;right:-10px;bottom:-105px;width:min(36vw,390px);filter:drop-shadow(0 20px 15px rgba(7,13,41,.42));pointer-events:none}
.lesson-card{min-height:690px;background:#fff;border:1px solid var(--line);border-radius:34px;box-shadow:var(--shadow);overflow:hidden;display:grid;grid-template-columns:minmax(0,1.22fr) minmax(330px,.78fr)}
.lesson-copy{min-width:0;padding:clamp(28px,4vw,52px);display:flex;flex-direction:column;justify-content:center}
.lesson-copy h1{font-size:clamp(2.45rem,4.5vw,4.55rem);line-height:.98;margin:0 0 14px}
.lesson-lead{max-width:720px;margin:0 0 20px;color:var(--muted);font-size:1.08rem;line-height:1.48}
.lesson-scene{position:relative;min-height:690px;overflow:hidden;background:radial-gradient(circle at 72% 24%,rgba(128,225,255,.22),transparent 26%),linear-gradient(165deg,#283b7a,#171d4b 58%,#5d3f8d)}
.lesson-scene:after{content:"";position:absolute;left:-15%;right:-15%;bottom:-25%;height:48%;border-radius:50%;background:linear-gradient(180deg,#6a55ae,#3f347b);box-shadow:0 -16px 50px rgba(112,217,207,.16)}
.rule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
.rule-grid.single-rule{grid-template-columns:1fr}
.rule-card{min-width:0;border:1px solid var(--line);border-radius:20px;padding:13px;display:flex;align-items:center;gap:12px;background:#f7fbfd}
.rule-card.rule-two{background:var(--mint-soft);border-color:#b9ebe5}
.rule-symbol{flex:0 0 auto;width:53px;height:53px;border-radius:17px;display:grid;place-items:center;background:#fff;color:var(--purple);font-size:1.35rem;font-weight:900;box-shadow:0 7px 16px rgba(23,54,95,.1)}
.rule-card strong{display:block;font-size:.96rem}
.rule-card p{margin:3px 0 0;color:var(--muted);font-weight:900}
.fact-explorer{border:1px solid #cedfe9;border-radius:24px;padding:16px;background:linear-gradient(145deg,#fbfeff,#f0f8ff)}
.demo-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.demo-stack[hidden]{display:none}
.demo-stack#divisionLesson{grid-template-columns:1fr}
.demo-lane{min-width:0;border:1px solid var(--line);border-radius:18px;padding:11px;background:#fff}
.demo-lane.demo-two{background:var(--mint-soft);border-color:#b9ebe5}
.demo-equations{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.demo-equations strong{font-size:clamp(1.35rem,2.5vw,1.9rem)}
.demo-equations span{width:42px;height:34px;border-radius:11px;background:var(--purple);color:#fff;display:grid;place-items:center;font-size:1.02rem;font-weight:900}
.star-array{--group-count:10;min-height:68px;display:grid;grid-template-columns:repeat(auto-fit,minmax(38px,1fr));align-items:center;justify-content:center;gap:7px;padding:7px 2px;overflow:hidden}
.quantity-group{min-width:0;min-height:48px;border:2px solid #9be2da;border-radius:14px;display:grid;place-items:center;background:linear-gradient(155deg,#f8fffe,#d9f6f2);box-shadow:0 5px 0 rgba(35,133,125,.16)}
.quantity-group strong{color:var(--ink);font-size:clamp(1.05rem,2.4vw,1.35rem);line-height:1}
.divided-stars .quantity-group{border-color:#c9b9e8;background:linear-gradient(155deg,#fff,#eee8fa);box-shadow:0 5px 0 rgba(115,85,183,.15)}
.explorer-hint{text-align:center;margin:0 0 9px;color:var(--muted);font-size:.8rem;font-weight:800}
.factor-picker{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:5px}
.factor-picker button{min-width:0;min-height:36px;border:1px solid var(--line);border-radius:11px;background:#fff;font-weight:900;cursor:pointer}
.factor-picker button.active{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:0 5px 12px rgba(115,85,183,.24)}
.knowledge-map{margin-top:14px;padding:13px 14px;border-radius:20px;background:#f3f2fb;border:1px solid #ded9f4;overflow:hidden}
.knowledge-label{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}
.knowledge-label span{color:var(--muted);font-size:.78rem;font-weight:800}
.knowledge-row{display:grid;grid-template-columns:42px repeat(10,minmax(31px,1fr));gap:4px;margin-top:4px}
.knowledge-row>*{min-height:30px;border-radius:8px;display:grid;place-items:center;background:#fff;font-size:.82rem;font-weight:900}
.knowledge-row b{background:var(--ink);color:#fff}
.knowledge-row.active-row span{background:#cdf3ee;color:#226f69}
.lesson-button{align-self:flex-start;margin-top:18px}

.chapter-board{border-radius:32px;padding:20px;background:radial-gradient(circle at 82% 14%,rgba(112,217,207,.24),transparent 22%),radial-gradient(circle at 10% 25%,rgba(255,211,77,.1),transparent 15%),radial-gradient(circle at 30% 70%,rgba(255,255,255,.75) 0 1px,transparent 2px),radial-gradient(circle at 75% 45%,rgba(255,255,255,.7) 0 1.5px,transparent 2.5px),linear-gradient(145deg,#263e7f,#171d4c 62%,#5f448d);background-size:auto,auto,92px 87px,137px 121px,auto;box-shadow:var(--shadow);overflow:hidden}
.chapter-route-head{display:grid;grid-template-columns:2fr 1fr;margin-bottom:13px;color:#fff;font-weight:900;letter-spacing:.06em;text-transform:uppercase;font-size:.78rem}
.chapter-route-head span:last-child{text-align:center;color:#ffb5d1}
.level-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:13px}
.level-object{--level-accent:var(--mint);min-width:0;min-height:132px;border:0;background:transparent;padding:5px 3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease}
.level-object:hover:not(:disabled){transform:translateY(-5px) scale(1.03)}
.celestial-shape{position:relative;width:78px;height:78px;display:grid;place-items:center;background:radial-gradient(circle at 33% 28%,#fff 0 4%,var(--level-accent) 8% 56%,color-mix(in srgb,var(--level-accent) 55%,#182452) 78%);filter:drop-shadow(0 10px 7px rgba(6,11,37,.4))}
.level-object.star .celestial-shape{clip-path:polygon(50% 0,61% 31%,94% 21%,74% 49%,100% 68%,67% 69%,68% 100%,49% 79%,28% 100%,32% 68%,0 66%,26% 48%,7% 20%,39% 31%)}
.level-object.planet .celestial-shape{border-radius:50%;border:3px solid rgba(255,255,255,.7);box-shadow:inset -10px -12px 0 rgba(23,54,95,.18)}
.level-object.planet .celestial-shape:after{content:"";position:absolute;left:-13px;right:-13px;top:31px;height:17px;border:5px solid rgba(255,255,255,.68);border-top-color:transparent;border-radius:50%;transform:rotate(-13deg)}
.celestial-number{position:relative;z-index:2;font-size:1.22rem;font-weight:900;text-shadow:0 2px 2px rgba(14,24,65,.42)}
.level-name{max-width:125px;min-height:30px;display:flex;align-items:flex-start;justify-content:center;text-align:center;font-size:.78rem;line-height:1.15;text-shadow:0 2px 3px rgba(6,11,37,.85)}
.level-object.current .celestial-shape{animation:celestialPulse 1.35s ease-in-out infinite alternate;filter:drop-shadow(0 0 13px var(--yellow)) drop-shadow(0 10px 7px rgba(6,11,37,.4))}
.level-object.completed .celestial-shape{background:radial-gradient(circle at 33% 28%,#fff 0 5%,#ffd34d 9% 55%,#ff9a3c 80%)}
.level-object.locked{filter:grayscale(1);opacity:.38;cursor:not-allowed}
.level-tile{--level-accent:var(--mint);min-width:0;min-height:100px;border:2px solid rgba(255,255,255,.35);border-radius:22px;padding:12px;background:rgba(255,255,255,.95);display:flex;align-items:center;gap:10px;text-align:left;color:var(--ink);box-shadow:0 9px 0 rgba(9,16,48,.3);cursor:pointer;transition:.18s ease}
.level-tile:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 12px 0 rgba(9,16,48,.3)}
.level-number{flex:0 0 auto;width:39px;height:39px;border-radius:14px;display:grid;place-items:center;background:var(--level-accent);color:#fff;font-size:1.08rem;font-weight:900;box-shadow:inset 0 -4px 0 rgba(23,54,95,.13)}
.level-tile strong,.level-tile small{display:block;line-height:1.12}
.level-tile strong{font-size:.9rem;overflow-wrap:anywhere}
.level-tile small{margin-top:5px;color:var(--muted);font-size:.7rem;font-weight:800}
.level-tile.current{outline:4px solid var(--yellow);outline-offset:2px}
.level-tile.completed{background:#e8fbf8;border-color:#70d9cf}
.level-tile.completed .level-number{background:#23857d}
.level-tile.locked{filter:grayscale(.75);opacity:.57;box-shadow:0 6px 0 rgba(9,16,48,.2);cursor:not-allowed}
.map-actions{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:18px}
.map-actions{justify-content:flex-start}
.map-actions .map-tip{margin:0;text-align:right;max-width:650px}
.map-side-panel{display:flex;flex-direction:column;gap:14px;min-height:0}

.level-guidance{max-width:780px;margin:0 auto 12px;padding:9px 14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.75);color:var(--muted);font-size:.85rem;font-weight:800;text-align:center}
.choice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.choice-grid button{min-height:105px;border:1px solid var(--line);border-radius:22px;background:#fff;color:var(--ink);font-size:2.15rem;font-weight:900;box-shadow:0 8px 16px rgba(23,54,95,.11);cursor:pointer;transition:.16s ease}
.choice-grid button:hover{transform:translateY(-2px);background:var(--mint-soft)}
.choice-grid button.correct-choice{background:#c9f4df;border-color:#54c990;color:#146846}
.choice-grid button.wrong-choice{background:#ffe1dd;border-color:#ff7d6d;color:#b63e34}
.choice-grid[hidden],.keypad[hidden],.lesson-section[hidden],.shower-meter[hidden]{display:none!important}

@keyframes celestialPulse{to{transform:scale(1.08) rotate(2deg)}}

@media(max-width:980px) and (min-width:881px){
  .lesson-card{grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr)}
  .lesson-copy{padding:30px}
  .knowledge-row{grid-template-columns:38px repeat(10,minmax(26px,1fr))}
  .level-tile{padding:9px;gap:7px}
  .level-number{width:34px;height:34px}
}

@media(max-width:880px){
  .explanation-hub{min-height:580px}
  .explanation-grid{grid-template-columns:1fr;max-width:600px}
  .explanation-choice{min-height:150px}
  .explanation-cat{width:360px;right:-70px;bottom:-130px;opacity:.72}
  .lesson-card{grid-template-columns:1fr;min-height:0}
  .lesson-copy{padding:34px 28px}
  .lesson-scene{min-height:390px}
  .level-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .level-object{min-height:120px}
  .chapter-route-head{display:none}
  .choice-grid{grid-template-columns:repeat(4,1fr);gap:7px}
  .choice-grid button{min-height:64px;border-radius:16px;font-size:1.55rem}
  .attempt-card{margin-top:8px;padding:9px 11px}
  .attempt-card p{display:none}
}

@media(max-width:620px){
  .prototype-badge{display:none}
  .explanation-hub{min-height:calc(100dvh - 104px);padding:28px 16px 120px;border-radius:24px}
  .explanation-head h1{margin-bottom:22px;font-size:2.45rem}
  .explanation-grid{gap:14px}
  .explanation-choice{min-height:132px;padding:18px 48px 18px 16px;border-radius:23px;gap:16px;box-shadow:0 9px 0 rgba(8,14,46,.3),0 17px 30px rgba(7,12,41,.2)}
  .explanation-orbit{width:78px;height:78px}
  .explanation-orbit:after{left:-10px;right:-10px;top:29px;height:18px;border-width:4px}
  .explanation-orbit span{font-size:2.4rem}
  .explanation-name strong{font-size:1.35rem}
  .explanation-name small{margin-top:5px;font-size:.87rem}
  .explanation-arrow{right:17px;font-size:1.8rem}
  .explanation-back{width:100%;margin-top:26px}
  .explanation-cat{width:260px;right:-72px;bottom:-96px;opacity:.56}
  .battle-title-wrap{display:none}
  .lesson-card{border-radius:24px}
  .lesson-copy{padding:25px 17px}
  .lesson-copy h1{font-size:2.1rem;overflow-wrap:anywhere}
  .lesson-lead{font-size:.96rem;margin-bottom:14px}
  .rule-grid{grid-template-columns:1fr;gap:7px}
  .rule-card{padding:9px 10px;border-radius:16px}
  .rule-symbol{width:44px;height:44px;border-radius:14px;font-size:1.15rem}
  .rule-card strong{font-size:.87rem}
  .rule-card p{font-size:.82rem}
  .fact-explorer{padding:11px;border-radius:19px}
  .demo-stack{grid-template-columns:1fr;gap:7px}
  .demo-lane{padding:8px}
  .demo-equations{gap:10px}
  .demo-equations strong{font-size:1.4rem}
  .demo-equations span{font-size:.91rem}
  .star-array{min-height:58px;grid-template-columns:repeat(auto-fit,minmax(31px,1fr));gap:5px;padding:4px 0}
  .quantity-group{min-height:40px;border-radius:11px}
  .quantity-group strong{font-size:1rem}
  .factor-picker{grid-template-columns:repeat(5,1fr)}
  .factor-picker button{min-height:32px}
  .knowledge-map{margin-top:10px;padding:10px}
  .knowledge-label span{display:none}
  .knowledge-row{grid-template-columns:30px repeat(10,minmax(0,1fr));gap:2px;width:100%}
  .knowledge-row>*{font-size:.72rem}
  .lesson-button{width:100%;margin-top:13px}
  .lesson-scene{min-height:290px}
  .lesson-scene .story-cat-crop{width:205px;height:182px;bottom:15px}
  .lesson-scene .intro-moon{width:88px;height:88px;right:23px;top:28px}
  .lesson-scene .sign{right:18px;bottom:26px;width:56px;height:56px;border-width:4px;border-radius:17px;font-size:2rem}
  .map-head{display:block;margin:6px 4px 15px}
  .map-head h1{font-size:2.15rem}
  .map-head p{font-size:.91rem}
  .energy-panel{display:inline-flex;margin-top:8px;padding:9px 13px}
  .chapter-board{padding:12px;border-radius:24px}
  .level-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .level-object{min-height:110px;padding:3px}
  .celestial-shape{width:67px;height:67px}
  .level-object.planet .celestial-shape:after{top:26px;height:15px}
  .level-name{font-size:.72rem;min-height:26px}
  .level-tile{min-height:80px;border-radius:17px;padding:9px;box-shadow:0 6px 0 rgba(9,16,48,.3)}
  .level-number{width:34px;height:34px;border-radius:11px}
  .level-tile strong{font-size:.79rem}
  .level-tile small{font-size:.63rem}
  .map-actions{display:block}
  .map-actions .secondary-button{width:100%}
  .map-actions .map-tip{text-align:center;margin-top:11px;font-size:.75rem}
  .level-guidance{margin:0 2px 7px;padding:7px 10px;font-size:.72rem;line-height:1.3}
  .choice-grid{grid-template-columns:repeat(4,1fr);gap:6px}
  .choice-grid button{min-height:52px;border-radius:13px;font-size:1.35rem}
  .attempt-card{margin-top:6px;padding:7px 10px}
}

@media(max-width:370px){
  .lesson-copy{padding:22px 13px}
  .lesson-copy h1{font-size:1.92rem}
  .knowledge-row{grid-template-columns:28px repeat(10,minmax(0,1fr));gap:1px}
  .level-tile{gap:6px;padding:7px}
  .level-number{width:30px;height:30px}
}

/* Chapter 1 story test */
.story-progress{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid rgba(255,255,255,.18)}
.story-stage{position:relative;height:270px;border:1px solid rgba(255,255,255,.2);border-radius:25px;overflow:hidden;background:radial-gradient(circle at 84% 38%,rgba(230,78,137,.2),transparent 23%),radial-gradient(circle at 20% 22%,rgba(112,217,207,.17),transparent 20%),linear-gradient(155deg,rgba(8,16,52,.88),rgba(34,38,94,.72));box-shadow:inset 0 0 45px rgba(7,13,41,.28)}
.story-stage:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 13% 31%,#fff 0 1px,transparent 2px),radial-gradient(circle at 41% 15%,#fff 0 1.5px,transparent 2.5px),radial-gradient(circle at 65% 78%,rgba(255,255,255,.85) 0 1px,transparent 2px),radial-gradient(circle at 92% 18%,rgba(255,255,255,.8) 0 1.5px,transparent 2.5px);background-size:101px 97px,143px 127px,117px 91px,181px 151px;opacity:.56}
.story-stage:after{content:"";position:absolute;left:-9%;right:-9%;bottom:-30%;height:48%;border-radius:50%;background:linear-gradient(180deg,#5c4a9a,#322865);box-shadow:0 -11px 35px rgba(112,217,207,.1)}
.story-status{position:absolute;z-index:8;left:20px;top:17px;max-width:235px;padding:10px 14px;border:1px solid rgba(255,255,255,.24);border-radius:15px;background:rgba(11,20,60,.66);color:#fff;backdrop-filter:blur(8px)}
.story-status span,.story-status strong{display:block}
.story-status span{margin-bottom:3px;color:#8de8df;font-size:.66rem;font-weight:900;letter-spacing:.12em}
.story-status strong{font-size:1.05rem;line-height:1.12}
.story-stage .story-cat-crop{position:absolute;z-index:5;left:4%;bottom:-20px;width:145px;height:170px;overflow:hidden}
.story-stage .story-cat-crop img{width:100%;display:block;transform:scale(1.42) translateY(-9%);transform-origin:50% 4%;filter:drop-shadow(0 12px 9px rgba(6,11,37,.42));animation:storyCatWatch 1.7s ease-in-out infinite alternate}

.story-ship{position:absolute;z-index:5;left:44%;top:53%;width:102px;height:158px;transform:translate(-50%,-50%) rotate(8deg);filter:drop-shadow(0 13px 9px rgba(3,8,32,.5));transition:transform .45s ease}
.ship-part{position:absolute;display:block;opacity:.1;filter:grayscale(.8);transition:opacity .5s ease,filter .5s ease,transform .5s ease}
.ship-part.is-found{opacity:1;filter:none;animation:shipPartFound .65s cubic-bezier(.2,.85,.25,1.25)}
.ship-body{z-index:3;left:27px;top:18px;width:50px;height:101px;border:3px solid #17365f;border-radius:52% 52% 19px 19px;background:linear-gradient(110deg,#fff 0 30%,#8fe6de 32% 69%,#45aeb4 70%);box-shadow:inset -8px -9px 0 rgba(23,54,95,.1)}
.ship-window{z-index:5;left:39px;top:43px;width:27px;height:27px;border:4px solid #17365f;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff 0 8%,#84d9ff 12% 55%,#4865b3 62%)}
.ship-wing{z-index:2;top:76px;width:35px;height:53px;border:3px solid #17365f;background:linear-gradient(155deg,#f08aaa,#cf4e8a);clip-path:polygon(50% 0,100% 100%,0 79%)}
.ship-wing-left{left:5px;transform:rotate(-15deg)}
.ship-wing-right{right:3px;transform:scaleX(-1) rotate(-15deg)}
.ship-antenna{z-index:2;left:49px;top:3px;width:5px;height:23px;border-radius:4px;background:#ffd34d;border:2px solid #17365f}
.ship-antenna:after{content:"";position:absolute;left:50%;top:-8px;width:10px;height:10px;transform:translateX(-50%);border-radius:50%;background:#ff9a3c;border:2px solid #17365f}
.ship-engine{position:absolute;z-index:6;left:25px;top:116px;width:54px;height:21px;padding:4px 5px;display:flex;gap:3px;border:3px solid #17365f;border-radius:6px 6px 13px 13px;background:#28345e}
.ship-engine i{flex:1;border-radius:3px;background:#4d5874;transition:background .35s ease,box-shadow .35s ease}
.ship-engine i.is-charged{background:#ffd34d;box-shadow:0 0 8px #ff9a3c}
.ship-flame{position:absolute;z-index:1;left:38px;top:134px;width:28px;height:42px;opacity:0;background:linear-gradient(180deg,#fff7a8,#ff9a3c 48%,#e64e89);clip-path:polygon(50% 100%,0 0,100% 0);filter:drop-shadow(0 0 10px #ff9a3c);transform-origin:50% 0}
.story-stage.has-engine .ship-flame{opacity:1;animation:engineBurn .42s ease-in-out infinite alternate}
.story-stage.is-complete .story-ship{animation:mapShipLaunch 2.4s ease-in-out infinite}

.story-portal{position:absolute;z-index:4;left:73%;top:52%;width:138px;height:176px;transform:translate(-50%,-50%);opacity:.22;transition:opacity .5s ease,filter .5s ease}
.story-stage.has-portal .story-portal{opacity:1;filter:drop-shadow(0 0 15px rgba(230,78,137,.56))}
.portal-ring{position:absolute;inset:17px 9px;border:10px solid rgba(230,78,137,.48);border-left-color:#70d9cf;border-right-color:#ffd34d;border-radius:50%;box-shadow:inset 0 0 24px rgba(112,217,207,.35),0 0 24px rgba(230,78,137,.35);animation:portalTurn 4s linear infinite}
.story-portal i{position:absolute;color:#536081;font-style:normal;font-size:1.2rem;transition:color .35s ease,text-shadow .35s ease,transform .35s ease}
.story-portal i.is-lit{color:#ffd34d;text-shadow:0 0 9px #ff9a3c;transform:scale(1.25)}
.story-portal i:nth-of-type(1){left:10px;top:26px}.story-portal i:nth-of-type(2){right:4px;top:48px}.story-portal i:nth-of-type(3){right:15px;bottom:24px}.story-portal i:nth-of-type(4){left:33px;bottom:4px}.story-portal i:nth-of-type(5){left:-1px;top:88px}
.story-stage.is-complete .portal-ring{border-color:#fff #70d9cf #ffd34d #e64e89;box-shadow:inset 0 0 34px rgba(112,217,207,.65),0 0 32px rgba(230,78,137,.72);animation-duration:1.2s}
.next-planet{position:absolute;z-index:3;right:-74px;top:46%;width:140px;height:140px;border-radius:50%;display:grid;place-items:center;opacity:0;transform:translateY(-50%) scale(.7);background:radial-gradient(circle at 32% 27%,#fff 0 4%,#ffbd70 8% 48%,#e64e89 72%,#5b398e 74%);box-shadow:0 0 0 13px rgba(255,255,255,.06),0 0 34px rgba(255,154,60,.42);transition:.7s ease}
.next-planet span{margin-right:56px;color:#fff;font-size:2.1rem;font-weight:900;text-shadow:0 3px 3px rgba(23,54,95,.4)}
.story-stage.is-complete .next-planet{opacity:1;transform:translateY(-50%) scale(1)}

.story-goals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.story-goal{min-width:0;padding:9px 12px;border:1px solid rgba(255,255,255,.18);border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:rgba(255,255,255,.64);background:rgba(255,255,255,.07);font-size:.78rem;font-weight:900;transition:.25s ease}
.story-goal span{overflow-wrap:anywhere}
.story-goal strong{flex:0 0 auto}
.story-goal.is-active{color:#fff;border-color:rgba(255,211,77,.72);background:rgba(255,211,77,.12);box-shadow:inset 0 0 14px rgba(255,211,77,.06)}
.story-goal.is-done{color:#17365f;border-color:#70d9cf;background:#d6f7f2}
.story-goal.is-done strong:before{content:"✓ ";color:#23857d}

.reward-scene{height:220px;border-radius:24px;background:radial-gradient(circle at 70% 30%,rgba(112,217,207,.22),transparent 27%),linear-gradient(150deg,#172455,#3f347b);box-shadow:inset 0 0 34px rgba(7,13,41,.35)}
.reward-space-stars{position:absolute;inset:15px;color:rgba(255,255,255,.72);font-size:1.2rem;word-spacing:1.5em;animation:twinkle 1.5s ease-in-out infinite alternate}
.reward-scene .result-cat-crop{z-index:5;left:4%;right:auto;width:170px;height:165px;bottom:-6px}
.reward-scene .result-cat{filter:drop-shadow(0 11px 8px rgba(7,13,41,.48))}
.reward-scene .crystal{z-index:7;left:34%;top:61px;font-size:4.8rem;animation:rewardToShip 1.35s ease-in-out infinite}
.reward-ship{position:absolute;z-index:5;left:67%;top:50%;width:82px;height:124px;transform:translate(-50%,-50%) rotate(8deg);filter:drop-shadow(0 10px 7px rgba(5,10,34,.55))}
.reward-ship-body{position:absolute;z-index:3;left:22px;top:8px;width:42px;height:82px;border:3px solid #17365f;border-radius:52% 52% 16px 16px;background:linear-gradient(110deg,#fff 0 30%,#8fe6de 32% 69%,#45aeb4 70%)}
.reward-ship-body i{position:absolute;left:9px;top:22px;width:19px;height:19px;border:3px solid #17365f;border-radius:50%;background:#84d9ff}
.reward-ship-wing{position:absolute;z-index:2;top:59px;width:29px;height:43px;border:3px solid #17365f;background:#e64e89;clip-path:polygon(50% 0,100% 100%,0 79%)}
.reward-ship-wing-left{left:4px;transform:rotate(-15deg)}.reward-ship-wing-right{right:1px;transform:scaleX(-1) rotate(-15deg)}
.reward-ship-flame{position:absolute;z-index:1;left:31px;top:89px;width:25px;height:38px;background:linear-gradient(180deg,#fff7a8,#ff9a3c 48%,#e64e89);clip-path:polygon(50% 100%,0 0,100% 0);filter:drop-shadow(0 0 8px #ff9a3c);animation:engineBurn .38s ease-in-out infinite alternate}
.reward-portal{position:absolute;z-index:4;right:5%;top:50%;width:98px;height:146px;opacity:0;transform:translateY(-50%);transition:opacity .3s ease}
.reward-portal i{position:absolute;inset:7px;border:8px solid #e64e89;border-left-color:#70d9cf;border-right-color:#ffd34d;border-radius:50%;box-shadow:inset 0 0 23px rgba(112,217,207,.52),0 0 24px rgba(230,78,137,.56);animation:portalTurn 1.2s linear infinite}
.reward-portal span{position:absolute;right:-3px;top:7px;color:#ffd34d;font-size:1.5rem;text-shadow:0 0 8px #ff9a3c}
.reward-engine-step .reward-ship-flame,.reward-engine .reward-ship-flame{animation-duration:.22s}
.reward-portal-step .reward-portal,.reward-launch .reward-portal{opacity:1}
.reward-portal-step .reward-ship{left:57%}
.reward-portal-step .crystal{animation-name:rewardToPortal}
.reward-ship-found .reward-ship{animation:rewardShipFound 1.1s ease-in-out infinite alternate}
.reward-engine .reward-ship{animation:rewardEngineLive .55s ease-in-out infinite alternate}
.reward-engine .crystal,.reward-ship-found .crystal{opacity:0}
.reward-launch .crystal{opacity:0}
.reward-launch .reward-ship{animation:rewardLaunch 2.1s ease-in-out infinite}
.reward-launch .result-cat-crop{animation:pilotFade 2.1s ease-in-out infinite}
.reward-failed .reward-ship,.reward-failed .reward-portal,.reward-failed .crystal{display:none}
.reward-pill{display:inline-flex;align-items:center;justify-content:center;min-height:34px;margin:14px auto 12px;padding:6px 14px;border-radius:999px;background:#fff1b8;color:#8d5c00;font-size:.76rem;font-weight:900;letter-spacing:.06em;box-shadow:0 6px 16px rgba(23,54,95,.1)}
.reward-pill[hidden]{display:none!important}

@keyframes storyCatWatch{to{transform:scale(1.42) translateY(-12%) rotate(-1deg)}}
@keyframes shipPartFound{0%{opacity:0;transform:scale(.45) rotate(-12deg)}70%{transform:scale(1.12) rotate(3deg)}100%{opacity:1;transform:none}}
@keyframes engineBurn{to{transform:scaleY(.72);filter:drop-shadow(0 0 15px #ff9a3c)}}
@keyframes portalTurn{to{transform:rotate(360deg)}}
@keyframes mapShipLaunch{0%,25%{transform:translate(-50%,-50%) rotate(8deg)}55%{transform:translate(110%,-58%) rotate(70deg) scale(.82)}70%,100%{transform:translate(195%,-58%) rotate(82deg) scale(.24);opacity:.2}}
@keyframes rewardToShip{0%{transform:translate(-20px,8px) scale(.65);opacity:0}35%{opacity:1}75%,100%{transform:translate(155px,5px) scale(.2);opacity:0}}
@keyframes rewardToPortal{0%{transform:translate(-10px,8px) scale(.65);opacity:0}35%{opacity:1}75%,100%{transform:translate(255px,0) scale(.15);opacity:0}}
@keyframes rewardShipFound{to{transform:translate(-50%,-54%) rotate(4deg) scale(1.08);filter:drop-shadow(0 0 18px #70d9cf)}}
@keyframes rewardEngineLive{to{transform:translate(-50%,-54%) rotate(8deg);filter:drop-shadow(0 0 18px #ffd34d)}}
@keyframes rewardLaunch{0%,22%{transform:translate(-50%,-50%) rotate(8deg) scale(1)}58%{transform:translate(70%,-50%) rotate(72deg) scale(.72)}72%,100%{transform:translate(225%,-50%) rotate(82deg) scale(.16);opacity:.15}}
@keyframes pilotFade{0%,28%{opacity:1}50%,100%{opacity:.12}}

@media(max-width:700px){
  .top-actions{gap:5px}
  .share-button{min-height:38px;padding:0 10px;font-size:.72rem}
  .sound-button{width:40px;height:40px}
  .story-stage{height:235px}
  .story-status{left:10px;top:10px;max-width:190px;padding:8px 10px}
  .story-status strong{font-size:.9rem}
  .story-stage .story-cat-crop{left:-2%;bottom:-23px;width:112px;height:140px}
  .story-ship{left:43%;top:55%;transform:translate(-50%,-50%) rotate(8deg) scale(.8)}
  .story-portal{left:72%;top:55%;transform:translate(-50%,-50%) scale(.73)}
  .next-planet{right:-84px;width:126px;height:126px}
  .next-planet span{margin-right:66px;font-size:1.7rem}
  .story-goals{grid-template-columns:1fr;gap:6px}
  .story-goal{padding:8px 10px}
  .reward-scene{height:190px}
  .reward-scene .result-cat-crop{left:-2%;width:130px;height:135px}
  .reward-scene .crystal{left:27%;top:62px;font-size:3.7rem}
  .reward-ship{left:61%;transform:translate(-50%,-50%) rotate(8deg) scale(.82)}
  .reward-portal{right:-3%;transform:translateY(-50%) scale(.76)}
  .reward-portal-step .reward-ship{left:52%}
  @keyframes rewardToShip{0%{transform:translate(-8px,8px) scale(.6);opacity:0}35%{opacity:1}75%,100%{transform:translate(92px,4px) scale(.18);opacity:0}}
  @keyframes rewardToPortal{0%{transform:translate(-8px,8px) scale(.6);opacity:0}35%{opacity:1}75%,100%{transform:translate(165px,0) scale(.14);opacity:0}}
}

@media(max-width:370px){
  .topbar{padding-left:8px;padding-right:8px;gap:7px}
  .brand{gap:5px;font-size:.82rem}
  .brand-cat{width:42px;height:42px}
  .share-button{padding:0 7px;font-size:.65rem;gap:4px}
  .share-button svg{width:17px;height:17px}
  .sound-button{width:37px;height:37px}
}

@media(max-width:520px){
  .share-content{padding:30px 18px 24px}
  .share-link-row{display:grid}
  .share-link-row input{min-height:46px;text-align:center;font-size:.78rem}
  .share-copy-button{width:100%}
}

/* v24: the chapter story is shown through motion, not explanatory copy. */
.story-stage{isolation:isolate}
.story-status{display:none!important}
.story-stage .story-cat-crop{z-index:7}
.story-stage .story-cat-crop:after{content:"";position:absolute;left:34%;right:8%;bottom:13%;height:12%;border-radius:50%;background:rgba(7,13,41,.32);filter:blur(6px);z-index:-1}
.story-ship{transform-origin:50% 72%}
.ship-aura{position:absolute;z-index:0;inset:17px 0 4px;border-radius:48%;opacity:0;background:radial-gradient(circle,rgba(255,232,125,.44),rgba(112,217,207,.12) 45%,transparent 69%);filter:blur(6px);transform:scale(.72)}
.phase-ship .story-ship{animation:mapShipSearch 2.1s ease-in-out infinite alternate}
.phase-ship .story-ship:after{content:"";position:absolute;z-index:9;left:-30px;right:-30px;top:-20px;height:4px;border-radius:999px;background:linear-gradient(90deg,transparent,#8fe8e0,transparent);box-shadow:0 0 13px #70d9cf;animation:shipScanner 2.1s ease-in-out infinite}
.phase-ship .ship-part.is-found{animation:foundPartGlow 1.65s ease-in-out infinite alternate}
.phase-engine .story-ship{animation:mapEngineRumble .26s ease-in-out infinite alternate}
.phase-engine .ship-aura,.phase-portal .ship-aura,.is-complete .ship-aura{opacity:calc(.22 + (var(--engine-progress) * .12));animation:shipAura 1s ease-in-out infinite alternate}
.phase-engine .ship-flame{opacity:calc(.15 + (var(--engine-progress) * .17));transform:scaleY(calc(.3 + (var(--engine-progress) * .13)));animation:engineBurn .27s ease-in-out infinite alternate}
.phase-portal .story-ship{animation:portalPull 1.5s ease-in-out infinite alternate}
.phase-portal .story-portal{opacity:calc(.22 + (var(--portal-progress) * .15));filter:drop-shadow(0 0 calc(7px + (var(--portal-progress) * 4px)) rgba(230,78,137,.72))}
.phase-portal .portal-ring{animation-duration:calc(3.3s - (var(--portal-progress) * .35s))}
.portal-core{position:absolute;inset:34px 27px;border-radius:50%;opacity:0;background:radial-gradient(ellipse,#fff 0 4%,#92fff4 10%,#5968c3 36%,rgba(21,18,72,.1) 68%);box-shadow:inset 0 0 25px #fff,0 0 18px #70d9cf;transform:scale(.2)}
.phase-portal .portal-core,.is-complete .portal-core{opacity:calc(.08 + (var(--portal-progress) * .16));transform:scale(calc(.25 + (var(--portal-progress) * .15)));animation:portalCorePulse .75s ease-in-out infinite alternate}
.story-energy-stream{position:absolute;z-index:6;inset:0;pointer-events:none;opacity:0}
.story-energy-stream i{position:absolute;width:10px;height:10px;border-radius:50%;background:#fff7a8;box-shadow:0 0 12px #ffd34d,0 0 22px #70d9cf}
.story-energy-stream i:nth-child(1){top:17%;left:89%;animation-delay:0s}.story-energy-stream i:nth-child(2){top:30%;left:82%;animation-delay:.25s}.story-energy-stream i:nth-child(3){top:44%;left:92%;animation-delay:.5s}.story-energy-stream i:nth-child(4){top:64%;left:84%;animation-delay:.75s}.story-energy-stream i:nth-child(5){top:78%;left:91%;animation-delay:1s}
.phase-engine .story-energy-stream{opacity:1}
.phase-engine .story-energy-stream i{animation:energyToEngine 1.35s ease-in infinite}
.phase-portal .story-energy-stream{opacity:1;transform:scaleX(-1);transform-origin:58% 50%}
.phase-portal .story-energy-stream i{background:#f9a6d0;box-shadow:0 0 12px #e64e89,0 0 22px #70d9cf;animation:energyToEngine 1.05s ease-in infinite}
.story-goals{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.story-goal{position:relative;min-height:51px;justify-content:center;gap:9px;padding:8px 11px;overflow:hidden}
.story-goal .goal-symbol{position:relative;display:block;flex:0 0 auto;width:24px;height:25px;filter:grayscale(.75);opacity:.55;transition:.3s ease}
.goal-ship:before{content:"";position:absolute;left:6px;top:1px;width:12px;height:19px;border:2px solid #17365f;border-radius:50% 50% 28% 28%;background:linear-gradient(110deg,#fff 0 28%,#70d9cf 31% 69%,#3aa5ae 72%)}
.goal-ship:after{content:"";position:absolute;left:8px;top:19px;width:8px;height:7px;background:linear-gradient(#ffd34d,#ff7a4f);clip-path:polygon(50% 100%,0 0,100% 0)}
.goal-engine{background:linear-gradient(145deg,#fff6ad,#ff9a3c);clip-path:polygon(57% 0,19% 52%,46% 52%,35% 100%,84% 40%,56% 40%)}
.goal-portal{border:5px solid #e64e89;border-left-color:#70d9cf;border-right-color:#ffd34d;border-radius:50%;box-shadow:inset 0 0 7px rgba(112,217,207,.6),0 0 7px rgba(230,78,137,.5)}
.story-goal strong{font-size:.78rem}
.story-goal.is-active .goal-symbol{filter:none;opacity:1;animation:goalBounce 1.1s ease-in-out infinite alternate}
.story-goal.is-active:after{content:"";position:absolute;left:-35%;bottom:0;width:32%;height:2px;background:linear-gradient(90deg,transparent,#ffd34d,transparent);animation:goalSweep 1.35s linear infinite}
.story-goal.is-done .goal-symbol{filter:none;opacity:1}

.result-card{max-width:780px;margin:18px auto;padding:clamp(20px,4vw,42px)}
.result-animation{height:280px}
.reward-scene{isolation:isolate;background:radial-gradient(circle at 70% 30%,rgba(112,217,207,.26),transparent 27%),radial-gradient(circle at 26% 72%,rgba(230,78,137,.14),transparent 28%),linear-gradient(150deg,#101a43,#322b72 70%,#5e3a88)}
.reward-scene:after{content:"";position:absolute;z-index:1;left:-10%;right:-10%;bottom:-30%;height:48%;border-radius:50%;background:linear-gradient(180deg,#584492,#2d275f);box-shadow:0 -11px 38px rgba(112,217,207,.13)}
.reward-space-stars{z-index:2;inset:0;animation:none}
.reward-space-stars i{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 7px #fff;opacity:.55}
.reward-space-stars i:nth-child(1){left:8%;top:15%}.reward-space-stars i:nth-child(2){left:23%;top:38%;width:7px;height:7px;background:#ffd34d}.reward-space-stars i:nth-child(3){left:42%;top:13%}.reward-space-stars i:nth-child(4){left:59%;top:74%;background:#70d9cf}.reward-space-stars i:nth-child(5){left:72%;top:20%;width:6px;height:6px}.reward-space-stars i:nth-child(6){left:88%;top:56%;background:#f08aaa}.reward-space-stars i:nth-child(7){left:34%;top:82%}.reward-space-stars i:nth-child(8){left:94%;top:12%}
.is-playing .reward-space-stars i{animation:cinematicStar 1.1s ease-in-out infinite alternate}
.reward-space-stars i:nth-child(2n){animation-delay:.22s}.reward-space-stars i:nth-child(3n){animation-delay:.5s}
.reward-flash{position:absolute;z-index:12;inset:0;opacity:0;pointer-events:none;background:radial-gradient(circle at 68% 55%,rgba(255,255,255,.98),rgba(112,217,207,.38) 20%,transparent 58%)}
.reward-speed-lines{position:absolute;z-index:3;inset:0;opacity:0;overflow:hidden}
.reward-speed-lines i{position:absolute;left:5%;width:58%;height:2px;border-radius:99px;background:linear-gradient(90deg,transparent,#fff);transform:translateX(-110%)}
.reward-speed-lines i:nth-child(1){top:18%}.reward-speed-lines i:nth-child(2){top:34%;width:43%;animation-delay:.11s}.reward-speed-lines i:nth-child(3){top:52%;width:68%;animation-delay:.2s}.reward-speed-lines i:nth-child(4){top:69%;width:50%;animation-delay:.07s}.reward-speed-lines i:nth-child(5){top:83%;width:60%;animation-delay:.27s}
.reward-scene .result-cat-crop{z-index:6;left:3%;width:190px;height:188px}
.reward-scene .result-cat{animation:none}
.reward-scene .crystal{z-index:9;left:31%;top:91px;animation:none;opacity:0}
.reward-ship{z-index:8;left:66%;top:49%;width:100px;height:152px;animation:none;transform:translate(-50%,-50%) rotate(8deg);filter:drop-shadow(0 12px 9px rgba(5,10,34,.58))}
.reward-ship-body{left:27px;top:10px;width:51px;height:101px}
.reward-ship-body i{left:11px;top:27px;width:23px;height:23px}
.reward-ship-wing{top:72px;width:35px;height:52px}
.reward-ship-wing-left{left:5px}.reward-ship-wing-right{right:1px}
.reward-engine-cells{position:absolute;z-index:7;left:24px;top:110px;width:57px;height:21px;padding:4px 5px;display:flex;gap:3px;border:3px solid #17365f;border-radius:6px 6px 13px 13px;background:#28345e}
.reward-engine-cells i{flex:1;border-radius:2px;background:#4d5874;box-shadow:none}
.reward-ship-flame{left:37px;top:130px;width:31px;height:49px;opacity:0;animation:none}
.reward-portal{z-index:7;right:4%;width:130px;height:188px;opacity:.08;transform:translateY(-50%) scale(.3);animation:none}
.reward-portal i{inset:9px;border-width:10px;animation:none}
.reward-portal b{position:absolute;inset:29px 25px;border-radius:50%;opacity:0;background:radial-gradient(ellipse,#fff 0 4%,#8ffff0 11%,#6b64c1 38%,rgba(18,16,67,.08) 68%);box-shadow:inset 0 0 24px #fff,0 0 20px #70d9cf}
.reward-next-planet{position:absolute;z-index:4;right:-82px;top:42%;width:160px;height:160px;border-radius:50%;opacity:0;background:radial-gradient(circle at 30% 26%,#fff 0 4%,#ffbd70 7% 46%,#e64e89 69%,#58388b 72%);box-shadow:0 0 0 14px rgba(255,255,255,.07),0 0 42px rgba(255,154,60,.5);transform:scale(.35)}
.reward-pill{margin:12px auto 8px}
.result-card .eyebrow{margin-top:5px}
.result-card h1[hidden],.result-card p[hidden]{display:none!important}
.result-card h1:not([hidden]){margin-top:3px}
.result-stats{margin:14px 0}

/* Ordinary story beats: energy visibly moves into the current object. */
.reward-ship-step .reward-ship-body,.reward-ship-step .reward-ship-wing,.reward-ship-step .reward-engine-cells{opacity:.1;filter:grayscale(1)}
.reward-ship-step[data-level="1"] .reward-ship-body,
.reward-ship-step[data-level="2"] .reward-ship-body,.reward-ship-step[data-level="2"] .reward-ship-body i,
.reward-ship-step[data-level="3"] .reward-ship-body,.reward-ship-step[data-level="3"] .reward-ship-body i,.reward-ship-step[data-level="3"] .reward-ship-wing-left,
.reward-ship-step[data-level="4"] .reward-ship-body,.reward-ship-step[data-level="4"] .reward-ship-body i,.reward-ship-step[data-level="4"] .reward-ship-wing{opacity:1;filter:none}
.reward-ship-step[data-level="1"] .reward-ship-body i{opacity:.1}
.reward-ship-step.is-playing .crystal{opacity:1;animation:energyArcToShip 1.45s cubic-bezier(.35,.05,.6,1) both}
.reward-ship-step.is-playing .reward-ship{animation:shipReceiveEnergy 1.45s ease-out both}

/* Fifth mission: pieces fly together and the finished ship lifts off the ground. */
.reward-ship-found .reward-ship-body,.reward-ship-found .reward-ship-wing,.reward-ship-found .reward-engine-cells{opacity:0}
.reward-ship-found.is-playing .reward-ship-body{animation:assembleBody .55s .12s cubic-bezier(.2,.9,.25,1.25) forwards}
.reward-ship-found.is-playing .reward-ship-body i{animation:assembleWindow .38s .62s cubic-bezier(.2,.9,.25,1.3) both}
.reward-ship-found.is-playing .reward-ship-wing-left{animation:assembleLeft .48s .72s cubic-bezier(.2,.9,.25,1.25) forwards}
.reward-ship-found.is-playing .reward-ship-wing-right{animation:assembleRight .48s .86s cubic-bezier(.2,.9,.25,1.25) forwards}
.reward-ship-found.is-playing .reward-engine-cells{animation:assembleEngine .48s 1.04s cubic-bezier(.2,.9,.25,1.25) forwards}
.reward-ship-found.is-playing .reward-flash{animation:cinematicFlash .62s 1.44s ease-out}
.reward-ship-found.is-playing .reward-ship{animation:finishedShipLift 2.9s 1.5s ease-in-out both}
.reward-ship-found.is-playing .result-cat{animation:catSurprise 1.1s 1.2s ease-in-out both}

/* Missions 6–9 feed individual engine cells. */
.reward-engine-step .reward-ship-body,.reward-engine-step .reward-ship-wing,.reward-engine-step .reward-engine-cells{opacity:1;filter:none}
.reward-engine-step[data-level="6"] .reward-engine-cells i:nth-child(-n+1),
.reward-engine-step[data-level="7"] .reward-engine-cells i:nth-child(-n+2),
.reward-engine-step[data-level="8"] .reward-engine-cells i:nth-child(-n+3),
.reward-engine-step[data-level="9"] .reward-engine-cells i:nth-child(-n+4){background:#ffd34d;box-shadow:0 0 9px #ff9a3c}
.reward-engine-step.is-playing .crystal{opacity:1;animation:energyArcToEngine 1.35s ease-in-out both}
.reward-engine-step.is-playing .reward-ship{animation:engineCellKick 1.55s ease-out both}
.reward-engine-step.is-playing .reward-ship-flame{opacity:.45;animation:engineBurn .25s 1.05s ease-in-out 3 alternate}

/* Tenth mission: the engine wakes up in a clear three-part sequence. */
.reward-engine .reward-ship-body,.reward-engine .reward-ship-wing,.reward-engine .reward-engine-cells{opacity:1;filter:none}
.reward-engine.is-playing .reward-engine-cells i:nth-child(1){animation:cellIgnite .22s .15s forwards}.reward-engine.is-playing .reward-engine-cells i:nth-child(2){animation:cellIgnite .22s .35s forwards}.reward-engine.is-playing .reward-engine-cells i:nth-child(3){animation:cellIgnite .22s .55s forwards}.reward-engine.is-playing .reward-engine-cells i:nth-child(4){animation:cellIgnite .22s .75s forwards}.reward-engine.is-playing .reward-engine-cells i:nth-child(5){animation:cellIgnite .22s .95s forwards}
.reward-engine.is-playing .reward-ship{animation:engineWake 2.9s ease-in-out both}
.reward-engine.is-playing .reward-ship-flame{animation:engineIgnition 2.9s ease-in-out both}
.reward-engine.is-playing .reward-flash{animation:engineLight 1.4s 1.02s ease-out both}
.reward-engine.is-playing .result-cat{animation:catWind 1.5s 1s ease-in-out both}

/* Missions 11–14 visibly build the gate from a faint ring. */
.reward-portal-step .reward-ship-body,.reward-portal-step .reward-ship-wing,.reward-portal-step .reward-engine-cells{opacity:1;filter:none}
.reward-portal-step .reward-ship-flame{opacity:1;animation:engineBurn .26s ease-in-out infinite alternate}
.reward-portal-step .reward-portal{opacity:1;transform:translateY(-50%) scale(calc(.42 + ((var(--portal-step,1)) * .1)))}
.reward-portal-step[data-level="11"]{--portal-step:1}.reward-portal-step[data-level="12"]{--portal-step:2}.reward-portal-step[data-level="13"]{--portal-step:3}.reward-portal-step[data-level="14"]{--portal-step:4}
.reward-portal-step.is-playing .crystal{opacity:1;animation:energyArcToPortal 1.35s ease-in-out both}
.reward-portal-step.is-playing .reward-portal i{animation:portalBuildSpin 1.55s ease-out both}
.reward-portal-step.is-playing .reward-portal b{animation:portalGrow .72s .7s ease-out both}
.reward-portal-step.is-playing .reward-flash{animation:portalFlash .5s 1.05s ease-out}

/* Final mission: the gate forms, opens, and pulls the ship through. */
.reward-launch .reward-ship-body,.reward-launch .reward-ship-wing,.reward-launch .reward-engine-cells{opacity:1;filter:none}
.reward-launch .reward-portal{opacity:1;transform:translateY(-50%) scale(1)}
.reward-launch.is-playing .reward-portal i{animation:portalCinematic 3.7s ease-in-out both}
.reward-launch.is-playing .reward-portal b{animation:portalCoreOpen 3.7s ease-in-out both}
.reward-launch.is-playing .reward-flash{animation:finalPortalFlash 3.7s ease-in-out both}
.reward-launch.is-playing .reward-ship{animation:cinematicLaunch 3.7s ease-in-out both}
.reward-launch.is-playing .reward-ship-flame{animation:launchFlame 3.7s ease-in-out both}
.reward-launch.is-playing .reward-speed-lines{opacity:1}
.reward-launch.is-playing .reward-speed-lines i{animation:speedLine .48s 2.05s linear 4}
.reward-launch.is-playing .result-cat{animation:catLaunchWave 3.7s ease-in-out both}
.reward-launch.is-playing .reward-next-planet{animation:planetReveal 3.7s ease-in-out both}

@keyframes mapShipSearch{to{transform:translate(-50%,-54%) rotate(4deg);filter:drop-shadow(0 0 15px rgba(112,217,207,.5))}}
@keyframes shipScanner{0%{top:-14px;opacity:0}18%{opacity:1}82%{opacity:1}100%{top:155px;opacity:0}}
@keyframes foundPartGlow{to{filter:none drop-shadow(0 0 6px rgba(112,217,207,.7))}}
@keyframes mapEngineRumble{from{transform:translate(-50%,-50%) rotate(7.2deg)}to{transform:translate(-50%,-51%) rotate(8.8deg)}}
@keyframes shipAura{to{transform:scale(1.05);filter:blur(2px)}}
@keyframes portalPull{to{transform:translate(-46%,-51%) rotate(11deg)}}
@keyframes portalCorePulse{to{filter:brightness(1.35);box-shadow:inset 0 0 34px #fff,0 0 30px #70d9cf}}
@keyframes energyToEngine{0%{transform:translate(0,0) scale(.25);opacity:0}20%{opacity:1}100%{transform:translate(-390px,75px) scale(1.25);opacity:0}}
@keyframes goalBounce{to{transform:translateY(-4px) scale(1.08)}}
@keyframes goalSweep{to{left:110%}}
@keyframes cinematicStar{to{opacity:1;transform:scale(1.7)}}
@keyframes energyArcToShip{0%{transform:translate(-50px,35px) scale(.25);opacity:0}22%{opacity:1}62%{transform:translate(100px,-55px) scale(1.1)}100%{transform:translate(250px,5px) scale(.08);opacity:0}}
@keyframes shipReceiveEnergy{0%,67%{filter:drop-shadow(0 12px 9px rgba(5,10,34,.58))}77%{transform:translate(-50%,-50%) rotate(4deg) scale(1.12);filter:drop-shadow(0 0 28px #70d9cf)}100%{transform:translate(-50%,-54%) rotate(7deg);filter:drop-shadow(0 0 12px #ffd34d)}}
@keyframes assembleBody{from{opacity:0;transform:translateY(-130px) rotate(-22deg) scale(.45)}to{opacity:1;transform:none}}
@keyframes assembleWindow{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}
@keyframes assembleLeft{from{opacity:0;transform:translate(-130px,35px) rotate(-70deg)}to{opacity:1;transform:rotate(-15deg)}}
@keyframes assembleRight{from{opacity:0;transform:translate(130px,35px) scaleX(-1) rotate(-70deg)}to{opacity:1;transform:scaleX(-1) rotate(-15deg)}}
@keyframes assembleEngine{from{opacity:0;transform:translateY(90px) scale(.4)}to{opacity:1;transform:none}}
@keyframes cinematicFlash{0%{opacity:0}22%{opacity:1}100%{opacity:0}}
@keyframes finishedShipLift{0%{transform:translate(-50%,-50%) rotate(8deg)}25%{transform:translate(-50%,-58%) rotate(2deg) scale(1.08);filter:drop-shadow(0 0 30px #70d9cf)}55%{transform:translate(-50%,-62%) rotate(6deg) scale(1.04)}100%{transform:translate(-50%,-58%) rotate(4deg) scale(1.08);filter:drop-shadow(0 0 20px #ffd34d)}}
@keyframes catSurprise{50%{transform:scale(1.5) translateY(-15%) rotate(-4deg)}100%{transform:scale(1.42) translateY(-9%)}}
@keyframes energyArcToEngine{0%{transform:translate(-70px,15px) scale(.25);opacity:0}25%{opacity:1}70%{transform:translate(185px,35px) scale(.8)}100%{transform:translate(248px,62px) scale(.05);opacity:0}}
@keyframes engineCellKick{0%,70%{transform:translate(-50%,-50%) rotate(8deg)}80%{transform:translate(-50%,-54%) rotate(6deg) scale(1.05);filter:drop-shadow(0 0 26px #ffd34d)}100%{transform:translate(-50%,-51%) rotate(8deg)}}
@keyframes cellIgnite{to{background:#ffd34d;box-shadow:0 0 11px #ff9a3c,0 0 20px #ffd34d}}
@keyframes engineWake{0%,33%{transform:translate(-50%,-50%) rotate(8deg)}38%,44%,50%{transform:translate(-51%,-50%) rotate(7deg)}41%,47%,53%{transform:translate(-49%,-50%) rotate(9deg)}65%{transform:translate(-50%,-60%) rotate(4deg) scale(1.07);filter:drop-shadow(0 0 30px #ffd34d)}100%{transform:translate(-50%,-55%) rotate(5deg) scale(1.04);filter:drop-shadow(0 0 18px #ff9a3c)}}
@keyframes engineIgnition{0%,35%{opacity:0;transform:scaleY(.08)}45%{opacity:1;transform:scaleY(1.8)}58%{transform:scaleY(.65)}100%{opacity:1;transform:scaleY(1.25);filter:drop-shadow(0 0 18px #ff9a3c)}}
@keyframes engineLight{0%{opacity:0}22%{opacity:.9}100%{opacity:0}}
@keyframes catWind{35%{transform:scale(1.42) translateY(-9%) rotate(0)}58%{transform:scale(1.42) translate(-3%,-10%) rotate(-5deg)}100%{transform:scale(1.42) translateY(-9%)}}
@keyframes energyArcToPortal{0%{transform:translate(-75px,35px) scale(.22);opacity:0}24%{opacity:1}62%{transform:translate(180px,-55px) scale(1.05)}100%{transform:translate(365px,0) scale(.08);opacity:0}}
@keyframes portalBuildSpin{0%{transform:rotate(-110deg) scale(.2);opacity:.08}70%{transform:rotate(320deg) scale(1.18);opacity:1}100%{transform:rotate(360deg) scale(1);opacity:1}}
@keyframes portalGrow{from{opacity:0;transform:scale(.1)}to{opacity:.8;transform:scale(1)}}
@keyframes portalFlash{0%{opacity:0}40%{opacity:.75}100%{opacity:0}}
@keyframes portalCinematic{0%{transform:rotate(-180deg) scale(.06);opacity:0}22%{opacity:1}48%{transform:rotate(360deg) scale(1.08)}100%{transform:rotate(760deg) scale(1);opacity:1}}
@keyframes portalCoreOpen{0%,18%{opacity:0;transform:scale(.05)}45%{opacity:1;transform:scale(1.15)}100%{opacity:1;transform:scale(1)}}
@keyframes finalPortalFlash{0%,35%{opacity:0}48%{opacity:1}66%,100%{opacity:0}}
@keyframes cinematicLaunch{0%,47%{transform:translate(-50%,-50%) rotate(8deg) scale(1)}58%{transform:translate(-58%,-59%) rotate(5deg) scale(1.08);filter:drop-shadow(0 0 28px #ffd34d)}78%{transform:translate(120%,-52%) rotate(74deg) scale(.62)}100%{transform:translate(238%,-51%) rotate(86deg) scale(.07);opacity:0}}
@keyframes launchFlame{0%,44%{opacity:0;transform:scaleY(.1)}57%{opacity:1;transform:scaleY(2)}80%{opacity:1;transform:scaleY(1.3)}100%{opacity:0;transform:scaleY(.5)}}
@keyframes speedLine{to{transform:translateX(210%)}}
@keyframes catLaunchWave{0%,45%{transform:scale(1.42) translateY(-9%)}60%{transform:scale(1.42) translateY(-14%) rotate(-6deg)}100%{transform:scale(1.42) translateY(-9%) rotate(2deg)}}
@keyframes planetReveal{0%,70%{opacity:0;transform:scale(.35)}100%{opacity:1;transform:scale(1)}}

@media(max-width:700px){
  .story-stage{height:230px}
  .story-stage .story-cat-crop{left:-3%;width:104px}
  .story-goals{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  .story-goal{min-height:44px;padding:6px 5px;gap:5px}
  .story-goal .goal-symbol{width:21px;height:22px;transform:scale(.9)}.story-goal strong{font-size:.7rem}
  .result-card{margin:7px auto;padding:12px 10px 18px}
  .result-animation{height:224px}
  .reward-scene .result-cat-crop{left:-5%;width:142px;height:147px}
  .reward-ship{left:61%;transform:translate(-50%,-50%) rotate(8deg) scale(.8)}
  .reward-portal{right:-5%;transform:translateY(-50%) scale(.7)}
  .reward-portal-step .reward-portal{transform:translateY(-50%) scale(calc(.34 + ((var(--portal-step,1)) * .07)))}
  .reward-scene .crystal{left:25%;top:76px;font-size:3.8rem}
  .result-card .eyebrow{font-size:.73rem}
  .result-stats{padding:10px 14px;margin:9px 0}
  .result-actions .primary-button,.result-actions .secondary-button{min-height:44px;padding:0 17px}
  @keyframes energyToEngine{0%{transform:translate(0,0) scale(.25);opacity:0}20%{opacity:1}100%{transform:translate(-230px,58px) scale(1.15);opacity:0}}
  @keyframes energyArcToShip{0%{transform:translate(-35px,32px) scale(.25);opacity:0}22%{opacity:1}62%{transform:translate(64px,-45px) scale(1)}100%{transform:translate(148px,2px) scale(.08);opacity:0}}
  @keyframes energyArcToEngine{0%{transform:translate(-40px,15px) scale(.25);opacity:0}25%{opacity:1}70%{transform:translate(106px,25px) scale(.75)}100%{transform:translate(145px,49px) scale(.05);opacity:0}}
  @keyframes energyArcToPortal{0%{transform:translate(-48px,28px) scale(.22);opacity:0}24%{opacity:1}62%{transform:translate(100px,-45px) scale(.95)}100%{transform:translate(222px,0) scale(.08);opacity:0}}
  @keyframes cinematicLaunch{0%,47%{transform:translate(-50%,-50%) rotate(8deg) scale(.8)}58%{transform:translate(-58%,-59%) rotate(5deg) scale(.9);filter:drop-shadow(0 0 28px #ffd34d)}78%{transform:translate(95%,-52%) rotate(74deg) scale(.45)}100%{transform:translate(205%,-51%) rotate(86deg) scale(.05);opacity:0}}
}

/* v25 game-cinematic layer: anticipation, impact, particles and stronger story beats. */
.battle-fx-canvas,.reward-fx-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.battle-fx-canvas{z-index:5}
.reward-fx-canvas{z-index:20}
.danger-vignette{position:absolute;z-index:4;inset:-2px;opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 72%,transparent 0 28%,rgba(255,91,83,.12) 58%,rgba(7,8,34,.74) 100%);mix-blend-mode:screen;transition:opacity .6s ease}
.battle-stage.danger-near .danger-vignette{opacity:.32;animation:vignetteBreathe 1.4s ease-in-out infinite alternate}
.battle-stage.danger-high .danger-vignette{opacity:.62;animation-duration:.78s}
.battle-stage.danger-critical .danger-vignette{opacity:1;animation-duration:.34s}
.battle-stage.danger-near .star-curtain{filter:drop-shadow(0 0 14px rgba(255,211,77,.72)) drop-shadow(0 0 24px rgba(255,94,83,.18))}
.battle-stage.danger-high .star-curtain{animation:dangerShowerSurge .54s ease-in-out infinite alternate}
.battle-stage.danger-critical:not(.is-impact){animation:criticalCamera .2s linear infinite}
.battle-stage.danger-critical:not(.is-impact) .star-curtain{filter:drop-shadow(0 0 18px #ffd34d) drop-shadow(0 0 35px rgba(255,79,89,.65));animation-duration:.2s}
.battle-stage.danger-high .shower-meter{box-shadow:inset 0 0 0 1px rgba(255,255,255,.52),0 0 21px rgba(255,154,60,.72);animation:meterAlarm .72s ease-in-out infinite alternate}
.battle-stage.danger-critical .shower-meter{animation-duration:.28s}

.hero-alert{position:absolute;z-index:12;right:4%;top:-15%;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;opacity:0;transform:translateY(18px) scale(.3) rotate(-10deg);color:#17365f;background:#ffd34d;border:4px solid #fff;font-size:1.65rem;font-weight:1000;box-shadow:0 0 0 5px rgba(255,211,77,.15),0 8px 16px rgba(7,13,41,.34)}
.hero-zone.danger-near .hero-alert{animation:alertPop .62s cubic-bezier(.2,.9,.25,1.35) both}
.hero-zone.danger-near:not(.impact) .hero-cat{animation:catLooksUp 1.2s ease-in-out infinite alternate;filter:drop-shadow(0 15px 11px rgba(7,13,41,.42)) drop-shadow(0 0 8px rgba(255,211,77,.22))}
.hero-zone.danger-high:not(.impact) .hero-cat{animation:catNervous .42s ease-in-out infinite alternate}
.hero-zone.danger-critical:not(.impact) .hero-cat{animation:catPanic .11s linear infinite;filter:drop-shadow(0 13px 9px rgba(7,13,41,.48)) drop-shadow(0 0 16px rgba(255,154,60,.45))}
.hero-zone.danger-high .hero-shadow{animation:shadowPulse .45s ease-in-out infinite alternate}

.hero-shield{position:absolute;z-index:10;left:50%;top:40%;width:118%;aspect-ratio:1.45;border:5px solid rgba(255,255,255,.9);border-radius:50%;opacity:0;transform:translate(-50%,-50%) scale(.25);background:radial-gradient(ellipse,rgba(255,255,255,.23),rgba(112,217,207,.18) 45%,rgba(115,85,183,.1) 65%,transparent 68%);box-shadow:inset 0 0 35px rgba(255,255,255,.8),0 0 28px rgba(112,217,207,.9)}
.hero-shield i{position:absolute;left:50%;top:50%;width:2px;height:34%;background:rgba(255,255,255,.8);transform-origin:0 0;opacity:0}
.hero-shield i:nth-child(1){transform:rotate(22deg)}.hero-shield i:nth-child(2){transform:rotate(137deg)}.hero-shield i:nth-child(3){transform:rotate(252deg)}

.impact-shockwaves{position:absolute;z-index:15;left:50%;top:72%;width:18px;height:18px;pointer-events:none;transform:translate(-50%,-50%)}
.impact-shockwaves i{position:absolute;inset:0;border:5px solid #fff;border-radius:50%;opacity:0;box-shadow:0 0 22px #ffd34d}
.impact-debris{position:absolute;z-index:14;left:50%;top:74%;width:1px;height:1px;pointer-events:none}
.impact-debris i{--angle:0deg;--distance:170px;position:absolute;width:10px;height:19px;border-radius:60% 20% 60% 30%;opacity:0;background:#ffd34d;box-shadow:0 0 11px currentColor;transform:rotate(var(--angle)) translateY(0)}
.impact-debris i:nth-child(2){--angle:45deg;--distance:210px;background:#fff}.impact-debris i:nth-child(3){--angle:90deg;--distance:155px;background:#ff9a3c}.impact-debris i:nth-child(4){--angle:135deg;--distance:205px;background:#70d9cf}.impact-debris i:nth-child(5){--angle:180deg;--distance:180px;background:#fff}.impact-debris i:nth-child(6){--angle:225deg;--distance:220px;background:#e64e89}.impact-debris i:nth-child(7){--angle:270deg;--distance:160px;background:#ffd34d}.impact-debris i:nth-child(8){--angle:315deg;--distance:200px;background:#70d9cf}

.battle-stage.is-impact{animation:impactCameraEpic 2.05s cubic-bezier(.22,.74,.2,1) both}
.battle-stage.is-impact .danger-vignette{opacity:1;animation:impactVignette 2.05s ease-out both}
.battle-stage.is-impact .star-curtain{animation:meteorCollapse 1.05s cubic-bezier(.18,.75,.22,1) both;filter:drop-shadow(0 0 28px #fff) drop-shadow(0 0 52px #ff9a3c)}
.battle-stage.is-impact .star-curtain span{animation:starImpactEpic 1.05s cubic-bezier(.15,.8,.3,1) both}
.battle-stage.is-impact .impact-flash{animation:impactFlashEpic 2.05s ease-out both}
.battle-stage.is-impact .impact-flash i{position:absolute;left:50%;top:72%;width:32px;height:32px;border-radius:50%;transform:translate(-50%,-50%);background:#fff;box-shadow:0 0 35px 18px #fff,0 0 70px 40px #ffd34d,0 0 130px 75px rgba(255,112,72,.72);animation:impactCore 2.05s ease-out both}
.battle-stage.is-impact .impact-shockwaves i:nth-child(1){animation:shockwave 1s .18s ease-out both}.battle-stage.is-impact .impact-shockwaves i:nth-child(2){animation:shockwave 1.15s .34s ease-out both}.battle-stage.is-impact .impact-shockwaves i:nth-child(3){animation:shockwave 1.3s .5s ease-out both}
.battle-stage.is-impact .impact-debris i{animation:debrisBurst 1.18s .2s cubic-bezier(.15,.65,.25,1) both}
.hero-zone.impact .hero-cat{animation:heroImpactEpic 2.05s cubic-bezier(.2,.75,.3,1) both;filter:drop-shadow(0 0 18px rgba(255,255,255,.95)) drop-shadow(0 18px 12px rgba(7,13,41,.5))}
.hero-zone.impact .hero-alert{animation:alertFly 1s ease-out both}
.hero-zone.impact .hero-shield{animation:shieldImpact 2.05s ease-out both}
.hero-zone.impact .hero-shield i{animation:shieldCrack .55s .5s ease-out both}
.hero-zone.impact .hero-shadow{animation:impactShadow 2.05s ease-out both}

.reward-aurora{position:absolute;z-index:1;inset:-35%;opacity:.22;background:conic-gradient(from 40deg,transparent,#70d9cf,transparent 25%,#e64e89,transparent 55%,#ffd34d,transparent 78%);filter:blur(24px);animation:auroraTurn 8s linear infinite}
.reward-impact-ground{position:absolute;z-index:4;left:17%;bottom:5%;width:52%;height:18%;opacity:0;border-radius:50%;background:radial-gradient(ellipse,rgba(255,211,77,.72),rgba(255,154,60,.25) 38%,transparent 68%)}
.reward-impact-ground i{position:absolute;left:50%;top:45%;width:10px;height:10px;border:3px solid #fff;border-radius:50%;opacity:0;transform:translate(-50%,-50%)}
.reward-failed.is-playing .reward-impact-ground{animation:failedGroundGlow 2.1s ease-in-out infinite}
.reward-failed.is-playing .reward-impact-ground i:nth-child(1){animation:failedRing 1.2s .05s ease-out infinite}.reward-failed.is-playing .reward-impact-ground i:nth-child(2){animation:failedRing 1.2s .32s ease-out infinite}.reward-failed.is-playing .reward-impact-ground i:nth-child(3){animation:failedRing 1.2s .59s ease-out infinite}
.reward-failed.is-playing .result-cat{animation:catRecover 2.2s ease-in-out infinite}
.reward-failed.is-playing .result-cat-crop:after{content:"✦  ✧  ★";position:absolute;left:29%;top:4%;color:#ffd34d;font-size:1.25rem;letter-spacing:.42em;text-shadow:0 0 9px #ff9a3c;animation:dizzyOrbit 2.2s linear infinite}

.reward-ship-found.is-playing{animation:sceneMagnetism 4.4s ease-in-out both}
.reward-ship-found.is-playing .reward-space-stars{animation:starsRushIn 1.55s ease-out both}
.reward-engine.is-playing{animation:sceneEngineIgnition 3.25s ease-in-out both}
.reward-engine.is-playing .reward-aurora{animation:engineAurora 3.2s ease-out both}
.reward-engine.is-playing .reward-space-stars{animation:engineStarBlast 3.2s ease-out both}
.reward-launch.is-playing{animation:scenePortalPull 3.9s ease-in-out both}
.reward-launch.is-playing .reward-aurora{opacity:.56;animation:portalAurora 3.9s ease-in-out both}
.reward-launch.is-playing .reward-space-stars{animation:warpStars 3.9s ease-in-out both}
.reward-launch.is-playing .reward-portal{animation:portalBreathe 3.9s ease-in-out both}
.reward-ship-step.is-playing,.reward-engine-step.is-playing,.reward-portal-step.is-playing{animation:sceneEnergyKick 1.65s ease-out both}

@keyframes vignetteBreathe{to{filter:brightness(1.35);transform:scale(1.035)}}
@keyframes dangerShowerSurge{to{transform:translateY(8px) scale(1.025)}}
@keyframes criticalCamera{0%{transform:translate(0,0)}25%{transform:translate(-1px,1px)}50%{transform:translate(1px,-1px)}75%{transform:translate(1px,1px)}100%{transform:translate(-1px,-1px)}}
@keyframes meterAlarm{to{filter:brightness(1.35);transform:scaleX(1.24)}}
@keyframes alertPop{0%{opacity:0;transform:translateY(18px) scale(.3) rotate(-10deg)}55%{opacity:1;transform:translateY(-7px) scale(1.18) rotate(7deg)}100%{opacity:1;transform:none}}
@keyframes catLooksUp{0%{transform:scale(1.25) translateY(-10%) rotate(0)}100%{transform:scale(1.25) translateY(-12%) rotate(-2deg)}}
@keyframes catNervous{0%{transform:scale(1.25) translate(-.5%,-10%) rotate(-1deg)}100%{transform:scale(1.25) translate(.5%,-9%) rotate(1deg)}}
@keyframes catPanic{0%{transform:scale(1.25) translate(-1.2%,-9%) rotate(-1deg)}50%{transform:scale(1.25) translate(1.2%,-10%) rotate(1deg)}100%{transform:scale(1.25) translate(-1%,-9%) rotate(0)}}
@keyframes shadowPulse{to{transform:scaleX(1.18);opacity:.75}}
@keyframes impactCameraEpic{0%,8%{transform:none;filter:brightness(1)}10%{transform:scale(1.025);filter:brightness(.78)}13%{transform:translate(-8px,5px) scale(1.035);filter:brightness(1.8)}17%{transform:translate(7px,-5px) scale(1.03)}22%{transform:translate(-5px,4px) scale(1.024)}30%{transform:translate(4px,-3px) scale(1.018)}42%{transform:translate(-2px,2px) scale(1.01)}65%{transform:none;filter:brightness(.82)}100%{transform:scale(.985);filter:brightness(.55) saturate(.78)}}
@keyframes impactVignette{0%,8%{opacity:.75}13%{opacity:0}20%{opacity:1}100%{opacity:.92;background:radial-gradient(circle at 50% 72%,transparent 0 25%,rgba(255,91,83,.17) 50%,rgba(7,8,34,.92) 100%)}}
@keyframes meteorCollapse{0%,7%{transform:none}20%{transform:translateY(18%) scale(1.08)}36%{transform:translateY(63%) scale(1.2)}100%{transform:translateY(92%) scale(1.45);opacity:0}}
@keyframes starImpactEpic{0%{opacity:1}35%{transform:translateY(44px) scale(1.5);opacity:1}100%{transform:translateY(130px) scale(.25) rotate(160deg);opacity:0}}
@keyframes impactFlashEpic{0%,8%{opacity:0}12%{opacity:1}18%{opacity:.08}25%{opacity:.62}42%{opacity:.12}100%{opacity:0}}
@keyframes impactCore{0%,8%{opacity:0;transform:translate(-50%,-50%) scale(.05)}13%{opacity:1;transform:translate(-50%,-50%) scale(1.45)}22%{opacity:.85;transform:translate(-50%,-50%) scale(.75)}60%{opacity:.25;transform:translate(-50%,-50%) scale(2.8)}100%{opacity:0;transform:translate(-50%,-50%) scale(4.5)}}
@keyframes shockwave{0%{opacity:.95;transform:translate(-50%,-50%) scale(.15)}100%{opacity:0;transform:translate(-50%,-50%) scale(23)}}
@keyframes debrisBurst{0%,8%{opacity:0;transform:rotate(var(--angle)) translateY(0) scale(.2)}19%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateY(calc(0px - var(--distance))) rotate(260deg) scale(.65)}}
@keyframes heroImpactEpic{0%,8%{transform:scale(1.25) translateY(-10%)}11%{transform:scale(1.32) translateY(-17%) scaleY(1.04)}18%{transform:scale(1.2) translateY(-1%) scaleY(.78) rotate(-4deg)}30%{transform:scale(1.22) translateY(-3%) scaleY(.84) rotate(3deg)}54%{transform:scale(1.21) translateY(-2%) scaleY(.82)}78%,100%{transform:scale(1.23) translateY(-4%) scaleY(.88);filter:grayscale(.18) drop-shadow(0 15px 11px rgba(7,13,41,.48))}}
@keyframes alertFly{0%{opacity:1;transform:none}25%{opacity:1;transform:translate(25px,-30px) scale(1.4) rotate(22deg)}100%{opacity:0;transform:translate(70px,-105px) scale(.4) rotate(120deg)}}
@keyframes shieldImpact{0%,9%{opacity:0;transform:translate(-50%,-50%) scale(.2)}13%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}21%{opacity:.9;transform:translate(-50%,-50%) scale(.98)}42%{opacity:.7;transform:translate(-50%,-50%) scale(1.04)}72%,100%{opacity:0;transform:translate(-50%,-50%) scale(1.26)}}
@keyframes shieldCrack{0%{opacity:0;height:0}45%{opacity:1;height:34%}100%{opacity:0;height:43%}}
@keyframes impactShadow{0%,9%{transform:none}18%{transform:scaleX(1.5);opacity:.75}100%{transform:scaleX(1.1);opacity:.35}}
@keyframes auroraTurn{to{transform:rotate(360deg)}}
@keyframes failedGroundGlow{0%,100%{opacity:.28;transform:scale(.82)}50%{opacity:.72;transform:scale(1.08)}}
@keyframes failedRing{0%{opacity:.8;transform:translate(-50%,-50%) scale(.2)}100%{opacity:0;transform:translate(-50%,-50%) scale(8)}}
@keyframes catRecover{0%,100%{transform:scale(1.42) translateY(-9%) rotate(-2deg)}25%{transform:scale(1.42) translateY(-7%) rotate(3deg)}50%{transform:scale(1.42) translateY(-10%) rotate(-3deg)}75%{transform:scale(1.42) translateY(-8%) rotate(2deg)}}
@keyframes dizzyOrbit{to{transform:rotate(360deg)}}
@keyframes sceneMagnetism{0%{filter:brightness(.72) saturate(.8)}35%{filter:brightness(1.18) saturate(1.18)}48%{transform:scale(1.012)}100%{filter:none;transform:none}}
@keyframes starsRushIn{0%{transform:scale(1.55);opacity:.15}100%{transform:none;opacity:1}}
@keyframes sceneEngineIgnition{0%,33%{filter:brightness(.58) saturate(.72)}42%{transform:translateX(-4px);filter:brightness(.72)}45%{transform:translateX(5px)}48%{transform:translateX(-3px)}55%{transform:scale(1.018);filter:brightness(1.72) saturate(1.35)}100%{transform:none;filter:none}}
@keyframes engineAurora{0%,35%{opacity:.08}58%{opacity:.85;transform:rotate(115deg) scale(1.12)}100%{opacity:.32;transform:rotate(150deg)}}
@keyframes engineStarBlast{0%,48%{transform:none}64%{transform:translateY(-15px) scale(1.16);opacity:1}100%{transform:translateY(-38px) scale(1.3);opacity:.45}}
@keyframes scenePortalPull{0%,38%{filter:brightness(.62) saturate(.8)}50%{transform:scale(1.02);filter:brightness(1.45) saturate(1.4)}72%{transform:translateX(-5px) scale(1.025)}100%{transform:none;filter:brightness(1.08)}}
@keyframes portalAurora{0%{transform:rotate(-80deg) scale(.4);opacity:0}50%{transform:rotate(160deg) scale(1.1);opacity:.78}100%{transform:rotate(410deg) scale(1.5);opacity:.16}}
@keyframes warpStars{0%,45%{transform:none}62%{transform:scaleX(1.5);filter:blur(1px)}100%{transform:translateX(-38px) scaleX(2.4);opacity:.28;filter:blur(2px)}}
@keyframes portalBreathe{0%{filter:brightness(.55)}45%{filter:brightness(1.55) drop-shadow(0 0 22px #70d9cf)}70%{transform:translateY(-50%) scale(1.13)}100%{transform:translateY(-50%) scale(1);filter:brightness(1.18)}}
@keyframes sceneEnergyKick{0%,58%{filter:brightness(.76)}72%{transform:scale(1.012);filter:brightness(1.35)}100%{transform:none;filter:none}}

@media(max-width:620px){
  .hero-alert{right:-2%;top:-12%;width:36px;height:36px;border-width:3px;font-size:1.35rem}
  .impact-debris i{--distance:120px}
  .impact-debris i:nth-child(2),.impact-debris i:nth-child(4),.impact-debris i:nth-child(6),.impact-debris i:nth-child(8){--distance:145px}
  .hero-shield{width:128%}
}

@media(prefers-reduced-motion:reduce){
  .battle-fx-canvas,.reward-fx-canvas{display:none}
  .battle-stage.danger-critical:not(.is-impact),.battle-stage.is-impact,.hero-zone.impact .hero-cat,.reward-scene.is-playing{animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* v27: confident helmet pose and a deliberately readable before -> reward -> after rhythm. */
.hero-cat-crop{isolation:isolate}
.hero-cat-neutral{transition:opacity .18s ease}
.hero-cat-gear{position:absolute;z-index:5;inset:0;pointer-events:none;opacity:0}
.hero-helmet{position:absolute;left:36%;top:12%;width:42%;height:18%;border:4px solid #17365f;border-radius:54% 54% 18% 18% / 82% 82% 22% 22%;background:linear-gradient(135deg,#fff6a9 0 14%,#ffd34d 15% 62%,#ff9a3c 63% 100%);box-shadow:inset -7px -4px 0 rgba(198,93,45,.18),0 4px 0 rgba(12,22,58,.18),0 0 14px rgba(255,211,77,.58);transform-origin:50% 100%}
.hero-helmet:before{content:"";position:absolute;left:45%;top:1%;bottom:5%;width:10%;border-radius:99px;background:rgba(255,255,255,.58);transform:rotate(-2deg)}
.hero-helmet:after{content:"";position:absolute;left:-10%;right:-10%;bottom:-7px;height:9px;border:3px solid #17365f;border-radius:999px;background:#ffbd3f;box-shadow:0 3px 0 rgba(10,20,55,.22)}
.hero-wink{position:absolute;left:52%;top:38%;width:13%;height:8%;border-radius:50%;background:#211e1b;border-bottom:4px solid #f4b731;transform:rotate(-10deg) scale(.65);box-shadow:0 2px 0 rgba(255,255,255,.18)}
.hero-zone.danger-high .hero-cat-gear,.hero-zone.danger-critical .hero-cat-gear,.hero-zone.impact .hero-cat-gear{opacity:1}
.hero-zone.danger-high .hero-helmet{animation:helmetDropsOn .62s cubic-bezier(.18,.9,.22,1.28) both}
.hero-zone.danger-high .hero-wink{animation:winkAppears .42s .2s cubic-bezier(.18,.9,.22,1.28) both}
.hero-zone.danger-critical:not(.impact) .hero-cat-neutral{animation:catHelmetBrace .13s linear infinite}
.hero-zone.impact .hero-cat-neutral{animation:heroHelmetImpact 2.05s cubic-bezier(.2,.75,.3,1) both}
.hero-zone.impact .hero-cat-gear{animation:gearFollowsImpact 2.05s cubic-bezier(.2,.75,.3,1) both}

.reward-scene .result-cat-crop{left:1%;bottom:-1px;width:218px;height:248px;overflow:visible}
.reward-scene .result-cat{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transform:scale(1.18);transform-origin:50% 75%;filter:drop-shadow(0 13px 9px rgba(7,13,41,.46));opacity:0}
.reward-scene .result-cat-neutral{opacity:1}
.reward-scene.first-completion .result-cat-neutral{opacity:0}
.reward-scene.first-completion .result-cat-surprise{opacity:1;animation:catRewardWatch .95s ease-in-out both}
.reward-scene.first-completion.is-playing .result-cat-surprise{animation:catRewardSurpriseOut 2.05s ease-in-out both}
.reward-scene.first-completion.is-playing .result-cat-joy{animation:catRewardJoyIn 2.55s 1.18s cubic-bezier(.18,.82,.22,1.18) both}
.cat-joy-sparks{position:absolute;z-index:7;left:38%;top:14%;width:54%;height:38%;opacity:0;pointer-events:none}
.cat-joy-sparks i{position:absolute;color:#fff7a8;font-style:normal;font-size:1.25rem;text-shadow:0 0 8px #ffd34d,0 0 15px #ff9a3c}
.cat-joy-sparks i:nth-child(1){left:6%;top:18%}.cat-joy-sparks i:nth-child(2){right:7%;top:0;font-size:1.6rem}.cat-joy-sparks i:nth-child(3){right:0;bottom:4%}
.reward-scene.first-completion.is-playing .cat-joy-sparks{animation:joySparkCloud 1.75s 1.36s ease-out both}
.reward-scene.first-completion.is-playing .cat-joy-sparks i{animation:joySparkPop .58s ease-in-out infinite alternate}
.reward-scene.first-completion.is-playing .cat-joy-sparks i:nth-child(2){animation-delay:.15s}.reward-scene.first-completion.is-playing .cat-joy-sparks i:nth-child(3){animation-delay:.3s}

.reward-ship-antenna{position:absolute;z-index:5;left:47px;top:-13px;width:10px;height:27px;border:3px solid #17365f;border-bottom:0;border-radius:8px 8px 0 0;background:#70d9cf;transform-origin:50% 100%}
.reward-ship-antenna i{position:absolute;left:50%;top:-8px;width:13px;height:13px;border:3px solid #17365f;border-radius:50%;background:#ffd34d;transform:translateX(-50%);box-shadow:0 0 9px rgba(255,211,77,.85)}

.reward-scene.reward-state-ship [data-reward-part],
.reward-scene.reward-state-engine [data-reward-part],
.reward-scene.reward-state-portal [data-reward-part]{opacity:0;filter:grayscale(1) brightness(.48)}
.reward-scene.reward-state-ship [data-reward-part].is-earned,
.reward-scene.reward-state-engine [data-reward-part].is-earned,
.reward-scene.reward-state-portal [data-reward-part].is-earned{opacity:1;filter:none}
.reward-scene.reward-state-ship [data-reward-part].is-new-reward,
.reward-scene.reward-state-engine [data-reward-part].is-new-reward,
.reward-scene.reward-state-portal [data-reward-part].is-new-reward{opacity:0;filter:none}
.reward-scene.is-playing .reward-ship-body.is-new-reward{animation:rewardBodyArrives .92s 1.02s cubic-bezier(.18,.9,.2,1.25) forwards}
.reward-scene.is-playing .reward-ship-body i.is-new-reward{animation:rewardWindowArrives .82s 1.08s cubic-bezier(.18,.9,.2,1.3) forwards}
.reward-scene.is-playing .reward-ship-wing-left.is-new-reward{animation:rewardLeftWingArrives 1s .98s cubic-bezier(.18,.88,.2,1.22) forwards}
.reward-scene.is-playing .reward-ship-wing-right.is-new-reward{animation:rewardRightWingArrives 1s .98s cubic-bezier(.18,.88,.2,1.22) forwards}
.reward-scene.is-playing .reward-ship-antenna.is-new-reward{animation:rewardAntennaArrives .94s 1s cubic-bezier(.18,.9,.2,1.25) forwards}

.reward-state-engine .reward-ship-body,.reward-state-engine .reward-ship-wing,.reward-state-engine .reward-ship-antenna,
.reward-state-portal .reward-ship-body,.reward-state-portal .reward-ship-wing,.reward-state-portal .reward-ship-antenna{opacity:1;filter:none}
.reward-state-engine .reward-engine-cells i,.reward-state-portal .reward-engine-cells i{background:#35415f;box-shadow:inset 0 1px 2px rgba(255,255,255,.08)}
.reward-scene.reward-state-engine .reward-engine-cells i.is-earned,
.reward-scene.reward-state-portal .reward-engine-cells i.is-earned{background:#ffd34d;box-shadow:0 0 9px #ff9a3c,0 0 15px rgba(255,211,77,.62)}
.reward-scene.reward-state-engine .reward-engine-cells i.is-new-reward{background:#35415f;box-shadow:none}
.reward-state-engine.is-playing .reward-engine-cells i.is-new-reward{animation:rewardCellIgnites .92s 1.12s cubic-bezier(.18,.9,.2,1.28) forwards}
.reward-state-engine.is-playing .crystal{opacity:1;animation:energyArcToEngine 1.8s ease-in-out both}
.reward-state-engine.is-playing .reward-ship{animation:rewardShipReceivesCell 2.22s ease-out both}
.reward-engine-complete.is-playing .reward-ship{animation:engineWakeV26 3.3s 2.12s ease-in-out both}
.reward-engine-complete.is-playing .reward-ship-flame{animation:engineIgnitionV26 3.3s 2.12s ease-in-out both}
.reward-engine-complete.is-playing .reward-flash{animation:engineLight 1.5s 3.08s ease-out both}

.reward-portal-runes{position:absolute;z-index:5;inset:-9px -15px;pointer-events:none}
.reward-portal-runes em{position:absolute;color:#536081;font-style:normal;font-size:1.1rem;opacity:0;text-shadow:none}
.reward-portal-runes em:nth-child(1){left:7%;top:10%}.reward-portal-runes em:nth-child(2){right:0;top:27%}.reward-portal-runes em:nth-child(3){right:7%;bottom:14%}.reward-portal-runes em:nth-child(4){left:29%;bottom:-2%}.reward-portal-runes em:nth-child(5){left:-2%;top:53%}
.reward-state-portal .reward-portal{opacity:1;transform:translateY(-50%) scale(calc(.2 + (var(--portal-before) * .16)))}
.reward-state-portal .reward-portal-runes em.is-earned{opacity:1;color:#ffd34d;text-shadow:0 0 9px #ff9a3c,0 0 16px #70d9cf}
.reward-state-portal .reward-portal-runes em.is-new-reward{opacity:0}
.reward-state-portal.is-playing .reward-portal{animation:rewardPortalGrows 2.15s .02s ease-in-out both}
.reward-state-portal.is-playing .reward-portal-runes em.is-new-reward{animation:rewardRuneArrives 1.02s 1.04s cubic-bezier(.18,.9,.2,1.35) forwards}
.reward-state-portal.is-playing .reward-portal>i{animation:portalTurn 2.15s linear infinite}
.reward-state-portal.is-playing .crystal{opacity:1;animation:energyArcToPortal 1.85s ease-in-out both}
.reward-state-portal .reward-ship-flame{opacity:1;animation:engineBurn .25s ease-in-out infinite alternate}

.reward-ship-complete.is-playing .reward-ship{animation:finishedShipLiftV26 3.25s 2.02s ease-in-out both}
.reward-ship-complete.is-playing .reward-flash{animation:cinematicFlash .78s 2.08s ease-out}
.reward-engine-complete.is-playing{animation:sceneEngineIgnition 5.35s 1.92s ease-in-out both}
.reward-final-launch .reward-next-planet{opacity:0}
.reward-final-launch.is-playing .reward-portal>i{animation:portalCinematic 3.9s 2.12s ease-in-out both}
.reward-final-launch.is-playing .reward-portal>b{animation:portalCoreOpen 3.9s 2.12s ease-in-out both}
.reward-final-launch.is-playing .reward-flash{animation:finalPortalFlash 3.9s 2.12s ease-in-out both}
.reward-final-launch.is-playing .reward-ship{animation:cinematicLaunch 3.9s 2.12s ease-in-out both}
.reward-final-launch.is-playing .reward-ship-flame{animation:launchFlame 3.9s 2.12s ease-in-out both}
.reward-final-launch.is-playing .reward-speed-lines{opacity:1}
.reward-final-launch.is-playing .reward-speed-lines i{animation:speedLine .48s 4.25s linear 4}
.reward-final-launch.is-playing .reward-next-planet{animation:planetReveal 3.9s 2.12s ease-in-out both}

.reward-cinematic-locked .reward-pill,.reward-cinematic-locked .result-card>.eyebrow,.reward-cinematic-locked .result-card>h1:not([hidden]),
.reward-cinematic-locked .result-card>.result-stats,.reward-cinematic-locked .result-card>.result-actions{opacity:0;visibility:hidden;transform:translateY(8px);pointer-events:none}
.reward-reveal-complete .reward-pill,.reward-reveal-complete .result-card>.eyebrow,.reward-reveal-complete .result-card>h1:not([hidden]),
.reward-reveal-complete .result-card>.result-stats,.reward-reveal-complete .result-card>.result-actions{animation:rewardUiReveal .38s ease-out both}

@keyframes helmetDropsOn{0%{opacity:0;transform:translateY(-185%) rotate(-13deg) scale(.78)}68%{opacity:1;transform:translateY(9%) rotate(4deg) scale(1.05)}84%{transform:translateY(-4%) rotate(-2deg)}100%{opacity:1;transform:none}}
@keyframes winkAppears{0%{opacity:0;transform:rotate(-10deg) scale(.15)}70%{opacity:1;transform:rotate(-10deg) scale(.82)}100%{opacity:1;transform:rotate(-10deg) scale(.65)}}
@keyframes catHelmetBrace{0%{transform:scale(1.12) translate(-1%,-1%) rotate(-1deg)}50%{transform:scale(1.12) translate(1%,-3%) rotate(1deg)}100%{transform:scale(1.12) translate(-.7%,-1%)}}
@keyframes heroHelmetImpact{0%,8%{transform:scale(1.12) translateY(-2%)}14%{transform:scale(1.18) translateY(-8%)}22%{transform:scale(1.08) translateY(7%) scaleY(.82) rotate(-3deg)}54%{transform:scale(1.07) translateY(5%) scaleY(.85) rotate(2deg)}100%{transform:scale(1.08) translateY(4%) scaleY(.88)}}
@keyframes gearFollowsImpact{0%,8%{transform:none}14%{transform:translateY(-6%)}22%{transform:translateY(7%) scaleY(.84) rotate(-3deg)}54%{transform:translateY(5%) scaleY(.88) rotate(2deg)}100%{transform:translateY(4%) scaleY(.9)}}
@keyframes catRewardWatch{from{transform:scale(1.14) translateY(3%)}to{transform:scale(1.2) translateY(-1%) rotate(-1deg)}}
@keyframes catRewardSurpriseOut{0%,58%{opacity:1;transform:scale(1.16) translateY(1%)}76%{opacity:1;transform:scale(1.24) translateY(-4%)}100%{opacity:0;transform:scale(1.08) translateY(4%)}}
@keyframes catRewardJoyIn{0%,8%{opacity:0;transform:scale(.88) translateY(10%)}28%{opacity:1;transform:scale(1.27) translateY(-5%)}43%{transform:scale(1.17) translateY(0)}72%{transform:scale(1.23) translateY(-3%) rotate(-1deg)}100%{opacity:1;transform:scale(1.2) translateY(-1%) rotate(1deg)}}
@keyframes joySparkCloud{0%{opacity:0;transform:scale(.3)}30%{opacity:1;transform:scale(1.15)}100%{opacity:.72;transform:scale(1)}}
@keyframes joySparkPop{to{transform:translateY(-8px) rotate(22deg) scale(1.35);filter:brightness(1.4)}}
@keyframes rewardBodyArrives{0%{opacity:0;transform:translateY(-100px) rotate(-18deg) scale(.45)}70%{opacity:1;transform:translateY(5px) rotate(3deg) scale(1.08)}100%{opacity:1;transform:none}}
@keyframes rewardWindowArrives{0%{opacity:0;transform:scale(.05)}70%{opacity:1;transform:scale(1.25)}100%{opacity:1;transform:scale(1)}}
@keyframes rewardLeftWingArrives{0%{opacity:0;transform:translate(-145px,24px) rotate(-78deg) scale(.5)}72%{opacity:1;transform:translate(4px,-2px) rotate(-8deg) scale(1.08)}100%{opacity:1;transform:rotate(-15deg)}}
@keyframes rewardRightWingArrives{0%{opacity:0;transform:translate(145px,24px) scaleX(-1) rotate(-78deg) scale(.5)}72%{opacity:1;transform:translate(-4px,-2px) scaleX(-1) rotate(-8deg) scale(1.08)}100%{opacity:1;transform:scaleX(-1) rotate(-15deg)}}
@keyframes rewardAntennaArrives{0%{opacity:0;transform:translateY(-80px) rotate(38deg) scale(.45)}70%{opacity:1;transform:translateY(3px) rotate(-7deg) scale(1.12)}100%{opacity:1;transform:none}}
@keyframes rewardCellIgnites{0%{background:#35415f;box-shadow:none;transform:scale(.72)}45%{background:#fff;box-shadow:0 0 18px #fff;transform:scale(1.35)}100%{background:#ffd34d;box-shadow:0 0 9px #ff9a3c,0 0 18px #ffd34d;transform:scale(1)}}
@keyframes rewardShipReceivesCell{0%,62%{transform:translate(-50%,-50%) rotate(8deg)}72%{transform:translate(-50%,-54%) rotate(5deg) scale(1.07);filter:drop-shadow(0 0 27px #ffd34d)}100%{transform:translate(-50%,-51%) rotate(8deg)}}
@keyframes engineWakeV26{0%{transform:translate(-50%,-50%) rotate(8deg)}10%,18%,26%{transform:translate(-51%,-50%) rotate(7deg)}14%,22%,30%{transform:translate(-49%,-50%) rotate(9deg)}46%{transform:translate(-50%,-60%) rotate(4deg) scale(1.08);filter:drop-shadow(0 0 32px #ffd34d)}100%{transform:translate(-50%,-55%) rotate(5deg) scale(1.04);filter:drop-shadow(0 0 20px #ff9a3c)}}
@keyframes engineIgnitionV26{0%,20%{opacity:0;transform:scaleY(.08)}34%{opacity:1;transform:scaleY(1.9)}48%{transform:scaleY(.68)}100%{opacity:1;transform:scaleY(1.3);filter:drop-shadow(0 0 18px #ff9a3c)}}
@keyframes rewardPortalGrows{0%,52%{transform:translateY(-50%) scale(calc(.2 + (var(--portal-before) * .16)))}78%{transform:translateY(-50%) scale(calc(.24 + (var(--portal-after) * .17)));filter:brightness(1.55) drop-shadow(0 0 24px #70d9cf)}100%{transform:translateY(-50%) scale(calc(.2 + (var(--portal-after) * .16)));filter:brightness(1.1)}}
@keyframes rewardRuneArrives{0%{opacity:0;transform:translate(-70px,-45px) rotate(-120deg) scale(.2);color:#fff}65%{opacity:1;transform:translate(3px,2px) rotate(12deg) scale(1.55);color:#fff}100%{opacity:1;transform:none;color:#ffd34d;text-shadow:0 0 9px #ff9a3c,0 0 16px #70d9cf}}
@keyframes finishedShipLiftV26{0%{transform:translate(-50%,-50%) rotate(8deg)}18%{transform:translate(-50%,-58%) rotate(2deg) scale(1.09);filter:drop-shadow(0 0 31px #70d9cf)}48%{transform:translate(-50%,-63%) rotate(6deg) scale(1.05)}100%{transform:translate(-50%,-58%) rotate(4deg) scale(1.08);filter:drop-shadow(0 0 22px #ffd34d)}}
@keyframes rewardUiReveal{from{opacity:0;visibility:visible;transform:translateY(8px)}to{opacity:1;visibility:visible;transform:none}}

@media(max-width:700px){
  .reward-scene .result-cat-crop{left:-5%;width:160px;height:200px}
  .reward-ship-antenna{left:47px}
  .reward-state-portal .reward-portal{transform:translateY(-50%) scale(calc(.16 + (var(--portal-before) * .11)))}
  @keyframes rewardPortalGrows{0%,52%{transform:translateY(-50%) scale(calc(.16 + (var(--portal-before) * .11)))}78%{transform:translateY(-50%) scale(calc(.2 + (var(--portal-after) * .12)));filter:brightness(1.55) drop-shadow(0 0 22px #70d9cf)}100%{transform:translateY(-50%) scale(calc(.16 + (var(--portal-after) * .11)));filter:brightness(1.1)}}
}

/* Version 28: short animated opening scene. */
body.intro-active{overflow:hidden}
.game-intro{
  position:fixed;
  z-index:1000;
  inset:0;
  min-height:100vh;
  min-height:100dvh;
  overflow:hidden;
  display:grid;
  place-items:center;
  color:#fff;
  background:
    radial-gradient(circle at 68% 38%,rgba(112,217,207,.21),transparent 25%),
    radial-gradient(circle at 23% 75%,rgba(230,78,137,.22),transparent 29%),
    linear-gradient(155deg,#08102f 0%,#17245a 54%,#4b3478 100%);
  opacity:1;
  transition:opacity .42s ease,visibility .42s ease;
  touch-action:manipulation;
}
.game-intro[hidden]{display:none!important}
.game-intro.is-finished{opacity:0;visibility:hidden;pointer-events:none}
.intro-cosmos{position:absolute;inset:0;pointer-events:none}
.intro-cosmos:before,.intro-cosmos:after{content:"";position:absolute;inset:-20%;background:radial-gradient(circle,rgba(255,255,255,.95) 0 1px,transparent 2px);background-size:83px 79px;opacity:.38;transform:rotate(9deg)}
.intro-cosmos:after{background-size:137px 119px;opacity:.24;transform:rotate(-7deg) scale(1.25)}
.intro-cosmos i{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff;animation:introTwinkle 1.25s ease-in-out infinite alternate}
.intro-cosmos i:nth-child(1){left:8%;top:18%}.intro-cosmos i:nth-child(2){left:17%;top:48%;background:#70d9cf;animation-delay:.3s}.intro-cosmos i:nth-child(3){left:28%;top:12%;width:7px;height:7px;background:#ffd34d;animation-delay:.7s}.intro-cosmos i:nth-child(4){left:39%;top:71%;animation-delay:.15s}.intro-cosmos i:nth-child(5){left:51%;top:23%;background:#f08aaa;animation-delay:.48s}.intro-cosmos i:nth-child(6){left:62%;top:82%;width:6px;height:6px;animation-delay:.82s}.intro-cosmos i:nth-child(7){left:74%;top:13%;background:#70d9cf;animation-delay:.22s}.intro-cosmos i:nth-child(8){left:83%;top:54%;width:7px;height:7px;background:#ffd34d;animation-delay:.65s}.intro-cosmos i:nth-child(9){left:91%;top:27%}.intro-cosmos i:nth-child(10){left:95%;top:78%;background:#f08aaa;animation-delay:.4s}.intro-cosmos i:nth-child(11){left:44%;top:43%;animation-delay:.75s}.intro-cosmos i:nth-child(12){left:13%;top:84%;width:6px;height:6px;animation-delay:.2s}
.intro-flying-star{position:absolute;z-index:2;left:-18%;top:19%;color:#fff7a8;font-size:clamp(2.2rem,5vw,4.3rem);opacity:0;filter:drop-shadow(0 0 10px #ffd34d) drop-shadow(0 0 24px #e64e89);transform:rotate(21deg)}
.intro-flying-star:after{content:"";position:absolute;right:58%;top:48%;width:250px;height:9px;border-radius:999px;background:linear-gradient(90deg,transparent,rgba(230,78,137,.42),#ffd34d,#fff);box-shadow:0 0 17px rgba(112,217,207,.7);transform:translateY(-50%)}
.game-intro.is-running .intro-flying-star{animation:introStarFlight 1.28s .12s cubic-bezier(.25,.75,.2,1) both}
.intro-scene{position:absolute;z-index:5;left:50%;top:50%;width:min(820px,92vw);height:min(430px,56vh);transform:translate(-50%,-50%)}
.intro-cat-crop{position:absolute;z-index:6;left:2%;bottom:-3%;width:clamp(170px,27vw,270px);height:clamp(190px,35vw,315px);overflow:hidden;opacity:0;transform:translateY(42%)}
.intro-cat-crop img{width:100%;display:block;transform:scale(1.35) translateY(-7%);transform-origin:50% 4%;filter:drop-shadow(0 18px 12px rgba(2,6,26,.52))}
.game-intro.is-running .intro-cat-crop{animation:introCatPeeks .88s .72s cubic-bezier(.16,.88,.23,1.15) forwards}
.intro-cat-gear{position:absolute;z-index:5;left:0;top:0;width:100%;height:100%;pointer-events:none;transform:scale(1.35) translateY(-7%);transform-origin:50% 4%}
.intro-helmet{position:absolute;left:35%;top:12%;width:43%;height:18%;border:4px solid #17365f;border-radius:54% 54% 18% 18% / 82% 82% 22% 22%;background:linear-gradient(135deg,#fff6a9 0 14%,#ffd34d 15% 62%,#ff9a3c 63% 100%);box-shadow:inset -7px -4px 0 rgba(198,93,45,.18),0 4px 0 rgba(12,22,58,.18),0 0 16px rgba(255,211,77,.66)}
.intro-helmet:after{content:"";position:absolute;left:-9%;right:-12%;bottom:-18%;height:35%;border:3px solid #17365f;border-radius:50%;background:linear-gradient(180deg,#fff7a8,#ff9a3c);transform:rotate(2deg)}
.intro-wink{position:absolute;z-index:3;left:59%;top:40%;width:13%;height:8%;border-top:5px solid #17365f;border-radius:50%;transform:rotate(-9deg) scale(.65)}
.intro-ignition{position:absolute;z-index:8;left:29%;bottom:18%;width:clamp(54px,8vw,76px);aspect-ratio:1;border:5px solid #fff;border-radius:50%;background:radial-gradient(circle at 38% 32%,#fff 0 7%,#ffd34d 9% 44%,#ff9a3c 46% 70%,#d23c70 72%);box-shadow:0 0 0 8px rgba(255,211,77,.13),0 0 25px rgba(255,154,60,.58);opacity:0;transform:scale(.55)}
.intro-ignition i{position:absolute;inset:19%;border-radius:50%;background:#fff;opacity:.7}
.game-intro.is-running .intro-ignition{animation:introButtonAppears .46s 1.23s ease-out forwards,introButtonPress .42s 1.67s ease-in-out forwards}
.intro-rocket{position:absolute;z-index:6;left:69%;top:49%;width:126px;height:190px;opacity:0;transform:translate(-50%,-44%) rotate(7deg) scale(.84);filter:drop-shadow(0 15px 12px rgba(2,6,26,.6));transition:filter .3s ease}
.game-intro.is-running .intro-rocket{animation:introRocketArrives .82s 1.05s cubic-bezier(.18,.85,.22,1.12) forwards}
.intro-rocket-aura{position:absolute;z-index:0;inset:-28px;border-radius:50%;opacity:.12;background:radial-gradient(circle,#70d9cf 0 20%,rgba(112,217,207,.22) 45%,transparent 72%);transform:scale(.7)}
.intro-rocket-body{position:absolute;z-index:4;left:34px;top:10px;width:63px;height:125px;border:4px solid #17365f;border-radius:52% 52% 19px 19px;background:linear-gradient(110deg,#f0f3f7 0 30%,#8da0b1 32% 69%,#52647d 70%);box-shadow:inset -8px -10px 0 rgba(23,54,95,.15);transition:background .22s ease,box-shadow .22s ease}
.intro-rocket-window{position:absolute;left:14px;top:35px;width:29px;height:29px;border:4px solid #17365f;border-radius:50%;background:#50607a;transition:background .22s ease,box-shadow .22s ease}
.intro-rocket-wing{position:absolute;z-index:3;top:87px;width:43px;height:64px;border:4px solid #17365f;background:#8a5872;clip-path:polygon(50% 0,100% 100%,0 79%);transition:background .22s ease,filter .22s ease}
.intro-rocket-wing-left{left:6px;transform:rotate(-15deg)}.intro-rocket-wing-right{right:0;transform:scaleX(-1) rotate(-15deg)}
.intro-rocket-antenna{position:absolute;z-index:5;left:61px;top:-12px;width:5px;height:28px;border-radius:5px;background:#17365f}
.intro-rocket-antenna i{position:absolute;left:50%;top:-9px;width:15px;height:15px;border:3px solid #17365f;border-radius:50%;background:#626f89;transform:translateX(-50%);transition:background .22s ease,box-shadow .22s ease}
.intro-rocket-flame{position:absolute;z-index:2;left:46px;top:132px;width:39px;height:61px;opacity:0;background:linear-gradient(180deg,#fff,#fff7a8 18%,#ff9a3c 54%,#e64e89);clip-path:polygon(50% 100%,0 0,100% 0);filter:drop-shadow(0 0 12px #ff9a3c);transform-origin:50% 0}
.intro-spark-cloud{position:absolute;z-index:8;left:58%;top:28%;width:30%;height:53%;pointer-events:none}
.intro-spark-cloud i{position:absolute;color:#fff7a8;font-style:normal;font-size:clamp(1.1rem,2.6vw,2rem);opacity:0;text-shadow:0 0 12px #ffd34d}
.intro-spark-cloud i:nth-child(1){left:3%;top:16%}.intro-spark-cloud i:nth-child(2){right:2%;top:30%}.intro-spark-cloud i:nth-child(3){left:8%;bottom:10%}.intro-spark-cloud i:nth-child(4){right:12%;bottom:2%}.intro-spark-cloud i:nth-child(5){left:46%;top:0}
.intro-brand{position:absolute;z-index:10;left:50%;top:13%;opacity:0;transform:translate(-50%,-14px) scale(.82);font-size:clamp(2.5rem,7vw,5.9rem);font-weight:1000;letter-spacing:.08em;text-shadow:0 8px 18px rgba(2,6,26,.5);white-space:nowrap}
.intro-brand b{color:#70d9cf;text-shadow:0 2px 0 #17365f,0 0 20px rgba(112,217,207,.48)}
.intro-brand span{color:#fff}
.game-intro.is-running .intro-brand{animation:introLogoArrives .65s 1.72s cubic-bezier(.16,.88,.2,1.15) forwards}
.intro-play{position:absolute;z-index:20;left:50%;bottom:max(7%,env(safe-area-inset-bottom));width:clamp(68px,10vw,90px);aspect-ratio:1;border:4px solid #fff;border-radius:50%;display:grid;place-items:center;padding:0 0 0 .09em;color:#17365f;background:linear-gradient(145deg,#fff7a8,#ffd34d 50%,#ff9a3c);font-size:clamp(1.65rem,4vw,2.45rem);cursor:pointer;opacity:0;pointer-events:none;transform:translate(-50%,18px) scale(.6);box-shadow:0 0 0 9px rgba(255,255,255,.08),0 0 28px rgba(255,211,77,.62),0 13px 24px rgba(2,6,26,.42)}
.game-intro.intro-ready .intro-play{pointer-events:auto;animation:introPlayArrives .5s ease-out forwards,introPlayPulse .78s .55s ease-in-out infinite alternate}
.game-intro.is-returning .intro-play{pointer-events:auto;animation:introPlayArrives .28s .12s ease-out forwards,introPlayPulse .78s .45s ease-in-out infinite alternate}
.intro-play:focus-visible{outline:5px solid #70d9cf;outline-offset:7px}
.intro-play:active{transform:translate(-50%,2px) scale(.94)}
.intro-light-wash{position:absolute;z-index:30;inset:0;pointer-events:none;opacity:0;background:radial-gradient(circle at 66% 48%,#fff 0 5%,rgba(112,217,207,.85) 20%,rgba(255,255,255,.15) 48%,transparent 72%)}

.game-intro.is-launching .intro-play{opacity:0!important;pointer-events:none!important;animation:none}
.game-intro.is-launching .intro-ignition{opacity:1;transform:scale(1);animation:introIgnitionLaunch .66s ease-out both}
.game-intro.is-launching .intro-rocket-body{background:linear-gradient(110deg,#fff 0 30%,#8fe6de 32% 69%,#45aeb4 70%);box-shadow:inset -8px -10px 0 rgba(23,54,95,.11),0 0 22px rgba(112,217,207,.65)}
.game-intro.is-launching .intro-rocket-window{background:#84d9ff;box-shadow:inset 0 0 8px #fff,0 0 14px #70d9cf}
.game-intro.is-launching .intro-rocket-wing{background:linear-gradient(155deg,#f08aaa,#e64e89);filter:drop-shadow(0 0 8px rgba(230,78,137,.62))}
.game-intro.is-launching .intro-rocket-antenna i{background:#ffd34d;box-shadow:0 0 14px #ffd34d}
.game-intro.is-launching .intro-rocket-aura{animation:introRocketAura .72s ease-out both}
.game-intro.is-launching .intro-rocket-flame{animation:introFlameStarts .72s ease-out forwards}
.game-intro.is-launching .intro-rocket{animation:introRocketLaunch 1.18s .52s cubic-bezier(.4,.01,.7,.28) forwards}
.game-intro.is-launching .intro-spark-cloud i{animation:introSparkPop .9s ease-out both}
.game-intro.is-launching .intro-spark-cloud i:nth-child(2){animation-delay:.08s}.game-intro.is-launching .intro-spark-cloud i:nth-child(3){animation-delay:.15s}.game-intro.is-launching .intro-spark-cloud i:nth-child(4){animation-delay:.22s}.game-intro.is-launching .intro-spark-cloud i:nth-child(5){animation-delay:.3s}
.game-intro.is-launching .intro-light-wash{animation:introLaunchWash 1.2s .48s ease-out both}
.game-intro.is-launching .intro-cat-crop{opacity:1;animation:introCatWaves 1.25s ease-in-out both}

@keyframes introTwinkle{to{opacity:.22;transform:scale(.55)}}
@keyframes introStarFlight{0%{left:-18%;top:26%;opacity:0;transform:rotate(21deg) scale(.55)}16%{opacity:1}78%{opacity:1}100%{left:116%;top:4%;opacity:0;transform:rotate(21deg) scale(1.2)}}
@keyframes introCatPeeks{0%{opacity:0;transform:translateY(42%)}72%{opacity:1;transform:translateY(-4%)}100%{opacity:1;transform:none}}
@keyframes introButtonAppears{to{opacity:1;transform:scale(1)}}
@keyframes introButtonPress{0%,25%{transform:scale(1)}48%{transform:scale(.82);filter:brightness(1.6)}75%,100%{transform:scale(1);box-shadow:0 0 0 14px rgba(255,211,77,.08),0 0 36px #ff9a3c}}
@keyframes introRocketArrives{0%{opacity:0;transform:translate(-50%,-25%) rotate(17deg) scale(.42)}72%{opacity:1;transform:translate(-50%,-49%) rotate(4deg) scale(.9)}100%{opacity:1;transform:translate(-50%,-44%) rotate(7deg) scale(.84)}}
@keyframes introLogoArrives{0%{opacity:0;transform:translate(-50%,-14px) scale(.82)}70%{opacity:1;transform:translate(-50%,3px) scale(1.06)}100%{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes introPlayArrives{to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes introPlayPulse{to{filter:brightness(1.12);box-shadow:0 0 0 15px rgba(255,255,255,.04),0 0 40px rgba(255,211,77,.9),0 15px 25px rgba(2,6,26,.45)}}
@keyframes introIgnitionLaunch{0%{transform:scale(1)}38%{transform:scale(.76);filter:brightness(1.8)}100%{transform:scale(1.08);box-shadow:0 0 0 24px rgba(255,211,77,0),0 0 42px #ff9a3c}}
@keyframes introRocketAura{0%{opacity:.12;transform:scale(.7)}55%{opacity:.9;transform:scale(1.18)}100%{opacity:.35;transform:scale(1.55)}}
@keyframes introFlameStarts{0%,16%{opacity:0;transform:scaleY(.08)}40%{opacity:1;transform:scaleY(1.7)}64%{transform:scaleY(.74)}100%{opacity:1;transform:scaleY(1.3)}}
@keyframes introRocketLaunch{0%,16%{opacity:1;transform:translate(-50%,-44%) rotate(7deg) scale(.84)}30%{transform:translate(-50%,-54%) rotate(3deg) scale(.9)}100%{opacity:0;transform:translate(-22vw,-122vh) rotate(24deg) scale(.42)}}
@keyframes introSparkPop{0%{opacity:0;transform:scale(.2)}35%{opacity:1;transform:scale(1.45)}100%{opacity:0;transform:translateY(-35px) rotate(25deg) scale(.75)}}
@keyframes introLaunchWash{0%,22%{opacity:0}48%{opacity:.96}100%{opacity:0}}
@keyframes introCatWaves{0%,18%{transform:none}45%{transform:translateY(-2%) rotate(-2deg)}70%{transform:translateY(1%) rotate(2deg)}100%{opacity:.92;transform:none}}

@media(max-width:700px){
  .intro-scene{top:51%;width:100vw;height:55vh}
  .intro-cat-crop{left:-6%;bottom:-2%;width:190px;height:220px}
  .intro-ignition{left:32%;bottom:17%;width:56px}
  .intro-rocket{left:72%;top:48%;width:92px;height:145px}
  .intro-rocket-body{left:25px;top:8px;width:47px;height:94px;border-width:3px}
  .intro-rocket-window{left:10px;top:26px;width:23px;height:23px;border-width:3px}
  .intro-rocket-wing{top:65px;width:33px;height:49px;border-width:3px}
  .intro-rocket-wing-left{left:3px}.intro-rocket-wing-right{right:0}
  .intro-rocket-antenna{left:45px;top:-8px;height:22px}
  .intro-rocket-flame{left:34px;top:100px;width:30px;height:48px}
  .intro-brand{top:max(10%,env(safe-area-inset-top));font-size:3rem}
  .intro-play{bottom:max(5.5%,env(safe-area-inset-bottom));width:70px}
  .intro-flying-star:after{width:160px}
}

@media(max-height:500px) and (min-width:701px){
  .intro-brand{top:5%;font-size:clamp(2.2rem,12vh,3.25rem)}
  .intro-scene{top:57%;height:64vh}
  .intro-cat-crop{left:7%;bottom:0;width:155px;height:180px}
  .intro-helmet{border-width:3px}
  .intro-wink{border-top-width:4px}
  .intro-ignition{left:29%;bottom:18%;width:54px;border-width:4px}
  .intro-rocket{left:69%;top:49%;width:98px;height:150px}
  .intro-rocket-body{left:26px;top:8px;width:49px;height:97px;border-width:3px}
  .intro-rocket-window{left:10px;top:27px;width:23px;height:23px;border-width:3px}
  .intro-rocket-wing{top:68px;width:34px;height:50px;border-width:3px}
  .intro-rocket-wing-left{left:3px}.intro-rocket-wing-right{right:0}
  .intro-rocket-antenna{left:47px;top:-9px;height:23px}
  .intro-rocket-flame{left:35px;top:103px;width:31px;height:49px}
  .intro-play{bottom:5%;width:62px;font-size:1.55rem;border-width:3px}
}

@media(prefers-reduced-motion:reduce){
  .game-intro *{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important}
  .game-intro .intro-cat-crop,.game-intro .intro-rocket,.game-intro .intro-brand,.game-intro .intro-play{opacity:1}
  .game-intro .intro-play{pointer-events:auto;transform:translate(-50%,0) scale(1)}
}

/* v37 must remain last in the cascade. */
.result-stats{width:min(300px,100%);margin:14px auto!important;display:grid!important;grid-template-columns:1fr auto!important;gap:6px 28px!important;text-align:left;padding:14px 22px!important}
.result-stats strong{text-align:right}.result-actions{margin-top:12px!important}
.intro-play{width:auto!important;aspect-ratio:auto!important;min-width:clamp(138px,20vw,210px)!important;height:clamp(58px,8vw,76px)!important;padding:0 26px!important;border-radius:999px!important;font-size:clamp(1rem,2.4vw,1.35rem)!important}
@media(max-width:700px){
  .intro-play{width:auto!important;min-width:140px!important;height:58px!important}
  .intro-brand{top:max(7%,env(safe-area-inset-top))!important;font-size:2.55rem!important}
  .install-button{width:40px;min-width:40px;padding:0;font-size:1rem}.install-button span{display:none}
}

/* v38: the installed item and opening unmistakably represent the multiplication game. */
.intro-brand{top:5.5%!important;width:min(760px,94vw);white-space:normal;text-align:center;font-size:clamp(1.8rem,4.4vw,3.35rem)!important}
.intro-edukass{display:block;line-height:1;letter-spacing:.08em}
.intro-brand small{display:block;margin:.34rem auto 0;color:#fff7a8;font-size:clamp(1.6rem,5vw,3.9rem)!important;line-height:.9;letter-spacing:.035em!important;text-align:center;text-shadow:0 5px 18px rgba(2,6,26,.72)}
.intro-math span{font-size:clamp(1.45rem,3.8vw,2.5rem)!important;padding:.44em .68em!important;border-width:3px!important;background:rgba(24,36,82,.82)!important}
.intro-math span:first-child{left:5%;top:30%}.intro-math span:last-child{right:5%;top:34%}
.install-button{min-height:48px;padding:7px 13px!important;font-size:.78rem!important;line-height:1.08!important;text-align:left;max-width:190px}
.install-button-icon{font-size:1.75rem;line-height:1}
.install-phone{width:118px;height:174px;padding:21px 9px}
.install-phone img{width:78px;height:78px;border-radius:18px;box-shadow:0 0 0 4px rgba(255,255,255,.78)}
.explanation-play{position:absolute;right:17px;bottom:17px;padding:8px 13px;border-radius:999px;background:var(--yellow);color:var(--ink);font-size:.8rem;font-weight:1000;box-shadow:0 5px 0 rgba(8,14,46,.25)}

@media(max-width:700px){
  .intro-brand{top:max(4.5%,env(safe-area-inset-top))!important;font-size:1.75rem!important}
  .intro-brand small{font-size:clamp(1.85rem,9.2vw,2.75rem)!important;line-height:.88}
  .intro-math span{font-size:1.25rem!important}
  .intro-math span:first-child{left:3%;top:29%}.intro-math span:last-child{right:3%;top:38%}
  .install-button{width:auto!important;min-width:0!important;max-width:172px!important;min-height:48px!important;padding:6px 9px!important;display:inline-flex!important;align-items:center;gap:6px}
  .install-button span{display:inline!important}
  .install-button-icon{font-size:1.55rem!important}
}

@media(max-height:500px) and (min-width:701px){
  .intro-brand{top:2.5%!important}
  .intro-brand small{font-size:clamp(1.55rem,8vh,2.4rem)!important}
  .intro-math span{font-size:1.15rem!important}.intro-math span:first-child{top:22%}.intro-math span:last-child{top:25%}
}

/* v39: mobile spacing and safe intro bounds. */
@media(max-width:700px){
  .topbar{
    height:auto;
    min-height:82px;
    padding-top:12px;
    padding-bottom:12px;
  }
  .intro-math span{
    max-width:calc(100vw - 24px);
    padding:.4em .58em!important;
    font-size:1.05rem!important;
    white-space:nowrap;
  }
  .intro-math span:first-child{left:12px;top:29%}
  .intro-math span:last-child{left:auto;right:12px;top:38%}
}

@media(max-width:390px){
  .topbar{min-height:88px;padding-left:10px;padding-right:10px;gap:8px}
  .brand{gap:6px}
  .brand-cat{width:46px;height:46px}
  .intro-math span{font-size:1rem!important}
}

/* v40: fixed mobile chrome and one-screen play/intro layouts. */
.topbar{
  position:sticky;
  top:0;
  isolation:isolate;
}

@media(max-width:700px){
  .topbar{
    min-height:68px;
    padding:7px max(8px,env(safe-area-inset-right)) 7px max(8px,env(safe-area-inset-left));
    gap:6px;
  }
  .brand{flex:0 0 auto;gap:5px;font-size:.78rem}
  .brand-cat{width:39px;height:39px;border-radius:12px}
  .top-actions{min-width:0;margin-left:auto;gap:4px}
  .install-button{
    width:auto!important;
    max-width:132px!important;
    min-height:42px!important;
    padding:5px 8px!important;
    gap:4px!important;
    font-size:.64rem!important;
  }
  .install-button-icon{font-size:1.25rem!important}
  .share-button{min-height:42px;padding:0 7px;font-size:.62rem;gap:3px}
  .share-button svg{width:16px;height:16px}
  .sound-button{width:38px;height:38px;font-size:.92rem}
  .app-shell{padding-top:8px;padding-bottom:max(18px,env(safe-area-inset-bottom))}

  .battle-top{min-height:38px;margin-bottom:5px}
  .back-button{min-height:36px}
  .battle-stage{height:clamp(285px,40dvh,355px);min-height:285px}
  .question-card{padding-top:25px}
  .keypad{gap:5px}
  .keypad button{min-height:40px}

  .intro-brand{
    top:max(2.6%,env(safe-area-inset-top))!important;
    width:94vw;
    font-size:1.55rem!important;
  }
  .intro-brand small{
    margin-top:.22rem;
    font-size:clamp(1.55rem,8.2vw,2.45rem)!important;
    line-height:.88;
  }
  .intro-math span{
    max-width:calc(50vw - 18px);
    padding:.34em .48em!important;
    font-size:clamp(.8rem,3.7vw,1rem)!important;
  }
  .intro-math span:first-child{left:12px;top:27%}
  .intro-math span:last-child{right:12px;top:34%}
  .intro-scene{top:52%;height:47vh}
  .intro-cat-crop{left:-2%;bottom:-1%;width:170px;height:195px}
  .intro-ignition{left:35%;bottom:16%;width:50px}
  .intro-rocket{left:74%;top:52%;transform:translate(-50%,-44%) rotate(7deg) scale(.78)}
  .intro-play{
    bottom:max(calc(env(safe-area-inset-bottom) + 14px),2.2%)!important;
    min-width:136px!important;
    height:54px!important;
  }
}

@media(max-width:390px){
  .topbar{min-height:66px;padding-left:7px;padding-right:7px}
  .brand{font-size:.72rem}
  .brand-cat{width:36px;height:36px}
  .install-button{max-width:118px!important;font-size:.58rem!important;padding:4px 6px!important}
  .install-button-icon{font-size:1.12rem!important}
  .share-button{padding:0 5px;font-size:.58rem}
  .sound-button{width:35px;height:35px}
}

@media(max-width:700px) and (max-height:720px){
  .intro-brand{top:max(1.5%,env(safe-area-inset-top))!important;font-size:1.35rem!important}
  .intro-brand small{font-size:clamp(1.35rem,7.4vw,2rem)!important}
  .intro-math span:first-child{top:24%}
  .intro-math span:last-child{top:31%}
  .intro-scene{top:53%;height:43vh}
  .intro-cat-crop{width:145px;height:168px}
  .intro-rocket{transform:translate(-50%,-44%) rotate(7deg) scale(.68)}
  .intro-play{height:50px!important;min-width:128px!important}
  .battle-stage{height:clamp(250px,36dvh,300px);min-height:250px}
  .keypad button{min-height:36px}
}

/* v42: bring the primary intro action into the visual composition. */
@media(max-width:700px){
  .intro-play{
    bottom:max(calc(env(safe-area-inset-bottom) + 92px),15%)!important;
  }
}

@media(max-width:700px) and (max-height:720px){
  .intro-play{
    bottom:max(calc(env(safe-area-inset-bottom) + 68px),11%)!important;
  }
}

/* v43: chapter 2 “Kolm” — continuous map, three moons and map-fragment rewards. */
.explanation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.chapter-route-head{grid-template-columns:1fr;justify-items:center;text-align:center;margin:4px 0 12px}
.chapter-route-head span:last-child{color:#fff;text-align:center}
.chapter-divider{grid-column:1/-1;position:relative;display:flex;align-items:center;gap:14px;min-height:46px;margin:8px 2px 0;padding:8px 14px;border-radius:16px;background:rgba(255,255,255,.1);color:#fff;font-size:.82rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase;scroll-margin-top:100px}
.chapter-divider:first-child{margin-top:0}
.chapter-divider span{position:relative;z-index:2;white-space:nowrap}
.chapter-divider i{height:2px;flex:1;border-radius:999px;background:linear-gradient(90deg,rgba(255,255,255,.65),transparent)}
.chapter-divider-2{background:linear-gradient(90deg,rgba(143,125,226,.34),rgba(112,217,207,.12))}
.level-object[data-chapter="2"] .celestial-shape{box-shadow:inset -10px -12px 0 rgba(23,54,95,.18),0 0 0 1px rgba(143,125,226,.2)}

.chapter-two-goal{display:none}
.chapter-two-active .chapter-two-goal{display:flex}
.chapter-two-active .story-goals{grid-template-columns:repeat(4,minmax(0,1fr))}
.goal-vault{width:25px!important;height:22px!important;border:3px solid currentColor;border-radius:5px!important;background:transparent!important;clip-path:none!important}
.goal-vault:before{content:"";position:absolute;left:3px;right:3px;top:-10px;height:12px;border:3px solid currentColor;border-bottom:0;border-radius:10px 10px 0 0}
.goal-vault:after{content:"✦";position:absolute;inset:0;display:grid;place-items:center;font-size:.68rem}

.story-two{display:none;position:absolute;inset:0;z-index:4;overflow:hidden}
.story-stage.chapter-two .story-two{display:block}
.story-stage.chapter-two .story-ship,
.story-stage.chapter-two .story-portal,
.story-stage.chapter-two .next-planet,
.story-stage.chapter-two .story-energy-stream{display:none}
.story-stage.chapter-two .story-cat-crop{left:1%;bottom:-18px;animation:storyCatWatch 1.8s ease-in-out infinite alternate}
.three-planet{position:absolute;right:8%;top:48%;width:132px;height:132px;border-radius:50%;transform:translateY(-50%);background:radial-gradient(circle at 30% 24%,#fff 0 4%,#8f7de2 8% 42%,#4f4b9a 70%,#25265f 72%);box-shadow:0 0 0 13px rgba(255,255,255,.06),0 0 42px rgba(143,125,226,.46)}
.three-planet:after{content:"";position:absolute;left:-27px;right:-27px;top:54px;height:28px;border:7px solid rgba(112,217,207,.7);border-top-color:transparent;border-radius:50%;transform:rotate(-11deg)}
.three-moon{--moon-progress:0;position:absolute;width:54px;height:54px;border-radius:50%;opacity:calc(.1 + (var(--moon-progress) * .14));filter:grayscale(calc(1 - (var(--moon-progress) * .2)));transition:.35s ease;background:radial-gradient(circle at 30% 25%,#fff 0 7%,#ffd34d 12% 48%,#ff9a3c 75%);box-shadow:0 0 calc(3px + (var(--moon-progress) * 4px)) rgba(255,211,77,.8)}
.three-moon i{position:absolute;inset:-8px;border:2px dashed rgba(255,255,255,.38);border-radius:50%;animation:portalTurn 8s linear infinite}
.three-moon.is-awake{filter:none}
.three-moon.is-aligned{opacity:1;animation:moonAligned 1.25s ease-in-out infinite alternate}
.moon-one{right:29%;top:12%}.moon-two{right:43%;top:42%}.moon-three{right:27%;bottom:8%}
.three-vault{position:absolute;right:50%;bottom:16%;width:72px;height:52px;border:4px solid #17365f;border-radius:10px;background:linear-gradient(135deg,#ffd34d,#ff9a3c);opacity:.18;transform:translateY(12px) scale(.84);transition:.45s ease;box-shadow:0 10px 18px rgba(5,10,34,.35)}
.three-vault:before{content:"";position:absolute;left:12px;right:12px;top:-28px;height:30px;border:5px solid #17365f;border-bottom:0;border-radius:24px 24px 0 0}
.three-vault i{position:absolute;top:17px;width:12px;height:16px;border-radius:5px;background:#273158}
.three-vault i:first-child{left:19px}.three-vault i:last-child{right:19px}
.three-vault.has-first-lock{opacity:.65;transform:translateY(5px) scale(.94)}
.three-vault.has-first-lock i:first-child{background:#70d9cf;box-shadow:0 0 10px #70d9cf}
.three-vault.has-second-lock{opacity:1;transform:none}
.three-vault.has-second-lock i:last-child{background:#70d9cf;box-shadow:0 0 10px #70d9cf}
.three-vault.is-open{transform:translateY(8px) rotateX(16deg);filter:brightness(1.15)}
.three-map-fragment{position:absolute;right:55%;bottom:31%;font-size:3.4rem;color:#ffd34d;opacity:0;transform:translateY(25px) scale(.25) rotate(-20deg);text-shadow:0 0 18px #ff9a3c,0 0 28px #70d9cf;transition:.65s cubic-bezier(.18,.9,.2,1.3)}
.three-map-fragment.is-found{opacity:1;transform:none;animation:mapFragmentFloat 1.4s ease-in-out infinite alternate}
@keyframes moonAligned{to{transform:translateY(-5px) scale(1.06);box-shadow:0 0 28px rgba(255,211,77,.92)}}
@keyframes mapFragmentFloat{to{transform:translateY(-7px) rotate(4deg)}}

.reward-three-zone{display:none;position:absolute;inset:0;z-index:4}
.reward-chapter-two .reward-three-zone{display:block}
.reward-chapter-two .reward-ship,
.reward-chapter-two .reward-portal,
.reward-chapter-two .reward-next-planet{display:none}
.reward-chapter-two .crystal{left:31%;top:53%;z-index:12;animation:none}
.reward-three-planet{position:absolute;right:5%;top:50%;width:105px;height:105px;border-radius:50%;transform:translateY(-50%);background:radial-gradient(circle at 30% 24%,#fff 0 4%,#8f7de2 8% 44%,#4b478e 72%);box-shadow:0 0 0 10px rgba(255,255,255,.05),0 0 34px rgba(143,125,226,.45)}
.reward-three-moon{position:absolute;width:42px;height:42px;border-radius:50%;opacity:.12;filter:grayscale(1);background:radial-gradient(circle at 30% 25%,#fff 0 7%,#ffd34d 12% 48%,#ff9a3c 76%);box-shadow:0 0 14px rgba(255,211,77,.35)}
.reward-three-moon-one{right:28%;top:12%}.reward-three-moon-two{right:41%;top:43%}.reward-three-moon-three{right:27%;bottom:10%}
.reward-three-moon.is-earned{opacity:1;filter:none}
.reward-three-moon.is-new-reward{opacity:0;filter:none}
.reward-chapter-two.is-playing .reward-three-moon.is-new-reward{animation:rewardMoonArrives 1.15s 1.02s cubic-bezier(.18,.9,.2,1.35) forwards}
.reward-three-vault{position:absolute;right:47%;bottom:14%;width:58px;height:42px;border:3px solid #17365f;border-radius:8px;background:linear-gradient(135deg,#ffd34d,#ff9a3c);opacity:.12;filter:grayscale(1)}
.reward-three-vault:before{content:"";position:absolute;left:10px;right:10px;top:-22px;height:23px;border:4px solid #17365f;border-bottom:0;border-radius:18px 18px 0 0}
.reward-three-vault i{position:absolute;top:13px;width:9px;height:13px;border-radius:4px;background:#29345f}.reward-three-vault i:first-child{left:15px}.reward-three-vault i:last-child{right:15px}
.reward-three-vault.is-earned{opacity:1;filter:none}
.reward-three-vault.is-new-reward{opacity:0;filter:none}
.reward-chapter-two.is-playing .reward-three-vault.is-new-reward{animation:rewardVaultArrives 1.1s 1.05s cubic-bezier(.18,.9,.2,1.3) forwards}
.reward-three-vault.has-second-lock i:last-child{background:#70d9cf;box-shadow:0 0 8px #70d9cf}
.reward-three-vault.is-open{transform:translateY(5px) rotateX(15deg)}
.reward-three-map{position:absolute;right:54%;bottom:33%;font-size:3rem;color:#ffd34d;opacity:0;filter:drop-shadow(0 0 12px #ff9a3c)}
.reward-three-map.is-earned{opacity:1}.reward-three-map.is-new-reward{opacity:0}
.reward-chapter-two.is-playing .reward-three-map.is-new-reward{animation:rewardMapArrives 1.35s 1.1s cubic-bezier(.18,.9,.2,1.35) forwards}
.reward-three-runes{position:absolute;right:14%;left:39%;top:12%;bottom:9%;display:grid;grid-template-columns:repeat(6,1fr);align-content:end;gap:6px;pointer-events:none}
.reward-three-runes i{width:9px;height:9px;justify-self:center;border-radius:50%;background:#3d486c;box-shadow:inset 0 1px 2px rgba(255,255,255,.1);opacity:.45}
.reward-three-runes i.is-earned{background:#ffd34d;opacity:1;box-shadow:0 0 8px #ff9a3c,0 0 14px rgba(112,217,207,.65)}
.reward-three-runes i.is-new-reward{opacity:.12;background:#3d486c}
.reward-chapter-two.is-playing .reward-three-runes i.is-new-reward{animation:rewardThreeRune 1s 1.04s cubic-bezier(.18,.9,.2,1.35) forwards}
.reward-chapter-two.is-playing .crystal{animation:rewardEnergyToThree 1.35s .2s ease-in-out both}
.reward-three-final.is-playing .reward-three-zone{animation:threeFinalGlow 3.2s 1.1s ease-in-out both}
@keyframes rewardMoonArrives{0%{opacity:0;transform:translate(-80px,45px) scale(.2) rotate(-35deg)}70%{opacity:1;transform:scale(1.18)}100%{opacity:1;transform:none}}
@keyframes rewardVaultArrives{0%{opacity:0;transform:translateY(55px) scale(.4)}75%{opacity:1;transform:translateY(-5px) scale(1.08)}100%{opacity:1;transform:none}}
@keyframes rewardMapArrives{0%{opacity:0;transform:translateY(45px) scale(.18) rotate(-40deg)}75%{opacity:1;transform:translateY(-8px) scale(1.12)}100%{opacity:1;transform:none}}
@keyframes rewardThreeRune{0%{opacity:0;transform:scale(.1)}65%{opacity:1;transform:scale(1.65);background:#fff}100%{opacity:1;transform:scale(1);background:#ffd34d;box-shadow:0 0 9px #ff9a3c,0 0 15px #70d9cf}}
@keyframes rewardEnergyToThree{0%{opacity:0;transform:translate(-25px,18px) scale(.45)}28%{opacity:1}78%{transform:translate(150px,-22px) scale(.25);opacity:1}100%{transform:translate(205px,-5px) scale(.05);opacity:0}}
@keyframes threeFinalGlow{45%{filter:brightness(1)}72%{filter:brightness(1.75) drop-shadow(0 0 20px #ffd34d)}100%{filter:brightness(1.15)}}

@media(max-width:700px){
  .chapter-two-active .story-goals{grid-template-columns:repeat(2,minmax(0,1fr))}
  .chapter-divider{font-size:.7rem;padding:7px 10px}
  .three-planet{right:-3%;width:108px;height:108px}
  .three-moon{width:43px;height:43px}.moon-one{right:27%;top:10%}.moon-two{right:41%;top:42%}.moon-three{right:25%;bottom:9%}
  .three-vault{right:44%;bottom:13%;transform:scale(.8)}
  .three-map-fragment{right:50%;bottom:29%;font-size:2.7rem}
  .reward-three-planet{right:-2%;width:88px;height:88px}
  .reward-three-moon{width:34px;height:34px}.reward-three-moon-one{right:25%}.reward-three-moon-two{right:39%}.reward-three-moon-three{right:24%}
  .reward-three-vault{right:42%;transform:scale(.82)}
  .reward-three-map{right:49%;font-size:2.5rem}
  .reward-three-runes{left:36%;right:7%;gap:4px}
  .reward-chapter-two .crystal{left:24%;font-size:3.5rem}
}
/* v43 reward-state sequencing: the second lock and final opening appear only after the held “before” frame. */
.reward-three-vault i.is-earned{background:#70d9cf;box-shadow:0 0 8px #70d9cf}
.reward-three-vault i.is-new-reward{background:#29345f;box-shadow:none}
.reward-chapter-two.is-playing .reward-three-vault i.is-new-reward{animation:rewardLockIgnites .8s 1.18s cubic-bezier(.18,.9,.2,1.35) forwards}
.reward-three-final.is-playing .reward-three-vault{animation:rewardVaultOpens 1.05s 1.2s cubic-bezier(.18,.9,.2,1.2) forwards}
@keyframes rewardLockIgnites{0%{background:#29345f;box-shadow:none;transform:scale(.65)}55%{background:#fff;box-shadow:0 0 15px #fff;transform:scale(1.35)}100%{background:#70d9cf;box-shadow:0 0 8px #70d9cf;transform:none}}
@keyframes rewardVaultOpens{0%{transform:none;filter:none}58%{transform:translateY(-4px) scale(1.08);filter:brightness(1.4)}100%{transform:translateY(5px) rotateX(15deg);filter:brightness(1.15)}}
/* v43: four explanations stay readable in a 2×2 grid on phones and compact landscape screens. */
@media(max-width:880px){
  .explanation-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none;gap:14px}
  .explanation-choice{min-height:154px;padding:13px 10px 33px;flex-direction:column;justify-content:center;gap:7px;text-align:center}
  .explanation-orbit{width:72px;height:72px}
  .explanation-orbit:after{left:-9px;right:-9px;top:27px;height:17px;border-width:4px}
  .explanation-orbit span{font-size:2.2rem}
  .explanation-name strong{font-size:1.08rem;line-height:1.05;overflow-wrap:normal}
  .explanation-name small{margin-top:4px;font-size:.78rem}
  .explanation-arrow{right:10px;top:auto;bottom:9px;transform:none;font-size:1.35rem}
  .explanation-lock{right:10px;top:9px;font-size:1rem}
  .explanation-play{right:8px;bottom:8px;padding:5px 9px;font-size:.68rem}
}
@media(max-width:420px){
  .explanation-hub{padding-left:14px;padding-right:14px}
  .explanation-grid{gap:11px}
  .explanation-choice{min-height:146px;padding-left:7px;padding-right:7px}
  .explanation-orbit{width:64px;height:64px}
  .explanation-orbit:after{top:24px}
  .explanation-name strong{font-size:.98rem}
}


/* v44: the story scene and achievement counters stay fixed; only the mission route scrolls. */
#mapScreen.is-active{
  height:calc(100dvh - 137px);
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#mapScreen .map-head{flex:0 0 auto}
#mapScreen .chapter-board{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#mapScreen .story-progress{flex:0 0 auto}
#mapScreen .map-side-panel{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
}
#mapScreen .mission-route-scroll{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
  padding:2px 6px 12px 2px;
  scroll-behavior:auto;
}
#mapScreen .mission-route-scroll:focus-visible{outline:3px solid var(--yellow);outline-offset:-3px;border-radius:14px}
#mapScreen .map-actions{flex:0 0 auto;margin-top:10px}
@media(min-width:1101px){
  #mapScreen.is-active{width:min(1080px,100%);margin:0 auto}
  #mapScreen .map-head{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:start;
    gap:16px;
    margin:0 0 12px;
  }
  #mapScreen .map-head .eyebrow{margin:0;font-size:clamp(.96rem,1.3vw,1.12rem)}
  #mapScreen .energy-panel{align-self:start}
  #mapScreen .chapter-board{
    display:grid;
    grid-template-columns:minmax(0,1.18fr) minmax(320px,.82fr);
    gap:18px;
    align-items:stretch;
    padding:18px;
  }
  #mapScreen .story-progress{
    display:flex;
    flex-direction:column;
    gap:12px;
    min-height:0;
    margin:0;
    padding:0;
    border:0;
  }
  #mapScreen .story-stage{
    height:clamp(300px,38vh,370px);
    border-radius:28px;
  }
  #mapScreen .story-goals,
  #mapScreen .chapter-two-active .story-goals{
    margin-top:0;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  #mapScreen .story-goal{min-height:60px;padding:10px 12px}
  #mapScreen .map-side-panel{
    min-height:0;
    gap:12px;
  }
  #mapScreen .mission-route-scroll{
    border:1px solid rgba(255,255,255,.16);
    border-radius:22px;
    padding:10px 8px 10px 4px;
    background:rgba(7,13,41,.08);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);
  }
  #mapScreen .chapter-route-head{
    grid-template-columns:1fr;
    margin-bottom:8px;
    font-size:.79rem;
  }
  #mapScreen .chapter-route-head span:last-child{display:none}
  #mapScreen .level-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
  #mapScreen .level-object{min-height:104px;padding:3px 2px;gap:5px}
  #mapScreen .celestial-shape{width:62px;height:62px}
  #mapScreen .level-name{max-width:96px;font-size:.68rem}
  #mapScreen .map-actions{margin-top:0}
  #mapScreen .map-actions .secondary-button{width:100%;min-height:48px}
}

@media(max-width:700px){
  #mapScreen.is-active{height:calc(100dvh - 94px)}
  #mapScreen .map-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 3px 7px}
  #mapScreen .map-head .eyebrow{margin:0;font-size:.68rem}
  #mapScreen .energy-panel{margin:0;padding:7px 10px;gap:7px;border-radius:16px}
  #mapScreen .energy-panel span{font-size:.68rem}
  #mapScreen .energy-panel strong{font-size:1rem}
  #mapScreen .chapter-board{padding:9px}
  #mapScreen .story-progress{margin-bottom:8px;padding-bottom:8px}
  #mapScreen .mission-route-scroll{padding-right:3px;padding-bottom:8px}
  #mapScreen .map-side-panel{gap:8px}
}

/* Compact but still fixed map header for a phone held horizontally. */
@media(max-width:900px) and (max-height:520px){
  #mapScreen.is-active{height:calc(100dvh - 80px)}
  #mapScreen .map-head{margin-bottom:4px}
  #mapScreen .chapter-board{padding:7px}
  #mapScreen .story-progress{
    display:grid;
    grid-template-columns:minmax(0,1.65fr) minmax(220px,.85fr);
    align-items:stretch;
    gap:7px;
    margin-bottom:6px;
    padding-bottom:6px;
  }
  #mapScreen .story-stage{height:112px;border-radius:17px}
  #mapScreen .story-stage .story-cat-crop{width:82px;height:105px;bottom:-18px}
  #mapScreen .story-ship{transform:translate(-50%,-50%) rotate(8deg) scale(.58)}
  #mapScreen .story-portal{transform:translate(-50%,-50%) scale(.52)}
  #mapScreen .story-goals,
  #mapScreen .chapter-two-active .story-goals{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:0}
  #mapScreen .story-goal{min-height:43px;padding:5px 7px}
  #mapScreen .story-goal .goal-symbol{width:20px;height:21px}
  #mapScreen .story-goal strong{font-size:.67rem}
  #mapScreen .three-planet{width:82px;height:82px}
  #mapScreen .three-moon{width:31px;height:31px}
  #mapScreen .three-vault{transform:scale(.62);bottom:5%}
  #mapScreen .three-map-fragment{font-size:2rem}
  #mapScreen .level-object{min-height:96px}
  #mapScreen .celestial-shape{width:60px;height:60px}
  #mapScreen .map-actions{margin-top:0}
  #mapScreen .map-actions .secondary-button{min-height:42px}
}

/* v55: chapter 2 “Kolm” — one living world that awakens mission by mission. */
.story-stage.chapter-two>.story-cat-crop,
.story-stage.chapter-two>.story-ship,
.story-stage.chapter-two>.story-portal,
.story-stage.chapter-two>.next-planet,
.story-stage.chapter-two>.story-energy-stream{display:none!important}
.story-two.living-world{display:none}
.story-stage.chapter-two .story-two.living-world{display:block}
.living-world{
  position:absolute;
  inset:0;
  overflow:hidden;
  isolation:isolate;
  background:
    linear-gradient(180deg,rgba(8,18,58,.02),rgba(60,34,118,.05)),
    url("assets/edukass-kolm-world.png") center/100% 100% no-repeat;
}
.living-world:after{
  content:"";
  position:absolute;
  z-index:30;
  inset:0;
  pointer-events:none;
  box-shadow:inset 0 0 24px rgba(9,17,55,.32);
}
.world-life{position:absolute;opacity:0;pointer-events:none}
.world-life.is-earned{opacity:1}
.living-world .world-life{transition:opacity .42s ease,filter .42s ease}

.world-rocket{
  z-index:20;
  left:5%;
  bottom:2%;
  width:clamp(50px,10%,98px);
  height:auto;
  filter:drop-shadow(0 9px 7px rgba(18,15,55,.42));
  transform-origin:50% 88%;
}
.world-cat{
  z-index:21;
  left:14%;
  bottom:-7%;
  width:clamp(78px,16%,150px);
  height:auto;
  filter:drop-shadow(0 8px 6px rgba(18,15,55,.34));
  transform-origin:50% 88%;
}
.world-landing-glow{
  z-index:19;
  left:3%;
  bottom:1%;
  width:16%;
  height:12%;
  border-radius:50%;
  background:radial-gradient(ellipse,rgba(255,211,77,.5),rgba(112,217,207,.18) 42%,transparent 72%);
  filter:blur(3px);
}

.world-crystals{z-index:16;width:72px;height:72px;filter:drop-shadow(0 0 9px rgba(112,217,207,.62))}
.crystals-one{left:31%;bottom:13%}
.crystals-two{right:7%;bottom:27%;scale:.72}
.world-crystals i{
  position:absolute;
  bottom:0;
  width:24px;
  height:58px;
  clip-path:polygon(50% 0,100% 28%,82% 100%,18% 100%,0 28%);
  background:linear-gradient(118deg,#efffff 0 11%,#8ff5eb 13% 43%,#8f7de2 46% 72%,#e64e89 74%);
  border-radius:5px;
  box-shadow:inset 5px 0 8px rgba(255,255,255,.35),0 0 12px rgba(112,217,207,.62);
  transform-origin:50% 100%;
}
.world-crystals i:nth-child(1){left:24px;height:67px}
.world-crystals i:nth-child(2){left:5px;height:44px;transform:rotate(-13deg)}
.world-crystals i:nth-child(3){right:2px;height:50px;transform:rotate(15deg)}

.world-water{
  z-index:8;
  left:49%;
  right:-2%;
  bottom:-2%;
  height:42%;
  overflow:hidden;
  border-radius:55% 15% 0 0/38% 42% 0 0;
  clip-path:polygon(4% 13%,25% 18%,50% 39%,69% 53%,100% 65%,100% 100%,28% 100%,42% 78%,30% 62%,16% 48%,0 35%);
  background:linear-gradient(142deg,rgba(199,255,252,.76),rgba(112,217,207,.78) 32%,rgba(100,111,221,.88) 72%,rgba(230,78,137,.5));
  box-shadow:inset 0 5px 12px rgba(255,255,255,.5),0 0 17px rgba(112,217,207,.52);
}
.world-water i{
  position:absolute;
  left:-35%;
  width:62%;
  height:5px;
  border-radius:999px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.88),transparent);
  filter:blur(.3px);
}
.world-water i:nth-child(1){top:35%;animation:worldWaterFlow 4.7s linear infinite}
.world-water i:nth-child(2){top:68%;animation:worldWaterFlow 6.1s 1.1s linear infinite}
.world-water b{
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 65% 52%,rgba(255,255,255,.64) 0 2px,transparent 3px);
  background-size:58px 33px;
  opacity:.46;
  animation:worldWaterSparkle 3.4s ease-in-out infinite alternate;
}

.world-mushrooms{z-index:14;inset:0}
.world-mushrooms i{position:absolute;width:17px;height:40px;border-radius:50% 50% 8px 8px;background:linear-gradient(90deg,#fff3cc,#ffd98a);transform-origin:50% 100%}
.world-mushrooms i:before{content:"";position:absolute;left:50%;top:-12px;width:44px;height:24px;border:3px solid #17365f;border-radius:50% 50% 42% 42%;background:linear-gradient(135deg,#f49ad0,#8f7de2);box-shadow:0 0 12px rgba(230,78,137,.5);transform:translateX(-50%)}
.world-mushrooms i:after{content:"";position:absolute;left:2px;top:-6px;width:5px;height:5px;border-radius:50%;background:#fff;box-shadow:9px 3px 0 #fff,17px -1px 0 rgba(255,255,255,.8)}
.world-mushrooms i:nth-child(1){left:23%;bottom:8%;height:39px;scale:.86}
.world-mushrooms i:nth-child(2){left:47%;bottom:24%;height:55px;scale:1.05}
.world-mushrooms i:nth-child(3){right:12%;bottom:23%;height:32px;scale:.78}

.world-grass{z-index:12;inset:0}
.world-grass i{position:absolute;width:9px;height:42px;border-radius:90% 10% 90% 10%;background:linear-gradient(#c9fff1,#70d9cf 55%,#389fa6);box-shadow:0 0 7px rgba(112,217,207,.72);transform-origin:50% 100%}
.world-grass i:before,.world-grass i:after{content:"";position:absolute;left:-6px;bottom:1px;width:8px;height:30px;border-radius:90% 10% 90% 10%;background:inherit;transform:rotate(-23deg);transform-origin:50% 100%}
.world-grass i:after{left:7px;height:26px;transform:rotate(25deg)}
.world-grass i:nth-child(1){left:13%;bottom:10%;transform:rotate(-8deg)}.world-grass i:nth-child(2){left:29%;bottom:19%;height:34px;transform:rotate(5deg)}
.world-grass i:nth-child(3){left:42%;bottom:9%;height:47px;transform:rotate(-5deg)}.world-grass i:nth-child(4){left:47%;bottom:29%;height:35px;transform:rotate(8deg);scale:.82}
.world-grass i:nth-child(5){right:8%;bottom:34%;height:45px;transform:rotate(-7deg);scale:.88}.world-grass i:nth-child(6){right:3%;bottom:27%;height:31px;transform:rotate(9deg);scale:.78}

.world-flowers{z-index:15;inset:0}
.world-flowers i{position:absolute;width:4px;height:29px;border-radius:5px;background:#70d9cf;transform-origin:50% 100%}
.world-flowers i:before{content:"";position:absolute;left:50%;top:-9px;width:17px;height:17px;border-radius:50%;background:radial-gradient(circle,#fff6a8 0 22%,#e64e89 25% 52%,#f7a5cd 55%);box-shadow:0 0 10px rgba(230,78,137,.68);transform:translateX(-50%)}
.world-flowers i:nth-child(1){left:17%;bottom:19%}.world-flowers i:nth-child(2){left:36%;bottom:27%;height:39px}.world-flowers i:nth-child(3){left:48%;bottom:22%;height:24px}
.world-flowers i:nth-child(4){right:12%;bottom:34%;height:36px}.world-flowers i:nth-child(5){right:3%;bottom:25%;height:27px}

.world-creature{
  z-index:18;
  width:42px;
  height:34px;
  border:3px solid #17365f;
  border-radius:55% 55% 44% 44%;
  background:linear-gradient(145deg,#a9fff0,#70d9cf);
  box-shadow:0 0 12px rgba(112,217,207,.58),0 7px 8px rgba(18,15,55,.25);
  transform-origin:50% 100%;
}
.creature-one{left:39%;bottom:17%}
.creature-two{right:7%;bottom:28%;background:linear-gradient(145deg,#ffdca2,#f08aaa);box-shadow:0 0 12px rgba(230,78,137,.55),0 7px 8px rgba(18,15,55,.25);scale:.88}
.world-creature:before,.world-creature:after{content:"";position:absolute;top:-10px;width:13px;height:16px;border:3px solid #17365f;background:inherit;border-radius:70% 25% 55% 35%;z-index:-1}
.world-creature:before{left:4px;transform:rotate(-24deg)}.world-creature:after{right:4px;transform:scaleX(-1) rotate(-24deg)}
.world-creature i{position:absolute;left:10px;top:9px;width:6px;height:8px;border-radius:50%;background:#fff;box-shadow:16px 0 0 #fff}
.world-creature i:after{content:"";position:absolute;left:2px;top:3px;width:3px;height:4px;border-radius:50%;background:#17365f;box-shadow:16px 0 0 #17365f}
.world-creature b{position:absolute;left:50%;top:21px;width:10px;height:5px;border-bottom:2px solid #17365f;border-radius:50%;transform:translateX(-50%)}

.world-sky-life{z-index:5;inset:0}
.world-moon{position:absolute;right:12%;top:8%;width:64px;height:64px;border-radius:50%;background:radial-gradient(circle at 32% 28%,#fff 0 6%,#fff0aa 9% 49%,#ff9a3c 76%);box-shadow:0 0 0 9px rgba(255,255,255,.06),0 0 28px rgba(255,211,77,.55);animation:worldMoonBreathe 4s ease-in-out infinite alternate}
.world-new-star{position:absolute;width:5px;height:5px;border-radius:50%;background:#fff7a8;box-shadow:0 0 9px #ffd34d}
.world-new-star:before,.world-new-star:after{content:"";position:absolute;left:50%;top:50%;background:rgba(255,255,255,.82);transform:translate(-50%,-50%)}
.world-new-star:before{width:17px;height:2px}.world-new-star:after{width:2px;height:17px}
.star-a{left:58%;top:15%}.star-b{left:69%;top:26%;transform:scale(.7)}.star-c{right:25%;top:12%;transform:scale(.55)}.star-d{right:5%;top:29%;transform:scale(.8)}

.world-far-crystals{z-index:7;left:17%;bottom:38%;width:62px;height:45px;filter:drop-shadow(0 0 7px rgba(112,217,207,.5))}
.world-far-crystals i{position:absolute;bottom:0;width:15px;height:37px;clip-path:polygon(50% 0,100% 32%,82% 100%,18% 100%,0 32%);background:linear-gradient(120deg,#e9ffff,#70d9cf,#8f7de2)}
.world-far-crystals i:nth-child(1){left:22px;height:43px}.world-far-crystals i:nth-child(2){left:7px;height:29px;transform:rotate(-12deg)}.world-far-crystals i:nth-child(3){right:4px;height:32px;transform:rotate(13deg)}

.world-arch{z-index:9;left:58%;bottom:36%;width:74px;height:82px}
.world-arch i{position:absolute;inset:4px 7px 0;border:9px solid #7355b7;border-bottom:0;border-radius:48% 48% 7px 7px;box-shadow:inset 0 0 11px rgba(112,217,207,.58),0 0 12px rgba(143,125,226,.55)}
.world-arch i:before{content:"";position:absolute;inset:7px;border:3px dotted #ffd34d;border-bottom:0;border-radius:48% 48% 0 0}
.world-arch b{position:absolute;left:4px;right:4px;bottom:0;height:11px;border:4px solid #17365f;border-radius:8px;background:linear-gradient(90deg,#7355b7,#70d9cf,#7355b7)}

.world-path{z-index:10;left:63%;right:12%;bottom:31%;height:31%;transform:rotate(-6deg);transform-origin:100% 100%;overflow:hidden}
.world-path i{position:absolute;left:0;right:0;bottom:3%;height:44%;border-top:5px solid rgba(255,242,168,.9);border-radius:50%;filter:drop-shadow(0 0 7px #ffd34d);transform:rotate(-7deg)}
.world-path i:after{content:"";position:absolute;left:7%;right:9%;top:5px;border-top:2px dashed rgba(255,255,255,.9)}

.world-tower{z-index:11;right:12%;bottom:39%;width:62px;height:100px;filter:drop-shadow(0 9px 7px rgba(18,15,55,.34))}
.tower-body{position:absolute;left:12px;right:12px;bottom:0;height:73px;border:4px solid #17365f;border-radius:14px 14px 7px 7px;background:linear-gradient(135deg,#8f7de2,#58438f 58%,#70d9cf)}
.tower-roof{position:absolute;z-index:2;left:4px;right:4px;top:10px;height:36px;clip-path:polygon(50% 0,100% 100%,0 100%);background:linear-gradient(135deg,#f7a5cd,#e64e89);filter:drop-shadow(0 2px 0 #17365f)}
.tower-spire{position:absolute;left:28px;top:0;width:6px;height:18px;border-radius:6px;background:#ffd34d;box-shadow:0 0 8px #ff9a3c}
.tower-window{z-index:3;left:24px;bottom:25px;width:15px;height:22px;border:3px solid #17365f;border-radius:9px 9px 4px 4px;background:#fff5a8;box-shadow:0 0 14px #ffd34d,0 0 22px rgba(255,154,60,.7)}

.world-final-glow{z-index:24;inset:0;background:radial-gradient(ellipse at 67% 66%,rgba(112,217,207,.24),transparent 46%),radial-gradient(circle at 82% 38%,rgba(255,211,77,.2),transparent 28%);mix-blend-mode:screen}
.world-departure-trail{z-index:22;left:4%;top:8%;width:38%;height:46%}
.world-departure-trail:before{content:"";position:absolute;left:3%;bottom:8%;width:86%;height:12px;border-radius:50%;background:linear-gradient(90deg,rgba(255,211,77,.8),rgba(112,217,207,.65),transparent);filter:blur(5px);transform:rotate(-27deg)}
.world-departure-trail i{position:absolute;width:7px;height:7px;border-radius:50%;background:#fff7a8;box-shadow:0 0 9px #ffd34d}
.world-departure-trail i:nth-child(1){left:11%;bottom:8%}.world-departure-trail i:nth-child(2){left:32%;bottom:25%}.world-departure-trail i:nth-child(3){left:55%;bottom:45%}.world-departure-trail i:nth-child(4){left:79%;bottom:69%}

.world-crystals.is-earned i{animation:worldCrystalLife 3.3s ease-in-out infinite alternate}
.world-crystals.is-earned i:nth-child(2){animation-delay:.45s}.world-crystals.is-earned i:nth-child(3){animation-delay:.9s}
.world-mushrooms.is-earned i{animation:worldMushroomSway 3.8s ease-in-out infinite alternate}
.world-mushrooms.is-earned i:nth-child(2){animation-delay:.5s}.world-mushrooms.is-earned i:nth-child(3){animation-delay:1s}
.world-grass.is-earned i{animation:worldGrassSway 2.7s ease-in-out infinite alternate}
.world-grass.is-earned i:nth-child(2n){animation-direction:alternate-reverse}
.world-flowers.is-earned i{animation:worldFlowerBreathe 2.9s ease-in-out infinite alternate}
.world-flowers.is-earned i:nth-child(2n){animation-delay:.65s}
.world-creature.is-earned{animation:worldCreatureBob 2.6s ease-in-out infinite alternate}
.creature-two.is-earned{animation-delay:.7s}
.tower-window.is-earned{animation:worldTowerLight 2.8s ease-in-out infinite alternate}
.world-far-crystals.is-earned{animation:worldFarGlow 3.7s ease-in-out infinite alternate}
.world-path.is-earned{animation:worldPathPulse 3.3s ease-in-out infinite alternate}
.world-final-glow.is-earned{animation:worldCompletePulse 4.2s ease-in-out infinite alternate}

.reward-chapter-two{background:#171d4b}
.reward-chapter-two .reward-aurora,
.reward-chapter-two .reward-space-stars,
.reward-chapter-two .reward-speed-lines,
.reward-chapter-two>.crystal,
.reward-chapter-two>.result-cat-crop,
.reward-chapter-two>.reward-ship,
.reward-chapter-two>.reward-portal,
.reward-chapter-two>.reward-next-planet{display:none!important}
.reward-chapter-two .reward-three-zone.living-world{display:block;z-index:4}
.reward-chapter-two .world-life.is-new-reward{opacity:0}
.reward-chapter-two.is-playing .world-life.is-new-reward{animation:worldSoftReveal 2.25s .12s cubic-bezier(.2,.8,.2,1) forwards}
.reward-chapter-two.is-playing .world-rocket.is-new-reward{animation:worldRocketLand 2.65s .08s cubic-bezier(.18,.84,.25,1) forwards}
.reward-chapter-two.is-playing .world-cat.is-new-reward{animation:worldCatArrive 2.15s .18s cubic-bezier(.18,.84,.25,1.2) forwards}
.reward-chapter-two.is-playing .world-crystals.is-new-reward{animation:worldCrystalGrow 2.4s .12s cubic-bezier(.18,.84,.2,1.15) forwards}
.reward-chapter-two.is-playing .world-water.is-new-reward{animation:worldWaterReveal 2.55s .12s ease-out forwards}
.reward-chapter-two.is-playing .world-mushrooms.is-new-reward,
.reward-chapter-two.is-playing .world-grass.is-new-reward,
.reward-chapter-two.is-playing .world-flowers.is-new-reward{animation:worldScatterReveal .18s .12s linear forwards}
.reward-chapter-two.is-playing .world-mushrooms.is-new-reward i,
.reward-chapter-two.is-playing .world-grass.is-new-reward i,
.reward-chapter-two.is-playing .world-flowers.is-new-reward i{animation:worldNatureGrow 2.35s .15s cubic-bezier(.18,.84,.2,1.1) both}
.reward-chapter-two.is-playing .world-mushrooms.is-new-reward i:nth-child(2),
.reward-chapter-two.is-playing .world-grass.is-new-reward i:nth-child(2n),
.reward-chapter-two.is-playing .world-flowers.is-new-reward i:nth-child(2n){animation-delay:.38s}
.reward-chapter-two.is-playing .world-mushrooms.is-new-reward i:nth-child(3),
.reward-chapter-two.is-playing .world-grass.is-new-reward i:nth-child(3n),
.reward-chapter-two.is-playing .world-flowers.is-new-reward i:nth-child(3){animation-delay:.62s}
.reward-chapter-two.is-playing .world-path.is-new-reward{animation:worldPathReveal 2.45s .14s ease-out forwards}
.reward-chapter-two.is-playing .world-tower.is-new-reward{animation:worldTowerRise 2.5s .12s cubic-bezier(.18,.84,.2,1.08) forwards}
.reward-chapter-two.is-playing .tower-window.is-new-reward{animation:worldLightIgnite 2.3s .16s ease-out forwards}
.reward-chapter-two.is-playing .world-final-glow.is-new-reward{animation:worldFinalReveal 2.65s .1s ease-out forwards}
.reward-world-departure.is-playing .world-cat.is-earned{animation:worldCatBoards .9s .24s ease-in forwards}
.reward-world-departure.is-playing .world-rocket.is-earned{animation:worldRocketLaunch 3.6s .78s cubic-bezier(.36,.01,.34,1) forwards}
.reward-world-departure.is-playing .world-departure-trail.is-new-reward{animation:worldTrailReveal 3.5s .82s ease-out forwards}
.living-world.world-departed .world-rocket,
.living-world.world-departed .world-cat,
.living-world.world-departed .world-landing-glow{opacity:0!important}
.living-world.world-departed .world-departure-trail{opacity:1}

.chapter-two-active .goal-ship:before,.chapter-two-active .goal-ship:after,.chapter-two-active .goal-vault:before,.chapter-two-active .goal-vault:after{content:none}
.chapter-two-active .goal-ship{width:19px;height:25px;clip-path:polygon(50% 0,100% 28%,82% 100%,18% 100%,0 28%);background:linear-gradient(135deg,#efffff,#70d9cf,#8f7de2)}
.chapter-two-active .goal-engine{width:25px;height:18px;border:3px solid #70d9cf;border-top:0;border-radius:0 0 50% 50%;background:linear-gradient(180deg,#bffdf5,#708bd9);clip-path:none}
.chapter-two-active .goal-portal{width:24px;height:24px;border:0;border-radius:50% 50% 46% 46%;background:linear-gradient(145deg,#a9fff0,#70d9cf);box-shadow:0 0 8px rgba(112,217,207,.55)}
.chapter-two-active .goal-vault{width:18px!important;height:25px!important;border:3px solid #17365f;border-radius:7px 7px 3px 3px!important;background:linear-gradient(135deg,#8f7de2,#70d9cf)!important;clip-path:none!important}
.chapter-two-active .goal-vault:after{content:"";display:block;position:absolute;left:-4px;right:-4px;top:-8px;height:10px;border-radius:50% 50% 0 0;background:#e64e89}

@keyframes worldWaterFlow{to{transform:translateX(245%)}}
@keyframes worldWaterSparkle{to{opacity:.82;transform:translateX(12px)}}
@keyframes worldMoonBreathe{to{filter:brightness(1.14);box-shadow:0 0 0 12px rgba(255,255,255,.08),0 0 37px rgba(255,211,77,.72)}}
@keyframes worldCrystalLife{to{filter:brightness(1.25);translate:0 -2px;scale:1 1.025}}
@keyframes worldMushroomSway{to{rotate:2deg;translate:0 -1px}}
@keyframes worldGrassSway{to{rotate:8deg}}
@keyframes worldFlowerBreathe{to{filter:brightness(1.22);translate:0 -2px;scale:1.04}}
@keyframes worldCreatureBob{to{translate:0 -4px;rotate:1.5deg}}
@keyframes worldTowerLight{to{filter:brightness(1.24);box-shadow:0 0 19px #ffd34d,0 0 31px rgba(255,154,60,.8)}}
@keyframes worldFarGlow{to{filter:drop-shadow(0 0 13px rgba(112,217,207,.8)) brightness(1.18)}}
@keyframes worldPathPulse{to{filter:brightness(1.2) drop-shadow(0 0 7px rgba(255,211,77,.55))}}
@keyframes worldCompletePulse{to{opacity:.78;filter:brightness(1.18)}}
@keyframes worldSoftReveal{0%{opacity:0;filter:brightness(.7);transform:translateY(12px) scale(.75)}65%{opacity:1;filter:brightness(1.25);transform:translateY(-3px) scale(1.05)}100%{opacity:1;filter:none;transform:none}}
@keyframes worldScatterReveal{to{opacity:1}}
@keyframes worldRocketLand{0%{opacity:0;transform:translate(-65%,-130%) rotate(-25deg) scale(.7)}58%{opacity:1;transform:translate(0,-9%) rotate(2deg) scale(1.03)}78%{transform:translateY(2%) scale(.98)}100%{opacity:1;transform:none}}
@keyframes worldCatArrive{0%{opacity:0;transform:scale(.35) translateY(30%)}68%{opacity:1;transform:scale(1.07) translateY(-3%)}100%{opacity:1;transform:none}}
@keyframes worldCrystalGrow{0%{opacity:0;transform:scaleY(.05) scaleX(.55);filter:brightness(.6)}68%{opacity:1;transform:scaleY(1.08) scaleX(1.03);filter:brightness(1.45)}100%{opacity:1;transform:none;filter:none}}
@keyframes worldWaterReveal{0%{opacity:0;clip-path:polygon(4% 13%,4% 13%,4% 13%,4% 13%,4% 13%,4% 13%,4% 13%,4% 13%,4% 13%,4% 13%)}100%{opacity:1;clip-path:polygon(4% 13%,25% 18%,50% 39%,69% 53%,100% 65%,100% 100%,28% 100%,42% 78%,30% 62%,16% 48%,0 35%)}}
@keyframes worldNatureGrow{0%{opacity:0;transform:scaleY(.05) scaleX(.6);transform-origin:50% 100%}68%{opacity:1;transform:scaleY(1.08) scaleX(1.04);transform-origin:50% 100%}100%{opacity:1;transform:none;transform-origin:50% 100%}}
@keyframes worldPathReveal{0%{opacity:0;clip-path:inset(0 100% 0 0)}100%{opacity:1;clip-path:inset(0)}}
@keyframes worldTowerRise{0%{opacity:0;transform:translateY(65%) scale(.6)}70%{opacity:1;transform:translateY(-4%) scale(1.04)}100%{opacity:1;transform:none}}
@keyframes worldLightIgnite{0%{opacity:0;filter:brightness(.5);transform:scale(.25)}62%{opacity:1;filter:brightness(1.8);transform:scale(1.35)}100%{opacity:1;filter:none;transform:none}}
@keyframes worldFinalReveal{0%{opacity:0}62%{opacity:1;filter:brightness(1.45)}100%{opacity:.62;filter:none}}
@keyframes worldCatBoards{to{opacity:0;transform:translate(-40%,-16%) scale(.35)}}
@keyframes worldRocketLaunch{0%,15%{opacity:1;transform:none}35%{transform:translateY(4%) rotate(-3deg)}100%{opacity:0;transform:translate(250%,-185%) rotate(58deg) scale(.48)}}
@keyframes worldTrailReveal{0%{opacity:0;filter:blur(9px)}38%{opacity:1;filter:blur(2px)}100%{opacity:.74;filter:none}}

@media(max-width:700px){
  .world-rocket{left:3%;bottom:1%;width:52px;min-width:0}
  .world-cat{left:13%;bottom:-8%;width:84px;min-width:0}
  .crystals-one{left:29%;bottom:11%;scale:.66;transform-origin:50% 100%}
  .crystals-two{right:3%;bottom:25%;scale:.55;transform-origin:50% 100%}
  .world-mushrooms i{scale:.67}
  .world-mushrooms i:nth-child(2){scale:.78}
  .world-mushrooms i:nth-child(3){scale:.58}
  .world-grass i,.world-flowers i{scale:.72}
  .world-creature{scale:.72;transform-origin:50% 100%}
  .creature-one{left:38%;bottom:15%}.creature-two{right:5%;bottom:26%;scale:.62}
  .world-moon{right:8%;width:48px;height:48px}
  .world-far-crystals{left:15%;scale:.62;transform-origin:50% 100%}
  .world-arch{left:56%;scale:.66;transform-origin:50% 100%}
  .world-tower{right:7%;scale:.72;transform-origin:50% 100%}
}

@media(max-width:900px) and (max-height:520px){
  #mapScreen .living-world{background-size:100% 100%}
  #mapScreen .world-rocket{width:35px}
  #mapScreen .world-cat{width:52px;bottom:-12%}
  #mapScreen .world-crystals{scale:.45;transform-origin:50% 100%}
  #mapScreen .world-water{height:43%}
  #mapScreen .world-mushrooms i,#mapScreen .world-grass i,#mapScreen .world-flowers i{scale:.44;transform-origin:50% 100%}
  #mapScreen .world-creature{scale:.46;transform-origin:50% 100%}
  #mapScreen .world-moon{width:30px;height:30px}
  #mapScreen .world-far-crystals,#mapScreen .world-arch,#mapScreen .world-tower{scale:.45;transform-origin:50% 100%}
}
/* Chapter 3 · warm wind world. The scenery is deliberately independent from
   the number being learned: composition follows the planet, not the table. */
.wind-world{
  position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;
  background:
    radial-gradient(circle at 72% 19%,rgba(255,236,168,.96) 0 4%,rgba(255,201,135,.28) 4.5% 11%,transparent 12%),
    radial-gradient(ellipse at 68% 84%,#9d5266 0 17%,transparent 17.5%),
    radial-gradient(ellipse at 23% 88%,#b96163 0 25%,transparent 25.5%),
    linear-gradient(180deg,#573d72 0%,#a65b74 43%,#e88b72 72%,#d26e61 100%);
  box-shadow:inset 0 -2.2rem 4rem rgba(77,34,69,.34),inset 0 1.2rem 4rem rgba(255,210,157,.12);
}
.wind-world::before,.wind-world::after{content:"";position:absolute;left:-8%;right:-8%;border-radius:50% 50% 0 0}
.wind-world::before{height:36%;bottom:-13%;background:linear-gradient(170deg,#d87b66 0 22%,#b75d62 23% 56%,#864a63 57%);box-shadow:0 -1rem 3rem rgba(255,178,118,.18)}
.wind-world::after{width:52%;height:17%;left:43%;bottom:10%;background:#bd6566;transform:rotate(-4deg);box-shadow:-28rem 3rem 0 3rem #cc7166}
.wind-life{position:absolute;display:block;opacity:0;visibility:hidden;z-index:4}
.wind-life.is-earned,.wind-life.is-new-reward{visibility:visible}
.wind-life.is-earned{opacity:1}
.reward-chapter-three .reward-three-zone,.reward-chapter-three .reward-ship,.reward-chapter-three .reward-portal,.reward-chapter-three .reward-next-planet,.reward-chapter-three .result-cat-crop{display:none}
.reward-four-zone{display:none}
.reward-chapter-three .reward-four-zone{display:block}
.story-three{display:none}
.chapter-three .story-two,.chapter-three .story-ship,.chapter-three .story-portal,.chapter-three .next-planet,.chapter-three .story-cat-crop,.chapter-three .story-energy-stream{display:none!important}
.chapter-three .story-three{display:block}
.wind-world-map{z-index:3}
.wind-world-reward{z-index:3}

.wind-rocket{left:5%;bottom:2%;width:clamp(50px,10%,98px);z-index:12;filter:drop-shadow(0 12px 10px rgba(72,35,61,.35))}
.wind-cat{left:14%;bottom:-7%;width:clamp(78px,16%,150px);z-index:13;filter:drop-shadow(0 8px 8px rgba(72,35,61,.32))}
.wind-landing-glow{left:8%;bottom:11%;width:23%;height:12%;border-radius:50%;background:radial-gradient(ellipse,rgba(255,235,172,.6),transparent 70%);z-index:8}
.wind-clouds{inset:0;z-index:3}
.wind-clouds i{position:absolute;width:27%;height:7%;border-radius:50%;background:linear-gradient(90deg,transparent,rgba(255,229,190,.76),rgba(222,205,247,.55),transparent);filter:blur(1px);animation:windSweep 10s linear infinite}
.wind-clouds i:nth-child(1){left:-8%;top:18%}.wind-clouds i:nth-child(2){left:31%;top:31%;animation-delay:-3.3s}.wind-clouds i:nth-child(3){left:68%;top:12%;animation-delay:-6.6s}
.wind-home{left:35%;bottom:12%;width:22%;height:36%;z-index:10}
.wind-home i{position:absolute;left:14%;right:14%;bottom:0;height:68%;border-radius:48% 48% 18% 18%;background:linear-gradient(105deg,#315f78,#5aa8aa 58%,#70d9cf);box-shadow:inset 7px 0 rgba(255,255,255,.13),0 12px 18px rgba(75,35,65,.28)}
.wind-home b{position:absolute;left:4%;right:4%;top:4%;height:49%;border-radius:54% 54% 22% 22%;background:linear-gradient(110deg,#7355b7,#b7a9ed 65%,#e4dcff);transform:rotate(-3deg);box-shadow:0 0 1rem rgba(189,177,244,.42)}
.wind-home em{position:absolute;left:42%;bottom:0;width:17%;height:34%;border-radius:60% 60% 12% 12%;background:#3d426d;border:3px solid #ffe3a2}
.wind-home-awake{left:35%;bottom:12%;width:22%;height:36%;z-index:11}
.wind-home-awake i,.wind-home-awake b{position:absolute;border-radius:50%;background:#ffe7a4;box-shadow:0 0 1rem #ffc978;animation:homeGlow 3.6s ease-in-out infinite}
.wind-home-awake i{left:25%;bottom:29%;width:13%;aspect-ratio:1}.wind-home-awake b{right:24%;bottom:30%;width:13%;aspect-ratio:1;animation-delay:-1.8s}
.wind-plant{z-index:10}
.wind-plant i,.wind-plant b{position:absolute;bottom:0;width:13%;height:88%;border-radius:80% 18% 68% 22%;background:linear-gradient(90deg,#315f78,#70d9cf 58%,#d9fff6);transform-origin:50% 100%;animation:sailBreathe 5s ease-in-out infinite;box-shadow:0 0 .8rem rgba(112,217,207,.35)}
.wind-plant-one{left:24%;bottom:11%;width:15%;height:25%}.wind-plant-one i{left:38%}
.wind-workshop{right:7%;bottom:13%;width:19%;height:26%;z-index:10}
.wind-workshop i{position:absolute;inset:29% 5% 0;border-radius:38% 38% 14% 14%;background:linear-gradient(100deg,#574b87,#8c79ce);box-shadow:0 10px 18px rgba(68,35,77,.28)}
.wind-workshop b{position:absolute;left:7%;right:7%;top:9%;height:38%;border-radius:60% 60% 18% 18%;background:#bdb1f4}
.wind-workshop em{position:absolute;left:42%;bottom:18%;width:18%;aspect-ratio:1;border-radius:50%;background:#70d9cf;box-shadow:0 0 .8rem #70d9cf}
.wind-gliders{left:23%;top:12%;width:55%;height:28%;z-index:13}
.wind-gliders i{position:absolute;width:8%;height:12%;border-radius:80% 15% 80% 15%;background:#bff5ed;box-shadow:12px 4px 0 -3px #7355b7;animation:glideAcross 10s ease-in-out infinite}
.wind-gliders i:nth-child(2){left:40%;top:35%;animation-delay:-3s}.wind-gliders i:nth-child(3){right:4%;top:9%;animation-delay:-6s}
.wind-sun-ring{right:7%;top:11%;width:15%;aspect-ratio:1;border:7px solid #ffdc9a;border-radius:50%;box-shadow:0 0 1.5rem rgba(255,215,148,.65),inset 0 0 1rem rgba(255,215,148,.4);animation:ringGlow 5s ease-in-out infinite;z-index:8}
.wind-sun-ring i{position:absolute;inset:29%;border-radius:50%;background:#ffd28e}.wind-sun-ring b{position:absolute;inset:-16%;border:2px dashed rgba(255,226,171,.5);border-radius:50%;animation:windWheel 18s linear infinite}
.wind-rock-arch{right:27%;bottom:11%;width:13%;height:20%;z-index:8}
.wind-rock-arch i{position:absolute;inset:0;border:8px solid #74516f;border-bottom:0;border-radius:55% 55% 0 0;box-shadow:inset 0 0 0 4px #a86b7f}
.wind-energy-device{right:22%;bottom:12%;width:12%;height:27%;z-index:11}
.wind-energy-device i{position:absolute;left:43%;bottom:0;width:14%;height:55%;border-radius:1rem;background:#3d426d}
.wind-energy-device b{position:absolute;left:11%;top:2%;width:78%;aspect-ratio:1;border:5px solid #bdb1f4;border-radius:50%;background:conic-gradient(transparent,#70d9cf,transparent,#7355b7,transparent);animation:windWheel 12s linear infinite}
.wind-energy-device em{position:absolute;left:40%;top:30%;width:20%;aspect-ratio:1;border-radius:50%;background:#ffe6a0;box-shadow:0 0 1rem #ffd07f}
.wind-energy-flow{left:49%;right:17%;bottom:15%;height:12%;z-index:7;border-bottom:4px solid rgba(255,224,151,.78);border-radius:50%;filter:drop-shadow(0 0 7px #ffcf83)}
.wind-energy-flow i{position:absolute;left:14%;bottom:-7px;width:10px;aspect-ratio:1;border-radius:50%;background:#fff0b5;box-shadow:7rem 0 #fff0b5,14rem 0 #fff0b5;animation:lightStream 4s ease-in-out infinite}
.wind-plants-more{left:57%;bottom:10%;width:17%;height:21%}.wind-plants-more i{left:8%;height:74%}.wind-plants-more b{right:10%;height:100%;animation-delay:-2s}
.wind-sky-domes{right:3%;top:22%;width:41%;height:24%;z-index:5}
.wind-sky-domes i{position:absolute;width:25%;height:22%;border-radius:50% 50% 65% 35%;background:linear-gradient(#b9b0ea,#5c4e99);box-shadow:0 9px 0 -6px rgba(220,213,255,.34);animation:islandFloat 7s ease-in-out infinite}
.wind-sky-domes i:first-child{left:4%;top:32%}.wind-sky-domes i:last-child{right:5%;top:4%;animation-delay:-3s}
.wind-settlement-path{left:27%;right:9%;bottom:8%;height:11%;z-index:6;border-top:5px solid rgba(255,218,153,.72);border-radius:50%;transform:rotate(-1deg);filter:drop-shadow(0 0 8px #ffc987)}
.wind-resident{left:30%;bottom:9%;width:9%;height:19%;z-index:14;animation:residentBob 4.6s ease-in-out infinite}
.wind-resident i{position:absolute;left:18%;bottom:0;width:65%;height:61%;border-radius:50% 50% 38% 38%;background:linear-gradient(110deg,#6d55a2,#b9a8e8)}
.wind-resident b{position:absolute;left:11%;top:0;width:78%;aspect-ratio:1;border-radius:48% 52% 44% 48%;background:#70d9cf;border:3px solid #315f78}
.wind-resident b::before,.wind-resident b::after{content:"";position:absolute;top:38%;width:20%;aspect-ratio:1;border-radius:50%;background:#17365f;box-shadow:inset 2px 2px #fff}
.wind-resident b::before{left:21%}.wind-resident b::after{right:21%}
.wind-resident em{position:absolute;left:48%;top:-28%;width:4%;height:32%;border-radius:1rem;background:#315f78;transform:rotate(-12deg);transform-origin:bottom}
.wind-resident em::after{content:"";position:absolute;left:50%;top:-5px;width:9px;aspect-ratio:1;border-radius:50%;background:#ffe394;transform:translateX(-50%);box-shadow:0 0 .7rem #ffd280}
.wind-settlement-light{inset:0;z-index:14}
.wind-settlement-light i{position:absolute;width:8px;aspect-ratio:1;border-radius:50%;background:#ffe8ae;box-shadow:0 0 1rem #ffd187;animation:warmSpark 3.5s ease-in-out infinite}
.wind-settlement-light i:nth-child(1){left:42%;top:55%}.wind-settlement-light i:nth-child(2){left:70%;top:68%;animation-delay:-1.2s}.wind-settlement-light i:nth-child(3){left:88%;top:61%;animation-delay:-2.4s}
.wind-final-breeze{inset:0;background:radial-gradient(ellipse at 54% 62%,rgba(255,224,165,.16),transparent 62%);animation:ringGlow 6s ease-in-out infinite;z-index:1}
.wind-departure-trail{left:7%;top:11%;width:38%;height:45%;z-index:16}
.wind-departure-trail i{position:absolute;left:0;width:70%;height:3px;border-radius:100%;background:linear-gradient(90deg,transparent,#ffe1a0);transform:rotate(-32deg);animation:departureTrail 2.2s ease-out infinite}
.wind-departure-trail i:nth-child(2){top:12%;animation-delay:-.4s}.wind-departure-trail i:nth-child(3){top:24%;animation-delay:-.8s}

.wind-life.is-new-reward{opacity:0}
.reward-chapter-three.is-playing .wind-life.is-new-reward{animation:windReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}
.reward-chapter-three.is-playing .wind-rocket.is-new-reward{animation:windLanding 2.5s cubic-bezier(.2,.75,.24,1) forwards}
.reward-chapter-three.is-playing .wind-cat.is-new-reward{animation:catExit 1.3s 1.15s ease-out forwards}
.reward-chapter-three.is-playing .wind-plant.is-new-reward i,.reward-chapter-three.is-playing .wind-plant.is-new-reward b{animation:growWindObject 1.7s cubic-bezier(.2,.82,.25,1) forwards}
.reward-chapter-three.is-playing.reward-wind-departure .wind-rocket{animation:windTakeoff 3.2s ease-in forwards}
.reward-chapter-three.is-playing.reward-wind-departure .wind-cat{animation:catBoard .7s ease-in forwards}
.wind-departed .wind-rocket,.wind-departed .wind-cat{opacity:0!important}

@keyframes windReveal{0%{opacity:0;transform:translateY(15px) scale(.82);filter:blur(5px)}100%{opacity:1;transform:none;filter:none}}
@keyframes windLanding{0%{opacity:0;transform:translate(80%,-150%) rotate(8deg) scale(.72)}60%{opacity:1;transform:translate(8%,-15%) rotate(2deg) scale(.94)}100%{opacity:1;transform:none}}
@keyframes catExit{0%{opacity:0;transform:translateX(-55%) scale(.7)}100%{opacity:1;transform:none}}
@keyframes growWindObject{0%{opacity:0;transform:scaleY(.08)}100%{opacity:1}}
@keyframes windTakeoff{0%{opacity:1;transform:none}35%{transform:translateY(-8%)}100%{opacity:0;transform:translate(150%,-170%) rotate(12deg) scale(.7)}}
@keyframes catBoard{to{opacity:0;transform:translateX(-65%) scale(.6)}}
@keyframes windSweep{0%{transform:translateX(-60%)}100%{transform:translateX(310%)}}
@keyframes sailBreathe{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(4deg)}}
@keyframes windWheel{to{transform:rotate(360deg)}}
@keyframes podFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-14px) rotate(3deg)}}
@keyframes islandFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes treeSway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(3deg)}}
@keyframes chimeSwing{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}
@keyframes glideAcross{0%,100%{transform:translate(-12px,4px) rotate(-5deg)}50%{transform:translate(25px,-10px) rotate(4deg)}}
@keyframes ringGlow{0%,100%{filter:brightness(.92)}50%{filter:brightness(1.22)}}
@keyframes lightStream{0%,100%{opacity:.25;transform:translateX(-8%)}50%{opacity:.85;transform:translateX(7%)}}
@keyframes warmSpark{0%,100%{opacity:.25;transform:scale(.7)}50%{opacity:1;transform:scale(1.35)}}
@keyframes homeGlow{0%,100%{filter:brightness(.9)}50%{filter:brightness(1.25)}}
@keyframes residentBob{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-5px) rotate(1deg)}}
@keyframes departureTrail{0%{opacity:0;transform:translate(0,0) rotate(-32deg)}30%{opacity:1}100%{opacity:0;transform:translate(120%,-90%) rotate(-32deg)}}

@media (max-width:600px){
  .wind-rocket{left:3%;bottom:1%;width:52px;min-width:0}.wind-cat{left:13%;bottom:-8%;width:84px;min-width:0}
  .wind-home,.wind-home-awake{left:34%;width:25%}.wind-resident{left:29%;width:11%}.wind-workshop{right:3%;width:22%}
}
@media (prefers-reduced-motion:reduce){
  .wind-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}
}

/* Chapter 4 · Lumin night world. No warm-wind palette or surface objects are reused. */
.lumin-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:
  radial-gradient(circle at 76% 16%,rgba(252,248,207,.08),transparent 19%),
  radial-gradient(ellipse at 20% 108%,#351346 0 35%,transparent 35.5%),
  linear-gradient(180deg,#080716 0%,#17102b 52%,#2a1139 100%);box-shadow:inset 0 -2.6rem 4rem rgba(5,2,18,.75)}
.lumin-world::before{content:"";position:absolute;left:-8%;right:-8%;bottom:-14%;height:45%;border-radius:50% 50% 0 0;background:linear-gradient(165deg,#24102f,#120a20 65%);box-shadow:0 -1rem 2rem rgba(244,231,91,.05)}
.lumin-life{position:absolute;display:block;opacity:0;visibility:hidden;z-index:4}.lumin-life.is-earned,.lumin-life.is-new-reward{visibility:visible}.lumin-life.is-earned{opacity:1}
.reward-five-zone{display:none}.reward-chapter-four .reward-five-zone{display:block}
.reward-chapter-four .reward-three-zone,.reward-chapter-four .reward-four-zone,.reward-chapter-four .reward-ship,.reward-chapter-four .reward-portal,.reward-chapter-four .reward-next-planet,.reward-chapter-four .result-cat-crop{display:none}
.story-four{display:none}.chapter-four .story-two,.chapter-four .story-three,.chapter-four .story-ship,.chapter-four .story-portal,.chapter-four .next-planet,.chapter-four .story-cat-crop,.chapter-four .story-energy-stream{display:none!important}.chapter-four .story-four{display:block}
.lumin-world-map,.lumin-world-reward{z-index:3}
.lumin-rocket{left:5%;bottom:2%;width:clamp(50px,10%,98px);z-index:16;filter:drop-shadow(0 12px 10px #080510)}
.lumin-cat{left:14%;bottom:-7%;width:clamp(78px,16%,150px);z-index:17;filter:drop-shadow(0 8px 8px #080510)}
.lumin-landing-glow{left:7%;bottom:10%;width:25%;height:13%;border-radius:50%;background:radial-gradient(ellipse,rgba(244,231,91,.28),transparent 70%);z-index:8}
.lumin-moon{right:8%;top:7%;width:15%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 34% 28%,#fff 0 7%,#f7f2cf 9% 56%,#b8afdc 74%);box-shadow:0 0 2rem rgba(249,242,202,.45);z-index:6}.lumin-moon i{position:absolute;inset:17%;border-radius:50%;border:2px dotted rgba(67,48,90,.3)}
.lumin-ground-veins{left:23%;right:2%;bottom:7%;height:27%;z-index:5}.lumin-ground-veins i{position:absolute;left:0;bottom:22%;width:72%;height:34%;border-bottom:3px solid #f4e75b;border-radius:50%;filter:drop-shadow(0 0 5px #f4e75b);transform:rotate(-5deg)}.lumin-ground-veins i:nth-child(2){left:26%;bottom:48%;width:48%;transform:rotate(8deg);border-color:#ef70bd}.lumin-ground-veins i:nth-child(3){left:54%;bottom:6%;width:35%;transform:rotate(-13deg);border-color:#fff}
.lumin-home{left:38%;bottom:11%;width:19%;height:45%;z-index:12;filter:drop-shadow(0 0 10px rgba(244,231,91,.16))}.lumin-home i,.lumin-home b,.lumin-home em{position:absolute;bottom:0;clip-path:polygon(50% 0,100% 28%,78% 100%,18% 100%,0 32%)}.lumin-home i{left:4%;width:54%;height:88%;background:linear-gradient(105deg,#3c1d60,#8e3e9e 58%,#f06cb9)}.lumin-home b{right:2%;width:58%;height:68%;background:linear-gradient(110deg,#432268,#7253a6 58%,#d3b7ee)}.lumin-home em{left:34%;bottom:4%;width:26%;height:32%;background:#120a20;border:3px solid #f4e75b;border-radius:45% 45% 8% 8%;clip-path:none}
.lumin-home-light{left:38%;bottom:11%;width:19%;height:45%;z-index:13}.lumin-home-light i{position:absolute;left:22%;top:16%;width:14%;aspect-ratio:1;background:#fff;border-radius:50%;box-shadow:0 0 1rem #fff,0 0 2rem #f4e75b;animation:luminPulse 3s ease-in-out infinite}.lumin-home-light b{position:absolute;right:17%;top:36%;width:13%;aspect-ratio:1;background:#f4e75b;border-radius:50%;box-shadow:0 0 1rem #f4e75b}
.lumin-garden{left:25%;bottom:10%;width:14%;height:27%;z-index:10}.lumin-garden i{position:absolute;bottom:0;width:24%;height:80%;background:linear-gradient(#fff,#ef70bd 38%,#612a84);clip-path:polygon(50% 0,100% 80%,62% 100%,15% 100%,0 73%);filter:drop-shadow(0 0 6px #ef70bd);transform-origin:50% 100%;animation:crystalBreathe 4s ease-in-out infinite}.lumin-garden i:nth-child(2){left:34%;height:100%;animation-delay:-1.3s}.lumin-garden i:nth-child(3){right:2%;height:65%;animation-delay:-2.6s}
.lumin-sky-ribbons{left:20%;right:19%;top:7%;height:25%;z-index:4}.lumin-sky-ribbons i,.lumin-sky-ribbons b{position:absolute;inset:8% 0 40%;border-top:8px solid rgba(239,112,189,.4);border-radius:50%;filter:blur(2px);animation:ribbonDrift 8s ease-in-out infinite}.lumin-sky-ribbons b{inset:40% 9% 5%;border-color:rgba(244,231,91,.3);animation-delay:-4s}
.lumin-rift{right:8%;bottom:10%;width:17%;height:19%;z-index:9}.lumin-rift i{position:absolute;inset:28% 0 0;border-radius:50%;background:radial-gradient(ellipse,#fff 0 5%,#f4e75b 9% 22%,#ef70bd 38%,transparent 67%);transform:rotate(-9deg);animation:luminPulse 3.5s ease-in-out infinite}
.lumin-extractor{right:20%;bottom:12%;width:12%;height:28%;z-index:12}.lumin-extractor i{position:absolute;left:43%;bottom:0;width:14%;height:60%;background:#7460a2;border-radius:1rem}.lumin-extractor b{position:absolute;left:10%;top:3%;width:80%;aspect-ratio:1;border:4px solid #f4e75b;transform:rotate(45deg);box-shadow:0 0 1rem rgba(244,231,91,.55);animation:luminTurn 10s linear infinite}.lumin-extractor em{position:absolute;left:41%;top:31%;width:18%;aspect-ratio:1;border-radius:50%;background:#fff;box-shadow:0 0 1rem #ef70bd}
.lumin-storage{right:2%;bottom:12%;width:13%;height:21%;z-index:11}.lumin-storage i{position:absolute;inset:23% 4% 0;border-radius:12% 12% 28% 28%;background:#3e2458;border:3px solid #9b78bd}.lumin-storage b{position:absolute;left:31%;top:0;width:38%;aspect-ratio:1;transform:rotate(45deg);background:#f4e75b;box-shadow:0 0 1rem #f4e75b}
.lumin-road{left:32%;right:4%;bottom:7%;height:14%;z-index:7;border-top:4px solid rgba(244,231,91,.72);border-radius:50%;filter:drop-shadow(0 0 6px #f4e75b)}
.lumin-flowers{left:57%;bottom:10%;width:13%;height:19%;z-index:11}.lumin-flowers i{position:absolute;bottom:0;width:4px;height:68%;background:#7c58a7}.lumin-flowers i::before{content:"";position:absolute;left:50%;top:-10px;width:15px;aspect-ratio:1;border-radius:50%;background:#fff;box-shadow:0 0 1rem #fff;transform:translateX(-50%)}.lumin-flowers i:nth-child(2){left:43%;height:100%}.lumin-flowers i:nth-child(3){right:3%;height:75%}
.lumin-floaters{inset:0;z-index:8}.lumin-floaters i{position:absolute;width:7px;aspect-ratio:1;border-radius:50%;background:#fff;box-shadow:0 0 1rem #ef70bd;animation:floatLight 5s ease-in-out infinite}.lumin-floaters i:nth-child(1){left:32%;top:30%}.lumin-floaters i:nth-child(2){left:63%;top:24%;animation-delay:-1.2s}.lumin-floaters i:nth-child(3){left:79%;top:47%;animation-delay:-2.5s}.lumin-floaters i:nth-child(4){left:53%;top:65%;animation-delay:-3.7s}
.lumin-energy-stream{left:50%;right:13%;bottom:18%;height:15%;z-index:8}.lumin-energy-stream i{position:absolute;inset:0;border-bottom:4px dotted #f4e75b;border-radius:50%;filter:drop-shadow(0 0 5px #f4e75b);animation:streamGlow 3s ease-in-out infinite}
.lumin-resident{left:33%;bottom:8%;width:8%;height:18%;z-index:16;animation:luminBob 4s ease-in-out infinite}.lumin-resident i{position:absolute;left:18%;bottom:0;width:64%;height:60%;border-radius:52% 52% 38% 38%;background:linear-gradient(120deg,#f7f1ff,#b8a4d7)}.lumin-resident b{position:absolute;left:8%;top:0;width:84%;aspect-ratio:1;border-radius:60% 40% 55% 45%;background:#f5efff}.lumin-resident b::before,.lumin-resident b::after{content:"";position:absolute;top:39%;width:20%;aspect-ratio:1;border-radius:50%;background:#160c28;box-shadow:inset 2px 2px #fff}.lumin-resident b::before{left:20%}.lumin-resident b::after{right:20%}.lumin-resident em{position:absolute;left:42%;bottom:7%;width:18%;aspect-ratio:1;border-radius:50%;background:#f4e75b;box-shadow:0 0 1rem #f4e75b}.lumin-resident::before,.lumin-resident::after{content:"";position:absolute;top:-20%;width:22%;height:40%;border-radius:70% 70% 20% 20%;background:#ef70bd;transform-origin:bottom}.lumin-resident::before{left:18%;transform:rotate(-18deg)}.lumin-resident::after{right:18%;transform:rotate(18deg)}
.lumin-city-light{inset:0;z-index:15}.lumin-city-light i{position:absolute;width:9px;aspect-ratio:1;border-radius:50%;background:#f4e75b;box-shadow:0 0 1.2rem #f4e75b;animation:luminPulse 3s ease-in-out infinite}.lumin-city-light i:nth-child(1){left:44%;top:49%}.lumin-city-light i:nth-child(2){left:74%;top:66%;animation-delay:-1s}.lumin-city-light i:nth-child(3){left:91%;top:65%;animation-delay:-2s}
.lumin-final-glow{inset:0;background:radial-gradient(ellipse at 58% 63%,rgba(244,231,91,.16),transparent 56%);animation:luminPulse 5s ease-in-out infinite;z-index:2}
.lumin-departure-trail{left:7%;top:10%;width:42%;height:46%;z-index:18}.lumin-departure-trail i{position:absolute;width:72%;height:3px;border-radius:50%;background:linear-gradient(90deg,transparent,#f4e75b);transform:rotate(-32deg);animation:departureTrail 2.2s ease-out infinite}.lumin-departure-trail i:nth-child(2){top:12%;animation-delay:-.4s}.lumin-departure-trail i:nth-child(3){top:24%;animation-delay:-.8s}
.lumin-life.is-new-reward{opacity:0}.reward-chapter-four.is-playing .lumin-life.is-new-reward{animation:luminReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-four.is-playing .lumin-rocket.is-new-reward{animation:windLanding 2.5s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-four.is-playing .lumin-cat.is-new-reward{animation:catExit 1.3s 1.15s ease-out forwards}.reward-chapter-four.is-playing.reward-lumin-departure .lumin-rocket{animation:windTakeoff 3.2s ease-in forwards}.reward-chapter-four.is-playing.reward-lumin-departure .lumin-cat{animation:catBoard .7s ease-in forwards}.lumin-departed .lumin-rocket,.lumin-departed .lumin-cat{opacity:0!important}
@keyframes luminReveal{0%{opacity:0;transform:translateY(13px) scale(.78);filter:blur(7px) brightness(1.8)}100%{opacity:1;transform:none;filter:none}}
@keyframes luminPulse{0%,100%{filter:brightness(.86)}50%{filter:brightness(1.35)}}
@keyframes crystalBreathe{0%,100%{transform:scaleY(.96)}50%{transform:scaleY(1.05)}}
@keyframes ribbonDrift{0%,100%{transform:translateX(-3%) rotate(-2deg)}50%{transform:translateX(4%) rotate(2deg)}}
@keyframes luminTurn{to{transform:rotate(405deg)}}
@keyframes floatLight{0%,100%{transform:translateY(0);opacity:.45}50%{transform:translateY(-14px);opacity:1}}
@keyframes streamGlow{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes luminBob{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-5px) rotate(1deg)}}
@media(max-width:600px){.lumin-rocket{left:3%;bottom:1%;width:52px;min-width:0}.lumin-cat{left:13%;bottom:-8%;width:84px;min-width:0}.lumin-home,.lumin-home-light{left:38%;width:21%}.lumin-resident{left:32%;width:10%}}
@media(prefers-reduced-motion:reduce){.lumin-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}

/* Chapter 5 · Kuus: alien northern fjord beneath a giant ringed planet. */
.north-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 67% 17%,rgba(189,106,57,.22),transparent 19%),linear-gradient(180deg,#101a2e 0%,#26364a 44%,#182a31 45%,#071218 100%)}
.north-world::before{content:"";position:absolute;left:-9%;right:-9%;bottom:-19%;height:55%;border-radius:48% 56% 0 0;background:linear-gradient(168deg,#f1ead9 0 12%,#9b9a91 13% 18%,#302e2b 19%);box-shadow:0 -10px 30px rgba(2,8,14,.6)}
.north-world::after{content:"";position:absolute;left:-15%;right:-15%;bottom:-32%;height:44%;border-radius:50% 50% 0 0;background:linear-gradient(180deg,rgba(21,48,55,.6),#081216);border-top:2px solid rgba(211,137,70,.35);z-index:2}
.north-cosmos{position:absolute;inset:0;z-index:1}.north-cosmos i{position:absolute;right:7%;top:5%;width:23%;aspect-ratio:1;border-radius:50%;background:repeating-linear-gradient(168deg,#d6aa68 0 8%,#84462e 9% 17%,#e8c78e 18% 25%,#5e3440 26% 33%);box-shadow:inset 18px -15px 22px rgba(18,15,29,.62),0 0 25px rgba(221,148,76,.22)}.north-cosmos i::after{content:"";position:absolute;left:-24%;right:-24%;top:45%;height:17%;border:4px solid rgba(227,190,137,.8);border-left-color:rgba(227,190,137,.22);border-right-color:rgba(227,190,137,.22);border-radius:50%;transform:rotate(-12deg)}.north-cosmos b,.north-cosmos em{position:absolute;border-radius:50%;background:#d9d3bd;box-shadow:inset -5px -4px #5d6870}.north-cosmos b{left:15%;top:10%;width:4%;aspect-ratio:1}.north-cosmos em{left:22%;top:18%;width:2.5%;aspect-ratio:1;background:#b8613f}
.north-life{position:absolute;display:block;opacity:0;visibility:hidden;z-index:4}.north-life.is-earned,.north-life.is-new-reward{visibility:visible}.north-life.is-earned{opacity:1}
.reward-six-zone{display:none}.reward-chapter-five .reward-six-zone{display:block}
.reward-chapter-five .reward-three-zone,.reward-chapter-five .reward-four-zone,.reward-chapter-five .reward-five-zone,.reward-chapter-five .reward-ship,.reward-chapter-five .reward-portal,.reward-chapter-five .reward-next-planet,.reward-chapter-five .result-cat-crop{display:none}
.story-five{display:none}.chapter-five .story-two,.chapter-five .story-three,.chapter-five .story-four,.chapter-five .story-ship,.chapter-five .story-portal,.chapter-five .next-planet,.chapter-five .story-cat-crop,.chapter-five .story-energy-stream{display:none!important}.chapter-five .story-five{display:block}
.north-rocket{left:4%;bottom:2%;width:clamp(50px,10%,98px);z-index:20;filter:drop-shadow(0 11px 8px rgba(19,23,22,.55))}
.north-cat{left:13%;bottom:-7%;width:clamp(78px,16%,150px);z-index:21;filter:drop-shadow(0 7px 7px rgba(19,23,22,.55))}
.north-landing{left:5%;bottom:9%;width:25%;height:12%;border-radius:50%;background:radial-gradient(ellipse,rgba(245,224,174,.42),transparent 70%);z-index:8}
.north-fjord{left:15%;right:-5%;bottom:0;height:39%;z-index:4;overflow:hidden;background:radial-gradient(ellipse at 63% 38%,rgba(199,113,55,.3),transparent 24%),linear-gradient(170deg,#18333b,#07171d 67%);clip-path:polygon(7% 28%,100% 2%,100% 100%,0 100%)}.north-fjord i,.north-fjord b{position:absolute;left:7%;right:0;height:4px;border-radius:50%;background:linear-gradient(90deg,transparent,rgba(211,132,65,.8),rgba(235,203,153,.25),transparent);animation:northWater 5s ease-in-out infinite}.north-fjord i{top:38%}.north-fjord b{top:66%;animation-delay:-2.5s}
.north-cliffs{right:-1%;bottom:21%;width:50%;height:47%;z-index:7}.north-cliffs i,.north-cliffs b,.north-cliffs em{position:absolute;bottom:0;background:repeating-linear-gradient(115deg,#fff9e8 0 12%,#c9c6b7 13% 20%,#767b7a 21% 25%);clip-path:polygon(0 23%,24% 6%,48% 15%,68% 0,100% 13%,83% 34%,98% 53%,77% 70%,91% 100%,5% 100%,18% 73%,0 54%,17% 39%);filter:drop-shadow(-7px 10px 6px rgba(2,9,13,.5))}.north-cliffs i{left:0;width:59%;height:78%;transform:rotate(-4deg)}.north-cliffs b{right:-5%;width:61%;height:100%;transform:rotate(3deg)}.north-cliffs em{left:39%;bottom:50%;width:29%;height:24%;transform:rotate(-8deg);animation:northRockFloat 6s ease-in-out infinite}
.north-forest{left:20%;right:4%;bottom:25%;height:43%;z-index:9}.north-forest i{position:absolute;bottom:0;width:12%;height:86%;background:linear-gradient(90deg,#211c24 0 43%,#9e3f2c 44% 55%,#d56b3f 56%);clip-path:polygon(46% 100%,42% 35%,20% 30%,4% 18%,25% 5%,50% 15%,73% 0,96% 18%,78% 34%,55% 39%,58% 100%);transform-origin:50% 100%;animation:northTree 6s ease-in-out infinite}.north-forest i::after{content:"";position:absolute;left:8%;right:8%;top:12%;height:36%;border:6px solid #bb4f32;border-left-color:transparent;border-radius:50%;transform:rotate(-18deg)}.north-forest i:nth-child(1){left:2%;height:72%}.north-forest i:nth-child(2){left:19%;height:95%;animation-delay:-1s}.north-forest i:nth-child(3){right:26%;height:78%;animation-delay:-2s}.north-forest i:nth-child(4){right:3%;height:100%;animation-delay:-3s}
.north-pier{left:33%;bottom:14%;width:32%;height:17%;z-index:13;transform:skewX(-12deg)}.north-pier i{position:absolute;inset:0 0 48%;border:3px solid #1a2225;border-radius:12px;background:repeating-linear-gradient(90deg,#20272a 0 11%,#506067 12% 16%);box-shadow:0 9px 0 rgba(4,15,19,.52),0 13px 10px rgba(210,123,55,.3)}.north-pier b{position:absolute;left:14%;right:7%;bottom:25%;height:13%;border-radius:50%;background:rgba(217,139,70,.35);filter:blur(5px)}
.north-home{right:7%;bottom:27%;width:26%;height:32%;z-index:12}.north-home i{position:absolute;left:2%;right:2%;bottom:0;height:84%;background:linear-gradient(100deg,#eee8d8,#807f79 58%,#383b3c);clip-path:polygon(0 48%,21% 8%,48% 0,76% 13%,100% 52%,81% 100%,17% 100%)}.north-home b{position:absolute;left:8%;right:8%;bottom:2%;height:69%;background:#182127;clip-path:polygon(0 50%,27% 5%,50% 42%,75% 0,100% 51%,77% 100%,22% 100%)}.north-home em{position:absolute;left:40%;bottom:0;width:24%;height:45%;border-radius:50% 50% 10% 10%;background:#071014;border:3px solid #bb7042;box-shadow:inset 0 0 11px rgba(219,137,70,.45)}
.north-home-light{right:7%;bottom:27%;width:26%;height:32%;z-index:14}.north-home-light i,.north-home-light b{position:absolute;top:43%;width:11%;aspect-ratio:1;border-radius:50%;background:#e3a35d;border:3px solid #342d2b;box-shadow:0 0 15px rgba(227,163,93,.76)}.north-home-light i{left:18%}.north-home-light b{right:15%}
.north-boat{left:52%;bottom:12%;width:19%;height:14%;z-index:15;animation:northBoat 5s ease-in-out infinite}.north-boat i{position:absolute;left:0;right:0;bottom:20%;height:49%;border-radius:55% 12% 55% 12%;background:linear-gradient(100deg,#542c2d,#b45236 58%,#2a3337);border:3px solid #172024;box-shadow:0 9px 7px rgba(211,121,55,.42)}.north-boat b{position:absolute;left:12%;right:12%;bottom:0;height:18%;border-radius:50%;background:rgba(219,133,61,.3);filter:blur(4px)}.north-boat em{position:absolute;right:7%;bottom:47%;width:32%;height:38%;border:4px solid #cf8050;border-left:0;border-radius:0 70% 12% 0;transform:skewY(-12deg)}
.north-nets{left:40%;bottom:25%;width:16%;height:22%;z-index:14}.north-nets i{position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent 0 8px,rgba(51,43,36,.8) 9px 11px),repeating-linear-gradient(-45deg,transparent 0 8px,rgba(51,43,36,.7) 9px 11px);clip-path:polygon(8% 0,92% 0,72% 100%,28% 100%)}.north-nets b{position:absolute;left:0;right:0;top:-4px;border-top:5px solid #563a2b}
.north-boardwalk{left:21%;right:12%;bottom:24%;height:12%;z-index:11;transform:rotate(-3deg)}.north-boardwalk i{position:absolute;left:0;width:48%;height:30%;background:repeating-linear-gradient(90deg,#242c2f 0 11%,#68767b 12% 17%);border-radius:35%;box-shadow:0 4px 6px rgba(0,0,0,.35)}.north-boardwalk b,.north-boardwalk em{position:absolute;width:8%;aspect-ratio:1.5;border-radius:45% 55% 40% 60%;background:#f0eadb;border:3px solid #777d7d;box-shadow:0 5px 0 rgba(0,0,0,.22)}.north-boardwalk b{left:57%;top:20%;transform:rotate(12deg)}.north-boardwalk em{left:73%;top:5%;box-shadow:45px 11px #e8e1d1}
.north-moss{left:20%;right:6%;bottom:21%;height:12%;z-index:12}.north-moss i{position:absolute;bottom:0;width:10%;height:46%;border-radius:80% 60% 25% 30%;background:#b29436}.north-moss i:nth-child(1){left:5%}.north-moss i:nth-child(2){left:28%;width:14%}.north-moss i:nth-child(3){right:8%;width:16%}.north-moss b{position:absolute;left:34%;bottom:20%;width:5px;height:5px;border-radius:50%;background:#7d1f25;box-shadow:9px 2px #7d1f25,18px -1px #7d1f25,27px 3px #7d1f25}
.north-resident{right:29%;bottom:24%;width:9%;height:20%;z-index:18;animation:northResident 4s ease-in-out infinite}.north-resident i{position:absolute;left:14%;bottom:0;width:72%;height:61%;border-radius:48% 48% 28% 28%;background:repeating-linear-gradient(105deg,#6f2f29 0 12%,#cf6842 13% 20%,#38262a 21% 29%)}.north-resident b{position:absolute;left:7%;top:2%;width:86%;aspect-ratio:1;border-radius:58% 42% 54% 46%;background:#b87c5d;border:4px solid #e6d7c2}.north-resident b::before,.north-resident b::after{content:"";position:absolute;top:38%;width:18%;aspect-ratio:1;border-radius:50%;background:#14232b;box-shadow:inset 2px 2px #e5f0ea}.north-resident b::before{left:22%}.north-resident b::after{right:22%}.north-resident em{position:absolute;left:-5%;right:-5%;bottom:-4%;height:25%;border-radius:55%;background:#26383c;box-shadow:-8px 2px #26383c,8px 2px #26383c}
.north-resident-motion{right:27%;bottom:22%;width:16%;height:8%;z-index:17}.north-resident-motion i{position:absolute;inset:0;border-bottom:3px dotted rgba(66,43,33,.6);border-radius:50%;animation:northFootsteps 3s ease-in-out infinite}
.north-yard{right:3%;bottom:22%;width:19%;height:18%;z-index:13}.north-yard i{position:absolute;left:10%;bottom:0;width:5px;height:100%;background:#4a3328;box-shadow:65px 0 #4a3328}.north-yard b{position:absolute;left:8%;right:8%;top:15%;height:5px;background:#4a3328}.north-yard em{position:absolute;left:23%;top:26%;width:56%;height:47%;background:repeating-linear-gradient(90deg,#a77d54 0 8%,#d9b878 9% 14%);clip-path:polygon(0 0,100% 0,85% 100%,13% 100%)}
.north-catch{left:58%;bottom:18%;width:12%;height:8%;z-index:17}.north-catch i,.north-catch b{position:absolute;width:40%;height:55%;border-radius:55% 10% 55% 10%;background:#c3b9a4;border:2px solid #47463f}.north-catch i{left:4%;transform:rotate(18deg)}.north-catch b{right:3%;transform:rotate(-14deg)}
.north-village-life{inset:0;z-index:19}.north-village-life i{position:absolute;right:14%;top:28%;width:5px;height:22%;border-radius:50%;background:rgba(239,226,201,.7);filter:blur(3px);animation:northSmoke 5s ease-in-out infinite}.north-village-life b,.north-village-life em{position:absolute;left:46%;bottom:7%;width:18%;height:2px;background:rgba(227,219,191,.5);animation:northWater 4s ease-in-out infinite}.north-village-life em{left:72%;bottom:12%;animation-delay:-2s}
.north-finished{inset:0;z-index:3;background:radial-gradient(ellipse at 65% 63%,rgba(244,205,132,.16),transparent 48%);animation:northWarmth 6s ease-in-out infinite}
.north-departure{left:6%;top:8%;width:42%;height:45%;z-index:22}.north-departure i{position:absolute;width:72%;height:3px;border-radius:50%;background:linear-gradient(90deg,transparent,#f2d18d);transform:rotate(-32deg);animation:departureTrail 2.2s ease-out infinite}.north-departure i:nth-child(2){top:12%;animation-delay:-.4s}.north-departure i:nth-child(3){top:24%;animation-delay:-.8s}
.north-life.is-new-reward{opacity:0}.reward-chapter-five.is-playing .north-life.is-new-reward{animation:northReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-five.is-playing .north-rocket.is-new-reward{animation:windLanding 2.5s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-five.is-playing .north-cat.is-new-reward{animation:catExit 1.3s 1.15s ease-out forwards}.reward-chapter-five.is-playing.reward-north-departure .north-rocket{animation:windTakeoff 3.2s ease-in forwards}.reward-chapter-five.is-playing.reward-north-departure .north-cat{animation:catBoard .7s ease-in forwards}.north-departed .north-rocket,.north-departed .north-cat{opacity:0!important}
@keyframes northReveal{0%{opacity:0;transform:translateY(16px) scale(.8);filter:blur(5px)}100%{opacity:1;transform:none;filter:none}}
@keyframes northWater{0%,100%{transform:translateX(-3%);opacity:.38}50%{transform:translateX(5%);opacity:.75}}
@keyframes northTree{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(2deg)}}
@keyframes northBoat{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-4px) rotate(1deg)}}
@keyframes northResident{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes northFootsteps{0%,100%{opacity:.25}50%{opacity:.8}}
@keyframes northSmoke{0%{transform:translate(0,9px) scale(.7);opacity:0}35%{opacity:.7}100%{transform:translate(10px,-20px) scale(1.4);opacity:0}}
@keyframes northWarmth{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes northRockFloat{0%,100%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(-8px) rotate(-5deg)}}
@media(max-width:600px){.north-rocket{left:3%;bottom:1%;width:52px;min-width:0}.north-cat{left:13%;bottom:-8%;width:84px;min-width:0}.north-home,.north-home-light{right:4%;width:27%}.north-resident{right:27%;width:11%}.north-forest{left:18%}}
@media(prefers-reduced-motion:reduce){.north-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}

/* Chapter 6 · Seitse: vertical world of giant plants and reverse rain */
.canopy-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 16% 14%,rgba(255,220,113,.4),transparent 22%),linear-gradient(180deg,#ff9f80 0%,#d96f91 38%,#513769 72%,#172957 100%)}
.canopy-world::before{content:"";position:absolute;left:-8%;right:-8%;bottom:-7%;height:36%;z-index:1;background:radial-gradient(ellipse at 60% 20%,rgba(103,228,255,.34),transparent 30%),linear-gradient(180deg,#174c91,#071d4d);border-radius:58% 42% 0 0;box-shadow:inset 0 8px 22px rgba(151,247,255,.22)}
.canopy-world::after{content:"";position:absolute;left:43%;top:-9%;width:17%;height:97%;z-index:3;border-radius:46% 54% 38% 62%;background:linear-gradient(90deg,#123e96,#2279bd 48%,#0e3e83);transform:rotate(7deg);box-shadow:-18px 0 0 rgba(17,71,133,.5),22px 0 0 rgba(40,117,166,.35)}
.reward-seven-zone{display:none}.reward-chapter-six .reward-seven-zone{display:block}
.reward-chapter-six .reward-three-zone,.reward-chapter-six .reward-four-zone,.reward-chapter-six .reward-five-zone,.reward-chapter-six .reward-six-zone,.reward-chapter-six .reward-ship,.reward-chapter-six .reward-portal,.reward-chapter-six .reward-next-planet,.reward-chapter-six .result-cat-crop{display:none}
.story-six{display:none}.chapter-six .story-two,.chapter-six .story-three,.chapter-six .story-four,.chapter-six .story-five,.chapter-six .story-ship,.chapter-six .story-portal,.chapter-six .next-planet,.chapter-six .story-cat-crop,.chapter-six .story-energy-stream{display:none!important}.chapter-six .story-six{display:block}
.canopy-life{position:absolute;display:block;opacity:0;transform:translateY(13px) scale(.9);transition:opacity .8s ease,transform 1s cubic-bezier(.2,.75,.25,1)}.canopy-life.is-earned,.canopy-life.is-new-reward{opacity:1;transform:none}
.canopy-sky{position:absolute;inset:0}.canopy-sky i,.canopy-sky b,.canopy-sky em{position:absolute;border-radius:50%;background:rgba(255,224,155,.45);filter:blur(2px)}.canopy-sky i{width:15%;aspect-ratio:1;right:8%;top:8%}.canopy-sky b{width:7%;aspect-ratio:1;right:26%;top:20%}.canopy-sky em{left:3%;top:31%;width:36%;height:8%;border-radius:50%;background:rgba(255,210,185,.28)}
.canopy-rocket{left:5%;bottom:8%;width:clamp(58px,15%,102px);z-index:22;filter:drop-shadow(0 10px 8px rgba(16,22,55,.4))}.canopy-cat{left:18%;bottom:4%;width:clamp(78px,19%,126px);z-index:23}.canopy-landing{left:2%;bottom:6%;width:37%;height:15%;z-index:8;border-radius:70% 30% 65% 35%;background:radial-gradient(ellipse,rgba(255,232,126,.45),transparent 68%)}
.canopy-leaf{z-index:7;background:linear-gradient(135deg,#d8ed43,#71d948 56%,#1b9b6c);border:4px solid #225f65;box-shadow:inset 0 -12px 18px rgba(14,85,89,.23),0 12px 16px rgba(21,22,70,.27);clip-path:ellipse(49% 40% at 50% 50%)}.canopy-leaf::after{content:"";position:absolute;left:8%;right:8%;top:49%;height:4px;background:#e7f26a;transform:rotate(-7deg);box-shadow:0 0 8px rgba(238,255,116,.5)}.canopy-leaf.landing{left:-8%;bottom:2%;width:54%;height:31%;transform:rotate(5deg)}.canopy-leaf.high{right:-10%;top:17%;width:54%;height:26%;transform:rotate(-9deg)}
.canopy-lagoon{left:10%;right:-8%;bottom:0;height:37%;z-index:2;background:radial-gradient(ellipse at 55% 18%,rgba(82,226,255,.4),transparent 30%),linear-gradient(165deg,#185ab5,#081c54 70%);clip-path:polygon(0 31%,100% 0,100% 100%,0 100%)}.canopy-lagoon::after{content:"";position:absolute;left:4%;right:0;top:45%;height:5px;border-radius:50%;background:linear-gradient(90deg,transparent,#7cecff,transparent);animation:canopyWater 5s ease-in-out infinite}
.canopy-rain{inset:0;z-index:13}.canopy-rain i{position:absolute;bottom:17%;width:9px;height:17px;border-radius:55% 55% 55% 15%;background:#b8f6ff;box-shadow:0 0 9px #78e9ff;transform:rotate(45deg);animation:reverseRain 4.8s linear infinite}.canopy-rain i:nth-child(1){left:35%}.canopy-rain i:nth-child(2){left:54%;animation-delay:-1s}.canopy-rain i:nth-child(3){left:70%;animation-delay:-2.1s}.canopy-rain i:nth-child(4){left:84%;animation-delay:-3.2s}.canopy-rain i:nth-child(5){left:25%;animation-delay:-4s}
.canopy-trunk{right:27%;top:-4%;width:18%;height:92%;z-index:4}.canopy-trunk i,.canopy-trunk b{position:absolute;inset:0;border-radius:48%;background:linear-gradient(90deg,#123b92,#2180bd 48%,#0b397e)}.canopy-trunk b{left:57%;top:8%;width:44%;height:75%;transform:rotate(-13deg);transform-origin:bottom}
.canopy-roots{left:21%;right:16%;top:48%;height:20%;z-index:12;transform:rotate(-7deg)}.canopy-roots i,.canopy-roots b{position:absolute;left:0;right:0;height:15%;border:7px solid #e2a43e;border-top:0;border-radius:0 0 50% 50%;filter:drop-shadow(0 6px 3px rgba(41,30,66,.35))}.canopy-roots b{top:31%;left:13%;right:9%;border-color:#c67b37}
.canopy-flower{left:48%;top:28%;width:22%;height:27%;z-index:14}.canopy-flower i,.canopy-flower b,.canopy-flower em{position:absolute;left:34%;top:0;width:34%;height:62%;border-radius:80% 20% 75% 25%;background:#ffdb4f;transform-origin:50% 100%;box-shadow:inset 0 -6px #f39a3e}.canopy-flower i{transform:rotate(-64deg)}.canopy-flower b{transform:rotate(64deg)}.canopy-flower em{background:#ff8c55;border-radius:50%;height:42%;top:25%}
.canopy-seeds{inset:0;z-index:17}.canopy-seeds i{position:absolute;width:16px;height:27px;border-radius:70% 30% 65% 35%;background:#ffcf55;box-shadow:0 0 10px rgba(255,218,93,.7);animation:seedFloat 5s ease-in-out infinite}.canopy-seeds i:nth-child(1){left:35%;top:22%}.canopy-seeds i:nth-child(2){left:58%;top:12%;animation-delay:-1.3s}.canopy-seeds i:nth-child(3){right:12%;top:39%;animation-delay:-2.4s}.canopy-seeds i:nth-child(4){left:24%;top:44%;animation-delay:-3.2s}
.canopy-home{width:19%;height:24%;z-index:16}.canopy-home i{position:absolute;inset:0;border-radius:58% 42% 61% 39%;background:linear-gradient(135deg,#ffb243,#e66542);border:4px solid #7c3651;box-shadow:inset -9px -10px rgba(120,43,75,.18)}.canopy-home b{position:absolute;left:36%;top:38%;width:28%;height:37%;border-radius:50% 50% 12% 12%;background:#293061;border:3px solid #ffe174}.home-one{right:9%;top:35%}.home-two{left:29%;top:15%;transform:scale(.72)}
.canopy-home-light{right:13%;top:44%;width:7%;aspect-ratio:1;z-index:18;border-radius:50%;background:#fff17c;box-shadow:0 0 18px 6px rgba(255,229,88,.75)}
.canopy-paths{left:34%;right:8%;top:38%;height:27%;z-index:11}.canopy-paths i,.canopy-paths b{position:absolute;width:52%;height:35%;border-bottom:7px solid #f0bd42;border-radius:50%;transform:rotate(18deg)}.canopy-paths b{right:0;top:35%;transform:rotate(-24deg);border-color:#dc8e38}
.canopy-residents{inset:0;z-index:20}.canopy-residents i,.canopy-residents b,.canopy-residents em{position:absolute;width:4.5%;aspect-ratio:.72;border-radius:48% 48% 35% 35%;background:linear-gradient(#81f0d0 0 32%,#613c91 33%);border:2px solid #24355f;box-shadow:inset 0 -3px rgba(29,26,84,.24)}.canopy-residents i::before,.canopy-residents b::before,.canopy-residents em::before{content:"";position:absolute;left:7%;top:-24%;width:86%;aspect-ratio:1;border:2px solid #24355f;border-radius:58% 42% 54% 46%;background:radial-gradient(circle at 32% 47%,#172957 0 5%,transparent 6%),radial-gradient(circle at 68% 47%,#172957 0 5%,transparent 6%),radial-gradient(circle at 32% 46%,#fff 0 10%,transparent 11%),radial-gradient(circle at 68% 46%,#fff 0 10%,transparent 11%),linear-gradient(145deg,#b8ffe8,#67d8bd);box-shadow:inset 0 -4px rgba(27,121,127,.2);box-sizing:border-box}.canopy-residents i::after,.canopy-residents b::after,.canopy-residents em::after{content:"";position:absolute;left:45%;top:-39%;width:10%;height:18%;border-radius:1rem;background:#24355f;box-shadow:0 -2px 0 1px #ffe36b}.canopy-residents i{right:22%;top:52%}.canopy-residents b{left:39%;top:35%}.canopy-residents em{right:8%;top:29%;transform:scale(.8)}
.canopy-upper{left:-5%;right:-5%;top:-8%;height:30%;z-index:9}.canopy-upper i,.canopy-upper b,.canopy-upper em{position:absolute;width:46%;height:70%;border-radius:50%;background:linear-gradient(150deg,#dff04a,#38c98b);clip-path:ellipse(50% 31% at 50% 50%);box-shadow:0 8px 0 rgba(33,87,91,.35)}.canopy-upper i{left:0;transform:rotate(14deg)}.canopy-upper b{right:0;transform:rotate(-17deg)}.canopy-upper em{left:31%;top:-18%;transform:scale(.8)}
.canopy-alive{inset:0;z-index:19;background:radial-gradient(circle at 57% 45%,rgba(255,242,115,.15),transparent 34%)}.canopy-alive i,.canopy-alive b{position:absolute;left:11%;right:8%;height:3px;background:linear-gradient(90deg,transparent,#bdf9ff,transparent);animation:canopyWater 4s ease-in-out infinite}.canopy-alive i{bottom:18%}.canopy-alive b{bottom:28%;animation-delay:-2s}
.canopy-finished{inset:0;z-index:21;background:radial-gradient(ellipse at 55% 45%,rgba(246,255,126,.13),transparent 58%);animation:canopyGlow 6s ease-in-out infinite}.canopy-departure{left:4%;top:5%;width:45%;height:42%;z-index:25}.canopy-departure i{position:absolute;width:74%;height:3px;background:linear-gradient(90deg,transparent,#fff3a5);transform:rotate(-31deg);animation:departureTrail 2.2s ease-out infinite}.canopy-departure i:nth-child(2){top:12%;animation-delay:-.5s}.canopy-departure i:nth-child(3){top:24%;animation-delay:-1s}
.canopy-life.is-new-reward{opacity:0}.reward-chapter-six.is-playing .canopy-life.is-new-reward{animation:canopyReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-six.is-playing .canopy-rocket.is-new-reward{animation:windLanding 2.5s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-six.is-playing .canopy-cat.is-new-reward{animation:catExit 1.3s 1.15s ease-out forwards}.reward-chapter-six.is-playing.reward-canopy-departure .canopy-rocket{animation:windTakeoff 3.2s ease-in forwards}.reward-chapter-six.is-playing.reward-canopy-departure .canopy-cat{animation:catBoard .7s ease-in forwards}.canopy-departed .canopy-rocket,.canopy-departed .canopy-cat{opacity:0!important}
@keyframes canopyReveal{0%{opacity:0;transform:translateY(18px) scale(.78);filter:blur(6px)}100%{opacity:1;transform:none;filter:none}}@keyframes reverseRain{0%{transform:translateY(70px) rotate(45deg);opacity:0}18%{opacity:1}100%{transform:translateY(-310px) rotate(45deg);opacity:0}}@keyframes seedFloat{0%,100%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(-11px) rotate(8deg)}}@keyframes canopyWater{0%,100%{transform:translateX(-4%);opacity:.4}50%{transform:translateX(5%);opacity:.9}}@keyframes canopyGlow{0%,100%{opacity:.5}50%{opacity:1}}
@media(max-width:600px){.canopy-rocket{left:3%;bottom:5%;width:53px}.canopy-cat{left:15%;bottom:0;width:78px}.canopy-home{width:22%}.canopy-residents i,.canopy-residents b,.canopy-residents em{width:6%}}
@media(prefers-reduced-motion:reduce){.canopy-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}

/* Chapter 7 · Kaheksa: bright crater of singing terraces */
.terrace-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 72% 8%,rgba(255,255,220,.72),transparent 19%),linear-gradient(180deg,#78cfd0 0 39%,#f3d68a 40% 63%,#b76767 100%)}
.terrace-world::before{content:"";position:absolute;z-index:1;left:-9%;right:-9%;bottom:-18%;height:73%;border-radius:50% 50% 0 0;background:radial-gradient(ellipse at 50% 24%,#f8e7b6 0 26%,#dfa955 27% 41%,#bf7356 42% 57%,#6e405f 58% 72%,#352d55 73%);box-shadow:inset 0 13px 20px rgba(255,248,207,.28)}
.terrace-world::after{content:"";position:absolute;z-index:2;left:16%;right:12%;bottom:-8%;height:49%;border-radius:50% 50% 0 0;background:radial-gradient(ellipse at 50% 5%,#f7e6b6 0 27%,#e5ae57 28% 43%,#a75d58 44% 62%,#4a3152 63%);filter:drop-shadow(0 -8px 8px rgba(73,42,73,.18))}
.reward-eight-zone{display:none}.reward-chapter-seven .reward-eight-zone{display:block}
.reward-chapter-seven .reward-three-zone,.reward-chapter-seven .reward-four-zone,.reward-chapter-seven .reward-five-zone,.reward-chapter-seven .reward-six-zone,.reward-chapter-seven .reward-seven-zone,.reward-chapter-seven .reward-ship,.reward-chapter-seven .reward-portal,.reward-chapter-seven .reward-next-planet,.reward-chapter-seven .result-cat-crop{display:none}
.story-seven{display:none}.chapter-seven .story-two,.chapter-seven .story-three,.chapter-seven .story-four,.chapter-seven .story-five,.chapter-seven .story-six,.chapter-seven .story-ship,.chapter-seven .story-portal,.chapter-seven .next-planet,.chapter-seven .story-cat-crop,.chapter-seven .story-energy-stream{display:none!important}.chapter-seven .story-seven{display:block}
.terrace-life{position:absolute;display:block;z-index:6;opacity:0;transform:translateY(13px) scale(.88);transition:opacity .8s ease,transform 1s cubic-bezier(.2,.75,.25,1)}.terrace-life.is-earned,.terrace-life.is-new-reward{opacity:1;transform:none}
.terrace-rim{inset:0;z-index:3}.terrace-rim i,.terrace-rim b,.terrace-rim em{position:absolute;left:5%;right:4%;height:16%;border:8px solid rgba(255,237,181,.8);border-top:0;border-radius:0 0 50% 50%}.terrace-rim i{bottom:11%}.terrace-rim b{left:15%;right:13%;bottom:23%;border-color:#d89b59}.terrace-rim em{left:27%;right:25%;bottom:34%;border-color:#a96062}
.terrace-rocket{left:4%;bottom:7%;width:clamp(58px,15%,102px);z-index:24;filter:drop-shadow(0 10px 8px rgba(49,34,64,.35))}.terrace-cat{left:17%;bottom:3%;width:clamp(78px,19%,126px);z-index:25}.terrace-landing{left:1%;bottom:4%;width:38%;height:16%;z-index:5;border-radius:50%;background:radial-gradient(ellipse,rgba(255,245,176,.65),transparent 68%)}
.terrace-bowls{left:39%;bottom:19%;width:35%;height:31%;z-index:10}.terrace-bowls i,.terrace-bowls b,.terrace-bowls em{position:absolute;bottom:0;width:30%;height:68%;border-radius:12% 12% 50% 50%;background:linear-gradient(100deg,#fff1c3,#cc8757);border:4px solid #6a405e;box-shadow:inset 0 -14px #854e70,0 9px 12px rgba(57,33,68,.24)}.terrace-bowls i{left:1%;transform:rotate(-8deg)}.terrace-bowls b{left:34%;height:94%}.terrace-bowls em{right:1%;height:76%;transform:rotate(7deg)}
.terrace-glaze{left:39%;bottom:26%;width:35%;height:23%;z-index:12}.terrace-glaze i,.terrace-glaze b,.terrace-glaze em{position:absolute;width:25%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fffad2 0 15%,#dc6571 16% 45%,#593665 46%);box-shadow:0 0 18px #fff0a8}.terrace-glaze i{left:3%;bottom:0}.terrace-glaze b{left:38%;bottom:18%}.terrace-glaze em{right:3%;bottom:2%}
.terrace-home,.terrace-homes{z-index:8}.terrace-home{right:7%;bottom:39%;width:20%;height:24%}.terrace-home i,.terrace-homes i,.terrace-homes b,.terrace-homes em{position:absolute;border:5px solid #6b3e5e;border-radius:50% 50% 18% 18%;background:linear-gradient(135deg,#f9e8b9,#d48d5a)}.terrace-home i{inset:0}.terrace-home b{position:absolute;left:35%;bottom:0;width:30%;height:48%;border-radius:50% 50% 10% 10%;background:#3c3155;border:3px solid #f3ca66}.terrace-homes{left:24%;right:8%;bottom:53%;height:18%}.terrace-homes i,.terrace-homes b,.terrace-homes em{width:14%;height:75%}.terrace-homes i{left:0}.terrace-homes b{left:44%;top:-12%}.terrace-homes em{right:0;top:8%}
.terrace-home-lights{left:24%;right:8%;bottom:55%;height:14%;z-index:11}.terrace-home-lights i,.terrace-home-lights b,.terrace-home-lights em{position:absolute;width:5%;aspect-ratio:1;border-radius:50%;background:#fff19b;box-shadow:0 0 16px 5px rgba(255,220,91,.7)}.terrace-home-lights i{left:5%}.terrace-home-lights b{left:49%;top:-10%}.terrace-home-lights em{right:4%;top:15%}
.terrace-circle{left:26%;bottom:17%;width:57%;height:25%;z-index:7}.terrace-circle i{position:absolute;inset:0;border:7px solid #f1cf79;border-radius:50%;box-shadow:inset 0 0 0 5px #a75a61}
.terrace-lamps{inset:0;z-index:15}.terrace-lamps i{position:absolute;width:12px;height:25px;border-radius:9px;background:#7a4162;border:2px solid #f2c36e;box-shadow:0 -9px 13px #fff08d}.terrace-lamps i:nth-child(1){left:31%;bottom:25%}.terrace-lamps i:nth-child(2){left:42%;bottom:16%}.terrace-lamps i:nth-child(3){left:61%;bottom:14%}.terrace-lamps i:nth-child(4){right:19%;bottom:24%}.terrace-lamps i:nth-child(5){right:9%;bottom:43%}
.terrace-resident,.terrace-residents{z-index:19}.terrace-resident{right:23%;bottom:43%;width:8%;height:17%}.terrace-residents{left:45%;bottom:16%;width:27%;height:19%}.terrace-resident i,.terrace-residents i,.terrace-residents b{position:absolute;bottom:0;width:29%;height:54%;border:3px solid #3d3158;border-radius:45% 45% 34% 34%;background:linear-gradient(#d86f78,#694066);box-shadow:inset 0 -5px rgba(48,37,81,.2)}.terrace-resident i{left:34%;width:48%}.terrace-residents i{left:0}.terrace-residents b{right:0;transform:scale(.86)}
.terrace-resident i::before,.terrace-residents i::before,.terrace-residents b::before{content:"";position:absolute;left:-18%;top:-66%;width:136%;aspect-ratio:1;border:3px solid #3d3158;border-radius:48%;background:radial-gradient(circle at 33% 48%,#2b294b 0 5%,transparent 6%),radial-gradient(circle at 67% 48%,#2b294b 0 5%,transparent 6%),radial-gradient(circle at 33% 47%,#fff 0 12%,transparent 13%),radial-gradient(circle at 67% 47%,#fff 0 12%,transparent 13%),linear-gradient(145deg,#ffe3a2,#d67973)}
.terrace-resident i::after,.terrace-residents i::after,.terrace-residents b::after{content:"";position:absolute;left:-42%;right:-42%;top:-45%;height:38%;border-radius:50%;background:linear-gradient(90deg,#8b5673 0 20%,transparent 21% 79%,#8b5673 80%);z-index:-1}
.terrace-resonators{left:11%;bottom:26%;width:22%;height:32%;z-index:13}.terrace-resonators i,.terrace-resonators b,.terrace-resonators em{position:absolute;bottom:0;width:15%;border-radius:50% 50% 18% 18%;background:#684466;border:3px solid #e0a85d}.terrace-resonators i{left:5%;height:64%}.terrace-resonators b{left:42%;height:92%}.terrace-resonators em{right:4%;height:72%}
.terrace-inlays{inset:0;z-index:4}.terrace-inlays i,.terrace-inlays b,.terrace-inlays em{position:absolute;width:8%;aspect-ratio:1;border-radius:42%;background:linear-gradient(135deg,#d75e72,#684168);transform:rotate(45deg);border:3px solid #f3ca72}.terrace-inlays i{left:15%;top:35%}.terrace-inlays b{right:18%;top:21%}.terrace-inlays em{left:43%;top:27%;transform:rotate(45deg) scale(.65)}
.terrace-vents{left:16%;right:11%;bottom:12%;height:15%;z-index:14}.terrace-vents i,.terrace-vents b,.terrace-vents em{position:absolute;width:5%;aspect-ratio:1;border-radius:50%;background:#4a3757;border:3px solid #dba45e}.terrace-vents i{left:14%}.terrace-vents b{left:54%;top:28%}.terrace-vents em{right:4%;top:-8%}
.terrace-steam{inset:0;z-index:16}.terrace-steam i,.terrace-steam b,.terrace-steam em{position:absolute;width:24px;height:58px;border-left:7px solid rgba(255,247,218,.68);border-radius:50%;filter:blur(2px);animation:terraceSteam 4s ease-in-out infinite}.terrace-steam i{left:30%;bottom:24%}.terrace-steam b{left:64%;bottom:20%;animation-delay:-1.4s}.terrace-steam em{right:11%;bottom:30%;animation-delay:-2.7s}
.terrace-mosaic{left:20%;right:12%;bottom:4%;height:30%;z-index:9}.terrace-mosaic i{position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(from 15deg,rgba(255,226,126,.8) 0 7deg,transparent 8deg 22deg,rgba(151,75,102,.75) 23deg 29deg,transparent 30deg 45deg);clip-path:ellipse(48% 23% at 50% 58%)}
.terrace-waves{left:26%;right:8%;bottom:8%;height:48%;z-index:18}.terrace-waves i,.terrace-waves b,.terrace-waves em{position:absolute;left:18%;right:18%;bottom:0;height:44%;border:5px solid rgba(255,244,174,.75);border-radius:50%;animation:terraceWave 4.4s ease-out infinite}.terrace-waves b{left:7%;right:7%;animation-delay:-1.45s}.terrace-waves em{left:0;right:0;animation-delay:-2.9s}
.terrace-departure{left:4%;top:5%;width:45%;height:42%;z-index:26}.terrace-departure i{position:absolute;width:74%;height:3px;background:linear-gradient(90deg,transparent,#fff4b1);transform:rotate(-31deg);animation:departureTrail 2.2s ease-out infinite}.terrace-departure i:nth-child(2){top:12%;animation-delay:-.5s}.terrace-departure i:nth-child(3){top:24%;animation-delay:-1s}
.terrace-life.is-new-reward{opacity:0}.reward-chapter-seven.is-playing .terrace-life.is-new-reward{animation:terraceReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-seven.is-playing .terrace-rocket.is-new-reward{animation:windLanding 2.5s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-seven.is-playing .terrace-cat.is-new-reward{animation:catExit 1.3s 1.15s ease-out forwards}.reward-chapter-seven.is-playing.reward-terrace-departure .terrace-rocket{animation:windTakeoff 3.2s ease-in forwards}.reward-chapter-seven.is-playing.reward-terrace-departure .terrace-cat{animation:catBoard .7s ease-in forwards}.terrace-departed .terrace-rocket,.terrace-departed .terrace-cat{opacity:0!important}
@keyframes terraceReveal{0%{opacity:0;transform:translateY(18px) scale(.76);filter:blur(6px)}100%{opacity:1;transform:none;filter:none}}@keyframes terraceSteam{0%{opacity:0;transform:translateY(12px) scale(.7)}35%{opacity:.75}100%{opacity:0;transform:translate(12px,-38px) scale(1.35)}}@keyframes terraceWave{0%{opacity:.8;transform:scale(.48)}100%{opacity:0;transform:scale(1.2)}}
@media(max-width:600px){.terrace-rocket{left:3%;bottom:5%;width:53px}.terrace-cat{left:15%;bottom:0;width:78px}.terrace-resident{width:10%}.terrace-residents{width:31%}.terrace-home{width:23%}}
@media(prefers-reduced-motion:reduce){.terrace-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}

/* Chapter 8 · Üheksa: luminous underwater settlement */
.reward-nine-zone{display:none}.reward-chapter-eight .reward-nine-zone{display:block}
.reward-chapter-eight .reward-three-zone,.reward-chapter-eight .reward-four-zone,.reward-chapter-eight .reward-five-zone,.reward-chapter-eight .reward-six-zone,.reward-chapter-eight .reward-seven-zone,.reward-chapter-eight .reward-eight-zone,.reward-chapter-eight .reward-ship,.reward-chapter-eight .reward-portal,.reward-chapter-eight .reward-next-planet,.reward-chapter-eight .result-cat-crop{display:none}
.story-eight{display:none}.chapter-eight .story-two,.chapter-eight .story-three,.chapter-eight .story-four,.chapter-eight .story-five,.chapter-eight .story-six,.chapter-eight .story-seven,.chapter-eight .story-ship,.chapter-eight .story-portal,.chapter-eight .next-planet,.chapter-eight .story-cat-crop,.chapter-eight .story-energy-stream{display:none!important}.chapter-eight .story-eight{display:block}
.ocean-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at 50% -8%,rgba(215,255,245,.82),transparent 32%),linear-gradient(180deg,#1ba9bd 0%,#117eaa 43%,#165786 72%,#133b69 100%)}
.ocean-world::before{content:"";position:absolute;inset:0;z-index:1;background:repeating-linear-gradient(105deg,transparent 0 11%,rgba(200,255,242,.08) 12% 14%,transparent 15% 27%);clip-path:polygon(5% 0,95% 0,78% 100%,22% 100%);opacity:.65}
.ocean-world::after{content:"";position:absolute;left:-8%;right:-8%;bottom:-15%;height:42%;z-index:2;border-radius:48% 52% 0 0;background:radial-gradient(ellipse at 62% 8%,#f4d59e 0 17%,transparent 18%),linear-gradient(180deg,#e8c38a,#b67f69 64%,#714f67);box-shadow:inset 0 12px 18px rgba(255,238,190,.26)}
.ocean-life{position:absolute;display:block;z-index:6;opacity:0;transform:translateY(14px) scale(.86);transition:opacity .8s ease,transform 1s cubic-bezier(.2,.75,.25,1)}.ocean-life.is-earned,.ocean-life.is-new-reward{opacity:1;transform:none}
.ocean-seabed{inset:0;z-index:3}.ocean-seabed i,.ocean-seabed b,.ocean-seabed em{position:absolute;bottom:12%;width:17%;height:8%;border-radius:50%;background:#d9b37f;box-shadow:0 5px 0 #8c6265}.ocean-seabed i{left:9%;transform:rotate(7deg)}.ocean-seabed b{left:44%;width:23%;bottom:7%}.ocean-seabed em{right:5%;bottom:17%;width:14%}
.ocean-landing{left:1%;bottom:4%;width:38%;height:18%;z-index:5;border-radius:50%;background:radial-gradient(ellipse,rgba(235,212,158,.55),transparent 70%)}
.ocean-rocket{left:4%;bottom:7%;width:clamp(58px,15%,102px);z-index:24;filter:drop-shadow(0 10px 9px rgba(7,43,79,.5))}.ocean-cat{left:17%;bottom:3%;width:clamp(78px,19%,126px);z-index:25;filter:drop-shadow(0 5px 7px rgba(7,43,79,.38))}
.ocean-coral-trunk{left:47%;bottom:11%;width:20%;height:49%;z-index:8}.ocean-coral-trunk i{position:absolute;left:37%;bottom:0;width:28%;height:100%;border-radius:48% 52% 28% 30%;background:linear-gradient(90deg,#a83e70,#ee755d 55%,#f5a36d);box-shadow:-13px 4px 0 #8f3c78,14px 1px 0 #d65868}.ocean-coral-trunk b{position:absolute;left:6%;top:27%;width:83%;height:18%;border:12px solid #d85869;border-bottom:0;border-radius:50% 50% 0 0;transform:rotate(-12deg)}
.ocean-coral-crown{left:35%;bottom:43%;width:43%;height:37%;z-index:9}.ocean-coral-crown i,.ocean-coral-crown b,.ocean-coral-crown em{position:absolute;bottom:0;width:14%;height:90%;border:8px solid #ef7862;border-bottom:0;border-radius:50% 50% 10% 10%}.ocean-coral-crown i{left:12%;transform:rotate(-30deg)}.ocean-coral-crown b{left:43%;height:100%}.ocean-coral-crown em{right:10%;height:78%;transform:rotate(31deg)}
.ocean-kelp{inset:0;z-index:7}.ocean-kelp i,.ocean-kelp b,.ocean-kelp em,.ocean-kelp strong{position:absolute;bottom:10%;width:4%;height:35%;border-radius:80% 15% 75% 20%;background:linear-gradient(#9ee560,#249b82);transform-origin:bottom;animation:oceanSway 5s ease-in-out infinite}.ocean-kelp i{left:29%}.ocean-kelp b{left:35%;height:28%;animation-delay:-2s}.ocean-kelp em{right:13%;height:37%;animation-delay:-3.4s}.ocean-kelp strong{right:7%;height:25%;animation-delay:-1s}
.ocean-flowers{inset:0;z-index:10}.ocean-flowers i,.ocean-flowers b,.ocean-flowers em{position:absolute;width:7%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#ffe8a8 0 16%,#ff7698 17% 38%,transparent 40%),conic-gradient(from 15deg,#f994aa,#ffd09d,#ed6f9e,#ffd09d,#f994aa);filter:drop-shadow(0 0 7px rgba(255,174,177,.5))}.ocean-flowers i{left:29%;bottom:13%}.ocean-flowers b{right:18%;bottom:19%}.ocean-flowers em{right:5%;bottom:10%;transform:scale(.7)}
.ocean-shell-home{right:4%;bottom:19%;width:24%;height:31%;z-index:12}.ocean-shell-home i{position:absolute;inset:0;border:5px solid #713f72;border-radius:58% 44% 49% 22%;background:repeating-radial-gradient(circle at 48% 64%,#fff0d0 0 9%,#dc8ea4 10% 16%);transform:rotate(-7deg)}.ocean-shell-home b{position:absolute;left:36%;bottom:0;width:29%;height:45%;border:4px solid #6a3e72;border-radius:50% 50% 8% 8%;background:#173f68}
.ocean-bubble-homes{left:25%;right:20%;bottom:29%;height:26%;z-index:11}.ocean-bubble-homes i,.ocean-bubble-homes b,.ocean-bubble-homes em{position:absolute;width:17%;aspect-ratio:1;border:4px solid #e9f7dc;border-radius:50%;background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.8),transparent 17%),linear-gradient(145deg,rgba(116,231,219,.72),rgba(81,128,189,.8));box-shadow:inset 0 -8px rgba(60,78,147,.25)}.ocean-bubble-homes i{left:0;bottom:0}.ocean-bubble-homes b{left:37%;top:0}.ocean-bubble-homes em{right:0;bottom:9%;transform:scale(.8)}
.ocean-home-lights{left:25%;right:4%;bottom:31%;height:22%;z-index:14}.ocean-home-lights i,.ocean-home-lights b,.ocean-home-lights em{position:absolute;width:4%;aspect-ratio:1;border-radius:50%;background:#fff6a6;box-shadow:0 0 15px 5px rgba(255,239,112,.72)}.ocean-home-lights i{left:6%;bottom:11%}.ocean-home-lights b{left:35%;top:18%}.ocean-home-lights em{right:9%;bottom:18%}
.ocean-resident,.ocean-children{z-index:18}.ocean-resident{right:24%;bottom:18%;width:8%;height:18%}.ocean-children{left:37%;bottom:13%;width:22%;height:17%}.ocean-resident i,.ocean-children i,.ocean-children b{position:absolute;bottom:0;width:30%;height:48%;border:3px solid #143e68;border-radius:50% 50% 42% 42%;background:linear-gradient(#67d7cf,#3875b3)}.ocean-resident i{left:24%;width:52%}.ocean-children i{left:0}.ocean-children b{right:0;transform:scale(.84)}
.ocean-resident i::before,.ocean-children i::before,.ocean-children b::before{content:"";position:absolute;left:-18%;top:-72%;width:136%;aspect-ratio:1;border:3px solid #143e68;border-radius:52%;background:radial-gradient(circle at 34% 49%,#152d54 0 5%,transparent 6%),radial-gradient(circle at 67% 49%,#152d54 0 5%,transparent 6%),radial-gradient(circle at 34% 48%,#fff 0 13%,transparent 14%),radial-gradient(circle at 67% 48%,#fff 0 13%,transparent 14%),linear-gradient(145deg,#b8f1d8,#52b9c3)}
.ocean-resident i::after,.ocean-children i::after,.ocean-children b::after{content:"";position:absolute;left:-35%;right:-35%;top:-32%;height:40%;border-radius:50%;background:linear-gradient(90deg,#ff9a79 0 22%,transparent 23% 77%,#ff9a79 78%);z-index:-1}
.ocean-arches{left:5%;right:5%;bottom:10%;height:46%;z-index:6}.ocean-arches i,.ocean-arches b{position:absolute;bottom:0;width:22%;height:52%;border:11px solid #826a76;border-bottom:0;border-radius:50% 50% 0 0;box-shadow:0 -4px 0 #e7c39c}.ocean-arches i{left:24%;transform:scale(.76)}.ocean-arches b{right:8%;height:72%}
.ocean-fruit{left:38%;bottom:43%;width:40%;height:30%;z-index:13}.ocean-fruit i{position:absolute;width:7%;aspect-ratio:1;border-radius:50%;background:#ffe874;box-shadow:0 0 15px #fff59c}.ocean-fruit i:nth-child(1){left:8%;top:36%}.ocean-fruit i:nth-child(2){left:39%;top:3%}.ocean-fruit i:nth-child(3){right:22%;top:27%}.ocean-fruit i:nth-child(4){right:3%;bottom:4%}
.ocean-fish{inset:0;z-index:16}.ocean-fish i,.ocean-fish b,.ocean-fish em{position:absolute;width:8%;height:4%;border-radius:70% 45% 45% 70%;background:#ffd66f;box-shadow:-8px 0 0 -2px #ff7d91;animation:oceanFish 7s ease-in-out infinite}.ocean-fish i{left:14%;top:27%}.ocean-fish b{right:16%;top:17%;background:#ee83b0;animation-delay:-2.5s}.ocean-fish em{left:31%;top:44%;transform:scale(.7);animation-delay:-4s}
.ocean-garden{inset:0;z-index:9}.ocean-garden i,.ocean-garden b,.ocean-garden em,.ocean-garden strong{position:absolute;bottom:5%;width:5%;height:18%;border-radius:50% 50% 20% 20%;background:linear-gradient(#ff8c9c,#a13e85)}.ocean-garden i{left:7%}.ocean-garden b{left:20%;height:13%;background:linear-gradient(#f6c76e,#ef765d)}.ocean-garden em{right:31%;height:19%}.ocean-garden strong{right:10%;height:15%;background:linear-gradient(#83e16c,#28a386)}
.ocean-rays{inset:0;z-index:4}.ocean-rays i,.ocean-rays b,.ocean-rays em{position:absolute;top:-8%;width:16%;height:91%;background:linear-gradient(180deg,rgba(225,255,232,.3),transparent 75%);clip-path:polygon(35% 0,65% 0,100% 100%,0 100%);filter:blur(3px)}.ocean-rays i{left:13%;transform:rotate(7deg)}.ocean-rays b{left:43%;width:19%}.ocean-rays em{right:8%;transform:rotate(-8deg)}
.ocean-alive{inset:0;z-index:20}.ocean-alive i{position:absolute;bottom:-5%;width:10px;aspect-ratio:1;border:2px solid rgba(227,255,249,.72);border-radius:50%;animation:oceanBubble 5s linear infinite}.ocean-alive i:nth-child(1){left:12%}.ocean-alive i:nth-child(2){left:31%;animation-delay:-1s}.ocean-alive i:nth-child(3){left:54%;animation-delay:-2.4s}.ocean-alive i:nth-child(4){right:24%;animation-delay:-3.2s}.ocean-alive i:nth-child(5){right:8%;animation-delay:-4.2s}
.ocean-departure{left:4%;top:2%;width:47%;height:48%;z-index:26}.ocean-departure i{position:absolute;width:12px;height:12px;border:3px solid rgba(233,255,249,.8);border-radius:50%;animation:oceanBubble 2.4s linear infinite}.ocean-departure i:nth-child(2){left:18%;animation-delay:-.7s}.ocean-departure i:nth-child(3){left:36%;animation-delay:-1.4s}
.ocean-life.is-new-reward{opacity:0}.reward-chapter-eight.is-playing .ocean-life.is-new-reward{animation:oceanReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-eight.is-playing .ocean-rocket.is-new-reward{animation:oceanLanding 3s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-eight.is-playing .ocean-cat.is-new-reward{animation:catExit 1.3s 1.35s ease-out forwards}.reward-chapter-eight.is-playing.reward-ocean-departure .ocean-rocket{animation:oceanTakeoff 3.5s ease-in forwards}.reward-chapter-eight.is-playing.reward-ocean-departure .ocean-cat{animation:catBoard .7s ease-in forwards}.ocean-departed .ocean-rocket,.ocean-departed .ocean-cat{opacity:0!important}
@keyframes oceanReveal{0%{opacity:0;transform:translateY(18px) scale(.76);filter:blur(6px)}100%{opacity:1;transform:none;filter:none}}@keyframes oceanSway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(6deg)}}@keyframes oceanFish{0%,100%{transform:translateX(-8px)}50%{transform:translateX(20px)}}@keyframes oceanBubble{0%{opacity:0;transform:translateY(0) scale(.6)}25%{opacity:.8}100%{opacity:0;transform:translate(10px,-340px) scale(1.35)}}@keyframes oceanLanding{0%{opacity:0;transform:translate(85px,-220px) rotate(38deg) scale(.72)}45%{opacity:1}100%{opacity:1;transform:none}}@keyframes oceanTakeoff{0%{opacity:1;transform:none}45%{transform:translate(22px,-90px) rotate(14deg)}100%{opacity:0;transform:translate(105px,-330px) rotate(25deg) scale(.68)}}
@media(max-width:600px){.ocean-rocket{left:3%;bottom:5%;width:53px}.ocean-cat{left:15%;bottom:0;width:78px}.ocean-coral-trunk{left:48%;width:21%}.ocean-shell-home{width:27%}.ocean-resident{width:10%}.ocean-children{width:25%}}
@media(prefers-reduced-motion:reduce){.ocean-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}


/* Chapter 9 · Kümme: alien hanging gardens */
.reward-ten-zone{display:none}.reward-chapter-nine .reward-ten-zone{display:block}
.reward-chapter-nine .reward-three-zone,.reward-chapter-nine .reward-four-zone,.reward-chapter-nine .reward-five-zone,.reward-chapter-nine .reward-six-zone,.reward-chapter-nine .reward-seven-zone,.reward-chapter-nine .reward-eight-zone,.reward-chapter-nine .reward-nine-zone,.reward-chapter-nine .reward-ship,.reward-chapter-nine .reward-portal,.reward-chapter-nine .reward-next-planet,.reward-chapter-nine .result-cat-crop{display:none}
.story-nine{display:none}.story-stage.chapter-nine .story-nine{display:block}.story-stage.chapter-nine .story-eight,.story-stage.chapter-nine .story-seven,.story-stage.chapter-nine .story-six,.story-stage.chapter-nine .story-five,.story-stage.chapter-nine .story-four,.story-stage.chapter-nine .story-three,.story-stage.chapter-nine .story-two,.story-stage.chapter-nine .story-one{display:none}
.canyon-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 34% 5%,#ffe59a 0 5%,transparent 6%),radial-gradient(circle at 63% 8%,#7ce7dc 0 3.5%,transparent 4.5%),linear-gradient(180deg,#354a70 0%,#255c62 30%,#123f3e 69%,#102f35 100%)}
.canyon-world::before,.canyon-world::after{content:"";position:absolute;top:0;bottom:-4%;width:34%;z-index:3;background:radial-gradient(circle at 55% 24%,#62b95e 0 2%,transparent 2.5%),radial-gradient(circle at 72% 44%,#87d06b 0 2.2%,transparent 2.8%),linear-gradient(90deg,#142e35,#294b3c 55%,#3b6b4a);clip-path:polygon(0 0,83% 0,66% 14%,90% 30%,61% 48%,82% 65%,55% 82%,74% 100%,0 100%)}
.canyon-world::before{left:0}
.canyon-world::after{right:0;transform:scaleX(-1);filter:hue-rotate(8deg);width:35%}
.canyon-life{position:absolute;display:block;z-index:7;opacity:0;transform:translateY(15px) scale(.84);transition:opacity .8s ease,transform 1s cubic-bezier(.2,.75,.25,1)}.canyon-life.is-earned,.canyon-life.is-new-reward{opacity:1;transform:none}
.canyon-landing{left:2%;bottom:4%;width:34%;height:13%;z-index:9;border-radius:50%;background:radial-gradient(ellipse,rgba(143,219,112,.55),transparent 70%)}
.canyon-rocket{left:4%;bottom:7%;width:clamp(58px,15%,102px);z-index:25;filter:drop-shadow(0 9px 9px #0a292d)}.canyon-cat{left:17%;bottom:3%;width:clamp(78px,19%,126px);z-index:26;filter:drop-shadow(0 5px 7px #0a292d)}
.canyon-moss{inset:0;z-index:5}.canyon-moss i,.canyon-moss b,.canyon-moss em{position:absolute;width:25%;height:21%;border-radius:50%;background:radial-gradient(ellipse,#8bd56b,#3e8f55 64%,transparent 67%)}.canyon-moss i{left:3%;top:18%}.canyon-moss b{right:2%;top:37%}.canyon-moss em{left:12%;bottom:11%}
.canyon-root-bridge{left:21%;right:21%;top:39%;height:24%;z-index:11}.canyon-root-bridge i,.canyon-root-bridge b{position:absolute;left:0;right:0;height:48%;border:13px solid #60483f;border-bottom:0;border-radius:52% 52% 0 0;transform:rotate(-4deg);box-shadow:0 -5px 0 #8e704d}.canyon-root-bridge b{top:25%;left:17%;right:16%;transform:rotate(5deg);border-color:#806044}
.canyon-suns{inset:0;z-index:1}.canyon-suns i,.canyon-suns b{position:absolute;border-radius:50%;box-shadow:0 0 25px 10px rgba(255,226,129,.28)}.canyon-suns i{left:31%;top:2%;width:10%;aspect-ratio:1;background:#ffe38a}.canyon-suns b{left:61%;top:7%;width:6%;aspect-ratio:1;background:#79e7da;box-shadow:0 0 19px 8px rgba(88,235,219,.25)}.canyon-suns em{position:absolute;left:36%;top:8%;width:36%;height:65%;background:linear-gradient(164deg,rgba(255,230,141,.13),transparent 66%);clip-path:polygon(10% 0,30% 0,100% 100%,0 100%)}
.canyon-vines{inset:0;z-index:13}.canyon-vines i,.canyon-vines b,.canyon-vines em,.canyon-vines strong{position:absolute;top:-3%;width:3%;height:48%;border-radius:0 0 60% 60%;background:repeating-linear-gradient(#3a9855 0 11%,#80d468 12% 17%);transform-origin:top;animation:canyonSway 6s ease-in-out infinite}.canyon-vines i{left:24%}.canyon-vines b{left:43%;height:35%;animation-delay:-2s}.canyon-vines em{right:29%;height:55%;animation-delay:-4s}.canyon-vines strong{right:12%;height:31%;animation-delay:-1s}
.canyon-ferns{inset:0;z-index:10}.canyon-ferns i,.canyon-ferns b,.canyon-ferns em{position:absolute;bottom:7%;width:14%;height:25%;border-radius:80% 12%;background:repeating-linear-gradient(55deg,#9be477 0 9%,#368c55 10% 17%)}.canyon-ferns i{left:27%;transform:rotate(-13deg)}.canyon-ferns b{right:27%;height:31%;transform:rotate(11deg)}.canyon-ferns em{right:5%;height:19%}
.canyon-homes{inset:0;z-index:12}.canyon-homes i,.canyon-homes b,.canyon-homes em{position:absolute;width:13%;height:15%;border:5px solid #7b654d;border-radius:48% 48% 16% 16%;background:#173b3d;box-shadow:0 0 0 5px #476c4d}.canyon-homes i{left:8%;top:37%}.canyon-homes b{right:8%;top:27%}.canyon-homes em{right:17%;bottom:22%;transform:scale(.82)}
.canyon-windows{inset:0;z-index:14}.canyon-windows i,.canyon-windows b,.canyon-windows em{position:absolute;width:4%;aspect-ratio:1;border-radius:48% 48% 18% 18%;background:#ffe975;box-shadow:0 0 14px 5px rgba(255,225,95,.55)}.canyon-windows i{left:13%;top:43%}.canyon-windows b{right:12%;top:34%}.canyon-windows em{right:21%;bottom:27%}
.canyon-gardens{inset:0;z-index:15}.canyon-gardens i,.canyon-gardens b,.canyon-gardens em{position:absolute;width:20%;height:8%;border-radius:50%;background:linear-gradient(#8ad368,#396f4e);border-bottom:5px solid #59483c}.canyon-gardens i{left:31%;top:30%}.canyon-gardens b{right:25%;top:51%}.canyon-gardens em{left:35%;bottom:15%;transform:scale(.75)}
.canyon-flowers{inset:0;z-index:16}.canyon-flowers i,.canyon-flowers b,.canyon-flowers em,.canyon-flowers strong{position:absolute;width:4%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#ffe57d 0 20%,#fa6f8d 22% 56%,transparent 58%);filter:drop-shadow(0 0 5px #fb9cb0)}.canyon-flowers i{left:37%;top:29%}.canyon-flowers b{left:47%;top:33%}.canyon-flowers em{right:35%;top:49%}.canyon-flowers strong{right:27%;top:53%;background:radial-gradient(circle,#ffe57d 0 20%,#b88be8 22% 56%,transparent 58%)}
.canyon-resident,.canyon-people{z-index:19}.canyon-resident{left:44%;bottom:27%;width:7%;height:16%}.canyon-people{right:29%;bottom:13%;width:25%;height:18%}.canyon-resident i,.canyon-people i,.canyon-people b,.canyon-people em{position:absolute;bottom:0;width:25%;height:47%;border:3px solid #163c43;border-radius:50% 50% 42% 42%;background:linear-gradient(#b6e96e,#5ea95e)}.canyon-resident i{left:24%;width:52%}.canyon-people i{left:0}.canyon-people b{left:38%;transform:scale(.86)}.canyon-people em{right:0;transform:scale(.74)}
.canyon-resident i::before,.canyon-people i::before,.canyon-people b::before,.canyon-people em::before{content:"";position:absolute;left:-20%;top:-74%;width:140%;aspect-ratio:1;border:3px solid #163c43;border-radius:52%;background:radial-gradient(circle at 34% 48%,#173044 0 5%,transparent 6%),radial-gradient(circle at 67% 48%,#173044 0 5%,transparent 6%),radial-gradient(circle at 34% 47%,#fff 0 14%,transparent 15%),radial-gradient(circle at 67% 47%,#fff 0 14%,transparent 15%),linear-gradient(145deg,#d7f486,#69bd66)}
.canyon-resident i::after,.canyon-people i::after,.canyon-people b::after,.canyon-people em::after{content:"";position:absolute;left:-30%;right:-30%;top:-37%;height:48%;background:linear-gradient(55deg,#8bd570 0 25%,transparent 26% 74%,#8bd570 75%);border-radius:50%;z-index:-1}
.canyon-seeds{inset:0;z-index:17}.canyon-seeds i{position:absolute;width:2.7%;aspect-ratio:1;border-radius:50%;background:#c8ff78;box-shadow:0 0 13px 5px rgba(186,255,100,.6)}.canyon-seeds i:nth-child(1){left:25%;top:23%}.canyon-seeds i:nth-child(2){left:45%;top:18%}.canyon-seeds i:nth-child(3){right:28%;top:31%}.canyon-seeds i:nth-child(4){right:15%;top:48%}.canyon-seeds i:nth-child(5){left:34%;bottom:13%}
.canyon-small-bridges{inset:0;z-index:12}.canyon-small-bridges i,.canyon-small-bridges b{position:absolute;width:24%;height:8%;border-top:7px solid #715743;border-radius:50%}.canyon-small-bridges i{left:8%;top:62%;transform:rotate(8deg)}.canyon-small-bridges b{right:8%;top:67%;transform:rotate(-9deg)}
.canyon-mist{left:18%;right:18%;bottom:-4%;height:30%;z-index:8}.canyon-mist i,.canyon-mist b{position:absolute;inset:0;border-radius:50%;background:radial-gradient(ellipse,rgba(70,221,196,.63),transparent 68%);filter:blur(8px);animation:canyonMist 7s ease-in-out infinite}.canyon-mist b{transform:translateX(16%);animation-delay:-3s}
.canyon-ringed-planet{right:7%;top:3%;width:25%;height:22%;z-index:2}.canyon-ringed-planet i{position:absolute;left:30%;top:12%;width:46%;aspect-ratio:1;border-radius:50%;background:linear-gradient(145deg,#d6a8e5,#73599e);box-shadow:inset -8px -5px #4b4e84}.canyon-ringed-planet b{position:absolute;left:4%;right:0;top:43%;height:18%;border:5px solid #f1d79c;border-left-color:transparent;border-right-color:transparent;border-radius:50%;transform:rotate(-13deg)}
.canyon-alive{inset:0;z-index:18}.canyon-alive i{position:absolute;width:5%;height:14%;border-radius:70% 15%;background:rgba(143,241,155,.58);animation:canyonFloat 5s ease-in-out infinite}.canyon-alive i:nth-child(1){left:22%;top:21%}.canyon-alive i:nth-child(2){left:56%;top:16%;animation-delay:-2s}.canyon-alive i:nth-child(3){right:18%;top:43%;animation-delay:-3.5s}.canyon-alive i:nth-child(4){left:38%;bottom:12%;animation-delay:-1s}
.canyon-departure{left:2%;top:0;width:45%;height:58%;z-index:27}.canyon-departure i,.canyon-departure b{position:absolute;width:7px;height:52%;border-radius:50%;background:linear-gradient(rgba(255,229,133,.65),transparent);transform:rotate(12deg)}.canyon-departure i{left:15%}.canyon-departure b{left:34%;height:39%}
.canyon-life.is-new-reward{opacity:0}.reward-chapter-nine.is-playing .canyon-life.is-new-reward{animation:canyonReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-nine.is-playing .canyon-rocket.is-new-reward{animation:canyonLanding 3s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-nine.is-playing .canyon-cat.is-new-reward{animation:catExit 1.3s 1.35s ease-out forwards}.reward-chapter-nine.is-playing.reward-canyon-departure .canyon-rocket{animation:canyonTakeoff 3.5s ease-in forwards}.reward-chapter-nine.is-playing.reward-canyon-departure .canyon-cat{animation:catBoard .7s ease-in forwards}.canyon-departed .canyon-rocket,.canyon-departed .canyon-cat{opacity:0!important}
@keyframes canyonReveal{0%{opacity:0;transform:translateY(20px) scale(.76);filter:blur(6px)}100%{opacity:1;transform:none;filter:none}}@keyframes canyonSway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}@keyframes canyonMist{0%,100%{opacity:.5;transform:translateX(-4%)}50%{opacity:.85;transform:translateX(5%)}}@keyframes canyonFloat{0%,100%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(13px) rotate(7deg)}}@keyframes canyonLanding{0%{opacity:0;transform:translate(80px,-230px) rotate(35deg) scale(.72)}45%{opacity:1}100%{opacity:1;transform:none}}@keyframes canyonTakeoff{0%{opacity:1;transform:none}45%{transform:translate(18px,-95px) rotate(12deg)}100%{opacity:0;transform:translate(84px,-350px) rotate(20deg) scale(.68)}}
@media(max-width:600px){.canyon-rocket{left:3%;bottom:5%;width:53px}.canyon-cat{left:15%;bottom:0;width:78px}.canyon-root-bridge{left:17%;right:17%}.canyon-ringed-planet{width:29%}.canyon-resident{width:9%}.canyon-people{width:29%}}
@media(prefers-reduced-motion:reduce){.canyon-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}

/* Chapter 10 · first full revision: cosmic dragon sky */
.reward-eleven-zone{display:none}.reward-chapter-ten .reward-eleven-zone{display:block}
.reward-chapter-ten .reward-three-zone,.reward-chapter-ten .reward-four-zone,.reward-chapter-ten .reward-five-zone,.reward-chapter-ten .reward-six-zone,.reward-chapter-ten .reward-seven-zone,.reward-chapter-ten .reward-eight-zone,.reward-chapter-ten .reward-nine-zone,.reward-chapter-ten .reward-ten-zone,.reward-chapter-ten .reward-ship,.reward-chapter-ten .reward-portal,.reward-chapter-ten .reward-next-planet,.reward-chapter-ten .result-cat-crop{display:none}
.story-ten{display:none}.story-stage.chapter-ten .story-ten{display:block}.story-stage.chapter-ten .story-nine,.story-stage.chapter-ten .story-eight,.story-stage.chapter-ten .story-seven,.story-stage.chapter-ten .story-six,.story-stage.chapter-ten .story-five,.story-stage.chapter-ten .story-four,.story-stage.chapter-ten .story-three,.story-stage.chapter-ten .story-two,.story-stage.chapter-ten .story-one{display:none}
.dragon-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 72% 18%,rgba(255,142,214,.35),transparent 18%),radial-gradient(circle at 23% 34%,rgba(87,221,245,.25),transparent 23%),linear-gradient(180deg,#160d43 0%,#35236d 43%,#7b3f82 72%,#e87881 100%)}
.dragon-world::before{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(circle at 9% 12%,#fff 0 1px,transparent 2px),radial-gradient(circle at 42% 9%,#fff1a8 0 1px,transparent 2px),radial-gradient(circle at 81% 38%,#bdfcff 0 1px,transparent 2px),radial-gradient(circle at 58% 26%,#fff 0 1px,transparent 2px);background-size:71px 59px,97px 83px,113px 91px,137px 109px;opacity:.7}
.dragon-life{position:absolute;display:block;z-index:7;opacity:0;transform:translateY(15px) scale(.84);transition:opacity .8s ease,transform 1s cubic-bezier(.2,.75,.25,1)}.dragon-life.is-earned,.dragon-life.is-new-reward{opacity:1;transform:none}
.dragon-landing{left:2%;bottom:3%;width:33%;height:13%;z-index:12;border-radius:50%;background:radial-gradient(ellipse,rgba(255,197,135,.68),transparent 70%)}
.dragon-rocket{left:4%;bottom:7%;width:clamp(58px,15%,102px);z-index:28;filter:drop-shadow(0 9px 9px #160b38)}.dragon-cat{left:17%;bottom:3%;width:clamp(78px,19%,126px);z-index:29;filter:drop-shadow(0 5px 7px #160b38)}
.dragon-moons{inset:0;z-index:2}.dragon-moons i,.dragon-moons b,.dragon-moons em{position:absolute;border-radius:50%;box-shadow:0 0 20px rgba(209,194,255,.42)}.dragon-moons i{left:9%;top:8%;width:13%;aspect-ratio:1;background:linear-gradient(145deg,#f4cfef,#9878c9)}.dragon-moons b{right:11%;top:7%;width:8%;aspect-ratio:1;background:linear-gradient(145deg,#9ff3ef,#3fa3c0)}.dragon-moons em{left:56%;top:18%;width:4%;aspect-ratio:1;background:#ffd98b}
.dragon-islands{inset:0;z-index:5}.dragon-islands i,.dragon-islands b,.dragon-islands em{position:absolute;width:28%;height:19%;background:linear-gradient(#7fb38d 0 18%,#6c4c86 19% 52%,#372653);clip-path:polygon(4% 0,96% 0,82% 38%,61% 100%,36% 62%,15% 34%);filter:drop-shadow(0 10px 9px rgba(18,8,50,.35))}.dragon-islands i{left:7%;bottom:12%}.dragon-islands b{left:38%;bottom:28%;width:25%;transform:scale(.82)}.dragon-islands em{right:3%;bottom:15%;width:30%;transform:scale(.9)}
.dragon-nests{inset:0;z-index:9}.dragon-nests i,.dragon-nests b,.dragon-nests em{position:absolute;width:13%;height:8%;border:6px solid #d89a6f;border-top-color:#f7ce84;border-radius:50%;background:#4b315f;box-shadow:0 0 0 3px rgba(255,219,137,.18)}.dragon-nests i{left:15%;bottom:27%}.dragon-nests b{left:45%;bottom:43%;transform:scale(.8)}.dragon-nests em{right:11%;bottom:30%;transform:scale(.9)}
.dragon-one{left:39%;top:26%;width:24%;height:23%;z-index:18;animation:dragonHover 5s ease-in-out infinite}.dragon-one i,.dragon-pair i,.dragon-pair b,.dragon-young i,.dragon-young b,.dragon-young em,.dragon-flock i,.dragon-flock b,.dragon-flock em{position:absolute;width:46%;height:29%;border:3px solid #40265f;border-radius:62% 43% 55% 45%;background:linear-gradient(145deg,#f49a69,#b44987);box-sizing:border-box}
.dragon-one i{left:27%;top:38%}.dragon-one i::before,.dragon-pair i::before,.dragon-pair b::before,.dragon-young i::before,.dragon-young b::before,.dragon-young em::before,.dragon-flock i::before,.dragon-flock b::before,.dragon-flock em::before{content:"";position:absolute;right:-33%;top:-34%;width:52%;aspect-ratio:1.28;border:3px solid #40265f;border-radius:58% 67% 48% 52%;background:radial-gradient(circle at 67% 43%,#fff 0 9%,transparent 10%),radial-gradient(circle at 68% 44%,#241542 0 4%,transparent 5%),linear-gradient(145deg,#ffc17d,#d25d89);box-sizing:border-box}
.dragon-one i::after,.dragon-pair i::after,.dragon-pair b::after,.dragon-young i::after,.dragon-young b::after,.dragon-young em::after,.dragon-flock i::after,.dragon-flock b::after,.dragon-flock em::after{content:"";position:absolute;left:13%;top:-78%;width:57%;height:91%;background:linear-gradient(135deg,rgba(151,244,229,.93),rgba(116,82,190,.82));clip-path:polygon(0 100%,24% 0,100% 72%);filter:drop-shadow(0 0 3px #9ef1df)}
.dragon-one b{position:absolute;left:4%;top:46%;width:38%;height:9%;border-radius:100% 0 0 100%;background:#c65382;transform:rotate(13deg);transform-origin:right}.dragon-one em{position:absolute;left:43%;top:60%;width:31%;height:5%;background:repeating-linear-gradient(90deg,#ffe28c 0 8%,#7d397c 9% 18%);border-radius:50%}.dragon-one strong{position:absolute;right:8%;top:36%;width:5%;aspect-ratio:1;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 2px #241542}
.dragon-pair{inset:0;z-index:17}.dragon-pair i{left:12%;top:27%;transform:scale(.52) rotate(-8deg)}.dragon-pair b{right:12%;top:41%;transform:scale(.48) rotate(7deg);filter:hue-rotate(70deg)}
.dragon-falls{inset:0;z-index:6}.dragon-falls i,.dragon-falls b,.dragon-falls em{position:absolute;width:7%;height:38%;border-radius:50%;background:linear-gradient(180deg,rgba(120,246,244,.75),rgba(150,119,255,.18),transparent);filter:blur(2px);animation:dragonFall 4s ease-in-out infinite}.dragon-falls i{left:25%;bottom:-5%}.dragon-falls b{left:53%;bottom:6%;height:29%;animation-delay:-1.5s}.dragon-falls em{right:17%;bottom:-4%;height:34%;animation-delay:-2.7s}
.dragon-young{inset:0;z-index:19}.dragon-young i{left:20%;bottom:22%;transform:scale(.34)}.dragon-young b{left:48%;bottom:38%;transform:scale(.31);filter:hue-rotate(110deg)}.dragon-young em{right:14%;bottom:26%;transform:scale(.35);filter:hue-rotate(-35deg)}
.dragon-arches{inset:0;z-index:8}.dragon-arches i,.dragon-arches b{position:absolute;width:26%;height:24%;border:9px solid #8e75c2;border-bottom:0;border-radius:50% 50% 0 0;box-shadow:0 -4px #d0b1e4}.dragon-arches i{left:26%;bottom:17%;transform:rotate(-7deg)}.dragon-arches b{right:6%;bottom:26%;transform:scale(.72) rotate(8deg)}
.dragon-eggs{inset:0;z-index:15}.dragon-eggs i,.dragon-eggs b,.dragon-eggs em,.dragon-eggs strong{position:absolute;width:5%;aspect-ratio:.78;border:3px solid #5a3b78;border-radius:55% 55% 48% 48%;background:radial-gradient(circle at 38% 32%,#fff 0 5%,transparent 6%),linear-gradient(145deg,#fff0ad,#e675c4);box-shadow:0 0 12px rgba(255,217,145,.7)}.dragon-eggs i{left:17%;bottom:28%}.dragon-eggs b{left:46%;bottom:45%;transform:scale(.8)}.dragon-eggs em{right:16%;bottom:31%}.dragon-eggs strong{right:9%;bottom:29%;transform:scale(.72)}
.dragon-flock{inset:0;z-index:20}.dragon-flock i{left:26%;top:13%;transform:scale(.24) rotate(-7deg)}.dragon-flock b{left:60%;top:10%;transform:scale(.21) rotate(8deg);filter:hue-rotate(85deg)}.dragon-flock em{right:5%;top:24%;transform:scale(.25) rotate(-3deg);filter:hue-rotate(-45deg)}
.dragon-alive{inset:0;z-index:21}.dragon-alive i{position:absolute;width:3%;aspect-ratio:1;border-radius:50%;background:#fff4a5;box-shadow:0 0 14px 5px rgba(255,233,126,.65);animation:dragonSpark 4s ease-in-out infinite}.dragon-alive i:nth-child(1){left:18%;top:19%}.dragon-alive i:nth-child(2){left:45%;top:12%;animation-delay:-1s}.dragon-alive i:nth-child(3){right:28%;top:33%;animation-delay:-2s}.dragon-alive i:nth-child(4){right:9%;bottom:21%;animation-delay:-3s}
.dragon-departure{left:2%;top:0;width:45%;height:58%;z-index:30}.dragon-departure i,.dragon-departure b{position:absolute;width:8px;height:54%;border-radius:50%;background:linear-gradient(rgba(255,225,151,.72),transparent);transform:rotate(12deg)}.dragon-departure i{left:15%}.dragon-departure b{left:34%;height:39%}
.dragon-life.is-new-reward{opacity:0}.reward-chapter-ten.is-playing .dragon-life.is-new-reward{animation:dragonReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-ten.is-playing .dragon-rocket.is-new-reward{animation:dragonLanding 3s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-ten.is-playing .dragon-cat.is-new-reward{animation:catExit 1.3s 1.35s ease-out forwards}.reward-chapter-ten.is-playing.reward-dragon-departure .dragon-rocket{animation:dragonTakeoff 3.5s ease-in forwards}.reward-chapter-ten.is-playing.reward-dragon-departure .dragon-cat{animation:catBoard .7s ease-in forwards}.dragon-departed .dragon-rocket,.dragon-departed .dragon-cat{opacity:0!important}
@keyframes dragonReveal{0%{opacity:0;transform:translateY(20px) scale(.72);filter:blur(6px)}100%{opacity:1;transform:none;filter:none}}@keyframes dragonHover{0%,100%{transform:translateY(-3px)}50%{transform:translateY(10px)}}@keyframes dragonFall{0%,100%{opacity:.48;transform:translateY(-4px)}50%{opacity:.9;transform:translateY(9px)}}@keyframes dragonSpark{0%,100%{opacity:.35;transform:scale(.7)}50%{opacity:1;transform:scale(1.25)}}@keyframes dragonLanding{0%{opacity:0;transform:translate(80px,-230px) rotate(35deg) scale(.72)}45%{opacity:1}100%{opacity:1;transform:none}}@keyframes dragonTakeoff{0%{opacity:1;transform:none}45%{transform:translate(18px,-95px) rotate(12deg)}100%{opacity:0;transform:translate(84px,-350px) rotate(20deg) scale(.68)}}
@media(max-width:600px){.dragon-rocket{left:3%;bottom:5%;width:53px}.dragon-cat{left:15%;bottom:0;width:78px}.dragon-one{left:38%;width:27%}.dragon-pair i{left:8%;transform:scale(.46) rotate(-8deg)}.dragon-pair b{right:8%;transform:scale(.43) rotate(7deg)}.dragon-islands i,.dragon-islands b,.dragon-islands em{width:31%}}
@media(prefers-reduced-motion:reduce){.dragon-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}

/* Chapter 11 · mirror sands and star wanderers */
.reward-twelve-zone{display:none}.reward-chapter-eleven .reward-twelve-zone{display:block}
.reward-chapter-eleven .reward-three-zone,.reward-chapter-eleven .reward-four-zone,.reward-chapter-eleven .reward-five-zone,.reward-chapter-eleven .reward-six-zone,.reward-chapter-eleven .reward-seven-zone,.reward-chapter-eleven .reward-eight-zone,.reward-chapter-eleven .reward-nine-zone,.reward-chapter-eleven .reward-ten-zone,.reward-chapter-eleven .reward-eleven-zone,.reward-chapter-eleven .reward-ship,.reward-chapter-eleven .reward-portal,.reward-chapter-eleven .reward-next-planet,.reward-chapter-eleven .result-cat-crop{display:none}
.story-eleven{display:none}.story-stage.chapter-eleven .story-eleven{display:block}.story-stage.chapter-eleven .story-ten,.story-stage.chapter-eleven .story-nine,.story-stage.chapter-eleven .story-eight,.story-stage.chapter-eleven .story-seven,.story-stage.chapter-eleven .story-six,.story-stage.chapter-eleven .story-five,.story-stage.chapter-eleven .story-four,.story-stage.chapter-eleven .story-three,.story-stage.chapter-eleven .story-two,.story-stage.chapter-eleven .story-one{display:none}
.mirror-world{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 78% 18%,rgba(255,244,208,.18),transparent 17%),linear-gradient(180deg,#07152f 0%,#102b4c 45%,#c86f5d 46%,#f4c990 74%,#f7dfb4 100%)}
.mirror-world::before{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(circle at 7% 12%,#fff 0 1px,transparent 2px),radial-gradient(circle at 36% 20%,#9cf7f0 0 1px,transparent 2px),radial-gradient(circle at 67% 8%,#fff7ca 0 1px,transparent 2px);background-size:79px 67px,113px 89px,149px 111px;opacity:.75}
.mirror-life{position:absolute;display:block;z-index:7;opacity:0;transform:translateY(14px) scale(.86);transition:opacity .8s ease,transform 1s cubic-bezier(.2,.75,.25,1)}.mirror-life.is-earned,.mirror-life.is-new-reward{opacity:1;transform:none}
.mirror-landing{left:2%;bottom:2%;width:31%;height:13%;z-index:12;border-radius:50%;background:radial-gradient(ellipse,rgba(255,232,175,.8),transparent 70%)}
.mirror-rocket{left:4%;bottom:7%;width:clamp(58px,15%,102px);z-index:28;filter:drop-shadow(0 9px 9px #351f2d)}.mirror-cat{left:17%;bottom:3%;width:clamp(78px,19%,126px);z-index:29;filter:drop-shadow(0 5px 7px #351f2d)}
.mirror-eclipse{right:12%;top:7%;width:16%;aspect-ratio:1;border-radius:50%;background:#07101d;box-shadow:0 0 0 7px #fff5cf,0 0 30px 13px rgba(255,246,205,.7)}
.mirror-ringed{left:13%;top:8%;width:22%;aspect-ratio:1;border-radius:50%;background:linear-gradient(145deg,#95e5e0,#356d91 62%,#173451);box-shadow:inset -10px -8px rgba(8,25,50,.25)}.mirror-ringed b{position:absolute;left:-29%;top:43%;width:158%;height:22%;border:4px solid #f0d59a;border-radius:50%;transform:rotate(-13deg)}
.mirror-waves{inset:0;z-index:4}.mirror-waves i,.mirror-waves b,.mirror-waves em{position:absolute;left:8%;right:8%;height:8%;border-top:7px solid rgba(190,91,69,.44);border-radius:50%}.mirror-waves i{bottom:19%}.mirror-waves b{bottom:10%;left:25%}.mirror-waves em{bottom:3%;right:29%}
.mirror-lake{left:31%;bottom:7%;width:48%;height:26%;border-radius:50%;background:linear-gradient(170deg,rgba(180,255,247,.9),rgba(37,124,145,.78));box-shadow:inset 0 8px rgba(255,255,255,.42),0 0 22px rgba(95,227,220,.38);z-index:8;animation:mirrorLake 5s ease-in-out infinite}
.mirror-arches{inset:0;z-index:9}.mirror-arches i,.mirror-arches b,.mirror-arches em{position:absolute;width:17%;height:32%;border:7px solid #b75f4f;border-bottom:0;border-radius:60% 60% 0 0}.mirror-arches i{left:24%;bottom:24%;transform:rotate(-7deg)}.mirror-arches b{right:11%;bottom:24%;transform:scale(.72) rotate(8deg)}.mirror-arches em{left:53%;bottom:29%;transform:scale(.55)}
.mirror-tents{inset:0;z-index:13}.mirror-tents i,.mirror-tents b,.mirror-tents em{position:absolute;width:13%;height:23%;clip-path:polygon(50% 0,100% 100%,0 100%);background:linear-gradient(90deg,rgba(255,243,210,.62),rgba(202,83,105,.78));border-bottom:5px solid #653f64}.mirror-tents i{left:31%;bottom:24%}.mirror-tents b{left:49%;bottom:30%;transform:scale(.82)}.mirror-tents em{right:18%;bottom:24%;transform:scale(.7)}
.mirror-lights{inset:0;z-index:14}.mirror-lights i,.mirror-lights b,.mirror-lights em{position:absolute;width:4%;aspect-ratio:1;border-radius:50%;background:#8ffff0;box-shadow:0 0 18px 8px rgba(105,247,236,.65)}.mirror-lights i{left:35.5%;bottom:25%}.mirror-lights b{left:53.5%;bottom:31%}.mirror-lights em{right:22.5%;bottom:25%}
.mirror-wanderer{inset:0;z-index:18}.mirror-wanderer i,.mirror-wanderer b{position:absolute;width:8%;height:22%;border-radius:45% 55% 35% 40%;background:linear-gradient(#f0d99a,#b66578);border:3px solid #4b355b}.mirror-wanderer i::before,.mirror-wanderer b::before{content:"";position:absolute;left:15%;top:-35%;width:80%;height:42%;border-radius:60% 40% 55% 45%;background:radial-gradient(circle at 68% 45%,#fff 0 11%,transparent 12%),radial-gradient(circle at 69% 46%,#173451 0 5%,transparent 6%),linear-gradient(145deg,#ffe0a2,#c66d79);border:3px solid #4b355b}.mirror-wanderer i::after,.mirror-wanderer b::after{content:"";position:absolute;left:-12%;bottom:-23%;width:124%;height:35%;border-left:4px solid #4b355b;border-right:4px solid #4b355b;box-shadow:24px 0 0 -10px #4b355b}
.mirror-one i{right:28%;bottom:24%}.mirror-pair i{left:44%;bottom:25%;transform:scale(.88);filter:hue-rotate(35deg)}.mirror-pair b{right:9%;bottom:20%;transform:scale(.78);filter:hue-rotate(-28deg)}.mirror-young i{left:40%;bottom:17%;transform:scale(.52)}.mirror-young b{right:22%;bottom:16%;transform:scale(.48);filter:hue-rotate(45deg)}
.mirror-shimmer{inset:0;z-index:20}.mirror-shimmer i{position:absolute;width:2%;aspect-ratio:1;border-radius:50%;background:#fff7b3;box-shadow:0 0 14px 5px rgba(255,242,166,.7);animation:mirrorSpark 4s ease-in-out infinite}.mirror-shimmer i:nth-child(1){left:19%;top:31%}.mirror-shimmer i:nth-child(2){left:47%;top:19%;animation-delay:-1s}.mirror-shimmer i:nth-child(3){right:26%;top:36%;animation-delay:-2s}.mirror-shimmer i:nth-child(4){right:8%;bottom:25%;animation-delay:-3s}
.mirror-departure{left:2%;top:0;width:45%;height:58%;z-index:30}.mirror-departure i,.mirror-departure b{position:absolute;width:8px;height:54%;border-radius:50%;background:linear-gradient(rgba(255,238,174,.78),transparent);transform:rotate(12deg)}.mirror-departure i{left:15%}.mirror-departure b{left:34%;height:39%}
.mirror-life.is-new-reward{opacity:0}.reward-chapter-eleven.is-playing .mirror-life.is-new-reward{animation:mirrorReveal 1.8s cubic-bezier(.18,.75,.28,1) forwards}.reward-chapter-eleven.is-playing .mirror-rocket.is-new-reward{animation:dragonLanding 3s cubic-bezier(.2,.75,.24,1) forwards}.reward-chapter-eleven.is-playing .mirror-cat.is-new-reward{animation:catExit 1.3s 1.35s ease-out forwards}.reward-chapter-eleven.is-playing.reward-mirror-departure .mirror-rocket{animation:dragonTakeoff 3.5s ease-in forwards}.reward-chapter-eleven.is-playing.reward-mirror-departure .mirror-cat{animation:catBoard .7s ease-in forwards}.mirror-departed .mirror-rocket,.mirror-departed .mirror-cat{opacity:0!important}
@keyframes mirrorReveal{0%{opacity:0;transform:translateY(20px) scale(.72);filter:blur(6px)}100%{opacity:1;transform:none;filter:none}}@keyframes mirrorLake{0%,100%{filter:brightness(.92)}50%{filter:brightness(1.13)}}@keyframes mirrorSpark{0%,100%{opacity:.35;transform:scale(.7)}50%{opacity:1;transform:scale(1.25)}}
@media(max-width:600px){.mirror-rocket{left:3%;bottom:5%;width:53px}.mirror-cat{left:15%;bottom:0;width:78px}.mirror-eclipse{right:8%;width:14%}.mirror-ringed{left:10%;width:19%}.mirror-wanderer i,.mirror-wanderer b{width:7%;height:19%}.mirror-lake{left:29%;width:51%}}
@media(prefers-reduced-motion:reduce){.mirror-world *{animation-duration:.001ms!important;animation-iteration-count:1!important}}


/* v87 · Chapter 1: rocket, energy and clearly staged portal awakening. */
.station-world{position:absolute;inset:0;z-index:2;pointer-events:none;display:none;overflow:hidden;border-radius:inherit}
.story-stage.chapter-one>.station-world-map,.reward-chapter-one>.station-world-reward{display:block}
.station-life{position:absolute;opacity:0;transform:translateY(18px) scale(.55);filter:drop-shadow(0 7px 10px rgba(7,12,39,.42))}
.station-life.is-earned{opacity:1;transform:none}.station-life.is-new-reward{animation:stationCosmicReveal 1.65s cubic-bezier(.18,.8,.2,1) forwards}
.station-second-sun{right:12%;top:8%;width:64px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 38% 35%,#fff 0 8%,#ffe99a 9% 34%,#ff9a3c 58%,#e64e89 100%);box-shadow:0 0 26px 10px rgba(255,211,77,.48);z-index:4}
.station-ground-crystal{right:27%;bottom:8%;width:54px;height:86px;clip-path:polygon(50% 0,88% 35%,72% 100%,28% 100%,12% 35%);background:linear-gradient(145deg,#e9fffb,#70d9cf 48%,#7355b7);z-index:7}.station-ground-crystal i{position:absolute;inset:16% 36% 9% 18%;background:rgba(255,255,255,.48);clip-path:polygon(50% 0,100% 100%,0 100%)}
.station-bright-star{left:57%;top:15%;font-size:48px;color:#fff7c2;text-shadow:0 0 10px #fff,0 0 24px #ffd34d;z-index:6}
.station-flying-object{right:7%;top:38%;width:92px;height:30px;border-radius:50%;background:linear-gradient(180deg,#d8fff8,#70d9cf 55%,#3e5795);border:3px solid #34456f;z-index:6}.station-flying-object:before{content:"";position:absolute;left:29%;top:-17px;width:42%;height:22px;border-radius:50% 50% 20% 20%;background:rgba(216,255,248,.8);border:3px solid #34456f}.station-flying-object i{position:absolute;left:13%;right:13%;bottom:-8px;height:10px;border-radius:50%;background:#ffd34d;box-shadow:0 0 15px #ffd34d}
.station-light-path{left:25%;right:18%;bottom:6%;height:12px;border-radius:999px;background:linear-gradient(90deg,transparent,#70d9cf,#ffd34d,#70d9cf,transparent);box-shadow:0 0 20px rgba(112,217,207,.78);z-index:4}
.station-portal-star-one{right:29%;top:22%;font-size:34px;color:#fff;text-shadow:0 0 14px #70d9cf;z-index:7}
.station-portal-crystal{right:5%;bottom:12%;width:42px;height:67px;clip-path:polygon(50% 0,90% 38%,70% 100%,30% 100%,10% 38%);background:linear-gradient(145deg,#fff,#e64e89 48%,#7355b7);z-index:7}.station-portal-crystal i{position:absolute;inset:15% 38% 8% 18%;background:rgba(255,255,255,.45)}
.station-cosmic-aurora{right:-4%;top:3%;width:48%;height:43%;border-radius:50%;background:radial-gradient(ellipse at center,rgba(112,217,207,.48),rgba(115,85,183,.28) 44%,transparent 72%);filter:blur(2px);z-index:3}
.station-comet{left:54%;top:8%;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 0 13px #fff,0 0 25px #70d9cf;z-index:8}.station-comet i{position:absolute;right:12px;top:6px;width:100px;height:6px;border-radius:999px;background:linear-gradient(90deg,transparent,rgba(112,217,207,.75),#fff);transform:rotate(-18deg);transform-origin:right center}
.station-star-road{right:7%;top:19%;width:31%;height:52%;z-index:7}.station-star-road i{position:absolute;width:13px;height:13px;border-radius:50%;background:#fff7c2;box-shadow:0 0 13px #ffd34d}.station-star-road i:nth-child(1){left:12%;bottom:14%}.station-star-road i:nth-child(2){left:48%;top:45%}.station-star-road i:nth-child(3){right:6%;top:8%}
.reward-chapter-one .station-world{z-index:3}.reward-chapter-one .reward-ship,.reward-chapter-one .reward-portal,.reward-chapter-one .result-cat-crop{z-index:8}
.reward-chapter-one .reward-portal-runes em{opacity:.08;transform:scale(.35)}
.reward-chapter-one .reward-portal-runes em.is-earned{opacity:1;transform:none}
.reward-chapter-one .reward-portal-runes em.is-new-reward{animation:portalSegmentReveal 1.8s cubic-bezier(.18,.8,.2,1) forwards}
.reward-chapter-one .reward-portal-runes em:nth-child(5){display:none}
@keyframes stationCosmicReveal{0%{opacity:0;transform:translateY(22px) scale(.42);filter:blur(8px)}68%{opacity:1;transform:translateY(-4px) scale(1.12);filter:blur(0)}100%{opacity:1;transform:none}}
@keyframes portalSegmentReveal{0%{opacity:.05;transform:scale(.25);filter:blur(7px)}58%{opacity:1;transform:scale(1.45);filter:blur(0);text-shadow:0 0 24px #fff,0 0 42px #70d9cf}100%{opacity:1;transform:none}}
@media(max-width:560px){.station-second-sun{right:8%;width:52px}.station-ground-crystal{right:24%;width:44px;height:70px}.station-flying-object{right:4%;width:76px}.station-bright-star{left:55%;font-size:40px}.station-star-road{right:3%;width:35%}}
@media(prefers-reduced-motion:reduce){.station-life,.station-life *{animation-duration:.01ms!important;animation-iteration-count:1!important}}


/* v89 · Chapter 16: Star Harbor finale (missions 238–252) */
.story-sixteen{display:none}.story-stage.chapter-sixteen .story-sixteen{display:block}
.story-stage.chapter-sixteen .story-one,.story-stage.chapter-sixteen .story-two,.story-stage.chapter-sixteen .story-three,.story-stage.chapter-sixteen .story-four,.story-stage.chapter-sixteen .story-five,.story-stage.chapter-sixteen .story-six,.story-stage.chapter-sixteen .story-seven,.story-stage.chapter-sixteen .story-eight,.story-stage.chapter-sixteen .story-nine,.story-stage.chapter-sixteen .story-ten,.story-stage.chapter-sixteen .story-eleven,.story-stage.chapter-sixteen .story-twelve,.story-stage.chapter-sixteen .story-thirteen,.story-stage.chapter-sixteen .story-fourteen,.story-stage.chapter-sixteen .story-fifteen{display:none!important}
.reward-seventeen-zone{display:none}.reward-chapter-sixteen .reward-seventeen-zone{display:block}
.reward-chapter-sixteen>.reward-three-zone,.reward-chapter-sixteen>.reward-four-zone,.reward-chapter-sixteen>.reward-five-zone,.reward-chapter-sixteen>.reward-six-zone,.reward-chapter-sixteen>.reward-seven-zone,.reward-chapter-sixteen>.reward-eight-zone,.reward-chapter-sixteen>.reward-nine-zone,.reward-chapter-sixteen>.reward-ten-zone,.reward-chapter-sixteen>.reward-eleven-zone,.reward-chapter-sixteen>.reward-twelve-zone,.reward-chapter-sixteen>.reward-thirteen-zone,.reward-chapter-sixteen>.reward-fourteen-zone,.reward-chapter-sixteen>.reward-fifteen-zone,.reward-chapter-sixteen>.reward-sixteen-zone,.reward-chapter-sixteen>.reward-ship,.reward-chapter-sixteen>.reward-portal,.reward-chapter-sixteen>.reward-next-planet,.reward-chapter-sixteen>.result-cat-crop{display:none!important}
.story-stage.chapter-sixteen>.story-cat-crop,.story-stage.chapter-sixteen>.story-ship,.story-stage.chapter-sixteen>.story-portal,.story-stage.chapter-sixteen>.next-planet,.story-stage.chapter-sixteen>.story-energy-stream{display:none!important}
.journey-world[data-theme="harbor"]{--sky1:#07112d;--sky2:#172b63;--ground:#182343;--accent:#75dcff;--accent2:#ffd76b;background:radial-gradient(circle at 74% 16%,rgba(255,215,107,.24),transparent 12%),radial-gradient(circle at 18% 26%,rgba(117,220,255,.14),transparent 18%),linear-gradient(180deg,#07112d 0,#172b63 58%,#121a35 100%)}
[data-theme="harbor"] .journey-stars{opacity:1;background-image:radial-gradient(#fff 1px,transparent 1.6px);background-size:29px 29px}
[data-theme="harbor"] .journey-stars i{width:7px;height:7px;background:#fff6bd;box-shadow:0 0 12px #75dcff}
[data-theme="harbor"] .journey-sky{left:12%;right:auto;top:auto;bottom:16%;width:62%;height:10px;border:0;border-radius:999px;background:linear-gradient(90deg,transparent,#75dcff 18%,#ffd76b 74%,transparent);box-shadow:0 0 18px #75dcff}
[data-theme="harbor"] .journey-sky b{display:none}
[data-theme="harbor"] .journey-land{left:16%;right:8%;bottom:4%;height:34%;border-radius:50% 50% 12% 12%;background:linear-gradient(180deg,#344d7d,#182343);box-shadow:inset 0 9px rgba(117,220,255,.18),0 -12px 28px rgba(117,220,255,.2)}
[data-theme="harbor"] .journey-land i,[data-theme="harbor"] .journey-land b,[data-theme="harbor"] .journey-land em{bottom:68%;height:7px;border-radius:999px;background:#ffd76b;box-shadow:0 0 12px #ffd76b}
[data-theme="harbor"] .feature-a{left:45%;bottom:23%}[data-theme="harbor"] .feature-a i{width:30px;height:92px;border-radius:15px;background:linear-gradient(#e7fbff,#75dcff 55%,#3658a7);box-shadow:0 0 18px #75dcff}[data-theme="harbor"] .feature-a b{width:92px;height:15px;bottom:55px;border-radius:999px;background:#ffd76b;box-shadow:0 0 18px #ffd76b}[data-theme="harbor"] .feature-a em{width:48px;height:48px;bottom:76px;border-radius:50%;background:radial-gradient(circle,#fff 0 18%,#75dcff 20% 48%,transparent 50%);box-shadow:0 0 26px #75dcff}
[data-theme="harbor"] .feature-b{left:68%;bottom:38%;width:104px;height:70px}[data-theme="harbor"] .feature-b i{width:78px;height:28px;border-radius:50% 50% 24% 24%;background:#8d73e6;box-shadow:0 0 18px #75dcff}[data-theme="harbor"] .feature-b b{width:22px;height:22px;bottom:4px;border-radius:50%;background:#ffd76b}[data-theme="harbor"] .feature-b em{width:9px;height:64px;bottom:-12px;border-radius:999px;background:linear-gradient(#75dcff,transparent)}
[data-theme="harbor"] .feature-c{right:9%;bottom:22%;width:88px;height:94px}[data-theme="harbor"] .feature-c i{width:74px;height:42px;border-radius:50%;background:linear-gradient(145deg,#80e7ff,#3570a8);box-shadow:0 0 16px #75dcff}[data-theme="harbor"] .feature-c b{width:30px;height:30px;border-radius:50%;background:#a6ef78}[data-theme="harbor"] .feature-c em{width:14px;height:72px;border-radius:999px;background:linear-gradient(#a6ef78,transparent)}
[data-theme="harbor"] .feature-d{left:8%;bottom:22%;width:92px;height:76px}[data-theme="harbor"] .feature-d i{width:70px;height:34px;border-radius:50%;background:#71d4d6;box-shadow:0 0 15px #75dcff}[data-theme="harbor"] .feature-d b{left:54px;width:28px;height:38px;border-radius:50% 50% 35% 35%;background:#f5a7d4}[data-theme="harbor"] .feature-d em{width:10px;height:58px;background:linear-gradient(#ffd76b,transparent)}
[data-theme="harbor"] .journey-path{left:6%;right:8%;bottom:13%;height:11px;border-radius:999px;background:linear-gradient(90deg,#75dcff,#ffd76b,#75dcff);box-shadow:0 0 20px #75dcff}
[data-theme="harbor"] .harbor-great-ship{position:absolute;left:22%;bottom:20%;width:165px;height:116px;z-index:18}[data-theme="harbor"] .harbor-great-ship i{position:absolute;width:150px;height:76px;border-radius:58% 58% 34% 34%;background:linear-gradient(160deg,#dff8ff,#6d8ddb 52%,#293c79);box-shadow:inset 0 9px rgba(255,255,255,.55),0 0 22px #75dcff}[data-theme="harbor"] .harbor-great-ship b{position:absolute;width:92px;height:24px;left:30px;bottom:4px;border-radius:50%;background:#ffd76b;box-shadow:0 0 20px #ffd76b}[data-theme="harbor"] .harbor-great-ship em{position:absolute;width:170px;height:96px;left:-10px;bottom:18px;border-radius:50% 50% 10% 10%;background:transparent;border:4px solid rgba(117,220,255,.55);box-shadow:0 0 20px rgba(117,220,255,.45)}
[data-theme="harbor"] .harbor-crystal{position:absolute;left:48%;bottom:27%;width:36px;height:72px;z-index:25;clip-path:polygon(50% 0,100% 30%,82% 100%,18% 100%,0 30%);background:linear-gradient(135deg,#fff,#ffd76b 35%,#ff8d65);box-shadow:0 0 24px #ffd76b}
[data-theme="harbor"] .harbor-engine{position:absolute;left:27%;bottom:19%;width:120px;height:30px;z-index:26}[data-theme="harbor"] .harbor-engine i,[data-theme="harbor"] .harbor-engine b{position:absolute;width:44px;height:18px;border-radius:50%;background:#75dcff;box-shadow:0 0 22px #75dcff}[data-theme="harbor"] .harbor-engine b{left:64px;background:#ffd76b;box-shadow:0 0 22px #ffd76b}
[data-theme="harbor"] .resident-a{left:68%;bottom:14%;background:#dff8ff;box-shadow:0 0 12px #75dcff;border:2px solid rgba(255,255,255,.65)}
[data-theme="harbor"] .journey-finale{inset:4% 8% 33% 8%;border-radius:50%;background:radial-gradient(circle at 18% 30%,#fff 0 2px,transparent 3px),radial-gradient(circle at 37% 52%,#75dcff 0 3px,transparent 4px),radial-gradient(circle at 58% 28%,#ffd76b 0 3px,transparent 4px),radial-gradient(circle at 76% 54%,#a6ef78 0 3px,transparent 4px),linear-gradient(22deg,transparent 48%,rgba(117,220,255,.4) 49% 51%,transparent 52%),linear-gradient(-18deg,transparent 48%,rgba(255,215,107,.34) 49% 51%,transparent 52%);box-shadow:inset 0 0 24px rgba(117,220,255,.2);mix-blend-mode:screen}
[data-theme="harbor"] .harbor-boarding{position:absolute;left:53%;bottom:17%;width:120px;height:78px;z-index:28}[data-theme="harbor"] .harbor-boarding i,[data-theme="harbor"] .harbor-boarding b,[data-theme="harbor"] .harbor-boarding em{position:absolute;bottom:0;width:27px;height:45px;border-radius:48% 48% 35% 35%;background:#f4d7ff;border:3px solid #4d5594;box-shadow:0 0 12px #75dcff}[data-theme="harbor"] .harbor-boarding b{left:38px;background:#d7ffd9}[data-theme="harbor"] .harbor-boarding em{left:76px;background:#ffe4b8}
[data-theme="harbor"] .journey-departure{left:18%;top:8%;width:64%;height:64%;background:none;filter:none;z-index:90;overflow:visible;pointer-events:none}
[data-theme="harbor"] .journey-departure:before{content:"";position:absolute;left:18%;top:30%;width:220px;height:92px;border-radius:60% 60% 38% 38%;background:linear-gradient(160deg,#f3fdff,#7394df 50%,#283f80);box-shadow:0 0 28px #75dcff;z-index:1}
[data-theme="harbor"] .journey-departure:after{content:"Kohtumiseni!";position:absolute;left:0;right:0;bottom:0;z-index:3;text-align:center;font-weight:900;font-size:clamp(28px,7vw,54px);letter-spacing:.03em;color:#fff7c7;text-shadow:0 0 12px #75dcff,0 3px 0 #263f83}
[data-theme="harbor"] .feature-b.is-new-reward{opacity:1;z-index:38;animation:harborFriendFlyInRight 2.35s cubic-bezier(.16,.82,.24,1) both}
[data-theme="harbor"] .feature-c.is-new-reward{opacity:1;z-index:38;animation:harborFriendFlyInFar 2.35s cubic-bezier(.16,.82,.24,1) both}
[data-theme="harbor"] .feature-d.is-new-reward{opacity:1;z-index:38;animation:harborFriendFlyInLeft 2.35s cubic-bezier(.16,.82,.24,1) both}
[data-theme="harbor"] .resident-a.is-new-reward{opacity:1;z-index:39;animation:harborFriendLand 2.15s cubic-bezier(.16,.82,.24,1) both}
[data-theme="harbor"] .harbor-boarding.is-new-reward{opacity:1;z-index:40;animation:harborCrewGather 2.1s cubic-bezier(.16,.82,.24,1) both}
[data-theme="harbor"].journey-departing .journey-departure{animation:harborFinale 6.8s ease-in-out both}
[data-theme="harbor"].journey-departing .journey-rocket,[data-theme="harbor"].journey-departing .journey-cat{animation:harborBoard 1s ease-in both}
@keyframes harborFriendFlyInRight{0%{opacity:0;transform:translate(150px,-120px) scale(.2) rotate(-12deg);filter:blur(6px)}38%{opacity:1;transform:translate(18px,-10px) scale(1.12) rotate(5deg);filter:blur(0)}62%{opacity:1;transform:translate(-6px,4px) scale(.98) rotate(-2deg)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes harborFriendFlyInFar{0%{opacity:0;transform:translate(190px,-150px) scale(.12) rotate(-8deg);filter:blur(7px)}44%{opacity:1;transform:translate(26px,-12px) scale(1.15) rotate(4deg);filter:blur(0)}66%{opacity:1;transform:translate(-6px,6px) scale(.98) rotate(-1deg)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes harborFriendFlyInLeft{0%{opacity:0;transform:translate(-150px,-110px) scale(.18) rotate(12deg);filter:blur(6px)}40%{opacity:1;transform:translate(-18px,-10px) scale(1.12) rotate(-5deg);filter:blur(0)}64%{opacity:1;transform:translate(6px,4px) scale(.98) rotate(2deg)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes harborFriendLand{0%{opacity:0;transform:translate(120px,-70px) scale(.26);filter:blur(6px)}48%{opacity:1;transform:translate(14px,-8px) scale(1.08);filter:blur(0)}72%{opacity:1;transform:translate(-4px,4px) scale(.98)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes harborCrewGather{0%{opacity:0;transform:translate(90px,16px) scale(.65);filter:blur(4px)}52%{opacity:1;transform:translate(8px,-3px) scale(1.08);filter:blur(0)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes harborFinale{0%{opacity:0;transform:translateY(80px) scale(.72)}18%{opacity:1;transform:none}63%{opacity:1;transform:translate(45px,-35px) scale(.9)}82%{opacity:1;transform:translate(170px,-145px) scale(.55)}100%{opacity:1;transform:translate(300px,-260px) scale(.25)}}
@keyframes harborBoard{to{opacity:0;transform:translate(55px,-20px) scale(.35)}}
@media(max-width:600px){[data-theme="harbor"] .harbor-great-ship{left:15%;width:138px}[data-theme="harbor"] .harbor-great-ship i{width:126px}[data-theme="harbor"] .harbor-great-ship em{width:142px}[data-theme="harbor"] .journey-departure:before{width:170px;height:72px}}

.install-secondary{width:100%;margin-top:10px}

/* v98 · Desktop parity with the accepted phone interface.
   Desktop changes layout and scale only; it does not restore labels hidden on mobile. */
@media(min-width:1101px){
  #battleScreen.is-active{
    width:min(900px,100%);
    margin:0 auto;
    min-height:0;
  }
  .battle-screen{width:min(900px,100%)}
  .battle-top{
    display:grid;
    grid-template-columns:1fr auto;
    align-items:center;
    gap:12px;
    min-height:40px;
    margin-bottom:7px;
  }
  .battle-title-wrap{display:none!important}
  .battle-top>.progress-pill{
    display:flex;
    justify-self:end;
    min-height:38px;
    padding:6px 12px;
    border-radius:999px;
  }
  .progress-pill>span{display:none!important}
  .progress-pill strong{font-size:1rem}
  .back-button{min-height:38px;padding:0 14px;font-size:.9rem}

  .play-grid{
    grid-template-columns:minmax(0,575px) minmax(235px,255px);
    gap:14px;
    align-items:start;
    justify-content:center;
  }
  .scene-column{gap:7px}
  .question-card{
    padding:7px 13px 6px;
    border-radius:20px;
  }
  .question-label{display:none!important}
  .equation{font-size:clamp(2.05rem,3.2vw,2.8rem);gap:7px}
  .answer-slot{min-width:58px;border-bottom-width:4px}
  .feedback{min-height:14px;margin-top:0;font-size:.76rem}

  .battle-stage{
    height:245px;
    min-height:245px;
    border-radius:22px;
  }
  .hero-zone{
    left:50%;
    bottom:10%;
    width:30%;
    max-width:165px;
    height:48%;
    transform:translateX(-50%);
  }
  .hero-cat-crop{
    inset:0;
    height:100%;
    overflow:visible;
    display:flex;
    align-items:flex-end;
    justify-content:center;
  }
  .hero-cat{
    width:auto;
    height:100%;
    max-width:100%;
    object-fit:contain;
    transform:none;
    transform-origin:50% 100%;
  }
  .hero-shadow{left:18%;right:18%;bottom:-2%;height:8%}

  .answer-panel{
    min-height:0;
    padding:12px;
    border-radius:20px;
    justify-content:flex-start;
  }
  .answer-panel-head{display:none!important}
  .choice-grid{gap:8px}
  .choice-grid button{
    min-height:58px;
    border-radius:15px;
    font-size:1.35rem;
  }
  .keypad{gap:6px}
  .keypad button{
    min-height:43px;
    border-radius:13px;
    font-size:1.04rem;
  }
  .active-tables-card{margin-top:8px;padding:8px 9px}

  #resultScreen.is-active{
    width:min(860px,100%);
    margin:0 auto;
  }
  #resultScreen .result-card{
    max-width:820px;
    margin:7px auto;
    padding:12px 14px 14px;
    border-radius:28px;
  }
  #resultScreen .result-animation,
  #resultScreen .reward-scene{
    height:220px;
    border-radius:22px;
  }
  #resultScreen .reward-scene .result-cat-crop{
    left:4%!important;
    right:auto!important;
    bottom:12%!important;
    width:140px!important;
    height:170px!important;
    overflow:visible!important;
  }
  #resultScreen .reward-scene .result-cat{
    inset:0;
    width:100%;
    height:100%;
    object-fit:contain;
    transform:scale(.96);
    transform-origin:50% 100%;
  }
  #resultScreen .reward-scene .result-cat-neutral{content:url("assets/edukass-cat-reward-neutral-crop.png")}
  #resultScreen .reward-scene .result-cat-surprise{content:url("assets/edukass-cat-reward-surprise-crop.png")}
  #resultScreen .reward-scene .result-cat-joy{content:url("assets/edukass-cat-reward-joy-crop.png")}
  #resultScreen .reward-pill{min-height:30px;margin:9px auto 5px;padding:5px 12px}
  #resultScreen .result-card h1:not([hidden]){
    margin:2px 0 4px;
    font-size:clamp(2rem,3.7vw,2.8rem);
    line-height:1;
  }
  #resultScreen .result-stats{
    width:min(270px,100%);
    margin:7px auto!important;
    padding:8px 14px!important;
    gap:4px 22px!important;
  }
  #resultScreen .result-actions{margin-top:7px!important;gap:8px}
  #resultScreen .result-actions .primary-button,
  #resultScreen .result-actions .secondary-button{
    min-height:42px;
    padding:0 18px;
  }
}

@media(min-width:1101px) and (max-height:780px){
  .battle-stage{height:220px;min-height:220px}
  #resultScreen .result-animation,
  #resultScreen .reward-scene{height:195px}
  #resultScreen .reward-scene .result-cat-crop{width:126px!important;height:152px!important}
}


/* v99: desktop cleanup — stars only, no install button on desktop, full brand cat, battle table button, slightly larger battle layout. */
.battle-table-button{width:100%;margin-top:10px;min-height:46px}

@media(min-width:701px){
  #installGameButton{display:none!important}
  .brand-cat{width:58px;height:58px;overflow:visible;border-radius:0;background:transparent}
  .brand-cat img{width:100%;height:100%;object-fit:contain;transform:none}
}

@media(min-width:1101px){
  .battle-screen{width:min(1020px,100%)}
  .play-grid{
    grid-template-columns:minmax(0,620px) minmax(250px,280px);
    gap:16px;
  }
  .question-card{padding:9px 14px 7px;border-radius:22px}
  .equation{font-size:clamp(2.2rem,3.4vw,3rem)}
  .answer-slot{min-width:62px}
  .battle-stage{height:268px;min-height:268px}
  .hero-zone{bottom:7%;width:31%;max-width:172px;height:50%}
  .answer-panel{padding:14px;border-radius:22px}
  .choice-grid button{min-height:62px;font-size:1.42rem}
  .keypad button{min-height:46px;font-size:1.08rem}
  .battle-table-button{min-height:48px;margin-top:12px}
}


/* v101: clean intro sound support, chapter orientation, and a separate fact-table action. */
.answer-column{min-width:0;display:flex;flex-direction:column;gap:12px}
.battle-table-button{
  width:100%;
  margin:0;
  min-height:48px;
  background:#eef4f8;
  border:1px solid var(--line);
  box-shadow:0 8px 18px rgba(23,54,95,.1);
}
.battle-chapter-label{
  min-width:0;
  color:var(--muted);
  font-size:.82rem;
  font-weight:900;
  letter-spacing:.075em;
  line-height:1.15;
  text-align:center;
  text-transform:uppercase;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

@media(min-width:1101px){
  .battle-top{grid-template-columns:auto minmax(0,1fr) auto}
  .battle-chapter-label{padding:0 14px;font-size:.86rem}
  .answer-column{gap:12px}
  .battle-table-button{min-height:50px;border-radius:999px}
}

@media(max-width:880px){
  .answer-column{gap:8px}
  .answer-column .answer-panel{margin-top:8px}
  .battle-table-button{min-height:46px;border-radius:18px}
}

@media(max-width:620px){
  .battle-top{position:relative}
  .battle-chapter-label{
    position:absolute;
    left:112px;
    right:8px;
    top:50%;
    transform:translateY(-50%);
    padding:0 6px;
    font-size:.62rem;
    text-align:right;
    pointer-events:none;
  }
  .answer-column{gap:7px}
  .answer-column .answer-panel{margin-top:8px}
  .battle-table-button{min-height:44px;font-size:.78rem}
}


/* v104: responsive isolation guard.
   The accepted phone layout is the base. Desktop uses its own image and positioning only at 1101px+. */
.hero-cat-picture{display:block;width:100%;height:100%}

@media(max-width:700px){
  .hero-zone{
    left:50%;
    bottom:.5%;
    width:45%;
    max-width:235px;
    height:40%;
    transform:translateX(-50%);
  }
  .hero-cat-crop{
    position:absolute;
    left:0;
    right:0;
    top:0;
    height:94%;
    overflow:hidden;
    display:block;
  }
  .hero-cat-picture{width:100%;height:auto}
  .hero-cat{
    width:100%;
    height:auto;
    max-width:none;
    object-fit:initial;
    display:block;
    transform:scale(1.25) translateY(-10%);
    transform-origin:50% 4%;
  }
  .hero-shadow{left:23%;right:23%;bottom:4%;height:10%}
}

@media(min-width:1101px){
  .hero-cat-picture{
    width:100%;
    height:100%;
    display:flex;
    align-items:flex-end;
    justify-content:center;
  }
}


/* v105: mobile-only cat refinement. Desktop rules are intentionally untouched. */
@media(max-width:700px){
  .hero-zone{
    left:50%;
    bottom:5%;
    width:36%;
    max-width:185px;
    height:38%;
    transform:translateX(-50%);
  }
  .hero-cat-crop{
    inset:0;
    width:100%;
    height:100%;
    overflow:visible;
    display:flex;
    align-items:flex-end;
    justify-content:center;
  }
  .hero-cat-picture{
    width:100%;
    height:100%;
    display:flex;
    align-items:flex-end;
    justify-content:center;
  }
  .hero-cat{
    width:auto;
    height:100%;
    max-width:100%;
    object-fit:contain;
    display:block;
    transform:none;
    transform-origin:50% 100%;
  }
  .hero-shadow{left:18%;right:18%;bottom:-1%;height:8%}
}

/* v110: visible intro readiness and a child-sized chapter goal on the map. */
.intro-status{
  position:absolute;
  z-index:19;
  left:50%;
  bottom:23%;
  max-width:min(82vw,360px);
  padding:9px 14px;
  border:1px solid rgba(255,255,255,.28);
  border-radius:999px;
  background:rgba(20,31,75,.72);
  color:#fff;
  font-size:.86rem;
  font-weight:850;
  letter-spacing:.035em;
  text-align:center;
  white-space:nowrap;
  opacity:1;
  transform:translateX(-50%);
  transition:opacity .2s ease,visibility .2s ease;
}
.game-intro.intro-ready .intro-status,
.game-intro.is-launching .intro-status,
.game-intro.is-returning .intro-status{opacity:0;visibility:hidden}

.energy-panel{gap:10px;align-items:center}
.energy-panel .energy-star{flex:0 0 auto;color:var(--yellow);font-size:1.55rem;line-height:1;text-shadow:0 2px 7px rgba(255,211,77,.42)}
.energy-panel .energy-copy{display:flex;min-width:0;flex-direction:column;gap:1px}
.energy-panel .energy-copy strong{color:var(--ink);font-size:1rem;line-height:1.15;white-space:nowrap}
.energy-panel .energy-copy strong span{color:inherit;font-weight:inherit}
.energy-panel .energy-copy small{color:var(--muted);font-size:.75rem;font-weight:800;line-height:1.2;white-space:nowrap}
.energy-panel .energy-copy small span{color:inherit;font-size:inherit;font-weight:inherit}

@media(max-width:700px){
  .intro-status{bottom:27%;padding:7px 11px;font-size:.74rem}
  #mapScreen .energy-panel{gap:6px;padding:6px 8px}
  #mapScreen .energy-panel .energy-star{font-size:1.15rem}
  #mapScreen .energy-panel .energy-copy strong{font-size:.76rem}
  #mapScreen .energy-panel .energy-copy small{font-size:.62rem}
}

@media(max-width:700px) and (max-height:720px){
  .intro-status{bottom:22%}
}

/* v118: the helmet and cat share one motion layer at every responsive size. */
.hero-zone.danger-high:not(.impact) .hero-cat,
.hero-zone.danger-critical:not(.impact) .hero-cat,
.hero-zone.impact .hero-cat{animation:none!important}
.hero-zone.impact .hero-cat-gear{animation:none!important}
.hero-zone.danger-high:not(.impact) .hero-cat-crop{animation:helmetCatNervous .42s ease-in-out infinite alternate}
.hero-zone.danger-critical:not(.impact) .hero-cat-crop{animation:helmetCatBrace .13s linear infinite}
.hero-zone.impact .hero-cat-crop{animation:helmetCatImpact 2.05s cubic-bezier(.2,.75,.3,1) both}

@keyframes helmetCatNervous{
  from{transform:translateX(-.7%) rotate(-1deg)}
  to{transform:translateX(.7%) rotate(1deg)}
}
@keyframes helmetCatBrace{
  0%{transform:translate(-.8%,0) rotate(-1deg)}
  50%{transform:translate(.8%,-1.5%) rotate(1deg)}
  100%{transform:translate(-.5%,0)}
}
@keyframes helmetCatImpact{
  0%,8%{transform:none}
  14%{transform:translateY(-6%) rotate(-1deg)}
  22%{transform:translateY(7%) rotate(-3deg)}
  54%{transform:translateY(5%) rotate(2deg)}
  100%{transform:translateY(4%)}
}


/* v119: the helmet is anchored to the rendered cat image, not to the responsive crop. */
.hero-cat-figure{
  position:relative;
  display:block;
  flex:0 0 auto;
  height:100%;
  width:auto;
  max-width:100%;
  aspect-ratio:743 / 856;
}
.hero-cat-figure .hero-cat-picture,
.hero-cat-figure .hero-cat{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  object-fit:contain!important;
  transform:none!important;
}
.hero-cat-figure .hero-cat-gear{
  inset:0;
}
.hero-cat-figure .hero-helmet{
  left:37%;
  top:8.5%;
  width:48%;
  height:17%;
}
.hero-cat-figure .hero-wink{
  left:52%;
  top:37%;
  width:13%;
  height:8%;
}
@media(max-width:700px){
  .hero-cat-crop{display:flex!important;align-items:flex-end!important;justify-content:center!important;}
  .hero-cat-figure{height:100%;width:auto;max-width:100%;}
}
@media(min-width:1101px){
  .hero-cat-crop{display:flex!important;align-items:flex-end!important;justify-content:center!important;}
  .hero-cat-figure{height:100%;width:auto;max-width:100%;}
}

/* v119: failed attempts always show the universal recovering cat above every chapter world. */
#resultScreen .reward-scene.reward-failed > .result-cat-crop{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  z-index:90!important;
}
#resultScreen .reward-scene.reward-failed .result-cat-neutral{
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
}
#resultScreen .reward-scene.reward-failed .result-cat-surprise,
#resultScreen .reward-scene.reward-failed .result-cat-joy,
#resultScreen .reward-scene:not(.reward-failed) .failure-dizzy-stars{
  display:none!important;
}
.failure-dizzy-stars{
  position:absolute;
  z-index:95;
  left:21%;
  top:-2%;
  width:70%;
  height:34%;
  display:none;
  pointer-events:none;
  transform-origin:50% 70%;
}
.reward-failed.is-playing .failure-dizzy-stars{
  display:block;
  animation:failureStarsOrbit 2.15s linear infinite;
}
.failure-dizzy-stars i{
  position:absolute;
  color:#ffe56f;
  font-style:normal;
  font-size:1.35rem;
  line-height:1;
  text-shadow:0 0 7px #fff,0 0 14px #ff9a3c,0 0 23px #e64e89;
  animation:failureStarTwinkle .64s ease-in-out infinite alternate;
}
.failure-dizzy-stars i:nth-child(1){left:2%;top:44%;}
.failure-dizzy-stars i:nth-child(2){left:24%;top:2%;font-size:1.65rem;animation-delay:.12s;}
.failure-dizzy-stars i:nth-child(3){left:52%;top:0;animation-delay:.24s;}
.failure-dizzy-stars i:nth-child(4){right:2%;top:34%;font-size:1.55rem;animation-delay:.36s;}
.failure-dizzy-stars i:nth-child(5){right:19%;bottom:0;animation-delay:.48s;}
@keyframes failureStarsOrbit{to{transform:rotate(360deg)}}
@keyframes failureStarTwinkle{from{opacity:.48;transform:scale(.72)}to{opacity:1;transform:scale(1.18)}}

/* v119 visual acceptance target: the recovering cat is a clear central subject on failure. */
#resultScreen .reward-scene.reward-failed > .result-cat-crop{
  left:50%!important;
  right:auto!important;
  bottom:-8px!important;
  width:176px!important;
  height:198px!important;
  transform:translateX(-50%)!important;
  overflow:visible!important;
}
@media(min-width:701px){
  #resultScreen .reward-scene.reward-failed > .result-cat-crop{
    bottom:-10px!important;
    width:196px!important;
    height:220px!important;
  }
}
