:root{--bg:#f4f6fb;--surface:#fff;--surface-2:#eff2f8;--surface-3:#e4e9f3;--text:#121a2c;--muted:#5a6478;--border:#e1e6ef;--primary:#2563eb;--c:var(--primary);--good:#15803d;--good-bg:#e6f6ec;--bad:#c2410c;--bad-bg:#fdede4;--warn:#b45309;--warn-bg:#fff5d9;--mark:#fde68a;--orb-a:#6366f138;--orb-b:#ec489924;--orb-c:#0ea5e929;--shadow:0 1px 2px #1018280d, 0 2px 8px #1018280d;--shadow-lg:0 10px 30px #1018281c;--spot:#2563eb12;--radius:14px;--ease:cubic-bezier(.2, .8, .2, 1);--font:"Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--serif:Georgia, "Times New Roman", serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b1020;--surface:#141a2a;--surface-2:#1c2437;--surface-3:#252f45;--text:#e8ebf3;--muted:#98a2b6;--border:#273149;--primary:#6b93ff;--good:#4ade80;--good-bg:#12301f;--bad:#fb923c;--bad-bg:#3a2014;--warn:#fbbf24;--warn-bg:#362c12;--mark:#facc156b;--orb-a:#6366f147;--orb-b:#ec48992e;--orb-c:#0ea5e933;--shadow:0 1px 2px #00000059;--shadow-lg:0 10px 32px #00000073;--spot:#ffffff0f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0b1020;--surface:#141a2a;--surface-2:#1c2437;--surface-3:#252f45;--text:#e8ebf3;--muted:#98a2b6;--border:#273149;--primary:#6b93ff;--good:#4ade80;--good-bg:#12301f;--bad:#fb923c;--bad-bg:#3a2014;--warn:#fbbf24;--warn-bg:#362c12;--mark:#facc156b;--orb-a:#6366f147;--orb-b:#ec48992e;--orb-c:#0ea5e933;--shadow:0 1px 2px #00000059;--shadow-lg:0 10px 32px #00000073;--spot:#ffffff0f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6}h1,h2,h3,h4{margin:0 0 .5em;line-height:1.25}h1{letter-spacing:-.02em;font-size:clamp(1.6rem,3vw,2.1rem)}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 .8em}a{color:var(--c)}button,input,select,textarea{font:inherit;color:inherit}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.hint{color:var(--muted);font-size:.8rem}.accent-text{color:var(--c)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.app{flex-direction:column;min-height:100vh;display:flex}.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:24px 16px 48px}.narrow{max-width:860px;margin:0 auto}.footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);padding:24px 16px;font-size:.8rem}.topbar{z-index:20;background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.topbar-inner{align-items:center;gap:16px;max-width:1200px;margin:0 auto;padding:10px 16px;display:flex}.brand{color:var(--text);white-space:nowrap;align-items:center;gap:10px;font-weight:700;text-decoration:none;display:flex}.brand-mark{background:var(--primary);color:#fff;border-radius:9px;place-items:center;width:32px;height:32px;font-size:.85rem;display:grid}.nav{flex-wrap:wrap;gap:2px;margin-left:auto;display:flex}.nav a{--c:var(--primary);color:var(--muted);border-radius:8px;align-items:center;gap:6px;padding:7px 10px;font-size:.9rem;font-weight:500;text-decoration:none;display:flex}.nav a:hover{color:var(--text);background:var(--surface-2)}.nav a.active{color:var(--c);background:color-mix(in srgb, var(--c) 12%, transparent)}.menu-btn{margin-left:auto;display:none}@media (width<=1080px){.menu-btn{display:grid}.nav{background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-lg);flex-direction:column;padding:8px 12px 14px;display:none;position:absolute;top:100%;left:0;right:0}.nav.open{display:flex}.nav a{padding:10px 12px;font-size:1rem}}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text);border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:9px 16px;font-size:.92rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:hover{border-color:color-mix(in srgb, var(--c) 50%, var(--border))}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--c);border-color:var(--c);color:#fff}.btn.primary:hover{background:color-mix(in srgb, var(--c) 88%, #000)}.btn.lg{padding:12px 22px;font-size:1rem}.btn.small{padding:5px 10px;font-size:.82rem}.btn.block{width:100%;margin-top:16px;padding:12px}.btn.danger,.btn.warn-btn{color:var(--bad)}.icon-btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;place-items:center;width:38px;height:38px;display:grid}.icon-btn:hover{background:var(--surface-2)}.icon-btn.small{background:0 0;border:none;border-radius:7px;width:26px;height:26px}.link-btn{color:var(--c);cursor:pointer;background:0 0;border:none;margin-left:8px;text-decoration:underline}select,input[type=number]{border:1px solid var(--border);background:var(--surface);border-radius:9px;padding:8px 10px}input[type=checkbox]{accent-color:var(--c);width:16px;height:16px}:focus-visible{outline:2px solid var(--c);outline-offset:2px}.badge{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 9px;font-size:.75rem;font-weight:600;display:inline-flex}.badge.done{background:var(--good-bg);color:var(--good)}.badge.part{background:color-mix(in srgb, var(--c) 12%, transparent);color:var(--c)}.level-easy{background:var(--good-bg);color:var(--good)}.level-medium{background:var(--warn-bg);color:var(--warn)}.level-hard{background:var(--bad-bg);color:var(--bad)}.chips{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.chip{background:var(--surface-2);border-radius:999px;padding:3px 10px;font-size:.8rem}.chip.outline{border:1px solid var(--border);background:0 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;padding:20px}.empty{text-align:center;color:var(--muted);padding:48px 16px}.notice{background:var(--warn-bg);border-radius:10px;padding:12px 16px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin:16px 0 20px;display:flex;overflow-x:auto}.tabs button{cursor:pointer;color:var(--muted);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px;font-weight:600}.tabs button.active{color:var(--c);border-bottom-color:var(--c)}.page-header{align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-header p{max-width:760px;margin:0}.page-icon{background:color-mix(in srgb, var(--c) 13%, transparent);width:54px;height:54px;color:var(--c);border-radius:14px;flex:none;place-items:center;display:grid}.back-link{color:var(--muted);align-items:center;gap:6px;margin-bottom:12px;font-size:.9rem;font-weight:500;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--text)}.section-title{margin:32px 0 14px}.hero{grid-template-columns:1.4fr 1fr;align-items:center;gap:32px;padding:28px 0 8px;display:grid}.hero h1{margin-bottom:14px;font-size:clamp(2rem,4.5vw,3rem)}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--primary);margin-bottom:10px;font-size:.8rem;font-weight:700;display:inline-block}.lead{color:var(--muted);max-width:620px;font-size:1.1rem}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:20px;display:flex}.stat-strip{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--primary);flex-direction:column;align-items:center;gap:2px;padding:18px 8px;display:flex}.stat b{color:var(--text);font-size:1.8rem;line-height:1.1}.stat span{color:var(--muted);font-size:.8rem}.stat .flame{color:#f97316}.skill-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.skill-grid.three{grid-template-columns:repeat(3,1fr)}.skill-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);box-shadow:var(--shadow);flex-direction:column;padding:20px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.skill-card:hover{box-shadow:var(--shadow-lg);border-color:color-mix(in srgb, var(--c) 40%, var(--border));transform:translateY(-3px)}.skill-card p{color:var(--muted);flex:1;font-size:.9rem}.skill-icon{background:color-mix(in srgb, var(--c) 13%, transparent);width:46px;height:46px;color:var(--c);border-radius:12px;place-items:center;margin-bottom:14px;display:grid}.skill-foot{justify-content:space-between;margin-bottom:6px;display:flex}.mini-track{background:var(--surface-2);border-radius:99px;height:5px;margin-top:4px;overflow:hidden}.mini-track>div{background:var(--c);border-radius:99px;height:100%;transition:width .3s}.two-col{grid-template-columns:1fr 1fr;align-items:start;gap:16px;margin-top:32px;display:grid}.calc-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.calc-grid label{flex-direction:column;gap:4px;font-size:.88rem;font-weight:600;display:flex}.overall{background:color-mix(in srgb, var(--primary) 10%, transparent);text-align:center;border-radius:12px;margin-top:18px;padding:14px;font-weight:600}.overall b{color:var(--primary);margin-left:8px;font-size:1.8rem}.item-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.item-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);box-shadow:var(--shadow);border-top:3px solid var(--c);flex-direction:column;gap:4px;padding:18px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.item-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.item-card h3{margin:6px 0 2px}.item-card p{margin:0}.item-top{flex-wrap:wrap;align-items:center;gap:6px;min-height:22px;display:flex}.item-meta{color:var(--muted);justify-content:space-between;gap:10px;margin-top:auto;padding-top:10px;font-size:.82rem;display:flex}.item-meta span{align-items:center;gap:5px;display:inline-flex}.format-strip{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px;display:grid}.format-strip>div{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;padding:14px;display:flex}.lesson-list{flex-direction:column;gap:10px;display:flex}.lesson-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);box-shadow:var(--shadow);align-items:center;gap:16px;padding:16px 18px;text-decoration:none;display:flex}.lesson-row:hover{border-color:color-mix(in srgb, var(--c) 45%, var(--border))}.lesson-row h3,.lesson-row p{margin:0}.lesson-row>div:nth-child(2){flex:1}.lesson-num{background:color-mix(in srgb, var(--c) 12%, transparent);width:36px;height:36px;color:var(--c);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.lesson-num.done{background:var(--good-bg);color:var(--good)}.lesson-side{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.test{margin:-24px -16px -48px}.test-bar{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;display:flex;position:sticky;top:57px}.test-bar.flat{background:0 0;border:none;padding:0 0 12px;position:static}.test-bar .back-link{margin:0}.test-title{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.test-title b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.test-actions{align-items:center;gap:12px;display:flex}.timer{background:var(--surface-2);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:6px;padding:5px 6px 5px 12px;font-weight:700;display:inline-flex}.timer.warn{background:var(--warn-bg)}.timer.over{background:var(--bad-bg);color:var(--bad)}.split{grid-template-columns:1fr 1fr;height:calc(100vh - 163px);display:grid}.pane{padding:24px 28px 48px;overflow-y:auto}.passage-pane{border-right:1px solid var(--border);background:var(--surface)}.passage-pane h2{font-size:1.4rem}.passage-para{font-family:var(--serif);font-size:1.05rem;line-height:1.75}.para-label{background:var(--c);color:#fff;width:24px;height:24px;font-family:var(--font);vertical-align:2px;border-radius:6px;place-items:center;margin-right:8px;font-size:.8rem;font-weight:700;display:inline-grid}.mobile-switch{display:none}@media (width<=860px){.split{height:auto;display:block}.pane{padding:20px 16px 40px;display:none}.pane.show{display:block}.passage-pane{border:none}.mobile-switch{z-index:9;background:var(--surface);border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;display:grid;position:sticky;top:57px}.mobile-switch button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:12px;font-weight:600}.mobile-switch button.active{color:var(--c);border-bottom-color:var(--c)}.test-bar{position:static}.answered{display:none}}.q-group{margin-bottom:28px}.q-range{text-transform:uppercase;letter-spacing:.04em;color:var(--c);margin-bottom:4px;font-size:1rem}.q-instructions{color:var(--muted);font-size:.92rem;font-style:italic}.gap-title{text-align:center;background:var(--surface-2);border-radius:8px;padding:8px}.match-options{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;gap:4px;margin-bottom:14px;padding:12px 14px;font-size:.92rem;display:grid}.match-options b{min-width:34px;color:var(--c);display:inline-block}.question{border:1px solid #0000;border-radius:12px;margin-bottom:8px;padding:14px 14px 14px 52px;position:relative}.question.correct{background:var(--good-bg)}.question.wrong{background:var(--bad-bg)}.q-text{margin:0 0 8px}.q-list{margin:0;padding:0;list-style:none}.q-no{background:color-mix(in srgb, var(--c) 12%, transparent);min-width:28px;height:28px;color:var(--c);border-radius:8px;place-items:center;padding:0 4px;font-size:.85rem;font-weight:700;display:grid;position:absolute;top:13px;left:12px}.q-no.correct{background:var(--good);color:#fff}.q-no.wrong{background:var(--bad);color:#fff}.choice-row{flex-wrap:wrap;gap:8px;display:flex}.choice{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;padding:6px 14px;font-size:.85rem;font-weight:600}.choice:hover:not(:disabled){border-color:var(--c)}.choice.selected{background:var(--c);border-color:var(--c);color:#fff}.choice:disabled{cursor:default}.mcq-options{flex-direction:column;gap:6px;display:flex}.mcq-option{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;align-items:flex-start;gap:10px;padding:9px 12px;display:flex}.mcq-option input{opacity:0;pointer-events:none;position:absolute}.mcq-option:hover{border-color:var(--c)}.mcq-option.selected{border-color:var(--c);background:color-mix(in srgb, var(--c) 8%, var(--surface))}.mcq-option.is-answer{border-color:var(--good);box-shadow:inset 0 0 0 1px var(--good)}.opt-letter{background:var(--surface-2);border-radius:6px;flex:none;place-items:center;width:24px;height:24px;font-size:.8rem;font-weight:700;display:grid}.mcq-option.selected .opt-letter{background:var(--c);color:#fff}.gap-text{line-height:2.2}.gap-input{border:none;border-bottom:2px solid var(--c);background:var(--surface-2);text-align:center;border-radius:6px 6px 0 0;width:160px;max-width:100%;margin:0 6px;padding:4px 10px;font-weight:600}.gap-input:focus{background:color-mix(in srgb, var(--c) 10%, var(--surface));outline:none}.match-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.match-row select{flex:none;min-width:80px}.review{border-top:1px dashed color-mix(in srgb, var(--muted) 40%, transparent);margin-top:10px;padding-top:10px;font-size:.9rem}.explanation{color:var(--muted);gap:6px;margin-top:4px;display:flex}.explanation svg{flex:none;margin-top:4px}.score-summary{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:24px;padding:20px;display:flex}.score-text{flex:1;min-width:200px}.score-text h3{margin-bottom:4px}.score-text p{margin:0 0 4px}.score-ring{--p:0;background:conic-gradient(var(--c) calc(var(--p) * 1%), var(--surface-2) 0);border-radius:50%;flex:none;place-items:center;width:84px;height:84px;display:grid}.score-ring span{background:var(--surface);border-radius:50%;place-items:center;width:66px;height:66px;font-weight:800;display:grid}.listen-head{margin-bottom:16px}.listen-head h1{margin-top:8px}.sticky-player{z-index:5;margin-bottom:16px;position:sticky;top:66px}.player{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);align-items:center;gap:16px;padding:14px 16px;display:flex}.play-btn{background:var(--c);color:#fff;cursor:pointer;width:52px;height:52px;box-shadow:0 4px 14px color-mix(in srgb, var(--c) 40%, transparent);border:none;border-radius:50%;flex:none;place-items:center;display:grid}.play-btn.big{width:76px;height:76px;margin:18px auto}.player-body{flex:1;min-width:0}.player-status{align-items:center;gap:8px;margin-bottom:8px;font-size:.9rem;font-weight:600;display:flex}.live-dot{background:var(--bad);border-radius:50%;width:8px;height:8px;animation:1.2s infinite pulse}@keyframes pulse{50%{opacity:.3}}.progress-track{background:var(--surface-2);border-radius:99px;height:6px;overflow:hidden}.progress-fill{background:var(--c);height:100%;transition:width .4s}.player-controls{align-items:center;gap:8px;display:flex}.transcript{background:var(--surface-2);border-radius:10px;max-height:480px;margin-top:12px;padding:16px;overflow-y:auto}.writing-layout{grid-template-columns:1fr 1.15fr;align-items:start;gap:16px;display:grid}.prompt-card{position:sticky;top:76px}.prompt{margin-top:10px;font-weight:600}.tips summary{cursor:pointer;color:var(--c);align-items:center;gap:6px;font-weight:600;display:flex}.tips ul{margin:8px 0 0;padding-left:20px;font-size:.92rem}.editor-card{flex-direction:column;padding:0;display:flex;overflow:hidden}.editor{resize:vertical;background:var(--surface);width:100%;min-height:480px;font-family:var(--serif);border:none;padding:20px;font-size:1.05rem;line-height:1.75}.editor:focus{outline:none}.editor-foot{border-top:1px solid var(--border);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.editor-foot .muted{flex:1}.word-count{color:var(--bad);font-weight:700}.word-count.ok{color:var(--good)}.review-grid{grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;display:grid}.review-grid .card{margin:0}.span-2{grid-column:span 2}.stat-tiles{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;display:grid}.stat-tiles.big{grid-template-columns:repeat(4,1fr);margin-bottom:20px}.tile{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:2px;padding:12px;display:flex}.tile b{font-size:1.3rem}.tile.good b{color:var(--good)}.tile.warn b{color:var(--bad)}.stat-tile{background:var(--surface);box-shadow:var(--shadow)}.stat-tile b{font-size:1.6rem}.checks{flex-direction:column;gap:8px;margin:0;padding:0;font-size:.92rem;list-style:none;display:flex}.checks li{border-radius:8px;gap:8px;padding:8px 10px;display:flex}.checks li svg{flex:none;margin-top:3px}.checks li.ok{background:var(--good-bg)}.checks li.warn{background:var(--warn-bg)}.criterion h4{color:var(--c);margin:14px 0 6px}.check-item{cursor:pointer;align-items:flex-start;gap:10px;padding:5px 0;font-size:.92rem;display:flex}.check-item input{flex:none;margin-top:4px}.model-answer{font-family:var(--serif);border-left:4px solid var(--c);background:var(--surface-2);border-radius:0 10px 10px 0;padding:16px 20px;font-size:1.03rem;line-height:1.75}.chart{margin:16px 0}.chart figcaption{text-align:center;margin-bottom:8px;font-size:.92rem;font-weight:600}.chart svg{width:100%;height:auto;display:block}.chart .grid{stroke:var(--border)}.chart .axis{stroke:var(--muted)}.axis-label{fill:var(--muted);font-size:15px;font-family:var(--font)}.pie-wrap{flex-wrap:wrap;justify-content:center;align-items:center;gap:20px;display:flex}.pie{width:240px;max-width:100%}.pie-label{fill:#fff;font-size:13px;font-weight:700;font-family:var(--font)}.legend{flex-wrap:wrap;justify-content:center;gap:6px 16px;margin-top:8px;font-size:.85rem;display:flex}.legend.vertical{flex-direction:column}.legend i{vertical-align:-1px;border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table th,.data-table td{border:1px solid var(--border);text-align:center;padding:8px 10px}.data-table thead th{background:var(--surface-2)}.data-table tbody th{text-align:left;font-weight:600}.data-table.plain th,.data-table.plain td{text-align:left}.speak-list{padding:0;list-style:none}.speak-q{flex-direction:column;gap:12px;display:flex}.speak-q-head{align-items:center;gap:12px;display:flex}.speak-q-head p{flex:1;margin:0;font-weight:600}.q-num{background:color-mix(in srgb, var(--c) 12%, transparent);width:30px;height:30px;color:var(--c);border-radius:50%;flex:none;place-items:center;font-size:.85rem;font-weight:700;display:grid}.cue-card{border-radius:var(--radius);background:color-mix(in srgb, var(--c) 7%, var(--surface));border:2px dashed color-mix(in srgb, var(--c) 45%, transparent);margin-bottom:16px;padding:24px}.cue-card ul{margin:0;padding-left:22px}.cue-controls{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.big-timer{font-size:1.1rem}.big-timer b{font-variant-numeric:tabular-nums;color:var(--c);margin-left:8px;font-size:2rem}.big-timer.over{color:var(--bad);font-weight:700}.notes{border:1px solid var(--border);background:var(--surface-2);resize:vertical;border-radius:10px;width:100%;min-height:110px;padding:12px}.notes-view{white-space:pre-wrap;background:var(--surface-2);border-radius:10px;width:100%;padding:10px 14px;font-size:.9rem}.follow-up{border-top:1px solid var(--border);width:100%;padding-top:12px}.follow-up p{margin:0;font-weight:600}.sample p{line-height:1.75}.vocab-dl{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:0;display:grid}.vocab-dl div{background:var(--surface-2);border-radius:10px;padding:10px 12px}.vocab-dl dt{align-items:center;gap:6px;font-weight:700;display:flex}.vocab-dl dd{color:var(--muted);margin:2px 0 0;font-size:.9rem}.recorder{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.recorder audio{max-width:100%;height:36px}.rec-btn{color:var(--bad)}.rec-btn.recording{background:var(--bad);border-color:var(--bad);color:#fff;animation:1.4s infinite pulse}.speak-btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--c);vertical-align:middle;border-radius:8px;align-items:center;gap:6px;padding:5px 10px;font-size:.85rem;font-weight:600;display:inline-flex}.speak-btn.icon-only{background:0 0;border-color:#0000;padding:4px 6px}.speak-btn:hover{background:color-mix(in srgb, var(--c) 10%, transparent)}.speak-btn.busy{background:color-mix(in srgb, var(--c) 15%, transparent)}.lesson .card h2{color:var(--c)}.examples{flex-direction:column;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.examples li{border-left:3px solid var(--c);background:var(--surface-2);border-radius:0 8px 8px 0;padding:8px 14px;font-style:italic}.mistakes{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.mistake{border:1px solid var(--border);border-radius:10px;padding:12px}.mistake .wrong,.mistake .right{align-items:baseline;gap:6px;display:flex}.mistake .wrong{color:var(--bad);text-decoration:line-through;text-decoration-thickness:1px}.mistake .right{color:var(--good);margin:4px 0;font-weight:600}.mistake p{margin:0}.next-lesson{color:var(--text);flex-direction:column;text-decoration:none;display:flex}.next-lesson b{color:var(--c);align-items:center;gap:6px;display:flex}.word-list{flex-direction:column;display:flex}.word-card.known{border-left:4px solid var(--good)}.word-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.word-head h3{margin:0;font-size:1.25rem}.ipa{color:var(--muted);font-family:Lucida Sans Unicode,Arial Unicode MS,Segoe UI,sans-serif}.pos{background:var(--surface-2);color:var(--muted);border-radius:6px;padding:1px 8px;font-size:.75rem;font-style:italic}.known-toggle{cursor:pointer;align-items:center;gap:6px;margin-left:auto;font-size:.85rem;display:flex}.example{color:var(--muted);font-style:italic}.word-extra{flex-wrap:wrap;gap:24px;display:flex}.flash-wrap{flex-direction:column;gap:16px;display:flex}.flashcard{perspective:1200px;cursor:pointer;background:0 0;border:none;height:280px;padding:0}.flash-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s;position:relative}.flashcard.flipped .flash-inner{transform:rotateY(180deg)}.flash-face{backface-visibility:hidden;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:absolute;inset:0}.flash-face.front h2{color:var(--c);margin:0;font-size:2.2rem}.flash-face.back{background:color-mix(in srgb, var(--c) 6%, var(--surface));transform:rotateY(180deg)}.flash-meaning{text-align:center;margin:0;font-size:1.2rem;font-weight:600}.flash-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.vocab-quiz .quiz-prompt{margin:8px 0 18px;font-size:1.2rem;font-weight:600}.quiz-options{grid-template-columns:1fr 1fr;gap:10px;display:grid}.quiz-opt{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:14px;font-size:1rem;font-weight:600;display:flex}.quiz-opt:hover:not(:disabled){border-color:var(--c);background:color-mix(in srgb, var(--c) 6%, var(--surface))}.quiz-opt:disabled{cursor:default}.quiz-opt.correct{background:var(--good-bg);border-color:var(--good);color:var(--good)}.quiz-opt.wrong{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}.quiz-feedback{background:var(--surface-2);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:12px 14px;display:flex}.quiz-feedback p{margin:0}.quiz-done h2{color:var(--c);font-size:2.5rem}.sounds-layout{grid-template-columns:1fr 320px;align-items:start;gap:20px;display:grid}.phoneme-group h3{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:14px 0 8px;font-size:.85rem}.phoneme-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;display:grid}.phoneme{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;padding:10px 4px;display:flex}.phoneme:hover{border-color:var(--c)}.phoneme.active{background:var(--c);border-color:var(--c);color:#fff}.phoneme.active .ph-word{color:#fff}.ph-symbol{font-family:Lucida Sans Unicode,Arial Unicode MS,Segoe UI,sans-serif;font-size:1.3rem;font-weight:600}.ph-word{color:var(--muted);font-size:.78rem}.phoneme-detail{position:sticky;top:76px}.ph-big{color:var(--c);font-family:Lucida Sans Unicode,Arial Unicode MS,Segoe UI,sans-serif;font-size:3.5rem;font-weight:600;line-height:1.2}.ph-examples{flex-wrap:wrap;gap:6px;margin:10px 0 14px;display:flex}.phoneme-detail p{gap:8px;display:flex}.phoneme-detail p svg{color:var(--c);flex:none;margin-top:4px}.pair-picker{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.chip-btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-family:Lucida Sans Unicode,Segoe UI,sans-serif;display:inline-flex}.chip-btn.active{background:var(--c);border-color:var(--c);color:#fff}.chip-score{background:var(--good-bg);color:var(--good);border-radius:99px;padding:0 6px;font-size:.72rem}.pairs-table td{padding:6px}.pairs-table{margin-bottom:16px}.pair-quiz{text-align:center}.pair-quiz .quiz-options{margin-bottom:16px}.two-col .card{margin:0}.stress-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;display:grid}.stress-card{margin:0;padding:14px}.stress-card.correct{border-color:var(--good)}.stress-card.wrong{border-color:var(--bad)}.syllables{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.syl{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:8px;padding:8px 10px;font-size:1rem}.syl:hover:not(:disabled){border-color:var(--c)}.syl:disabled{cursor:default}.syl.stressed{background:var(--good);border-color:var(--good);color:#fff;font-weight:800}.syl.miss{background:var(--bad-bg);border-color:var(--bad)}.cs-examples{flex-direction:column;gap:6px;display:flex}.cs-row{background:var(--surface-2);border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;display:flex}.cs-row .spoken{color:var(--c);flex:1;font-weight:700}.heatmap{grid-template-rows:repeat(7,14px);grid-auto-columns:14px;grid-auto-flow:column;gap:3px;padding-bottom:4px;display:grid;overflow-x:auto}.heatmap span{background:var(--surface-2);border-radius:3px}.heatmap span.on{background:var(--good)}.recent{margin:0;padding:0;list-style:none}.recent li{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 0;display:flex}.recent li:last-child{border:none}.recent-title{flex:1;min-width:0;font-weight:600}.skill-dot{background:color-mix(in srgb, var(--c) 13%, transparent);width:30px;height:30px;color:var(--c);border-radius:8px;flex:none;place-items:center;display:grid}@media (width<=960px){.hero,.two-col,.writing-layout,.review-grid,.sounds-layout{grid-template-columns:1fr}.skill-grid,.skill-grid.three{grid-template-columns:repeat(2,1fr)}.span-2{grid-column:auto}.prompt-card,.phoneme-detail{position:static}.stat-tiles,.stat-tiles.big{grid-template-columns:repeat(2,1fr)}}@media (width<=560px){.skill-grid,.skill-grid.three,.format-strip,.calc-grid,.quiz-options{grid-template-columns:1fr}.quiz-options.two{grid-template-columns:1fr 1fr}.page-icon{display:none}.card{padding:16px}.player,.recent li{flex-wrap:wrap}.editor{min-height:360px}.lesson-row{align-items:flex-start}.lesson-side{display:none}}.writing-layout>*,.review-grid>*,.two-col>*,.sounds-layout>*,.split>*{min-width:0}.account{flex:none;position:relative}.google-btn{background:var(--surface);color:var(--text);gap:8px}.avatar{object-fit:cover;border-radius:50%;flex:none;display:block}.avatar.initials{background:var(--primary);color:#fff;place-items:center;font-weight:700;display:grid}.avatar.skeleton{background:var(--surface-2);width:32px;height:32px}.avatar-btn{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:50%;padding:2px;display:grid;position:relative}.avatar-btn:hover,.avatar-btn[aria-expanded=true]{border-color:color-mix(in srgb, var(--primary) 50%, transparent)}.avatar-btn>.sync-dot{border:2px solid var(--surface);position:absolute;bottom:0;right:0}.sync-dot{background:var(--muted);border-radius:50%;width:10px;height:10px;display:inline-block}.sync-dot.inline{vertical-align:1px;width:8px;height:8px;margin-right:2px}.sync-dot.synced{background:var(--good)}.sync-dot.syncing,.sync-dot.loading{background:#eab308;animation:1.2s infinite pulse}.sync-dot.offline{background:var(--muted)}.sync-dot.error{background:var(--bad)}.account-pop{z-index:30;background:var(--surface);border:1px solid var(--border);width:290px;box-shadow:var(--shadow-lg);border-radius:14px;padding:14px;position:absolute;top:calc(100% + 8px);right:0}.account-pop.error-pop{color:var(--bad);font-size:.85rem}.account-head{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding-bottom:12px;display:flex}.account-head>div{flex-direction:column;min-width:0;display:flex}.account-head b,.account-head span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sync-line{color:var(--muted);padding:10px 0;font-size:.85rem}.menu-item{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:9px 10px;font-size:.92rem;text-decoration:none;display:flex}.menu-item:hover{background:var(--surface-2)}.error-text{color:var(--bad)}.sync-banner{border-radius:var(--radius);background:color-mix(in srgb, var(--primary) 8%, var(--surface));border:1px solid color-mix(in srgb, var(--primary) 25%, var(--border));flex-wrap:wrap;align-items:center;gap:14px;margin:20px 0 8px;padding:14px 18px;display:flex}.sync-banner>div{flex-direction:column;flex:1;min-width:200px;display:flex}.sync-banner.signed-in{background:var(--surface);border-color:var(--border);margin-top:0;margin-bottom:20px}@media (width<=1080px){.account{order:2}.menu-btn{order:3;margin-left:0}.nav{order:4}.brand{margin-right:auto}}@media (width<=420px){.account .google-btn{gap:0;padding:6px 8px;font-size:0}.account-pop{width:auto;position:fixed;top:64px;left:16px;right:16px}}.auth-wrap{place-items:center;min-height:calc(100vh - 220px);padding:8px 0 24px;display:grid}.auth-panel{background:var(--surface);border:1px solid var(--border);width:100%;max-width:940px;box-shadow:var(--shadow-lg);border-radius:20px;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.auth-side{color:#fff;background:linear-gradient(150deg,#1d4ed8 0%,#4338ca 55%,#7c3aed 100%);flex-direction:column;gap:22px;padding:36px;display:flex}.auth-side h2{letter-spacing:-.01em;margin:0;font-size:1.55rem;line-height:1.3}.brand.light{color:#fff}.brand.light .brand-mark{background:#ffffff2e}.benefits{flex-direction:column;gap:18px;margin:0;padding:0;list-style:none;display:flex}.benefits li{align-items:flex-start;gap:14px;display:flex}.benefits li>div{flex-direction:column;display:flex}.benefits span:not(.benefit-icon){opacity:.85;font-size:.9rem}.benefit-icon{background:#ffffff29;border-radius:10px;flex:none;place-items:center;width:36px;height:36px;display:grid}.auth-side-foot{opacity:.75;margin:auto 0 0;font-size:.85rem}.auth-main{flex-direction:column;padding:44px 40px 36px;display:flex}.auth-main h1{margin-bottom:4px;font-size:1.75rem}.auth-main>.muted{margin-bottom:26px}.google-signin{color:#1f1f1f;cursor:pointer;background:#fff;border:1px solid #dadce0;border-radius:12px;justify-content:center;align-items:center;gap:12px;width:100%;padding:13px 18px;font-size:1rem;font-weight:600;transition:background .15s,box-shadow .15s;display:flex}.google-signin:hover:not(:disabled){background:#f8faff;box-shadow:0 1px 6px #20212433}.google-signin:disabled{cursor:progress;opacity:.85}.spinner{border:2.5px solid #d2e3fc;border-top-color:#1a73e8;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-error,.auth-note{border-radius:10px;align-items:flex-start;gap:8px;margin-top:14px;padding:10px 12px;font-size:.88rem;display:flex}.auth-error{background:var(--bad-bg);color:var(--bad)}.auth-note{background:var(--good-bg);color:var(--good)}.auth-error svg,.auth-note svg{flex:none;margin-top:3px}.auth-switch{text-align:center;color:var(--muted);margin:20px 0 0;font-size:.92rem}.auth-switch a{color:var(--primary);font-weight:600}.auth-divider{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:12px;margin:22px 0 14px;font-size:.8rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.block-link{width:100%}.auth-fine{color:var(--muted);text-align:center;margin:26px 0 0;font-size:.78rem}.auth-card{text-align:center;max-width:480px}.banner-actions{flex-wrap:wrap;gap:8px;display:flex}.toast{z-index:50;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--good);width:min(440px,100vw - 32px);box-shadow:var(--shadow-lg);border-radius:14px;align-items:flex-start;gap:12px;padding:14px 14px 14px 16px;animation:.25s ease-out toast-in;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast>svg{color:var(--good);flex:none;margin-top:2px}.toast>div{flex-direction:column;flex:1;font-size:.9rem;display:flex}.toast span{color:var(--muted);font-size:.85rem}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}}@media (width<=760px){.auth-panel{grid-template-columns:1fr}.auth-side{order:2;gap:16px;padding:26px 24px}.auth-side h2,.auth-side .brand,.auth-side-foot{display:none}.auth-main{padding:32px 22px 28px}}.theme-toggle{flex:none;position:relative}.theme-btn{overflow:hidden}.theme-icon{width:18px;height:18px;display:grid;position:relative}.theme-icon svg{transition:transform .5s var(--ease), opacity .3s;position:absolute;inset:0}.theme-icon.light .moon,.theme-icon.dark .sun{opacity:0;transform:rotate(-90deg)scale(.4)}.theme-icon.light .sun{color:#f59e0b}.theme-icon.dark .moon{color:#a5b4fc}.theme-menu{z-index:30;background:var(--surface);border:1px solid var(--border);min-width:160px;box-shadow:var(--shadow-lg);animation:pop-in .18s var(--ease);transform-origin:100% 0;border-radius:12px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}.theme-menu button{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:.9rem;display:flex}.theme-menu button:hover{background:var(--surface-2)}.theme-menu button.active{color:var(--primary);font-weight:600}.theme-check{margin-left:auto}.account-pop{animation:pop-in .18s var(--ease);transform-origin:100% 0}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)scale(.97)}}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}@media (width<=1080px){.theme-toggle{order:1}}.topbar{transition:box-shadow .25s,background .25s}.topbar.scrolled{box-shadow:0 6px 24px #00000012}.nav a{transition:color .15s,background .15s}.brand-mark{transition:transform .4s var(--ease);background:linear-gradient(135deg,#2563eb,#7c3aed)}.brand:hover .brand-mark{transform:rotate(-8deg)scale(1.06)}.page{animation:page-in .45s var(--ease) backwards}@keyframes page-in{0%{opacity:0;transform:translateY(10px)}}:is(.skill-grid,.item-grid,.lesson-list,.stat-tiles,.stat-strip,.word-list,.stress-grid,.speak-list,.phoneme-grid)>*{animation:rise .5s var(--ease) backwards}@keyframes rise{0%{opacity:0;transform:translateY(14px)scale(.98)}}:is(.skill-grid,.item-grid,.lesson-list,.stat-tiles,.stat-strip,.word-list,.stress-grid,.speak-list)>:nth-child(2){animation-delay:50ms}:is(.skill-grid,.item-grid,.lesson-list,.stat-tiles,.stat-strip,.word-list,.stress-grid,.speak-list)>:nth-child(3){animation-delay:.1s}:is(.skill-grid,.item-grid,.lesson-list,.stat-tiles,.stat-strip,.word-list,.stress-grid,.speak-list)>:nth-child(4){animation-delay:.15s}:is(.skill-grid,.item-grid,.lesson-list,.stat-tiles,.stat-strip,.word-list,.stress-grid,.speak-list)>:nth-child(5){animation-delay:.2s}:is(.skill-grid,.item-grid,.lesson-list,.stat-tiles,.stat-strip,.word-list,.stress-grid,.speak-list)>:nth-child(6){animation-delay:.25s}:is(.skill-grid,.item-grid,.lesson-list,.stat-tiles,.stat-strip,.word-list,.stress-grid,.speak-list)>:nth-child(n+7){animation-delay:.3s}.phoneme-grid>*{animation-duration:.35s}.spot{isolation:isolate;position:relative;overflow:hidden}.spot:before{content:"";z-index:-1;opacity:0;pointer-events:none;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%), color-mix(in srgb, var(--c) 14%, transparent), transparent 60%);transition:opacity .3s;position:absolute;inset:0}.spot:hover:before{opacity:1}.skill-card .skill-icon{transition:transform .45s var(--ease), background .3s, color .3s}.skill-card:hover .skill-icon{background:var(--c);color:#fff;transform:translateY(-2px)rotate(-6deg)scale(1.08)}.skill-card h3:after{content:" →";opacity:0;transition:opacity .25s, transform .25s var(--ease);color:var(--c);display:inline-block;transform:translate(-6px)}.skill-card:hover h3:after{opacity:1;transform:none}.mini-track>div{animation:grow 1s var(--ease) .2s backwards;transform-origin:0}@keyframes grow{0%{transform:scaleX(0)}}.lesson-row{transition:border-color .2s, transform .2s var(--ease), box-shadow .2s}.lesson-row:hover{box-shadow:var(--shadow-lg);transform:translate(4px)}.btn,.icon-btn,.choice,.quiz-opt,.chip-btn,.phoneme,.syl,.play-btn,.google-signin,.speak-btn{transition:transform .12s var(--ease), background .15s, border-color .15s, box-shadow .15s, color .15s}.btn:active:not(:disabled),.icon-btn:active,.choice:active:not(:disabled),.quiz-opt:active:not(:disabled),.chip-btn:active,.phoneme:active,.syl:active:not(:disabled),.speak-btn:active{transform:scale(.96)}.btn.primary{box-shadow:0 4px 14px color-mix(in srgb, var(--c) 30%, transparent)}.btn.primary:hover:not(:disabled){box-shadow:0 8px 20px color-mix(in srgb, var(--c) 35%, transparent);transform:translateY(-1px)}.play-btn:hover{transform:scale(1.06)}.speak-btn.busy svg{animation:.6s ease-in-out infinite wobble}@keyframes wobble{50%{transform:scale(1.18)}}.hero{isolation:isolate;position:relative}.hero-orbs{z-index:-1;pointer-events:none;height:420px;position:absolute;inset:-40px -16px auto;overflow:hidden;-webkit-mask-image:linear-gradient(#000 55%,#0000);mask-image:linear-gradient(#000 55%,#0000)}.hero-orbs span{filter:blur(60px);border-radius:50%;animation:14s ease-in-out infinite alternate float;position:absolute}.hero-orbs span:first-child{background:var(--orb-a);width:380px;height:380px;top:-80px;left:-60px}.hero-orbs span:nth-child(2){background:var(--orb-b);width:300px;height:300px;animation-duration:18s;animation-delay:-5s;top:10px;right:8%}.hero-orbs span:nth-child(3){background:var(--orb-c);width:260px;height:260px;animation-duration:16s;animation-delay:-9s;top:120px;left:40%}@keyframes float{to{transform:translate(40px,30px)scale(1.12)}}.hero h1 .grad{background:linear-gradient(90deg,#2563eb,#7c3aed 50%,#db2777);color:#0000;-webkit-background-clip:text;background-clip:text}:root[data-theme=dark] .hero h1 .grad{background-image:linear-gradient(90deg,#7aa2ff,#b18cff 50%,#ff7ab8)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .hero h1 .grad{background-image:linear-gradient(90deg,#7aa2ff,#b18cff 50%,#ff7ab8)}}.stat{transition:transform .25s var(--ease), box-shadow .25s}.stat:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}.stat b{font-variant-numeric:tabular-nums}.stat .flame.lit{animation:1.6s ease-in-out infinite flicker}@keyframes flicker{50%{transform:scale(1.12)rotate(-4deg)}}@property --p{syntax:"<number>";inherits:false;initial-value:0}.score-summary{animation:pop-in .4s var(--ease)}.score-ring{transition:--p 1.1s var(--ease)}.score-ring span{font-variant-numeric:tabular-nums}.score-summary.great{border-color:color-mix(in srgb, var(--good) 45%, var(--border));background:linear-gradient(135deg, color-mix(in srgb, var(--good) 8%, var(--surface)), var(--surface))}.confetti{z-index:100;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}.quiz-opt.correct,.question.correct>.q-no{animation:pop .45s var(--ease)}.quiz-opt.wrong,.question.wrong>.q-no{animation:.4s ease-in-out shake}@keyframes pop{40%{transform:scale(1.07)}}@keyframes shake{20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.choice.selected,.mcq-option.selected .opt-letter{animation:pop .3s var(--ease)}.kbd{border:1px solid var(--border);background:var(--surface-2);min-width:20px;height:20px;color:var(--muted);border-bottom-width:2px;border-radius:5px;place-items:center;padding:0 5px;font-family:ui-monospace,monospace;font-size:.72rem;font-weight:600;display:inline-grid}.quiz-opt{position:relative}.quiz-opt .kbd{position:absolute;top:10px;left:10px}.key-hints{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:4px 14px;margin-top:4px;font-size:.8rem;display:flex}.key-hints span{align-items:center;gap:5px;display:inline-flex}@media (hover:none){.kbd,.key-hints{display:none}}.q-nav{border-bottom:1px solid var(--border);background:var(--surface-2);align-items:center;gap:4px;padding:8px 16px;display:flex;overflow-x:auto}.q-nav-label{color:var(--muted);white-space:nowrap;margin-right:6px;font-size:.78rem}.q-nav>button{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--muted);cursor:pointer;transition:all .15s var(--ease);border-radius:8px;flex:none;font-size:.8rem;font-weight:700}.q-nav>button:hover{border-color:var(--c);color:var(--c);transform:translateY(-1px)}.q-nav>button.answered{background:color-mix(in srgb, var(--c) 14%, var(--surface));border-color:color-mix(in srgb, var(--c) 40%, transparent);color:var(--c)}.q-nav>button.correct{background:var(--good);border-color:var(--good);color:#fff}.q-nav>button.wrong{background:var(--bad);border-color:var(--bad);color:#fff}.q-nav-tools{color:var(--muted);white-space:nowrap;align-items:center;gap:8px;margin-left:auto;padding-left:12px;font-size:.78rem;display:flex}.q-nav-tools .btn{padding:4px 10px;font-size:.78rem}.question.flash{animation:1.4s ease-out flash}@keyframes flash{0%,35%{box-shadow:0 0 0 3px color-mix(in srgb, var(--c) 45%, transparent)}}.passage-text mark{background:var(--mark);color:inherit;cursor:pointer;border-radius:3px;padding:1px 0;transition:background .15s;animation:.35s ease-out mark-in}.passage-text mark:hover{text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--text) 45%, transparent);text-decoration-color:color-mix(in srgb, var(--text) 45%, transparent)}@keyframes mark-in{0%{background:0 0}}.passage-text{cursor:text}.hl-pop{z-index:40;background:var(--text);box-shadow:var(--shadow-lg);animation:hl-in .15s var(--ease);border-radius:10px;gap:2px;padding:4px;display:flex;position:fixed;transform:translate(-50%,calc(-100% - 10px))}@keyframes hl-in{0%{opacity:0;transform:translate(-50%,calc(-100% - 4px))}}.hl-pop button{color:var(--bg);cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:6px;padding:6px 10px;font-size:.82rem;font-weight:600;display:inline-flex}.hl-pop button:hover{background:color-mix(in srgb, var(--bg) 18%, transparent)}.hl-pop:after{content:"";background:var(--text);width:10px;height:10px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)rotate(45deg)}.eq{align-items:flex-end;gap:2px;height:14px;display:inline-flex}.eq i{background:var(--c);transform-origin:bottom;border-radius:2px;width:3px;height:100%;animation:.9s ease-in-out infinite eq}.eq i:nth-child(2){animation-delay:-.3s}.eq i:nth-child(3){animation-delay:-.6s}.eq i:nth-child(4){animation-delay:-.15s}@keyframes eq{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.play-btn.playing{animation:1.8s ease-out infinite ring}@keyframes ring{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--c) 45%, transparent)}to{box-shadow:0 0 0 16px #0000}}.flashcard{touch-action:pan-y;-webkit-user-select:none;user-select:none;position:relative}.flashcard.dragging .flash-inner{transition:none}.flash-stamp{z-index:2;letter-spacing:.05em;text-transform:uppercase;pointer-events:none;background:var(--surface);border:3px solid;border-radius:8px;padding:4px 12px;font-weight:800;position:absolute;top:18px}.flash-stamp.know{color:var(--good);left:18px;transform:rotate(-10deg)}.flash-stamp.learn{color:var(--bad);right:18px;transform:rotate(10deg)}.flashcard.fly-right .flash-inner,.flashcard.fly-left .flash-inner{opacity:0;transition:transform .3s ease-in,opacity .3s}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}:root{--plan-bg:#f7f9fc;--plan-building:#dfe6f3;--plan-building-stroke:#9fb0cc;--plan-green:#d3edd8;--plan-green-stroke:#8cc79a;--plan-water:#cfe6fb;--plan-water-stroke:#84b9e8;--plan-road:#d9dbe0;--plan-area:#eef0f4;--plan-part:#e9eef7;--plan-ink:#334155}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--plan-bg:#111827;--plan-building:#26324a;--plan-building-stroke:#4b5f86;--plan-green:#1d3a2a;--plan-green-stroke:#3f7a55;--plan-water:#18334f;--plan-water-stroke:#3a6fa3;--plan-road:#3a4252;--plan-area:#1b2333;--plan-part:#222c40;--plan-ink:#d6dceb}}:root[data-theme=dark]{--plan-bg:#111827;--plan-building:#26324a;--plan-building-stroke:#4b5f86;--plan-green:#1d3a2a;--plan-green-stroke:#3f7a55;--plan-water:#18334f;--plan-water-stroke:#3a6fa3;--plan-road:#3a4252;--plan-area:#1b2333;--plan-part:#222c40;--plan-ink:#d6dceb}.q-no.wide{min-width:40px}.q-nav>button.wide{width:auto;padding:0 8px}.pick-note{color:var(--muted);margin:-2px 0 8px;font-size:.82rem}.pick-note b{color:var(--c)}.mcq-option.multi .opt-letter{border-radius:5px}.mcq-option.dim{opacity:.5}.blank{border-radius:8px;display:inline-block}.blank.correct .gap-input{border-bottom-color:var(--good);background:var(--good-bg);color:var(--good)}.blank.wrong .gap-input{border-bottom-color:var(--bad);background:var(--bad-bg);color:var(--bad);text-decoration:line-through}.short-answer .gap-input{text-align:left;width:240px;margin:0}.blank.flash{animation:1.4s ease-out flash}.word-bank{border:1px dashed color-mix(in srgb, var(--c) 40%, var(--border));background:var(--surface-2);border-radius:12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin-bottom:14px;padding:12px;display:grid}.bank-chip{background:var(--surface);border:1px solid var(--border);cursor:grab;transition:opacity .2s, border-color .15s, transform .15s var(--ease);border-radius:8px;align-items:baseline;gap:8px;padding:6px 10px;font-size:.9rem;display:flex}.bank-chip:hover{border-color:var(--c);transform:translateY(-1px)}.bank-chip:active{cursor:grabbing}.bank-chip b{color:var(--c)}.bank-chip.used{opacity:.45}.summary-text{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;line-height:2.5}.bank-slot{transition:box-shadow .15s, transform .15s var(--ease);border-radius:9px;margin:0 3px;display:inline-block}.bank-slot select{border:1px dashed color-mix(in srgb, var(--c) 55%, var(--border));background:color-mix(in srgb, var(--c) 6%, var(--surface));border-radius:8px;max-width:230px;padding:3px 8px;font-weight:600}.bank-slot.filled select{border-style:solid}.bank-slot.over{box-shadow:0 0 0 3px color-mix(in srgb, var(--c) 35%, transparent);transform:scale(1.05)}.bank-slot.correct select{border-color:var(--good);background:var(--good-bg);color:var(--good)}.bank-slot.wrong select{border-color:var(--bad);background:var(--bad-bg);color:var(--bad)}.map-tip{margin-top:8px}.completion-table td,.completion-table th{text-align:left;vertical-align:top;line-height:2}.completion-table .gap-input{width:130px;margin:0 4px}.flowchart{flex-direction:column;align-items:stretch;max-width:560px;margin:0 auto;padding:0;list-style:none;display:flex}.flow-step{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);text-align:center;border-radius:12px;padding:12px 16px;line-height:2;position:relative}.flow-step+.flow-step{margin-top:30px}.flow-step+.flow-step:before{content:"";background:var(--c);width:2px;height:16px;position:absolute;top:-24px;left:50%;transform:translate(-50%)}.flow-step+.flow-step:after{content:"";border:6px solid #0000;border-top-color:var(--c);position:absolute;top:-10px;left:50%;transform:translate(-50%)}.review-list{margin-top:12px}.review-list .review{border-top:none;margin-top:0;padding-top:0}.plan{margin:0 0 12px}.plan svg{border:1px solid var(--border);border-radius:12px;width:100%;height:auto;display:block}.plan figcaption{text-align:center;color:var(--muted);margin-top:6px;font-size:.85rem}.plan-bg{fill:var(--plan-bg)}.plan-shape{stroke-width:1.5px}.plan-shape.building{fill:var(--plan-building);stroke:var(--plan-building-stroke)}.plan-shape.part{fill:var(--plan-part);stroke:var(--plan-building-stroke)}.plan-shape.green{fill:var(--plan-green);stroke:var(--plan-green-stroke)}.plan-shape.water{fill:var(--plan-water);stroke:var(--plan-water-stroke)}.plan-shape.road{fill:var(--plan-road);stroke:none}.plan-shape.area{fill:var(--plan-area);stroke:var(--plan-building-stroke);stroke-dasharray:5 4}.plan-label{fill:var(--plan-ink);font-size:12px;font-weight:600;font-family:var(--font);pointer-events:none}.plan-line{fill:none;stroke:var(--plan-ink);stroke-linecap:round;stroke-linejoin:round}.plan-line.road{stroke:var(--plan-road);stroke-width:16px}.plan-line.path{stroke:var(--plan-building-stroke);stroke-width:2.5px;stroke-dasharray:6 5}.plan-line.arrow{stroke:var(--c);stroke-width:2.5px}.plan-line.pipe{stroke:var(--plan-building-stroke);stroke-width:7px}.plan-arrowhead{fill:var(--c)}.plan-line-label{fill:var(--muted);font-size:11px;font-style:italic;font-family:var(--font)}.plan-compass circle{fill:var(--surface);stroke:var(--border)}.plan-compass path{fill:var(--plan-ink)}.plan-compass text{fill:var(--plan-ink);font-size:11px;font-weight:700;font-family:var(--font)}.plan-marker circle{fill:var(--surface);stroke:var(--c);stroke-width:2.5px;transition:fill .2s,stroke .2s,r .2s}.plan-marker text{fill:var(--c);font-size:12px;font-weight:800;font-family:var(--font);pointer-events:none}.plan-marker.clickable{cursor:pointer}.plan-marker.clickable:hover circle{fill:color-mix(in srgb, var(--c) 18%, var(--surface));r:15}.plan-marker.used circle{fill:color-mix(in srgb, var(--c) 18%, var(--surface))}.plan-marker.active circle{fill:var(--c);r:15}.plan-marker.active text{fill:#fff}.plan-marker.correct circle{fill:var(--good);stroke:var(--good)}.plan-marker.correct text{fill:#fff}.plan-marker.wrong circle{fill:var(--bad);stroke:var(--bad)}.plan-marker.wrong text{fill:#fff}.map-layout{flex-direction:column;gap:8px;display:flex}.map-layout .plan{width:100%;max-width:680px;margin:0 auto 4px}.map-questions{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 12px;display:grid}.map-questions .question{cursor:pointer;border:1px solid #0000}.map-q.active{border-color:color-mix(in srgb, var(--c) 50%, transparent);background:color-mix(in srgb, var(--c) 6%, transparent)}.diagram-labels{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px 16px;display:grid}.diagram-label{align-items:center;gap:10px;padding:4px 0;display:flex}.diagram-label .q-no{flex:none;position:static}.diagram-label .gap-input{width:140px}.process-flow{counter-reset:step;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin:8px 0 0;padding:0;list-style:none;display:grid}.process-step{counter-increment:step;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px 12px 12px 44px;font-size:.9rem;position:relative}.process-step:before{content:counter(step);background:var(--c);color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;font-size:.78rem;font-weight:800;display:grid;position:absolute;top:11px;left:10px}.process-step b{display:block}.process-step span{color:var(--muted);font-size:.82rem}.process-cycle{text-align:center;color:var(--muted);margin-top:8px;font-size:.85rem}.map-compare{grid-template-columns:1fr 1fr;gap:12px;display:grid}.map-compare h5{text-align:center;margin:0 0 6px;font-size:.95rem}@media (width<=560px){.map-compare{grid-template-columns:1fr}}.practice .mini-track{margin:4px 0 14px}.practice-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.exercise{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:14px 16px;transition:border-color .2s,background .2s}.exercise.correct{border-color:color-mix(in srgb, var(--good) 50%, var(--border));background:color-mix(in srgb, var(--good) 6%, var(--surface))}.exercise.wrong{border-color:color-mix(in srgb, var(--bad) 50%, var(--border));background:color-mix(in srgb, var(--bad) 5%, var(--surface))}.exercise-head{align-items:center;gap:10px;margin-bottom:8px;display:flex}.exercise-head .q-no{position:static}.exercise-kind{text-transform:uppercase;letter-spacing:.05em;color:var(--c);font-size:.75rem;font-weight:700}.exercise .gap-text{margin:0}.exercise-foot{flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;display:flex}.verdict{align-items:center;gap:5px;font-size:.9rem;font-weight:700;display:inline-flex}.verdict.ok{color:var(--good);animation:pop .4s var(--ease)}.verdict.no{color:var(--bad);animation:.4s ease-in-out shake}.exercise .explanation{margin:8px 0 0;font-size:.88rem}.error-parts{flex-wrap:wrap;gap:6px;display:flex}.error-part{border:1px dashed var(--border);background:var(--surface-2);cursor:pointer;transition:all .15s var(--ease);border-radius:8px;padding:6px 10px;font-size:.98rem;position:relative}.error-part:hover:not(:disabled){border-color:var(--c)}.error-part.picked{border:1px solid var(--c);background:color-mix(in srgb, var(--c) 12%, var(--surface))}.error-part.is-wrong{border:1px solid var(--bad);background:var(--bad-bg);text-decoration:line-through;-webkit-text-decoration-color:var(--bad);text-decoration-color:var(--bad)}.error-part.missed{border:1px solid var(--muted);opacity:.7}.error-part:disabled{cursor:default;color:var(--text)}.correction{color:var(--good);margin-top:2px;font-size:.85rem;font-weight:700;text-decoration:none;display:block}.correction:before{content:"→ "}.order-builder{flex-direction:column;gap:10px;display:flex}.order-line{border:2px dashed color-mix(in srgb, var(--c) 35%, var(--border));border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px;min-height:46px;padding:8px;display:flex}.order-bank{flex-wrap:wrap;gap:6px;display:flex}.tile{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;box-shadow:0 1px 0 var(--border);transition:transform .15s var(--ease), opacity .2s, background .15s;animation:pop-in .2s var(--ease);border-radius:8px;padding:6px 12px;font-size:.95rem}.tile:hover:not(:disabled){border-color:var(--c);transform:translateY(-2px)}.tile.placed{background:color-mix(in srgb, var(--c) 12%, var(--surface));border-color:color-mix(in srgb, var(--c) 40%, transparent)}.tile.gone{opacity:.25;cursor:default}.tile:disabled{cursor:default}.mode-picker{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.mode-picker .chip-btn{font-family:var(--font);font-size:.88rem}.spell-box,.drill-play{flex-direction:column;align-items:center;display:flex}.drill-play{gap:4px;margin-bottom:10px}.drill-play .play-btn.big{margin:10px auto 6px}.spell-form{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;display:flex}.spell-input{border:2px solid var(--border);background:var(--surface);text-align:center;border-radius:12px;width:min(320px,100%);padding:11px 14px;font-size:1.15rem;font-weight:600;transition:border-color .15s}.spell-input.wide{text-align:left;width:min(560px,100%);font-weight:500}.spell-input:focus{border-color:var(--c);outline:none}.spell-input.correct{border-color:var(--good);background:var(--good-bg);color:var(--good);animation:pop .4s var(--ease)}.spell-input.wrong{border-color:var(--bad);background:var(--bad-bg);color:var(--bad);animation:.4s ease-in-out shake}.dictation-diff{flex-wrap:wrap;gap:4px;margin-bottom:4px;font-size:1.05rem;display:flex}.dictation-diff span{border-radius:6px;padding:1px 6px;font-weight:600}.dictation-diff .ok{background:var(--good-bg);color:var(--good)}.dictation-diff .miss{background:var(--bad-bg);color:var(--bad)}.syl-options{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.stress-syl{color:var(--c);font-weight:800}.drill .center h2{color:var(--c);font-size:2.2rem}.mock-cta{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--c) 35%, var(--border));background:linear-gradient(120deg, color-mix(in srgb, var(--c) 10%, var(--surface)), var(--surface));color:var(--text);box-shadow:var(--shadow);transition:transform .2s var(--ease), box-shadow .2s;align-items:center;gap:16px;margin-bottom:18px;padding:18px 20px;text-decoration:none;display:flex}.mock-cta:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.mock-cta>div{flex-direction:column;flex:1;display:flex}.mock-cta .skill-icon{margin:0}.mock-parts{grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0;display:grid}.mock-parts .card{margin:0}.mock-parts p{margin:8px 0 0;font-size:.92rem}.mock-setup{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.mock-bar{align-items:center;gap:12px;margin-bottom:16px;display:flex}.mock-progress{background:var(--surface-2);border-radius:99px;flex:1;height:6px;overflow:hidden}.mock-progress div{background:var(--c);height:100%;transition:width .4s var(--ease)}.rec-dot{background:var(--bad);vertical-align:0;border-radius:50%;width:9px;height:9px;animation:1.2s infinite pulse;display:inline-block}.mock-step{min-height:320px;animation:rise .4s var(--ease);flex-direction:column;gap:16px;display:flex}.mock-step.examiner{border-color:color-mix(in srgb, var(--c) 40%, var(--border))}.mock-who{color:var(--c);align-items:center;gap:8px;font-weight:700;display:flex}.mock-question{margin:0;font-size:clamp(1.25rem,3vw,1.6rem);font-weight:600;line-height:1.4}.mock-question.hidden-q{color:var(--muted);font-style:italic;font-weight:500}.mock-step .cue-card{margin:0}.mock-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;display:flex}.mock-review h4{color:var(--c);margin:14px 0 4px}.mock-review ul{margin:0;padding-left:20px}.mock-audio{width:100%}@media (width<=640px){.mock-parts{grid-template-columns:1fr}.mock-cta{flex-wrap:wrap}}.practice-done{background:var(--surface-2);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding:12px 14px;display:flex}
