:root{--color-coral:#ff6b6b;--color-coral-light:#ff8e8e;--color-coral-dark:#e55555;--color-teal:#4ecdc4;--color-teal-light:#7eddd6;--color-teal-dark:#3bb5ad;--color-yellow:#ffe66d;--color-yellow-light:#fff0a0;--color-yellow-dark:#f5d43a;--color-mint:#a8e6cf;--color-mint-light:#c5f0df;--color-mint-dark:#7dd4b0;--color-lavender:#d4a5ff;--color-lavender-light:#e4c5ff;--color-lavender-dark:#b87fe8;--color-sky:#87ceeb;--color-sky-light:#b0e0f0;--color-peach:#ffdab9;--color-pink:#ffb7c5;--color-white:#fff;--color-bg:#f8f5ff;--color-bg-warm:#fff8f0;--color-text:#2d2b55;--color-text-light:#6b6999;--color-text-muted:#a0a0c0;--color-border:#e8e5f0;--color-shadow:#2d2b551a;--color-overlay:#2d2b5580;--color-success:#51cf66;--color-error:#ff6b6b;--color-warning:#ffd43b;--gradient-bg:linear-gradient(135deg, #fff0f5 0%, #f0f0ff 50%, #f0fff5 100%);--gradient-coral:linear-gradient(135deg, #ff6b6b 0%, #ff8e8e 100%);--gradient-teal:linear-gradient(135deg, #4ecdc4 0%, #7eddd6 100%);--gradient-yellow:linear-gradient(135deg, #ffe66d 0%, #fff0a0 100%);--gradient-mint:linear-gradient(135deg, #a8e6cf 0%, #c5f0df 100%);--gradient-lavender:linear-gradient(135deg, #d4a5ff 0%, #e4c5ff 100%);--gradient-sky:linear-gradient(135deg, #87ceeb 0%, #b0e0f0 100%);--gradient-hero:linear-gradient(135deg, #ff6b6b 0%, #ffe66d 50%, #4ecdc4 100%);--font-family:"Nunito", "Segoe UI", sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.25rem;--font-size-xl:1.5rem;--font-size-2xl:2rem;--font-size-3xl:2.5rem;--font-size-4xl:3rem;--font-size-hero:3.5rem;--font-weight-normal:400;--font-weight-semi:600;--font-weight-bold:700;--font-weight-extra:800;--font-weight-black:900;--line-height:1.6;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-2xl:32px;--radius-full:9999px;--shadow-sm:0 2px 8px #2d2b5514;--shadow-md:0 4px 16px #2d2b551f;--shadow-lg:0 8px 32px #2d2b5529;--shadow-xl:0 16px 48px #2d2b5533;--shadow-glow-coral:0 4px 20px #ff6b6b59;--shadow-glow-teal:0 4px 20px #4ecdc459;--shadow-glow-yellow:0 4px 20px #ffe66d59;--shadow-glow-mint:0 4px 20px #a8e6cf59;--shadow-glow-lavender:0 4px 20px #d4a5ff59;--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.4s ease;--transition-bounce:.5s cubic-bezier(.34, 1.56, .64, 1);--btn-min-size:60px;--btn-touch-target:48px;--z-base:1;--z-dropdown:100;--z-modal:500;--z-overlay:900;--z-reward:1000}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:var(--line-height);color:var(--color-text);background:var(--gradient-bg);-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}img,svg{max-width:100%;display:block}button{cursor:pointer;font-family:inherit}a{color:inherit;text-decoration:none}ul,ol{list-style:none}input,select,textarea{font-family:inherit;font-size:inherit}#app{flex-direction:column;min-height:100vh;display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes sparkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes pop{0%{transform:scale(0)}70%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes confettiFall{0%{opacity:1;transform:translateY(-100%)rotate(0)}to{opacity:0;transform:translateY(100vh)rotate(720deg)}}@keyframes starBurst{0%{opacity:1;transform:scale(0)rotate(0)}to{opacity:0;transform:scale(2)rotate(180deg)}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@keyframes progressFill{0%{width:0}}@keyframes rainbowBg{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.animate-fade-in{animation:fadeIn var(--transition-normal) ease forwards}.animate-fade-in-up{animation:.5s forwards fadeInUp}.animate-bounce{animation:1s infinite bounce}.animate-pulse{animation:2s infinite pulse}.animate-wiggle{animation:.5s wiggle}.animate-float{animation:3s ease-in-out infinite float}.animate-pop{animation:pop var(--transition-bounce) forwards}.animate-shake{animation:.5s shake}.text-center{text-align:center}.text-left{text-align:left}.flex-center{justify-content:center;align-items:center;display:flex}.flex-col{flex-direction:column;display:flex}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.stagger-6{animation-delay:.3s}.stagger-7{animation-delay:.35s}.stagger-8{animation-delay:.4s}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-lavender);border-radius:var(--radius-full)}::selection{background:var(--color-yellow);color:var(--color-text)}#reward-overlay{pointer-events:none;width:100%;height:100%;z-index:var(--z-reward);position:fixed;top:0;left:0}.page-enter{animation:.4s forwards fadeInUp}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--btn-min-size);min-width:var(--btn-min-size);padding:var(--space-3) var(--space-6);border-radius:var(--radius-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);transition:all var(--transition-normal);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border:none;display:inline-flex;position:relative;overflow:hidden}.btn:active{transform:scale(.95)}.btn-primary{background:var(--gradient-coral);color:var(--color-white);box-shadow:var(--shadow-glow-coral)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 28px #ff6b6b80}.btn-secondary{background:var(--gradient-teal);color:var(--color-white);box-shadow:var(--shadow-glow-teal)}.btn-secondary:hover{transform:translateY(-2px);box-shadow:0 6px 28px #4ecdc480}.btn-teal{background:var(--gradient-teal);color:var(--color-white);box-shadow:var(--shadow-glow-teal)}.btn-teal:hover{transform:translateY(-2px);box-shadow:0 6px 28px #4ecdc480}.btn-yellow{background:var(--gradient-yellow);color:var(--color-text);box-shadow:var(--shadow-glow-yellow)}.btn-mint{background:var(--gradient-mint);color:var(--color-text);box-shadow:var(--shadow-glow-mint)}.btn-outline{background:var(--color-white);color:var(--color-text);border:2px solid var(--color-border);box-shadow:var(--shadow-sm)}.btn-outline:hover{border-color:var(--color-coral);color:var(--color-coral)}.btn-icon{padding:var(--space-3);border-radius:var(--radius-full);min-width:var(--btn-min-size);min-height:var(--btn-min-size);font-size:var(--font-size-xl)}.btn-sm,.btn-small{min-width:44px;min-height:44px;padding:var(--space-2) var(--space-4);font-size:var(--font-size-base);border-radius:var(--radius-full)}.btn-lg{min-height:72px;padding:var(--space-4) var(--space-8);font-size:var(--font-size-xl);border-radius:var(--radius-xl)}.btn-correct{animation:pop var(--transition-bounce) forwards;background:var(--color-success)!important;color:#fff!important}.btn-wrong{animation:.5s shake;background:var(--color-error)!important;color:#fff!important}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.home-header{padding:var(--space-4) var(--space-6);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--color-border);z-index:var(--z-dropdown);background:#fffc;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.stats{align-items:center;gap:var(--space-3);display:flex}.stat-badge{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-white);border-radius:var(--radius-full);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text);box-shadow:var(--shadow-sm);opacity:0;animation:.5s forwards fadeInScale;display:inline-flex}.stat-badge .star-icon,.stat-badge .medal-icon{font-size:1.2rem}.parent-btn{background:var(--color-white)!important;color:var(--color-text)!important;border:2px solid var(--color-border)!important;box-shadow:var(--shadow-sm)!important;font-size:var(--font-size-sm)!important}.parent-btn:hover{border-color:var(--color-lavender)!important;box-shadow:var(--shadow-glow-lavender)!important}.home-main{max-width:960px;padding:var(--space-6) var(--space-6) var(--space-12);flex:1;width:100%;margin:0 auto}.hero{text-align:center;padding:var(--space-10) 0 var(--space-8)}.mascot-container{margin-bottom:var(--space-4);justify-content:center;display:flex}.mascot{filter:drop-shadow(0 4px 12px #0000001a);font-size:5rem}.bounce-text{font-size:var(--font-size-hero);font-weight:var(--font-weight-black);background:var(--gradient-hero);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;line-height:1.2;animation:.6s forwards fadeInUp}.modules-grid{gap:var(--space-6);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));padding:0;display:grid}.module-card{align-items:center;gap:var(--space-4);padding:var(--space-8) var(--space-6);text-align:center;background:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);cursor:pointer;color:var(--color-text);opacity:0;border:3px solid #0000;flex-direction:column;text-decoration:none;transition:all .35s cubic-bezier(.34,1.56,.64,1);animation:.5s forwards fadeInUp;display:flex;position:relative;overflow:hidden}.module-card:before{content:"";border-radius:var(--radius-xl) var(--radius-xl) 0 0;height:5px;position:absolute;top:0;left:0;right:0}.module-card:hover{box-shadow:var(--shadow-xl);transform:translateY(-8px)scale(1.02)}.module-card:active{transform:scale(.97)}.module-card .card-icon{filter:drop-shadow(0 2px 6px #0000001a);font-size:3.5rem;line-height:1}.module-card h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-extra);margin:0}.card-primary{border-color:var(--color-coral-light)}.card-primary:before{background:var(--gradient-coral)}.card-primary:hover{box-shadow:var(--shadow-glow-coral)}.card-secondary{border-color:var(--color-teal-light)}.card-secondary:before{background:var(--gradient-teal)}.card-secondary:hover{box-shadow:var(--shadow-glow-teal)}.card-tertiary{border-color:var(--color-yellow-light)}.card-tertiary:before{background:var(--gradient-yellow)}.card-tertiary:hover{box-shadow:var(--shadow-glow-yellow)}.card-quaternary{border-color:var(--color-mint-light)}.card-quaternary:before{background:var(--gradient-mint)}.card-quaternary:hover{box-shadow:var(--shadow-glow-mint)}.card-quinary{border-color:var(--color-lavender-light)}.card-quinary:before{background:var(--gradient-lavender)}.card-quinary:hover{box-shadow:var(--shadow-glow-lavender)}.progress-bar-mini{background:var(--color-border);border-radius:var(--radius-full);width:100%;height:8px;margin-top:var(--space-2);overflow:hidden}.progress-fill{border-radius:var(--radius-full);background:var(--gradient-teal);height:100%;transition:width .6s cubic-bezier(.34,1.56,.64,1)}.module-header{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);z-index:var(--z-dropdown);background:#ffffffe6;display:flex;position:sticky;top:0}.module-header h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-black);background:var(--gradient-hero);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0}.btn-back{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-white);border:2px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-semi);color:var(--color-text-light);transition:all var(--transition-normal);white-space:nowrap;min-height:40px;text-decoration:none;display:inline-flex}.btn-back:hover{border-color:var(--color-coral);color:var(--color-coral);transform:translate(-2px)}.alphabet-container,.phonics-container{width:100%;max-width:900px;padding:var(--space-6);margin:0 auto}.alphabet-grid{gap:var(--space-4);flex-wrap:wrap;justify-content:center;width:100%;display:flex}.letter-card{border-radius:var(--radius-lg);background:var(--color-white);width:80px;height:90px;box-shadow:var(--shadow-sm);cursor:pointer;border:2px solid var(--color-border);-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;align-items:center;transition:all .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative}.letter-card .letter-upper,.letter-card .letter-main{font-size:var(--font-size-2xl);font-weight:var(--font-weight-black);color:var(--color-coral);line-height:1}.letter-card .letter-lower{font-size:var(--font-size-sm);color:var(--color-text-light);font-weight:var(--font-weight-semi)}.letter-card .letter-emoji-mini{font-size:var(--font-size-xs);margin-top:2px}.letter-card:hover{box-shadow:var(--shadow-glow-coral);border-color:var(--color-coral);transform:scale(1.12)translateY(-4px)}.letter-card:active{transform:scale(.95)}.letter-card.active{background:var(--gradient-coral);border-color:var(--color-coral)}.letter-card.active .letter-main,.letter-card.active .letter-upper,.letter-card.active .letter-lower{color:var(--color-white)}.letter-card.completed{border-color:var(--color-success)}.letter-card.completed:after{content:"✓";font-size:var(--font-size-xs);color:var(--color-success);position:absolute;top:2px;right:4px}.letter-preview{background:var(--color-white);padding:var(--space-6);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;z-index:var(--z-dropdown);animation:.3s slideUp;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 24px #2d2b5526}.letter-preview.hidden{display:none}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.preview-content{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;display:flex}.preview-emoji{filter:drop-shadow(0 2px 8px #0000001a);font-size:4rem;animation:.6s bounce}.preview-letters{font-size:var(--font-size-4xl);font-weight:var(--font-weight-black);color:var(--color-coral)}.preview-word{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text)}.tabs{gap:var(--space-2);padding:var(--space-1);background:var(--color-border);border-radius:var(--radius-full);margin-bottom:var(--space-6);display:flex}.tab,.tab-btn{padding:var(--space-3) var(--space-4);border-radius:var(--radius-full);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text-light);cursor:pointer;transition:all var(--transition-normal);background:0 0;border:none;flex:1;min-height:44px;font-family:inherit}.tab.active,.tab-btn.active{background:var(--color-white);color:var(--color-text);box-shadow:var(--shadow-sm)}.tab:hover:not(.active),.tab-btn:hover:not(.active){background:#ffffff80}.tab-content{animation:.3s fadeIn}.reading-container{max-width:900px;padding:var(--space-6);margin:0 auto}.reading-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.reading-card{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);background:var(--color-white);border:2px solid var(--color-border);border-radius:var(--radius-xl);cursor:pointer;text-align:center;box-shadow:var(--shadow-sm);flex-direction:column;font-family:inherit;transition:all .3s cubic-bezier(.34,1.56,.64,1);display:flex}.reading-card:hover{box-shadow:var(--shadow-lg);border-color:var(--color-teal);transform:translateY(-4px)scale(1.03)}.reading-card.playing{background:var(--color-yellow-light);border-color:var(--color-yellow-dark);box-shadow:var(--shadow-glow-yellow);transform:scale(1.05)}.flashcard{min-height:140px}.sentence-card{padding:var(--space-4) var(--space-6);text-align:left;flex-direction:row;grid-column:span 2}.card-emoji{font-size:3rem;line-height:1}.card-emoji-small{font-size:1.8rem;line-height:1}.card-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text)}.passage-container{max-width:700px;padding:var(--space-6);margin:0 auto}.passage-nav{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.passage-counter{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text-light);white-space:nowrap}.passage-reader{background:var(--color-white);border-radius:var(--radius-2xl);padding:var(--space-8);box-shadow:var(--shadow-md)}.passage-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-black);color:var(--color-coral);text-align:center;margin-bottom:var(--space-6)}.passage-content{font-size:var(--font-size-xl);color:var(--color-text);margin-bottom:var(--space-6);line-height:2}.passage-actions{gap:var(--space-4);flex-wrap:wrap;justify-content:center;display:flex}.dashboard-auth{text-align:center;max-width:400px;margin:60px auto}.dashboard-auth h2{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-4)}.dashboard-auth .pin-input{font-size:var(--font-size-2xl);text-align:center;width:140px;padding:var(--space-3) var(--space-4);border:3px solid var(--color-border);border-radius:var(--radius-lg);margin:var(--space-4) 0;letter-spacing:8px;font-weight:var(--font-weight-bold);transition:border-color var(--transition-fast)}.dashboard-auth .pin-input:focus{border-color:var(--color-teal);outline:none}.dashboard-container{max-width:640px;padding:var(--space-6);gap:var(--space-6);flex-direction:column;margin:0 auto;display:flex}.dashboard-section{background:var(--color-white);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-md);border:2px solid #0000}.dashboard-section h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-4);align-items:center;gap:var(--space-2);display:flex}.dashboard-section hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-4) 0}.dashboard-section p{font-size:var(--font-size-base);margin-bottom:var(--space-2);color:var(--color-text)}.dashboard-section.card-primary{border-color:var(--color-coral-light)}.dashboard-section.card-secondary{border-color:var(--color-teal-light)}.dashboard-section.card-tertiary{border-color:var(--color-yellow-light)}.dashboard-section.card-quinary{border-color:var(--color-lavender-light)}.dashboard-section.card-danger{border-color:#ff6b6b4d}.form-group{gap:var(--space-2);text-align:left;margin-bottom:var(--space-4);flex-direction:column;display:flex}.form-label{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text)}.form-input,.form-select{padding:var(--space-3) var(--space-4);border:2px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-white);transition:border-color var(--transition-fast);min-height:48px;font-family:inherit}.form-input:focus,.form-select:focus{border-color:var(--color-teal);outline:none}.form-hint{font-size:var(--font-size-sm);color:var(--color-text-muted)}.range-slider{appearance:none;border-radius:var(--radius-full);background:var(--color-border);outline:none;width:100%;height:8px}.range-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--gradient-teal);cursor:pointer;width:28px;height:28px;box-shadow:var(--shadow-sm);border-radius:50%}.card{background:var(--color-white);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-md);transition:all var(--transition-normal);position:relative;overflow:hidden}.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.card-interactive{cursor:pointer}.card-interactive:active{transform:scale(.97)}.option-card{min-height:var(--btn-min-size);padding:var(--space-4) var(--space-6);background:var(--color-white);border:3px solid var(--color-border);border-radius:var(--radius-lg);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);cursor:pointer;transition:all var(--transition-normal);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:flex}.option-card:hover{border-color:var(--color-teal);background:var(--color-teal-light);transform:scale(1.03)}.option-card.correct{border-color:var(--color-success);animation:pop var(--transition-bounce) forwards;background:#dfffea}.option-card.wrong{border-color:var(--color-error);background:#ffe5e5;animation:.5s shake}.progress-container{background:var(--color-border);border-radius:var(--radius-full);width:100%;height:12px;position:relative;overflow:hidden}.progress-bar{border-radius:var(--radius-full);background:var(--gradient-teal);height:100%;transition:width .6s cubic-bezier(.34,1.56,.64,1);position:relative}.progress-bar:after{content:"";background:linear-gradient(90deg,#0000,#fff6,#0000);animation:2s infinite progressShine;position:absolute;inset:0}@keyframes progressShine{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-mini{height:6px}.badge{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);background:var(--gradient-yellow);color:var(--color-text);display:inline-flex}.badge-points{background:var(--gradient-coral);color:var(--color-white);font-size:var(--font-size-base);padding:var(--space-2) var(--space-4)}.app-header{padding:var(--space-3) var(--space-6);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);z-index:var(--z-dropdown);background:#ffffffd9;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-header .logo{align-items:center;gap:var(--space-2);font-size:var(--font-size-xl);font-weight:var(--font-weight-black);cursor:pointer;display:flex}.app-header .logo span{background:var(--gradient-hero);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.header-actions{align-items:center;gap:var(--space-3);display:flex}.back-btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-white);border:2px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--font-size-base);font-weight:var(--font-weight-semi);color:var(--color-text-light);cursor:pointer;transition:all var(--transition-normal);min-height:44px;display:flex}.back-btn:hover{border-color:var(--color-coral);color:var(--color-coral)}.modal-overlay{background:var(--color-overlay);z-index:var(--z-modal);animation:fadeIn var(--transition-fast) ease;padding:var(--space-4);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:var(--color-white);border-radius:var(--radius-2xl);padding:var(--space-8);width:100%;max-width:480px;animation:fadeInScale var(--transition-normal) ease;text-align:center}.page-container{max-width:900px;padding:var(--space-6);flex:1;width:100%;margin:0 auto}.section-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-black);text-align:center;margin-bottom:var(--space-6)}.grid-cards{gap:var(--space-6);grid-template-columns:repeat(auto-fill,minmax(250px,1fr));display:grid}.praise-text{font-size:var(--font-size-3xl);font-weight:var(--font-weight-black);background:var(--gradient-hero);-webkit-text-fill-color:transparent;text-align:center;background-size:200% 200%;-webkit-background-clip:text;background-clip:text;animation:3s infinite rainbowBg}.word{cursor:pointer;transition:all var(--transition-fast);border-radius:4px;padding:2px 4px;display:inline}.word:hover{background:var(--color-yellow-light)}.word.active{background:var(--color-yellow);font-weight:var(--font-weight-bold);transform:scale(1.1)}.cloud{opacity:.3;font-size:2rem;animation:4s ease-in-out infinite float;position:absolute}.star-deco{opacity:.4;font-size:1.2rem;animation:2s ease-in-out infinite sparkle;position:absolute}.reward-points{font-size:var(--font-size-3xl);font-weight:var(--font-weight-black);color:var(--color-coral);text-shadow:0 2px 4px #0000001a}.tts-provider-row{gap:var(--space-3);flex-wrap:wrap;align-items:flex-end;display:flex}.tts-provider-row .form-group{flex:1;min-width:200px}.tts-voice-row{gap:var(--space-3);align-items:flex-end;display:flex}.tts-voice-row .form-group{flex:1}.tts-voice-row .btn{margin-bottom:var(--space-4)}.speed-display{background:var(--gradient-teal);color:#fff;font-weight:var(--font-weight-bold);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);justify-content:center;align-items:center;min-width:48px;display:inline-flex}@media (width<=640px){:root{--font-size-hero:2rem;--font-size-3xl:1.75rem;--font-size-2xl:1.5rem}.home-main{padding:var(--space-4)}.hero{padding:var(--space-6) 0 var(--space-4)}.mascot{font-size:3.5rem}.modules-grid{gap:var(--space-4);grid-template-columns:1fr}.module-card{padding:var(--space-5) var(--space-4);gap:var(--space-4);text-align:left;flex-direction:row}.module-card .card-icon{font-size:2.5rem}.page-container{padding:var(--space-4)}.alphabet-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(64px,1fr))}.letter-card{width:64px;height:74px}.letter-card .letter-upper,.letter-card .letter-main{font-size:var(--font-size-xl)}.reading-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.sentence-card{grid-column:span 1}.modal-content{padding:var(--space-6)}.app-header,.home-header,.module-header{padding:var(--space-2) var(--space-4)}.passage-nav{flex-wrap:wrap;justify-content:center}.passage-reader{padding:var(--space-5)}.dashboard-container{padding:var(--space-4)}.tabs,.tts-provider-row,.tts-voice-row{flex-direction:column}}.animate-bounce-in{opacity:0;animation:.4s forwards fadeInScale}.hidden{display:none!important}
