*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{min-height:100%;margin:0}:root{--pink:#ff5fa2;--purple:#8a5cff;--blue:#3fa9ff;--teal:#1fc8b4;--ink:#3b2a5a;--soft:#7a6a99;--card:#fffe;--radius:26px;--shadow:0 10px 30px #6e46aa2e, 0 2px 6px #6e46aa1f}body{color:#3b2a5a;background:0 0;min-height:100%;font-family:"Baloo 2",Nunito,system-ui,sans-serif}#root{width:100%;min-height:100dvh}.app-page{width:100%;min-height:100dvh;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.app-column{flex-direction:column;width:100%;min-height:100dvh;margin:0 auto;display:flex}.app-screen{flex-direction:column;flex:1 0 auto;min-height:100dvh;display:flex}@media (width>=800px){.app-column{max-width:720px}.app-column[data-wide=wide]{max-width:1040px}.app-column[data-wide=hub]{max-width:none}}.practice-topbar{z-index:30;-webkit-backdrop-filter:blur(10px);background:#ffffffbf;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;display:flex;position:sticky;top:0;box-shadow:0 4px 18px #7850b41f}.hub-bar{align-items:center;gap:10px;width:100%;display:flex}.hub-wrap{z-index:1;width:min(1100px,100% - 8px);margin:0 auto;position:relative}.hub-float{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.hub-float span{opacity:.22;border-radius:50%;animation:7s ease-in-out infinite floaty;position:absolute}.hub-float .b1{background:#ff5fa2;width:26px;height:26px;top:22%;left:auto;right:18px}.hub-float .b2{background:#ffd43b;width:16px;height:16px;animation-delay:-2s;top:auto;bottom:18%;left:20px}.hub-float .b3{background:#1fc8b4;width:20px;height:20px;animation-delay:-4s;inset:auto 24px 8% auto}.hub-float .b4{background:#8a5cff;border-radius:4px;width:14px;height:14px;animation-delay:-1s;top:58%;right:12%}.hub-float .b5{background:#3fa9ff;width:12px;height:12px;animation-delay:-3s;top:74%;left:42%}.hub-mascot{width:148px;height:148px;box-shadow:var(--shadow);z-index:2;background:#fff;border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.hub-hero{align-items:center;gap:16px;margin:8px 0 12px;display:flex}.hub-actions{flex-wrap:wrap;gap:10px;margin:0 0 16px;display:flex}.hub-chip{min-height:52px;color:var(--ink);box-shadow:var(--shadow);cursor:pointer;background:#fff;border:4px solid #0000;border-radius:999px;flex:140px;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-family:inherit;font-size:18px;font-weight:800;text-decoration:none;display:inline-flex}.hub-chip-quiet{min-height:44px;color:var(--soft);cursor:pointer;text-underline-offset:3px;background:0 0;border:none;align-items:center;margin:-6px 0 14px;padding:0 2px;font-family:inherit;font-size:15px;font-weight:800;text-decoration:underline;display:inline-flex}.hub-chip:hover{transform:translateY(-3px)rotate(-1deg)}.grownups-link{min-height:44px;color:var(--soft);font:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:none;margin:8px auto 16px;padding:8px 14px;font-size:15px;font-weight:800;text-decoration:underline;display:block}.hud-row{z-index:30;-webkit-backdrop-filter:blur(10px);background:#ffffffd1;flex-wrap:nowrap;align-items:center;gap:6px;padding:8px 10px;display:flex;position:sticky;top:0;box-shadow:0 4px 18px #7850b41f}.hud-row .iconbtn{flex:none;width:40px;min-width:40px;height:40px;min-height:40px}.hud-friend{flex:none;width:40px;height:40px;position:relative}.hud-combo{z-index:2;white-space:nowrap;box-shadow:var(--shadow);background:#fff;border-radius:999px;padding:0 6px;font-size:11px;font-weight:800;line-height:18px;position:absolute;top:-10px;left:18px}.hud-hearts,.hud-coins{min-height:36px;box-shadow:var(--shadow);background:#fff;border-radius:999px;flex:none;align-items:center;gap:3px;padding:0 8px;display:inline-flex}.hud-coins{background:linear-gradient(135deg,#fff6c9,#ffe27a);font-weight:800}.sticker-world{width:100%;min-height:188px;box-shadow:var(--shadow);text-align:left;color:#fff;cursor:pointer;font:inherit;border:5px solid #ffffffe6;border-radius:30px;grid-template-columns:1fr 108px;grid-template-areas:"title art""tag art""play art";align-items:center;gap:4px 10px;padding:16px;display:grid;position:relative;overflow:hidden}.sticker-world:not(:disabled):hover{transform:translateY(-6px)rotate(-1deg)}.sticker-world:disabled{cursor:default;opacity:1}.sticker-soon{border-style:dashed}.sticker-art{border-radius:28px;grid-area:art;justify-self:end;width:108px;height:108px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 6px #ffffffbf,0 8px 16px #50285a2e}.sticker-world h2{color:#fff;text-shadow:0 2px #501e3c2e;grid-area:title;margin:0;font-size:28px;font-weight:800;line-height:1.05}.sticker-tag{color:#fff;grid-area:tag;margin:0;font-size:15px;font-weight:800;line-height:1.3}.sticker-play{grid-area:play;justify-self:start}.soon-badge{color:#5b3cc4;background:#fff;border-radius:999px;margin-top:4px;padding:8px 14px;font-size:15px;font-weight:900;display:inline-block}.keep-going,.keep-going:disabled{opacity:1;color:#fff}.mascot-bob{transform-origin:50% 80%;animation:2.2s ease-in-out infinite bloom}.practice-logo{letter-spacing:.3px;background:linear-gradient(90deg, var(--pink), var(--purple), var(--blue));color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:22px;font-weight:800}.hub-body{padding:8px 16px 20px}.petstage{align-items:center;gap:14px;margin:6px 0 16px;display:flex}.speech{box-shadow:var(--shadow);text-align:left;background:#fff;border-radius:20px;flex:1;padding:12px 16px;font-weight:700;position:relative}.speech:before{content:"";border:8px solid #0000;border-left:0;border-right:12px solid #fff;position:absolute;top:22px;left:-12px}.hub-grid{grid-template-columns:1fr;gap:14px;display:grid}@media (width>=800px){.hub-grid{grid-template-columns:1fr 1fr}}@media (width>=1440px){.hub-grid{grid-template-columns:1fr 1fr 1fr}}.gcard{color:var(--ink);background:var(--card);box-shadow:var(--shadow);text-align:left;width:100%;min-height:168px;font:inherit;cursor:pointer;border:5px solid #0000;border-radius:30px;padding:18px 18px 16px;text-decoration:none;display:block;position:relative;overflow:hidden}.gcard:disabled{opacity:1;color:var(--ink)}.gcard-soon{cursor:not-allowed;background:#f3eefc;border:4px dashed #d9ccff}.gcard-wash{opacity:.55;pointer-events:none;height:64px;position:absolute;top:0;left:0;right:0}.gcard-icon{float:right;z-index:1;border-radius:50%;width:84px;height:84px;margin-left:10px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 7px #ffffffbf}.gcard-icon-practice{background:conic-gradient(#ff5fa2,#ffd43b,#1fc8b4,#3fa9ff,#8a5cff,#ff5fa2);place-items:center;display:grid}.gcard-icon-mark{width:62px;height:62px;color:var(--pink);background:#fff;border-radius:50%;place-items:center;font-size:36px;font-weight:900;line-height:1;display:grid}.gcard h2,.gcard p{z-index:1;position:relative}.gcard h2{margin:.15em 0 .1em;font-size:28px;font-weight:800;line-height:1.1}.gcard-sub{color:var(--soft);margin:0;font-size:16px;font-weight:800;line-height:1.3}.gcard-play{z-index:1;color:#fff;clear:both;white-space:nowrap;border-radius:999px;margin-top:12px;padding:10px 18px;font-family:inherit;font-size:18px;font-weight:900;display:inline-block;position:relative}.chip{box-shadow:var(--shadow);background:#fff;border-radius:999px;align-items:center;gap:6px;min-height:44px;padding:6px 12px;font-weight:800;display:inline-flex}.iconbtn{width:48px;min-width:48px;height:48px;min-height:48px;box-shadow:var(--shadow);cursor:pointer;color:var(--ink);font:inherit;background:#fff;border:none;border-radius:50%;place-items:center;padding:0;font-weight:800;display:grid}.progress-pill{background:#e5dcff;border-radius:99px;flex:auto;min-width:48px;height:18px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffffd9}.progress-pill>i{background:linear-gradient(90deg, var(--teal), var(--blue));border-radius:99px;height:100%;display:block}.qcard{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px 14px}.sticker-card{box-shadow:var(--shadow);text-align:center;background:#fff;border-radius:24px;padding:14px 10px}.sticker-card[data-earned=false]{background:#f1ecf9}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pop{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes wiggle{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-7px)}75%{transform:translate(7px)}}.anim-floaty{animation:3.4s ease-in-out infinite floaty}.anim-pop{animation:.45s cubic-bezier(.2,.8,.3,1.2) both pop}.anim-fade-up{animation:.5s cubic-bezier(.2,.7,.3,1) both fadeUp}.anim-fade-screen{animation:.32s cubic-bezier(.2,.7,.3,1) both fadeUp}.anim-sheet-up{animation:.32s cubic-bezier(.2,.8,.2,1) both sheetUp}.anim-fade-in{animation:.2s both fadeIn}.anim-shake{animation:.45s both shake}.anim-wiggle{animation:1.5s ease-in-out infinite wiggle}.pressable{transition:transform .12s,filter .12s}.pressable:active:not(:disabled){transform:translateY(6px)scale(.98)}@keyframes bloom{0%,to{transform:rotate(-2deg)scale(1)}50%{transform:rotate(2deg)scale(1.05)}}@keyframes celebrate-pop{0%{transform:scale(.92)}45%{transform:scale(1.12)}to{transform:scale(1)}}.anim-bloom{transform-origin:50% 80%;animation:3.4s ease-in-out infinite bloom}.anim-celebrate{transform-origin:50% 80%;animation:.7s celebrate-pop}@keyframes coin-pop{0%{transform:scale(1)}40%{transform:scale(1.18)}to{transform:scale(1)}}.coin-pop{animation:.35s coin-pop}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)rotate(0)}to{opacity:0;transform:translateY(220px)rotate(160deg)}}.confetti{pointer-events:none;z-index:4;position:absolute;inset:0;overflow:hidden}.confetti__bit{border-radius:3px;width:8px;height:12px;animation:.95s ease-in forwards confetti-fall;position:absolute;top:8px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes petal-fly{0%{opacity:1;transform:translate(0)scale(1)rotate(0)}to{transform:translate(var(--dx,24px), var(--dy,-36px)) scale(.4) rotate(50deg);opacity:0}}.petal-fly{pointer-events:none;border-radius:70% 70% 50% 50%;width:14%;height:22%;animation:.9s ease-out both petal-fly;position:absolute}@keyframes star-pop{0%{transform:translate(-50%, -50%) rotate(var(--rot,0deg)) translateY(0) scale(.2);opacity:0}40%{opacity:1}to{transform:translate(-50%, -50%) rotate(var(--rot,0deg)) translateY(-70px) scale(1);opacity:0}}.star-burst{pointer-events:none;z-index:6;position:absolute;inset:0;overflow:hidden}.star-burst span{clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);width:14px;height:14px;animation:.8s ease-out both star-pop;position:absolute;top:42%;left:50%}@keyframes sticker-pop{0%{opacity:0;transform:scale(.4)rotate(-8deg)}70%{transform:scale(1.08)rotate(2deg)}to{opacity:1;transform:scale(1)rotate(0)}}.sticker-pop{animation:.45s cubic-bezier(.2,.8,.3,1.2) both sticker-pop}@keyframes island-bob{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(-6px)}}.island-bob{animation:3.2s ease-in-out infinite island-bob}.answer-bubble{position:relative}.answer-bubble:after{content:"";pointer-events:none;background:#ffffff8c;border-radius:50%;width:22%;height:22%;position:absolute;top:14%;left:16%}@keyframes bubbleIn{0%{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}.answer-bubble-in{animation:.45s cubic-bezier(.2,1.7,.4,1) both bubbleIn}@keyframes scene-twinkle{0%,to{opacity:.28}50%{opacity:1}}@keyframes scene-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes scene-sway{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}@keyframes scene-flicker{0%,to{opacity:.72}50%{opacity:1}}.scene-twinkle{animation:2.2s ease-in-out infinite scene-twinkle}.scene-float{transform-box:fill-box;transform-origin:50%;animation:3.2s ease-in-out infinite scene-float}.scene-sway{transform-box:fill-box;transform-origin:top;animation:3.4s ease-in-out infinite scene-sway}.scene-flicker{animation:.7s ease-in-out infinite scene-flicker}@media (prefers-reduced-motion:reduce){.anim-floaty,.anim-pop,.anim-fade-up,.anim-fade-screen,.anim-sheet-up,.anim-fade-in,.anim-shake,.anim-wiggle,.anim-bloom,.anim-celebrate,.mascot-bob,.hub-float span,.sticker-world,.petal-fly,.star-burst span,.sticker-pop,.island-bob,.answer-bubble-in,.scene-twinkle,.scene-float,.scene-sway,.scene-flicker{opacity:1!important;animation:none!important;transform:none!important}*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.tabbar{z-index:40;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:#fffdfa;border-top:1.5px solid #f0ddcb;justify-content:space-around;align-items:flex-end;display:flex;position:sticky;bottom:0;box-shadow:0 -8px 24px -16px #783c2880}.tab{cursor:pointer;color:#9c8278;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:4px 0;font-family:Fredoka,system-ui,sans-serif;font-size:11px;font-weight:600;display:flex}.tab .glyph{border-radius:12px;place-items:center;width:30px;height:30px;transition:all .15s;display:grid}.tab.active{color:#cb7261}.tab.active .glyph{background:#fce3db;transform:translateY(-2px)}
