.home-page{position:relative;min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:linear-gradient(180deg,#b8e0ff,#dff3ff,#e8f5e0);overflow:hidden}.home-parent-btn{position:absolute;top:max(.75rem,env(safe-area-inset-top));right:max(.75rem,env(safe-area-inset-right));z-index:10;padding:.4rem .85rem;font-size:.9rem;color:#5a6b7a;background:#ffffffb8;border:1px solid rgb(90 107 122 / 18%);border-radius:999px;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.home-parent-btn:active{transform:scale(.97)}.home-scene{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.home-cloud{position:absolute;background:#ffffffe5;border-radius:40px}.home-cloud.hc1{width:80px;height:30px;top:12%;left:8%}.home-cloud.hc2{width:100px;height:36px;top:18%;right:12%}.home-tree{position:absolute;bottom:28%;left:50%;transform:translate(-50%);width:24px;height:80px;background:#8b5a2b;border-radius:4px}.home-tree:before{content:"";position:absolute;left:50%;bottom:60px;transform:translate(-50%);width:100px;height:72px;background:#5a9e4b;border-radius:50% 50% 45% 45%}.home-bird{position:absolute;bottom:52%;left:58%;width:16px;height:8px;background:#f4a442;border-radius:50%}.home-content{position:relative;z-index:1;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:14vh;gap:1.25rem}.home-actions{display:flex;flex-direction:column;align-items:center;gap:.85rem;width:100%;max-width:280px}.home-hint{margin:0;font-size:1.25rem;color:#3d4f3a}.home-cta{min-width:200px;padding:1rem 2.5rem;font-size:1.35rem;border:none;border-radius:999px;background:linear-gradient(180deg,#6bc96e,#4a9e4d);color:#fff;box-shadow:0 6px #3d7a40,0 10px 24px #4a9e4d59;cursor:pointer}.home-cta:active{transform:translateY(4px);box-shadow:0 2px #3d7a40}.home-cta-books{background:linear-gradient(180deg,#f4b860,#e89a3c);box-shadow:0 6px #c47a28,0 10px 24px #e89a3c59}.home-cta-books:active{box-shadow:0 2px #c47a28}.storybook-scene{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.storybook-scene.variant-meadow,.storybook-scene.variant-hill,.storybook-scene.variant-story{background:linear-gradient(180deg,#b8e0ff,#dff3ff 48%,#e8f5e0)}.story-cloud{position:absolute;background:#ffffffeb;border-radius:40px;box-shadow:0 4px 12px #fff6}.story-cloud.sc1{width:72px;height:28px;top:10%;left:6%}.story-cloud.sc2{width:96px;height:34px;top:16%;right:8%}.story-cloud.sc3{width:56px;height:22px;top:8%;left:42%;opacity:.85}.story-hill{position:absolute;left:-10%;right:-10%;bottom:0;height:38%;background:radial-gradient(ellipse 120% 100% at 50% 100%,#a8d89a,#8ecf7e 55%,#7bc06a);border-radius:50% 50% 0 0/18% 18% 0 0}.story-sheep{position:absolute;bottom:34%;left:50%;transform:translate(-50%);width:48px;height:40px;background:#faf6f0;border-radius:50% 50% 45% 45%;box-shadow:inset -4px -6px #0000000f}.story-sheep:before{content:"";position:absolute;top:-10px;left:8px;width:14px;height:14px;background:#faf6f0;border-radius:50%;box-shadow:18px 2px #faf6f0}.story-sheep:after{content:"";position:absolute;bottom:-6px;left:10px;width:8px;height:10px;background:#e8dfd0;border-radius:4px;box-shadow:20px 0 #e8dfd0}.book-nav-page{position:relative;min-height:100dvh;padding:env(safe-area-inset-top) 1.25rem calc(2rem + env(safe-area-inset-bottom));overflow:hidden}.book-nav-loading{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;min-height:60dvh;color:#4a6b4a;font-size:1.05rem}.book-nav-back{position:relative;z-index:2;background:#ffffff8c;color:#4a6b4a;border:2px solid rgb(255 255 255 / 80%);border-radius:999px;padding:.45rem 1rem;font-size:.95rem;margin-bottom:.75rem;box-shadow:0 3px #4a6b4a26;cursor:pointer}.book-nav-back:active{transform:translateY(2px);box-shadow:0 1px #4a6b4a26}.book-nav-content{position:relative;z-index:1;max-width:400px;margin-inline:auto}.book-nav-header{text-align:center;margin-bottom:1.75rem}.book-nav-header h1{margin:0 0 .4rem;font-size:1.55rem;color:#3d4f3a;font-weight:700}.book-nav-header p{margin:0;color:#5a7356;font-size:1.05rem}.book-nav-empty{position:relative;z-index:1;text-align:center;color:#5a7356;margin-top:3rem;font-size:1.05rem}.level-path{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.level-path-card{width:100%;display:flex;align-items:center;gap:1rem;padding:1rem 1.15rem;border:3px solid rgb(255 255 255 / 70%);border-radius:20px;background:linear-gradient(145deg,#fffef8,#f5edd8);box-shadow:0 6px #d4c4a8,0 10px 28px #5a46281f;text-align:left;cursor:pointer;transition:transform .12s ease}.level-path-card:active:not(:disabled){transform:translateY(4px);box-shadow:0 2px #d4c4a8}.level-path-card.is-locked{opacity:.5;cursor:not-allowed;filter:saturate(.7)}.level-path-icon{flex-shrink:0;width:52px;height:52px;display:flex;align-items:center;justify-content:center;font-size:1.75rem;background:linear-gradient(180deg,#dff3ff,#c8e8f8);border-radius:50%;border:2px solid rgb(255 255 255 / 90%)}.level-path-body{flex:1;min-width:0}.level-path-name{display:block;font-size:1.2rem;font-weight:700;color:#3d4f3a}.level-path-hint{display:block;margin-top:.2rem;font-size:.9rem;color:#6b8068}.level-stars{display:flex;gap:.25rem;margin-top:.45rem}.level-star{font-size:.95rem;opacity:.28;filter:grayscale(.4)}.level-star.lit{opacity:1;filter:none}.book-shelf{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.9rem}.book-spine{width:100%;display:flex;align-items:stretch;gap:0;padding:0;border:none;border-radius:14px;overflow:hidden;cursor:pointer;box-shadow:0 5px #c4a882,0 8px 20px #3c2d1924;text-align:left;transition:transform .12s ease}.book-spine:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px #c4a882}.book-spine:disabled{opacity:.45;cursor:not-allowed;filter:saturate(.65)}.book-spine-edge{width:14px;flex-shrink:0;background:linear-gradient(90deg,#e8c878,#d4a85a)}.book-spine.state-available .book-spine-edge{background:linear-gradient(90deg,#f4c878,#e8a84a)}.book-spine.state-in_progress .book-spine-edge{background:linear-gradient(90deg,#8ecf7e,#6bb85a)}.book-spine.state-completed .book-spine-edge{background:linear-gradient(90deg,#a8d8ff,#7ec0f0)}.book-spine-body{flex:1;padding:1rem 1.1rem;background:linear-gradient(135deg,#fffef9,#f8f0e0);position:relative}.book-spine-name{display:block;font-size:1.15rem;font-weight:700;color:#3d3528}.book-spine-desc{display:block;margin-top:.15rem;font-size:.85rem;color:#8a7a68}.book-spine-action{display:inline-block;margin-top:.5rem;font-size:.88rem;padding:.25rem .65rem;border-radius:999px;background:#6bc96e2e;color:#3d7a40}.book-spine.state-locked .book-spine-action{background:#0000000f;color:#9a8b7a}.book-spine-sticker{position:absolute;top:.65rem;right:.75rem;font-size:1.35rem}.book-result-page{display:flex;align-items:center;justify-content:center;min-height:100dvh}.book-result-card{position:relative;z-index:1;text-align:center;background:linear-gradient(160deg,#fffef9,#f5edd8);border:3px solid rgb(255 255 255 / 80%);border-radius:24px;padding:2rem 1.35rem;box-shadow:0 8px #d4c4a8,0 16px 40px #3c2d1924;max-width:360px;width:100%}.book-result-emoji{font-size:2.75rem;margin:0 0 .35rem;line-height:1}.book-result-card h1{margin:0 0 .35rem;font-size:1.45rem;color:#3d4f3a}.book-result-sub{margin:0 0 1.25rem;color:#5a7356;font-size:1rem;line-height:1.45}.book-gift-box{margin:0 0 1.25rem;padding:1.1rem 1rem;border-radius:18px;background:linear-gradient(180deg,#e8f8e8,#dff3df);border:2px dashed #a8d8a0}.book-gift-label{margin:0;font-size:1rem;color:#4a7c59}.book-gift-visual{margin:.65rem 0 0;font-size:2rem;letter-spacing:.35rem;animation:gift-sparkle 1.8s ease-in-out infinite}@keyframes gift-sparkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.05)}}.book-discovery-section{text-align:left;margin-bottom:1rem}.book-discovery-section h2{margin:0 0 .5rem;font-size:.92rem;color:#6b8068;font-weight:600}.book-discovery-chips{display:flex;flex-wrap:wrap;gap:.4rem}.book-discovery-chip{display:inline-flex;align-items:center;justify-content:center;min-width:2.1rem;padding:.4rem .55rem;border-radius:10px;font-size:1.15rem;background:#fffef8;border:2px solid #e8dfc8;color:#3d4f3a;box-shadow:0 2px #e0d4bc}.book-discovery-chip.wonder{border-color:#d4e8f8;background:#f0f8ff;color:#5a7a9a}.book-sentence-quote{margin:0;font-size:1.2rem;color:#3d4f3a;line-height:1.5}.book-sentence-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}.book-sentence-list .book-sentence-quote{padding:.45rem .65rem;background:#ffffff8c;border-radius:12px}.book-result-actions{display:flex;flex-direction:column;gap:.65rem;margin-top:.25rem}.book-result-cta{width:100%;padding:.9rem 1rem;font-size:1.15rem;border-radius:999px;border:none;background:linear-gradient(180deg,#6bc96e,#4a9e4d);color:#fff;box-shadow:0 5px #3d7a40;cursor:pointer}.book-result-cta:active{transform:translateY(3px);box-shadow:0 2px #3d7a40}.book-result-secondary{width:100%;padding:.8rem;font-size:1rem;border-radius:999px;background:#ffffff7f;color:#5a7356;border:2px solid #d4e8d0;cursor:pointer}.book-result-secondary:active{transform:scale(.98)}.sentence-read-page{display:flex;flex-direction:column}.sentence-read-content{position:relative;z-index:1;max-width:400px;margin-inline:auto;width:100%}.sentence-friend{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding:.85rem 1rem;background:#ffffff8c;border-radius:18px;border:2px solid rgb(255 255 255 / 75%)}.sentence-friend-avatar{font-size:2rem;line-height:1}.sentence-friend-text{margin:0;font-size:1rem;color:#4a6b4a;line-height:1.4}.sentence-challenge-progress{margin:.35rem 0 0;font-size:.9rem;font-weight:600;color:#6b8f6b}.sentence-challenge-dots{display:flex;justify-content:center;gap:.45rem;margin:.5rem 0 .75rem}.sentence-challenge-dot{width:.55rem;height:.55rem;border-radius:50%;background:#d8e8d0;transition:transform .2s ease,background .2s ease}.sentence-challenge-dot.done{background:#7cb87c}.sentence-challenge-dot.current{background:#4a9a4a;transform:scale(1.35)}.sentence-storybook{background:linear-gradient(160deg,#fffef9,#f8f0e0);border:3px solid #e8dfc8;border-radius:20px 20px 24px 24px;padding:1.35rem 1.15rem 1.5rem;box-shadow:0 8px #d4c4a8,0 14px 32px #3c2d191f;position:relative}.sentence-storybook:before{content:"";position:absolute;top:0;left:12px;right:12px;height:6px;background:repeating-linear-gradient(90deg,#e8dfc8 0,#e8dfc8 8px,transparent 8px,transparent 16px);border-radius:4px;opacity:.6}.sentence-star-row{display:flex;justify-content:center;gap:.35rem;margin-bottom:1rem;min-height:1.5rem}.sentence-star{font-size:1.1rem;opacity:.22;transform:scale(.9);transition:opacity .25s ease,transform .25s ease}.sentence-star.lit{opacity:1;transform:scale(1.1);animation:star-pop .35s ease}@keyframes star-pop{0%{transform:scale(.6)}70%{transform:scale(1.2)}to{transform:scale(1.1)}}.sentence-char-row{display:flex;flex-wrap:wrap;justify-content:center;gap:.55rem;margin-bottom:1.1rem}.sentence-char{min-width:3.1rem;height:3.4rem;font-size:1.8rem;font-weight:600;border-radius:14px;border:2px solid #e8dfc8;background:#fffef8;color:#5a6b58;cursor:default;box-shadow:0 3px #e0d4bc;transition:background .2s,border-color .2s,transform .12s,box-shadow .12s}.sentence-char.discovered{background:linear-gradient(180deg,#fff9e6,#fff3cc);border-color:#f4d878;color:#8a6b20;box-shadow:0 3px #e8c878}.sentence-char.wondering{background:#f5f8fc;border-color:#d4e4f4;color:#7a9ab8;box-shadow:0 3px #c8dce8;animation:cloud-drift 2.5s ease-in-out infinite}@keyframes cloud-drift{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.sentence-char.tappable:not(:disabled){cursor:pointer;border-color:#f4c878}.sentence-char.tappable:not(:disabled):active{transform:translateY(2px);box-shadow:0 1px #e0d4bc}.sentence-read-message{text-align:center;margin:0 0 1.1rem;color:#5a7356;font-size:1rem;min-height:1.5em;line-height:1.4}.sentence-listen-indicator{display:none;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:.85rem;min-height:0}.sentence-listen-indicator.active{display:flex}.sentence-listen-countdown{position:relative;width:52px;height:52px}.sentence-countdown-ring{width:100%;height:100%;transform:rotate(-90deg)}.sentence-countdown-track{fill:none;stroke:#e8dfc8;stroke-width:3}.sentence-countdown-progress{fill:none;stroke:#6bc96e;stroke-width:3;stroke-linecap:round;stroke-dasharray:97.4;transition:stroke-dashoffset .15s linear}.sentence-countdown-num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700;color:#4a7a4a}.sentence-listen-pulse{width:56px;height:56px;border-radius:50%;background:radial-gradient(circle,#ffe8a8,#f4b860 70%);box-shadow:0 0 #f4b8607f;animation:listen-pulse 1.2s ease-in-out infinite;transition:transform .08s ease-out}.sentence-listen-pulse.hearing{background:radial-gradient(circle,#c8f0a8,#6bc96e 70%);animation:listen-pulse-active .6s ease-in-out infinite}@keyframes listen-pulse-active{0%{box-shadow:0 0 #6bc96e8c}70%{box-shadow:0 0 0 16px #6bc96e00}to{box-shadow:0 0 #6bc96e00}}.sentence-mic-meter{display:flex;align-items:flex-end;justify-content:center;gap:4px;height:28px}.sentence-mic-bar{width:6px;height:8px;border-radius:3px;background:#e8dfc8;transition:height .08s ease-out,background .12s ease}.sentence-mic-bar.on{background:linear-gradient(180deg,#8ed490,#4a9e4d);height:calc(10px + var(--bar-index, 0) * 2px)}.sentence-mic-bar:nth-child(1).on{height:10px}.sentence-mic-bar:nth-child(2).on{height:12px}.sentence-mic-bar:nth-child(3).on{height:14px}.sentence-mic-bar:nth-child(4).on{height:16px}.sentence-mic-bar:nth-child(5).on{height:18px}.sentence-mic-bar:nth-child(6).on{height:20px}.sentence-mic-bar:nth-child(7).on{height:22px}.sentence-mic-bar:nth-child(8).on{height:24px}.sentence-model-retry,.sentence-model-status{margin-bottom:1rem}.sentence-model-progress{height:10px;margin-top:.55rem;border-radius:999px;background:#efe6d4;overflow:hidden;box-shadow:inset 0 1px 2px #3c2d1914}.sentence-model-progress-bar{height:100%;border-radius:999px;background:linear-gradient(90deg,#8ed490,#4a9e4d);transition:width .15s ease-out}.sentence-model-hint{margin:0;padding:.65rem .85rem;font-size:.9rem;color:#6a5a48;background:#fff8dcbf;border-radius:12px;text-align:center}.sentence-listen-hint{margin:0;font-size:.82rem;color:#6a8f6a}.sentence-listen-debug{margin:0 0 .85rem;padding:.55rem .75rem;font-size:.78rem;line-height:1.45;color:#6a5a48;background:#fff8dcb3;border:1px dashed #e8c878;border-radius:10px;word-break:break-word}@keyframes listen-pulse{0%{box-shadow:0 0 #f4b8608c;transform:scale(1)}70%{box-shadow:0 0 0 14px #f4b86000;transform:scale(1.05)}to{box-shadow:0 0 #f4b86000;transform:scale(1)}}.sentence-listen-label{font-size:.95rem;color:#8a6b20}.sentence-read-actions{display:flex;flex-direction:column;gap:.55rem}.sentence-done-btn{background:linear-gradient(180deg,#6bc96e,#4a9e4d);box-shadow:0 5px #3d7a40}.sentence-done-btn:active{box-shadow:0 2px #3d7a40}.sentence-listen-btn{width:100%;padding:.95rem;font-size:1.2rem;border:none;border-radius:999px;background:linear-gradient(180deg,#f4b860,#e89a3c);color:#fff;box-shadow:0 5px #c47a28;cursor:pointer}.sentence-listen-btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px #c47a28}.sentence-listen-btn:disabled{opacity:.7}.sentence-tap-btn{width:100%;padding:.75rem;font-size:1rem;border-radius:999px;background:#fff9;color:#5a7356;border:2px solid #e8dfc8;cursor:pointer}.balloon-party{position:relative;min-height:100dvh;background:linear-gradient(180deg,#a8d8ff,#d4ecff 45%,#e8f4e8);overflow:hidden;padding:1rem 1rem 4rem}.sky-decor .cloud{position:absolute;background:#ffffffd9;border-radius:50px;opacity:.9}.sky-decor .c1{width:72px;height:28px;top:8%;left:10%}.sky-decor .c2{width:96px;height:32px;top:14%;right:8%}.sky-decor .c3{width:64px;height:24px;top:22%;left:42%}.balloon-grid{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.25rem 1.5rem;min-height:70dvh;padding-top:2rem}.balloon{position:relative;background:none;border:none;cursor:pointer;padding:0;transform:translate(var(--x-jitter, 0))}.balloon--idle{animation:float 4s ease-in-out infinite;animation-delay:var(--float-delay, 0s)}.balloon--wrong{animation:balloon-shake .48s ease}.balloon--wrong .balloon-body{filter:saturate(.45) brightness(.95);transform:scale(.88,.82);transition:transform .12s ease,filter .12s ease}.balloon--correct{animation:none}.balloon-string{display:block;width:2px;height:48px;margin:0 auto;background:#503c2859}.balloon-body{display:flex;align-items:center;justify-content:center;width:clamp(88px,26vw,120px);height:clamp(104px,30vw,140px);background:radial-gradient(circle at 35% 30%,#fff8,var(--hue) 55%);border-radius:50% 50% 48% 48%;box-shadow:inset -6px -10px 16px #00000014}.balloon-text{font-size:clamp(2rem,10vw,3.5rem);font-weight:700;color:#2c2416;line-height:1}.balloon--correct .balloon-body{animation:fly-away .65s ease forwards}.sparkles{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;background:radial-gradient(circle,#fff9 2px,transparent 3px);background-size:12px 12px;animation:sparkle .5s ease;pointer-events:none}.replay-btn{position:fixed;right:1.25rem;bottom:1.5rem;width:52px;height:52px;border-radius:50%;border:none;background:#ffffffeb;box-shadow:0 4px 12px #2c241626;font-size:1.4rem;cursor:pointer}@keyframes float{0%,to{transform:translate(var(--x-jitter, 0)) translateY(0)}50%{transform:translate(var(--x-jitter, 0)) translateY(-10px)}}@keyframes balloon-shake{0%,to{transform:translate(var(--x-jitter, 0)) rotate(0)}15%{transform:translate(calc(var(--x-jitter, 0px) - 6px)) rotate(-10deg)}30%{transform:translate(calc(var(--x-jitter, 0px) + 6px)) rotate(10deg)}45%{transform:translate(calc(var(--x-jitter, 0px) - 4px)) rotate(-6deg)}60%{transform:translate(calc(var(--x-jitter, 0px) + 4px)) rotate(6deg)}}@keyframes fly-away{to{transform:translateY(-120px) scale(1.1);opacity:0}}@keyframes sparkle{0%{opacity:1}to{opacity:0}}.play-loading,.play-empty{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#d4ecff}.play-page{min-height:100dvh;padding-top:var(--play-padding-top, 2.5rem);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.play-review-hint{text-align:center;margin:0 0 .5rem;font-size:.95rem;color:#4a7c59}.play-wrong-hint{position:fixed;bottom:5.5rem;left:50%;transform:translate(-50%);margin:0;padding:.4rem 1rem;font-size:1rem;color:#6b5c4a;background:#fffc;border-radius:999px;pointer-events:none;animation:hint-fade .48s ease}@keyframes hint-fade{0%{opacity:0;transform:translate(-50%) translateY(6px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.session-progress{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.75rem 1rem;background:linear-gradient(180deg,rgb(255 255 255 / 72%),transparent);pointer-events:none}.session-progress-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;max-width:200px}.session-dot{width:8px;height:8px;border-radius:50%;background:#2c24162e}.session-dot--done{background:#4a9e4d}.session-dot--active{background:#ff6b8a;transform:scale(1.35);box-shadow:0 0 0 2px #ff6b8a59}.session-progress-text{font-size:.85rem;font-weight:600;color:#2c24168c;min-width:3rem;text-align:center}.world-page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:env(safe-area-inset-top) 1rem env(safe-area-inset-bottom);background:linear-gradient(180deg,#a8d4ff,#d8f0d0);overflow:hidden}.tree-scene{position:relative;width:min(100%,420px);min-height:55dvh;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:1rem}.tree-scene--celebrate .tree-scene-tree{animation:tree-celebrate 1s ease}.tree-scene-clouds .tc{position:absolute;background:#ffffffe0;border-radius:40px}.tree-scene-clouds .tc1{width:80px;height:28px;top:8%;left:5%}.tree-scene-clouds .tc2{width:100px;height:32px;top:14%;right:8%}.tree-scene-clouds .tc3{width:70px;height:24px;top:22%;left:40%}.tree-scene-ground{position:absolute;bottom:0;left:-10%;right:-10%;height:18%;background:linear-gradient(180deg,#b8e6a0,#8ecf72);border-radius:50% 50% 0 0}.tree-scene-tree{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center}.tree-scene-trunk{width:28px;background:linear-gradient(90deg,#7a4f28,#9a6535);border-radius:4px;height:56px}.tree-scene-crown{position:relative;width:100px;height:100px;margin-bottom:-10px;background:radial-gradient(circle at 40% 35%,#7bc96f,#4a9e4d 70%);border-radius:50%;transition:width .6s ease,height .6s ease}.tree-scene.stage-1 .tree-scene-crown{width:110px;height:110px}.tree-scene.stage-2 .tree-scene-crown{width:130px;height:118px}.tree-scene.stage-3 .tree-scene-crown,.tree-scene.stage-4 .tree-scene-crown{width:150px;height:130px}.tree-scene.stage-5 .tree-scene-crown,.tree-scene.stage-6 .tree-scene-crown{width:170px;height:145px;background:radial-gradient(circle at 40% 30%,#ffb3d0,#5a9e4d 55%)}.tree-leaf{position:absolute;top:50%;left:50%;width:14px;height:8px;margin:-4px 0 0 -7px;background:#3d8b40;border-radius:50% 0;transform:rotate(var(--leaf-angle, 0deg)) translateY(-42px);opacity:.85}.tree-flower{position:absolute;width:10px;height:10px;background:#ff8ab0;border-radius:50%;top:calc(20% + var(--fi, 0) * 8%);left:calc(25% + (var(--fi, 0) * 13%) % 55%);box-shadow:0 0 0 3px #ffc4d6}.tree-bird{position:absolute;top:-12px;left:calc(30% + var(--bi, 0) * 22%);width:16px;height:8px;background:#f4a442;border-radius:50%;animation:bird-hop 2.2s ease infinite;animation-delay:calc(var(--bi, 0) * .4s)}.tree-scene-whisper{position:relative;z-index:2;margin:1.25rem 0 .25rem;font-size:1.2rem;color:#3d4f3a}.tree-scene-stage{position:relative;z-index:2;margin:0;font-size:.95rem;color:#6b7c68}.world-home-btn{position:relative;z-index:2;margin-top:1.5rem;padding:.75rem 2rem;border:none;border-radius:999px;background:#fff;color:#4a7c59;font-size:1rem;cursor:pointer;box-shadow:0 4px 12px #2c24161a}@keyframes tree-celebrate{0%{transform:scale(.92)}40%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes bird-hop{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}:root{font-family:PingFang SC,Helvetica Neue,sans-serif;line-height:1.5;color:#2c2416;background:#faf6f0}*{box-sizing:border-box}body{margin:0}.parent-shell{min-height:100dvh;background:#faf6f0}.back-home{margin:1rem;background:transparent;border:none;color:#4a7c59;font-size:1rem;cursor:pointer}.parent-page{max-width:480px;margin:0 auto;padding:1.5rem 1rem 3rem}header h1{margin:0 0 .25rem;font-size:1.5rem}.subtitle{margin:0 0 1.5rem;color:#6b5c4a;font-size:.9rem}.card{background:#fff;border-radius:12px;padding:1rem 1.25rem;margin-bottom:1rem;box-shadow:0 2px 8px #2c241614}.card h2{margin:0 0 .75rem;font-size:1rem}.stats ul{margin:0;padding-left:1.25rem}button{background:#4a7c59;color:#fff;border:none;border-radius:8px;padding:.6rem 1rem;font-size:.95rem;cursor:pointer}button:disabled{opacity:.6;cursor:not-allowed}.actions{display:flex;gap:.5rem;margin-top:.75rem}.message{padding:.75rem 1rem;background:#e8f4ea;border-radius:8px;font-size:.9rem}.pack-list{margin:.75rem 0 0;font-size:.85rem;color:#6b5c4a}.pack-update-panel{display:flex;flex-direction:column;gap:.75rem}.pack-update-toolbar{display:flex;flex-direction:column;gap:.5rem}.pack-update-hint{margin:0;font-size:.8rem;color:#9a8b7a;line-height:1.4}.pack-update-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.75rem}.pack-update-row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.75rem;border:1px solid rgb(44 36 22 / 8%);border-radius:10px;background:#faf8f4}.pack-update-meta{display:flex;flex-direction:column;gap:.25rem;min-width:0}.pack-version-badge{display:inline-block;width:fit-content;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600}.pack-version-badge.status-latest{background:#e8f4ea;color:#3d6b4a}.pack-version-badge.status-update_available{background:#fff3d6;color:#9a6b00}.pack-version-badge.status-not_installed{background:#eef2f7;color:#5a6a7a}.pack-version-detail{font-size:.8rem;color:#6b5c4a}.pack-version-error{font-size:.75rem;color:#b54a3a}.pack-update-message{margin:0;padding:.65rem .75rem;background:#e8f4ea;border-radius:8px;font-size:.85rem}button.btn-secondary{background:#fff;color:#4a7c59;border:1px solid #4a7c59;align-self:flex-start}.pack-update-row button{flex-shrink:0;white-space:nowrap;font-size:.85rem;padding:.5rem .75rem}.queue-detail{margin:0;padding-left:0;list-style:none}.queue-detail li{display:flex;align-items:baseline;gap:.5rem;padding:.35rem 0;border-bottom:1px solid rgb(44 36 22 / 6%);font-size:.95rem}.queue-index{color:#9a8b7a;min-width:1.5rem}.queue-meta{margin-left:auto;font-size:.75rem;color:#9a8b7a;text-transform:lowercase}.pack-list-panel{display:flex;flex-direction:column;gap:.75rem}.pack-block{border:1px solid rgb(44 36 22 / 8%);border-radius:10px;padding:.5rem .75rem;background:#faf8f4}.pack-summary{cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:.5rem}.pack-summary::-webkit-details-marker{display:none}.pack-count{font-size:.8rem;font-weight:500;color:#6b5c4a}.pack-stage{margin-top:.75rem}.pack-stage-title{margin:0 0 .5rem;font-size:.85rem;color:#6b5c4a}.pack-stage-meta{font-weight:400;margin-left:.25rem}.char-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(2.75rem,1fr));gap:.4rem}.char-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.35rem .2rem .25rem;border-radius:8px;background:#fff;border:1px solid rgb(44 36 22 / 10%);font-size:1.1rem;line-height:1.1}.char-chip small{font-size:.55rem;color:#9a8b7a;margin-top:2px}.char-chip.state-MASTERED{border-color:#4a9e4d;background:#eef8ef}.char-chip.state-LEARNING{border-color:#ffd166}.pack-empty{margin:0;color:#9a8b7a;font-size:.9rem}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 0;font-size:.95rem;cursor:pointer}.setting-row+.setting-row{border-top:1px solid rgb(44 36 22 / 6%)}.setting-row input{width:1.25rem;height:1.25rem;accent-color:#4a7c59;cursor:pointer}:root{--app-max-width: 100%;--play-padding-top: 2.5rem}@media(min-width:600px){:root{--app-max-width: 520px}.parent-page,.home-content{max-width:var(--app-max-width);margin-left:auto;margin-right:auto}.balloon-grid{gap:1.5rem 2rem;max-width:480px;margin-left:auto;margin-right:auto}.tree-scene{max-width:480px}}@media(min-width:900px){:root{--app-max-width: 640px}.balloon-grid{max-width:560px}}@media(orientation:landscape)and (max-height:520px){:root{--play-padding-top: 2rem}.home-content{justify-content:center;padding-bottom:0}.home-scene .home-tree{bottom:35%}.balloon-party{padding-top:.5rem;padding-bottom:3rem}.balloon-grid{min-height:auto;flex-wrap:nowrap;padding-top:var(--play-padding-top);gap:.75rem 1rem;max-width:100%;overflow-x:auto;justify-content:center;align-items:flex-end;padding-left:1rem;padding-right:1rem}.balloon-body{width:clamp(72px,16vw,96px);height:clamp(86px,20vw,112px)}.balloon-text{font-size:clamp(1.6rem,6vw,2.5rem)}.balloon-string{height:32px}.session-progress{padding:.5rem 1rem}.play-wrong-hint{bottom:4.5rem}.tree-scene{min-height:45dvh}.world-page{flex-direction:row;flex-wrap:wrap;justify-content:center;align-content:center;gap:1rem 2rem}.world-home-btn{margin-top:0;width:100%;max-width:280px}}@media(orientation:landscape)and (min-width:700px)and (min-height:500px){.balloon-grid{flex-wrap:wrap;max-width:720px}.char-grid{grid-template-columns:repeat(auto-fill,minmax(3.25rem,1fr))}}@supports (padding: env(safe-area-inset-top)){.session-progress{padding-top:calc(.75rem + env(safe-area-inset-top))}.parent-page{padding-bottom:env(safe-area-inset-bottom)}.replay-btn{bottom:calc(1.5rem + env(safe-area-inset-bottom));right:calc(1.25rem + env(safe-area-inset-right))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
