:root{
  --ink:#24304a;
  --muted:#66718b;
  --card:#ffffffee;
  --line:#dfe5f3;
  --shadow:0 16px 40px rgba(53,66,105,.16);
  --shadow-soft:0 8px 24px rgba(53,66,105,.12);
  --radius:26px;
  --purple:#6f66ff;
  --purple-dark:#5149cf;
  --pink:#ff72ad;
  --gold:#ffca3a;
  --green:#59c884;
  --red:#ee6c74;
  --blue:#57a8ff;
  --focus:#1b65d8;
  --safe-bottom:max(18px,env(safe-area-inset-bottom));
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,ui-rounded,"Trebuchet MS",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:#eef4ff}
body{min-height:100vh;overflow-x:hidden}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:4px solid color-mix(in srgb,var(--focus) 72%,white);outline-offset:3px}
img{max-width:100%;display:block}
.app-shell{min-height:100vh;display:flex;flex-direction:column;background:
radial-gradient(circle at 12% 0%,#fff 0 9%,transparent 9.4%),
radial-gradient(circle at 88% 7%,#fff 0 6%,transparent 6.4%),
linear-gradient(180deg,#dfeaff 0,#f7f4ff 48%,#fff5fb 100%)}
.topbar{height:86px;display:grid;grid-template-columns:112px 1fr minmax(210px,auto);align-items:center;padding:10px clamp(14px,3vw,34px);gap:12px;position:sticky;top:0;z-index:20;background:rgba(255,255,255,.86);backdrop-filter:blur(12px);border-bottom:1px solid rgba(122,134,175,.16)}
.brand-wrap{text-align:center}.brand{border:0;background:transparent;padding:0;color:var(--purple-dark);font-weight:900;line-height:.9;text-shadow:0 2px 0 #fff}.brand-small{display:block;font-size:15px;letter-spacing:.14em;text-transform:uppercase}.brand-big{display:block;font-size:29px}
.icon-btn{width:54px;height:54px;border:0;border-radius:18px;background:white;box-shadow:var(--shadow-soft);display:grid;place-items:center;transition:transform .15s ease,box-shadow .15s ease}.icon-btn:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(53,66,105,.18)}.icon-btn:active{transform:translateY(1px) scale(.98)}.icon-btn img{width:38px;height:38px;object-fit:contain}
.status-cluster{display:flex;align-items:center;justify-content:flex-end;gap:10px}.stat-pill{min-width:76px;height:48px;border-radius:18px;background:white;box-shadow:var(--shadow-soft);display:flex;align-items:center;justify-content:center;gap:7px;font-size:19px}.stat-pill img{width:32px;height:32px;object-fit:contain}.coin-dot{width:27px;height:27px;border-radius:50%;display:inline-block;background:radial-gradient(circle at 36% 28%,#fff4a5 0 13%,#ffd34d 14% 54%,#e9a91f 55% 100%);border:3px solid #f6ba2d;box-shadow:inset 0 -3px 0 rgba(132,81,0,.14)}
.screen{width:min(1320px,100%);margin:0 auto;flex:1;padding:clamp(18px,3vw,38px);outline:none}
.footer-bar{padding:12px clamp(16px,3vw,34px) var(--safe-bottom);display:flex;justify-content:space-between;gap:16px;color:#6e7890;font-size:13px;background:rgba(255,255,255,.72);border-top:1px solid rgba(122,134,175,.12)}
.hero{position:relative;min-height:390px;border-radius:34px;overflow:hidden;padding:clamp(26px,5vw,58px);display:grid;grid-template-columns:1.08fr .92fr;align-items:center;gap:24px;background:linear-gradient(180deg,#f7f4fb 0,#f5f1fa 100%);box-shadow:var(--shadow);color:var(--ink);border:1px solid rgba(179,169,223,.28)}.hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 20%,rgba(145,130,228,.12) 0 16%,transparent 16.3%),radial-gradient(circle at 82% 22%,rgba(235,160,204,.14) 0 18%,transparent 18.3%),radial-gradient(circle at 55% 100%,rgba(179,169,223,.14) 0 18%,transparent 18.3%);pointer-events:none}.hero:after{display:none}.hero-copy{position:relative;z-index:2}.hero-kicker{font-size:15px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#6b61d8;opacity:1}.hero h1{font-size:clamp(43px,6vw,78px);line-height:.92;margin:12px 0 16px;max-width:720px;color:#5148c7}.hero p{font-size:clamp(18px,2vw,24px);max-width:650px;line-height:1.45;margin:0 0 25px;color:#5b6682}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.hero-art{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;align-items:end;justify-items:center;padding:10px 10px 0}.hero-art img{max-height:315px;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(103,111,157,.12))}.hero-art img:nth-child(2){transform:translateX(-18px) scale(.9)}
.primary-btn,.secondary-btn,.soft-btn,.danger-btn{border:0;border-radius:18px;padding:14px 22px;font-weight:850;font-size:17px;min-height:54px;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.primary-btn{background:white;color:var(--purple-dark);box-shadow:0 10px 22px rgba(40,24,90,.18)}.primary-btn.purple{background:var(--purple);color:white}.secondary-btn{background:rgba(255,255,255,.2);border:2px solid rgba(255,255,255,.58);color:white}.soft-btn{background:#f3f5ff;color:var(--purple-dark)}.danger-btn{background:#fff0f1;color:#b33b47}.primary-btn:hover,.secondary-btn:hover,.soft-btn:hover,.danger-btn:hover{transform:translateY(-2px);filter:brightness(1.02)}.primary-btn:active,.secondary-btn:active,.soft-btn:active,.danger-btn:active{transform:translateY(1px) scale(.99)}
.section{margin-top:28px}.section-title-row{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:0 4px 16px}.section-title-row h2{margin:0;font-size:clamp(26px,3vw,38px)}.section-title-row p{margin:5px 0 0;color:var(--muted)}
.dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.dash-card{min-height:166px;border:0;border-radius:28px;background:white;box-shadow:var(--shadow-soft);padding:20px;text-align:left;display:grid;grid-template-columns:92px 1fr;align-items:center;gap:15px;transition:transform .16s ease,box-shadow .16s ease}.dash-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.dash-card img{width:84px;height:84px;object-fit:contain}.dash-card h3{font-size:20px;margin:0 0 6px}.dash-card p{margin:0;color:var(--muted);line-height:1.35;font-size:14px}
.progress-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}.progress-card{background:#fff;border-radius:22px;padding:17px 18px;box-shadow:var(--shadow-soft)}.progress-card strong{font-size:27px;display:block}.progress-card span{font-size:13px;color:var(--muted)}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}.page-head h1{margin:0;font-size:clamp(34px,5vw,54px)}.page-head p{margin:8px 0 0;color:var(--muted);max-width:750px}.page-head-actions{display:flex;gap:10px;flex-wrap:wrap}
.world-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px}.world-card{position:relative;border:0;border-radius:30px;min-height:288px;padding:0;overflow:hidden;text-align:left;box-shadow:var(--shadow-soft);background:var(--world-bg,#fff);transition:transform .18s ease,box-shadow .18s ease}.world-card:hover:not([disabled]){transform:translateY(-5px);box-shadow:var(--shadow)}.world-card[disabled]{filter:grayscale(.48) saturate(.65);opacity:.68;cursor:not-allowed}.world-card-art{height:175px;display:grid;place-items:center;padding:12px;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.03))}.world-card-art img{height:150px;width:100%;object-fit:contain;filter:drop-shadow(0 8px 10px rgba(41,54,87,.16))}.world-card-copy{background:rgba(255,255,255,.94);padding:15px 16px 18px;min-height:113px}.world-card-copy h3{margin:0;font-size:20px}.world-card-copy p{margin:5px 0 0;color:var(--muted);font-size:13px}.world-card-meta{margin-top:10px;display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:13px}.lock-label{position:absolute;top:12px;right:12px;border-radius:14px;background:rgba(255,255,255,.9);padding:7px 10px;font-size:12px;font-weight:900;color:#69748c}
.world-banner{min-height:260px;border-radius:34px;padding:30px;display:grid;grid-template-columns:1fr minmax(220px,360px);align-items:center;gap:20px;background:var(--world-bg);box-shadow:var(--shadow);overflow:hidden;position:relative}.world-banner:after{content:"";position:absolute;inset:auto -100px -150px auto;width:360px;height:360px;border-radius:50%;background:rgba(255,255,255,.26)}.world-banner-copy,.world-banner-art{position:relative;z-index:1}.world-banner h1{margin:0;font-size:clamp(38px,5vw,62px);line-height:1}.world-banner p{max-width:660px;font-size:18px;line-height:1.5}.world-banner-art{display:grid;place-items:center}.world-banner-art img{max-height:215px;filter:drop-shadow(0 14px 15px rgba(56,62,83,.16))}
.level-path{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-top:24px}.level-node{border:0;border-radius:26px;background:#fff;box-shadow:var(--shadow-soft);min-height:174px;padding:18px;text-align:left;position:relative}.level-node:hover:not([disabled]){transform:translateY(-3px)}.level-node[disabled]{opacity:.54;filter:grayscale(.35);cursor:not-allowed}.level-number{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;font-weight:950;font-size:19px;background:#f0f2ff;color:var(--purple-dark)}.level-node.challenge .level-number{background:#fff2c8;color:#9a6900}.level-node h3{margin:14px 0 4px;font-size:17px}.level-node p{margin:0;color:var(--muted);font-size:13px}.mini-stars{display:flex;gap:3px;margin-top:11px}.mini-stars img{width:21px;height:21px;object-fit:contain}.mini-stars .empty{opacity:.16;filter:grayscale(1)}
.game-shell{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px}.game-stage{min-height:620px;border-radius:34px;box-shadow:var(--shadow);overflow:hidden;background:var(--world-bg,#dfeaff);position:relative;padding:22px;display:flex;flex-direction:column}.game-stage:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.26),rgba(255,255,255,.08));pointer-events:none}.game-hud,.game-content{position:relative;z-index:2}.game-hud{display:flex;justify-content:space-between;gap:12px;align-items:center}.game-hud-left,.game-hud-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.hud-pill{background:rgba(255,255,255,.9);border-radius:16px;padding:10px 13px;box-shadow:0 7px 16px rgba(58,67,97,.11);font-weight:800;font-size:14px}.progress-bar{height:14px;min-width:180px;background:rgba(255,255,255,.72);border-radius:999px;overflow:hidden;border:2px solid rgba(255,255,255,.7)}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,#6f66ff,#ff7ab5);border-radius:inherit;transition:width .25s ease}
.game-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 10px}.prompt-card{background:rgba(255,255,255,.94);border-radius:28px;padding:20px 28px;text-align:center;box-shadow:var(--shadow-soft);width:min(720px,100%);margin-bottom:24px}.prompt-card .eyebrow{font-size:13px;font-weight:900;letter-spacing:.1em;color:var(--purple-dark);text-transform:uppercase}.prompt-card h2{font-size:clamp(28px,4vw,46px);margin:7px 0 8px}.prompt-card p{margin:0;color:var(--muted);font-size:16px}.speak-btn{border:0;border-radius:16px;background:#eef1ff;padding:8px 12px;display:inline-flex;align-items:center;gap:7px;color:var(--purple-dark);font-weight:850;margin-top:12px}.speak-btn img{width:29px;height:29px;object-fit:contain}
.answer-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,300px));gap:16px;justify-content:center;width:100%}.answer-card{min-height:95px;border:3px solid rgba(255,255,255,.84);background:rgba(255,255,255,.9);border-radius:24px;box-shadow:var(--shadow-soft);font-size:clamp(25px,3vw,36px);font-weight:950;color:#303955;padding:16px}.answer-card:hover{transform:translateY(-3px);background:white}.answer-card.correct{border-color:#5fcb8a;background:#ebfff3}.answer-card.wrong{border-color:#f0878d;background:#fff2f3;animation:shake .28s ease}.answer-card.reveal{border-color:#75aef8;box-shadow:0 0 0 5px rgba(91,154,245,.14),var(--shadow-soft)}.treasure-grid{align-items:end}.treasure-answer{position:relative;overflow:hidden;min-height:225px;padding:14px 10px 18px;background:linear-gradient(180deg,#fff7df,#fff1c4);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px}.treasure-answer:hover{transform:translateY(-5px) scale(1.01)}.treasure-answer .treasure-chest-art,.treasure-answer .treasure-open-art{height:94px;object-fit:contain;position:relative;z-index:2;transition:transform .45s ease,opacity .35s ease;filter:drop-shadow(0 10px 10px rgba(100,77,27,.18))}.treasure-answer .treasure-open-art{position:absolute;left:50%;bottom:42px;transform:translateX(-50%) scale(.82);opacity:0}.treasure-answer .treasure-word{position:relative;z-index:4;font-size:clamp(22px,2.6vw,31px);font-weight:950;color:#30405d;background:rgba(255,255,255,.88);border-radius:999px;padding:3px 13px}.treasure-answer .treasure-prize{position:absolute;left:50%;top:18px;transform:translate(-50%,34px) scale(.55);opacity:0;display:flex;flex-direction:column;align-items:center;gap:4px;z-index:3;transition:transform .5s ease,opacity .4s ease}.treasure-answer .treasure-prize img{height:72px;max-width:100px;object-fit:contain;filter:drop-shadow(0 10px 10px rgba(88,95,140,.18))}.treasure-answer .treasure-prize span{font-size:12px;font-weight:900;color:#8a5b00;background:rgba(255,255,255,.95);padding:4px 10px;border-radius:999px;white-space:nowrap}.treasure-answer .treasure-open-label{position:absolute;top:8px;right:8px;background:#ffffff;border:2px solid #ffe084;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:900;color:#9c6a00;opacity:0;transform:translateY(-6px);transition:opacity .25s ease,transform .25s ease;z-index:5}.treasure-answer.correct,.treasure-answer.opened{background:linear-gradient(180deg,#fff8e7,#eafff1);border-color:#79d09a}.treasure-answer.correct .treasure-closed-art,.treasure-answer.opened .treasure-closed-art{opacity:0;transform:translateY(20px) scale(.75)}.treasure-answer.correct .treasure-open-art,.treasure-answer.opened .treasure-open-art{opacity:1;transform:translateX(-50%) scale(1)}.treasure-answer.correct .treasure-prize,.treasure-answer.opened .treasure-prize{opacity:1;transform:translate(-50%,-4px) scale(1)}.treasure-answer.correct .treasure-open-label,.treasure-answer.opened .treasure-open-label{opacity:1;transform:translateY(0)}.treasure-answer.correct .treasure-prize img,.treasure-answer.opened .treasure-prize img{animation:rewardPop .65s ease}.treasure-answer.reveal{background:linear-gradient(180deg,#fff9eb,#f5f9ff)}
.game-sidebar{display:flex;flex-direction:column;gap:14px}.side-card{background:white;border-radius:26px;box-shadow:var(--shadow-soft);padding:18px}.side-card h3{margin:0 0 12px}.side-character{display:grid;place-items:center;min-height:210px;background:linear-gradient(180deg,#f7f8ff,#fff);overflow:hidden}.side-character img{max-height:210px;object-fit:contain}.character-portrait{position:relative;display:grid;place-items:center;width:100%;min-height:210px}.character-portrait>img{position:relative;z-index:2;transition:transform .22s ease,filter .22s ease}.character-bubble{position:absolute;top:6px;right:10px;max-width:132px;padding:8px 12px;border-radius:18px;background:#ffffff;border:3px solid #dcdfff;box-shadow:0 8px 20px rgba(66,72,114,.12);font-weight:900;font-size:14px;line-height:1.15;color:#5b5f8d;text-align:center;z-index:5}.character-bubble:after{content:'';position:absolute;left:16px;bottom:-11px;width:18px;height:18px;background:white;border-right:3px solid #dcdfff;border-bottom:3px solid #dcdfff;transform:rotate(45deg)}.character-effects{position:absolute;inset:0;pointer-events:none;z-index:4}.character-effects img{position:absolute;width:30px;height:30px;object-fit:contain;left:50%;top:48%;opacity:0;animation:starBurst .75s ease-out forwards;animation-delay:calc(var(--i)*.04s)}.character-effects img:nth-child(1){--dx:-82px;--dy:-72px}.character-effects img:nth-child(2){--dx:-38px;--dy:-105px}.character-effects img:nth-child(3){--dx:15px;--dy:-100px}.character-effects img:nth-child(4){--dx:65px;--dy:-68px}.character-effects img:nth-child(5){--dx:86px;--dy:-20px}.character-portrait.mood-happy>img{animation:happyBounce .62s ease;filter:drop-shadow(0 14px 14px rgba(77,181,110,.28))}.character-portrait.mood-happy .character-bubble{border-color:#7ed79e;color:#2f8a53;animation:bubblePop .3s ease}.character-portrait.mood-confused>img{animation:thinkingTilt .55s ease forwards;filter:grayscale(.05) drop-shadow(0 12px 12px rgba(95,108,168,.18))}.character-portrait.mood-confused .character-bubble{border-color:#f0bb8f;color:#9a5b2b}.word-state-list{display:flex;flex-direction:column;gap:8px}.word-chip{display:flex;justify-content:space-between;align-items:center;background:#f6f7fb;border-radius:14px;padding:8px 10px;font-size:13px}.state-dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:6px}.state-new{background:#9aa5ba}.state-learning{background:#ef8a64}.state-practicing{background:#e0b12d}.state-mastered{background:#50b97d}
.balloon-grid{display:grid;grid-template-columns:repeat(3,minmax(115px,185px));gap:16px;justify-content:center}.balloon-option{position:relative;border:0;background:transparent;min-height:190px;filter:drop-shadow(0 10px 13px rgba(50,60,90,.13));transition:transform .18s ease}.balloon-option:hover{transform:translateY(-8px) rotate(-1deg)}.balloon-option img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.balloon-option span{position:absolute;left:16%;right:16%;top:34%;text-align:center;font-size:clamp(19px,2vw,30px);font-weight:950;color:#263354;text-shadow:0 1px 0 white}.balloon-option.correct{animation:pop .35s ease forwards}.balloon-option.wrong{animation:shake .28s ease}
.river-lane{display:grid;grid-template-columns:repeat(3,minmax(130px,220px));gap:18px;width:100%;justify-content:center;padding:20px;background:linear-gradient(180deg,rgba(78,178,255,.13),rgba(33,142,230,.22));border-radius:30px}.rock-option{position:relative;border:0;background:transparent;min-height:125px}.rock-option img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.rock-option span{position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(21px,2.5vw,33px);font-weight:950;color:#24314d;padding-top:2px}.rock-option:hover{transform:translateY(-4px)}
.feed-wrap{display:grid;grid-template-columns:minmax(240px,360px) minmax(260px,430px);gap:24px;align-items:center;width:min(850px,100%)}.animal-box{display:grid;place-items:center}.animal-box img{max-height:300px;filter:drop-shadow(0 10px 12px rgba(60,63,83,.15))}.feed-zone{position:relative;min-height:210px;border-radius:30px;background:rgba(255,255,255,.62);display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:center;padding:20px}.feed-zone:after{content:"Drop or tap the right word";position:absolute;bottom:8px;color:#6d7891;font-size:12px}.food-word{border:0;border-radius:17px;background:#fff;box-shadow:var(--shadow-soft);padding:13px 17px;font-weight:950;font-size:22px;touch-action:none}.food-word[draggable="true"]{cursor:grab}.food-word.dragging{opacity:.5}.feed-tray{width:190px;margin:8px auto 0;position:relative}.feed-tray img{width:100%}.feed-tray span{position:absolute;inset:24% 12% auto;display:block;text-align:center;font-weight:900;font-size:15px;color:#444}
.door-grid{display:grid;grid-template-columns:repeat(3,minmax(130px,210px));gap:18px}.door-option{height:230px;border:0;border-radius:24px;background:rgba(255,255,255,.18);box-shadow:var(--shadow-soft);position:relative;color:white;font-weight:950;font-size:28px;overflow:hidden;padding:0}.door-option img{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);object-fit:contain;filter:drop-shadow(0 10px 14px rgba(45,33,83,.22));transition:transform .25s ease}.door-option span{position:absolute;left:12%;right:12%;bottom:18px;z-index:2;background:rgba(255,255,255,.94);color:#32405c;border-radius:999px;padding:7px 8px;font-size:clamp(18px,2vw,27px);box-shadow:0 6px 14px rgba(45,54,82,.12)}.door-option:hover img{transform:scale(1.045)}.door-option.correct img{animation:doorOpen .6s ease forwards}.door-option.wrong{animation:shake .28s ease}
.train{display:flex;gap:10px;align-items:end;justify-content:center;flex-wrap:wrap}.train-car{width:190px;min-height:135px;border:0;background:transparent;font-weight:950;font-size:24px;position:relative;padding:0;filter:drop-shadow(0 10px 12px rgba(52,61,88,.15));transition:transform .18s ease}.train-car img{width:100%;height:135px;object-fit:contain}.train-car span{position:absolute;left:16%;right:16%;top:38%;z-index:2;text-align:center;background:rgba(255,255,255,.9);border-radius:999px;padding:4px 6px;color:#2f3955;font-size:clamp(17px,2vw,24px)}.train-car:hover{transform:translateY(-6px)}.train-car.correct{animation:trainCheer .6s ease}.train-car.wrong{animation:shake .28s ease}
.firefly-field{position:relative;width:min(760px,100%);height:380px;border-radius:30px;overflow:hidden;background:linear-gradient(180deg,rgba(34,73,66,.78),rgba(16,39,48,.85));box-shadow:inset 0 0 90px rgba(255,243,143,.06)}.firefly{position:absolute;border:0;background:transparent;color:#233442;font-weight:950;padding:0;width:120px;height:92px;animation:floatFirefly 4.6s ease-in-out infinite alternate;filter:drop-shadow(0 0 18px rgba(238,255,133,.55))}.firefly img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.firefly span{position:absolute;left:8%;right:8%;bottom:-5px;background:rgba(255,255,255,.95);border-radius:999px;padding:5px 7px;font-size:17px;box-shadow:0 6px 12px rgba(22,36,42,.24)}.firefly:nth-child(2n){animation-duration:5.2s}.firefly:nth-child(3n){animation-duration:4s}.firefly.correct{animation:fireflyFound .55s ease forwards}.firefly.wrong{animation:shake .28s ease}
.builder-wrap{width:min(800px,100%)}.builder-slots{display:flex;justify-content:center;gap:8px;min-height:88px;margin-bottom:22px;flex-wrap:wrap}.builder-slot{width:72px;height:78px;border:2px dashed rgba(64,74,105,.2);border-radius:15px;background-image:linear-gradient(rgba(255,255,255,.18),rgba(255,255,255,.18)),var(--tile-art);background-size:cover;background-position:center;display:grid;place-items:center;font-size:34px;font-weight:950;color:#3e2f26;text-shadow:0 1px 0 rgba(255,255,255,.75);filter:saturate(.82)}.letter-bank{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.letter-tile{width:74px;height:74px;border:0;border-radius:14px;background-image:var(--tile-art);background-size:cover;background-position:center;box-shadow:var(--shadow-soft);font-size:30px;font-weight:950;color:#3e2f26;text-shadow:0 1px 0 rgba(255,255,255,.82);transition:transform .16s ease}.letter-tile:hover{transform:translateY(-4px) rotate(-1deg)}.letter-tile.used{opacity:.18;pointer-events:none}.builder-actions{display:flex;justify-content:center;gap:10px;margin-top:20px}
.sentence-card{background:rgba(255,255,255,.94);border-radius:26px;box-shadow:var(--shadow-soft);padding:24px;font-size:clamp(28px,4vw,44px);font-weight:850;text-align:center;max-width:800px;margin:0 auto 22px}.sentence-blank{display:inline-block;min-width:120px;border-bottom:5px solid #6d75a1;color:var(--purple-dark)}
.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(110px,170px));gap:13px;justify-content:center}.memory-card{height:120px;border:0;border-radius:20px;background-image:var(--card-art);background-size:contain;background-position:center;background-repeat:no-repeat;color:transparent;font-size:24px;font-weight:950;filter:drop-shadow(0 8px 10px rgba(53,61,91,.14));position:relative}.memory-card span{position:absolute;inset:15%;display:grid;place-items:center;background:rgba(255,255,255,.92);border-radius:14px;color:transparent;transition:color .15s ease}.memory-card:after{content:"?";position:absolute;inset:0;display:grid;place-items:center;color:#6a5b94;font-size:34px}.memory-card.flipped span,.memory-card.matched span{color:#2f3955}.memory-card.flipped:after,.memory-card.matched:after{display:none}.memory-card.matched{filter:drop-shadow(0 0 8px rgba(79,190,125,.45));transform:translateY(-2px)}
.speed-zone{text-align:center}.speed-word{font-size:clamp(60px,10vw,108px);font-weight:950;background:white;border-radius:30px;padding:24px 40px;box-shadow:var(--shadow);min-width:330px}.speed-controls{margin-top:22px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.feedback-panel{position:absolute;left:50%;bottom:25px;transform:translateX(-50%);min-width:min(520px,88%);background:rgba(255,255,255,.97);border-radius:22px;box-shadow:var(--shadow);padding:16px 18px;text-align:center;z-index:8;animation:rise .25s ease}.feedback-panel.good{border:3px solid #74d29a}.feedback-panel.try{border:3px solid #f0a58a}.feedback-panel strong{display:block;font-size:19px}.feedback-panel p{margin:4px 0 0;color:var(--muted)}
.result-card{background:white;border-radius:32px;box-shadow:var(--shadow);padding:28px;text-align:center;width:min(640px,100%)}.result-card img.result-art{height:190px;margin:0 auto;object-fit:contain}.result-stars{display:flex;justify-content:center;gap:4px;margin:8px 0}.result-stars img{width:62px;height:62px;object-fit:contain}.result-stars img.empty{filter:grayscale(1);opacity:.18}.reward-row{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:14px 0}.reward-pill{border-radius:15px;background:#f6f7ff;padding:9px 12px;font-weight:850}
.practice-grid,.settings-grid,.shop-grid,.collection-grid,.adult-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.panel-card{background:white;border-radius:28px;box-shadow:var(--shadow-soft);padding:22px}.panel-card h3{margin:0 0 8px}.panel-card p{color:var(--muted);line-height:1.45}.panel-card .big-number{font-size:40px;font-weight:950;color:var(--purple-dark)}.panel-card .small-note{font-size:12px;color:var(--muted)}
.word-list{display:flex;flex-wrap:wrap;gap:9px}.word-tag{border-radius:999px;background:#f1f3fb;padding:8px 12px;font-weight:800;font-size:13px}.word-tag.mastered{background:#e9faef;color:#2e8a56}.word-tag.learning{background:#fff1e9;color:#b95c34}.word-tag.practicing{background:#fff8dc;color:#99770f}
.form-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.form-row label{font-weight:850}.form-control{min-height:48px;border:2px solid #dfe4f2;border-radius:15px;background:white;padding:10px 12px;color:var(--ink)}.form-control:focus{border-color:#8591ff}.custom-word-input{width:100%;min-height:110px;resize:vertical}
.shop-card{text-align:center}.shop-card img{height:145px;margin:0 auto;object-fit:contain}.shop-card h3{margin:10px 0 4px}.shop-card .cost{font-weight:900;color:#a66c00;margin:7px 0 14px}.shop-card.equipped{box-shadow:0 0 0 4px rgba(111,102,255,.22),var(--shadow-soft)}
.collect-card{text-align:center}.collect-card img{height:118px;margin:0 auto;object-fit:contain}.collect-card.locked img{filter:grayscale(1);opacity:.22}.collect-card strong{display:block;margin-top:8px}.collect-card span{color:var(--muted);font-size:12px}
.tutorial-card{width:min(700px,94vw);background:white;border-radius:32px;box-shadow:var(--shadow);padding:28px;text-align:center}.tutorial-card img{height:170px;margin:0 auto 8px;object-fit:contain}.tutorial-card h2{font-size:32px;margin:0 0 10px}.tutorial-card p{font-size:18px;color:var(--muted);line-height:1.55}.tutorial-dots{display:flex;justify-content:center;gap:7px;margin:18px 0}.tutorial-dot{width:11px;height:11px;border-radius:50%;background:#d7dbea}.tutorial-dot.on{background:var(--purple)}
.modal-root{position:fixed;inset:0;z-index:100;pointer-events:none}.modal-root.active{pointer-events:auto;background:rgba(33,39,59,.48);backdrop-filter:blur(5px);display:grid;place-items:center;padding:20px}.modal{width:min(620px,94vw);max-height:90vh;overflow:auto;background:white;border-radius:30px;box-shadow:0 28px 80px rgba(26,33,54,.3);padding:25px}.modal h2{margin:0 0 12px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}.toast{position:fixed;left:50%;top:105px;transform:translate(-50%,-16px);z-index:120;background:#29324d;color:white;border-radius:15px;padding:11px 17px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.2s ease}.toast.show{opacity:1;transform:translate(-50%,0)}
.debug-panel{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;background:#171b29;color:#dde5ff;border-radius:22px;padding:18px}.debug-panel h3{color:white}.debug-panel pre{white-space:pre-wrap;word-break:break-word}.debug-warn{color:#ffd37a}.debug-bad{color:#ff9b9b}.debug-good{color:#9df0be}
.empty-state{background:white;border-radius:28px;box-shadow:var(--shadow-soft);padding:34px;text-align:center;color:var(--muted)}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
@keyframes pop{0%{transform:scale(1)}80%{transform:scale(1.18)}100%{transform:scale(.01);opacity:0}}
@keyframes rise{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes floatFirefly{from{transform:translate(-7px,-7px)}to{transform:translate(11px,10px)}}
@media(max-width:1080px){.dashboard-grid{grid-template-columns:repeat(2,1fr)}.world-grid{grid-template-columns:repeat(3,1fr)}.level-path{grid-template-columns:repeat(3,1fr)}.game-shell{grid-template-columns:1fr}.game-sidebar{display:grid;grid-template-columns:repeat(2,1fr)}.side-character{min-height:170px}.practice-grid,.settings-grid,.shop-grid,.collection-grid,.adult-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.topbar{height:72px;grid-template-columns:52px 1fr auto;padding:8px 10px}.brand-small{font-size:10px}.brand-big{font-size:20px}.icon-btn{width:46px;height:46px;border-radius:15px}.icon-btn img{width:32px;height:32px}.stat-pill{display:none}.screen{padding:14px}.hero{grid-template-columns:1fr;padding:26px;min-height:0}.hero-art{margin-top:8px}.hero-art img{max-height:205px}.dashboard-grid,.world-grid,.level-path,.practice-grid,.settings-grid,.shop-grid,.collection-grid,.adult-grid{grid-template-columns:1fr}.progress-strip{grid-template-columns:repeat(2,1fr)}.dash-card{min-height:138px;grid-template-columns:74px 1fr}.dash-card img{width:68px;height:68px}.world-banner{grid-template-columns:1fr;text-align:center}.world-banner-art img{max-height:160px}.game-stage{min-height:650px;padding:12px}.game-sidebar{grid-template-columns:1fr}.game-hud{align-items:flex-start}.progress-bar{min-width:120px}.answer-grid{grid-template-columns:1fr;width:100%}.balloon-grid,.river-lane,.door-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.feed-wrap{grid-template-columns:1fr}.animal-box img{max-height:205px}.memory-grid{grid-template-columns:repeat(3,1fr)}.footer-bar{display:none}.page-head{align-items:flex-start;flex-direction:column}.speed-word{min-width:0;width:100%}}
@media(max-width:430px){.balloon-grid,.river-lane,.door-grid{grid-template-columns:1fr 1fr}.balloon-option{min-height:160px}.memory-grid{grid-template-columns:repeat(2,1fr)}.progress-strip{grid-template-columns:1fr 1fr}.hero h1{font-size:43px}.hero-actions>*{width:100%}}
.reduce-motion *, .reduce-motion *:before,.reduce-motion *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
.level-number img{width:30px;height:30px;object-fit:contain}.challenge-intro{overflow:hidden}.challenge-intro .result-art{filter:drop-shadow(0 14px 18px rgba(50,55,90,.18))}

@keyframes rewardPop{0%{transform:translateY(22px) scale(.5);opacity:0}60%{transform:translateY(-8px) scale(1.08);opacity:1}100%{transform:translateY(0) scale(1);opacity:1}}

/* Learning-quality upgrades */
.hear-find-prompt{border:3px solid rgba(111,102,255,.18);background:rgba(255,255,255,.97)}
.hear-find-prompt h2{font-size:clamp(27px,3.5vw,42px)}
.hear-find-speaker{font-size:18px;padding:11px 16px;box-shadow:0 7px 18px rgba(73,82,150,.12)}
.hear-find-grid .answer-card{min-height:108px}
.teach-highlight{position:relative;z-index:5;box-shadow:0 0 0 7px rgba(255,210,66,.32),0 0 0 13px rgba(111,102,255,.15),var(--shadow-soft)!important;transform:scale(1.08)!important;animation:teachPulse .7s ease-in-out infinite alternate!important;background:#fff9cf!important;border-color:#f0c845!important}
.correction-target{box-shadow:0 0 0 6px rgba(95,203,138,.23),var(--shadow-soft)!important;border-color:#5fcb8a!important;background:#effff5!important;transform:scale(1.035)}
.correction-dim{opacity:.3!important;filter:grayscale(.55);pointer-events:none!important;transform:none!important}
.treasure-bonus-count{display:block;margin-top:7px;color:#a66c00!important;font-weight:850}
.report-wrap{overflow-x:auto}
.report-table{width:100%;border-collapse:collapse;min-width:860px;font-size:13px}
.report-table th,.report-table td{padding:11px 10px;border-bottom:1px solid #e9ecf4;text-align:left;vertical-align:middle}
.report-table th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#6d7891;background:#f7f8fc;position:sticky;top:0}
.report-table tbody tr:hover{background:#fafbff}
.report-status{display:inline-block;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900;background:#eef1f7;color:#667085}
.report-status.learning{background:#fff1e9;color:#b95c34}
.report-status.practicing{background:#fff8dc;color:#99770f}
.report-status.mastered{background:#e9faef;color:#2e8a56}
@keyframes teachPulse{from{transform:scale(1.045)}to{transform:scale(1.09)}}

/* Full polish upgrade */
.compact-stats{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}.session-table{min-width:760px;margin-top:14px}.page-head-actions{display:flex;gap:9px;flex-wrap:wrap}.character-effects{overflow:visible}.treasure-answer.correction-dim .treasure-open-label{opacity:0!important}.door-option.correction-dim,.train-car.correction-dim,.firefly.correction-dim{opacity:.28!important}.door-option.correction-target span,.train-car.correction-target span,.firefly.correction-target span{box-shadow:0 0 0 5px rgba(95,203,138,.22)}
@keyframes happyBounce{0%,100%{transform:translateY(0) scale(1)}35%{transform:translateY(-16px) scale(1.07)}65%{transform:translateY(-4px) scale(1.04)}}
@keyframes thinkingTilt{0%{transform:rotate(0)}45%{transform:rotate(-6deg)}100%{transform:rotate(-3deg)}}
@keyframes bubblePop{0%{transform:scale(.82);opacity:.4}100%{transform:scale(1);opacity:1}}
@keyframes starBurst{0%{transform:translate(-50%,-50%) scale(.4);opacity:0}30%{opacity:1}100%{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.95);opacity:0}}
@keyframes doorOpen{0%{transform:scale(1)}55%{transform:perspective(500px) rotateY(-18deg) scale(1.03)}100%{transform:perspective(500px) rotateY(-6deg) scale(1.02)}}
@keyframes trainCheer{0%,100%{transform:translateY(0)}35%{transform:translateY(-10px)}65%{transform:translateY(-3px)}}
@keyframes fireflyFound{0%{transform:scale(1)}60%{transform:scale(1.25)}100%{transform:scale(.9);opacity:.2}}
@media(max-width:720px){.compact-stats{grid-template-columns:1fr 1fr 1fr}.train-car{width:150px}.door-option{height:200px}.firefly{width:104px;height:82px}}
@media(max-width:430px){.compact-stats{grid-template-columns:1fr}.train-car{width:140px}.door-option{height:180px}.firefly-field{height:420px}}
