:root{--font-display:"Unbounded", "Nunito", system-ui, sans-serif;--font-body:"Nunito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--bg:#f6f3ff;--blob-1:#ffd6ea;--blob-2:#d3e3ff;--blob-3:#fff0c7;--surface:#fff;--surface-2:#f2eeff;--text:#1d1640;--muted:#6e6893;--border:#e5defc;--primary:#6a4cff;--primary-strong:#4a2fd6;--primary-soft:#ece7ff;--primary-text:#fff;--sun:#ffb21e;--sun-strong:#e08c00;--flame:#ff6a2b;--success:#17b26a;--error:#e5484d;--error-soft:#ffe9ea;--en-1:#3d6bff;--en-2:#7b5cff;--en-strong:#2a49c9;--es-1:#ff5a3c;--es-2:#ffb21e;--es-strong:#c93a1f;--fr-1:#2f5bd8;--fr-2:#e8435a;--fr-strong:#1f3e9e;--radius-sm:12px;--radius:20px;--radius-lg:28px;--radius-pill:999px;--shadow-sm:0 1px 2px #2c18780f, 0 2px 6px #2c18780f;--shadow:0 6px 20px #2c18781a, 0 2px 4px #2c18780d;--shadow-lg:0 18px 40px #2c187829;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--gutter:16px;--ease-bounce:cubic-bezier(.34, 1.56, .64, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#110d24;--blob-1:#3a1846;--blob-2:#172a5c;--blob-3:#3b2a12;--surface:#1c1739;--surface-2:#261f4b;--text:#f3f0ff;--muted:#a59fcb;--border:#322a5e;--primary:#8a72ff;--primary-strong:#5a3fe0;--primary-soft:#2c2458;--error:#ff6b70;--error-soft:#3d1a26;--shadow-sm:0 1px 2px #0000004d;--shadow:0 8px 24px #00000059;--shadow-lg:0 18px 44px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media (width>=600px){:root{--gutter:24px}}*{box-sizing:border-box}html{background:var(--bg)}body{min-height:100dvh;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background:radial-gradient(60vmax 60vmax at 110% -10%, var(--blob-1), transparent 60%), radial-gradient(55vmax 55vmax at -20% 30%, var(--blob-2), transparent 60%), radial-gradient(50vmax 50vmax at 90% 110%, var(--blob-3), transparent 60%), var(--bg);background-attachment:fixed;margin:0;font-size:16px;font-weight:500;line-height:1.45}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-weight:700;line-height:1.15}p{margin:0}a{color:var(--primary);font-weight:800;text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}:focus-visible{outline:3px solid color-mix(in srgb, var(--primary) 55%, transparent);outline-offset:2px}.muted{color:var(--muted)}.splash{place-content:center;justify-items:center;gap:var(--space-3);min-height:100dvh;color:var(--muted);font-weight:700;display:grid}.splash:before{content:"";border:4px solid var(--primary-soft);border-top-color:var(--primary);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pop-in{0%{transform:translateY(12px)scale(.97)}}@keyframes float{50%{transform:translateY(-6px) rotate(var(--tilt,0deg))}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.btn{--btn-bg:var(--surface-2);--btn-fg:var(--text);--btn-edge:var(--border);justify-content:center;align-items:center;gap:var(--space-2);font:inherit;letter-spacing:.01em;cursor:pointer;min-height:52px;color:var(--btn-fg);background:var(--btn-bg);box-shadow:0 4px 0 var(--btn-edge);border:0;border-radius:16px;padding:14px 20px;font-weight:800;transition:transform 80ms,box-shadow 80ms,filter .15s;display:inline-flex;transform:translateY(0)}.btn:hover:not(:disabled){filter:brightness(1.05)}.btn:active:not(:disabled){box-shadow:0 1px 0 var(--btn-edge);transform:translateY(3px)}.btn:disabled{opacity:.65;cursor:default}.btn.primary{--btn-bg:var(--primary);--btn-fg:var(--primary-text);--btn-edge:var(--primary-strong)}.btn.sun{--btn-bg:var(--sun);--btn-fg:#2a1a00;--btn-edge:var(--sun-strong)}.btn.block{width:100%}.btn.ghost{--btn-bg:transparent;--btn-fg:var(--muted);box-shadow:none}.btn.small{min-height:40px;box-shadow:0 3px 0 var(--btn-edge);border-radius:12px;padding:8px 14px;font-size:14px}.btn.small.ghost{box-shadow:none}.icon-btn{border:2px solid var(--border);background:var(--surface);width:44px;height:44px;color:var(--muted);cursor:pointer;box-shadow:0 3px 0 var(--border);border-radius:14px;place-items:center;padding:0;transition:transform 80ms,box-shadow 80ms,color .15s;display:grid}.icon-btn:hover{color:var(--text)}.icon-btn:active{box-shadow:0 1px 0 var(--border);transform:translateY(2px)}.icon-btn svg{width:20px;height:20px}.form{gap:var(--space-4);flex-direction:column;display:flex}.field{flex-direction:column;gap:6px;font-size:14px;font-weight:800;display:flex}.field small{font-size:13px;font-weight:600}input{font:inherit;border:2px solid var(--border);background:var(--surface-2);width:100%;color:var(--text);border-radius:14px;padding:13px 16px;font-size:16px;font-weight:600;transition:border-color .15s,box-shadow .15s,background .15s}input::placeholder{color:color-mix(in srgb, var(--muted) 70%, transparent)}input:focus{border-color:var(--primary);background:var(--surface);box-shadow:0 0 0 4px color-mix(in srgb, var(--primary) 20%, transparent);outline:none}.error{gap:var(--space-2);border-radius:var(--radius-sm);background:var(--error-soft);color:var(--error);animation:pop-in .25s var(--ease-bounce);align-items:flex-start;padding:10px 14px;font-size:14px;font-weight:700;display:flex}.auth{justify-content:center;gap:var(--space-5);max-width:440px;min-height:100dvh;padding:calc(var(--space-5) + env(safe-area-inset-top)) calc(var(--gutter) + env(safe-area-inset-right)) calc(var(--space-5) + env(safe-area-inset-bottom)) calc(var(--gutter) + env(safe-area-inset-left));flex-direction:column;margin:0 auto;display:flex}.auth-hero{height:168px;position:relative}.auth-logo{width:96px;height:96px;box-shadow:var(--shadow-lg);animation:pop-in .4s var(--ease-bounce);border-radius:28px;position:absolute;top:50%;left:50%;translate:-50% -50%}.bubble{font-family:var(--font-display);white-space:nowrap;color:#fff;box-shadow:var(--shadow);rotate:var(--tilt);border-radius:18px;padding:8px 14px;font-size:15px;font-weight:700;animation:4s ease-in-out infinite float;position:absolute}.bubble.en{--tilt:-6deg;background:linear-gradient(135deg, var(--en-1), var(--en-2));border-bottom-left-radius:4px;top:14px;left:2%}.bubble.es{--tilt:5deg;background:linear-gradient(135deg, var(--es-1), var(--es-2));border-bottom-right-radius:4px;animation-delay:-1.3s;top:34px;right:0}.bubble.ru{--tilt:-3deg;color:var(--text);background:var(--surface);border:2px solid var(--border);border-top-right-radius:4px;animation-delay:-2.6s;bottom:2px;right:14%}.auth-card{background:var(--surface);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-5) var(--space-6);box-shadow:var(--shadow-lg);gap:var(--space-5);flex-direction:column;animation:.35s ease-out pop-in;display:flex}.auth-card h1{font-size:clamp(20px,5.8vw,26px)}.auth-card .lead{color:var(--muted);margin-top:6px;font-weight:600}.auth-switch{text-align:center;color:var(--muted);font-weight:600}@media (width<=374px){.auth-card{padding:var(--space-4) var(--space-4) var(--space-5)}.bubble{font-size:13px}}.page{max-width:980px;padding:calc(var(--space-4) + env(safe-area-inset-top)) calc(var(--gutter) + env(safe-area-inset-right)) calc(var(--space-6) + env(safe-area-inset-bottom)) calc(var(--gutter) + env(safe-area-inset-left));gap:var(--space-5);flex-direction:column;margin:0 auto;display:flex}.topbar{align-items:center;gap:var(--space-3);display:flex}.avatar{width:48px;height:48px;font-family:var(--font-display);color:#fff;background:linear-gradient(135deg, var(--primary), var(--es-1));box-shadow:0 3px 0 var(--primary-strong);border-radius:16px;flex:none;place-items:center;font-size:20px;font-weight:800;display:grid}.greeting{flex:1;min-width:0}.greeting p{color:var(--muted);font-size:14px;font-weight:700}.greeting h1{text-overflow:ellipsis;white-space:nowrap;font-size:22px;overflow:hidden}.section-title{justify-content:space-between;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.section-title h2{font-size:18px}.section-title span{color:var(--muted);font-size:13px;font-weight:700}.stats{gap:var(--space-3);grid-template-columns:1fr;display:grid}.streak{gap:var(--space-4);padding:var(--space-4) var(--space-4) var(--space-5);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);flex-direction:column;animation:.35s ease-out pop-in;display:flex}.streak-head{align-items:center;gap:var(--space-3);display:flex}.streak-flame{background:color-mix(in srgb, var(--flame) 16%, transparent);border-radius:16px;flex:none;place-items:center;width:52px;height:52px;display:grid}.streak-flame svg{width:38px;height:38px}.streak-count{font-family:var(--font-display);font-size:26px;font-weight:800;line-height:1}.streak-count small{font-family:var(--font-body);color:var(--muted);margin-left:6px;font-size:15px;font-weight:700}.streak-hint{color:var(--muted);font-size:14px;font-weight:600}.week{grid-template-columns:repeat(7,1fr);gap:6px;margin:0;padding:0;list-style:none;display:grid}.week li{color:var(--muted);text-transform:uppercase;flex-direction:column;align-items:center;gap:6px;font-size:12px;font-weight:800;display:flex}.week li:after{content:"";aspect-ratio:1;background:var(--surface-2);border:2px dashed var(--border);border-radius:12px;width:100%;max-width:36px}.week li.today{color:var(--flame)}.week li.today:after{border:2px solid var(--flame);background:color-mix(in srgb, var(--flame) 10%, transparent)}.lang-grid{gap:var(--space-4);display:grid}@media (width>=720px){.lang-grid{grid-template-columns:1fr 1fr}.greeting h1{font-size:28px}}.lang-card{--c1:var(--en-1);--c2:var(--en-2);--edge:var(--en-strong);isolation:isolate;gap:var(--space-4);padding:var(--space-5) var(--space-5) var(--space-5);border-radius:var(--radius-lg);color:#fff;background:linear-gradient(140deg, var(--c1), var(--c2));box-shadow:0 6px 0 var(--edge), var(--shadow-lg);animation:pop-in .45s var(--ease-bounce) backwards;flex-direction:column;margin-bottom:6px;display:flex;position:relative;overflow:hidden}.lang-card:nth-child(2){animation-delay:80ms}.lang-card.es{--c1:var(--es-1);--c2:var(--es-2);--edge:var(--es-strong)}.lang-card:before{content:"";z-index:-1;background:#ffffff24;border-radius:50%;width:220px;height:220px;position:absolute;top:-70px;right:-60px;box-shadow:-40px 150px 0 -30px #ffffff14,-260px 210px 0 -40px #0000000f}.lang-phrase{z-index:-1;font-family:var(--font-display);color:#ffffff2e;pointer-events:none;white-space:nowrap;font-size:44px;font-weight:800;line-height:1;position:absolute;top:64px;right:16px;rotate:-8deg}.lang-head{align-items:center;gap:var(--space-3);display:flex}.flag{background:#fff;border:3px solid #ffffffe6;border-radius:18px;flex:none;width:56px;height:56px;overflow:hidden;box-shadow:0 4px 10px #0000002e}.flag svg{width:100%;height:100%;display:block}.lang-head h2{font-size:22px}.lang-head p{opacity:.85;font-weight:700}.levels{grid-template-columns:repeat(5,1fr);gap:6px;margin:0;padding:0;list-style:none;display:grid}.levels li{height:40px;font-family:var(--font-display);color:#ffffffbf;background:#ffffff29;border:2px solid #ffffff2e;border-radius:12px;place-items:center;font-size:13px;font-weight:700;display:grid}.levels li.current{color:var(--edge);background:#fff;border-color:#fff;box-shadow:0 3px #00000026}.progress{flex-direction:column;gap:6px;display:flex}.progress-row{opacity:.9;justify-content:space-between;font-size:13px;font-weight:800;display:flex}.progress-bar{border-radius:var(--radius-pill);background:#00000029;height:12px;overflow:hidden}.progress-bar span{border-radius:inherit;background:#fff;min-width:12px;height:100%;display:block}.lang-foot{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.chip{border-radius:var(--radius-pill);background:#fff3;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:800;display:inline-flex}.lang-card .btn{--btn-bg:#fff;--btn-fg:var(--edge);--btn-edge:#0003;min-height:44px;padding:10px 18px}.toast{z-index:50;left:calc(var(--gutter) + env(safe-area-inset-left));right:calc(var(--gutter) + env(safe-area-inset-right));bottom:calc(var(--space-4) + env(safe-area-inset-bottom));align-items:center;gap:var(--space-3);background:var(--surface);max-width:520px;color:var(--text);border:2px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:toast-in .4s var(--ease-bounce);margin:0 auto;padding:12px 12px 12px 14px;display:flex;position:fixed}@keyframes toast-in{0%{opacity:0;transform:translateY(24px)}}.toast-icon{color:#fff;background:linear-gradient(135deg, var(--primary), var(--en-1));border-radius:12px;flex:none;place-items:center;width:40px;height:40px;display:grid}.toast-icon.sun{color:#2a1a00;background:linear-gradient(135deg, var(--sun), var(--es-1))}.toast-icon svg{width:22px;height:22px}.toast-text{flex:1;min-width:0;font-size:14px;font-weight:600;line-height:1.3}.toast-text b{font-size:15px;font-weight:800;display:block}@media (width<=479px){.toast{flex-wrap:wrap}.toast>.btn{flex:1 0 100%;order:1}}.toast .close{width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:none;place-items:center;padding:0;display:grid}.toast .close:hover{background:var(--surface-2);color:var(--text)}.toast .close svg{width:18px;height:18px}.lang-card.fr{--c1:var(--fr-1);--c2:var(--fr-2);--edge:var(--fr-strong)}.lang-card:nth-child(3){animation-delay:.16s}.lang-en{--c1:var(--en-1);--c2:var(--en-2);--edge:var(--en-strong)}.lang-es{--c1:var(--es-1);--c2:var(--es-2);--edge:var(--es-strong)}.flag.small{border-width:2px;border-radius:14px;width:44px;height:44px}.splash.inline{min-height:40vh}.empty-state{align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);text-align:center;color:var(--muted);flex-direction:column;font-weight:700;display:flex}.levels li.passed{color:#fff;background:#fff6}.btn.danger{--btn-bg:var(--error);--btn-fg:#fff;--btn-edge:color-mix(in srgb, var(--error) 70%, #000)}.btn svg{flex:none;width:20px;height:20px}a.btn:hover{text-decoration:none}.status-mark{border:3px solid var(--border);background:var(--surface);color:#fff;border-radius:50%;flex:none;place-items:center;width:30px;height:30px;display:grid}.status-mark svg{stroke-width:3.2px;width:16px;height:16px}.status-mark.in_progress{border-color:var(--sun);background:conic-gradient(var(--sun) 0 50%, var(--surface) 50% 100%)}.status-mark.learned,.status-mark.known{border-color:var(--success);background:var(--success)}.status-mark.skipped{border-color:var(--muted);background:var(--muted)}.continue-card{align-items:center;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);color:#fff;background:linear-gradient(135deg, var(--c1,var(--primary)), var(--c2,var(--en-2)));box-shadow:0 5px 0 var(--edge,var(--primary-strong)), var(--shadow);animation:pop-in .4s var(--ease-bounce);margin-bottom:5px;text-decoration:none;display:flex}.continue-card:hover{filter:brightness(1.05);text-decoration:none}.continue-icon{width:48px;height:48px;color:var(--edge,var(--primary));background:#fff;border-radius:16px;flex:none;place-items:center;display:grid}.continue-icon svg{fill:currentColor;width:24px;height:24px}.continue-text{flex-direction:column;min-width:0;display:flex}.continue-text small{opacity:.85;font-size:13px;font-weight:800}.continue-text b{font-family:var(--font-display);font-size:17px;line-height:1.2}.level-section{gap:var(--space-3);flex-direction:column;display:flex}.level-head{align-items:center;gap:var(--space-3);display:flex}.level-head h2{font-size:20px}.level-head .muted{font-size:14px;font-weight:700}.level-badge{width:52px;height:52px;font-family:var(--font-display);color:#fff;background:linear-gradient(135deg, var(--c1,var(--primary)), var(--c2,var(--en-2)));box-shadow:0 4px 0 var(--edge,var(--primary-strong));border-radius:16px;flex:none;place-items:center;font-size:18px;font-weight:800;display:grid}.unit-card{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);flex-direction:column;display:flex}.unit-head{gap:var(--space-3);align-items:flex-start;display:flex}.unit-head h3{font-size:16px}.unit-head .muted{font-size:13px;font-weight:600}.unit-num{width:32px;height:32px;font-family:var(--font-display);color:var(--edge,var(--primary));background:color-mix(in srgb, var(--c1,var(--primary)) 14%, transparent);border-radius:10px;flex:none;place-items:center;font-weight:800;display:grid}.topic-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.topic-row{align-items:center;gap:var(--space-3);color:var(--text);background:var(--surface-2);border:2px solid #0000;border-radius:14px;padding:10px 12px;text-decoration:none;transition:transform .1s,border-color .15s;display:flex}.topic-row:hover{border-color:var(--border);text-decoration:none}.topic-row:active{transform:scale(.99)}.topic-row.next{border-color:var(--c1,var(--primary));background:color-mix(in srgb, var(--c1,var(--primary)) 10%, var(--surface))}.topic-row.skipped .topic-row-text b{color:var(--muted)}.topic-row-text{flex-direction:column;min-width:0;display:flex}.topic-row-text b{font-size:15px;font-weight:800;line-height:1.25}.topic-row-text small{color:var(--muted);font-size:12px;font-weight:700}.topic-hero{gap:var(--space-3);padding:var(--space-5);border-radius:var(--radius-lg);color:#fff;background:linear-gradient(140deg, var(--c1,var(--primary)), var(--c2,var(--en-2)));box-shadow:0 6px 0 var(--edge,var(--primary-strong)), var(--shadow-lg);flex-direction:column;margin-bottom:6px;display:flex}.topic-hero h1{font-size:24px}.topic-hero>p{opacity:.92;font-weight:700}.topic-hero-status{align-items:center;gap:var(--space-2);font-size:13px;font-weight:800;display:flex}.topic-hero .status-mark{border-color:#ffffffb3;width:24px;height:24px}.topic-actions{gap:var(--space-3);margin-top:var(--space-2);flex-direction:column;display:flex}.topic-hero .btn:not(.sun):not(.ghost){--btn-bg:#ffffff2e;--btn-fg:#fff;--btn-edge:#00000026}.topic-hero .btn.ghost{--btn-fg:#fff;opacity:.9}.topic-hero .error{color:#fff;background:#0003}.section-title h2{align-items:center;gap:var(--space-2);display:flex}.section-title h2 svg{width:20px;height:20px;color:var(--primary)}.theory{gap:var(--space-3);flex-direction:column;display:flex}.theory .section-title{margin-bottom:0}.theory-card{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.theory-card h3{font-size:16px}.md{gap:var(--space-2);flex-direction:column;display:flex}.md ul{margin:0;padding-left:20px}.md li+li{margin-top:4px}.md strong{color:var(--primary);font-weight:900}.table-wrap{margin:0 calc(-1 * var(--space-2));overflow-x:auto}table{border-collapse:separate;border-spacing:0;width:100%;font-size:15px}th,td{text-align:left;vertical-align:top;padding:9px 10px}th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);border-bottom:2px solid var(--border);font-size:12px;font-weight:900}td{border-bottom:1px solid var(--border)}tbody tr:last-child td{border-bottom:0}td:nth-child(2){font-weight:800}.note{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--sun) 16%, transparent);padding:10px 12px;font-size:14px;font-weight:600}.examples,.mistakes,.word-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.examples li{gap:var(--space-3);align-items:flex-start;display:flex}.examples li span{flex-direction:column;display:flex}.examples small,.mistakes small{color:var(--muted);font-size:14px;font-weight:600}.speak-btn{cursor:pointer;width:36px;height:36px;color:var(--primary);background:var(--primary-soft);border:0;border-radius:12px;flex:none;place-items:center;padding:0;display:grid}.speak-btn svg{width:20px;height:20px}.mistakes li{flex-direction:column;gap:2px;display:flex}.mistakes .wrong{color:var(--error);font-weight:700;text-decoration:line-through;text-decoration-thickness:2px}.mistakes .right{color:var(--success);font-weight:800}.word-list{gap:6px}.word-list li{align-items:center;gap:var(--space-3);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:14px;grid-template-columns:auto minmax(0,1fr) minmax(0,1.2fr);padding:8px 10px;display:grid}.word-text b{font-weight:800}.gender{color:var(--muted);background:var(--surface-2);border-radius:6px;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:800}.word-tr{color:var(--muted);font-size:14px;font-weight:600}.topic-fab .fab{z-index:40;bottom:calc(var(--space-4) + env(safe-area-inset-bottom));color:#fff;background:linear-gradient(135deg, var(--c1,var(--primary)), var(--c2,var(--en-2)));width:54px;height:54px;box-shadow:0 4px 0 var(--edge,var(--primary-strong)), var(--shadow-lg);border-radius:50%;place-items:center;transition:transform 80ms;display:grid;position:fixed}.topic-fab .fab:active{transform:translateY(3px)}.topic-fab .fab svg{width:26px;height:26px}.topic-fab .prev{left:max(var(--gutter), calc(50% - 490px + var(--gutter)), env(safe-area-inset-left))}.topic-fab .next{right:max(var(--gutter), calc(50% - 490px + var(--gutter)), env(safe-area-inset-right))}.topic-fab .next svg{transform:scaleX(-1)}.page:has(.topic-fab){padding-bottom:calc(96px + env(safe-area-inset-bottom))}.lesson{max-width:640px;min-height:100dvh;padding:calc(var(--space-3) + env(safe-area-inset-top)) calc(var(--gutter) + env(safe-area-inset-right)) 0 calc(var(--gutter) + env(safe-area-inset-left));flex-direction:column;margin:0 auto;display:flex}.lesson-top{align-items:center;gap:var(--space-3);padding-bottom:var(--space-4);display:flex}.lesson-progress{border-radius:var(--radius-pill);background:var(--surface-2);flex:1;height:16px;overflow:hidden}.lesson-progress span{border-radius:inherit;background:linear-gradient(90deg, var(--c1,var(--primary)), var(--c2,var(--en-2)));height:100%;transition:width .35s var(--ease-bounce);display:block}.lesson-body{gap:var(--space-4);padding-bottom:var(--space-5);flex-direction:column;flex:1;animation:.3s ease-out pop-in;display:flex}.ex-kind{align-items:center;gap:var(--space-2);font-family:var(--font-display);flex-wrap:wrap;font-size:18px;font-weight:700;display:flex}.retry-chip{border-radius:var(--radius-pill);font-family:var(--font-body);color:#2a1a00;background:var(--sun);padding:3px 10px;font-size:12px;font-weight:900}.ex-prompt{font-size:20px;font-weight:800;line-height:1.5}.ex-prompt.strike{color:var(--error);font-size:18px;text-decoration:line-through;text-decoration-thickness:2px}.ex-hint{color:var(--muted);font-size:14px;font-weight:600}input.gap-input{text-align:center;background:var(--primary-soft);border-width:0 0 3px;border-radius:10px;width:auto;min-width:4ch;margin:0 4px;padding:4px 8px;font-size:20px;font-weight:800;display:inline-block}.answer-area{width:100%;font:inherit;border:2px solid var(--border);background:var(--surface);color:var(--text);resize:none;border-radius:16px;padding:14px 16px;font-size:18px;font-weight:700}.answer-area:focus{border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--primary) 20%, transparent);outline:none}.accent-bar{flex-wrap:wrap;gap:6px;display:flex}.accent-bar button{border:2px solid var(--border);min-width:40px;height:40px;font:inherit;color:var(--text);background:var(--surface);box-shadow:0 3px 0 var(--border);cursor:pointer;border-radius:12px;font-size:18px;font-weight:800}.accent-bar button:active{box-shadow:0 1px 0 var(--border);transform:translateY(2px)}.options{gap:var(--space-3);flex-direction:column;display:flex}.option,.tile,.match-item{font:inherit;color:var(--text);background:var(--surface);border:2px solid var(--border);box-shadow:0 4px 0 var(--border);cursor:pointer;font-weight:800;transition:transform 80ms,box-shadow 80ms,border-color .15s,background .15s}.option:active:not(:disabled),.tile:active:not(:disabled),.match-item:active:not(:disabled){box-shadow:0 1px 0 var(--border);transform:translateY(3px)}.option{text-align:left;border-radius:16px;min-height:56px;padding:12px 16px;font-size:17px}.option.picked,.match-item.active{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 4px 0 var(--primary)}.option.right,.match-item.right{border-color:var(--success);background:color-mix(in srgb, var(--success) 14%, var(--surface));box-shadow:0 4px 0 var(--success)}.option.wrong,.match-item.wrong{border-color:var(--error);background:var(--error-soft);box-shadow:0 4px 0 var(--error)}.option:disabled,.match-item:disabled{cursor:default}.build-line{border-top:2px solid var(--border);border-bottom:2px solid var(--border);flex-wrap:wrap;align-content:flex-start;gap:8px;min-height:112px;padding:10px 0;display:flex}.tile-bank{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.tile{border-radius:12px;padding:9px 14px;font-size:17px}.tile.used{color:#0000;background:var(--surface-2);box-shadow:none}.match{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.match-col{gap:var(--space-2);flex-direction:column;display:flex}.match-item{border-radius:14px;min-height:52px;padding:8px 10px;font-size:15px}.match-item.paired{--pair:var(--primary);border-color:var(--pair);background:color-mix(in srgb, var(--pair) 14%, var(--surface));box-shadow:0 4px 0 var(--pair)}.match-item.p1{--pair:#ff6a2b}.match-item.p2{--pair:#17b26a}.match-item.p3{--pair:#3d6bff}.match-item.p4{--pair:#e0a100}.match-item.p5{--pair:#d6338a}.match-item.paired.right{--pair:var(--success)}.match-item.paired.wrong{--pair:var(--error)}.listen-row{align-items:center;gap:var(--space-3);display:flex}.listen-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg, var(--c1,var(--primary)), var(--c2,var(--en-2)));width:72px;height:72px;box-shadow:0 5px 0 var(--edge,var(--primary-strong));border:0;border-radius:22px;flex:none;place-items:center;padding:0;display:grid}.listen-btn:active{box-shadow:0 2px 0 var(--edge,var(--primary-strong));transform:translateY(3px)}.listen-btn svg{width:34px;height:34px}.shadow-card{align-items:center;gap:var(--space-4);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);display:flex}.shadow-text{font-size:20px;font-weight:800}.lesson-foot{gap:var(--space-3);margin:0 calc(-1 * var(--gutter));padding:var(--space-4) var(--gutter) calc(var(--space-4) + env(safe-area-inset-bottom));background:var(--bg);border-top:2px solid var(--border);flex-direction:column;display:flex;position:sticky;bottom:0}.lesson-foot.ok{background:color-mix(in srgb, var(--success) 14%, var(--bg));border-color:#0000}.lesson-foot.almost{background:color-mix(in srgb, var(--sun) 20%, var(--bg));border-color:#0000}.lesson-foot.wrong{background:var(--error-soft);border-color:#0000}.feedback{animation:pop-in .25s var(--ease-bounce);flex-direction:column;gap:4px;display:flex}.feedback b{font-family:var(--font-display);align-items:center;gap:6px;font-size:18px;display:flex}.feedback b svg{stroke-width:3.2px;width:22px;height:22px}.lesson-foot.ok .feedback b{color:var(--success)}.lesson-foot.almost .feedback b{color:var(--sun-strong)}.lesson-foot.wrong .feedback b{color:var(--error)}.expected{font-weight:900}.explain{color:var(--muted);font-size:14px;font-weight:600}.lesson-done{align-items:center;gap:var(--space-4);padding:var(--space-6) 0;text-align:center;animation:pop-in .4s var(--ease-bounce);flex-direction:column;flex:1;display:flex}.done-badge{color:#2a1a00;background:linear-gradient(135deg, var(--sun), var(--es-1));width:96px;height:96px;box-shadow:0 6px 0 var(--sun-strong), var(--shadow-lg);border-radius:32px;place-items:center;animation:3s ease-in-out infinite float;display:grid}.done-badge svg{width:52px;height:52px}.done-score{color:var(--muted);font-size:17px;font-weight:700}.done-score b{font-family:var(--font-display);color:var(--text);font-size:28px}.done-mistakes{text-align:left;padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);align-self:stretch}.done-mistakes h2{margin-bottom:var(--space-2);font-size:16px}.done-mistakes ul{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.done-mistakes li{flex-direction:column;font-size:14px;font-weight:600;display:flex}.done-mistakes li b{color:var(--success)}.done-actions{align-self:stretch;gap:var(--space-3);flex-direction:column;display:flex}.ex-prompt-row{align-items:flex-start;gap:var(--space-2);display:flex}.ex-prompt-row .ex-prompt{flex:1}.listen-pair{flex:none;gap:4px;display:inline-flex}.speak-btn.slow{color:var(--muted);background:var(--surface-2)}.feedback-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.feedback .said{font-weight:700}.lang-fr{--c1:var(--fr-1);--c2:var(--fr-2);--edge:var(--fr-strong)}.accept-btn{margin-top:var(--space-2)}.vocab-entry{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius);color:var(--text);background:var(--surface);box-shadow:var(--shadow);text-decoration:none;display:flex}.vocab-entry:hover{text-decoration:none}.vocab-entry .continue-text small{color:var(--muted);opacity:1}.vocab-entry .continue-text b{font-size:16px}.vocab-entry-icon{width:44px;height:44px;color:var(--edge,var(--primary));background:color-mix(in srgb, var(--c1,var(--primary)) 14%, transparent);border-radius:14px;flex:none;place-items:center;display:grid}.vocab-entry-icon svg{width:22px;height:22px}.vocab-stats{gap:var(--space-3);grid-template-columns:repeat(3,1fr);display:grid}.vocab-stats div{padding:var(--space-3) var(--space-2);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);flex-direction:column;align-items:center;display:flex}.vocab-stats b{font-family:var(--font-display);font-size:22px}.vocab-stats span{color:var(--muted);font-size:12px;font-weight:800}.all-done{padding:var(--space-3) var(--space-4);border-radius:var(--radius);text-align:center;background:color-mix(in srgb, var(--success) 14%, var(--surface));font-weight:800}.vocab-actions,.form-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.vocab-actions .btn{flex:1}.card-form{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);flex-direction:column;animation:.25s ease-out pop-in;display:flex}.small-text{font-size:14px}.small-text code{background:var(--surface-2);border-radius:6px;padding:1px 6px;font-weight:800}.ok-note{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--success) 14%, transparent);padding:10px 14px;font-size:14px;font-weight:700}.ok-note ul{color:var(--muted);margin:6px 0 0;padding-left:18px;font-weight:600}.file-btn{color:var(--primary);background:var(--primary-soft);cursor:pointer;border-radius:12px;align-self:flex-start;padding:8px 14px;font-size:14px;font-weight:800;position:relative}.file-btn input{opacity:0;cursor:pointer;position:absolute;inset:0}.vocab-list-section{gap:var(--space-3);flex-direction:column;display:flex}.vocab-filters{gap:var(--space-2);flex-direction:column;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip-btn{border:2px solid var(--border);border-radius:var(--radius-pill);font:inherit;color:var(--muted);background:var(--surface);cursor:pointer;padding:7px 14px;font-size:14px;font-weight:800}.chip-btn.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.vocab-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.vocab-row{align-items:flex-start;gap:var(--space-3);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:14px;padding:10px 12px;display:flex}.vocab-row.known{opacity:.65}.vocab-text{flex-direction:column;flex:1;min-width:0;display:flex}.vocab-text b{overflow-wrap:anywhere;font-weight:800}.vocab-text span{color:var(--muted);font-size:14px;font-weight:600}.vocab-example{color:var(--muted);font-size:13px;font-style:italic}.vocab-status{color:var(--primary);margin-top:2px;font-size:12px;font-weight:800}.vocab-row-actions{gap:4px;display:flex}.mini-btn{border:2px solid var(--border);width:34px;height:34px;color:var(--muted);background:var(--surface);cursor:pointer;border-radius:10px;place-items:center;padding:0;display:grid}.mini-btn svg{width:16px;height:16px}.mini-btn.on{border-color:var(--success);color:#fff;background:var(--success)}.mini-btn.danger:hover{border-color:var(--error);color:var(--error)}.left-count{min-width:28px;font-family:var(--font-display);text-align:right;color:var(--muted);font-weight:800}.flashcard-body{justify-content:center}.flashcard{align-items:center;gap:var(--space-4);padding:var(--space-6) var(--space-4);border-radius:var(--radius-lg);text-align:center;background:var(--surface);box-shadow:var(--shadow-lg);border-top:6px solid var(--c1,var(--primary));flex-direction:column;display:flex}.fc-word{justify-content:center;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.fc-word b{font-family:var(--font-display);overflow-wrap:anywhere;font-size:30px;line-height:1.2}.fc-prompt{font-family:var(--font-display);font-size:26px;font-weight:700}.fc-translation{color:var(--muted);font-size:20px;font-weight:800;animation:.25s ease-out pop-in}.fc-example{color:var(--muted);font-size:15px;font-style:italic;font-weight:600}.fc-form{align-self:stretch}.fc-input{text-align:center;font-size:20px;font-weight:800}.fc-input.correct{border-color:var(--success)}.fc-input.almost{border-color:var(--sun)}.fc-input.wrong{border-color:var(--error);text-decoration:line-through}.fc-verdict{animation:pop-in .25s var(--ease-bounce);flex-direction:column;align-items:center;gap:4px;display:flex}.fc-verdict>b{align-items:center;gap:6px;font-size:15px;display:flex}.fc-verdict>b svg{stroke-width:3.2px;width:20px;height:20px}.fc-verdict.correct>b{color:var(--success)}.fc-verdict.almost>b{color:var(--sun-strong)}.fc-verdict.wrong>b{color:var(--error)}.know-btn{align-self:center}.form-row .btn.block{flex:1;width:auto}.grades{gap:var(--space-2);grid-template-columns:repeat(4,1fr);display:grid}.grade{--g:var(--muted);border:2px solid var(--g);font:inherit;color:var(--g);background:var(--surface);box-shadow:0 4px 0 var(--g);cursor:pointer;border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;transition:transform 80ms,box-shadow 80ms;display:flex}.grade:active:not(:disabled){box-shadow:0 1px 0 var(--g);transform:translateY(3px)}.grade b{font-size:14px;font-weight:900}.grade small{color:var(--muted);font-size:12px;font-weight:700}.grade.g1{--g:var(--error)}.grade.g2{--g:var(--sun-strong)}.grade.g3{--g:var(--success)}.grade.g4{--g:var(--primary)}.grade.suggested{color:#fff;background:var(--g)}.grade.suggested small{color:#ffffffd9}.dict-finder{gap:var(--space-2);flex-direction:column;display:flex}.dict-input-row input{padding:14px 16px;font-size:18px}.accent-bar.compact button{min-width:34px;height:34px;font-size:16px}.dict-results{gap:var(--space-2);flex-direction:column;display:flex}.dict-entry{gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.dict-entry-head{align-items:center;gap:var(--space-3);display:flex}.dict-word{flex-direction:column;flex:1;min-width:0;display:flex}.dict-word b{overflow-wrap:anywhere;font-size:18px;font-weight:900}.dict-meta{color:var(--muted);font-size:12px;font-weight:700}.mini-btn.add{width:40px;height:40px;color:var(--primary);border-color:var(--primary);font-size:22px;font-weight:900}.dict-senses{margin:0;padding-left:22px;font-weight:600}.dict-senses li+li{margin-top:2px}.dict-example{align-items:flex-start;gap:var(--space-2);font-size:14px;display:flex}.dict-example small{color:var(--muted);font-weight:600}.speak-btn.small{border-radius:9px;width:28px;height:28px}.speak-btn.small svg{width:16px;height:16px}.dict-credit{color:var(--muted);text-align:right;font-size:11px;font-weight:700}[data-tap-lang]{-webkit-tap-highlight-color:transparent}.tap-sheet{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));z-index:60;background:var(--surface);width:min(560px,100vw - 24px);max-height:45vh;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:12px 14px;animation:.16s ease-out tap-in;position:fixed;overflow-y:auto;transform:translate(-50%)}@keyframes tap-in{0%{opacity:0;transform:translate(-50%,12px)}}.tap-head{align-items:center;gap:6px;display:flex}.tap-text{overflow-wrap:anywhere;flex:1;min-width:0;font-size:1.15rem}.tap-entry{border-top:1px solid var(--border);margin-top:8px;padding-top:8px}.tap-entry-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.tap-senses{margin:4px 0 0}.tap-sheet .ok-note{margin:8px 0 0}.tap-add{border:2px solid var(--primary);min-height:36px;color:var(--primary);background:var(--surface);font:inherit;white-space:nowrap;cursor:pointer;border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:6px 12px;font-size:14px;font-weight:800;display:inline-flex}.tap-add.on{border-color:var(--success);color:var(--success);cursor:default}.tap-add svg{width:16px;height:16px}.exam-intro{gap:var(--space-4)}.exam-rules{padding:var(--space-4) var(--space-4) var(--space-4) 34px;border-radius:var(--radius);text-align:left;background:var(--surface);box-shadow:var(--shadow-sm);margin:0;font-weight:600}.exam-rules li+li{margin-top:var(--space-2)}.exam-section-chip{border-radius:var(--radius-pill);color:var(--edge,var(--primary));background:color-mix(in srgb, var(--c1,var(--primary)) 12%, transparent);align-self:flex-start;padding:4px 12px;font-size:13px;font-weight:800}.exam-section-chip span{color:var(--muted)}.answer-area.writing{font-size:17px;font-weight:600;line-height:1.5}.word-counter{margin-top:calc(-1 * var(--space-2));color:var(--muted);font-size:13px;font-weight:800}.word-counter.ok{color:var(--success)}.unit-exam-btn{justify-content:center;align-items:center;gap:var(--space-2);border:2px dashed color-mix(in srgb, var(--c1,var(--primary)) 50%, var(--border));color:var(--edge,var(--primary));border-radius:14px;padding:10px;font-size:14px;font-weight:800;text-decoration:none;display:flex}.unit-exam-btn:hover{background:color-mix(in srgb, var(--c1,var(--primary)) 8%, transparent);text-decoration:none}.unit-exam-btn svg{width:18px;height:18px}.exam-history ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.exam-history a{align-items:center;gap:var(--space-3);color:var(--text);background:var(--surface);box-shadow:var(--shadow-sm);border-left:5px solid var(--error);border-radius:14px;grid-template-columns:auto 1fr auto;padding:10px 14px;text-decoration:none;display:grid}.exam-history a.passed{border-left-color:var(--success)}.exam-history a b{font-family:var(--font-display)}.exam-history a span{color:var(--muted);font-weight:700}.exam-history a small{color:var(--muted);font-size:12px;font-weight:700}.exam-hero{align-items:center;gap:var(--space-2);padding:var(--space-5) var(--space-4);border-radius:var(--radius-lg);text-align:center;color:#fff;box-shadow:var(--shadow-lg);background:linear-gradient(140deg,#8a90ad,#5d6383);flex-direction:column;display:flex}.exam-hero.passed{background:linear-gradient(140deg, var(--c1,var(--primary)), var(--c2,var(--en-2)));box-shadow:0 6px 0 var(--edge,var(--primary-strong)), var(--shadow-lg);margin-bottom:6px}.exam-hero .done-badge{border-radius:24px;width:72px;height:72px}.exam-hero .done-badge svg{width:40px;height:40px}.exam-hero:not(.passed) .done-badge{box-shadow:none;color:#fff;background:#ffffff40;animation:none}.exam-hero-title{opacity:.85;font-weight:800}.exam-score b{font-family:var(--font-display);font-size:44px;line-height:1}.exam-rule{opacity:.85;font-size:13px;font-weight:700}.exam-sections{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);flex-direction:column;display:flex}.exam-section .progress-row,.criterion .progress-row{opacity:1}.section-bar{border-radius:var(--radius-pill);background:var(--surface-2);height:12px;position:relative;overflow:visible}.section-bar span{border-radius:inherit;background:var(--success);height:100%;display:block}.exam-section.failed .section-bar span{background:var(--error)}.section-bar i{background:var(--text);opacity:.4;border-radius:2px;width:2px;position:absolute;top:-3px;bottom:-3px}.status-changes{padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:color-mix(in srgb, var(--success) 14%, var(--surface));flex-direction:column;gap:6px;font-weight:700;display:flex}.status-changes p{align-items:center;gap:var(--space-2);display:flex}.status-changes svg{width:18px;height:18px;color:var(--success);stroke-width:3px;flex:none}.exam-review{gap:var(--space-3);flex-direction:column;display:flex}.review-card{gap:var(--space-2);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);border-left:5px solid var(--error);flex-direction:column;display:flex}.review-card.correct{border-left-color:var(--success)}.review-card.almost{border-left-color:var(--sun)}.review-card header{align-items:center;gap:var(--space-2);display:flex}.review-n{background:var(--surface-2);border-radius:8px;place-items:center;width:26px;height:26px;font-size:13px;font-weight:900;display:grid}.review-kind{color:var(--muted);flex:1;font-size:13px;font-weight:800}.review-score{font-family:var(--font-display);font-weight:800}.review-prompt{font-weight:800}.review-given{color:var(--muted);font-weight:600}.review-given span{color:var(--text)}.review-expected b{color:var(--success)}.review-pairs{margin:0;padding-left:18px;font-weight:700}.review-pairs .ok{color:var(--success)}.review-pairs .bad{color:var(--error)}.review-pairs small{color:var(--muted);font-weight:600}.writing-review{gap:var(--space-3);flex-direction:column;display:flex}.written-text{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--surface-2);font-size:16px;line-height:1.7}.written-text mark{color:inherit;background:color-mix(in srgb, var(--error) 22%, transparent);-webkit-text-decoration:underline wavy var(--error);text-decoration:underline wavy var(--error);text-underline-offset:4px;cursor:help;border-radius:4px;padding:1px 2px}.issue-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.issue-list li{flex-wrap:wrap;align-items:baseline;gap:4px;font-size:15px;display:flex}.issue-word{color:var(--error);font-weight:800;text-decoration:line-through}.issue-list b{color:var(--success)}.issue-list small{color:var(--muted);flex-basis:100%;font-size:13px;font-weight:600}.criteria{gap:var(--space-3);flex-direction:column;display:flex}.criterion .progress-row small{color:var(--muted);font-weight:600}.criterion>small{margin-top:4px;font-size:12px;font-weight:600;display:block}.missing{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--error-soft)}.missing ul{margin:4px 0 0;padding-left:18px;font-weight:600}.model-answer{align-items:flex-start;gap:var(--space-2);flex-direction:column;display:flex}.model-answer p{padding:var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--success) 10%, var(--surface));font-style:italic;font-weight:600}.self-check{gap:var(--space-2);flex-direction:column;display:flex}.self-check label{align-items:center;gap:var(--space-2);font-weight:700;display:flex}.self-check input{width:20px;height:20px;accent-color:var(--success)}.criterion>small.criterion-hint{color:var(--primary-strong);margin-top:2px;display:block}.slow-btn{margin-top:calc(-1 * var(--space-2));align-self:flex-start}.record-controls{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);flex-wrap:wrap;display:flex}.record-info{flex:1;min-width:0;font-weight:700}.record-controls .error{flex-basis:100%}.mic-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg, var(--es-1), var(--flame));width:64px;height:64px;box-shadow:0 4px 0 var(--es-strong);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.mic-btn svg{width:30px;height:30px}.mic-btn:active{box-shadow:0 1px 0 var(--es-strong);transform:translateY(3px)}.mic-btn.recording{background:var(--error);animation:1.2s ease-in-out infinite pulse}.mic-btn:disabled{opacity:.6}@keyframes pulse{50%{box-shadow:0 4px 0 var(--es-strong), 0 0 0 10px color-mix(in srgb, var(--error) 25%, transparent)}}.stop-square{background:#fff;border-radius:5px;width:22px;height:22px}.rec-timer{color:var(--error);font-variant-numeric:tabular-nums}.shadow-result{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);animation:pop-in .3s var(--ease-bounce);flex-direction:column;display:flex}.score-row{align-items:center;gap:var(--space-4);display:flex}.score-parts{color:var(--muted);flex-direction:column;gap:2px;font-weight:700;display:flex}.score-parts b{color:var(--text)}.score-ring{flex:none;width:72px;height:72px;position:relative}.score-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.score-ring circle{fill:none;stroke-width:7px;stroke-linecap:round}.ring-bg{stroke:var(--surface-2)}.score-ring b{font-family:var(--font-display);place-items:center;font-size:20px;display:grid;position:absolute;inset:0}.tokens{flex-wrap:wrap;gap:6px;display:flex}.token{background:color-mix(in srgb, var(--success) 16%, var(--surface));color:var(--success);border-radius:10px;flex-direction:column;align-items:center;padding:4px 10px;font-weight:800;display:inline-flex}.token.wrong{background:var(--error-soft);color:var(--error)}.token.wrong small{color:var(--muted);font-size:11px;font-weight:700;text-decoration:line-through}.token.missing{background:var(--surface-2);color:var(--muted);text-decoration:line-through}.token.extra{background:color-mix(in srgb, var(--sun) 20%, var(--surface));color:var(--sun-strong)}.intonation{padding:var(--space-2);border-radius:var(--radius-sm);background:var(--surface-2);margin:0}.intonation svg{width:100%;height:110px;display:block}.intonation path{fill:none;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.intonation .ref-line{stroke:var(--muted);stroke-dasharray:6 5;opacity:.8}.intonation .user-line{stroke:var(--primary)}.intonation .axis{stroke:var(--border);stroke-width:1px;vector-effect:non-scaling-stroke}.intonation figcaption{gap:var(--space-3);flex-wrap:wrap;margin-top:4px;font-size:12px;font-weight:800;display:flex}.legend:before{content:"";vertical-align:middle;border-radius:2px;width:16px;height:3px;margin-right:6px;display:inline-block}.legend.ref:before{background:var(--muted)}.legend.user:before{background:var(--primary)}.transcript-box{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.transcript-box p{font-size:17px;font-weight:700}.live-transcript{color:var(--muted);flex-basis:100%;font-size:15px;font-style:italic;font-weight:700}.trainer-lead{margin:0 0 var(--space-4);font-size:15px}.trainer-modes{gap:var(--space-3);margin-bottom:var(--space-5);display:grid}.vocab-entry.disabled{opacity:.6;pointer-events:none}.trainer-topics h2,.trainer-skills h2{margin:0 0 var(--space-3);font-family:var(--font-display);font-size:18px}.trainer-topics .topic-row-text small{overflow-wrap:anywhere}.attribution{margin:var(--space-5) 0 var(--space-2);color:var(--muted);font-size:13px}.attribution.small{margin:var(--space-2) 0 0;font-size:12px}.attribution a{color:inherit;text-decoration:underline}.trainer-top{justify-content:space-between}.trainer-heading{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;margin:0;font-weight:800;overflow:hidden}.trainer-score{align-items:center;gap:var(--space-2);border-radius:var(--radius-pill);background:var(--surface-2);font-variant-numeric:tabular-nums;padding:4px 12px;font-weight:800;display:inline-flex}.trainer-streak{color:var(--flame,var(--primary));align-items:center;gap:2px;display:inline-flex}.trainer-streak svg{width:16px;height:16px}.ex-translation{margin:calc(var(--space-2) * -1) 0 var(--space-3);color:var(--muted);font-size:15px;font-weight:600}.judge-text{margin:0 0 var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--surface-2);font-size:20px;font-weight:700;line-height:1.35}.judge-options{grid-template-columns:1fr 1fr}.vocab-row:has(>.word-examples){flex-wrap:wrap}.word-examples{min-width:0;margin-top:calc(var(--space-3) * -1);flex:1 0 100%;padding-left:46px}.examples-toggle{color:var(--primary-text,var(--primary));font:inherit;cursor:pointer;background:0 0;border:0;padding:2px 0;font-size:13px;font-weight:700}.examples-panel{gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--surface-2);display:grid}.examples-list{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.examples-list li{align-items:flex-start;gap:var(--space-2);display:flex}.examples-list li>span{gap:2px;min-width:0;display:grid}.examples-list b{overflow-wrap:anywhere;font-weight:700}.examples-list small{color:var(--muted)}.examples-list mark{background:var(--primary-soft);color:inherit;border-radius:4px;padding:0 2px}.dialogue-level{border-radius:var(--radius-sm);background:var(--primary-soft);width:36px;height:36px;color:var(--primary-strong);flex:none;place-items:center;font-size:13px;font-weight:800;display:grid}.dialogue-head{flex:1;min-width:0;display:grid}.dialogue-head small{color:var(--muted)}.dialogue-situation{margin:0 0 var(--space-3);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--surface-2);font-size:15px}.chat{gap:var(--space-2);padding-bottom:var(--space-3);display:grid}.bubble{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);max-width:85%;box-shadow:var(--shadow-sm);padding:10px 14px}.bubble p{overflow-wrap:anywhere;margin:0;font-size:17px}.bubble.bot{border-bottom-left-radius:6px;justify-self:start}.bubble.user{background:var(--primary);border-color:var(--primary);color:var(--primary-text);border-bottom-right-radius:6px;justify-self:end}.bubble.user.missed{background:var(--error-soft);border-color:var(--error);color:var(--text)}.bubble-tools{align-items:center;gap:var(--space-2);margin-top:4px;display:flex}.bubble-tr{color:var(--muted);margin-top:4px;display:block}.link-btn{color:var(--primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;font-weight:700}.dialogue-input{gap:var(--space-2);padding:var(--space-3) 0 calc(var(--space-3) + env(safe-area-inset-bottom));background:var(--bg);display:grid;position:sticky;bottom:0}.dialogue-task{margin:0;font-weight:700}.dialogue-hints{gap:var(--space-2);flex-wrap:wrap;display:flex}.dialogue-hints small{flex-basis:100%}.hint-chip{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;padding:6px 12px;font-size:15px}.dialogue-form{align-items:center;gap:var(--space-2);display:flex}.dialogue-form input{flex:1;min-width:0}.dialogue-form .mic-btn{width:48px;height:48px}.dialogue-form .mic-btn svg{width:22px;height:22px}
