:root{color-scheme:light;--ink: #1b2530;--muted: #5a6c78;--paper: #fff8df;--line: #7c613e;--accent: #2f8f4e;--accent-strong: #1f6d39;--mark: #f8d34d;--good: #2f8f57;--bad: #b13d30;--dirt: #7b5132;--grass: #52a545;--shadow: 0 12px 0 rgba(42, 28, 18, .18), 0 18px 34px rgba(42, 28, 18, .18)}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:linear-gradient(180deg,#8bd4ef 0,#8bd4ef 360px,#94c36d 360px,#94c36d)}button,input,select{font:inherit}button{min-height:42px;border:3px solid #16371f;border-radius:4px;color:#fff;background:var(--accent);padding:0 16px;box-shadow:inset 0 -4px #0000002e,0 4px #16371f;font-weight:750;cursor:pointer}button:hover{background:var(--accent-strong)}.shell{width:min(1180px,calc(100vw - 32px));margin:0 auto;padding:24px 0 40px}.app-shell{display:block;width:calc(100vw - 412px);margin-left:316px;margin-right:96px}.quest-main{min-width:0}.quest-sidebar{position:fixed;inset:0 auto 0 0;z-index:20;display:grid;grid-template-rows:auto 1fr;gap:14px;width:220px;border:4px solid #2b1b13;border-left:0;border-top:0;border-bottom:0;border-radius:0 6px 6px 0;background:linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px) 0 0 / 22px 22px,#f5df99;padding:14px;box-shadow:var(--shadow)}.quest-logo{display:block;width:100%;aspect-ratio:3 / 2;object-fit:contain;border:3px solid #2b1b13;border-radius:6px;background:#fff8df;transform:scale(1.12);transform-origin:center}.quest-nav{display:grid;grid-template-rows:auto 1fr;gap:8px}.quest-nav-primary,.quest-nav-secondary{display:grid;gap:8px}.quest-nav-secondary{align-self:end}.quest-nav button{justify-content:start;width:100%;min-height:42px;padding:0 12px;font-size:.88rem;text-align:left}.quest-nav button.active{background:var(--accent);color:#fff}.menu-key-balance{display:block;border:3px solid #2b1b13;border-radius:6px;background:#fff8df;padding:10px 12px;font-size:.9rem;font-weight:900}.hidden{display:none!important}.landing-shell,.profile-shell{width:min(1180px,calc(100vw - 32px));min-height:100vh;margin:0 auto;padding:28px 0}.landing-hero{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(360px,1.2fr);gap:24px;align-items:stretch;min-height:calc(100vh - 56px)}.landing-copy,.portal-scene,.profile-gate{border:4px solid #2b1b13;border-radius:6px;box-shadow:var(--shadow)}.landing-copy{display:grid;align-content:center;gap:18px;background:linear-gradient(90deg,rgba(255,255,255,.18) 1px,transparent 1px) 0 0 / 24px 24px,linear-gradient(rgba(255,255,255,.18) 1px,transparent 1px) 0 0 / 24px 24px,#d7aa63;padding:clamp(24px,5vw,48px)}.landing-copy h1{font-size:clamp(3rem,7vw,5.8rem)}.landing-text{max-width:34rem;margin:0;color:#3f3328;font-size:1.15rem;line-height:1.45;font-weight:700}.account-form{display:grid;width:min(420px,100%);gap:12px;align-items:start}.account-form label{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;align-items:center;color:#3f3328;font-size:.82rem;font-weight:900;text-transform:uppercase}.account-form input{width:100%;min-width:0;min-height:46px;border:3px solid var(--line);border-radius:4px;padding:0 12px;color:var(--ink);background:#fff;box-shadow:inset 0 -4px #00000014}.account-actions{display:flex;flex-wrap:wrap;gap:10px;padding-left:108px}.account-actions button{min-width:132px;min-height:56px;font-size:1.1rem}.account-message{min-height:1.4em;padding-left:108px;color:#3f3328;font-weight:800}.portal-scene{overflow:hidden;min-height:560px;background:#87d8ff}.landing-sky{position:relative;height:100%;min-height:inherit;overflow:hidden;background:linear-gradient(180deg,#87d8ff 0,#87d8ff 68%,#5aa749 68%,#5aa749)}.landing-ground{position:absolute;left:0;right:0;bottom:0;height:120px;background:linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px) 0 0 / 30px 30px,linear-gradient(rgba(255,255,255,.12) 1px,transparent 1px) 0 0 / 30px 30px,linear-gradient(180deg,var(--grass) 0 30px,var(--dirt) 30px 100%)}.problem-block{position:absolute;bottom:150px;display:grid;width:78px;height:54px;place-items:center;border:4px solid #2b1b13;background:#fff8df;color:#2b1b13;font-weight:900;text-transform:uppercase;box-shadow:inset 0 -8px #0000001f;animation:solveBlock 6s infinite steps(1,end)}.block-one{left:22%;animation-delay:.8s}.block-two{left:44%;animation-delay:2.1s}.block-three{left:63%;animation-delay:3.2s}.portal{position:absolute;right:8%;bottom:116px;width:112px;height:190px;border:10px solid #2b1b13;background:linear-gradient(90deg,rgba(255,255,255,.25) 1px,transparent 1px) 0 0 / 18px 18px,linear-gradient(180deg,#7c3fc4,#35c4e8);box-shadow:0 0 0 8px #53326f,0 0 28px #35c4e8cc}.portal span{display:block;width:100%;height:100%;background:linear-gradient(90deg,transparent 0 35%,rgba(255,255,255,.28) 35% 48%,transparent 48% 100%);animation:portalPulse 1.2s infinite steps(2,end)}.landing-character{position:absolute;left:8%;bottom:128px;width:82px;height:140px;animation:heroWalk 6s infinite linear}.landing-character span{position:absolute;display:block;border:3px solid #2b1b13;box-shadow:inset 0 -5px #0000002e}.landing-character .head{left:23px;top:0;width:36px;height:36px;background:#c48a5a}.landing-character .head:before,.landing-character .head:after{position:absolute;top:14px;width:5px;height:5px;background:#151515;content:""}.landing-character .head:before{left:9px}.landing-character .head:after{right:9px}.landing-character .body{left:19px;top:39px;width:44px;height:50px;background:#2f8f4e}.landing-character .arm{top:44px;width:18px;height:48px;background:#c48a5a}.landing-character .arm-left{left:0;animation:armSwing .55s infinite steps(2,end)}.landing-character .arm-right{right:0;animation:armSwing .55s infinite steps(2,end) reverse}.landing-character .leg{top:88px;width:20px;height:48px;background:#315d9a}.landing-character .leg-left{left:20px;animation:legSwing .55s infinite steps(2,end)}.landing-character .leg-right{right:20px;animation:legSwing .55s infinite steps(2,end) reverse}@keyframes heroWalk{0%{left:7%;transform:scale(.62)}18%{left:22%;transform:scale(.7)}38%{left:43%;transform:scale(.82)}58%{left:62%;transform:scale(.94)}78%{left:80%;opacity:1;transform:scale(1)}86%{left:88%;opacity:0;transform:scale(1.08)}to{left:88%;opacity:0;transform:scale(1.08)}}@keyframes armSwing{0%,to{transform:translateY(0)}50%{transform:translateY(8px)}}@keyframes legSwing{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}@keyframes solveBlock{0%,24%{background:#fff8df}25%,to{background:var(--mark)}}@keyframes portalPulse{0%,to{opacity:.55}50%{opacity:1}}.profile-gate{display:grid;gap:20px;min-height:calc(100vh - 56px);align-content:start;background:linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px) 0 0 / 28px 28px,linear-gradient(rgba(255,255,255,.12) 1px,transparent 1px) 0 0 / 28px 28px,#d7aa63;padding:clamp(18px,4vw,36px)}.profile-header{display:flex;gap:16px;align-items:start;justify-content:space-between}.profile-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:start;gap:14px}.profile-card,.new-profile{border:3px solid var(--line);border-radius:6px;background:var(--paper);box-shadow:var(--shadow)}.profile-card{display:grid;gap:10px;align-content:start;justify-items:start;padding:16px}.profile-card.editing{justify-items:stretch}.profile-thumb{display:grid;width:64px;height:64px;place-items:center;overflow:hidden;border:3px solid #2b1b13;border-radius:6px;color:#fff;background:var(--accent);font-size:1.35rem;font-weight:900}.profile-thumb img{width:100%;height:100%;object-fit:cover}.profile-card strong{font-size:1.25rem}.profile-card span{color:var(--muted);font-weight:800}.profile-actions{display:flex;flex-wrap:wrap;align-self:start;gap:8px;width:100%}.profile-actions button{flex:1 1 96px}.profile-edit-form{display:grid;gap:12px}.profile-edit-form label{display:grid;gap:5px;color:var(--muted);font-size:.76rem;font-weight:800;text-transform:uppercase}.profile-edit-form input,.profile-edit-form select{min-height:42px;border:3px solid var(--line);border-radius:4px;padding:0 10px;color:var(--ink);background:#fff}.profile-edit-form input[type=file]{padding:8px}.parental-settings,.unlock-shop,.progress-history{display:grid;gap:10px;min-width:0;margin:0;border:2px solid rgba(124,97,62,.55);border-radius:6px;background:#ffffff61;padding:12px}.parental-settings legend{color:var(--muted);font-size:.86rem;font-weight:850}.unlock-shop h3,.progress-history h3{margin:0;font-size:1rem}.unlock-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.unlock-list button{min-height:40px;padding:0 10px;font-size:.9rem}.history-list{display:grid;gap:6px}.history-row{display:grid;grid-template-columns:minmax(82px,.9fr) repeat(3,minmax(70px,1fr));gap:8px;align-items:center;border:2px solid rgba(124,97,62,.4);border-radius:4px;background:#ffffff5c;padding:8px;font-size:.85rem}.form-message{min-height:20px;color:var(--bad);font-size:.9rem;font-weight:800}.avatar-editor{display:grid;gap:12px;border:2px solid rgba(124,97,62,.55);border-radius:6px;background:#ffffff61;padding:12px}.avatar-editor h3{margin:0;font-size:1rem}.avatar-editor-preview{display:grid;min-height:180px;place-items:center;overflow:hidden;border:3px solid #2b1b13;border-radius:6px;background:linear-gradient(180deg,#87d8ff 0,#87d8ff 68%,#5aa749 68%,#5aa749)}.avatar-editor-preview canvas{width:96px;height:144px;image-rendering:pixelated}.avatar-editor-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}button.danger{border-color:#5b1f18;background:var(--bad);box-shadow:inset 0 -4px #0000002e,0 4px #5b1f18}button.danger:hover{background:#8f3026}button:disabled{cursor:not-allowed;opacity:.55}.new-profile{display:grid;grid-template-columns:minmax(140px,1fr) minmax(120px,160px) minmax(120px,160px) minmax(140px,180px) auto;gap:12px;align-items:end;padding:16px}.new-profile h2{grid-column:1 / -1}.new-profile label{display:grid;gap:5px;color:var(--muted);font-size:.76rem;font-weight:800;text-transform:uppercase}.new-profile input,.new-profile select{min-height:42px;border:3px solid var(--line);border-radius:4px;padding:0 10px}.topbar,.game-stage,.status,.workspace{display:grid;gap:16px}.reading-focus .quest-sidebar,.reading-focus .topbar,.reading-focus .game-stage,.reading-focus .status{display:none}.reading-focus.app-shell{display:block;margin-left:auto;width:min(1180px,calc(100vw - 32px))}.reading-page,.math-page{min-height:calc(100vh - 48px)}.topbar{grid-template-columns:minmax(220px,1fr) auto;align-items:end;margin-bottom:18px}.student-heading{display:grid;grid-template-columns:86px minmax(0,1fr);gap:16px;align-items:center}.avatar{display:grid;width:86px;height:86px;place-items:center;overflow:hidden;border:4px solid #2b1b13;border-radius:6px;color:#fff;background:var(--accent);box-shadow:var(--shadow);font-size:2rem;font-weight:850}.avatar img{width:100%;height:100%;object-fit:cover}.kicker,.status-label{margin:0;color:var(--muted);font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}h1,h2{margin:0;letter-spacing:0}h1{font-size:clamp(2rem,5vw,4rem);line-height:.95;text-shadow:0 3px 0 rgba(255,255,255,.35)}h2{font-size:1.35rem}.controls{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-end;gap:10px}.controls>button{min-width:96px;min-height:42px}.controls label{display:grid;gap:5px;color:var(--muted);font-size:.76rem;font-weight:800;text-transform:uppercase}select,.controls input,.answer{min-height:42px;border:3px solid var(--line);border-radius:4px;color:var(--ink);background:#fff}select,.controls input{min-width:118px;padding:0 10px}.controls input{width:86px}.upload-control{position:relative}.upload-control input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}.upload-control span{display:grid;min-width:96px;min-height:42px;place-items:center;border:3px solid #16371f;border-radius:4px;color:#fff;background:var(--accent);padding:0 14px;box-shadow:inset 0 -4px #0000002e,0 4px #16371f;cursor:pointer}.upload-control:hover span{background:var(--accent-strong)}.game-stage{grid-template-columns:minmax(0,1fr);align-items:stretch;margin-bottom:18px}.sky{position:relative;min-height:320px;overflow:hidden;border:4px solid #2b1b13;border-radius:6px;background:linear-gradient(180deg,#87d8ff 0,#87d8ff 67%,#5aa749 67%,#5aa749);box-shadow:var(--shadow)}.sun,.cloud,.ground,.avatar-wrap,.shadow{position:absolute}.sun{top:28px;right:38px;width:96px;height:96px;background:#ffe36a;box-shadow:0 0 0 8px #ffe36a59}.cloud{width:112px;height:40px;background:linear-gradient(#fff,#fff) 0 16px / 112px 24px no-repeat,linear-gradient(#fff,#fff) 24px 0 / 40px 40px no-repeat,linear-gradient(#fff,#fff) 64px 8px / 32px 32px no-repeat;opacity:.9}.cloud-one{top:56px;left:10%}.cloud-two{top:112px;right:20%;transform:scale(.72)}.ground{left:0;right:0;bottom:0;height:86px;background:linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px) 0 0 / 28px 28px,linear-gradient(rgba(255,255,255,.12) 1px,transparent 1px) 0 0 / 28px 28px,linear-gradient(180deg,var(--grass) 0 24px,var(--dirt) 24px 100%)}.avatar-wrap{left:calc(var(--journey, 0) * 1%);bottom:48px;width:128px;height:192px;transform:translate(-50%) scale(var(--age-scale, .62));transform-origin:bottom center;transition:left .24s ease,transform .24s ease}.avatar-wrap canvas{position:relative;z-index:2;width:128px;height:192px;image-rendering:pixelated}.shadow{left:24px;right:24px;bottom:-6px;z-index:1;height:14px;background:#22171052}.quest-panel{display:grid;grid-template-columns:minmax(160px,220px) minmax(0,1fr);align-items:center;gap:16px;border:4px solid #2b1b13;border-radius:6px;background:linear-gradient(90deg,rgba(255,255,255,.18) 1px,transparent 1px) 0 0 / 24px 24px,linear-gradient(rgba(255,255,255,.18) 1px,transparent 1px) 0 0 / 24px 24px,#d7aa63;padding:18px;box-shadow:var(--shadow)}.quest-panel strong{display:block;margin-top:6px;font-size:2.3rem;line-height:1}.level-track{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.level-track span{min-width:0;border:3px solid #2b1b13;background:#f5df99;padding:9px 8px;text-align:center;font-size:.82rem;font-weight:850;line-height:1.05}.level-track span.active{color:#fff;background:var(--accent)}.inventory-panel{display:grid;gap:16px}.inventory-preview{display:grid;grid-template-columns:128px minmax(0,1fr);gap:18px;align-items:center;border:4px solid #2b1b13;border-radius:6px;background:var(--paper);padding:16px;box-shadow:var(--shadow)}.inventory-preview canvas{width:96px;height:144px;image-rendering:pixelated}.inventory-preview strong,.inventory-preview span{display:block}.status{grid-template-columns:1fr 1fr auto;align-items:stretch;margin-bottom:20px}.progress-card,.task{border:3px solid var(--line);border-radius:6px;background:var(--paper);box-shadow:var(--shadow)}.progress-card{display:grid;gap:10px;padding:14px}.progress-card strong{font-size:1.4rem}.meter{height:16px;overflow:hidden;border:2px solid #2b1b13;border-radius:4px;background:#5d422c}.meter span{display:block;width:0%;height:100%;background:linear-gradient(90deg,rgba(255,255,255,.28) 1px,transparent 1px) 0 0 / 14px 14px,var(--mark);transition:width .18s ease}.workspace{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);align-items:start}.claim-band{display:flex;justify-content:center;margin:0 0 18px}.claim-button{display:inline-flex;min-height:58px;align-items:center;gap:12px;border-color:#6a4516;background:#d7a82f;color:#2b1b13;box-shadow:inset 0 -5px #0000002e,0 5px #6a4516,0 0 0 5px #f8d34d38;font-size:1.05rem}.claim-button:hover{background:#f0c64a}.claim-key{display:inline-grid;width:32px;height:32px;place-items:center;border:3px solid #6a4516;border-radius:50%;background:#ffe36a;font-size:1.35rem;animation:claimKeyThrob .82s ease-in-out infinite}.chest-market{display:grid;gap:12px;margin:0 0 18px;border:3px solid var(--line);border-radius:6px;background:var(--paper);padding:14px;box-shadow:var(--shadow)}.chest-market .section-head{margin-bottom:0}.market-keys{display:inline-flex;align-items:center;gap:6px;margin-top:4px;color:var(--muted);font-weight:850}.category-picker{display:grid;gap:10px}.market-art-panel{position:relative;overflow:hidden;border:4px solid #2b1b13;border-radius:6px;background:#2b1b13;box-shadow:inset 0 -8px #0000003d}.market-art-panel img{display:block;width:100%;aspect-ratio:1;object-fit:cover}.market-art-key-balance{position:absolute;top:2.5%;left:2.5%;display:inline-flex;align-items:center;gap:6px;border:3px solid #6a4516;border-radius:6px;background:#fff8dfe6;padding:8px 10px;color:#2b1b13;font-weight:950}.chest-sign-hotspot{position:absolute;left:72.5%;right:3.8%;display:grid;min-height:0;align-content:center;justify-items:start;gap:0;border:3px solid transparent;border-radius:6px;background:#ffe36a14;color:transparent;box-shadow:none}.chest-sign-hotspot.low{top:67%;height:7%}.chest-sign-hotspot.medium{top:74.6%;height:7%}.chest-sign-hotspot.high{top:82.2%;height:7%}.chest-sign-hotspot strong,.chest-sign-hotspot span{position:absolute;width:1px;height:1px;overflow:hidden}.chest-sign-hotspot:hover,.chest-sign-hotspot:focus-visible,.chest-sign-hotspot.selected{border-color:var(--mark);background:#ffe36a3d;outline:none}.chest-sign-hotspot:disabled{border-color:transparent;background:#525b608c;cursor:not-allowed}.category-picker{grid-template-columns:repeat(5,minmax(0,1fr))}.category-picker button{display:grid;min-width:0;min-height:58px;align-content:center;justify-items:center;gap:4px;border-color:#4b3923;background:#d7aa63;color:#2b1b13;box-shadow:inset 0 -4px #00000024,0 4px #4b3923}.category-picker button{min-height:48px;padding:0 8px}.category-picker button.selected{outline:4px solid var(--mark);outline-offset:2px}.category-picker button:disabled{color:#5f6870;background:#a9b2b8;filter:grayscale(.6)}.market-action{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.market-action span{color:var(--muted);font-weight:850}.reward-scene{position:relative;min-height:calc(100vh - 52px);overflow:hidden;border:4px solid #2b1b13;border-radius:6px;background:radial-gradient(circle at 12% 18%,#fff 0 2px,transparent 3px),radial-gradient(circle at 82% 28%,#fff 0 2px,transparent 3px),linear-gradient(180deg,#223f69 0,#223f69 62%,#5aa749 62%,#5aa749);box-shadow:var(--shadow)}.market-scene{position:relative;min-height:calc(100vh - 52px);overflow:hidden;border:4px solid #2b1b13;border-radius:6px;background:#2b1b13 url(/market-chest-shop.png) center / cover no-repeat;box-shadow:var(--shadow)}.market-intro-phase,.market-reveal-phase{position:absolute;top:0;right:0;bottom:0;left:0}.market-intro-phase{animation:marketIntroCut 10s steps(1,end) forwards}.market-reveal-phase{opacity:0;pointer-events:none;background:radial-gradient(circle at 12% 18%,#fff 0 2px,transparent 3px),radial-gradient(circle at 82% 28%,#fff 0 2px,transparent 3px),linear-gradient(180deg,#223f69 0,#223f69 62%,#5aa749 62%,#5aa749);animation:marketRevealCut 10s steps(1,end) forwards}.market-key-counter{position:absolute;top:14px;left:50%;z-index:6;display:flex;gap:10px;align-items:center;transform:translate(-50%);border:3px solid #2b1b13;border-radius:6px;background:var(--paper);padding:8px 12px;font-weight:900}.market-key-counter strong{color:var(--bad)}.market-speech{position:absolute;top:16px;left:50%;z-index:7;width:min(720px,calc(100% - 28px));transform:translate(-50%);border:4px solid #2b1b13;border-radius:8px;background:#fff8dff2;padding:14px;color:#2b1b13;box-shadow:var(--shadow);font-weight:900;line-height:1.25;text-align:center}.market-prize-chest{position:absolute;right:30%;bottom:7%;z-index:5;width:96px;height:78px;opacity:0;animation:chestPresentation 9s steps(18,end) forwards}.market-prize-chest.medium{width:122px;height:96px}.market-prize-chest.high{width:150px;height:118px}.market-chest-box,.market-chest-lid{position:absolute;left:0;right:0;border:4px solid #2b1b13;background:linear-gradient(90deg,transparent 0 45%,#f8d34d 45% 55%,transparent 55%),#a7632f}.market-chest-box{bottom:0;height:58%;border-radius:6px 6px 3px 3px}.market-chest-lid{bottom:50%;height:44%;border-radius:14px 14px 5px 5px;transform-origin:right bottom;animation:marketChestOpen 9s steps(16,end) forwards}.market-prize{position:absolute;right:calc(30% + 36px);bottom:calc(7% + 70px);z-index:6;display:grid;width:58px;height:58px;place-items:center;border:4px solid #2b1b13;border-radius:8px;background:var(--mark);color:#2b1b13;font-size:2rem;opacity:0;animation:marketPrizeReveal 9s steps(14,end) forwards}.market-prize img{display:block;width:92px;height:92px;object-fit:contain;filter:drop-shadow(0 4px 0 rgba(43,27,19,.32))}.market-reveal-stage{bottom:78px;grid-template-columns:130px 170px;opacity:0;animation:marketRevealStage 10s steps(1,end) forwards}.market-reveal-avatar{animation:rewardAvatarSequence 10s steps(26,end) forwards}.market-reveal-chest.low{width:110px;height:86px}.market-reveal-chest.medium{width:135px;height:104px}.market-reveal-chest.high{width:160px;height:124px}.market-reveal-chest .chest-box,.market-reveal-chest .chest-lid{width:100%}.market-reveal-chest .chest-lid{animation:marketRevealChestOpen 10s steps(14,end) forwards}.market-reveal-stage .market-prize{right:auto;bottom:160px;left:246px;animation:marketRevealPrize 10s steps(14,end) forwards}.market-caption{opacity:0;pointer-events:none;animation:marketCaptionReveal 10s steps(1,end) forwards}.reward-key-row{position:absolute;top:16px;left:50%;z-index:4;display:flex;gap:12px;transform:translate(-50%)}.reward-key,.burst-key{display:grid;width:36px;height:36px;place-items:center;border:3px solid #6a4516;border-radius:50%;background:#ffe36a;color:#2b1b13;box-shadow:0 4px #2b1b133d;font-size:1.45rem;font-weight:900}.reward-key{opacity:0;animation:keyLineup 14.4s steps(28,end) forwards;animation-delay:calc(var(--key-index) * .42s)}.reward-stage{position:absolute;left:50%;bottom:58px;display:grid;grid-template-columns:130px 160px;gap:40px;align-items:end;transform:translate(-50%)}.reward-avatar{position:relative;width:128px;height:192px;animation:rewardAvatarSequence 14.4s steps(36,end) forwards}.reward-avatar canvas{position:relative;z-index:2;width:128px;height:192px;image-rendering:pixelated}.reward-hand{position:absolute;right:18px;top:94px;width:22px;height:22px;border:3px solid #6a4516;border-radius:50%;background:#ffe36a;opacity:0;animation:keysInHand 14.4s steps(1,end) forwards}.treasure-chest{position:relative;width:150px;height:118px}.chest-box,.chest-lid{position:absolute;left:0;width:150px;border:4px solid #2b1b13;background:linear-gradient(90deg,transparent 0 45%,#f8d34d 45% 55%,transparent 55%),#a7632f;box-shadow:inset 0 -8px #00000038}.chest-box{bottom:0;height:72px;border-radius:8px 8px 4px 4px}.chest-lid{right:0;left:auto;bottom:62px;height:52px;border-radius:18px 18px 6px 6px;transform-origin:right bottom;transform-style:preserve-3d;animation:chestOpen 14.4s steps(18,end) forwards}.burst-key{position:absolute;left:56px;bottom:66px;opacity:0;animation:keyBurst 14.4s steps(32,end) forwards;animation-delay:calc(var(--key-index) * .42s)}.reward-caption{position:absolute;left:50%;bottom:18px;display:grid;gap:4px;min-width:min(440px,calc(100% - 28px));transform:translate(-50%);border:3px solid #2b1b13;border-radius:6px;background:var(--paper);padding:12px;text-align:center}.reward-caption strong{font-size:1.25rem}@keyframes claimKeyThrob{0%,to{transform:translateY(0) scale(1)}42%{transform:translateY(-8px) scale(1.18)}62%{transform:translateY(0) scale(1.08)}}@keyframes marketIntroCut{0%,39%{opacity:1}40%,to{opacity:0}}@keyframes marketRevealCut{0%,39%{opacity:0}40%,to{opacity:1}}@keyframes marketRevealStage{0%,39%{opacity:0}40%,to{opacity:1}}@keyframes marketRevealChestOpen{0%,56%{transform:translate(0) rotate(0)}64%,to{transform:translate(20px,-46px) rotate(38deg)}}@keyframes marketRevealPrize{0%,62%{opacity:0;transform:translateY(28px) scale(.4)}74%,to{opacity:1;transform:translateY(-78px) scale(1.1)}}@keyframes marketCaptionReveal{0%,72%{opacity:0;pointer-events:none}73%,to{opacity:1;pointer-events:auto}}@keyframes chestPresentation{0%,55%{opacity:0;transform:translate(46px) scale(.6)}64%,78%{opacity:1;transform:translate(0) scale(1)}to{opacity:1;transform:translate(-108px) scale(1)}}@keyframes marketChestOpen{0%,76%{transform:translate(0) rotate(0)}84%,to{transform:translate(14px,-32px) rotate(36deg)}}@keyframes marketPrizeReveal{0%,82%{opacity:0;transform:translateY(30px) scale(.4)}90%,to{opacity:1;transform:translateY(-62px) scale(1)}}@keyframes chestOpen{0%,48%{transform:translate(0) rotate(0)}53%,to{transform:translate(20px,-46px) rotate(38deg)}}@keyframes keyBurst{0%,53%{opacity:0;transform:translate(0) scale(.7)}62%{opacity:1;transform:translate(calc((var(--key-index) - 1) * 30px),-120px) scale(1)}74%,84%{opacity:1;transform:translate(calc((var(--key-index) - 1) * 48px),-230px) scale(1)}96%,to{opacity:0;transform:translate(-190px,-118px) scale(.55)}}@keyframes keyLineup{0%,53%{opacity:0;transform:translateY(22px) scale(.7)}62%,80%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translate(-210px,86px) scale(.45)}}@keyframes keysInHand{0%,92%{opacity:0}93%,to{opacity:1}}@keyframes rewardAvatarSequence{0%,8%,16%,24%,32%,40%,48%{transform:translateY(0) rotate(0)}4%,20%,36%{transform:translateY(-14px) translate(-8px) rotate(-8deg) scaleX(1.04)}12%,28%,44%{transform:translateY(-7px) translate(8px) rotate(8deg) scaleX(.96)}50%,62%{transform:translate(72px) translateY(0) rotate(0)}72%,80%{transform:translate(72px) translateY(-14px) rotate(-4deg)}86%{transform:translate(72px) translateY(0) rotate(4deg)}96%,to{transform:translate(0) translateY(-12px) rotate(0)}}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;margin-bottom:10px}.task-list{display:grid;gap:10px}.task{padding:14px}.math-summary{display:grid;gap:8px}.math-summary span{color:var(--muted);font-weight:850}.math-page .math-blaster{min-height:calc(100vh - 140px)}.math-page .blaster-arena{min-height:min(68vh,620px)}.math-page .answer-tube{height:min(36vh,260px);font-size:clamp(1.2rem,3vw,2rem)}.math-page .tube-problem{font-size:clamp(1.45rem,3.2vw,2.4rem)}.math-page .tube-player{bottom:calc(min(36vh,260px) + 14px)}.math-blaster{display:grid;gap:12px}.math-play-area{position:relative}.blaster-arena{--tube-side: clamp(32px, 9vw, 128px);--tube-gap: clamp(18px, 4vw, 72px);--player-size: 72px;--tube-count: 5;--tube-track: calc((100% - (2 * var(--tube-side)) - ((var(--tube-count) - 1) * var(--tube-gap))) / var(--tube-count));position:relative;min-height:320px;overflow:hidden;border:4px solid #2b1b13;border-radius:6px;background:radial-gradient(circle at 18% 24%,#fff 0 2px,transparent 3px),radial-gradient(circle at 62% 18%,#fff 0 2px,transparent 3px),radial-gradient(circle at 84% 44%,#fff 0 2px,transparent 3px),linear-gradient(180deg,#18243a,#263f62)}.tube-problem{position:absolute;top:12px;left:50%;z-index:2;min-width:150px;transform:translate(-50%);border:3px solid #2b1b13;background:var(--mark);padding:6px 12px;box-shadow:inset 0 -4px #0000002e;font-size:1.35rem;font-weight:900;text-align:center}.tube-row{position:absolute;left:var(--tube-side);right:var(--tube-side);bottom:0;display:grid;grid-template-columns:repeat(5,minmax(46px,1fr));gap:var(--tube-gap);align-items:end;z-index:3}.answer-tube{position:relative;display:grid;height:170px;min-width:0;place-items:end center;border:4px solid #2b1b13;border-bottom:0;border-radius:10px 10px 0 0;color:#fff;background:linear-gradient(90deg,rgba(255,255,255,.18) 1px,transparent 1px) 0 0 / 16px 16px,#2f8f8d;padding:0 4px 18px;box-shadow:inset 0 -6px #00000038;font-size:1.2rem;font-weight:900;cursor:pointer}.answer-tube:after{position:absolute;top:-28px;left:calc(-1 * var(--tube-gap));width:var(--tube-gap);height:12px;border-top:4px solid #2b1b13;border-bottom:4px solid #2b1b13;background:#a7794b;content:""}.answer-tube:first-child:after{display:none}.answer-tube:before{position:absolute;top:-16px;left:-6px;right:-6px;height:18px;border:4px solid #2b1b13;border-radius:8px;background:#7fd6d4;content:""}.answer-tube.selected{background:linear-gradient(90deg,rgba(255,255,255,.22) 1px,transparent 1px) 0 0 / 16px 16px,#3da9c4;outline:4px solid var(--mark);outline-offset:3px}.tube-player{position:absolute;left:calc(var(--tube-side) + (var(--tube-index, 0) * (var(--tube-track) + var(--tube-gap))) + (var(--tube-track) / 2) - ((var(--player-size) * 1.15) / 2));bottom:184px;z-index:4;width:calc(var(--player-size) * 1.15);height:calc(var(--player-size) * 1.72);transition:left .48s steps(5,end)}.tube-player canvas{width:100%;height:100%;image-rendering:pixelated}.math-blaster.dropping .tube-player{z-index:4}.math-blaster.walking-right .tube-player canvas,.math-blaster.walking-left .tube-player canvas{animation:avatarWalk .48s steps(4,end)}.math-blaster.correct.dropping .tube-player{animation:tubeEnterDrop 1.6s steps(12,end)}.math-blaster.wrong.dropping .tube-player{animation:waterDrop 1.45s steps(12,end)}.math-blaster.correct .answer-tube.selected{background:var(--accent)}.math-blaster.wrong .answer-tube.selected{background:linear-gradient(90deg,rgba(255,255,255,.22) 1px,transparent 1px) 0 0 / 16px 16px,#2f8fbe}.math-blaster.correct.dropping .answer-tube.selected:before{background:radial-gradient(circle at 50% 50%,#fff 0 7px,#f8d34d 8px 12px,transparent 13px),radial-gradient(circle at 18% 24%,#ff5b5b 0 5px,transparent 6px),radial-gradient(circle at 78% 22%,#64e8ff 0 5px,transparent 6px),radial-gradient(circle at 25% 80%,#88ff75 0 5px,transparent 6px),radial-gradient(circle at 82% 78%,#ff8cf0 0 5px,transparent 6px);animation:tubeFireworks .9s steps(6,end) .26s 2}.math-blaster.wrong.dropping .answer-tube.selected:before{background:radial-gradient(circle at 50% 100%,#d8fbff 0 8px,transparent 9px),radial-gradient(circle at 20% 70%,#8de9ff 0 7px,transparent 8px),radial-gradient(circle at 78% 68%,#8de9ff 0 7px,transparent 8px),#7fd6d4;animation:waterSplash 1.05s steps(5,end) .18s 1}.blaster-hud,.blaster-controls{display:grid;gap:8px}.blaster-hud{grid-template-columns:minmax(0,1fr) auto;align-items:center}.blaster-hud span{color:var(--muted);font-weight:850}.blaster-controls{color:var(--muted);font-size:.76rem;font-weight:800;text-transform:uppercase}.math-calculator{position:absolute;top:18px;right:18px;z-index:12;display:grid;width:min(260px,calc(100% - 36px));gap:10px;border:4px solid #2b1b13;border-radius:6px;background:linear-gradient(90deg,rgba(255,255,255,.14) 1px,transparent 1px) 0 0 / 18px 18px,#d7aa63;padding:12px;box-shadow:var(--shadow)}.calculator-display{display:grid;grid-template-columns:auto minmax(0,1fr);min-height:58px;align-items:center;gap:8px;overflow:hidden;border:3px solid #2b1b13;border-radius:4px;background:#fff8df;padding:8px 10px;color:#2b1b13}.calculator-display span{min-width:18px;color:var(--muted);font-weight:900}.calculator-display strong{overflow:hidden;font-size:1.65rem;line-height:1;text-align:right;text-overflow:ellipsis}.calculator-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.calculator-grid button{min-width:0;min-height:48px;padding:0;border-color:#2b1b13;background:#fff8df;color:#2b1b13;box-shadow:inset 0 -4px #0000001f,0 4px #2b1b13;font-size:1.15rem}.calculator-grid button:hover{background:#f5df99}.calculator-grid .operator,.calculator-grid .equals{background:var(--mark)}.calculator-grid .utility{background:#b9c7d1}.calculator-grid .wide{grid-column:span 3}@keyframes tubeDrop{0%{transform:translate(28px) translateY(0)}to{transform:translate(28px) translateY(142px)}}@keyframes tubeEnterDrop{0%{opacity:1;transform:translateY(0) scale(1) rotate(0)}14%{transform:translateY(-8px) scale(1) rotate(-8deg)}28%{transform:translateY(0) scale(1) rotate(8deg)}55%{opacity:1;transform:translateY(120px) scale(.86) rotate(-4deg)}72%{opacity:.65;transform:translateY(168px) scale(.72) rotate(0)}to{opacity:0;transform:translateY(190px) scale(.62) rotate(0)}}@keyframes waterDrop{0%{opacity:1;transform:translateY(0) scale(1)}48%{opacity:1;transform:translateY(128px) scale(.88)}72%{opacity:.72;transform:translateY(166px) scale(.76)}to{opacity:.25;transform:translateY(188px) scale(.66)}}@keyframes tubeFireworks{0%,to{transform:translateY(0) scale(1);box-shadow:0 0 #f8d34d00}50%{transform:translateY(-34px) scale(1.9);box-shadow:0 -18px #f8d34d,-28px -8px #ff5b5b,28px -8px #64e8ff,-16px -36px #88ff75,18px -34px #ff8cf0}}@keyframes waterSplash{0%,to{transform:translateY(0) scale(1);box-shadow:none}45%{transform:translateY(-18px) scale(1.45);box-shadow:-18px -8px #8de9ff,18px -8px #8de9ff,-30px 2px #d8fbff,30px 2px #d8fbff}}@keyframes avatarWalk{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-4px) rotate(-5deg)}50%{transform:translateY(0) rotate(5deg)}75%{transform:translateY(-3px) rotate(-4deg)}}.math-task label{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:12px;align-items:center}.prompt{display:block;min-width:0;overflow-wrap:anywhere;font-size:1.05rem;line-height:1.4}.answer{width:92px;padding:0 10px;text-align:center;font-weight:800}.result{display:block;min-height:20px;margin-top:8px;color:var(--muted);font-size:.9rem;font-weight:750}.task.correct{border-color:#2f8f57e6}.task.correct .result{color:var(--good)}.task.wrong{border-color:#b13d30e6}.task.wrong .result{color:var(--bad)}.story-card h3{margin:0 0 4px;font-size:1.3rem}.story-meta{display:block;margin-bottom:12px;color:var(--muted);font-size:.82rem;font-weight:850;text-transform:uppercase}.story-controls{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;margin-bottom:12px}.reading-timer{display:inline-grid;min-height:38px;place-items:center;border:3px solid #2b1b13;border-radius:4px;background:var(--mark);padding:0 10px;font-size:1rem}.reading-instruction{min-width:0;color:var(--muted);font-weight:800;line-height:1.35}.story-text{display:grid;gap:12px;max-height:440px;overflow:auto;padding-right:6px}.story-text.full-story{max-height:none;overflow:visible}.story-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.math-page-actions{align-items:center}.audio-toggles{display:flex;flex-wrap:wrap;gap:8px}.audio-toggles button{min-width:104px;border-color:#3f3429;background:#6f7782;box-shadow:inset 0 -4px #0000002e,0 4px #3f3429}.audio-toggles button.active{border-color:#16371f;background:var(--accent);box-shadow:inset 0 -4px #0000002e,0 4px #16371f}.audio-toggles button:hover{background:#5b626b}.audio-toggles button.active:hover{background:var(--accent-strong)}.story-text p{margin:0;font-size:1.02rem;line-height:1.55}.question-task{display:grid;gap:12px}.question-task .title{display:block;font-size:1.05rem}.choices{display:grid;gap:8px;min-width:0;margin:0;border:0;padding:0}.choices label{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;border:2px solid rgba(124,97,62,.5);border-radius:4px;background:#ffffff73;padding:8px;cursor:pointer}.choices input{width:18px;height:18px;margin-top:2px;accent-color:var(--accent)}@media(max-width:780px){.landing-shell,.profile-shell{width:min(100vw - 20px,680px);padding-top:14px}.landing-hero{grid-template-columns:1fr;min-height:auto}.landing-copy,.portal-scene{min-height:360px}.landing-character{transform-origin:bottom center}.problem-block{width:64px;height:48px;font-size:.82rem}.portal{right:5%;width:84px;height:150px}.new-profile,.story-controls{grid-template-columns:1fr}.shell{width:min(100vw - 20px,680px);padding-top:14px}.app-shell{display:grid;width:min(100vw - 20px,680px);margin-left:auto;margin-right:auto;gap:12px}.quest-sidebar{position:static;inset:auto;z-index:auto;grid-template-columns:86px minmax(0,1fr);grid-template-rows:auto;align-items:center;width:auto;border:4px solid #2b1b13;border-radius:6px;padding:10px}.quest-logo{height:64px}.quest-nav{display:flex;gap:8px;overflow-x:auto;padding-bottom:3px}.quest-nav-primary,.quest-nav-secondary{display:contents}.menu-key-balance{flex:0 0 auto;padding:7px 10px;white-space:nowrap}.quest-nav button{flex:0 0 auto;width:auto;min-height:38px;white-space:nowrap}.topbar,.game-stage,.status,.workspace{grid-template-columns:1fr}.reward-stage{grid-template-columns:96px 120px;gap:22px}.reward-avatar,.reward-avatar canvas{width:96px;height:144px}.treasure-chest{width:120px;height:96px}.chest-box,.chest-lid{width:120px}.chest-box{height:58px}.chest-lid{bottom:50px;height:42px}.reward-key,.burst-key{width:30px;height:30px;font-size:1.1rem}.student-heading{grid-template-columns:70px minmax(0,1fr)}.avatar{width:70px;height:70px;font-size:1.65rem}.sky{min-height:270px}.quest-panel{grid-template-columns:1fr;min-height:150px}.level-track{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.level-track span{padding:8px 3px;font-size:.68rem}.avatar-wrap{bottom:42px}.math-page{min-height:calc(100vh - 28px)}.math-page .section-head{align-items:start;flex-direction:column}.math-page .story-actions{width:100%;justify-content:stretch}.math-page .story-actions button{flex:1 1 120px}.math-page .audio-toggles{display:grid;flex:1 1 100%;grid-template-columns:1fr 1fr;width:100%}.category-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.market-speech{top:10px;width:calc(100% - 20px);font-size:.9rem}.market-reveal-stage{bottom:58px;grid-template-columns:110px 130px;gap:20px}.market-reveal-stage .market-prize{left:190px;bottom:128px}.math-page .math-blaster{min-height:calc(100vh - 170px)}.math-calculator{position:relative;top:auto;right:auto;width:100%}.math-page .blaster-arena{--tube-side: 14px;--tube-gap: clamp(8px, 2.4vw, 14px);--player-size: 56px;min-height:min(70vh,520px)}.math-page .tube-problem{min-width:0;max-width:calc(100% - 28px);font-size:clamp(1.25rem,6vw,2rem)}.math-page .tube-row{grid-template-columns:repeat(5,minmax(36px,1fr))}.math-page .answer-tube{height:min(34vh,220px);border-width:3px;font-size:clamp(1rem,5vw,1.4rem);padding-bottom:12px}.math-page .answer-tube:before{left:-4px;right:-4px;border-width:3px}.math-page .answer-tube:after{top:-25px;height:10px;border-top-width:3px;border-bottom-width:3px}.math-page .tube-player{bottom:calc(min(34vh,220px) + 18px)}.controls{justify-content:stretch}.controls label{flex:1 1 120px}select,.controls input,.upload-control span,#newDayButton{width:100%}}
