:root{--color-primary:#ffb830;--color-primary-light:#ffd166;--color-primary-lighter:#fff0c9;--color-primary-dark:#e5a020;--color-secondary:#ff6b9d;--color-secondary-lighter:#ffd6e6;--color-accent:#7c5cfc;--color-accent-lighter:#ddd6fe;--color-bg:#fffdf7;--color-bg-secondary:#fff8ec;--color-bg-tertiary:#f5f0e3;--color-surface:#fff;--color-text-primary:#2d2a32;--color-text-secondary:#6b6578;--color-text-tertiary:#9e97a8;--color-text-inverse:#fff;--state-success:#4ade80;--state-warning:#fb923c;--state-error:#f87171;--state-info:#60a5fa;--radius-xs:4px;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--radius-xl:32px;--radius-full:9999px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--shadow-sm:0 2px 8px #0000000a;--shadow-md:0 4px 16px #0000000a;--shadow-lg:0 8px 32px #0000000f;--shadow-float:0 12px 48px #0000001f;--surface-border:1px solid #0000000f;--transition-fast:.15s ease;--transition-base:.25s ease;--spring-bounce:cubic-bezier(.34, 1.56, .64, 1)}html{background:var(--color-bg-secondary);min-height:100%}html,body{max-width:100vw;overflow-x:hidden}body{min-height:100vh;color:var(--color-text-primary);background:radial-gradient(circle at top left, #ffd6e68c, transparent 34%), linear-gradient(180deg, var(--color-bg-secondary) 0%, var(--color-bg) 52%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*{box-sizing:border-box;margin:0;padding:0}a{color:inherit;text-decoration:none}button,input{font:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mobile-shell{background:var(--color-bg);width:min(100%,430px);min-height:100vh;margin:0 auto;position:relative;overflow-x:hidden;box-shadow:0 0 0 1px #0000000a}.mobile-shell.with-tabs{padding-bottom:calc(86px + env(safe-area-inset-bottom,0px))}.page-pad{padding:max(18px, env(safe-area-inset-top)) 18px 24px}.stack{gap:16px;display:grid}.topbar{justify-content:space-between;align-items:center;gap:12px;padding-bottom:18px;display:flex}.brand{gap:2px;display:grid}.brand strong{font-size:17px;line-height:1.2}.brand span,.muted{color:var(--color-text-secondary)}.hero-card,.panel,.mini-card{background:var(--color-surface);border:var(--surface-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.hero-card{background:linear-gradient(135deg, #fff0c9f2, #ffd6e6b8), var(--color-surface);grid-template-columns:minmax(0,1fr) 104px;align-items:center;gap:12px;padding:18px;display:grid}.panel{padding:18px}.mini-card{padding:14px}.section-title{color:var(--color-text-tertiary);letter-spacing:0;text-transform:uppercase;font-size:11px;font-weight:800;line-height:1.4}h1,h2,h3{letter-spacing:0}h1{font-size:30px;line-height:1.04}h2{font-size:22px;line-height:1.18}h3{font-size:16px;line-height:1.25}p{line-height:1.62}.button,button{border-radius:var(--radius-full);min-height:46px;color:var(--color-text-primary);cursor:pointer;transition:transform var(--transition-fast) var(--spring-bounce), box-shadow var(--transition-base), background var(--transition-base);-webkit-tap-highlight-color:transparent;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:800;display:inline-flex}.button:hover,button:hover{transform:translateY(-1px)scale(1.02)}.button:active,button:active{transform:scale(.97)}.button.primary,button.primary{color:var(--color-text-primary);background:var(--color-primary);box-shadow:0 8px 18px #ffb83052}button:disabled,button.primary:disabled{cursor:not-allowed;opacity:.62;box-shadow:none;transform:none}.hero-action{width:fit-content}.button.secondary{color:var(--color-text-primary);background:var(--color-surface);border-color:#00000014}.button.icon{width:44px;min-height:44px;padding:0}.loading-spinner{flex:none;animation:.76s linear infinite loading-spin}.navigation-loading-indicator{z-index:100;top:max(12px, env(safe-area-inset-top));min-height:42px;color:var(--color-primary-dark);border-radius:var(--radius-full);box-shadow:var(--shadow-float);pointer-events:none;animation:loading-indicator-enter .18s var(--spring-bounce);background:#fffdf7f5;border:1px solid #ffb8305c;align-items:center;gap:5px;padding:0 14px;display:inline-flex;position:fixed;left:50%;transform:translate(-50%)}.navigation-loading-indicator .loading-spinner{color:var(--color-secondary)}.loading-dot{border-radius:var(--radius-full);background:var(--color-primary);width:5px;height:5px;animation:.72s ease-in-out infinite loading-dot-bounce}.loading-dot:nth-of-type(2){animation-delay:.12s}.loading-dot:nth-of-type(3){animation-delay:.24s}.field{gap:8px;display:grid}.field label{font-weight:800}.field input{border-radius:var(--radius-md);background:var(--color-surface);width:100%;min-height:52px;color:var(--color-text-primary);transition:border-color var(--transition-base), transform var(--transition-base), box-shadow var(--transition-base);border:1px solid #00000014;outline:none;padding:0 14px}.field input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-lighter);transform:scale(1.01)}.segmented-control{border-radius:var(--radius-full);background:var(--color-bg-tertiary);grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:5px;display:grid}.segmented-control.three{grid-template-columns:repeat(3,minmax(0,1fr))}.segmented-control button{min-height:40px;color:var(--color-text-secondary);box-shadow:none;background:0 0}.segmented-control button.is-active{color:var(--color-text-primary);background:var(--color-surface);box-shadow:var(--shadow-sm)}.auth-note{font-size:13px;font-weight:700}.auth-email-guidance{border-left:3px solid var(--color-accent);border-radius:var(--radius-md);background:var(--color-accent-lighter);color:var(--color-text-primary);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;padding:10px 11px;display:grid}.auth-email-guidance>svg{color:var(--color-accent);margin-top:1px}.auth-email-guidance>div{gap:2px;min-width:0;display:grid}.auth-email-guidance strong{font-size:13px;line-height:1.45}.auth-email-guidance span{color:var(--color-text-secondary);font-size:12px;font-weight:700;line-height:1.5}.status{border-radius:var(--radius-md);background:var(--color-accent-lighter);color:var(--color-accent);padding:12px 14px;font-weight:700}.status.warning{color:#9a5b00;background:#fff1da}.status.success{color:#11845b;background:#e8faef}@keyframes loading-spin{to{transform:rotate(360deg)}}@keyframes loading-indicator-enter{0%{opacity:0;transform:translate(-50%,-8px)scale(.9)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes loading-dot-bounce{0%,to{transform:translateY(2px)}50%{transform:translateY(-3px)}}.pill{border-radius:var(--radius-full);background:var(--color-primary-lighter);width:fit-content;color:var(--color-primary-dark);align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:800;display:inline-flex}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.metric{border-radius:var(--radius-md);background:var(--color-surface);text-align:center;border:1px solid #0000000f;padding:12px 10px}.metric strong{font-size:20px;line-height:1;display:block}.metric span{color:var(--color-text-secondary);font-size:12px;font-weight:700}.card-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.progress-summary{align-items:end;gap:8px;display:flex}.progress-summary strong{font-size:34px;line-height:1}.progress-summary span{color:var(--color-text-secondary);font-weight:800}.progress-track{border-radius:var(--radius-full);background:var(--color-bg-tertiary);height:11px;overflow:hidden}.progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--color-primary-light), var(--color-primary));height:100%;box-shadow:0 0 10px #ffb83057}.goal-list{gap:10px;display:grid}.daily-dashboard{border:var(--surface-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-md);padding:20px}.daily-dashboard-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.daily-dashboard-heading h1{margin-top:3px;font-size:28px}.streak-pill{color:#b45309;background:var(--color-primary-lighter);flex:none}.daily-task-list{border-top:1px solid #2d2a3214;display:grid}.daily-task-row{border-bottom:1px solid #2d2a3214;grid-template-columns:40px minmax(0,1fr) 20px;align-items:center;gap:11px;min-height:72px;display:grid}.daily-task-row>svg{color:var(--color-text-tertiary)}.daily-task-icon{border-radius:var(--radius-sm);place-items:center;width:40px;height:40px;display:grid}.daily-task-icon.learning{color:#9a6700;background:var(--color-primary-lighter)}.daily-task-icon.review{color:#c2396b;background:var(--color-secondary-lighter)}.daily-task-row.is-complete .daily-task-icon{color:#15803d;background:#dcfce7}.daily-task-copy{gap:3px;min-width:0;display:grid}.daily-task-copy strong{font-size:16px}.daily-task-copy small,.daily-streak-rule,.sync-caption{color:var(--color-text-secondary);font-size:13px;font-weight:700}.daily-streak-rule{text-align:center;margin:0}.sync-caption{color:var(--color-text-tertiary);text-align:center;margin:-6px 0 0}.section-tabs{border-radius:var(--radius-sm);background:var(--color-bg-tertiary);scrollbar-width:none;border:1px solid #2d2a3214;width:100%;padding:4px;display:flex;overflow-x:auto}.section-tabs::-webkit-scrollbar{display:none}.section-tabs a,.section-tabs button{border-radius:var(--radius-xs);min-height:40px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;flex:1 0 auto;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:800;display:inline-flex}.section-tabs a.is-active,.section-tabs button.is-active{color:var(--color-text-primary);background:var(--color-surface);box-shadow:var(--shadow-sm)}.practice-summary{border-top:1px solid #2d2a3214;border-bottom:1px solid #2d2a3214;gap:16px;padding:18px 0;display:grid}.practice-summary>div{gap:6px;display:grid}.practice-summary h2{font-size:22px}.practice-summary .button{width:100%}.practice-filters{justify-content:flex-start}.weak-word-list{gap:10px;display:grid}.weak-word-row{border:var(--surface-border);border-radius:var(--radius-sm);background:var(--color-surface);min-height:86px;box-shadow:var(--shadow-sm);grid-template-columns:24px minmax(0,1fr) 42px;align-items:center;gap:11px;padding:12px;display:grid}.weak-word-select{place-items:center;width:24px;height:44px;display:grid}.weak-word-select input{width:19px;height:19px;accent-color:var(--color-primary-dark)}.weak-word-copy{gap:3px;min-width:0;display:grid}.weak-word-copy h3{min-width:0;font-size:19px}.weak-word-copy p,.weak-word-copy span{overflow-wrap:anywhere;margin:0}.weak-word-copy p{color:var(--color-text-secondary);font-size:14px;font-weight:700}.weak-word-tags{flex-wrap:wrap;gap:6px;display:flex}.weak-word-tags span{color:var(--color-accent);font-size:12px;font-weight:800}.weak-word-focus{width:42px;height:42px;color:var(--color-text-tertiary);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;display:grid}.weak-word-focus.is-active{color:var(--color-primary-dark);background:var(--color-primary-lighter)}.weak-word-focus:disabled{opacity:.5}.practice-filter-empty{color:var(--color-text-secondary);text-align:center;justify-items:center;gap:8px;padding:28px 12px;display:grid}.practice-selection-bar{left:50%;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:18;border-radius:var(--radius-sm);background:var(--color-surface);width:min(100% - 24px,406px);min-height:62px;box-shadow:var(--shadow-float);border:1px solid #2d2a321a;justify-content:space-between;align-items:center;gap:12px;padding:9px 10px 9px 16px;display:flex;position:fixed;transform:translate(-50%)}.practice-selection-bar span{font-size:14px;font-weight:900}.practice-selection-bar .button{min-height:42px;padding-inline:16px}.practice-empty{margin-top:8px}.session-layout{align-content:start;min-height:100vh}.session-header{grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;display:grid}.session-header h1{font-size:22px}.word-list{gap:10px;display:grid}.review-summary{gap:16px}.review-groups{gap:12px}.review-group{gap:14px;display:grid}.review-preview-list{gap:8px}.review-word{border-bottom:1px solid #23253914;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.review-word:last-child{border-bottom:0}.review-word div{gap:2px;min-width:0;display:grid}.review-word h3{color:var(--color-text-primary);margin:0;font-size:16px}.review-word span,.review-word p,.review-queue-note{color:var(--color-text-secondary);margin:0;font-size:13px;font-weight:700}.review-word p{max-width:132px;color:var(--color-accent);text-align:right;flex:none}.review-queue-link{justify-content:center;width:100%}.review-full-list{background:var(--color-surface);border:var(--surface-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);gap:0;padding:2px 16px}.review-more-button{width:100%}.word-card{border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px solid #0000000f;gap:8px;padding:14px;display:grid}.word-card h3{font-size:22px}.word-card p:first-of-type{color:var(--color-text-primary);font-weight:800}.word-card span{border-radius:var(--radius-full);width:fit-content;color:var(--color-accent);background:var(--color-accent-lighter);padding:5px 9px;font-size:12px;font-weight:800}.goal-item{border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px solid #0000000f;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;padding:10px;display:grid}.goal-item>svg{justify-self:center}.privacy-note{border-radius:var(--radius-md);color:var(--color-text-secondary);background:var(--color-primary-lighter);align-items:center;gap:8px;padding:12px;font-size:13px;font-weight:800;display:flex}.privacy-note svg{color:var(--color-primary-dark);flex:none}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.quick-action{border-radius:var(--radius-lg);min-height:90px;color:var(--color-text-primary);background:var(--color-surface);border:var(--surface-border);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:flex-start;padding:14px}.mascot{aspect-ratio:1;object-fit:cover;border-radius:var(--radius-xl);width:100%;max-width:104px;height:auto;box-shadow:var(--shadow-lg);animation:3s ease-in-out infinite mascot-float}.hero-badge{border-radius:var(--radius-xl);width:104px;height:104px;color:var(--color-text-inverse);background:radial-gradient(circle at 30% 20%, #ffffff59, transparent 34%), linear-gradient(135deg, var(--color-accent), var(--color-secondary));box-shadow:var(--shadow-lg);justify-self:end;place-items:center;display:grid}.tab-bar{z-index:20;width:min(100%,430px);height:calc(66px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--color-surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-top:1px solid #0000000f;justify-content:space-around;align-items:flex-start;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -4px 16px #0000000a}.tab-item{min-width:0;color:var(--color-text-tertiary);transition:transform var(--transition-base) var(--spring-bounce), color var(--transition-base);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;padding:9px 0 6px;font-size:11px;font-weight:800;line-height:1;display:flex;position:relative}.tab-item:before{content:"";border-radius:var(--radius-full);background:var(--color-primary);width:4px;height:4px;transition:transform var(--transition-base) var(--spring-bounce);position:absolute;top:5px;left:50%;transform:translate(-50%)scale(0)}.tab-item.is-active{color:var(--color-primary);transform:translateY(-2px)}.tab-item.is-active:before{transform:translate(-50%)scale(1)}.tab-item svg{stroke-width:2.2px;width:23px;height:23px}.page-title{gap:8px;padding-bottom:4px;display:grid}.session-shell{align-content:start;min-height:100vh}.session-topbar{grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.session-topbar h1{font-size:22px}.session-card{align-content:start;gap:18px;min-height:0}.session-meta{color:var(--color-text-secondary);justify-content:space-between;align-items:center;gap:10px;font-size:13px;font-weight:800;display:flex}.session-progress-value{color:var(--color-accent-dark)}.session-phase-label{border-radius:var(--radius-sm);color:var(--color-accent-dark);background:var(--color-accent-lighter);text-align:right;gap:2px;padding:6px 10px;display:grid}.session-phase-label strong{font-size:13px}.session-phase-label small{color:var(--color-text-secondary);font-size:11px;font-weight:800}.teaching-phase-track{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.review-phase-track{grid-template-columns:repeat(3,minmax(0,1fr))}.teaching-phase-track span{border-radius:var(--radius-full);color:#0000;background:var(--color-bg-tertiary);place-items:center;height:8px;display:grid;overflow:hidden}.teaching-phase-track span.complete{background:var(--state-success)}.teaching-phase-track span.active{background:var(--color-accent)}.batch-word-progress{color:var(--color-text-secondary);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;font-size:12px;font-weight:800;display:grid}.batch-word-track{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.batch-word-track i{border:2px solid var(--color-bg-tertiary);border-radius:var(--radius-xs);background:var(--color-surface);height:10px}.batch-word-track i.complete{border-color:var(--state-success);background:var(--state-success)}.batch-word-track i.active{border-color:var(--color-secondary);background:var(--color-secondary-lighter)}.word-prompt{border-radius:var(--radius-xl);background:var(--color-primary-lighter);text-align:center;gap:8px;padding:24px 18px;display:grid}.word-prompt h2{font-size:42px}.word-phonetic{color:var(--color-text-secondary);font-family:Arial,sans-serif;font-size:17px;font-weight:700;line-height:1.2}.teaching-card{gap:14px}.learning-card-content{gap:14px;display:grid}.teaching-card-word{gap:12px;padding-block:28px}.teaching-card-word-meta{color:var(--color-text-secondary);flex-wrap:wrap;justify-content:center;gap:8px;font-family:Arial,sans-serif;font-size:15px;font-weight:800;display:flex}.teaching-card-word-meta span{border-radius:var(--radius-sm);background:#ffffffb8;padding:5px 9px}.teaching-card-meaning{color:var(--color-secondary);font-size:24px}.teaching-card-example{border-left:4px solid var(--color-secondary);border-radius:var(--radius-sm);background:var(--color-secondary-lighter);gap:9px;padding:16px;line-height:1.65;display:grid}.teaching-card-example .pronunciation-example{color:var(--color-text-primary);font-weight:850}.teaching-card-example>p:last-child{color:var(--color-text-secondary);font-size:14px;font-weight:700}.word-structure-cue{border:2px solid var(--color-primary-light);border-radius:var(--radius-md);background:var(--color-primary-lighter);padding:14px}.word-structure-cue summary{cursor:pointer;gap:7px;list-style:none;display:grid}.word-structure-cue summary::-webkit-details-marker{display:none}.word-structure-cue summary:after{content:"展开";color:var(--color-primary);justify-self:start;font-size:12px;font-weight:850}.word-structure-cue[open] summary:after{content:"收起"}.word-structure-details{gap:9px;padding-top:10px;display:grid}.word-structure-text{color:var(--color-text-primary);margin:0;font-size:16px;font-weight:850;line-height:1.5}.word-structure-components,.word-family-cues{flex-wrap:wrap;gap:7px;display:flex}.word-structure-components span,.word-family-cues span{min-height:30px;color:var(--color-text-secondary);background:#ffffffb3;border:1px solid #00000014;border-radius:999px;align-items:center;gap:5px;padding:5px 9px;font-size:13px;font-weight:800;line-height:1.2;display:inline-flex}.word-structure-components strong{color:var(--color-primary)}.word-structure-hook{color:var(--color-text-secondary);margin:0;font-size:14px;font-weight:750;line-height:1.5}.teaching-card-action{width:100%}.prompted-spelling-prompt{gap:16px;padding-block:22px}.spelling-letter-selector{gap:13px;display:grid}.spelling-letter-slots{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.spelling-fixed-letter,.spelling-letter-slot{border-radius:var(--radius-sm);text-align:center;width:36px;height:46px;font-size:29px;font-weight:900;line-height:1}.spelling-fixed-letter{color:var(--color-text-primary);place-items:center;display:grid}.spelling-fixed-letter.is-punctuation{width:18px;color:var(--color-text-secondary)}.spelling-letter-slot{caret-color:#0000;border:2px solid var(--color-primary);color:var(--color-text-primary);cursor:pointer;background:#ffffffd1;padding:0;box-shadow:0 2px #e5a02033}.spelling-letter-slot.is-active,.spelling-letter-slot:focus-visible{border-color:var(--color-accent);outline-offset:2px;outline:3px solid #7c5cfc2e;box-shadow:0 2px #6344e038}.spelling-letter-progress{color:var(--color-text-secondary);text-align:center;font-size:12px;font-weight:800}.spelling-letter-choices{grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:8px;display:grid}.spelling-letter-choice,.spelling-letter-delete{border-radius:var(--radius-sm);min-width:0;height:46px;color:var(--color-accent);background:var(--color-surface);border:2px solid #7c5cfc42;place-items:center;padding:0;font-size:20px;font-weight:900;line-height:1;display:grid;box-shadow:0 2px #6344e024}.spelling-letter-choice.is-used{color:var(--color-secondary);background:var(--color-secondary-lighter);border-color:#ff6b9d6b;box-shadow:inset 0 0 0 1px #ffffffb8}.spelling-letter-delete{color:var(--state-error);background:#fee2e2b8;border-color:#f871716b}.spelling-letter-choice:focus-visible,.spelling-letter-delete:focus-visible{outline-offset:2px;outline:3px solid #7c5cfc33}.prompted-spelling-meaning{color:var(--color-text-secondary);font-weight:800}.full-spelling-prompt{justify-items:center}.prompted-spelling-form>.primary{width:100%}.pronunciation-wrap{display:inline}.pronunciation-trigger{min-height:0;color:inherit;box-shadow:none;cursor:pointer;font:inherit;font-weight:inherit;line-height:inherit;text-align:inherit;background:0 0;border:0;border-radius:0;justify-content:center;align-items:center;gap:7px;padding:0;display:inline-flex}.pronunciation-trigger:hover:not(:disabled),.pronunciation-trigger:focus-visible{color:var(--color-accent);transform:none}.pronunciation-trigger:active{transform:none}.pronunciation-trigger:disabled{cursor:progress;opacity:.7}.pronunciation-example{color:inherit;font-size:inherit;font-weight:inherit;justify-content:flex-start}.pronunciation-hint{border:2px solid var(--color-secondary);width:48px;height:48px;color:var(--color-secondary-dark);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:50%}.pronunciation-hint:hover:not(:disabled),.pronunciation-hint:focus-visible{color:var(--color-secondary-dark);background:var(--color-secondary-lighter)}.pronunciation-status{color:var(--color-text-secondary);margin-top:8px;font-size:12px;font-weight:800;display:block}.answer-list{gap:10px;display:grid}.answer-option{background:var(--color-surface);width:100%;min-height:58px;box-shadow:var(--shadow-sm);border-color:#00000014;justify-content:flex-start}.answer-option strong{border-radius:var(--radius-full);background:var(--color-bg-tertiary);place-items:center;width:28px;height:28px;display:inline-grid}.answer-option.is-correct{background:#e8faef;border-color:#4ade80b3}.answer-option.is-wrong{background:#fff0f0;border-color:#f87171b3}.plan-choice-grid{gap:var(--space-3);display:grid}.plan-choice{background:var(--color-surface);border:var(--surface-border);border-radius:var(--radius-md);color:var(--color-text-primary);align-items:flex-start;gap:var(--space-1);min-height:72px;padding:var(--space-4);text-align:left;flex-direction:column;display:flex}.plan-choice span{color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:600}.plan-choice.is-selected{background:var(--color-primary-lighter);border-color:var(--color-primary);box-shadow:0 4px 14px #ffb8302e}.hint-button{min-height:40px;color:var(--color-accent);background:var(--color-accent-lighter);box-shadow:none}.training-feedback,.training-completion{border:var(--surface-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);color:var(--color-text-primary);display:grid}.training-feedback{border-width:2px;gap:16px;padding:0 18px 18px;overflow:hidden}.training-feedback.is-correct{background:#eefbf2;border-color:#22a447;box-shadow:0 10px 30px #15803d29}.training-feedback.is-wrong{background:#fff0f0;border-color:#e5484d;box-shadow:0 10px 30px #be183029}.training-feedback-status{color:#fff;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;margin-inline:-18px;padding:16px 18px;display:grid}.training-feedback.is-correct .training-feedback-status{background:#18833d}.training-feedback.is-wrong .training-feedback-status{background:#c82e38}.training-feedback-icon,.training-completion-icon{border-radius:var(--radius-full);place-items:center;display:grid}.training-feedback-icon{width:44px;height:44px}.training-feedback.is-correct .training-feedback-icon{color:#18833d;background:#fff}.training-feedback.is-wrong .training-feedback-icon{color:#c82e38;background:#fff}.training-feedback-copy{align-content:center;gap:2px;display:grid}.training-feedback-copy strong{font-size:18px}.training-feedback-copy span{color:inherit;opacity:.9;font-weight:700}.training-feedback-action{width:100%;min-height:50px}.training-completion{background:linear-gradient(135deg, #fff0c9eb, #fffffff5), var(--color-surface);justify-items:start;gap:12px;padding:26px 22px 22px}.training-completion-icon{color:#15803d;background:#e8faef;width:56px;height:56px}.training-completion h2{font-size:24px}.training-completion-action{width:100%;margin-top:8px}.unit-list{gap:12px;display:grid}.unit-card,.rank-card,.friend-card,.setting-row{border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px solid #0000000f;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.unit-card.current{background:#f2eeff;border-color:#7c5cfc40}.unit-card.locked{color:var(--color-text-tertiary)}.checkpoint-card{border-radius:var(--radius-md);background:#f2eeff;border:1px dashed #7c5cfc73;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.checkpoint-card .unit-icon{color:var(--color-text-inverse);background:var(--color-accent)}.checkpoint-card.locked{color:var(--color-text-tertiary);background:var(--color-bg-secondary);border-color:#0000001f}.checkpoint-card.locked .unit-icon{color:var(--color-text-secondary);background:var(--color-bg-tertiary)}.checkpoint-card.passed{background:#e8faef;border-color:#4ade8080}.checkpoint-card.passed .unit-icon{color:#15803d;background:#ffffffb8}.unit-icon,.avatar{border-radius:var(--radius-full);width:42px;height:42px;color:var(--color-text-primary);background:var(--color-primary);place-items:center;font-weight:900;display:grid}.profile-avatar{border-radius:var(--radius-full);color:var(--color-text-inverse);background:var(--color-accent);flex:none;place-items:center;font-weight:900;line-height:1;display:grid;overflow:hidden}.profile-avatar img{object-fit:cover;width:100%;height:100%}.unit-card.locked .unit-icon{background:var(--color-bg-tertiary)}.unit-card.checkpoint .unit-icon,.avatar.purple{color:var(--color-text-inverse);background:var(--color-accent)}.avatar.pink{background:var(--color-secondary-lighter)}.avatar.yellow{background:var(--color-primary-light)}.avatar.green{background:#c7f9d9}.rank-card{grid-template-columns:52px minmax(0,1fr)}.rank-card.mine{grid-template-columns:auto minmax(0,1fr)}.rank-list{gap:10px;display:grid}.leaderboard-entry{grid-template-columns:auto auto minmax(0,1fr) auto}.rank-card.is-current{background:#f2eeff;border-color:#7c5cfc40}.leaderboard-rank{border-radius:var(--radius-full);width:44px;min-height:44px;color:var(--color-primary-dark);background:var(--color-primary-lighter);place-items:center;font-weight:900;display:grid}.leaderboard-participation{gap:8px;display:grid}.text-link{width:fit-content;color:var(--color-accent);font-weight:900}.friend-card{background:var(--color-surface);box-shadow:var(--shadow-sm)}.friend-action-group{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.friend-action-group .button{white-space:nowrap;width:100%;min-width:0}.module-list{gap:10px;display:grid}.module-card{border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px solid #0000000f;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.module-card-form,.module-card-button{width:100%}.module-card-button{text-align:left;justify-content:normal}.module-card span{border-radius:var(--radius-full);width:fit-content;color:var(--color-accent);background:var(--color-accent-lighter);text-align:center;padding:5px 9px;font-size:12px;font-weight:800}.module-icon{border-radius:var(--radius-full);width:42px;height:42px;color:var(--color-primary-dark);background:var(--color-primary-lighter);place-items:center;display:grid}.status-panel{border-radius:var(--radius-lg);color:var(--color-text-primary);background:#f2eeff;border:1px solid #7c5cfc2e;gap:8px;padding:16px;display:grid}.status-panel strong{font-size:17px}.status-panel p{color:var(--color-text-secondary);font-weight:700}.encourage-button{width:42px;min-height:42px;color:var(--color-secondary);background:var(--color-secondary-lighter);box-shadow:none;padding:0}.profile-header{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;display:grid}.profile-avatar-large{box-shadow:0 8px 18px #7c5cfc33}.avatar-editor{border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px solid #7c5cfc24;gap:12px;padding:12px;display:grid}.avatar-editor-heading{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.avatar-editor-heading strong{margin-bottom:2px;font-size:16px;display:block}.avatar-editor-heading p{color:var(--color-text-secondary);font-size:13px;font-weight:700}.avatar-picker{position:relative;overflow:hidden}.avatar-picker input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.avatar-cropper{align-items:center}.avatar-crop-area{aspect-ratio:1;border-radius:var(--radius-md);cursor:grab;touch-action:none;background:#17151f;width:min(260px,100%);position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffff2e}.avatar-crop-area:active{cursor:grabbing}.avatar-crop-area img{-webkit-user-select:none;user-select:none;transform-origin:50%;max-width:none;position:absolute;top:50%;left:50%;translate:-50% -50%}.avatar-zoom-control{width:min(260px,100%);color:var(--color-accent);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;display:grid}.avatar-zoom-control input{accent-color:var(--color-primary)}.avatar-save-button{width:min(260px,100%)}.settings-list,.toggle-list{gap:10px;display:grid}.toggle-row{border-radius:var(--radius-md);min-height:52px;color:var(--color-text-primary);border:1px solid #0000000f;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;font-weight:800;display:grid}.toggle-row input{width:20px;height:20px;accent-color:var(--color-primary)}.friend-code-row{align-items:center;gap:10px;display:flex}.share-invite-card{border-radius:var(--radius-lg);background:var(--color-surface);border:1px solid #0000000f;gap:14px;padding:18px;display:grid}.pwa-install-banner{border-radius:var(--radius-md);background:var(--color-primary-lighter);color:var(--color-text-primary);border:1px solid #ffb83061;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px;display:grid;position:relative}.pwa-install-banner>svg{color:var(--color-accent)}.pwa-install-copy{gap:3px;min-width:0;padding-right:4px;display:grid}.pwa-install-copy strong{font-size:14px;line-height:1.35}.pwa-install-copy span{color:var(--color-text-secondary);font-size:12px;font-weight:700;line-height:1.45}.pwa-install-banner .button{grid-column:1/-1;min-height:46px;padding:8px 12px;font-size:13px}.pwa-dismiss{width:44px;height:44px;color:var(--color-text-secondary);background:0 0;border:0;place-items:center;padding:0;display:grid}.pwa-install-dialog-backdrop{z-index:60;background:#181b226b;align-items:end;padding:16px;display:grid;position:fixed;inset:0}.pwa-install-dialog{border-radius:var(--radius-lg);width:min(100%,430px);max-height:calc(100dvh - 32px);padding:22px 22px calc(22px + env(safe-area-inset-bottom));background:var(--color-surface);box-shadow:var(--shadow-lg);gap:16px;margin:0 auto;display:grid;position:relative;overflow-y:auto}.pwa-install-dialog .pwa-dismiss{position:absolute;top:8px;right:8px}.pwa-install-dialog-heading{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:11px;padding-right:44px;display:grid}.pwa-install-dialog-heading>svg{color:var(--color-accent)}.pwa-install-dialog-heading div{gap:2px;display:grid}.pwa-install-dialog-heading span{color:var(--color-accent);font-size:12px;font-weight:900}.pwa-install-dialog-heading h2{font-size:20px;line-height:1.3}.pwa-install-dialog ol{counter-reset:pwa-step;gap:12px;margin:0;padding:0;list-style:none;display:grid}.pwa-install-dialog li{counter-increment:pwa-step;grid-template-columns:30px minmax(0,1fr);align-items:start;gap:10px;display:grid}.pwa-install-dialog li:before{background:var(--color-primary-lighter);width:30px;height:30px;color:var(--color-accent);content:counter(pwa-step);border-radius:50%;place-items:center;font-size:13px;font-weight:900;display:grid}.pwa-install-dialog li div{gap:3px;padding-top:2px;display:grid}.pwa-install-dialog li strong{font-size:14px;line-height:1.4}.pwa-install-dialog li span{color:var(--color-text-secondary);font-size:13px;font-weight:700;line-height:1.5}.pwa-install-help{border-radius:var(--radius-sm);background:var(--color-secondary-lighter);color:var(--color-text-secondary);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;margin:0;padding:11px;font-size:12px;font-weight:700;line-height:1.5;display:grid}.pwa-install-help svg{color:var(--color-secondary);margin-top:1px}.pwa-install-completion{color:var(--color-text-primary);margin:0;font-size:13px;font-weight:800;line-height:1.5}.share-invite-card{background:var(--color-secondary-lighter)}.share-invite-card h2{font-size:20px}.share-invite-card p{color:var(--color-text-secondary);font-weight:700}.share-invite-feedback{color:var(--color-accent);font-weight:800}.share-landing-page{background:var(--color-bg)}.share-landing-content{display:grid}.share-landing-hero{padding:max(24px, env(safe-area-inset-top)) 20px 26px;background:url(/demo-assets/path-hero.jpg) 50% 52%/cover no-repeat;border-bottom:1px solid #e5a0202e;gap:20px;display:grid;position:relative;overflow:hidden}.share-landing-hero:before{content:"";background:#fff7dedb;position:absolute;inset:0}.share-landing-hero>*{z-index:1;position:relative}.share-landing-inviter{align-items:center;gap:12px;display:flex}.share-landing-avatar{border:3px solid var(--color-surface);box-shadow:var(--shadow-md);flex:none}.share-landing-inviter>div{gap:2px;min-width:0;display:grid}.share-landing-inviter span{color:var(--color-primary-dark);align-items:center;gap:5px;font-size:12px;font-weight:900;display:flex}.share-landing-inviter strong{overflow-wrap:anywhere;font-size:18px;line-height:1.25}.share-landing-inviter p,.share-landing-heading p,.share-landing-primary-action p,.share-method-item p,.share-landing-companion p{color:var(--color-text-secondary);font-weight:700}.share-landing-inviter p{font-size:13px}.share-landing-heading{gap:8px;display:grid}.share-landing-heading h1{font-size:30px;line-height:1.15}.share-landing-heading h2{color:var(--color-accent);font-size:22px;line-height:1.3}.share-landing-heading p{font-size:15px;line-height:1.7}.share-landing-primary-action{gap:8px;width:100%;display:grid}.share-landing-primary-action .button{width:100%}.share-landing-primary-action p{text-align:center;font-size:12px}.share-landing-method{gap:9px;padding:26px 20px 10px;display:grid}.share-landing-method>h2{max-width:340px;font-size:22px;line-height:1.35}.share-method-list{margin-top:4px;display:grid}.share-method-item{border-bottom:1px solid #00000012;grid-template-columns:44px minmax(0,1fr);align-items:start;gap:12px;padding:16px 0;display:grid}.share-method-item:last-child{border-bottom:0}.share-method-icon{border-radius:var(--radius-md);place-items:center;width:44px;height:44px;display:grid}.share-method-item.memory .share-method-icon{color:var(--color-accent);background:var(--color-accent-lighter)}.share-method-item.teaching .share-method-icon{color:#c85a82;background:var(--color-secondary-lighter)}.share-method-item.practice .share-method-icon{color:#137d55;background:#e8faef}.share-method-item>div{gap:4px;min-width:0;display:grid}.share-method-item h3{font-size:16px;line-height:1.35}.share-method-item p{font-size:13px;line-height:1.6}.share-landing-companion{background:var(--color-secondary-lighter);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:12px;margin-top:8px;padding:22px 20px 28px;display:grid}.share-landing-companion>svg{color:#c85a82}.share-landing-companion>div{gap:6px;min-width:0;display:grid}.share-landing-companion h2{font-size:19px;line-height:1.35}.share-landing-companion p{font-size:13px;line-height:1.65}.wechat-browser-overlay{z-index:50;color:#fff;text-align:center;background:#191c24d1;place-items:start center;padding:80px 24px 24px;display:grid;position:fixed;inset:0}.wechat-browser-overlay>div{justify-items:center;gap:12px;max-width:300px;display:grid}.wechat-browser-overlay strong{font-size:20px}.wechat-browser-overlay p{margin:0;line-height:1.7}.friend-code-row code{border-radius:var(--radius-md);background:var(--color-bg-tertiary);min-width:0;color:var(--color-text-primary);letter-spacing:1px;text-overflow:ellipsis;flex:1;padding:14px;font-size:16px;font-weight:800;overflow:hidden}.friend-request-form{grid-template-columns:minmax(0,1fr) auto;gap:10px;display:grid}.friend-request-form input{border-radius:var(--radius-md);min-width:0;color:var(--color-text-primary);background:var(--color-surface);font:inherit;border:1px solid #0000001f;padding:12px}.friend-list{gap:8px}.friend-list h3{font-size:15px}.friend-request,.friend-summary{grid-template-columns:minmax(0,1fr) auto}.friend-summary{grid-template-columns:auto minmax(0,1fr);align-items:start}.friend-request p{color:var(--color-text-secondary);margin-top:3px;font-size:13px;font-weight:700}.friend-actions{gap:6px;display:flex}.friend-actions .button,.friend-request .button,.friend-summary .button{min-height:36px;padding:7px 10px;font-size:13px}.friend-summary-main{min-width:0}.friend-summary-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.friend-summary-heading span{border-radius:var(--radius-full);color:var(--color-accent);background:var(--color-accent-lighter);flex:none;padding:4px 8px;font-size:12px;font-weight:800}.friend-summary-heading strong{overflow-wrap:anywhere;min-width:0}.friend-progress{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.friend-progress span{border-radius:var(--radius-full);color:var(--color-text-secondary);background:var(--color-bg-tertiary);align-items:center;gap:4px;padding:4px 7px;font-size:12px;font-weight:800;display:inline-flex}.friend-support-list{gap:8px}.friend-support-list h3{font-size:15px}.friend-support-item{border-radius:var(--radius-md);background:var(--color-secondary-lighter);grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:10px 12px;display:grid}.friend-support-item span{color:var(--color-secondary);font-weight:800}.encouragement-form{grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.encouragement-form select{border-radius:var(--radius-md);min-width:0;color:var(--color-text-primary);background:var(--color-surface);font:inherit;border:1px solid #0000001f;padding:8px 10px;font-weight:800}.encouragement-form{order:1}.gentle-reminder-form{order:2;min-width:0}.friend-remove-form{order:3;min-width:0}.friend-action-feedback{order:4;grid-column:1/-1;font-size:13px}.form-feedback{color:var(--color-secondary);font-weight:800}.form-feedback.success{color:var(--color-accent)}.setting-row{color:var(--color-text-primary);grid-template-columns:auto minmax(0,1fr);font-weight:800}.week-strip{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.week-day{color:var(--color-text-secondary);justify-items:center;gap:7px;font-size:12px;font-weight:800;display:grid}.week-day strong{border-radius:var(--radius-full);background:var(--color-bg-tertiary);width:18px;height:18px}.week-day:nth-child(-n+3) strong{background:var(--color-primary)}@keyframes mascot-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@media (max-width:380px){h1{font-size:30px}.hero-card,.metric-grid,.quick-grid{grid-template-columns:1fr}}
