@font-face{font-family:Fredoka;src:url(../assets/fonts/fredoka.woff2) format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:Baloo;src:url(../assets/fonts/baloo.woff2) format('woff2');font-weight:800;font-display:swap}
:root{--sat:max(env(safe-area-inset-top),14px);--sab:max(env(safe-area-inset-bottom),10px);--navy:#0d2f86;--ink:#16388f;--blue:#1d6fff;--blue2:#0b55e0;--sky:#dff2ff;--pink:#ff3f8e;--green:#22c35e;--yellow:#ffc21a;--purple:#8b4dff;--orange:#ff8a1a;
 --spring:cubic-bezier(.2,.9,.25,1.25);--ease:cubic-bezier(.22,.9,.24,1);
 --sh1:0 1px 2px rgba(20,60,150,.10),0 6px 16px -6px rgba(20,60,150,.25);
 --sh2:0 2px 4px rgba(20,60,150,.10),0 16px 32px -12px rgba(20,60,150,.38);
 --sh3:0 4px 10px rgba(10,40,120,.18),0 26px 50px -18px rgba(10,40,120,.5)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:#0c2a6b;font-family:Fredoka,Baloo,ui-rounded,system-ui,sans-serif;color:var(--navy);-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:manipulation}
img[height]{height:auto}
img{-webkit-user-drag:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
button{font:inherit;color:inherit;border:0;background:none;padding:0;margin:0;cursor:pointer}
#device{position:fixed;inset:0}
#app{position:absolute;inset:0;overflow:hidden;background:#eaf6ff;isolation:isolate;user-select:none;-webkit-user-select:none}
body.framed{background:radial-gradient(1200px 800px at 30% 20%,#2c7cff 0%,#1240a8 45%,#0a1f5c 100%)}
body.framed #device{inset:auto;left:50%;top:50%;width:390px;height:844px;transform:translate(-50%,-50%) scale(var(--fs,1));border-radius:60px;background:#0b1224;box-shadow:0 0 0 2px #46557a,0 0 0 11px #121a30,0 0 0 13px #56658c,0 50px 100px -20px rgba(0,0,0,.65)}
body.framed #app{inset:0;border-radius:56px;--sat:50px;--sab:22px}
body.framed .deskhint{display:block}
.deskhint{display:none;position:fixed;left:50%;bottom:14px;transform:translateX(-50%);color:#cfe2ff;font-size:13px;opacity:.75;font-weight:500;letter-spacing:.2px}
#statusbar{display:none;position:absolute;left:0;right:0;top:0;height:50px;z-index:900;pointer-events:none;padding:16px 30px 0 40px;justify-content:space-between;font-weight:600;font-size:16px;color:#0b1d45;transition:color .3s}
body.framed #statusbar{display:flex}
#statusbar.dark{color:#fff}
#statusbar .isl{position:absolute;left:50%;top:11px;width:122px;height:35px;border-radius:20px;background:#000;transform:translateX(-50%)}
#statusbar .sbi{display:flex;gap:6px;align-items:center}
#statusbar svg{height:12px;fill:currentColor}
#homeind{display:none;position:absolute;left:50%;bottom:8px;width:136px;height:5px;border-radius:3px;background:rgba(10,20,50,.85);transform:translateX(-50%);z-index:900;pointer-events:none}
body.framed #homeind{display:block}
#stage{position:absolute;inset:0}
.screen{position:absolute;inset:0;overflow:hidden;background:#eaf6ff;contain:layout paint;will-change:transform}
.scroll{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none;padding:calc(var(--sat) + 6px) 16px calc(var(--sab) + 112px)}
.scroll::-webkit-scrollbar{display:none}
.hscroll{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 -16px;padding:4px 16px 14px;scroll-padding:16px}
.hscroll::-webkit-scrollbar{display:none}
.hscroll>*{scroll-snap-align:start;flex:none}
.abs{position:absolute}
.spr{display:block;width:100%;height:auto;pointer-events:none}
/* sky background for tab pages */
.sky{position:absolute;inset:0;background:linear-gradient(180deg,#a9dcff 0%,#d4efff 22%,#f1f9ff 48%,#ffffff 100%);z-index:-1;overflow:hidden}
.sky .cl{position:absolute;opacity:.9;animation:drift 38s linear infinite alternate;will-change:transform}
.sky .cl.b{animation-duration:52s;opacity:.7}
@keyframes drift{from{transform:translateX(-28px)}to{transform:translateX(28px)}}
/* press feedback */
.press{transition:transform .22s var(--spring),filter .2s;will-change:transform}
.press.down{transform:scale(.93)!important;filter:brightness(.96);transition-duration:.08s}
/* typography */
.h1{font-weight:700;font-size:30px;line-height:1;color:#1b63ef;letter-spacing:-.3px;text-shadow:0 2px 0 #fff,2px 0 0 #fff,-2px 0 0 #fff,0 -2px 0 #fff,2px 2px 0 #fff,-2px 2px 0 #fff,0 6px 12px rgba(20,70,180,.28)}
.sect{display:flex;align-items:center;justify-content:space-between;margin:22px 2px 10px}
.sect h2{margin:0;font-size:22px;font-weight:700;color:var(--navy);letter-spacing:-.2px}
.sect .more{display:flex;align-items:center;gap:2px;color:var(--blue);font-weight:600;font-size:15px}
.sect .more svg{width:20px;height:20px}
.card{background:#fff;border-radius:24px;box-shadow:inset 0 1px 0 #fff,var(--sh1),0 0 0 1px rgba(120,170,240,.18)}
.glass{background:rgba(255,255,255,.78);backdrop-filter:blur(18px) saturate(1.6);-webkit-backdrop-filter:blur(18px) saturate(1.6)}
/* tabbar */
#tabbar{position:absolute;left:12px;right:12px;bottom:calc(var(--sab) + 6px);height:76px;z-index:500;display:flex;align-items:stretch;padding:0 6px;transition:transform .45s var(--ease),opacity .3s}
#tabbar .tabglass{position:absolute;inset:0;border-radius:30px;background:rgba(255,255,255,.86);backdrop-filter:blur(20px) saturate(1.8);-webkit-backdrop-filter:blur(20px) saturate(1.8);box-shadow:0 0 0 1px rgba(140,180,240,.28),0 18px 34px -14px rgba(20,60,150,.45),inset 0 1px 0 #fff}
#tabbar.hide{transform:translateY(150%);opacity:0;pointer-events:none}
.tab{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-weight:600;font-size:12.5px;color:#8792ad;transition:color .25s}
.tab .ti{width:36px;height:36px;object-fit:contain;filter:grayscale(1) brightness(1.18) contrast(.9);opacity:.62;transition:filter .3s,opacity .3s,transform .35s var(--spring)}
.tab .tglow{position:absolute;top:8px;left:50%;width:54px;height:42px;margin-left:-27px;border-radius:18px;background:radial-gradient(closest-side,rgba(60,150,255,.30),rgba(60,150,255,0));opacity:0;transform:scale(.6);transition:opacity .3s,transform .4s var(--spring)}
.tab.on{color:var(--blue)}
.tab.on .ti{filter:none;opacity:1;transform:translateY(-1px) scale(1.08)}
.tab.on .tglow{opacity:1;transform:none}
.tab b{font-weight:600}
/* generic buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:56px;padding:0 26px;border-radius:28px;font-weight:700;font-size:20px;color:#fff;letter-spacing:.2px;position:relative}
.btn.y{background:linear-gradient(180deg,#ffd84a 0%,#ffb800 55%,#ff9d00 100%);box-shadow:inset 0 2px 0 rgba(255,255,255,.65),inset 0 -4px 0 rgba(200,90,0,.35),0 6px 0 #e07f00,0 14px 24px -8px rgba(230,120,0,.6);text-shadow:0 2px 0 rgba(190,90,0,.45)}
.btn.b{background:linear-gradient(180deg,#5bb4ff 0%,#1d78ff 55%,#0b5be6 100%);box-shadow:inset 0 2px 0 rgba(255,255,255,.55),inset 0 -4px 0 rgba(0,40,150,.3),0 6px 0 #0646c0,0 14px 24px -8px rgba(10,80,220,.6);text-shadow:0 2px 0 rgba(0,40,140,.4)}
.btn.g{background:linear-gradient(180deg,#7ee87a 0%,#2fc153 60%,#1aa242 100%);box-shadow:inset 0 2px 0 rgba(255,255,255,.55),inset 0 -4px 0 rgba(0,90,30,.3),0 6px 0 #138a37,0 14px 24px -8px rgba(20,150,60,.6);text-shadow:0 2px 0 rgba(0,90,30,.4)}
.btn.w{background:linear-gradient(180deg,#fff,#eef5ff);color:var(--blue);box-shadow:inset 0 -3px 0 rgba(60,110,200,.14),0 5px 0 #c9dbf6,0 12px 20px -8px rgba(20,60,150,.35)}
.btn.sm{height:44px;font-size:17px;padding:0 18px;border-radius:22px}
.btn::after{content:'';position:absolute;left:14%;right:14%;top:5px;height:36%;border-radius:20px;background:linear-gradient(rgba(255,255,255,.55),rgba(255,255,255,0));pointer-events:none}
.btn.w::after{display:none}
.btn svg{width:24px;height:24px}
.round{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--blue);box-shadow:inset 0 -3px 0 rgba(60,110,200,.14),0 4px 0 #cddcf3,0 10px 18px -8px rgba(20,60,150,.4)}
.round svg{width:24px;height:24px}
.round.blue{background:linear-gradient(#4aa8ff,#1567f2);color:#fff;box-shadow:inset 0 2px 0 rgba(255,255,255,.5),0 4px 0 #0a4cc4,0 10px 18px -8px rgba(10,70,200,.6)}
.backbtn{position:absolute;left:14px;top:calc(var(--sat) + 6px);z-index:40}
/* pills */
.starpill{display:inline-flex;align-items:center;gap:4px;height:40px;padding:0 14px 0 6px;border-radius:20px;background:#fff;box-shadow:var(--sh1),0 0 0 1px rgba(120,170,240,.2);font-weight:700;font-size:18px;color:var(--navy)}
.starpill img{width:30px;height:30px;object-fit:contain;margin-top:-2px}
/* ---------- HOME ---------- */
.home-top{display:flex;align-items:center;justify-content:space-between;height:74px;margin:0 -4px 6px}
.home-top .logo{height:70px;width:auto;filter:drop-shadow(0 6px 10px rgba(20,70,180,.22));transform-origin:left center}
.home-top .right{display:flex;align-items:center;gap:8px}
.avbtn{width:50px;height:50px;border-radius:50%;position:relative}
.avbtn img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 6px 8px rgba(200,120,0,.35))}
.hero{position:relative;height:196px;border-radius:30px;overflow:hidden;box-shadow:var(--sh2),0 0 0 3px #fff;background:#9fd6ff}
.hero .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 64%;transform:scale(1.04)}
.hero .shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.0) 0%,rgba(255,255,255,0) 60%),linear-gradient(0deg,rgba(0,40,120,.18),rgba(0,0,0,0) 50%)}
.hero .ban{position:absolute;left:8px;top:14px;width:62%;filter:drop-shadow(0 10px 14px rgba(0,50,160,.35))}
.hero .peng{position:absolute;right:-6px;bottom:-14px;height:206px;width:auto;filter:drop-shadow(0 12px 14px rgba(0,40,120,.35));transform-origin:50% 100%;animation:sway 4.6s ease-in-out infinite}
.hero .go{position:absolute;left:16px;bottom:14px;display:flex;align-items:center;gap:8px;height:46px;padding:0 8px 0 18px;border-radius:24px;background:rgba(255,255,255,.92);font-weight:700;font-size:17px;color:var(--blue);box-shadow:0 8px 18px -8px rgba(0,40,130,.5)}
.hero .go img{width:34px;height:34px}
@keyframes sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2.2deg) translateY(-4px)}}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:18px}
.tile{display:flex;flex-direction:column;align-items:center;gap:4px;font-weight:700;font-size:15px;color:var(--navy)}
.tile img{width:80px;height:80px;object-fit:contain;filter:drop-shadow(0 10px 10px rgba(30,60,160,.22))}
.pcard{width:158px;border-radius:24px;overflow:hidden;box-shadow:var(--sh2),0 0 0 3px #fff;position:relative;background:#fff}
.pcard img{display:block;width:100%;height:auto}
.pcard .lab{position:absolute;left:0;right:0;bottom:0;height:23%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;font-size:15px;text-shadow:0 2px 0 rgba(0,0,0,.18)}
.ncard{width:112px;display:flex;flex-direction:column;align-items:center;gap:6px;font-weight:600;font-size:14px;color:var(--navy);text-align:center;line-height:1.1}
.ncard .im{width:112px;height:112px;border-radius:26px;overflow:hidden;box-shadow:var(--sh2),0 0 0 3px #fff;background:#fff}
.ncard .im img{width:100%;height:100%;object-fit:cover}
.ncard .new{position:absolute}
.streak{display:flex;align-items:center;gap:12px;padding:14px 16px;margin-top:6px}
.streak img.f{width:50px;height:50px;object-fit:contain}
.streak .t{flex:1}
.streak .t b{display:block;font-size:18px;font-weight:700}
.streak .t span{font-size:14px;color:#5c6f9e;font-weight:500}
.goalbar{height:12px;border-radius:8px;background:#e6efff;margin-top:8px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(20,60,150,.15)}
.goalbar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#3ad46a,#9cf06b);box-shadow:inset 0 2px 0 rgba(255,255,255,.5);transition:width .8s var(--ease)}
/* ---------- GAMES ---------- */
.g-top{position:relative;height:132px;margin:0 -6px}
.g-top .tt{position:absolute;left:0;top:26px;width:58%;filter:drop-shadow(0 8px 12px rgba(20,70,180,.25))}
.g-top .pg{position:absolute;right:-6px;top:-6px;height:150px;width:auto;filter:drop-shadow(0 12px 14px rgba(0,40,120,.3));animation:sway 5s ease-in-out infinite;transform-origin:50% 100%}
.cats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:6px}
.cat{position:relative;border-radius:22px;transition:transform .3s var(--spring),filter .3s}
.cat img{width:100%;height:auto;filter:drop-shadow(0 8px 10px rgba(30,60,160,.2))}
.cat.on{transform:translateY(-4px) scale(1.04)}
.cat.on::after{content:'';position:absolute;left:30%;right:30%;bottom:-8px;height:5px;border-radius:3px;background:var(--blue)}
.cats.f .cat:not(.on){filter:saturate(.5) opacity(.7)}
.feat{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.fcard{position:relative;border-radius:22px;transition:transform .35s var(--spring),filter .35s,opacity .35s}
.fcard img{width:100%;height:auto;filter:drop-shadow(0 10px 12px rgba(30,60,160,.28))}
.fcard .fav{position:absolute;right:6px;top:6px;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.9);display:grid;place-items:center;color:#c7cfe2;box-shadow:0 3px 8px rgba(0,0,0,.18)}
.fcard .fav svg{width:16px;height:16px}
.fcard .fav.on{color:#ff3f7a}
.dim{filter:grayscale(.85) opacity(.4)!important;transform:scale(.96)!important}
.mcard{width:106px;transition:transform .35s var(--spring),filter .35s}
.mcard img{width:100%;height:auto;filter:drop-shadow(0 10px 12px rgba(30,60,160,.22))}
/* ---------- PROFILE ---------- */
.p-top{position:relative;height:96px;margin:0 -6px}
.p-top .tt{position:absolute;left:0;top:8px;width:72%;filter:drop-shadow(0 8px 12px rgba(20,70,180,.22))}
.p-top .av{position:absolute;right:2px;top:6px;width:78px}
.p-id{display:flex;gap:12px;align-items:center;margin-top:4px}
.p-id .big{width:140px;flex:none;position:relative}
.p-id .big img.a{width:140px;height:140px;object-fit:contain;filter:drop-shadow(0 10px 16px rgba(20,70,180,.3))}
.p-id .big .ed{position:absolute;right:0;bottom:4px;width:44px;height:44px}
.p-id .nm{flex:1;min-width:0}
.p-id .nm b{display:block;font-size:30px;line-height:1.02;font-weight:700;color:#1048c8;letter-spacing:-.4px;text-shadow:0 2px 0 #fff,0 4px 10px rgba(20,70,180,.2);overflow-wrap:anywhere}
.p-id .nm span{display:block;font-size:16px;font-weight:600;color:#2d5bd6;margin-top:4px}
.xp{display:flex;align-items:center;gap:10px;padding:10px 14px 10px 10px;margin-top:10px;border-radius:30px}
.xp img{width:56px;height:56px}
.xp .t{flex:1}
.xp b{font-size:18px;font-weight:700;color:var(--navy)}
.xp .bar{height:14px;border-radius:8px;background:#e5edfb;margin:6px 0 4px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(20,60,150,.18)}
.xp .bar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#1b86ff,#45b6ff);box-shadow:inset 0 3px 0 rgba(255,255,255,.35);width:0;transition:width 1.1s var(--ease)}
.xp small{font-size:15px;font-weight:600;color:#2b5fd8}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.stat{display:flex;flex-direction:column;align-items:center;padding:12px 2px 10px;border-radius:22px;text-align:center}
.stat img{width:46px;height:46px;object-fit:contain;margin-bottom:2px}
.stat b{font-size:28px;font-weight:700;line-height:1;color:var(--navy)}
.stat span{font-size:12.5px;font-weight:600;color:#2a5ad0;line-height:1.1;margin-top:3px}
.strk{display:flex;align-items:center;gap:10px;padding:12px 12px 12px 14px;margin-top:12px;border-radius:26px}
.strk img.f{width:54px;height:54px}
.strk .t{flex:1}
.strk .t small{display:block;font-size:16px;font-weight:700;color:#164bc4}
.strk .t b{font-size:28px;font-weight:700;color:var(--navy);line-height:1.05}
.strk .k{display:flex;align-items:center;gap:6px;padding:10px 12px;border-radius:18px;background:#eef5ff;box-shadow:inset 0 0 0 1.5px #d4e3fb;font-weight:600;color:#1a5be0;font-size:14px}
.strk .k img{width:30px;height:30px}
.favs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.favs img{width:100%;height:auto;filter:drop-shadow(0 8px 10px rgba(30,60,160,.18))}
.pzone{display:block;margin-top:14px;position:relative}
.pzone img{width:100%;height:auto;filter:drop-shadow(0 12px 14px rgba(10,70,200,.3))}
.deco{position:absolute;pointer-events:none}
.tw{animation:twinkle 2.6s ease-in-out infinite}
@keyframes twinkle{0%,100%{transform:scale(.8) rotate(0);opacity:.7}50%{transform:scale(1.12) rotate(14deg);opacity:1}}
.flt{animation:floaty 4s ease-in-out infinite}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.bob{animation:bob 3.2s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(2deg)}}
.flap{animation:flap 3.4s ease-in-out infinite}
@keyframes flap{0%,100%{transform:translate(0,0) rotate(-6deg)}25%{transform:translate(-10px,-12px) rotate(4deg) scaleX(.86)}50%{transform:translate(-18px,-2px) rotate(-2deg)}75%{transform:translate(-6px,8px) rotate(5deg) scaleX(.9)}}
/* ---------- generic page header ---------- */
.ph{display:flex;align-items:center;gap:12px;height:64px;margin-bottom:6px}
.ph .h1{flex:1}
.ph img{height:58px;width:auto}
/* library */
.sgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.scover{position:relative;display:block;aspect-ratio:.82;border-radius:26px;overflow:hidden;box-shadow:var(--sh2),0 0 0 3px #fff;text-align:left;background:#9fd6ff}
.scover .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.scover .lab{position:absolute;left:0;right:0;bottom:0;padding:26px 12px 11px;background:linear-gradient(rgba(10,40,120,0),rgba(10,40,120,.82));color:#fff}
.scover .lab b{display:block;font-size:16px;font-weight:700;line-height:1.1}
.scover .lab span{font-size:12px;opacity:.9;font-weight:500}
.scover .done{position:absolute;right:8px;top:8px;display:flex;gap:3px;align-items:center;font-size:12px;font-weight:700;background:#2fc153;color:#fff;border-radius:12px;padding:4px 8px}
.feature-story{position:relative;display:block;width:100%;height:188px;border-radius:28px;overflow:hidden;box-shadow:var(--sh2),0 0 0 3px #fff;text-align:left;margin-bottom:6px}
.feature-story .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.feature-story .lab{position:absolute;left:16px;bottom:16px;color:#fff;max-width:56%}
.feature-story .lab small{display:inline-block;background:#ff3f8e;padding:3px 10px;border-radius:10px;font-weight:700;font-size:12px;margin-bottom:6px}
.feature-story .lab b{display:block;font-size:22px;line-height:1.05;font-weight:700;text-shadow:0 2px 8px rgba(0,20,80,.5)}
.story{background:#0e2f7a}
.story .page{position:absolute;inset:0;will-change:transform,opacity;backface-visibility:hidden}
.story .ill{position:absolute;left:0;right:0;top:0;height:66%;overflow:hidden;border-radius:0 0 34px 34px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.story .ill .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.story .txt{position:absolute;left:16px;right:16px;bottom:calc(var(--sab) + 92px);min-height:132px;padding:18px 18px;border-radius:26px;background:#fff;box-shadow:var(--sh2);font-weight:600;font-size:21px;line-height:1.38;color:var(--navy);text-align:center;display:flex;flex-wrap:wrap;align-content:center;justify-content:center}
.story .txt .w{display:inline-block;margin:0 .13em;transition:color .2s,transform .2s}
.story .txt .w.hl{color:var(--pink);transform:translateY(-3px) scale(1.07)}
.story .nav{position:absolute;left:16px;right:16px;bottom:calc(var(--sab) + 18px);display:flex;align-items:center;justify-content:space-between;z-index:5}
.pdots{display:flex;gap:6px}
.pdots i{width:9px;height:9px;border-radius:5px;background:rgba(255,255,255,.45);transition:all .35s var(--spring)}
.pdots i.on{width:26px;background:#fff}
.story .readbtn{position:absolute;right:14px;top:calc(var(--sat) + 6px);z-index:40}
/* create */
.tools{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tool{position:relative;height:150px;border-radius:28px;padding:14px;text-align:left;overflow:hidden;color:#fff;box-shadow:var(--sh2)}
.tool b{position:relative;z-index:2;display:block;font-size:21px;font-weight:700;text-shadow:0 2px 0 rgba(0,0,0,.14)}
.tool span{position:relative;z-index:2;font-size:13px;font-weight:500;opacity:.95}
.tool img{position:absolute;right:-8px;bottom:-8px;width:104px;height:104px;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(0,0,0,.25));transition:transform .4s var(--spring)}
.tool::before{content:'';position:absolute;left:-30%;top:-60%;width:90%;height:120%;background:radial-gradient(closest-side,rgba(255,255,255,.35),rgba(255,255,255,0));pointer-events:none}
.tool.c1{background:linear-gradient(150deg,#ffb0d6,#ff4f9a)}
.tool.c2{background:linear-gradient(150deg,#8fd0ff,#1f7bff)}
.tool.c3{background:linear-gradient(150deg,#ffe07a,#ff9f0f)}
.tool.c4{background:linear-gradient(150deg,#8ef0a6,#1fb85a)}
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.gal .it{aspect-ratio:1;border-radius:20px;overflow:hidden;background:#fff;box-shadow:var(--sh1),0 0 0 3px #fff}
.gal .it img{width:100%;height:100%;object-fit:cover}
.empty{padding:22px;text-align:center;color:#6a7ca6;font-weight:500;font-size:15px}
.empty img{width:90px;display:block;margin:0 auto 6px}
/* rewards */
.bgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.badge{padding:14px 6px 12px;text-align:center;border-radius:22px}
.badge .ic{width:62px;height:62px;margin:0 auto 6px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 50% 35%,#fff7cf,#ffd85a);box-shadow:inset 0 -4px 0 rgba(200,120,0,.25),0 6px 12px -4px rgba(200,120,0,.5)}
.badge .ic img{width:44px;height:44px;object-fit:contain}
.badge.lock .ic{background:#edf1f8;box-shadow:inset 0 2px 4px rgba(0,0,0,.08)}
.badge.lock .ic img{filter:grayscale(1) opacity(.45)}
.badge b{display:block;font-size:14px;font-weight:700;line-height:1.1}
.badge span{font-size:11.5px;color:#6a7ca6;font-weight:500;line-height:1.1;display:block;margin-top:2px}
/* parent */
.set{display:flex;align-items:center;gap:12px;padding:14px;margin-bottom:10px}
.set img{width:40px;height:40px;object-fit:contain}
.set .t{flex:1}.set .t b{display:block;font-size:16px;font-weight:600}.set .t span{font-size:13px;color:#6a7ca6}
.sw{width:54px;height:32px;border-radius:16px;background:#d8e0ee;position:relative;transition:background .25s;flex:none}
.sw::after{content:'';position:absolute;left:3px;top:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 3px 8px rgba(0,0,0,.25);transition:transform .3s var(--spring)}
.sw.on{background:#34c759}.sw.on::after{transform:translateX(22px)}
.seg{display:flex;background:#eef2fa;border-radius:14px;padding:3px;gap:2px}
.seg button{flex:1;height:32px;border-radius:11px;font-weight:600;font-size:13px;color:#5a6b92;padding:0 8px}
.seg button.on{background:#fff;color:var(--blue);box-shadow:0 2px 6px rgba(20,60,150,.18)}
.chart{display:flex;align-items:flex-end;gap:10px;height:120px;padding:10px 6px 0}
.chart .c{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:11px;color:#6a7ca6;font-weight:600}
.chart .c i{display:block;width:100%;border-radius:8px 8px 4px 4px;background:linear-gradient(#5ab6ff,#1d6fff);min-height:6px;transform-origin:bottom;animation:grow .8s var(--ease) backwards}
@keyframes grow{from{transform:scaleY(0)}}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);text-align:center;padding:12px 0 4px}
.kpis b{display:block;font-size:22px;font-weight:700}.kpis span{font-size:12px;color:#6a7ca6}
.inp{width:100%;height:52px;border-radius:16px;border:2px solid #d5e2f7;padding:0 16px;font:600 19px Fredoka,system-ui;color:var(--navy);background:#fff;outline:none;transition:border-color .2s,box-shadow .2s}
.inp:focus{border-color:#4a9bff;box-shadow:0 0 0 4px rgba(74,155,255,.18)}
/* ---------- overlays ---------- */
#overlay{position:absolute;inset:0;z-index:800;pointer-events:none}
#overlay>*{pointer-events:auto}
.toast{position:absolute;left:50%;top:calc(var(--sat) + 8px);display:flex;align-items:center;gap:8px;padding:10px 18px 10px 10px;border-radius:24px;background:rgba(255,255,255,.95);box-shadow:var(--sh3);font-weight:600;font-size:15px;white-space:nowrap;pointer-events:none!important}
.toast img{width:30px;height:30px;object-fit:contain}
.modal-wrap{position:absolute;inset:0;display:grid;place-items:center;padding:20px}
.modal-dim{position:absolute;inset:0;background:rgba(8,24,70,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.modal{position:relative;width:100%;max-width:340px;border-radius:34px;padding:22px 20px 20px;text-align:center;background:#fff;box-shadow:var(--sh3)}
.modal h3{margin:4px 0 6px;font-size:28px;font-weight:700;color:#1b63ef}
.modal p{margin:0 0 14px;color:#5a6b92;font-weight:500;font-size:16px}
.modal .row{display:flex;gap:10px;justify-content:center;margin-top:12px}
.win .rays{position:absolute;left:50%;top:-40px;width:420px;height:420px;margin-left:-210px;background:repeating-conic-gradient(from 0deg,rgba(255,214,80,.32) 0 10deg,rgba(255,214,80,0) 10deg 22deg);border-radius:50%;mask:radial-gradient(closest-side,#000 30%,transparent 72%);-webkit-mask:radial-gradient(closest-side,#000 30%,transparent 72%);animation:spin 18s linear infinite;pointer-events:none;z-index:-1}
@keyframes spin{to{transform:rotate(360deg)}}
.stars3{display:flex;justify-content:center;align-items:flex-end;gap:2px;margin-top:-62px;height:110px}
.stars3 img{width:84px;height:84px;object-fit:contain;filter:drop-shadow(0 8px 10px rgba(200,120,0,.4))}
.stars3 img:nth-child(2){width:108px;height:108px;margin-bottom:12px}
.stars3 img.off{filter:grayscale(1) brightness(1.5) opacity(.45)}
.win .mascot{width:120px;margin:-6px auto -4px;display:block}
.gate .q{font-size:34px;font-weight:700;margin:8px 0 12px;color:var(--navy)}
.gate .opts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gate .opts button{height:54px;border-radius:16px;background:#eef4ff;font-size:22px;font-weight:700;color:var(--blue);box-shadow:inset 0 -3px 0 #d3e1fa}
#fx{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:950}
/* splash */
#splash{position:absolute;inset:0;z-index:1000;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,#bfe6ff,#56aaff 70%,#2a7cf0);transition:opacity .5s,visibility .5s}
#splash.hide{opacity:0;visibility:hidden}
#splash img{width:72%;max-width:300px;animation:splashPop .9s var(--spring) both,floaty 3s 1s ease-in-out infinite;filter:drop-shadow(0 16px 24px rgba(0,40,140,.4))}
#splash .ld{position:absolute;bottom:18%;width:120px;height:8px;border-radius:5px;background:rgba(255,255,255,.35);overflow:hidden}
#splash .ld i{display:block;height:100%;width:0;background:#fff;border-radius:5px;transition:width .3s}
@keyframes splashPop{0%{transform:scale(.5) rotate(-8deg);opacity:0}100%{transform:none;opacity:1}}
/* ---------- ONBOARDING ---------- */
.ob{background:#9fd8ff}
.ob .track{position:absolute;inset:0;display:flex;will-change:transform;touch-action:pan-y}
.ob .slide{position:relative;flex:none;width:100%;height:100%;overflow:hidden}
.ob .slide .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ob .skip{position:absolute;right:16px;top:calc(var(--sat) + 8px);z-index:20;height:36px;padding:0 16px;border-radius:18px;background:rgba(255,255,255,.75);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-weight:600;color:var(--blue);font-size:15px}
.ob .bottom{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 22px);display:flex;flex-direction:column;align-items:center;gap:16px;z-index:20}
.ob .cta{width:min(320px,82%);height:auto;filter:drop-shadow(0 12px 18px rgba(200,110,0,.45))}
.ob .ctabtn{position:relative;width:min(340px,86%)}
.ob .slide .wl{position:absolute;inset:auto;overflow:hidden}
.ob .wl>img{position:absolute;display:block;height:auto;max-width:none;user-select:none;-webkit-user-drag:none}
.ob .wl .wbg{left:0;top:0;width:100%;height:100%}
.ob .wl-logo{filter:drop-shadow(0 8px 14px rgba(0,50,140,.25));animation:wlpop .9s cubic-bezier(.2,.9,.25,1.25) both .15s,wlfloat 4s ease-in-out 1.1s infinite}
.ob .wl-bfly{animation:wlfly 5s ease-in-out infinite;transform-origin:50% 60%}
.ob .wl-tw{position:absolute;width:14px;height:14px;margin:-7px;background:#fff;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);filter:drop-shadow(0 0 4px #fff59a);animation:g2tw 2.4s ease-in-out infinite}
@keyframes wlpop{0%{opacity:0;transform:translateY(-30px) scale(.6)}100%{opacity:1;transform:none}}
@keyframes wlfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes wlfly{0%,100%{transform:translate(0,0) rotate(-4deg) scaleX(1)}25%{transform:translate(-10px,-12px) rotate(4deg) scaleX(.82)}50%{transform:translate(-4px,-22px) rotate(-2deg) scaleX(1)}75%{transform:translate(8px,-10px) rotate(5deg) scaleX(.85)}}
@keyframes g2tw{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}
.ob .dots{display:flex;gap:10px}
.ob .dots i{width:14px;height:14px;border-radius:50%;background:rgba(255,255,255,.6);box-shadow:inset 0 0 0 2px rgba(80,120,80,.35);transition:all .35s var(--spring)}
.ob .dots i.on{width:34px;border-radius:8px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.ob .cap{position:absolute;left:24px;right:24px;text-align:center;z-index:10}
.ob .cap b{display:block;font-size:30px;line-height:1.05;font-weight:700;color:#fff;text-shadow:0 3px 0 rgba(10,60,170,.55),0 6px 16px rgba(0,30,110,.4)}
.ob .cap span{display:block;margin-top:8px;font-size:17px;font-weight:600;color:#fff;text-shadow:0 2px 8px rgba(0,30,110,.6)}
.ob .el{position:absolute;will-change:transform}
.setup{position:absolute;left:16px;right:16px;bottom:calc(var(--sab) + 18px);border-radius:32px;padding:20px 18px 18px;z-index:30;background:rgba(255,255,255,.94);box-shadow:var(--sh3)}
.setup h3{margin:0 0 12px;font-size:24px;font-weight:700;color:#1b63ef;text-align:center}
.setup label{display:block;font-size:14px;font-weight:600;color:#5a6b92;margin:12px 4px 6px}
.avs{display:flex;gap:8px;justify-content:space-between}
.avs button{width:58px;height:58px;border-radius:50%;transition:transform .3s var(--spring),box-shadow .2s}
.avs button img{width:100%;height:100%;object-fit:contain}
.avs button.on{transform:scale(1.12);box-shadow:0 0 0 4px #1d6fff,0 8px 16px -4px rgba(20,90,230,.5)}
.ages{display:flex;gap:6px}
.ages button{flex:1;height:44px;border-radius:14px;background:#eef4ff;font-weight:700;font-size:19px;color:#3a63c2;box-shadow:inset 0 -3px 0 #d6e3fa;transition:all .2s}
.ages button.on{background:linear-gradient(#4aa8ff,#1567f2);color:#fff;box-shadow:inset 0 -3px 0 rgba(0,40,150,.35),0 6px 12px -4px rgba(20,90,230,.6)}
/* ---------- GAME SHELL ---------- */
.game{background:#7cc8ff}
.game>.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.hud{position:absolute;left:12px;right:12px;top:calc(var(--sat) + 4px);height:56px;display:flex;align-items:center;gap:8px;z-index:30}
.hud .pause{width:54px;height:54px;flex:none}
.hud .pause img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 6px rgba(0,40,140,.35))}
.hbar{position:relative;flex:1;height:40px;border-radius:22px;background:linear-gradient(#0e5ad6,#0b48b8);box-shadow:inset 0 3px 6px rgba(0,0,0,.25),0 0 0 3px #bfe3ff,0 0 0 4.5px #5fb2ff,0 6px 12px -4px rgba(0,40,140,.5);margin-left:18px}
.hbar .fill{position:absolute;left:24px;top:7px;bottom:7px;width:0;max-width:calc(100% - 82px);border-radius:14px;background:linear-gradient(#8af36b,#38cf3f 55%,#21a92d);box-shadow:inset 0 3px 0 rgba(255,255,255,.55);transition:width .6s var(--spring)}
.hbar .ic{position:absolute;left:-22px;top:50%;width:52px;height:52px;margin-top:-26px;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(0,30,100,.35));z-index:2}
.hbar .n{position:absolute;right:12px;top:0;bottom:0;display:flex;align-items:center;color:#fff;font-weight:700;font-size:19px;text-shadow:0 2px 0 rgba(0,0,0,.25)}
.hstar{position:relative;flex:none;height:40px;min-width:92px;border-radius:22px;background:linear-gradient(#0e5ad6,#0b48b8);box-shadow:inset 0 3px 6px rgba(0,0,0,.25),0 0 0 3px #bfe3ff,0 0 0 4.5px #5fb2ff,0 6px 12px -4px rgba(0,40,140,.5);margin-left:20px;display:flex;align-items:center;justify-content:flex-end;padding:0 14px 0 34px;color:#fff;font-weight:700;font-size:20px;text-shadow:0 2px 0 rgba(0,0,0,.25)}
.hstar img{position:absolute;left:-22px;top:50%;width:52px;height:52px;margin-top:-28px;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(0,30,100,.35))}
.bump{animation:bump .45s var(--spring)}
@keyframes bump{35%{transform:scale(1.22)}}
.gtitle{position:absolute;left:50%;top:calc(var(--sat) + 64px);width:86%;max-width:380px;transform:translateX(-50%);z-index:20;filter:drop-shadow(0 8px 12px rgba(0,50,150,.25))}
.ctitle{position:absolute;left:50%;top:calc(var(--sat) + 62px);width:88%;max-width:370px;transform:translateX(-50%);z-index:20;filter:drop-shadow(0 8px 12px rgba(0,50,150,.25))}
.ctitle img{width:100%;display:block}
.ctitle .tx{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:4px}
.ctitle b{font-weight:700;font-size:34px;line-height:1;color:#1b63ef;text-shadow:0 2px 0 #fff,0 4px 0 #0c3fae22}
.ctitle span{font-weight:600;font-size:15px;color:#1846b8;margin-top:3px}
.ans{position:relative;display:block;width:100%;transition:transform .25s var(--spring),filter .2s}
.ans img{width:100%;height:auto;display:block;filter:drop-shadow(0 8px 8px rgba(0,40,120,.25))}
.ans b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding-bottom:6%;font-family:Baloo,Fredoka;font-weight:800;font-size:46px;color:#fff;-webkit-text-stroke:0;text-shadow:0 3px 0 var(--sc,#b0144f),0 -1px 0 var(--sc,#b0144f),2px 0 0 var(--sc,#b0144f),-2px 0 0 var(--sc,#b0144f),0 6px 8px rgba(0,0,0,.18)}
.ans.ok{animation:okpop .55s var(--spring)}
.ans.bad{animation:shake .45s}
.ans:disabled{cursor:default}
@keyframes okpop{40%{transform:scale(1.12)}}
@keyframes shake{20%{transform:translateX(-10px) rotate(-3deg)}40%{transform:translateX(9px) rotate(3deg)}60%{transform:translateX(-6px)}80%{transform:translateX(4px)}}
.agrid{position:absolute;left:14px;right:14px;bottom:calc(var(--sab) + 14px);display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;z-index:20}
.bubble{position:absolute;z-index:22;padding:10px 16px;border-radius:22px;background:#fff;font-weight:700;color:#1b55d8;font-size:17px;box-shadow:0 0 0 3px #bfe2ff,var(--sh2);white-space:nowrap;transform-origin:0 100%}
.bubble::after{content:'';position:absolute;left:18px;bottom:-12px;border:8px solid transparent;border-top:12px solid #fff;border-bottom:0}
/* math */
.mstage{position:absolute;left:50%;width:min(100%,430px);transform:translateX(-50%);z-index:12}
.mstage img{width:100%;display:block;filter:drop-shadow(0 12px 16px rgba(0,40,100,.3))}
.eq{position:absolute;left:21%;right:21%;top:66%;height:24%;display:flex;align-items:center;justify-content:center;gap:2px;font-family:Baloo,Fredoka;font-weight:800;font-size:50px;color:#1650d6;text-shadow:0 3px 0 #0b3a9e,0 6px 10px rgba(10,50,150,.25);letter-spacing:1px;white-space:nowrap}
.eq .q{color:#ff9a1a;text-shadow:0 3px 0 #c45f00}
.eq .q.done{color:#22b04b;text-shadow:0 3px 0 #127a30}
.leaf{position:absolute;z-index:14;pointer-events:none}
/* count */
.cbox{position:absolute;left:12px;right:12px;z-index:12}
.cbox>img{width:100%;display:block;filter:drop-shadow(0 12px 16px rgba(0,40,100,.25))}
.cbox .items{position:absolute;left:12%;right:12%;top:16%;bottom:16%}
.cbox .items img{position:absolute;object-fit:contain;filter:drop-shadow(0 4px 4px rgba(0,30,90,.25));animation:popIn .5s var(--spring) backwards}
@keyframes popIn{from{opacity:0;transform:scale(.3) translateY(18px)}}
.qtext{position:absolute;left:0;right:0;text-align:center;z-index:13;font-weight:700;font-size:24px;color:#fff;text-shadow:0 3px 0 #0b46b8,0 0 12px rgba(0,40,140,.45)}
/* memory */
.mgrid{position:absolute;left:12px;right:12px;display:grid;gap:9px;z-index:12;perspective:900px}
.mc{position:relative;aspect-ratio:1;transform-style:preserve-3d;transition:transform .5s var(--spring)}
.mc .f,.mc .b{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:18%}
.mc .b img,.mc .f img.card{width:100%;height:100%;display:block;object-fit:contain;filter:drop-shadow(0 6px 6px rgba(0,50,40,.25))}
.mc .f{transform:rotateY(180deg)}
.mc .f img.an{position:absolute;left:10%;top:10%;width:80%;height:80%;object-fit:contain}
.mc .f img.glow{position:absolute;left:-7%;top:-7%;width:114%;height:114%;opacity:0;transition:opacity .3s;pointer-events:none}
.mc.open{transform:rotateY(180deg)}
.mc.done .f img.glow{opacity:1}
.mc.done{animation:matchPop .6s var(--spring)}
@keyframes matchPop{0%{transform:rotateY(180deg)}40%{transform:rotateY(180deg) scale(1.12)}100%{transform:rotateY(180deg)}}
.iconrow{position:absolute;left:0;right:0;display:flex;justify-content:center;gap:12px;z-index:12}
.iconrow img{width:44px;height:44px;object-fit:contain}
/* color */
.cpage{position:absolute;left:14px;right:14px;z-index:12;border-radius:30px;background:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.7),var(--sh3);overflow:hidden;display:grid;place-items:center}
.cpage canvas{display:block;max-width:100%;max-height:100%;touch-action:none}
.cpage .hint{position:absolute;right:10px;top:10px;width:64px;height:64px;border-radius:18px;background:#fff;box-shadow:var(--sh1),0 0 0 2px #e3edfb;padding:4px}
.cpage .hint img{width:100%;height:100%;object-fit:contain}
.pbar{position:absolute;left:10px;right:10px;bottom:calc(var(--sab) + 12px);height:84px;z-index:20;border-radius:42px;background:linear-gradient(#f1f9ff,#d7edff);box-shadow:inset 0 2px 0 #fff,0 0 0 3px #bfe0ff,0 0 0 5px #8cc7ff,var(--sh2);display:flex;align-items:center;padding:0 6px;gap:4px}
.pbar .tool{all:unset}
.pbar .tb{width:70px;height:70px;flex:none;border-radius:50%;transition:transform .25s var(--spring)}
.pbar .tb img{width:100%;height:100%;object-fit:contain}
.pbar .tb.on{transform:scale(1.06)}
.pbar .tb.on::after{content:'';position:absolute}
.pbar .dots{flex:1;height:64px;border-radius:32px;background:#fff;box-shadow:inset 0 2px 6px rgba(40,100,190,.18);display:flex;align-items:center;justify-content:space-around;padding:0 4px;min-width:0}
.dot{position:relative;width:34px;height:34px;border-radius:50%;flex:none;background:radial-gradient(circle at 34% 28%,rgba(255,255,255,.9) 0 9%,rgba(255,255,255,0) 30%),radial-gradient(circle at 50% 60%,var(--c),color-mix(in srgb,var(--c) 70%,#000) 100%);box-shadow:inset 0 -3px 4px rgba(0,0,0,.18),0 3px 5px rgba(0,0,0,.18);transition:transform .25s var(--spring)}
.dot.on{transform:scale(1.25)}
.dot.on::before{content:'';position:absolute;inset:-7px;border-radius:50%;border:3px dashed #ffb300;animation:spin 6s linear infinite}
.tb.on{filter:drop-shadow(0 0 6px rgba(80,160,255,.8))}
.page-sel{position:absolute;left:0;right:0;display:flex;justify-content:center;gap:8px;z-index:19}
.page-sel button{width:46px;height:46px;border-radius:14px;background:#fff;box-shadow:var(--sh1);padding:3px;overflow:hidden}
.page-sel button img{width:100%;height:100%;object-fit:contain}
.page-sel button.on{box-shadow:0 0 0 3px #1d6fff,var(--sh1)}
/* space */
.spc canvas{position:absolute;inset:0;width:100%;height:100%;z-index:5}
.spc .joy{position:absolute;left:18px;bottom:calc(var(--sab) + 18px);width:136px;height:136px;z-index:20;touch-action:none}
.spc .joy img{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 8px 10px rgba(0,0,0,.35))}
.spc .joy .knob{position:absolute;left:50%;top:50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fff,#d6e7ff 70%,#a9c8f5);box-shadow:0 4px 8px rgba(0,30,90,.45);pointer-events:none}
.spc .boost{position:absolute;right:18px;bottom:calc(var(--sab) + 26px);width:118px;height:118px;z-index:20}
.spc .boost img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 8px 10px rgba(0,0,0,.35))}
.spc .boost.on{transform:scale(.92)}
.spc .hearts{position:absolute;left:16px;top:calc(var(--sat) + 66px);display:flex;gap:4px;z-index:30}
.spc .hearts img{width:28px;height:28px;transition:all .3s}
.spc .hearts img.off{filter:grayscale(1) opacity(.35);transform:scale(.8)}
/* intro */
.intro .ttl{position:absolute;left:50%;top:calc(var(--sat) + 70px);width:88%;max-width:380px;transform:translateX(-50%);z-index:10}
.intro .mascot{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:62%;max-width:280px;z-index:10;filter:drop-shadow(0 18px 20px rgba(0,30,90,.35))}
.intro .mascot img{width:100%;display:block}
.intro .how{position:absolute;left:24px;right:24px;bottom:calc(var(--sab) + 230px);text-align:center;color:#fff;font-weight:600;font-size:18px;text-shadow:0 2px 8px rgba(0,30,100,.65);z-index:10}
.playbtn{position:absolute;left:50%;bottom:calc(var(--sab) + 92px);width:118px;height:118px;margin-left:-59px;border-radius:50%;z-index:12;background:radial-gradient(circle at 50% 30%,#ffe36b,#ffb400 60%,#ff9600);box-shadow:inset 0 4px 0 rgba(255,255,255,.6),inset 0 -6px 0 rgba(190,90,0,.35),0 0 0 7px #fff,0 0 0 10px #ffd34a,0 16px 30px -6px rgba(200,100,0,.6);display:grid;place-items:center}
.playbtn svg{width:56px;height:56px;margin-left:8px;filter:drop-shadow(0 3px 0 rgba(190,90,0,.5))}
.playbtn::before,.playbtn::after{content:'';position:absolute;inset:-10px;border-radius:50%;border:4px solid rgba(255,220,90,.85);animation:ring 2s ease-out infinite;pointer-events:none}
.playbtn::after{animation-delay:1s}
.playbtn .b{animation:breathe 1.8s ease-in-out infinite}
@keyframes ring{0%{transform:scale(1);opacity:.9}100%{transform:scale(1.6);opacity:0}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
.lvls{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 24px);display:flex;justify-content:center;gap:10px;z-index:12}
.lvls button{width:58px;height:50px;border-radius:16px;background:rgba(255,255,255,.92);box-shadow:var(--sh1);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700;color:var(--blue);font-size:18px;line-height:1}
.lvls button small{font-size:10px;letter-spacing:1px;color:#ffb000}
.lvls button.on{background:linear-gradient(#4aa8ff,#1567f2);color:#fff;box-shadow:0 6px 14px -4px rgba(20,90,230,.6)}
.lvls button.lock{opacity:.6}
.lvls button.lock svg{width:18px;height:18px;color:#8a99bb}
/* draw */
.drawc{position:absolute;left:12px;right:12px;top:calc(var(--sat) + 64px);bottom:calc(var(--sab) + 104px);border-radius:28px;background:#fff;box-shadow:var(--sh2),0 0 0 4px #fff;overflow:hidden;z-index:5}
.drawc canvas{width:100%;height:100%;display:block;touch-action:none}
.topbar{position:absolute;left:12px;right:12px;top:calc(var(--sat) + 4px);height:52px;display:flex;align-items:center;gap:8px;z-index:30}
.topbar .sp{flex:1}
.topbar .ttl{flex:1;text-align:center;font-weight:700;font-size:21px;color:var(--navy)}
.sizes{position:absolute;right:20px;top:calc(var(--sat) + 80px);display:flex;flex-direction:column;gap:8px;z-index:8}
.sizes button{width:40px;height:40px;border-radius:50%;background:#f1f6ff;display:grid;place-items:center;box-shadow:var(--sh1)}
.sizes button i{display:block;border-radius:50%;background:var(--navy)}
.sizes button.on{box-shadow:0 0 0 3px #1d6fff}
/* stickers & craft */
.stage2{position:absolute;left:12px;right:12px;top:calc(var(--sat) + 64px);bottom:calc(var(--sab) + 128px);border-radius:28px;overflow:hidden;box-shadow:var(--sh2),0 0 0 4px #fff;z-index:5;background:#9fd6ff}
.stage2 .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.stk{position:absolute;touch-action:none;transform-origin:center;filter:drop-shadow(0 8px 8px rgba(0,30,80,.3))}
.stk.sel{outline:3px dashed rgba(255,255,255,.95);outline-offset:4px;border-radius:12px}
.tray{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 12px);z-index:20}
.tray .hscroll{margin:0;padding:6px 12px 10px}
.tray button.it{width:76px;height:76px;border-radius:22px;background:#fff;box-shadow:var(--sh1);padding:8px}
.tray button.it img{width:100%;height:100%;object-fit:contain}
.tray button.it.on{box-shadow:0 0 0 3px #1d6fff,var(--sh1)}
.ctrls{position:absolute;left:50%;top:10px;transform:translateX(-50%);display:flex;gap:8px;z-index:10}
.ctrls .round{width:40px;height:40px}
.segtabs{display:flex;gap:6px;justify-content:center;margin-bottom:6px}
.segtabs button{height:34px;padding:0 14px;border-radius:17px;background:rgba(255,255,255,.85);font-weight:600;color:#4a5f92;font-size:14px;box-shadow:var(--sh1)}
.segtabs button.on{background:var(--blue);color:#fff}
.balloon{position:absolute;left:50%;top:10%;width:62%;transform:translateX(-50%);transition:transform .6s var(--spring)}
.balloon .env{width:100%;display:block;transition:filter .4s}
.balloon .rp{position:absolute;top:84%;width:7%}
.balloon .bk{position:absolute;left:24%;width:52%;top:118%}
.balloon .fr{position:absolute;left:30%;width:40%;top:92%}
@media (max-height:700px){.hero{height:170px}.hero .peng{height:180px}.tile img{width:70px;height:70px}.gtitle,.ctitle{top:calc(var(--sat) + 58px)}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
/* ---------- v2 additions ---------- */
.ob .walk>img{animation:waddle 1.1s ease-in-out infinite;transform-origin:50% 100%;filter:drop-shadow(0 18px 14px rgba(20,60,20,.35))}
@keyframes waddle{0%,100%{transform:rotate(-3deg) translateY(0)}25%{transform:rotate(0) translateY(-7px)}50%{transform:rotate(3deg) translateY(0)}75%{transform:rotate(0) translateY(-7px)}}
.ob .el .spr{filter:drop-shadow(0 10px 12px rgba(0,40,100,.22))}
.ob .ctabtn .btn{height:62px;font-size:22px;border-radius:31px}
.mmb{position:absolute;inset:3%;border-radius:20%;background:radial-gradient(circle at 50% 35%,#a98bff,#6a3df0 70%,#5226d6);box-shadow:inset 0 3px 0 rgba(255,255,255,.45),inset 0 -5px 0 rgba(40,0,120,.35),0 0 0 3px #fff,0 6px 10px rgba(40,20,120,.35);display:grid;place-items:center}
.mmb img{width:52%;height:52%;object-fit:contain;filter:drop-shadow(0 3px 3px rgba(60,0,120,.35))}
.mmf{position:absolute;inset:3%;border-radius:20%;background:#fff;box-shadow:0 0 0 3px #d9c9ff,0 6px 10px rgba(40,20,120,.3);display:grid;place-items:center;overflow:hidden}
.mmf img{width:100%;height:100%;object-fit:cover}
.mc .f img.an{filter:drop-shadow(0 4px 4px rgba(0,40,80,.25))}
.mc{display:block;padding:0}
.pzb{position:absolute;z-index:12;border-radius:22px;background:rgba(255,255,255,.55);box-shadow:0 0 0 5px rgba(255,255,255,.85),var(--sh3);overflow:hidden}
.pt{position:absolute;left:0;top:0;border-radius:10px;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.9);transition:transform .38s var(--spring),box-shadow .25s,filter .25s;will-change:transform}
.pt.sel{z-index:3;box-shadow:inset 0 0 0 4px #ffc21a,0 10px 20px rgba(0,0,0,.35);filter:brightness(1.08)}
.pt.ok{box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.pzb.solved .pt{border-radius:0;box-shadow:none}
.pzb.solved{animation:okpop .6s var(--spring)}
.pzref{position:absolute;z-index:12;width:95px;height:86px;border-radius:18px;background:#fff;padding:5px;box-shadow:var(--sh2)}
.pzref img{width:100%;height:100%;object-fit:cover;border-radius:13px}
.pzref span{position:absolute;left:50%;bottom:-10px;transform:translateX(-50%);background:#1d6fff;color:#fff;font-weight:700;font-size:12px;padding:2px 10px;border-radius:10px}
.pbar .dots{overflow-x:auto;justify-content:flex-start;gap:9px;padding:0 12px;scrollbar-width:none;scroll-snap-type:x proximity}
.pbar .dots::-webkit-scrollbar{display:none}
.pbar .dots .dot{scroll-snap-align:center}
.pbar .tb{position:relative}
.cpage{padding:8px}
.cpage canvas{border-radius:22px}
.page-sel{align-items:center}
.cbox .items img{transform:rotate(var(--r,0deg))}
.shb:disabled{filter:grayscale(.8)}
.intro .ctitle{top:calc(var(--sat) + 70px)}
.intro .mascot .bob img{width:100%;display:block}
.g-space .hbar .ic{transform:rotate(-45deg)}
.winm{overflow:visible}
.winm .row .round{width:52px;height:52px}
.ncard span{display:block}
.tile span{font-weight:700}
.feature-story .abs,.scover .abs{z-index:1}
.scover .lab,.feature-story .lab{z-index:2}
.story .ill .abs{z-index:1}
.hero{display:block;width:100%;text-align:left}
.pcard{display:block;flex:none}
.cat,.fcard,.mcard{display:block}
.favs button{display:block}
.p-top .av{display:block}
.backbtn{z-index:60}
.hero{height:214px}.hero .ban{width:52%;left:10px;top:10px}.hero .peng{height:212px;bottom:-12px}
@media (max-height:700px){.hero{height:184px}.hero .ban{width:48%}.hero .peng{height:184px}}
.balloon{left:19%;transform:none}
.slot svg{width:100%;height:100%;display:block}
/* ---------- responsive device modes ---------- */
body.scaled .screen{will-change:auto}
body.column{background:#3d8fe6}
body.column::before{content:'';position:fixed;inset:-30px;background:url(../assets/bg/meadow.webp) center/cover;filter:blur(22px) saturate(1.2) brightness(.92);transform:scale(1.05)}
body.column #device{box-shadow:0 0 0 1px rgba(255,255,255,.25),0 30px 80px rgba(0,30,90,.45);overflow:hidden}
body.column #app{border-radius:0}
.rotate{display:none;position:fixed;inset:0;z-index:2000;background:rgba(10,40,120,.82);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#fff;align-items:center;justify-content:center;flex-direction:column;gap:12px;font:700 22px Fredoka,system-ui;text-align:center;padding:24px}
.rotate img{width:120px;animation:bob 2.4s ease-in-out infinite}
.rotate button{margin-top:6px;height:44px;padding:0 22px;border-radius:22px;background:#fff;color:#1d6fff;font:700 16px Fredoka,system-ui}
body.landphone:not(.rot-ok) .rotate{display:flex}
html.dev-tablet .tab b{font-size:13.5px}
.agrid,.shopts{left:max(14px,calc(50% - 220px))!important;right:max(14px,calc(50% - 220px))!important}
.cbox{left:max(12px,calc(50% - 240px));right:max(12px,calc(50% - 240px))}
.pbar{left:max(10px,calc(50% - 260px));right:max(10px,calc(50% - 260px))}
.agrid,.shopts{left:max(14px,calc(50% - 220px))!important;right:max(14px,calc(50% - 220px))!important}
.cbox{left:max(12px,calc(50% - 240px));right:max(12px,calc(50% - 240px))}
.pbar{left:max(10px,calc(50% - 260px));right:max(10px,calc(50% - 260px))}
.agrid,.shopts{left:max(14px,calc(50% - 220px))!important;right:max(14px,calc(50% - 220px))!important}
.cbox{left:max(12px,calc(50% - 240px));right:max(12px,calc(50% - 240px))}
.pbar{left:max(10px,calc(50% - 260px));right:max(10px,calc(50% - 260px))}
.agrid,.shopts{left:max(14px,calc(50% - 220px))!important;right:max(14px,calc(50% - 220px))!important}
.cbox{left:max(12px,calc(50% - 240px));right:max(12px,calc(50% - 240px))}
.pbar{left:max(10px,calc(50% - 260px));right:max(10px,calc(50% - 260px))}
/* ================= v3 premium pass ================= */
.sky.v{background:#8fd0ff}
.sky .vbg{position:absolute;left:0;top:0;width:100%;height:112%;object-fit:cover;object-position:50% 36%;transform-origin:50% 0;will-change:transform}
.sky .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.42) 0%,rgba(255,255,255,.08) 18%,rgba(255,255,255,0) 40%,rgba(255,255,255,.10) 75%,rgba(230,246,255,.35) 100%)}
.sky.v .cl{opacity:.75}
/* glass cards with luminous edge */
.card{background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(244,250,255,.92));border:2px solid rgba(255,255,255,.95);box-shadow:inset 0 -3px 0 rgba(120,170,240,.18),0 2px 4px rgba(20,60,150,.12),0 14px 28px -12px rgba(20,60,150,.45);backdrop-filter:blur(12px) saturate(1.4);-webkit-backdrop-filter:blur(12px) saturate(1.4)}
/* section titles: glossy pills */
.sect{margin:20px 0 10px}
.sect h2{display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 16px 0 8px;border-radius:20px;font-size:19px;font-weight:700;color:#123b9c;background:linear-gradient(#ffffff,#eef6ff);border:2px solid #fff;box-shadow:inset 0 -3px 0 rgba(90,150,240,.18),0 8px 16px -8px rgba(10,50,150,.5)}
.sect h2 img{width:30px;height:30px;object-fit:contain;filter:drop-shadow(0 2px 2px rgba(0,40,120,.25))}
.sect .more{height:36px;padding:0 10px 0 14px;border-radius:18px;background:rgba(255,255,255,.92);border:2px solid #fff;box-shadow:0 6px 14px -8px rgba(10,50,150,.5);color:#1d6fff;font-size:14px;font-weight:700}
/* sticker-style 3D headings */
.t3d,.h1{font-family:Baloo,Fredoka,sans-serif;font-weight:800;font-size:36px;letter-spacing:.3px;color:#1f6dff;background:none;text-shadow:3px 0 #fff,-3px 0 #fff,0 3px #fff,0 -3px #fff,2.2px 2.2px #fff,-2.2px 2.2px #fff,2.2px -2.2px #fff,-2.2px -2.2px #fff,0 7px 0 #0d47c2,3px 6px 0 #0d47c2,-3px 6px 0 #0d47c2,0 10px 16px rgba(0,40,140,.45)}
.ph{height:72px}
.ph img{height:62px;filter:drop-shadow(0 8px 10px rgba(0,40,140,.3))}
.lhead{position:relative;display:flex;align-items:center;gap:10px;height:84px;margin:0 -2px 8px}
.lhead .li{width:66px;height:auto;filter:drop-shadow(0 8px 10px rgba(200,0,90,.35));animation:bob 3.4s ease-in-out infinite}
.lhead span{display:inline-block;margin-top:6px;padding:3px 12px;border-radius:12px;background:rgba(255,255,255,.9);font-weight:700;font-size:13px;color:#e0287a;box-shadow:0 4px 10px -4px rgba(0,40,140,.4)}
.lhead .lp{position:absolute;right:-8px;top:-4px;width:86px;height:auto;filter:drop-shadow(0 8px 10px rgba(0,40,140,.3))}
/* home tiles: glossy label chips */
.tile span{margin-top:2px;padding:2px 10px;border-radius:12px;background:rgba(255,255,255,.92);font-size:14px;box-shadow:0 4px 10px -4px rgba(0,40,140,.45)}
.tile img{filter:drop-shadow(0 10px 10px rgba(10,40,140,.32))}
.ncard span{margin-top:2px;padding:3px 10px;border-radius:12px;background:rgba(255,255,255,.92);box-shadow:0 4px 10px -4px rgba(0,40,140,.45);font-weight:700}
.pcard,.scover,.feature-story,.hero{box-shadow:0 0 0 3px #fff,0 4px 0 3px rgba(150,190,240,.6),0 18px 30px -12px rgba(0,40,140,.55)}
.hero .go{box-shadow:inset 0 -3px 0 rgba(60,110,200,.15),0 10px 18px -8px rgba(0,40,130,.6)}
.starpill{border:2px solid #fff;box-shadow:inset 0 -3px 0 rgba(255,170,0,.25),0 8px 16px -8px rgba(10,50,150,.55)}
.home-top .logo{filter:drop-shadow(0 6px 0 rgba(255,255,255,.6)) drop-shadow(0 10px 14px rgba(20,70,180,.35))}
.p-id .nm b{font-family:Baloo,Fredoka;font-weight:800;text-shadow:3px 0 #fff,-3px 0 #fff,0 3px #fff,0 -3px #fff,2px 2px #fff,-2px 2px #fff,2px -2px #fff,-2px -2px #fff,0 6px 0 #0d47c2,0 9px 14px rgba(0,40,140,.4);color:#1f6dff}
.p-id .nm span{display:inline-block;padding:3px 12px;border-radius:12px;background:rgba(255,255,255,.92);box-shadow:0 4px 10px -4px rgba(0,40,140,.4)}
.stat b{font-family:Baloo,Fredoka;font-weight:800}
/* tools: glossy 3D tiles */
.tool{border:3px solid rgba(255,255,255,.9);box-shadow:inset 0 3px 0 rgba(255,255,255,.45),inset 0 -6px 0 rgba(0,0,0,.12),0 6px 0 rgba(0,40,140,.18),0 18px 28px -12px rgba(0,40,140,.55)}
.tool b{font-family:Baloo,Fredoka;font-weight:800;font-size:23px;text-shadow:0 2px 0 rgba(0,0,0,.18)}
.badge.lock{opacity:.85}
/* ===== intro: 10-level map grid ===== */
.intro .mascot{top:39%;width:50%;max-width:250px}
.intro .how{bottom:calc(var(--sab) + 286px);left:20px;right:20px;margin:0 auto;max-width:420px;padding:10px 16px;border-radius:20px;background:rgba(10,50,150,.38);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);text-shadow:0 2px 4px rgba(0,30,100,.5);font-size:17px}
.playbtn{bottom:calc(var(--sab) + 158px);width:108px;height:108px;margin-left:-54px}
.lvls{display:grid;grid-template-columns:repeat(5,1fr);gap:8px 8px;left:14px;right:14px;max-width:440px;margin:0 auto;bottom:calc(var(--sab) + 16px);padding:12px;border-radius:26px;background:rgba(255,255,255,.55);border:2px solid rgba(255,255,255,.9);backdrop-filter:blur(12px) saturate(1.4);-webkit-backdrop-filter:blur(12px) saturate(1.4);box-shadow:0 18px 30px -12px rgba(0,40,140,.5)}
.lvls button{width:auto;height:54px;border-radius:17px;background:linear-gradient(#6fc3ff,#2a7dff 60%,#1660e6);color:#fff;box-shadow:inset 0 2px 0 rgba(255,255,255,.6),inset 0 -4px 0 rgba(0,40,150,.35),0 4px 0 #0b4fc8,0 8px 14px -6px rgba(0,40,140,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;gap:2px;position:relative}
.lvls button b{font-family:Baloo,Fredoka;font-weight:800;font-size:22px;text-shadow:0 2px 0 rgba(0,40,140,.5)}
.lvls button small{font-size:10px;letter-spacing:.5px;color:#ffe15a;text-shadow:0 1px 0 rgba(120,60,0,.6)}
.lvls button.won{background:linear-gradient(#7fe88a,#2fc153 60%,#1aa242);box-shadow:inset 0 2px 0 rgba(255,255,255,.6),inset 0 -4px 0 rgba(0,90,30,.3),0 4px 0 #138a37,0 8px 14px -6px rgba(20,120,50,.6)}
.lvls button.on{background:linear-gradient(#ffe36b,#ffb400 60%,#ff9600);box-shadow:inset 0 2px 0 rgba(255,255,255,.7),inset 0 -4px 0 rgba(190,90,0,.35),0 4px 0 #d97a00,0 0 0 3px #fff,0 10px 18px -6px rgba(200,100,0,.7);transform:translateY(-3px) scale(1.06)}
.lvls button.on b{text-shadow:0 2px 0 rgba(170,80,0,.55)}
.lvls button.lock{background:linear-gradient(#f1f5fb,#cfd9ea);box-shadow:inset 0 2px 0 #fff,inset 0 -4px 0 rgba(80,100,140,.18),0 4px 0 #aebbd3;color:#8a99bb}
.lvls button.lock svg{width:20px;height:20px}
@media (max-height:700px){.intro .mascot{top:36%;width:40%}.intro .how{bottom:calc(var(--sab) + 266px);font-size:15px}.playbtn{bottom:calc(var(--sab) + 150px);width:96px;height:96px;margin-left:-48px}.lvls button{height:48px}}
/* in-game level chip + timer */
.lvchip{position:absolute;left:50%;top:calc(var(--sat) + 58px);transform:translateX(-50%);z-index:31;padding:2px 12px;border-radius:12px;background:linear-gradient(#ffe36b,#ffb400);color:#7a3d00;font-weight:700;font-size:12.5px;box-shadow:0 0 0 2px #fff,0 6px 12px -6px rgba(150,80,0,.6);white-space:nowrap;pointer-events:none}
.g-color .lvchip,.g-math .lvchip{top:calc(var(--sat) + 56px)}
.tpill{position:absolute;right:14px;top:calc(var(--sat) + 62px);z-index:31;display:flex;align-items:center;gap:6px;height:34px;padding:0 12px 0 8px;border-radius:17px;background:linear-gradient(#ffffff,#e9f3ff);color:#1b4fc9;font:800 18px Baloo,Fredoka;box-shadow:0 0 0 2px #fff,0 8px 14px -6px rgba(0,40,140,.55)}
.tpill i{width:20px;height:20px;border-radius:50%;border:3px solid currentColor;position:relative}
.tpill i::after{content:'';position:absolute;left:50%;top:2px;width:2.5px;height:6px;margin-left:-1.25px;background:currentColor;border-radius:2px;transform-origin:50% 100%;animation:spin 1s steps(8) infinite}
.tpill.warn{color:#fff;background:linear-gradient(#ff7a7a,#e5364d);animation:bump .9s infinite}
/* game boxes */
.gbox{background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(236,246,255,.94));border:3px solid #fff;border-radius:30px;box-shadow:inset 0 -5px 0 rgba(120,170,240,.2),0 0 0 4px rgba(140,200,255,.45),0 20px 36px -14px rgba(0,40,140,.55)}
.qt2{position:absolute;top:10px;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:6px;color:#1b55d8!important;text-shadow:none!important;font-size:22px;font-weight:700}
.shb{border-radius:24px;background:linear-gradient(#fff,#eaf3ff);border:2px solid #fff;box-shadow:inset 0 -4px 0 #d3e2fa,0 6px 0 #c3d6f3,0 14px 22px -8px rgba(20,60,150,.45);padding:12%;display:grid;place-items:center}
.shb span{display:block;width:100%;aspect-ratio:1;max-height:100%}
.shb svg{width:100%;height:100%}
.mmf.c img{object-fit:contain;padding:12%}
.mgrid{perspective:1000px}
.mc .b img{filter:drop-shadow(0 6px 6px rgba(0,60,30,.3))}

/* ===== Header-only background + white sheet (matches concept) ===== */
.sky.v{background:linear-gradient(180deg,#8fd0ff 0,#8fd0ff 45%,#ffffff 45%)}
.sky.v .vbg,.sky.v .veil,.sky.v .cl{display:none}
.scroll>.hdr{position:relative;margin:calc(-1 * (var(--sat) + 6px)) -16px 0;padding:calc(var(--sat) + 6px) 16px 46px;background:#9ad6ff url(../assets/bg/header.webp) 50% 100%/cover no-repeat;isolation:isolate}
.scroll>.hdr::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.18) 0%,rgba(255,255,255,0) 30%,rgba(255,255,255,0) 70%,rgba(255,255,255,.12) 100%)}
.scroll>.sheet{position:relative;z-index:1;margin:-34px -16px calc(-1 * (var(--sab) + 112px));padding:22px 16px calc(var(--sab) + 112px);min-height:calc(100% - 120px);background:#fff;border-radius:34px 34px 0 0;box-shadow:0 -10px 24px rgba(20,70,160,.10)}
.sheet .card{box-shadow:0 0 0 1.5px #e6effc,0 6px 16px rgba(30,80,170,.08)}
.sheet .sect:first-child{margin-top:2px}
/* ===== Color Fun picture strip ===== */
.page-sel{left:10px;right:10px;gap:8px;padding:0 4px}
.page-sel .ps-in{flex:1;min-width:0;display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:5px 4px;-webkit-overflow-scrolling:touch}
.page-sel .ps-in::-webkit-scrollbar{display:none}
.page-sel .ps-in button{flex:none;position:relative}
.page-sel button em{position:absolute;right:2px;bottom:2px;min-width:17px;height:17px;padding:0 3px;border-radius:9px;background:#1d6fff;color:#fff;font:700 11px/17px Fredoka,system-ui;font-style:normal;text-align:center}
.page-sel button.lk img{filter:grayscale(1) opacity(.45)}
.page-sel button.lk em{background:#fff;color:#1d2a4f;font-size:10px;box-shadow:0 0 0 1px #d5e3f7}
.cpage .cload{position:absolute;inset:0;display:none;place-items:center;background:rgba(255,255,255,.85)}
.cpage.busy .cload{display:grid}
.cpage .cload i{width:42px;height:42px;border-radius:50%;border:5px solid #d7e9ff;border-top-color:#1d6fff;animation:cspin .8s linear infinite}
@keyframes cspin{to{transform:rotate(360deg)}}
.hdr .hero{background:none;box-shadow:none;overflow:visible;border-radius:0}
.hdr .hero .bg,.hdr .hero .shade{display:none}
.hdr .hero .peng{bottom:-30px}

/* ===== v2.1: flat, concept-matching labels on the white sheet ===== */
.scroll>.sheet,.sheet{background:#ffffff}
.sheet .sect{margin:20px 2px 12px}
.sheet .sect h2{height:auto;padding:0;background:none;border:0;box-shadow:none;border-radius:0;font-size:22px;font-weight:700;color:#123b9c;letter-spacing:-.3px;gap:8px}
.sheet .sect h2 img{width:28px;height:28px;filter:none}
.sheet .sect .more{height:auto;padding:0;background:none;border:0;box-shadow:none;border-radius:0;color:#1d6fff;font-size:15px}
.sheet .tile span,.sheet .ncard span{padding:0;background:none;box-shadow:none;border-radius:0;color:#123b9c;font-size:15px;font-weight:700}
.sheet .card{background:#ffffff;border:1.5px solid #e4eefb;box-shadow:0 6px 18px -8px rgba(30,80,170,.18);backdrop-filter:none;-webkit-backdrop-filter:none}
.sheet .tool{border-color:#ffffff}
/* header labels: plain text with soft glow instead of white pills */
.hdr .lhead span,.hdr .p-id .nm span{padding:0;background:none;box-shadow:none;border-radius:0;text-shadow:0 0 3px #fff,0 0 8px rgba(255,255,255,.95),0 1px 0 #fff}
/* home hero: keep "Let's Explore" clear of the Small Steps banner */
.hdr .hero{height:232px}
.hdr .hero .ban{top:4px;width:50%}
.hdr .hero .go{bottom:8px}
.hdr .card{background:rgba(255,255,255,.95);border:0;box-shadow:0 10px 24px -10px rgba(20,60,150,.35);backdrop-filter:none;-webkit-backdrop-filter:none}
.starpill{border:0}
/* ===== v2.2 HD home assets ===== */
.pcard{background:transparent;box-shadow:0 14px 24px -12px rgba(0,40,140,.45)}
.pcard .lab{height:22%;font-size:15px;letter-spacing:-.1px}
.ncard img{border-radius:24px}
.hero .go img{width:36px;height:36px}
/* ===== v2.3 Home: 3-column game thumbnails ===== */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:2px 0 6px;align-items:start}
.pgrid .pcard{width:auto;border-radius:20px}
.pgrid .pcard .lab{font-size:12.5px;padding:0 4px;white-space:nowrap;letter-spacing:-.2px}
.pgrid .pcard img{aspect-ratio:300/284;object-fit:cover;object-position:50% 100%}
.pgrid.short .pcard img{aspect-ratio:300/226}
/* ===== v2.4 Profile HD: favorites + parent zone in crisp HTML ===== */
.favs{gap:9px}
.favs .fav{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px 9px;border-radius:22px;border:1.5px solid var(--fb);background:var(--fbg);box-shadow:0 6px 14px -8px rgba(30,80,170,.25)}
.favs .fav img{width:62px;height:62px;object-fit:contain;filter:drop-shadow(0 6px 8px rgba(30,60,160,.22))}
.favs .fav b{font-size:14px;font-weight:700;color:#1b4fd0;letter-spacing:-.2px;white-space:nowrap}
.fv-g{--fbg:linear-gradient(#f6f2ff,#efe9ff);--fb:#e3dafc}
.fv-s{--fbg:linear-gradient(#fff4f8,#ffecf3);--fb:#fbd9e7}
.fv-c{--fbg:linear-gradient(#fffaee,#fff3d9);--fb:#fbe8bd}
.fv-a{--fbg:linear-gradient(#f0fbf5,#e4f7ec);--fb:#c9eed9}
.pz2{display:flex;align-items:center;gap:12px;width:100%;height:86px;padding:0 16px 0 14px;border-radius:30px;text-align:left;color:#fff;background:linear-gradient(180deg,#3fa0ff 0%,#1f74f5 55%,#155fe0 100%);box-shadow:inset 0 3px 0 rgba(255,255,255,.35),inset 0 -5px 0 rgba(0,40,140,.25),0 14px 24px -12px rgba(10,70,200,.65);overflow:hidden;position:relative}
.pz2::before{content:"";position:absolute;left:18px;right:18px;top:5px;height:30%;border-radius:20px;background:linear-gradient(rgba(255,255,255,.35),rgba(255,255,255,0))}
.pz2 .pic{flex:none;width:60px;height:60px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 4px 0 rgba(0,40,140,.18)}
.pz2 .pic img{width:44px;height:44px;object-fit:contain}
.pz2 .tx{flex:1;display:flex;flex-direction:column;line-height:1.1}
.pz2 .tx b{font-family:Baloo,Fredoka;font-weight:800;font-size:25px;letter-spacing:-.2px;text-shadow:0 2px 0 rgba(0,40,140,.25)}
.pz2 .tx small{font-size:14.5px;font-weight:600;opacity:.95;margin-top:2px}
.pz2 .ar{flex:none;width:34px;height:34px}
.pz2 .ar svg{width:100%;height:100%;stroke:#fff}
/* v2.5 Parent Zone: original banner art with trees, balanced width */
.pzone{display:block;width:calc(100% - 8px);max-width:370px;margin:30px auto 10px}
.pzone img{width:100%;height:auto;filter:drop-shadow(0 10px 12px rgba(10,70,200,.25))}
/* ---------- Creativity tab ---------- */
.crv .scroll>.hdr{background-image:url(../assets/bg/crv_hdr.webp);background-position:50% 78%;padding-bottom:40px}
.crv-top{position:relative;height:268px}
.crv-title{position:absolute;left:2px;top:22px;z-index:3;transform:rotate(-7deg);transform-origin:0 50%}
.crv-title b{position:relative;display:block;font-size:54px;font-weight:700;line-height:1;letter-spacing:-.5px}
.crv-title i{font-style:normal;display:block}
.crv-title .st{position:absolute;left:0;top:0;color:#fff;-webkit-text-stroke:12px #fff;text-shadow:0 8px 12px rgba(10,60,170,.35);white-space:nowrap}
.crv-title .fg{position:relative;white-space:nowrap;background:linear-gradient(180deg,#3aa0ff 0%,#1366ee 55%,#0b4fd1 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:#1366ee}
.crv-title span{position:relative;display:block;margin:6px 0 0 14px;font-size:21px;font-weight:700;color:#1d6fff}
.crv-title span .st{-webkit-text-stroke:8px #fff;text-shadow:0 4px 8px rgba(20,70,180,.3)}
.crv-title span .fg{background:none;-webkit-text-fill-color:#1d6fff}
.crv-title .pal{position:absolute;left:258px;top:6px;width:54px;height:auto;transform:rotate(7deg);filter:drop-shadow(0 6px 8px rgba(60,20,140,.3))}
.crv-av{position:absolute;right:0;top:4px;z-index:3;width:58px;height:58px;border-radius:50%;padding:3px;background:#fff;box-shadow:0 6px 14px rgba(20,60,150,.3)}
.crv-av img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.crv-top .painter{position:absolute;right:-8px;bottom:-46px;width:44%;height:auto;z-index:2;filter:drop-shadow(0 10px 14px rgba(0,40,110,.28))}
.crv-top .easel{position:absolute;right:34%;bottom:-36px;width:26%;height:auto;z-index:1;transform:rotate(-4deg);filter:drop-shadow(0 10px 12px rgba(0,40,110,.25))}
.crv-top .spk{position:absolute;left:52%;top:118px;width:26px;height:auto;z-index:2}
.crv .sheet .sect h2{font-size:23px}
.crv .sheet .sect h2 svg{width:20px;height:20px;stroke-width:3}
.crv-acts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.crv-act{display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0}
.crv-act .ic{width:100%;aspect-ratio:1/.86;border-radius:22px;display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.8),0 6px 14px -8px rgba(30,80,170,.35)}
.crv-act .ic img{width:70%;height:auto;max-height:84%;object-fit:contain;filter:drop-shadow(0 6px 6px rgba(0,30,90,.22));transition:transform .4s var(--spring)}
.crv-act:active .ic img{transform:scale(1.1) rotate(-6deg)}
.crv-act .k1{background:linear-gradient(160deg,#ffe9f3,#ffd6e8)}
.crv-act .k2{background:linear-gradient(160deg,#e9f4ff,#d3e8ff)}
.crv-act .k3{background:linear-gradient(160deg,#e7fbf1,#d2f3e2)}
.crv-act .k4{background:linear-gradient(160deg,#fff8e1,#ffefc4)}
.crv-act b{margin-top:7px;font-size:15.5px;font-weight:700;color:#123b9c;white-space:nowrap}
.crv-act small{font-size:11.5px;font-weight:500;color:#7b88a6;white-space:nowrap;margin-top:1px}
.crv-ban{position:relative;display:block;width:100%;height:178px;margin-top:20px;border-radius:28px;overflow:hidden;text-align:left;box-shadow:0 0 0 2px #fff,0 0 0 3.5px #d9e8fb,0 12px 24px -12px rgba(20,70,170,.45)}
.crv-ban .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 100%}
.crv-ban .peng{position:absolute;left:-4px;bottom:-16px;width:46%;height:auto;filter:drop-shadow(0 8px 10px rgba(0,40,110,.3))}
.crv-ban .txt{position:absolute;left:45%;right:12px;top:16px;display:flex;flex-direction:column}
.crv-ban .txt b{font-size:23px;line-height:1.02;font-weight:700;color:#123b9c;letter-spacing:-.3px;text-shadow:0 0 6px rgba(255,255,255,.7)}
.crv-ban .txt span{margin-top:5px;font-size:13.5px;line-height:1.15;font-weight:600;color:#1a3f8f;text-shadow:0 0 6px rgba(255,255,255,.8)}
.crv-ban .go{margin-top:10px;align-self:flex-start;display:flex;align-items:center;gap:6px;height:42px;padding:0 16px;border-radius:21px;font-style:normal;font-size:16px;font-weight:700;color:#fff;white-space:nowrap;background:linear-gradient(180deg,#3fa6ff,#1567f2);box-shadow:0 0 0 3px #fff,inset 0 2px 0 rgba(255,255,255,.45),0 6px 12px -4px rgba(10,70,200,.55)}
.crv-rec{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.rc{position:relative;aspect-ratio:1/.9;border-radius:16px;overflow:hidden;display:grid;place-items:center;box-shadow:0 0 0 1.5px #e4eefb,0 6px 14px -8px rgba(30,80,170,.35)}
.rc .art{width:86%;height:86%;object-fit:contain;filter:drop-shadow(0 4px 5px rgba(0,30,90,.22))}
.rc.mine img:first-child{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rc .hrt{position:absolute;right:4px;top:4px;width:26px;height:auto;z-index:2}
.rc.s1{background:linear-gradient(180deg,#d9efff,#f3f9ff)}
.rc.s2{background:radial-gradient(circle at 30% 30%,#fffaf0,#f6e9d2)}
.rc.s3{background:radial-gradient(circle at 50% 40%,#f8efe2,#ead9c1)}
.rc.s4{background:radial-gradient(circle at 50% 40%,#fbf3e6,#efe0c8)}

.rc .dc{position:absolute;height:auto;pointer-events:none;opacity:.95}
.rc .d1{left:-4%;top:-2%;width:46%;transform:rotate(-14deg)}
.rc .d2{right:-2%;bottom:-2%;width:30%;transform:rotate(12deg)}
.rc .d3{left:4%;bottom:6%;width:18%}
.rc.s2 .d1{left:auto;right:16%;top:auto;bottom:-6%;transform:rotate(160deg)}
.rc.s3 .d2{right:auto;left:-2%;bottom:-2%}
.rc.s3 .d3{left:auto;right:6%;bottom:auto;top:34%}
.rc.s4 .d1{left:auto;right:-6%;top:auto;bottom:-4%;transform:rotate(100deg)}
.rc.s4 .d2{right:auto;left:0;top:2%;bottom:auto}
.rc .art{position:relative;z-index:1}
