:root{--paper: #f6f7fb;--surface: #ffffff;--surface-2: #f0f1f8;--ink: #1b1f3b;--ink-2: #4a5072;--ink-3: #7c829f;--line: #e3e6f0;--line-strong: #cfd3e3;--violet: #5b3fd9;--violet-hover: #4a30c4;--violet-soft: #efebff;--violet-ink: #3a2596;--teal: #0e9f8e;--teal-soft: #e3f6f3;--amber: #c27c0e;--amber-soft: #fdf3e1;--red: #d64545;--red-soft: #fdeceb;--blue: #2f7fd8;--success: var(--teal);--danger: var(--red);--text-muted: var(--ink-3);--font-ui: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Lexend", "Be Vietnam Pro", system-ui, sans-serif;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 15px;--fs-md: 17px;--fs-lg: 20px;--fs-xl: 24px;--fs-2xl: 30px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--sidebar-w: 236px;--topbar-h: 56px;--bottomnav-h: 64px;--safe-bottom: env(safe-area-inset-bottom, 0px);--focus: 0 0 0 3px rgba(91, 63, 217, .28)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{height:100%}body{margin:0;font-family:var(--font-ui);font-size:var(--fs-base);line-height:1.55;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;color:var(--ink);margin:0;line-height:1.25;letter-spacing:-.01em}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-md)}h4{font-size:var(--fs-base)}p{margin:0}a{color:var(--violet);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm)}.muted{color:var(--ink-3)}.small{font-size:var(--fs-sm)}.text-success{color:var(--teal)}.text-danger{color:var(--red)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 18px;border:1px solid transparent;border-radius:var(--r-sm);background:var(--violet);color:#fff;font:600 var(--fs-base)/1 var(--font-ui);cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease;white-space:nowrap}.btn:hover,button:hover:not(:disabled){background:var(--violet-hover);text-decoration:none}button:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.btn-secondary,button.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn-secondary:hover,button.secondary:hover:not(:disabled){background:var(--surface-2)}.btn-ghost,button.ghost{background:transparent;color:var(--violet);border-color:transparent;padding:0 10px}.btn-ghost:hover,button.ghost:hover:not(:disabled){background:var(--violet-soft)}.btn-danger,button.danger{background:var(--surface);color:var(--red);border-color:#f1c4c4}.btn-danger:hover,button.danger:hover:not(:disabled){background:var(--red-soft)}.btn-sm{min-height:34px;padding:0 12px;font-size:var(--fs-sm)}.btn-block{width:100%}input,select,textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:400 var(--fs-base)/1.4 var(--font-ui)}input::placeholder{color:var(--ink-3)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--violet);box-shadow:var(--focus)}.field{display:flex;flex-direction:column;gap:6px}.field>span,label.field-label{font-size:var(--fs-sm);font-weight:600;color:var(--ink-2)}audio{width:100%;height:44px}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:20px 14px;z-index:20}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 20px;color:var(--ink)}.brand:hover{text-decoration:none}.brand img{width:36px;height:36px;border-radius:10px;display:block}.brand-name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md);line-height:1.1}.brand-sub{font-size:var(--fs-xs);color:var(--ink-3)}.side-nav{display:flex;flex-direction:column;gap:2px}.side-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-sm);color:var(--ink-2);font-weight:500}.side-link:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.side-link.active{background:var(--violet-soft);color:var(--violet-ink);font-weight:600}.side-link .nav-icon{color:inherit}.nav-icon{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative}.nav-icon svg{width:22px;height:22px}.nav-badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}.side-link .nav-badge{margin-left:auto}.side-user{margin-top:auto;display:flex;align-items:center;gap:10px;padding:10px;border-radius:var(--r-md);color:var(--ink)}.side-user:hover{background:var(--surface-2);text-decoration:none}.side-user-name{font-weight:600;font-size:var(--fs-sm);line-height:1.2}.side-user-sub{font-size:var(--fs-xs);color:var(--ink-3)}.avatar{width:36px;height:36px;border-radius:50%;background:var(--violet-soft);color:var(--violet-ink);font-family:var(--font-display);font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.avatar-lg{width:64px;height:64px;font-size:var(--fs-xl)}.main{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column}.content{width:100%;max-width:980px;padding:32px 32px 48px}.topbar,.bottom-nav{display:none}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-head h1{font-size:var(--fs-2xl)}.page-head p{color:var(--ink-2);margin-top:6px;max-width:62ch}.back-link{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-sm);font-weight:600;margin-bottom:10px;color:var(--ink-2)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px}.panel+.panel,.section+.section,.panel+.section,.section+.panel{margin-top:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-head h2,.panel-head h3{font-size:var(--fs-md)}.panel-head a{font-size:var(--fs-sm);font-weight:600}.panel-desc{color:var(--ink-2);font-size:var(--fs-sm);margin:-8px 0 14px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid-2>.panel+.panel{margin-top:0}.notice{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);font-size:var(--fs-sm);color:var(--ink-2)}.notice strong{color:var(--ink);display:block;font-size:var(--fs-base);margin-bottom:2px}.notice .notice-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.notice-info{background:var(--violet-soft);border-color:#dcd3ff}.notice-warn{background:var(--amber-soft);border-color:#f4dcae}.notice-error{background:var(--red-soft);border-color:#f4c9c7;color:var(--red)}.notice-success{background:var(--teal-soft);border-color:#bfe8e1}.notice-icon{flex-shrink:0;width:22px;height:22px;color:var(--violet)}.notice-warn .notice-icon{color:var(--amber)}.notice+.panel,.notice+.section,.panel+.notice,.notice+.notice{margin-top:16px}.empty{text-align:center;padding:28px 12px;color:var(--ink-2)}.empty strong{display:block;color:var(--ink);font-family:var(--font-display);font-weight:600;font-size:var(--fs-md);margin-bottom:4px}.empty .btn{margin-top:14px}.skeleton{color:var(--ink-3);padding:12px 0}.page-loading{padding:48px 20px;text-align:center;color:var(--ink-3)}.chip{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:6px;background:var(--surface-2);color:var(--ink-2);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.chip-speaking{background:#e8f1fd;color:#1f5fa8}.chip-qa{background:#fdeef6;color:#a23472}.chip-listening{background:var(--teal-soft);color:#0a7468}.chip-level{background:var(--violet-soft);color:var(--violet-ink)}.hello{margin-bottom:20px}.hello h1{font-size:var(--fs-2xl)}.hello p{color:var(--ink-2);margin-top:4px}.next-up{position:relative;overflow:hidden;border-radius:20px;background:var(--violet);color:#fff;padding:24px;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end}.next-up-kicker{font-size:var(--fs-sm);color:#d9d1ff;font-weight:500}.next-up h2{color:#fff;font-size:var(--fs-xl);margin:6px 0 8px;max-width:26ch}.next-up-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:var(--fs-sm);color:#e6e0ff}.next-up-meta .chip{background:#ffffff29;color:#fff}.next-up .btn{background:#fff;color:var(--violet-ink)}.next-up .btn:hover{background:#f1edff}.next-up-done h2{max-width:none}.wave{position:absolute;right:24px;top:22px;display:flex;align-items:center;gap:5px;height:46px;opacity:.35;pointer-events:none}.wave span{width:5px;border-radius:3px;background:#fff}.stats{display:grid;grid-template-columns:repeat(4,1fr);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);margin-top:20px}.stat{padding:16px 18px}.stat+.stat{border-left:1px solid var(--line)}.stat-value{font-family:var(--font-display);font-weight:600;font-size:var(--fs-xl);line-height:1.2}.stat-value small{font-size:var(--fs-base);color:var(--ink-3);font-weight:500}.stat-label{font-size:var(--fs-sm);color:var(--ink-2);margin-top:2px}.rows{display:flex;flex-direction:column}.row{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:1px solid var(--line)}.rows>.row:first-child{border-top:none;padding-top:4px}.row-main{flex:1;min-width:0}.row-title{font-weight:600;color:var(--ink);overflow-wrap:anywhere}.row-meta{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-top:4px;font-size:var(--fs-sm);color:var(--ink-2)}.row-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.row-score{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md)}.due-soon{color:var(--amber);font-weight:600}.due-over{color:var(--red);font-weight:600}.shortcuts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.shortcut{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink);font-weight:600}.shortcut:hover{border-color:var(--line-strong);background:var(--surface-2);text-decoration:none}.shortcut .nav-icon{color:var(--violet)}.search{position:relative}.search input{padding-left:40px}.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--ink-3)}.tabs{display:flex;gap:4px;padding:4px;background:var(--surface-2);border-radius:var(--r-md);margin:16px 0}.tab{flex:1;min-height:40px;background:transparent;color:var(--ink-2);border:none;font-weight:600;font-size:var(--fs-sm);padding:0 10px}.tab:hover:not(:disabled){background:#fff9}.tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #1b1f3b14}.tab-count{color:var(--ink-3);font-weight:600;margin-left:4px}.tab.active .tab-count{color:var(--violet)}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}.pill{min-height:34px;padding:0 12px;border-radius:17px;background:var(--surface);color:var(--ink-2);border:1px solid var(--line-strong);font-size:var(--fs-sm);font-weight:500}.pill:hover:not(:disabled){background:var(--surface-2)}.pill.active{background:var(--ink);color:#fff;border-color:var(--ink)}.range{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-top:12px}.range .field{width:160px}.range input{min-height:38px;padding:6px 10px}.filter-summary{font-size:var(--fs-sm);color:var(--ink-3);margin-top:10px}.lesson-text{font-size:var(--fs-md);line-height:1.75;margin-top:16px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:16px}.word-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-top:16px}.word-card{border:1px solid var(--line);border-radius:var(--r-md);padding:12px;background:var(--surface)}.word-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.word-card-term{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md)}.word-card-pos{font-size:var(--fs-xs);color:var(--ink-3)}.word-card-ipa{color:var(--violet-ink);font-size:var(--fs-sm);margin-top:2px}.word-card-meaning{color:var(--ink-2);font-size:var(--fs-sm);margin-top:4px}.step-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:4px}.step-head h2{font-size:var(--fs-md)}.step-count{font-size:var(--fs-sm);color:var(--ink-3);font-weight:600}.question{padding:14px;border-radius:var(--r-md);background:var(--surface-2);margin:14px 0}.question-text{font-size:var(--fs-md);font-weight:500;margin-bottom:10px}.progress-dots{display:flex;gap:6px}.progress-dots span{width:28px;height:4px;border-radius:2px;background:var(--line-strong)}.progress-dots span.done{background:var(--teal)}.progress-dots span.current{background:var(--violet)}.recorder{display:flex;flex-direction:column;gap:12px;margin-top:14px}.record-btn{min-height:52px;border-radius:26px;padding:0 24px;font-size:var(--fs-md);align-self:flex-start;user-select:none;-webkit-user-select:none;touch-action:none}.record-btn svg{width:22px;height:22px}.record-btn.recording{background:var(--red)}.record-btn.recording:hover:not(:disabled){background:#bf3535}.record-live{display:inline-flex;align-items:center;gap:8px;color:var(--red);font-weight:600;font-size:var(--fs-sm)}.record-dot{width:10px;height:10px;border-radius:50%;background:var(--red);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.record-preview{display:flex;flex-direction:column;gap:6px}.record-preview>span{font-size:var(--fs-sm);color:var(--ink-2);font-weight:600}.action-bar{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.cloze{font-size:var(--fs-md);line-height:2.5;margin-top:16px}.cloze input{display:inline-block;width:7.5em;min-height:0;height:36px;margin:0 3px;padding:4px 8px;border-width:1.5px;font-size:var(--fs-base);vertical-align:baseline}.cloze input.is-correct{border-color:var(--teal);background:var(--teal-soft)}.cloze input.is-wrong{border-color:var(--red);background:var(--red-soft)}.blank-no{font-size:var(--fs-xs);color:var(--ink-3);vertical-align:super;margin-left:2px}.score-hero{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.score-ring{--p: 0;--c: var(--violet);width:112px;height:112px;border-radius:50%;background:conic-gradient(var(--c) calc(var(--p) * 1%),var(--surface-2) 0);display:grid;place-items:center;flex-shrink:0}.score-ring>div{width:88px;height:88px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-family:var(--font-display);font-weight:600;font-size:var(--fs-2xl)}.score-hero-text h2{font-size:var(--fs-lg)}.score-hero-text p{color:var(--ink-2);margin-top:4px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px}.metric{padding:12px 14px;border-radius:var(--r-md);background:var(--surface-2)}.metric-value{font-family:var(--font-display);font-weight:600;font-size:var(--fs-lg)}.metric-label{font-size:var(--fs-sm);color:var(--ink-2)}.metric-tier{font-size:var(--fs-xs);font-weight:600;margin-top:2px}.result-list{display:flex;flex-direction:column}.result-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.result-item:first-child{border-top:none}.result-item .row-main{min-width:0}.result-badge{flex-shrink:0;min-width:64px;text-align:center;padding:3px 10px;border-radius:6px;font-size:var(--fs-sm);font-weight:600}.result-badge.ok{background:var(--teal-soft);color:#0a7468}.result-badge.bad{background:var(--red-soft);color:var(--red)}.result-num{width:28px;color:var(--ink-3);font-weight:600;font-size:var(--fs-sm);flex-shrink:0}.word-score{font-family:var(--font-display);font-weight:600;width:40px;text-align:right;flex-shrink:0}.answer-block{padding:14px 0;border-top:1px solid var(--line)}.answer-block:first-child{border-top:none;padding-top:0}.answer-block .question-text{margin-bottom:8px}.answer-scores{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:var(--fs-sm);color:var(--ink-2)}.answer-scores strong{font-family:var(--font-display);font-size:var(--fs-base)}.quote{font-size:var(--fs-sm);color:var(--ink-2);margin-top:8px;padding-left:10px;border-left:3px solid var(--line-strong)}.level-hero{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.level-hero h2{font-size:var(--fs-xl)}.level-hero p{color:var(--ink-2);margin-top:4px}.tier-scale{display:flex;flex-direction:column}.tier-row{display:grid;grid-template-columns:72px 120px 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--line);font-size:var(--fs-sm);align-items:baseline}.tier-row:first-child{border-top:none}.tier-row strong{font-size:var(--fs-base)}.chart-wrap{margin:0 -8px}.profile{display:flex;align-items:center;gap:16px}.profile h2{font-size:var(--fs-lg)}.profile p{color:var(--ink-2);font-size:var(--fs-sm);margin-top:2px}.kv{display:grid;grid-template-columns:140px 1fr;gap:10px 16px;font-size:var(--fs-base)}.kv dt{color:var(--ink-3);font-size:var(--fs-sm);padding-top:2px}.kv dd{margin:0}.setting{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--line)}.setting:first-child{border-top:none;padding-top:0}.setting-text strong{display:block;font-weight:600}.setting-text span{font-size:var(--fs-sm);color:var(--ink-2)}.form-stack{display:flex;flex-direction:column;gap:14px;max-width:420px}.logout-btn{width:100%}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:24px;z-index:60;width:min(460px,calc(100% - 24px));display:flex;align-items:center;gap:12px;padding:12px 12px 12px 16px;border-radius:var(--r-md);background:var(--ink);color:#fff;box-shadow:0 10px 30px #1b1f3b40;font-size:var(--fs-sm);animation:toast-in .25s ease-out}.toast p{flex:1}.toast strong{display:block;font-size:var(--fs-base)}.toast .btn{background:#fff;color:var(--ink);min-height:36px}.toast .btn:hover{background:#eceef6}.toast .btn-ghost{background:transparent;color:#c9cce0}.toast .btn-ghost:hover{background:#ffffff1a}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}}@media (max-width: 1100px){.grid-2{grid-template-columns:1fr}.grid-2>.panel+.panel{margin-top:0}}@media (max-width: 900px){.sidebar{display:none}.main{margin-left:0}.topbar{display:flex;position:sticky;top:0;z-index:30;height:var(--topbar-h);align-items:center;gap:10px;padding:0 16px;background:#ffffffeb;backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}.topbar img{width:30px;height:30px;border-radius:8px}.topbar-title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--bottomnav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:#fffffff5;backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-top:1px solid var(--line)}.bottom-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink-3);font-size:11px;font-weight:600;line-height:1.1}.bottom-link:hover{text-decoration:none;color:var(--ink-2)}.bottom-link.active{color:var(--violet)}.bottom-link .nav-icon{width:44px;height:28px;border-radius:14px}.bottom-link.active .nav-icon{background:var(--violet-soft)}.bottom-link .nav-badge{position:absolute;top:-4px;right:2px}.content{padding:20px 16px calc(var(--bottomnav-h) + var(--safe-bottom) + 24px)}.page-head{margin-bottom:18px}.page-head h1,.hello h1{font-size:var(--fs-xl)}.toast{bottom:calc(var(--bottomnav-h) + var(--safe-bottom) + 12px)}}@media (max-width: 640px){.panel{padding:16px;border-radius:var(--r-md)}.next-up{grid-template-columns:1fr;padding:20px;border-radius:var(--r-lg)}.next-up .btn{width:100%;min-height:46px}.next-up h2{font-size:var(--fs-lg)}.wave{top:18px;right:16px;height:36px}.stats{grid-template-columns:1fr 1fr}.stat:nth-child(3){border-left:none}.stat:nth-child(n+3){border-top:1px solid var(--line)}.shortcuts{grid-template-columns:1fr;gap:8px}.row{align-items:flex-start}.row-actions .btn{min-height:36px;padding:0 14px;font-size:var(--fs-sm)}.metrics{grid-template-columns:1fr 1fr}.tier-row{grid-template-columns:60px 1fr}.tier-row span:last-child{grid-column:2}.kv{grid-template-columns:1fr;gap:2px}.kv dd{margin-bottom:10px}.tabs .tab{font-size:var(--fs-xs);padding:0 4px}.range .field{width:calc(50% - 4px)}.range button{width:100%}.score-ring{width:96px;height:96px}.score-ring>div{width:76px;height:76px;font-size:var(--fs-xl)}.record-btn{align-self:stretch}.action-bar>button{flex:1}}.back-link .nav-icon,.back-link .nav-icon svg{width:16px;height:16px}.hint{margin-top:8px}.hint-block{display:block;margin-top:4px;font-size:var(--fs-sm)}.block-gap{margin-top:20px}.block-gap:empty{display:none}.toolbar-flush{margin-top:0}.gx-login{--gx-bg: #070818;--gx-ink: #eef0ff;--gx-ink-2: #b8bcdc;--gx-ink-3: #868bb3;--gx-line: rgba(255, 255, 255, .12);--gx-glass: rgba(18, 18, 48, .58);--gx-cyan: #38bdf8;--gx-violet: #8b5cf6;--gx-pink: #ec4899;--gx-grad: linear-gradient(120deg, var(--gx-cyan), var(--gx-violet) 50%, var(--gx-pink));position:relative;min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);color:var(--gx-ink);background:radial-gradient(1200px 700px at 15% 10%,#1b1650 0%,transparent 60%),radial-gradient(900px 600px at 95% 100%,#2a0f45 0%,transparent 60%),var(--gx-bg);overflow:hidden;isolation:isolate}.gx-sky{position:absolute;inset:0;z-index:-1;pointer-events:none}.gx-stars{position:absolute;inset:-50%;background-repeat:repeat}.gx-stars-1{background-image:radial-gradient(1px 1px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 120px 80px,rgba(255,255,255,.8),transparent),radial-gradient(1px 1px at 200px 160px,rgba(255,255,255,.7),transparent),radial-gradient(1px 1px at 60px 190px,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 170px 20px,rgba(255,255,255,.9),transparent);background-size:240px 220px;opacity:.55;animation:gx-drift 180s linear infinite}.gx-stars-2{background-image:radial-gradient(1.5px 1.5px at 40px 60px,#fff,transparent),radial-gradient(1.5px 1.5px at 260px 140px,#c7d2fe,transparent),radial-gradient(1.5px 1.5px at 150px 300px,#fff,transparent),radial-gradient(1.5px 1.5px at 330px 40px,#fbcfe8,transparent);background-size:380px 360px;opacity:.7;animation:gx-twinkle 5s ease-in-out infinite alternate,gx-drift 240s linear infinite}.gx-stars-3{background-image:radial-gradient(2px 2px at 90px 120px,#fff,transparent),radial-gradient(2px 2px at 420px 380px,#bae6fd,transparent),radial-gradient(2.5px 2.5px at 300px 520px,#fff,transparent);background-size:560px 600px;animation:gx-twinkle 7s ease-in-out infinite alternate-reverse}.gx-nebula{position:absolute;inset:0;background:radial-gradient(40% 35% at 30% 55%,rgba(139,92,246,.28),transparent 70%),radial-gradient(30% 30% at 70% 20%,rgba(56,189,248,.14),transparent 70%),radial-gradient(35% 30% at 80% 85%,rgba(236,72,153,.18),transparent 70%);filter:blur(20px)}@keyframes gx-twinkle{0%{opacity:.35}to{opacity:1}}@keyframes gx-drift{to{transform:translate3d(-240px,-120px,0)}}.gx-intro{display:flex;flex-direction:column;justify-content:space-between;padding:40px clamp(32px,5vw,72px);min-width:0}.gx-brand{display:flex;align-items:center;gap:12px}.gx-brand img{width:46px;height:46px;border-radius:12px;display:block;box-shadow:0 0 0 1px var(--gx-line),0 8px 24px #8b5cf659}.gx-brand-name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md);line-height:1.1;color:var(--gx-ink)}.gx-brand-sub{font-size:var(--fs-xs);color:var(--gx-ink-3);margin-top:2px}.gx-hero{position:relative;max-width:560px;padding:48px 0}.gx-orbit{position:absolute;width:560px;height:560px;right:-360px;top:-330px;z-index:-1;opacity:.9;animation:gx-float 12s ease-in-out infinite}.gx-satellite{transform-origin:300px 300px;animation:gx-spin 26s linear infinite}@keyframes gx-spin{to{transform:rotate(360deg)}}@keyframes gx-float{50%{transform:translateY(-14px)}}.gx-headline{font-family:var(--font-display);font-size:clamp(34px,3.6vw,52px);font-weight:600;line-height:1.15;letter-spacing:-.02em;color:var(--gx-ink)}.gx-headline span{background:var(--gx-grad);-webkit-background-clip:text;background-clip:text;color:transparent}.gx-lead{margin:18px 0 30px;max-width:44ch;font-size:var(--fs-md);line-height:1.6;color:var(--gx-ink-2)}.gx-points{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.gx-points li{display:flex;gap:12px;align-items:center;width:fit-content;max-width:100%;padding:10px 16px 10px 12px;border-radius:999px;background:#ffffff0d;border:1px solid var(--gx-line);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-size:var(--fs-sm);color:var(--gx-ink-2)}.gx-points svg{width:22px;height:22px;padding:4px;flex-shrink:0;border-radius:50%;color:#fff;background:var(--gx-grad)}.gx-foot{font-size:var(--fs-xs);color:var(--gx-ink-3)}.gx-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px clamp(24px,4vw,56px)}.gx-card{position:relative;width:100%;max-width:420px;padding:40px 36px 32px;border-radius:24px;background:var(--gx-glass);border:1px solid var(--gx-line);box-shadow:0 30px 80px #03021499,inset 0 1px #ffffff14;backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%)}.gx-card:before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:linear-gradient(140deg,#38bdf899,#8b5cf626 40%,#ec489980);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.gx-card-logo{display:none}.gx-card h1{font-size:var(--fs-2xl);color:var(--gx-ink);letter-spacing:-.02em}.gx-card-sub{margin:8px 0 28px;color:var(--gx-ink-2);font-size:var(--fs-base)}.gx-card-sub b{color:var(--gx-ink);font-weight:600}.gx-form{display:flex;flex-direction:column;gap:18px}.gx-field{display:flex;flex-direction:column;gap:8px}.gx-field>span{font-size:var(--fs-sm);font-weight:600;color:var(--gx-ink-2)}.gx-login input{min-height:50px;padding:12px 16px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:#0708188c;color:var(--gx-ink);font-size:var(--fs-base);transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.gx-login input::placeholder{color:#5f6490}.gx-login input:hover{border-color:#ffffff3d}.gx-login input:focus{outline:none;border-color:var(--gx-violet);background:#070818cc;box-shadow:0 0 0 4px #8b5cf640}.gx-login input:-webkit-autofill,.gx-login input:-webkit-autofill:focus{-webkit-text-fill-color:var(--gx-ink);-webkit-box-shadow:0 0 0 1000px #11112e inset;caret-color:var(--gx-ink);transition:background-color 9999s}.gx-pw{position:relative}.gx-pw input{padding-right:52px}.gx-login .gx-pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:40px;min-height:40px;height:40px;padding:0;border-radius:10px;background:transparent;color:var(--gx-ink-3)}.gx-login .gx-pw-toggle:hover:not(:disabled){background:#ffffff14;color:var(--gx-ink)}.gx-pw-toggle svg{width:20px;height:20px}.gx-login button:focus-visible{outline:2px solid var(--gx-cyan);outline-offset:2px}.gx-error{padding:12px 14px;border-radius:12px;background:#ef44441f;border:1px solid rgba(248,113,113,.35);color:#fecaca;font-size:var(--fs-sm);line-height:1.5}.gx-login .gx-submit{position:relative;width:100%;min-height:52px;margin-top:4px;border:0;border-radius:12px;background:linear-gradient(120deg,#4f7cf6,var(--gx-violet) 45%,#d946b0);background-size:160% 100%;background-position:0% 50%;color:#fff;font-size:var(--fs-md);letter-spacing:.01em;box-shadow:0 10px 30px #8b5cf673;transition:background-position .4s ease,box-shadow .2s ease,transform .15s ease}.gx-login .gx-submit:hover:not(:disabled){background:linear-gradient(120deg,#4f7cf6,var(--gx-violet) 45%,#d946b0);background-size:160% 100%;background-position:100% 50%;box-shadow:0 14px 38px #8b5cf699}.gx-login .gx-submit:active:not(:disabled){transform:translateY(1px)}.gx-login .gx-submit:disabled{opacity:.75}.gx-spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:gx-spin .8s linear infinite}.gx-help{margin:22px 0 0;text-align:center;font-size:var(--fs-sm);color:var(--gx-ink-3)}.gx-points-mobile{display:none}@media (max-width: 1100px){.gx-orbit{right:-360px;opacity:.55}}@media (max-width: 900px){.gx-login{grid-template-columns:1fr}.gx-intro{display:none}.gx-panel{justify-content:flex-start;padding:max(40px,env(safe-area-inset-top)) 20px calc(32px + var(--safe-bottom))}.gx-card{padding:32px 22px 26px;border-radius:20px}.gx-card-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}.gx-card-logo img{width:48px;height:48px;border-radius:12px;box-shadow:0 8px 24px #8b5cf666}.gx-card h1{font-size:var(--fs-xl)}.gx-points-mobile{display:flex;width:100%;max-width:420px;margin-top:24px;gap:10px}.gx-points-mobile li{width:100%;border-radius:14px}}@media (prefers-reduced-motion: reduce){.gx-stars,.gx-orbit,.gx-satellite,.gx-spinner{animation:none!important}}.content:has(.sp-wide){max-width:1280px}.sp-wide{--sp-hero-a: #14123d;--sp-hero-b: #2c2a8f;--sp-hero-c: #3b5bdb;--sp-blue: #2f7fd8}.sp-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.sp-main{display:flex;flex-direction:column;gap:14px;min-width:0}.sp-main>.panel+.panel{margin-top:0}.sp-aside{display:flex;flex-direction:column;gap:14px;position:sticky;top:20px}.sp-aside .panel+.panel{margin-top:0}.sp-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;flex-wrap:wrap}.sp-tools,.sp-opts{display:flex;align-items:center;gap:6px}.sp-icon-btn{width:36px;min-height:36px;height:36px;padding:0;border-radius:10px;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line)}.sp-icon-btn svg{width:18px;height:18px}.sp-icon-btn:hover:not(:disabled){background:var(--violet-soft);color:var(--violet)}.sp-icon-btn.is-on{background:var(--violet);border-color:var(--violet);color:#fff}.sp-icon-btn.is-on:hover:not(:disabled){background:var(--violet-hover);color:#fff}.sp-speeds{display:inline-flex;padding:3px;gap:2px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line)}.sp-speeds button{min-height:30px;padding:0 10px;border-radius:8px;background:transparent;color:var(--ink-2);font-size:var(--fs-sm);font-weight:600}.sp-speeds button:hover:not(:disabled){background:#fffc;color:var(--ink)}.sp-speeds button.is-on{background:var(--surface);color:var(--violet);box-shadow:0 1px 3px #1b1f3b24}.sp-player{padding:12px}.sp-player audio{width:100%;display:block}.sp-hero{position:relative;min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:36px 28px;border-radius:20px;color:#fff;text-align:center;background:radial-gradient(120% 90% at 0% 0%,rgba(139,92,246,.55),transparent 55%),radial-gradient(90% 80% at 100% 100%,rgba(56,189,248,.35),transparent 60%),linear-gradient(120deg,var(--sp-hero-a),var(--sp-hero-b) 55%,var(--sp-hero-c));box-shadow:0 16px 40px #1c185c38;overflow:hidden;isolation:isolate}.sp-hero:before{content:"";position:absolute;inset:0;z-index:-1;opacity:.6;background-image:radial-gradient(1px 1px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 140px 90px,rgba(255,255,255,.8),transparent),radial-gradient(1.5px 1.5px at 260px 40px,#fff,transparent),radial-gradient(1px 1px at 90px 150px,rgba(255,255,255,.7),transparent);background-size:300px 180px}.sp-hero-kicker{font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:#ffffff24;color:#ffffffe6}.sp-hero-text{font-family:var(--font-display);font-weight:600;font-size:clamp(22px,2.6vw,34px);line-height:1.3;max-width:30ch;text-shadow:0 2px 18px rgba(0,0,0,.25)}.sp-hero-score{position:absolute;top:16px;right:16px;padding:6px 12px;border-radius:12px;background:#fffffff2;color:var(--c, var(--violet));font-family:var(--font-display);font-weight:600;font-size:var(--fs-lg)}.sp-hero-score small{font-size:var(--fs-xs);color:var(--ink-3);margin-left:1px}.sp-tabs{display:flex;justify-content:center;gap:4px;padding:5px;border-radius:14px;background:var(--surface);border:1px solid var(--line)}.sp-tabs button{flex:0 1 140px;min-height:38px;border-radius:10px;background:transparent;color:var(--ink-2);font-size:var(--fs-sm);font-weight:600}.sp-tabs button:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}.sp-tabs button.is-on{background:var(--violet-soft);color:var(--violet-ink)}.sp-section-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.sp-section-head strong{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md)}.sp-section-head .sp-count,.sp-section-head>span:last-child{margin-left:auto}.sp-count{min-width:28px;padding:1px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);font-size:var(--fs-xs);font-weight:600;text-align:center;color:var(--ink-2)}.sp-dot{width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;background:var(--violet);color:#fff;font-size:var(--fs-xs);font-weight:700}.sp-tip{margin:-4px 0 14px}.sp-reading{padding:24px 28px}.sp-paragraph{font-size:var(--fs-md);line-height:2.1;color:var(--ink)}.sp-sent{border-radius:6px;padding:2px 0;cursor:pointer;transition:background .2s ease;scroll-margin:80px}.sp-sent:hover{background:var(--surface-2)}.sp-sent.is-current{background:#e6ecff;box-shadow:0 0 0 3px #e6ecff}.sp-term{background:#fdf1d8;color:#9a5b00;font-weight:600;padding:1px 2px;border-radius:5px;cursor:pointer}.sp-term:hover{background:#fbe2ad}.sp-reading .sp-tip{margin:16px 0 0}.sp-scards{display:flex;flex-direction:column;gap:10px}.sp-scard{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:start;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);transition:border-color .15s ease,box-shadow .15s ease}.sp-scard.is-active{border-color:#c9bfff;box-shadow:0 0 0 3px var(--violet-soft)}.sp-num{width:26px;height:26px;flex-shrink:0;border-radius:8px;display:inline-grid;place-items:center;background:var(--surface-2);color:var(--ink-2);font-size:var(--fs-xs);font-weight:700}.sp-scard-body{min-width:0;display:flex;flex-direction:column;gap:8px}.sp-scard-text{font-size:var(--fs-md);line-height:1.8}.sp-scard-actions{display:flex;gap:8px}.sp-chips{display:flex;flex-wrap:wrap;gap:6px}.sp-chip{min-height:26px;padding:0 10px;border-radius:999px;background:var(--surface);color:var(--ink-2);border:1px solid var(--line-strong);font-size:var(--fs-xs);font-weight:500}.sp-chip:hover:not(:disabled){background:var(--violet-soft);color:var(--violet-ink);border-color:#d6ccff}.sp-chip-warn{display:inline-flex;align-items:center;background:var(--amber-soft);border-color:#f4dcae;color:#8a5a0b}.sp-round{width:36px;min-height:36px;height:36px;padding:0;border-radius:50%;background:var(--surface);color:var(--ink);border:1px solid var(--line-strong)}.sp-round svg{width:16px;height:16px}.sp-round:hover:not(:disabled){background:var(--violet-soft);color:var(--violet);border-color:#d6ccff}.sp-round.is-on{background:var(--violet);color:#fff;border-color:var(--violet)}.sp-round-lg{width:42px;height:42px;min-height:42px}.sp-round-lg svg{width:18px;height:18px}.sp-mic.is-rec{background:var(--red);border-color:var(--red);color:#fff;animation:sp-pulse 1.4s ease-in-out infinite}@keyframes sp-pulse{50%{box-shadow:0 0 0 7px #d645452e}}.sp-mine{align-self:flex-start;min-height:30px;padding:0 12px;border-radius:999px;gap:6px;background:var(--teal-soft);color:#0a7468;font-size:var(--fs-sm)}.sp-mine svg{width:12px;height:12px}.sp-mine:hover:not(:disabled),.sp-mine.is-on{background:var(--teal);color:#fff}.sp-search{display:block;margin-bottom:8px}.sp-search input{min-height:40px}.sp-vlist{list-style:none;margin:0;padding:0}.sp-vitem{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line)}.sp-vitem:last-child{border-bottom:0}.sp-vmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.sp-vhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.sp-vterm{font-size:var(--fs-base)}.sp-ipa{font-family:Lucida Sans Unicode,Arial Unicode MS,Segoe UI,sans-serif;color:var(--ink-3);font-size:var(--fs-sm)}.sp-vtags{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.sp-tag{padding:0 7px;border-radius:6px;border:1px solid var(--line-strong);font-size:11px;font-weight:600;color:var(--ink-2);line-height:18px}.sp-tag-cefr{background:#e8f1fd;border-color:#c9defa;color:#1f5fa8}.sp-pos{font-size:var(--fs-xs);color:var(--ink-3);font-style:italic}.sp-vmean{color:var(--ink);font-size:var(--fs-sm);font-weight:500}.sp-vex{color:var(--ink-3);font-size:var(--fs-sm)}.sp-vex b{color:var(--violet-ink);font-weight:600}.sp-empty{padding:12px 2px}.sp-vocab.is-compact .sp-vlist{max-height:520px;overflow-y:auto;padding-right:4px}.sp-vocab.is-compact .sp-vitem{padding:10px 0}.sp-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px}.sp-stat{padding:10px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line);display:flex;flex-direction:column;gap:2px}.sp-stat span{font-size:var(--fs-xs);color:var(--ink-3)}.sp-stat b{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:600}.sp-aside-vocab{padding:16px}.sp-activity{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;padding:18px;border-radius:16px;border:1px solid var(--line);background:linear-gradient(135deg,#fbfaff,#f3f6ff)}.sp-activity-icon{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,#38bdf8,#8b5cf6 55%,#ec4899);box-shadow:0 8px 20px #8b5cf64d}.sp-activity-icon svg{width:26px;height:26px}.sp-activity-body{display:flex;flex-direction:column;gap:6px;min-width:0}.sp-activity-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.sp-activity-body p{color:var(--ink-2);font-size:var(--fs-sm)}.sp-activity-meta{display:flex;flex-wrap:wrap;gap:14px;font-size:var(--fs-xs);color:var(--ink-3)}.sp-activity-meta span{display:inline-flex;align-items:center;gap:5px}.sp-activity-meta svg{width:14px;height:14px}.sp-activity-cta{gap:6px}.sp-activity-cta svg{width:16px;height:16px}.sp-status{padding:2px 10px;border-radius:999px;font-size:var(--fs-xs);font-weight:600}.sp-status-todo{background:var(--surface-2);color:var(--ink-2)}.sp-status-doing{background:var(--amber-soft);color:#8a5a0b}.sp-status-done{background:var(--teal-soft);color:#0a7468}.sp-shadow-layout{margin-top:4px}.sp-hero-shadow{min-height:230px}.sp-w{border-radius:6px}.sp-w-good{color:#86efac}.sp-w-mid{color:#fcd34d}.sp-w-bad{color:#fca5a5;text-decoration:underline wavy rgba(252,165,165,.7) 1px;text-underline-offset:6px}.sp-w-miss{color:#ffffff73;text-decoration:line-through}.panel .sp-w-good{color:#0a7a52}.panel .sp-w-mid{color:#a86506}.panel .sp-w-bad{color:var(--red);text-decoration-color:#d6454580}.panel .sp-w-miss{color:var(--ink-3)}.sp-control{display:flex;flex-direction:column;gap:14px}.sp-ctrls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.sp-btn{min-height:46px;border-radius:12px;font-size:var(--fs-base);gap:8px}.sp-btn svg{width:18px;height:18px}.sp-btn-primary{background:var(--violet)}.sp-btn-outline{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.sp-btn-outline:hover:not(:disabled){background:var(--violet-soft);color:var(--violet-ink)}.sp-btn-outline.is-rec{background:var(--red);border-color:var(--red);color:#fff;animation:sp-pulse 1.4s ease-in-out infinite}.sp-btn-outline.is-rec:hover:not(:disabled){background:#c23a3a;color:#fff}.sp-btn-soft{background:var(--surface-2);color:var(--ink);border-color:var(--line)}.sp-btn-soft:hover:not(:disabled){background:var(--violet-soft);color:var(--violet-ink)}.sp-btn-go{background:var(--teal)}.sp-btn-go:hover:not(:disabled){background:#0b8a7b}.sp-live{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--red);font-weight:500}.sp-live-ai{color:var(--violet-ink)}.sp-spin{border-color:#5b3fd940;border-top-color:var(--violet)}.sp-attempt{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}.sp-attempt-scores{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:var(--fs-sm);color:var(--ink-2)}.sp-attempt-scores b{font-family:var(--font-display);font-size:var(--fs-md);margin-left:4px}.sp-heard{font-size:var(--fs-sm);color:var(--ink-2);font-style:italic}.sp-attempt-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.sp-legend{display:inline-flex;align-items:center;gap:4px 10px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--ink-3)}.sp-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:3px;vertical-align:-1px}.sp-legend .sp-w-good{background:#22c55e}.sp-legend .sp-w-mid{background:#f59e0b}.sp-legend .sp-w-bad{background:var(--red)}.sp-legend .sp-w-miss{background:var(--ink-3)}.sp-progress-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.sp-progress{flex:1 1 220px;min-width:180px}.sp-progress-label{display:flex;justify-content:space-between;font-size:var(--fs-sm);color:var(--ink-3);margin-bottom:6px}.sp-progress-label b{color:var(--ink)}.sp-bar{height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden}.sp-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38bdf8,var(--violet));transition:width .3s ease}.sp-slist ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.sp-srow{width:100%;min-height:48px;padding:8px 12px;gap:12px;justify-content:flex-start;background:transparent;color:var(--ink);border:1px solid transparent;border-radius:12px;font-weight:400;white-space:normal;text-align:left}.sp-srow:hover:not(:disabled){background:var(--surface-2)}.sp-srow:disabled{opacity:.6}.sp-srow.is-active{background:var(--violet-soft);border-color:#d6ccff}.sp-srow-text{flex:1;min-width:0;font-size:var(--fs-sm);line-height:1.5}.sp-score-pill{flex-shrink:0;min-width:44px;padding:3px 8px;border-radius:999px;text-align:center;font-weight:700;font-size:var(--fs-sm);color:var(--c, var(--ink));background:color-mix(in srgb,var(--c, var(--ink-3)) 12%,white)}.sp-pending{flex-shrink:0;font-size:var(--fs-xs);color:var(--ink-3)}.sp-rrow{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line)}.sp-rrow:last-child{border-bottom:0}.sp-rrow-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.sp-rrow-body audio{max-width:320px;height:36px}.sp-score-card{display:flex;flex-direction:column;gap:12px}.sp-rings{display:grid;grid-template-columns:1fr 1fr;gap:8px;text-align:center}.sp-rings>div{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--ink-3)}.sp-ring{position:relative;display:grid;place-items:center}.sp-ring svg{position:absolute;inset:0}.sp-ring-track{fill:none;stroke:var(--surface-2)}.sp-ring-bar{fill:none;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.sp-ring-label{position:relative;display:flex;align-items:baseline;gap:1px;font-family:var(--font-display)}.sp-ring-label b{font-size:var(--fs-xl);font-weight:600;color:var(--ink)}.sp-ring-label small{font-size:var(--fs-sm);color:var(--ink-3)}.sp-timer{display:flex;align-items:center;justify-content:center;gap:8px;min-height:42px;border-radius:12px;background:#e8f1fd;border:1px solid #c9defa;color:#1f5fa8;font-weight:700;font-variant-numeric:tabular-nums}.sp-timer svg{width:16px;height:16px}.sp-aside-note{text-align:center}.sp-aside-note svg{width:14px;height:14px;vertical-align:-2px;color:var(--amber)}.sp-restart{align-self:center}.sp-restart svg,.sp-modal-foot svg,.sp-score-card .secondary svg{width:15px;height:15px}.sp-done{justify-content:center}.sp-summary{display:flex;flex-direction:column;gap:18px}.sp-summary-ring{display:flex;flex-direction:column;align-items:center;gap:6px}.sp-big{font-size:44px;font-weight:600;color:var(--violet);line-height:1}.sp-big-max{font-size:var(--fs-lg);color:var(--ink-3)}.sp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.sp-kpi{padding:12px 14px;border-radius:14px;border:1px solid;display:flex;flex-direction:column;gap:4px}.sp-kpi span{font-size:var(--fs-xs);color:var(--ink-2)}.sp-kpi b{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600;color:var(--ink)}.sp-kpi-green{background:#f1fbf3;border-color:#bfe8c7}.sp-kpi-blue{background:#eef5fe;border-color:#c9defa}.sp-kpi-amber{background:#fff8ea;border-color:#f4dcae}.sp-kpi-violet{background:#f6f2ff;border-color:#dcd0ff}.sp-feedback{display:flex;gap:12px;padding:14px 16px;border-radius:14px;background:#eef5fe;border:1px solid #c9defa;font-size:var(--fs-sm);color:var(--ink-2)}.sp-feedback strong{display:block;color:var(--ink);font-weight:600;margin-bottom:4px}.sp-feedback p+p{margin-top:2px}.sp-feedback-icon{flex-shrink:0;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff}.sp-feedback-icon svg{width:16px;height:16px}.sp-review{display:flex;flex-direction:column;gap:8px}.sp-modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:#0a0b1e8c;backdrop-filter:blur(3px);animation:sp-fade .2s ease}.sp-modal{position:relative;width:min(820px,100%);max-height:calc(100dvh - 40px);overflow-y:auto;border-radius:22px;background:var(--surface);box-shadow:0 30px 80px #0a0b1e59;animation:sp-rise .25s ease}.sp-modal-close{position:absolute;top:14px;right:14px;z-index:2;width:36px;height:36px;min-height:36px;padding:0;border-radius:50%;background:#ffffff2e;color:#fff}.sp-modal-close:hover:not(:disabled){background:#ffffff4d}.sp-modal-close svg{width:18px;height:18px}.sp-modal-hero{margin:16px 16px 0;padding:30px 20px 72px;border-radius:18px;text-align:center;color:#fff;background:radial-gradient(70% 120% at 0% 0%,rgba(251,191,36,.85),transparent 60%),radial-gradient(80% 120% at 100% 100%,rgba(139,92,246,.9),transparent 60%),linear-gradient(120deg,#3b5bdb,#1d7be0 50%,#6d3fd9)}.sp-modal-trophy svg{width:40px;height:40px}.sp-modal-hero h2{color:#fff;font-size:var(--fs-2xl);margin-top:6px}.sp-modal-hero p{opacity:.9;font-weight:600;font-size:var(--fs-sm);margin-top:4px}.sp-modal-body{padding:0 24px 8px;margin-top:-64px;position:relative}.sp-modal .sp-summary-ring .sp-ring{background:var(--surface);border-radius:50%;box-shadow:0 12px 30px #1b1f3b24}.sp-modal-note{text-align:center;margin-top:12px}.sp-modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px 22px}@keyframes sp-fade{0%{opacity:0}}@keyframes sp-rise{0%{opacity:0;transform:translateY(16px) scale(.98)}}@media (max-width: 1100px){.sp-layout{grid-template-columns:minmax(0,1fr)}.sp-aside{position:static;order:-1}.sp-aside-vocab{display:none}.sp-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.sp-shadow-layout .sp-aside{order:0}.sp-shadow-layout .sp-main{display:contents}.sp-shadow-layout{display:flex;flex-direction:column;gap:14px}.sp-shadow-layout .sp-hero{order:1}.sp-shadow-layout .sp-control{order:2}.sp-shadow-layout .sp-aside{order:3}.sp-shadow-layout .sp-slist{order:4}.sp-score-card{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:20px}.sp-score-card .sp-rings{grid-row:span 6}}@media (max-width: 640px){.sp-toolbar{padding:8px}.sp-speeds button{padding:0 8px}.sp-hero{min-height:150px;padding:28px 18px;border-radius:16px}.sp-hero-shadow{min-height:180px;padding-top:52px}.sp-tabs{justify-content:stretch}.sp-tabs button{flex:1;padding:0 4px;font-size:var(--fs-xs)}.sp-reading{padding:18px 16px}.sp-paragraph{font-size:var(--fs-base)}.sp-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.sp-scard{grid-template-columns:auto minmax(0,1fr);padding:12px}.sp-scard-actions{grid-column:1 / -1;justify-content:flex-end}.sp-activity{grid-template-columns:auto minmax(0,1fr)}.sp-activity-cta{grid-column:1 / -1}.sp-ctrls{grid-template-columns:1fr 1fr}.sp-ctrls>:first-child{grid-column:1 / -1}.sp-score-card{display:flex;align-items:stretch}.sp-kpis{grid-template-columns:1fr 1fr}.sp-modal-backdrop{padding:10px}.sp-modal-body{padding:0 14px 4px}.sp-modal-foot{padding:14px}.sp-modal-foot button{flex:1}}.sp-criteria{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.sp-criterion{padding:12px 14px;border-radius:14px;background:var(--surface-2);border:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.sp-criterion-top{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.sp-criterion-top span{font-size:var(--fs-sm);color:var(--ink-2);font-weight:500}.sp-criterion-top b{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600}.sp-criterion-top small{font-size:var(--fs-xs);color:var(--ink-3);margin-left:1px;font-weight:500}.sp-criterion-bar{height:5px;border-radius:999px;background:var(--line);overflow:hidden}.sp-criterion-bar span{display:block;height:100%;border-radius:inherit}.sp-words{display:flex;flex-direction:column;gap:12px;padding-top:4px;border-top:1px solid var(--line)}.sp-words-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:12px}.sp-words-head strong{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md)}.sp-wsent{border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}.sp-wsent-head{display:flex;align-items:flex-start;gap:10px}.sp-wsent-text{flex:1;min-width:0;font-weight:500;line-height:1.5}.sp-wsent-heard{font-style:italic}.sp-wsent audio{height:36px;max-width:340px}.sp-wgrid{display:flex;flex-wrap:wrap;gap:8px}.sp-wrow{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;max-width:100%;padding:6px 8px 6px 12px;border-radius:10px;background:var(--red-soft);border:1px solid #f4c9c7}.sp-wrow-word{font-weight:600;white-space:nowrap}.sp-wrow .word-score{width:auto;font-size:var(--fs-sm);white-space:nowrap}.sp-wrow .result-badge{min-width:0;padding:2px 8px;font-size:var(--fs-xs);white-space:nowrap;background:#fff}@media (max-width: 640px){.sp-criteria{grid-template-columns:1fr 1fr}}.sp-modal-hero .sp-modal-time{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:5px 12px;border-radius:999px;background:#ffffff2e;font-weight:500;opacity:1}.sp-modal-time svg{width:15px;height:15px}
