.scene-illustrations{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.scene-illustrations.layout-home,.scene-illustrations.layout-meadow,.scene-illustrations.layout-hill,.scene-illustrations.layout-world{background:var(--gradient-sky)}.scene-illustrations.layout-world{background:var(--gradient-world)}.scene-cloud{position:absolute;width:auto;height:auto;opacity:.92;filter:drop-shadow(0 4px 8px rgb(255 255 255 / 35%));animation:scene-float 7s ease-in-out infinite}.scene-cloud--1{width:88px;top:10%;left:6%}.scene-cloud--2{width:110px;top:16%;right:8%;animation-delay:-2.5s}.scene-cloud--3{width:72px;top:8%;left:40%;opacity:.8;animation-delay:-4s}.scene-hill{position:absolute;left:-8%;right:-8%;bottom:0;width:116%;max-width:none;height:auto;object-fit:cover;object-position:bottom}.layout-home .scene-hill{bottom:22%;opacity:.85}.layout-world .scene-hill{bottom:0;height:22%;object-fit:cover}.scene-tree{position:absolute;bottom:26%;left:50%;width:100px;transform:translate(-50%);filter:drop-shadow(0 8px 12px rgb(60 90 50 / 20%))}.layout-world .scene-tree{display:none}.scene-bird{position:absolute;bottom:48%;left:58%;width:28px;animation:bird-hop 2.4s ease-in-out infinite}.scene-sheep{position:absolute;bottom:32%;left:50%;width:56px;transform:translate(-50%);filter:drop-shadow(0 4px 6px rgb(60 45 25 / 12%))}@keyframes scene-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.craft-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:3px solid rgb(255 255 255 / 55%);border-radius:var(--radius-round);font-family:var(--font-family);font-weight:var(--font-weight-strong);cursor:pointer;transition:transform .1s ease,box-shadow .1s ease;-webkit-tap-highlight-color:transparent}.craft-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.craft-btn--md{min-width:7.5rem;padding:.75rem 1.5rem;font-size:var(--font-size-body)}.craft-btn--lg{min-width:11rem;padding:1rem 2.25rem;font-size:var(--font-size-cta)}.craft-btn--full{width:100%}.craft-btn--grass{color:#fff;background:linear-gradient(180deg,var(--color-grass-mid),var(--color-grass-deep));box-shadow:var(--shadow-craft-grass),0 10px 24px #4a9e4d47}.craft-btn--grass:not(:disabled):active{transform:translateY(4px);box-shadow:var(--shadow-craft-grass-press)}.craft-btn--sun{color:#fff;background:linear-gradient(180deg,var(--color-sun),var(--color-sun-mid));box-shadow:var(--shadow-craft-sun),0 10px 24px #e89a3c47}.craft-btn--sun:not(:disabled):active{transform:translateY(4px);box-shadow:var(--shadow-craft-sun-press)}.craft-btn--wood{color:var(--color-ink);background:linear-gradient(180deg,#fffef9,var(--color-parchment-warm));border-color:var(--color-parchment-edge);box-shadow:var(--shadow-craft-paper),0 8px 20px #3c2d191f}.craft-btn--wood:not(:disabled):active{transform:translateY(3px);box-shadow:var(--shadow-craft-paper-press)}.craft-btn--paper{color:var(--color-ink-soft);background:#fffef8b8;border:2px solid var(--color-parchment-edge);box-shadow:0 3px #d4c4a8cc;font-weight:600}.craft-btn--paper:not(:disabled):active{transform:translateY(2px);box-shadow:0 1px #d4c4a8cc}.craft-btn--ghost{color:var(--color-ink-soft);background:#fffef8a6;border:2px solid rgb(255 255 255 / 75%);box-shadow:0 3px #5a6b4a24;font-weight:600;font-size:.9rem;padding:.4rem .85rem;border-radius:var(--radius-pill);min-width:unset}.craft-btn--ghost:not(:disabled):active{transform:translateY(2px);box-shadow:0 1px #5a6b4a24}.story-panel{background:linear-gradient(160deg,var(--color-parchment),var(--color-parchment-warm));border:3px solid rgb(255 255 255 / 75%);border-radius:var(--radius-soft);padding:1rem 1.2rem;margin-bottom:1rem;box-shadow:var(--shadow-craft-paper),0 12px 32px #3c2d1914}.story-panel__title{margin:0 0 .75rem;font-size:1rem;font-weight:var(--font-weight-strong);color:var(--color-ink)}.story-panel--flat{box-shadow:0 4px 0 var(--color-parchment-shadow)}.story-panel--inset{background:#fffef88c;border-style:dashed;border-color:#c8e0b8;box-shadow:none}.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);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}.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:var(--font-size-hint);font-weight:var(--font-weight-strong);color:var(--color-ink);text-shadow:0 1px 0 rgb(255 255 255 / 55%)}.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:var(--color-ink-soft);font-size:1.05rem;font-weight:600}.book-nav-back.craft-btn{position:relative;z-index:2;align-self:flex-start;margin-bottom:.75rem;min-width:unset;padding:.45rem 1rem;font-size:.95rem}.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:var(--color-ink);font-weight:var(--font-weight-strong)}.book-nav-header p{margin:0;color:var(--color-ink-soft);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:var(--radius-round);background:linear-gradient(145deg,var(--color-parchment),var(--color-parchment-warm));box-shadow:var(--shadow-craft-paper),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.story-panel{position:relative;z-index:1;text-align:center;max-width:360px;width:100%;margin-inline:auto;padding:2rem 1.35rem;border-radius:24px}.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:var(--color-ink);font-weight:var(--font-weight-strong)}.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}.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-engine-badge{margin:0 0 .75rem;font-size:.85rem;color:var(--color-ink-muted);text-align:center}.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-row--locked{pointer-events:none;opacity:.92}.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:var(--gradient-play);overflow:hidden;padding:1rem 1rem 4rem}.balloon-grid{position:relative;z-index:1;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;z-index:2;right:1.25rem;bottom:1.5rem;width:52px;height:52px;border-radius:50%;border:2px solid var(--color-parchment-edge);background:var(--color-parchment);box-shadow:0 4px 0 var(--color-parchment-shadow);font-size:1.4rem;cursor:pointer}.replay-btn:active{transform:translateY(2px);box-shadow:0 2px 0 var(--color-parchment-shadow)}@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{position:relative;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;overflow:hidden}.play-loading-text,.play-empty-text{position:relative;z-index:1;margin:0;font-size:var(--font-size-hint);font-weight:var(--font-weight-strong);color:var(--color-ink)}.play-empty .craft-btn{position:relative;z-index:1}.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:var(--color-grass-deep);font-weight:600}.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{position:relative;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);overflow:hidden}.tree-scene{position:relative;z-index:1;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-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;font-weight:var(--font-weight-strong);color:var(--color-ink)}.tree-scene-stage{position:relative;z-index:2;margin:0;font-size:.95rem;color:var(--color-ink-muted)}.world-home-btn{position:relative;z-index:2;margin-top:1.5rem}@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:var(--font-family);line-height:var(--line-height-body);color:var(--color-ink);background:var(--color-cream)}*{box-sizing:border-box}body{margin:0}.parent-shell{min-height:100dvh;background:var(--color-cream)}.back-home{margin:1rem;background:transparent;border:none;color:var(--color-grass-deep);font-size:var(--font-size-body);cursor:pointer;font-weight:600}.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:var(--color-ink-muted);font-size:.9rem}.stats ul{margin:0;padding-left:1.25rem;color:var(--color-ink)}.parent-page button:not(.craft-btn){background:linear-gradient(180deg,var(--color-grass-mid),var(--color-grass-deep));color:#fff;border:2px solid rgb(255 255 255 / 35%);border-radius:var(--radius-soft);padding:.6rem 1rem;font-size:.95rem;font-weight:600;cursor:pointer;box-shadow:0 4px 0 var(--color-grass-shadow)}.parent-page button:not(.craft-btn):active:not(:disabled){transform:translateY(2px);box-shadow:0 2px 0 var(--color-grass-shadow)}.parent-page button:not(.craft-btn):disabled{opacity:.6;cursor:not-allowed}.actions{display:flex;gap:.5rem;margin-top:.75rem}.message{padding:.75rem 1rem;background:#e8f4ea;border-radius:var(--radius-soft);border:2px dashed #b8dcc0;font-size:.9rem;color:var(--color-ink)}.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:2px solid var(--color-parchment-edge);border-radius:var(--radius-soft);background:var(--color-parchment)}.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}.parent-page button.btn-secondary{background:var(--color-parchment);color:var(--color-grass-deep);border:2px solid var(--color-grass-deep);box-shadow:0 3px #3d7a4040;align-self:flex-start}.pack-update-row button{flex-shrink:0;white-space:nowrap;font-size:.85rem;padding:.5rem .75rem}.flashcard-diag-list{margin:.75rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem;font-size:.85rem}.flashcard-diag-list li{padding:.5rem .65rem;border-radius:8px;background:#faf8f4}.flashcard-diag-list .diag-pass{border-left:3px solid #4a7c59}.flashcard-diag-list .diag-fail{border-left:3px solid #c45c4a}.flashcard-diag-list .diag-detail{display:block;margin-top:.2rem;color:#6b5c4a;font-size:.8rem}.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:2px solid var(--color-parchment-edge);border-radius:var(--radius-soft);padding:.5rem .75rem;background:#fffef8b3}.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:10px;background:var(--color-parchment);border:2px solid var(--color-parchment-edge);font-size:1.1rem;line-height:1.1;box-shadow:0 2px 0 var(--color-parchment-shadow)}.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:var(--color-grass-deep);cursor:pointer}.speech-engine-fieldset{margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:.65rem}.speech-engine-option{display:flex;gap:.65rem;align-items:flex-start;padding:.75rem;border:2px solid rgb(44 36 22 / 10%);border-radius:12px;cursor:pointer;background:#ffffff8c}.speech-engine-option.selected{border-color:var(--color-grass-deep);background:#a8d8ff2e}.speech-engine-option input{margin-top:.2rem;accent-color:var(--color-grass-deep)}.speech-engine-option-body{display:flex;flex-direction:column;gap:.25rem;min-width:0}.speech-engine-name{font-weight:700;color:var(--color-ink)}.speech-engine-summary,.speech-engine-free,.speech-engine-note{font-size:.85rem;color:var(--color-ink-muted);line-height:1.4}.speech-engine-docs{font-size:.85rem;color:var(--color-grass-deep);text-decoration:underline;width:fit-content}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.debug-panel details summary{cursor:pointer;font-weight:600;color:var(--color-ink-muted);list-style:none}.debug-panel details summary::-webkit-details-marker{display:none}.debug-panel .task-debug{margin-top:.75rem}:root{--color-sky-top: #b8e0ff;--color-sky-mid: #dff3ff;--color-meadow-top: #e8f5e0;--color-grass: #7bc06a;--color-grass-mid: #6bc96e;--color-grass-deep: #4a9e4d;--color-grass-shadow: #3d7a40;--color-sun: #f4b860;--color-sun-mid: #e89a3c;--color-sun-deep: #c47a28;--color-cream: #faf6f0;--color-parchment: #fffef8;--color-parchment-warm: #f5edd8;--color-parchment-edge: #e8dfc8;--color-parchment-shadow: #d4c4a8;--color-wood: #8b5a2b;--color-wood-deep: #6b4420;--color-wood-light: #c4a882;--color-ink: #3d4f3a;--color-ink-muted: #6b8068;--color-ink-soft: #5a7356;--color-cloud: #ffffff;--gradient-sky: linear-gradient( 180deg, var(--color-sky-top) 0%, var(--color-sky-mid) 50%, var(--color-meadow-top) 100% );--gradient-world: linear-gradient( 180deg, var(--color-sky-top) 0%, #a8d4ff 40%, #d8f0d0 100% );--gradient-play: linear-gradient( 180deg, #a8d8ff 0%, #d4ecff 45%, #e8f4e8 100% );--font-family: "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", sans-serif;--font-size-hint: 1.25rem;--font-size-cta: 1.2rem;--font-size-body: 1rem;--font-weight-strong: 700;--line-height-body: 1.5;--radius-soft: 16px;--radius-round: 20px;--radius-pill: 999px;--shadow-craft-grass: 0 6px 0 var(--color-grass-shadow);--shadow-craft-grass-press: 0 2px 0 var(--color-grass-shadow);--shadow-craft-sun: 0 6px 0 var(--color-sun-deep);--shadow-craft-sun-press: 0 2px 0 var(--color-sun-deep);--shadow-craft-wood: 0 5px 0 var(--color-wood-deep);--shadow-craft-wood-press: 0 2px 0 var(--color-wood-deep);--shadow-craft-paper: 0 6px 0 var(--color-parchment-shadow);--shadow-craft-paper-press: 0 2px 0 var(--color-parchment-shadow);--app-max-width: 480px;--play-padding-top: .5rem}: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}}
