@import "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap";:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--font-main:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "SF Pro Display", sans-serif;--font-title:"Outfit", sans-serif;--bg-app:#f4f6fc;--bg-card:#ffffffe6;--bg-card-solid:#fff;--border-card:#e2e8f0cc;--primary-blue:#3b82f6;--primary-gradient:linear-gradient(135deg, #4f46e5 0%, #3b82f6 100%);--accent-gold:#f59e0b;--accent-green:#10b981;--text-main:#1e293b;--text-muted:#64748b;--shadow-sm:0 2px 8px #0000000a;--shadow-md:0 8px 24px #959da51f;--shadow-lg:0 16px 32px #6366f126;--tint-warn-bg:#fffbeb;--tint-warn-fg:#b45309;--tint-warn-border:#fde68a;--tint-danger-bg:#fef2f2;--tint-danger-fg:#b91c1c;--tint-danger-border:#fecaca;--tint-ok-bg:#f0fdf4;--tint-ok-fg:#15803d;--tint-ok-border:#bbf7d0;--radius-lg:20px;--radius-md:14px;--radius-sm:10px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}:focus-visible{outline:2px solid var(--primary-blue);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html,body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;width:100%;max-width:100%;position:relative;overflow-x:hidden}#root{width:100%;max-width:100%;overflow-x:hidden}body{font-family:var(--font-main);background-color:var(--bg-app);color:var(--text-main);-webkit-font-smoothing:antialiased;background-image:radial-gradient(circle at 10% 20%,#6366f114 0%,#0000 40%),radial-gradient(circle at 90% 80%,#ec48990f 0%,#0000 40%);background-attachment:fixed;min-height:100dvh;line-height:1.4}.nav-short{display:none}.tab-container,.app-main-content,.app-layout>*{min-width:0}img,svg,video,canvas,iframe{max-width:100%}pre,code{overflow-wrap:anywhere;white-space:pre-wrap}h1,h2,h3,h4{overflow-wrap:break-word}button,input,select,textarea{color:inherit;font-family:inherit;font-size:16px}:where(input:not([type=checkbox]):not([type=radio]),select,textarea){background:var(--bg-card-solid)}:where(input:disabled,select:disabled,textarea:disabled,button:disabled){opacity:.55;cursor:not-allowed}.app-layout{box-sizing:border-box;width:100%;min-width:0;max-width:100%;min-height:100dvh;padding:10px;padding-top:calc(8px + var(--safe-top));padding-bottom:calc(20px + var(--safe-bottom));flex-direction:column;display:flex}@media (width>=768px){.app-layout{max-width:1200px;margin:0 auto;padding:20px}}.app-header{border:1px solid var(--border-card);border-radius:var(--radius-lg);top:max(4px, var(--safe-top));z-index:1000;box-sizing:border-box;background:#fff;width:100%;max-width:100%;margin-bottom:16px;padding:12px 14px;position:sticky;box-shadow:0 4px 12px #0000000d}.header-top-bar{justify-content:space-between;align-items:center;gap:8px;width:100%;margin-bottom:10px;display:flex}.user-profile{flex:0 auto;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.avatar{background:#e0e7ff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:24px;display:flex}.user-name{font-family:var(--font-title);color:var(--text-main);white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:700;display:block;overflow:hidden}.user-info-text{min-width:0;overflow:hidden}.header-actions{flex-wrap:wrap;flex-shrink:1;justify-content:flex-end;align-items:center;gap:6px;min-width:0;display:flex}.household-name{color:#94a3b8;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;display:block;overflow:hidden}@media (width<=560px){.household-name{display:none}}.pending-sync-chip{color:#c2410c;white-space:nowrap;background:#fff7ed;border:1px solid #fed7aa;border-radius:20px;align-items:center;gap:4px;padding:5px 9px;font-size:11px;font-weight:800;display:inline-flex}@media (width<=560px){.pending-sync-text{display:none}}.star-counter{background:#fef3c7;border:1px solid #fde68a;border-radius:20px;align-items:center;gap:4px;padding:5px 10px;display:flex}.star-icon{width:16px;height:16px}.star-count{color:#b45309;font-size:14px;font-weight:800}.parent-portal-btn{color:#fff;cursor:pointer;white-space:nowrap;background:linear-gradient(135deg,#4f46e5 0%,#3b82f6 100%);border:none;border-radius:20px;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-weight:700;display:inline-flex;box-shadow:0 2px 8px #4f46e54d}.parent-portal-btn.active{background:#10b981;box-shadow:0 2px 8px #10b9814d}.unified-refresh-btn{color:#0284c7;cursor:pointer;white-space:nowrap;background:#f0f9ff;border:1px solid #bae6fd;border-radius:20px;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-weight:700;transition:all .2s;display:inline-flex}.unified-refresh-btn:hover{color:#0369a1;background:#e0f2fe}.unified-refresh-btn:disabled{opacity:.7;cursor:not-allowed}.main-nav{-webkit-overflow-scrolling:touch;border-top:1px solid #e2e8f0cc;gap:6px;padding-top:8px;display:flex;overflow-x:auto}.main-nav::-webkit-scrollbar{display:none}.nav-tab{border:1px solid var(--border-card);border-radius:var(--radius-md);min-width:0;color:var(--text-muted);cursor:pointer;white-space:nowrap;background:#f8fafc;flex:1;justify-content:center;align-items:center;gap:5px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.nav-tab .nav-text{text-overflow:ellipsis;overflow:hidden}.nav-tab .nav-emoji{flex-shrink:0}.nav-tab.active{background:var(--primary-gradient);color:#fff;border-color:#0000;box-shadow:0 2px 8px #4f46e540}.nav-tab{border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex-direction:row;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;display:flex}@media (width<=560px){.app-header{padding:10px}.header-top-bar{gap:6px}.avatar{width:32px;height:32px;font-size:19px}.user-name{font-size:14px}.unified-refresh-btn span,.parent-portal-btn span{display:none}.unified-refresh-btn,.parent-portal-btn{gap:0;padding:7px 9px}.star-counter{padding:5px 8px}}@media (width<=360px){.user-info-text{display:none}}@media (width<=767px){.nav-tab{flex-direction:column;flex:1 1 0;gap:2px;min-width:0;padding:4px;font-size:10px}.nav-full{display:none}.nav-short{display:inline}.nav-tab .nav-text{text-overflow:ellipsis;max-width:100%;overflow:hidden}.main-nav{gap:2px;overflow-x:visible}.nav-emoji{font-size:18px}}.nav-tab.active{background:var(--primary-gradient);color:#fff;box-shadow:0 4px 12px #4f46e540}.tab-header{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}@media (width>=640px){.tab-header{flex-direction:row;justify-content:space-between;align-items:flex-start}}.tab-header h2{font-family:var(--font-title);font-size:20px;font-weight:700;line-height:1.3}.subtitle{color:var(--text-muted);font-size:13px}.header-action-row{flex-wrap:wrap;gap:8px;width:100%;display:flex}@media (width>=640px){.header-action-row{width:auto}}.primary-btn{background:var(--primary-gradient);color:#fff;border-radius:var(--radius-md);cursor:pointer;border:none;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:600;display:inline-flex;box-shadow:0 4px 12px #3b82f640}@media (width>=640px){.primary-btn{flex:initial}}.secondary-btn{background:var(--bg-card-solid);border:1px solid var(--border-card);color:var(--text-main);border-radius:var(--radius-md);cursor:pointer;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 14px;font-size:13px;font-weight:600;display:inline-flex}@media (width>=640px){.secondary-btn{flex:initial}}.category-filters{-webkit-overflow-scrolling:touch;gap:6px;margin-bottom:16px;padding-bottom:8px;display:flex;overflow-x:auto}.filter-chip{background:var(--bg-card-solid);border:1px solid var(--border-card);color:var(--text-muted);cursor:pointer;white-space:nowrap;border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;display:flex}.filter-chip.active{background:var(--text-main);color:#fff;border-color:var(--text-main)}.app-main-content{box-sizing:border-box;width:100%;min-width:0;max-width:100%;padding:0 0 100px}.tab-container{box-sizing:border-box;flex-direction:column;gap:12px;width:100%;min-width:0;max-width:100%;display:flex}.tab-header{box-sizing:border-box;flex-direction:column;gap:10px;width:100%;min-width:0;max-width:100%;margin-bottom:4px;display:flex}.category-filters{box-sizing:border-box;flex-wrap:wrap;gap:8px;width:100%;min-width:0;max-width:100%;padding:4px 2px 8px;display:flex}.category-filters::-webkit-scrollbar{display:none}.filter-chip{color:#334155;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#fff;border:1.5px solid #cbd5e1;border-radius:20px;flex-shrink:0;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:700;display:inline-flex}.filter-chip.active{color:#fff;background:#2563eb;border-color:#2563eb}.events-grid{box-sizing:border-box;flex-direction:column;gap:14px;width:100%;min-width:0;max-width:100%;display:flex}@media (width>=768px){.events-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}}.event-card{box-sizing:border-box;-webkit-tap-highlight-color:transparent;background:#fff;border:1.5px solid #e2e8f0;border-radius:18px;flex-direction:column;gap:10px;width:100%;min-width:0;max-width:100%;padding:16px;display:flex;box-shadow:0 2px 8px #0000000a}.event-card-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.complete-checkbox{cursor:pointer;color:var(--text-muted);-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;transition:color .15s,transform .15s;display:flex}.complete-checkbox:active{transform:scale(.9)}.check-icon{stroke-width:2.2px;width:26px;height:26px}.check-icon.checked{color:var(--accent-green);stroke-width:2.6px}.category-badge{border-radius:12px;flex-shrink:0;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.cat-spelling .category-badge{color:#4338ca;background:#e0e7ff}.cat-tingxie .category-badge{color:#b91c1c;background:#fee2e2}.cat-tuition .category-badge{color:#b45309;background:#fef3c7}.cat-eca .category-badge{color:#1d4ed8;background:#dbeafe}.cat-holiday .category-badge{color:#15803d;background:#dcfce7}.cat-party .category-badge{color:#be185d;background:#fce7f3}.cat-homework .category-badge{color:#7e22ce;background:#f3e8ff}.event-title{color:#0f172a;font-size:16px;font-weight:700;line-height:1.3}.tab-title{color:var(--text-main)}.tab-subtitle{color:var(--text-muted)}.secondary-btn{background:var(--bg-card-solid);border:1.5px solid var(--border-card);color:var(--text-main)}.detail-item.date-badge{color:#1d4ed8;background:#eff6ff;border-radius:8px;padding:4px 10px;font-weight:700}.view-list-toggle-btn{color:#1d4ed8;background:#f8fafc;border:1.5px solid #3b82f6}.test-details-container{color:var(--text-main);background:#fff;border:1.5px solid #bfdbfe}.recog-pill{color:#6d28d9;background:#faf5ff;border:1px solid #ddd6fe;border-radius:8px;padding:5px 9px;font-size:13px;font-weight:700}.dict-pill{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:6px 10px;font-weight:700}.spelling-pill{color:#0f172a;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:8px;padding:6px 10px;font-weight:700}.dict-sentence-box{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:8px 10px;font-weight:600;line-height:1.4}.event-details{color:var(--text-muted);flex-wrap:wrap;gap:10px;font-size:13px;display:flex}.detail-item{align-items:center;gap:6px;display:flex}.practice-btn{color:#fff;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:linear-gradient(135deg,#10b981 0%,#059669 100%);border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:48px;padding:12px;font-size:14px;font-weight:700;display:flex;box-shadow:0 2px 8px #10b98140}.practice-btn:active{transform:scale(.98)}.dictation-layout{flex-direction:column;gap:16px;display:flex}@media (width>=850px){.dictation-layout{grid-template-columns:1fr 340px;align-items:start;display:grid}.dictation-layout>*{min-width:0}.dictation-layout>.dictation-focus-banner{grid-column:1/-1}.dictation-layout>.main-player{grid-column:1}.dictation-layout>.grading-panel{grid-column:2}.dictation-layout>.correction-banner{grid-column:1/-1}}.word-input:focus-visible,.form-group input:focus-visible,.form-group select:focus-visible,.form-group textarea:focus-visible{outline:2px solid var(--primary-blue);outline-offset:2px}.word-input:focus,.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary-blue)}:where(.audio-control-row,.step-navigation,.modal-actions,.modal-header,.category-filters,.event-card-header,.math-review-row,.math-set-card,.reward-card-header,.voucher-top,.math-result-hint,.math-result-why,.progress-label,.hero-left,.math-done-toggle)>*{min-width:0}:where(.audio-control-row,.step-navigation,.modal-actions,.category-filters,.event-card-header,.math-review-row,.reward-card-header,.voucher-top,.math-done-toggle){flex-wrap:wrap}:where(.nav-tab,.primary-btn,.secondary-btn,.submit-test-btn,.nav-step-btn,.secondary-audio-btn,.filter-chip,.redeem-btn,.math-option,.complete-checkbox,.parent-portal-btn,.unified-refresh-btn,.math-set-card,.journal-history-item){min-height:44px}.math-option{align-items:center;display:flex}.compliment-banner{background:var(--tint-ok-bg);color:var(--tint-ok-fg);border:1px solid var(--tint-ok-border);border-radius:12px;margin-bottom:12px;padding:12px 14px;font-weight:700;line-height:1.5}.feedback-section{margin-top:14px}.feedback-section h4{color:var(--text-muted);margin:0 0 6px;font-size:13px;font-weight:800}.grammar-fix-item{background:var(--bg-app);border:1px solid var(--border-card);border-left:4px solid var(--accent-gold);border-radius:10px;margin-bottom:8px;padding:10px 12px;font-size:13px}.fix-row{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.fix-row .orig{color:var(--text-muted);text-decoration:line-through}.fix-row .corr{color:var(--accent-green);font-weight:800}.fix-explain{color:var(--text-muted);margin-top:4px;line-height:1.5;display:block}.tips-list{margin:0;padding-left:18px;font-size:13px;line-height:1.6}.tips-list li{margin-bottom:4px}.attached-photos-gallery{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.attached-photos-gallery img{border:1px solid var(--border-card);border-radius:10px;max-width:120px}.correction-banner{background:var(--tint-warn-bg);color:var(--tint-warn-fg);border:1px solid var(--tint-warn-border);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;font-size:13px;font-weight:700;display:flex}.correction-intro{color:var(--text-muted);margin:10px 0 0;font-size:13px;font-weight:700;line-height:1.5}.correction-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.grade-item{background:var(--bg-app);border-left:4px solid var(--border-card);border-radius:10px;grid-template-columns:auto 1fr;align-items:center;gap:4px 8px;margin-bottom:8px;padding:10px 12px;font-size:13px;display:grid}.grade-item>svg{grid-row:1/3}.grade-item.correct{border-left-color:var(--accent-green)}.grade-item.incorrect{border-left-color:#ef4444}.grade-slip,.grade-why,.grade-feedback,.grade-held{grid-column:2}.grade-held{color:var(--tint-warn-fg);font-weight:800}.grade-slip{color:var(--primary-blue);font-weight:800}.grade-why{color:var(--text-muted);font-weight:500;line-height:1.5}.grade-feedback{color:var(--tint-danger-fg);font-weight:600;line-height:1.5}.dictation-card{background:var(--bg-card-solid);border:1px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:18px}.test-selector-group{flex-direction:column;align-items:flex-start;gap:6px;width:100%;margin-top:8px;display:flex}.test-selector-group label{color:var(--text-main);font-size:13px;font-weight:700}.test-selector-group select{border-radius:var(--radius-md);color:#0f172a;width:100%;max-width:100%;box-shadow:var(--shadow-sm);background-color:#fff;border:1.5px solid #cbd5e1;padding:10px 12px;font-size:13px;font-weight:600}.voice-player-box{border-radius:var(--radius-lg);background:linear-gradient(135deg,#f8fafc 0%,#edf2f7 100%);border:1px dashed #cbd5e1;flex-direction:column;align-items:center;gap:12px;margin-bottom:16px;padding:20px 14px;display:flex}.big-play-btn{background:var(--primary-gradient);color:#fff;cursor:pointer;border:none;border-radius:40px;align-items:center;gap:8px;padding:14px 28px;font-size:16px;font-weight:700;display:flex;box-shadow:0 6px 16px #3b82f64d}.audio-control-row{justify-content:center;gap:8px;width:100%;display:flex}.secondary-audio-btn{border:1px solid var(--border-card);color:var(--text-muted);cursor:pointer;background:#fff;border-radius:20px;align-items:center;gap:4px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.word-input{border-radius:var(--radius-md);border:2px solid #cbd5e1;outline:none;width:100%;margin-top:6px;padding:12px 14px;font-size:16px;font-weight:600}.step-navigation{justify-content:space-between;gap:10px;margin-top:16px;display:flex}.nav-step-btn.primary{color:#fff;background:#7c3aed}.nav-step-btn.finish{color:#1e293b;background:#10b981}.nav-step-btn{border-radius:var(--radius-md);cursor:pointer;background:#f1f5f9;border:none;align-items:center;gap:4px;padding:10px 14px;font-size:14px;font-weight:600;display:flex}.submit-test-btn{color:#fff;border-radius:var(--radius-md);cursor:pointer;background:linear-gradient(135deg,#10b981 0%,#059669 100%);border:none;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:700;display:flex}.upload-dropzone{border-radius:var(--radius-md);cursor:pointer;color:var(--text-muted);text-align:center;background:#f8fafc;border:2px dashed #cbd5e1;flex-direction:column;align-items:center;gap:6px;padding:16px;font-size:13px;font-weight:600;display:flex}.journal-layout{flex-direction:column;gap:16px;display:flex}@media (width>=768px){.journal-layout{grid-template-columns:280px 1fr;align-items:start;display:grid}.journal-layout>*{min-width:0}.journal-layout>.journal-list-sidebar{grid-column:1}.journal-layout>.journal-main-detail{grid-column:2}.journal-layout>.compliment-banner,.journal-layout>.journal-notice{grid-column:1/-1}}.journal-list-sidebar{background:var(--bg-card-solid);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:14px}.journal-history-list{-webkit-overflow-scrolling:touch;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;max-height:44vh;margin-top:8px;padding-right:4px;display:grid;overflow-y:auto}@media (width>=768px){.journal-history-list{flex-direction:column;max-height:62vh;display:flex}}.journal-history-item{border:1px solid var(--border-card);border-radius:var(--radius-md);cursor:pointer;width:100%;padding:8px 10px}.journal-detail-card{background:var(--bg-card-solid);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:18px}.detail-header{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}@media (width>=640px){.detail-header{flex-direction:row;justify-content:space-between;align-items:flex-start}}.journal-content-box{border-radius:var(--radius-md);background:#f8fafc;margin-bottom:16px;padding:14px;font-size:15px;line-height:1.5}.attached-photo img,.journal-content-box img,.image-preview img,.journal-detail-card img{object-fit:contain;border-radius:12px;max-height:280px;box-shadow:0 2px 8px #00000014;max-width:100%!important}.ai-feedback-box{border-radius:var(--radius-lg);background:linear-gradient(135deg,#fffbe0 0%,#fef3c7 100%);border:1px solid #fde68a;padding:16px}.reward-hero-card{color:#fff;border-radius:var(--radius-lg);background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);flex-direction:column;gap:16px;margin-bottom:20px;padding:20px;display:flex}@media (width>=640px){.reward-hero-card{flex-direction:row;justify-content:space-between;align-items:center}}.hero-left{align-items:center;gap:14px;display:flex}.star-big-badge{background:#fff3;border-radius:50%;align-items:center;padding:10px;display:flex}.hero-star-count{font-size:24px;font-weight:800}.level-progress-bar-container{width:100%}@media (width>=640px){.level-progress-bar-container{width:220px}}.progress-track{background:#fff3;border-radius:10px;height:8px;margin-top:6px;overflow:hidden}.progress-fill{background:#f59e0b;height:100%}.rewards-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:12px;display:grid}.reward-card{background:var(--bg-card-solid);border:1px solid var(--border-card);border-radius:var(--radius-lg);flex-direction:column;gap:10px;padding:16px;display:flex}.modal-overlay{-webkit-backdrop-filter:blur(6px);z-index:10000;background:#0f172a80;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=640px){.modal-overlay{align-items:center;padding:16px}}.modal-card,.modal-content{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;width:100%;max-width:600px;max-height:85dvh;padding:20px;padding-bottom:calc(24px + var(--safe-bottom));box-shadow:var(--shadow-lg);background:#fff;animation:.25s slideUp;overflow-y:auto}@media (width>=640px){.modal-card,.modal-content{border-radius:var(--radius-lg);padding-bottom:20px}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.form-group{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.form-group label{font-size:13px;font-weight:700}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--border-card);border-radius:var(--radius-md);outline:none;padding:10px 12px;font-size:16px}.form-row{flex-direction:column;gap:8px;display:flex}@media (width>=500px){.form-row{flex-direction:row;align-items:flex-start;gap:12px}}.flex-1{flex:1}.flex-2{flex:2}.language-auto-badge{border:1px dashed var(--border-card);border-radius:var(--radius-md);white-space:nowrap;background:0 0;align-items:baseline;gap:6px;padding:10px 12px;font-size:16px;display:flex;overflow:hidden}.language-auto-hint{color:var(--text-muted);text-overflow:ellipsis;font-size:11px;font-weight:500;overflow:hidden}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.quick-star-buttons{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.star-adj-btn{border-radius:var(--radius-md);cursor:pointer;border:none;flex:1;padding:10px;font-size:14px;font-weight:700}.star-adj-btn.add{color:#15803d;background:#dcfce7}.star-adj-btn.sub{color:#b91c1c;background:#fee2e2}@media (prefers-color-scheme:dark){:root{--bg-app:#0f1219;--bg-card:#1e2332eb;--bg-card-solid:#1a1f2e;--border-card:#374151b3;--primary-blue:#60a5fa;--primary-gradient:linear-gradient(135deg, #6366f1 0%, #60a5fa 100%);--accent-gold:#fbbf24;--accent-green:#34d399;--text-main:#e2e8f0;--text-muted:#94a3b8;--tint-warn-bg:#fbbf241f;--tint-warn-fg:#fcd34d;--tint-warn-border:#fbbf2459;--tint-danger-bg:#ef44441f;--tint-danger-fg:#fca5a5;--tint-danger-border:#ef444459;--tint-ok-bg:#10b9811f;--tint-ok-fg:#6ee7b7;--tint-ok-border:#10b98159;--shadow-sm:0 2px 8px #00000040;--shadow-md:0 8px 24px #00000059;--shadow-lg:0 16px 32px #00000073}body{background-color:var(--bg-app);color:var(--text-main);background-image:radial-gradient(circle at 10% 20%,#6366f11f 0%,#0000 40%),radial-gradient(circle at 90% 80%,#ec489914 0%,#0000 40%)}.app-header{border-color:var(--border-card);background:#1a1f2e}.main-nav{border-top-color:var(--border-card)}.star-counter{background:#fbbf2426;border-color:#fbbf244d}.star-count{color:#fbbf24}.nav-tab{border-color:var(--border-card);color:var(--text-muted);background:#252b3d}.nav-tab.active{color:#fff}.section-card,.tab-section-card{background:var(--bg-card);border-color:var(--border-card)}.filter-chip{color:#cbd5e1;background:#252b3d;border-color:#374151}.filter-chip.active{color:#fff;background:#3b82f6;border-color:#3b82f6}.tab-title{color:#f8fafc!important}.tab-subtitle{color:#94a3b8!important}.secondary-btn{color:#f8fafc!important;background:#1e2536!important;border-color:#374151!important}.calendar-refresh-btn svg{color:#60a5fa!important}.event-card{background:#1e2536!important;border-color:#2d3548!important}.event-title{color:#f1f5f9!important}.detail-item.date-badge{color:#93c5fd!important;background:#3b82f633!important}.detail-item.date-badge svg{color:#60a5fa!important}.view-list-toggle-btn{color:#93c5fd!important;background:#252b3d!important;border-color:#3b82f6!important}.view-list-toggle-btn svg{color:#60a5fa!important}.test-details-container{color:#f8fafc!important;background:#151924!important;border-color:#374151!important}.recog-section-title{color:#c4b5fd!important}.recog-pill{color:#ddd6fe!important;background:#7c3aed33!important;border-color:#8b5cf666!important}.dict-section-title{color:#6ee7b7!important}.dict-pill{color:#6ee7b7!important;background:#10b98133!important;border-color:#10b98166!important}.spelling-section-title{color:#cbd5e1!important}.spelling-pill{color:#f8fafc!important;background:#252b3d!important;border-color:#374151!important}.dict-sentence-box{color:#6ee7b7!important;background:#10b98126!important;border-color:#10b9814d!important}.cat-spelling .category-badge{color:#a5b4fc;background:#6366f133}.cat-tingxie .category-badge{color:#fca5a5;background:#ef444433}.cat-tuition .category-badge{color:#fcd34d;background:#f59e0b33}.cat-holiday .category-badge{color:#6ee7b7;background:#10b98133}.cat-party .category-badge{color:#f9a8d4;background:#ec489933}.cat-homework .category-badge{color:#c4b5fd;background:#8b5cf633}.test-selector-group select{color:#e2e8f0;background-color:#252b3d;border-color:#374151}.word-input{color:#e2e8f0;background-color:#1a1f2e;border-color:#374151}.word-input:focus{border-color:#60a5fa}.voice-player-box{background:linear-gradient(135deg,#1a1f2e 0%,#252b3d 100%);border-color:#374151}.secondary-audio-btn{border-color:var(--border-card);color:var(--text-muted);background:#252b3d}.nav-step-btn{color:var(--text-muted);background:#252b3d}.upload-dropzone{color:var(--text-muted);background:#1a1f2e;border-color:#374151}.journal-content-box{color:var(--text-main);background:#1a1f2e}.ai-feedback-box{background:linear-gradient(135deg,#fbbf241a 0%,#fef3c714 100%);border-color:#fbbf2440}.journal-list-sidebar{background:var(--bg-card-solid)}.journal-history-item{border-color:var(--border-card)}.journal-detail-card{background:var(--bg-card-solid)}.reward-card{background:var(--bg-card-solid);border-color:var(--border-card)}.redeem-btn.locked{color:#f1f5f9!important;background:#94a3b82e!important;border-color:#94a3b866!important}.modal-overlay{background:#000000a6}.modal-card,.modal-content{color:var(--text-main);background:#1e2536}.form-group input,.form-group select,.form-group textarea{color:#e2e8f0;background:#252b3d;border-color:#374151}.form-group label{color:var(--text-main)}.pending-sync-chip{color:#fcd34d;background:#b4530938;border-color:#b4530980}.star-adj-btn.add{color:#6ee7b7;background:#10b98133}.star-adj-btn.sub{color:#fca5a5;background:#ef444433}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#94a3b84d;border-radius:3px}}.icon-xs{flex-shrink:0;width:14px;height:14px}.icon-sm{flex-shrink:0;width:16px;height:16px}.icon-md{flex-shrink:0;width:20px;height:20px}.fill-gold{color:var(--accent-gold);fill:var(--accent-gold)}.text-gold{color:var(--accent-gold)}.text-green{color:var(--accent-green)}.text-red{color:#ef4444}.reward-card-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.reward-icon-wrapper{border-radius:var(--radius-sm);background:var(--bg-app);border:1px solid var(--border-card);flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.reward-icon-svg{width:22px;height:22px;color:var(--primary-blue)}.cost-tag{background:var(--accent-gold);color:#1f1300;white-space:nowrap;border-radius:20px;flex-shrink:0;align-items:center;gap:5px;padding:5px 11px;font-size:13px;font-weight:800;display:inline-flex}.cost-tag .fill-gold{color:#1f1300;fill:#1f1300}.reward-title{color:var(--text-main);margin:0;font-size:15px;font-weight:800;line-height:1.3}.reward-desc{color:var(--text-muted);flex:1;margin:0;font-size:13px;line-height:1.4}.reward-action{margin-top:auto}.redeem-btn{border-radius:var(--radius-md);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;width:100%;padding:12px 18px;font-size:14px;font-weight:800;transition:all .2s;display:inline-flex}.redeem-btn.affordable{background:var(--primary-gradient);color:#fff;box-shadow:0 4px 14px #3b82f659}.redeem-btn.affordable:hover{transform:translateY(-1px);box-shadow:0 6px 18px #3b82f673}.redeem-btn.locked{color:var(--text-main);border:1.5px solid var(--border-card);cursor:not-allowed;opacity:1;background:#94a3b82e}.reward-section-title{margin:24px 0 12px}.reward-section-title h3{color:var(--text-main);margin:0;font-size:17px;font-weight:800}.star-big{width:26px;height:26px}.progress-label{opacity:.95;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;font-size:12px;font-weight:700;display:flex}.empty-state{text-align:center;color:var(--text-muted);background:var(--bg-card-solid);border:1px dashed var(--border-card);border-radius:var(--radius-md);padding:28px 18px;font-size:14px}.event-notes{color:var(--text-muted);font-size:12px}.test-date-badge,.word-step-badge,.lang-badge{border-radius:12px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.word-step-badge{background:var(--primary-blue);color:#fff}.lang-badge{background:var(--bg-app);border:1px solid var(--border-card);color:var(--text-muted)}.voucher-card{background:var(--bg-card-solid);border:2px dashed var(--primary-blue);box-shadow:var(--shadow-sm);border-radius:16px;flex-direction:column;justify-content:space-between;padding:16px;display:flex}.voucher-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.voucher-icon{background:var(--bg-app);border:1px solid var(--border-card);border-radius:12px;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.voucher-cost{background:var(--primary-blue);color:#fff;white-space:nowrap;border-radius:12px;padding:4px 10px;font-size:12px;font-weight:800}.voucher-title{color:var(--text-main);margin:6px 0 4px;font-size:16px;font-weight:800}.voucher-desc{color:var(--text-muted);margin:0 0 12px;font-size:13px;font-weight:500}.voucher-claimed{color:var(--text-muted);align-items:center;gap:4px;margin-bottom:12px;font-size:11px;font-weight:600;display:flex}.voucher-hint{background:var(--bg-app);border:1px solid var(--border-card);text-align:center;color:var(--text-muted);border-radius:10px;padding:8px 12px;font-size:12px;font-weight:700}.voucher-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.voucher-section-head h3{color:var(--text-main);align-items:center;gap:8px;margin:0;font-size:17px;font-weight:800;display:flex}.voucher-pending-chip{background:var(--bg-app);border:1px solid var(--border-card);color:var(--text-muted);border-radius:12px;padding:4px 10px;font-size:12px;font-weight:700}.math-tab .math-card{background:var(--bg-card-solid);border:1px solid var(--border-card);border-radius:var(--radius-md);color:var(--text-main)}.math-set-list{gap:10px;display:grid}.math-set-card{text-align:left;background:var(--bg-card-solid);width:100%;color:var(--text-main);border:1px solid var(--border-card);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:pointer;touch-action:manipulation;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.math-set-card:active{transform:scale(.995)}.math-set-card.is-done{opacity:.72}.math-startcard.is-tailored{background:linear-gradient(135deg,#4f46e51a,#3b82f61a);border:1px solid #4f46e540}.math-result-why{background:var(--tint-warn-bg);color:var(--tint-warn-fg);border:1px solid var(--tint-warn-border);border-radius:10px;align-items:flex-start;gap:8px;margin-top:8px;padding:8px 10px;font-size:13px;line-height:1.45;display:flex}@keyframes math-spin{to{transform:rotate(360deg)}}.math-spin{animation:1.1s linear infinite math-spin}@media (prefers-reduced-motion:reduce){.math-spin{animation:none}}.math-done-block{margin-top:14px}.math-done-toggle{border:1px dashed var(--border-card);width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;font-size:13px;font-weight:700;display:flex}.math-done-toggle>span{align-items:center;gap:6px;display:flex}.math-done-toggle:hover{color:var(--text-main)}.math-done-chevron{transition:transform .18s}.math-done-chevron.is-open{transform:rotate(90deg)}.math-done-block .math-set-list{margin-top:8px}.math-set-card .math-set-name{min-width:0;font-weight:700;display:block}.math-set-meta{color:var(--text-muted);margin-top:2px;font-size:12px;display:block}.math-set-score{text-align:right;color:var(--text-main);flex-shrink:0;font-size:12px;font-weight:700}.math-set-score span{color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:600;display:block}.math-question-card{background:var(--bg-card-solid);border:1px solid var(--border-card);border-radius:var(--radius-lg);color:var(--text-main);box-shadow:var(--shadow-sm);margin-bottom:16px;padding:20px 18px}.math-context{color:var(--text-muted);background:var(--bg-app);border-left:3px solid var(--primary-blue);border-radius:0 var(--radius-sm) var(--radius-sm) 0;overflow-wrap:anywhere;margin-bottom:12px;padding:10px 12px;font-size:15px;line-height:1.5}.math-prompt{overflow-wrap:anywhere;margin-bottom:18px;font-size:19px;font-weight:600;line-height:1.5}.math-options{gap:8px;display:grid}.math-option{text-align:left;border-radius:var(--radius-md);border:1px solid var(--border-card);background:var(--bg-app);color:var(--text-main);cursor:pointer;touch-action:manipulation;padding:12px 14px;font-size:16px}.math-option.is-chosen{border:2px solid var(--primary-blue);background:#3b82f624;background:color-mix(in srgb, var(--primary-blue) 14%, transparent);font-weight:700}.math-answer-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.math-answer-input{border-radius:var(--radius-md);border:1px solid var(--border-card);background:var(--bg-app);width:100%;max-width:240px;color:var(--text-main);padding:12px 14px;font-size:22px}.math-unit{color:var(--text-muted);font-size:18px;font-weight:700}.math-dots{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.math-dot{border:1px solid var(--border-card);width:30px;min-width:30px;height:30px;color:var(--text-muted);cursor:pointer;touch-action:manipulation;background:0 0;border-radius:50%;padding:0;font-size:12px;font-weight:700}.math-dot.is-answered{background:var(--primary-blue);border-color:var(--primary-blue);color:#fff}.math-dot.is-current{outline:2px solid var(--primary-blue);outline-offset:2px}.math-review-row{text-align:left;background:var(--bg-card-solid);width:100%;color:var(--text-main);border:1px solid var(--border-card);border-radius:var(--radius-md);cursor:pointer;align-items:baseline;gap:12px;padding:10px 14px;display:flex}.math-review-num{color:var(--text-muted);flex-shrink:0;font-weight:700}.math-review-prompt{overflow-wrap:anywhere;flex:1;min-width:0;font-size:14px}.math-review-answer{flex-shrink:0;font-size:15px;font-weight:700}.math-review-answer.is-blank{color:var(--text-muted);font-weight:600}.math-result-row{background:var(--bg-card-solid);color:var(--text-main);border-radius:var(--radius-md);border:1px solid var(--border-card);padding:12px 14px}.math-result-row.is-correct{border-color:var(--tint-ok-border)}.math-result-row.is-wrong{border-color:var(--tint-danger-border)}.math-result-icon.is-correct{color:var(--tint-ok-fg)}.math-result-icon.is-wrong{color:var(--tint-danger-fg)}.math-result-detail{margin-top:8px;margin-left:34px;font-size:14px}.math-result-hint{color:var(--text-muted);gap:6px;margin-top:6px;display:flex}.math-panel{background:var(--bg-app);border:1px solid var(--border-card);border-radius:var(--radius-md);color:var(--text-main);margin-bottom:14px;padding:12px 14px}.math-panel.is-warn{background:var(--tint-warn-bg);border-color:var(--tint-warn-border);color:var(--tint-warn-fg);font-weight:600}.math-chip-row{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.math-clock{font-variant-numeric:tabular-nums;background:var(--bg-app);color:var(--text-main);border:1px solid var(--border-card);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:17px;font-weight:800;display:inline-flex}.math-clock.is-low{background:var(--tint-warn-bg);color:var(--tint-warn-fg);border-color:var(--tint-warn-border)}.math-clock.is-critical{background:var(--tint-danger-bg);color:var(--tint-danger-fg);border-color:var(--tint-danger-border)}.math-actions{flex-wrap:wrap;justify-content:space-between;gap:10px;display:flex}.math-actions-top{justify-content:flex-start;margin:4px 0 16px}.math-header-side{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.math-startcard{background:var(--bg-card-solid);border:1px solid var(--primary-blue);border-left:5px solid var(--primary-blue);border-radius:var(--radius-md);color:var(--text-main);box-shadow:var(--shadow-sm);margin-bottom:14px;padding:14px 16px}.math-startcard h3{margin:6px 0 4px;font-size:17px;font-weight:800}.math-startcard p{color:var(--text-muted);margin:0 0 12px;font-size:14px;line-height:1.45}.math-startcard-label{letter-spacing:.04em;text-transform:uppercase;color:var(--primary-blue);background:var(--bg-app);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:800;display:inline-block}
