:root{--brand:#7c5cff;--brand-ink:#4b32c3;--brand-soft:#efe9ff;--accent:#ffc857;--accent-ink:#b07c10;--success:#2fbf71;--success-soft:#e2f7ec;--danger:#ff5a5f;--danger-soft:#ffe7e8;--info:#3b6fe0;--gold:#f7b500;--bg:#f6f5fb;--surface:#fff;--surface-2:#f1eefb;--ink:#2b2540;--ink-2:#6b6580;--ink-3:#a39fb5;--line:#e7e3f3;--line-strong:#d8d2ec;--lang:var(--brand);--lang-soft:var(--brand-soft);--r-sm:8px;--r-md:14px;--r-lg:20px;--r-xl:28px;--r-pill:999px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--shadow-sm:0 2px 6px #2b254014;--shadow-md:0 8px 24px #2b25401a;--shadow-lg:0 18px 48px #2b254029;--shadow-press:0 4px 0 0 var(--brand-ink);--font:"Nunito", ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--t-xs:12px;--t-sm:14px;--t-md:16px;--t-lg:20px;--t-xl:26px;--t-2xl:34px;--t-3xl:46px;--ease-bounce:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-fast:.14s;--dur:.24s;--dur-slow:.42s}[data-lang=es]{--lang:#e4572e;--lang-soft:#fde7df}[data-lang=fr]{--lang:#3b6fe0;--lang-soft:#e3ecfd}[data-lang=de]{--lang:#e0a126;--lang-soft:#fbefd6}[data-lang=it]{--lang:#2e9e5b;--lang-soft:#def5e8}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);background:radial-gradient(1200px 600px at 100% -10%, #efe9ff 0%, transparent 60%), radial-gradient(900px 500px at -10% 110%, #e2f7ec 0%, transparent 55%), var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:800}p{margin:0}button{font-family:inherit}:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.col{flex-direction:column;display:flex}.row{align-items:center;display:flex}.gap-1{gap:var(--s-1)}.gap-2{gap:var(--s-2)}.gap-3{gap:var(--s-3)}.gap-4{gap:var(--s-4)}.gap-5{gap:var(--s-5)}.gap-6{gap:var(--s-6)}.center{justify-content:center;align-items:center}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.tcenter{text-align:center}.mono{font-variant-numeric:tabular-nums}.fade-in{animation:fadeIn var(--dur) var(--ease-out) both}.pop-in{animation:popIn var(--dur) var(--ease-bounce) both}.rise-in{animation:riseIn var(--dur-slow) var(--ease-out) both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes riseIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-5px)}40%,60%{transform:translate(5px)}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-strong);border:3px solid var(--bg);border-radius:999px}.btn{border-radius:var(--r-md);cursor:pointer;justify-content:center;align-items:center;gap:var(--s-2);transition:transform var(--dur-fast) var(--ease-bounce), filter var(--dur-fast), box-shadow var(--dur-fast);-webkit-user-select:none;user-select:none;white-space:nowrap;border:none;font-weight:800;display:inline-flex}.btn:active{transform:translateY(3px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{font-size:var(--t-sm);padding:6px 12px}.btn-md{font-size:var(--t-md);padding:11px 18px}.btn-lg{font-size:var(--t-lg);border-radius:var(--r-lg);padding:15px 26px}.btn-full{width:100%}.btn-primary{background:var(--brand);color:#fff;box-shadow:0 4px 0 var(--brand-ink)}.btn-primary:active{box-shadow:0 1px 0 var(--brand-ink)}.btn-lang{background:var(--lang);color:#fff;box-shadow:0 4px #0000002e}.btn-lang:active{box-shadow:0 1px #0000002e}.btn-success{background:var(--success);color:#fff;box-shadow:0 4px #1f9457}.btn-success:active{box-shadow:0 1px #1f9457}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 4px #d63a3f}.btn-soft{background:var(--surface-2);color:var(--ink);box-shadow:0 3px 0 var(--line-strong)}.btn-soft:active{box-shadow:0 1px 0 var(--line-strong)}.btn-ghost{color:var(--ink-2);background:0 0}.btn-ghost:hover{background:var(--surface-2)}.card{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-lg);padding:var(--s-5);box-shadow:var(--shadow-sm)}.pill{background:var(--lang-soft);color:var(--ink);font-weight:800;font-size:var(--t-xs);border-radius:var(--r-pill);align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.bar{background:var(--line);border-radius:999px;width:100%;overflow:hidden}.bar-fill{height:100%;transition:width .5s var(--ease-out);border-radius:999px}.ring{place-items:center;display:grid;position:relative}.ring-center{text-align:center;place-items:center;display:grid;position:absolute;inset:0}.avatar{color:#fff;border-radius:30%;flex:none;place-items:center;display:grid;box-shadow:inset 0 -3px #0000001f}.stat{align-items:center;gap:var(--s-3);display:flex}.stat-icon{font-size:22px}.stat-value{font-size:var(--t-lg);line-height:1}.stat-label{font-size:var(--t-xs);color:var(--ink-2);font-weight:700}.sheet-scrim{z-index:60;padding:var(--s-4);animation:fadeIn var(--dur) both;background:#1e183773;place-items:end center;display:grid;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:var(--r-xl);width:100%;max-width:520px;padding:var(--s-6);box-shadow:var(--shadow-lg);margin-bottom:84px}@media (width>=640px){.sheet-scrim{place-items:center}.sheet{margin-bottom:0}}.confetti{pointer-events:none;z-index:80;position:fixed;inset:0;overflow:hidden}.confetti span{width:9px;height:14px;animation:confettiFall 1.5s var(--ease-out) forwards;border-radius:2px;position:absolute;top:-10px}@keyframes confettiFall{to{opacity:0;transform:translateY(105vh)rotate(540deg)}}.pip{display:block}.pip-cheer{animation:1.2s ease-in-out infinite floaty}.pip-oops{animation:.5s shake}.shell{flex-direction:column;min-height:100%;display:flex}.topbar{z-index:30;justify-content:space-between;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1.5px solid var(--line);background:#ffffffd1;display:flex;position:sticky;top:0}.brand{cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:4px;display:flex}.brand-mark{filter:drop-shadow(0 2px 2px #00000026);font-size:26px}.brand-name{font-weight:900;font-size:var(--t-lg);color:var(--ink);letter-spacing:-.02em}.topbar-stats{align-items:center;gap:var(--s-2);display:flex}.langswitch{background:var(--surface-2);border-radius:var(--r-pill);gap:2px;padding:3px;display:flex}.flagbtn{border-radius:var(--r-pill);cursor:pointer;filter:grayscale(.7)opacity(.6);width:30px;height:28px;transition:var(--dur-fast);background:0 0;border:none;font-size:18px;line-height:1}.flagbtn:hover{filter:none}.flagbtn.on{filter:none;box-shadow:var(--shadow-sm);background:#fff;transform:scale(1.05)}.chip{font-weight:800;font-size:var(--t-sm);border-radius:var(--r-pill);background:var(--surface-2);white-space:nowrap;padding:5px 10px}.chip-streak{color:#e8590c;background:#fff0e6}.chip-xp{color:var(--brand-ink);background:var(--brand-soft)}.chip-league{background:0 0;padding:4px;font-size:18px}.me{cursor:pointer;background:0 0;border:none;padding:0}@media (width<=560px){.brand-name,.chip-xp{display:none}}.content{width:100%;max-width:880px;padding:var(--s-5) var(--s-4) 110px;flex:1;margin:0 auto}.content.immersive{max-width:720px;padding-bottom:var(--s-5)}.bottomnav{z-index:40;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1.5px solid var(--line);border-radius:var(--r-pill);box-shadow:var(--shadow-md);background:#ffffffeb;gap:2px;padding:6px;display:flex;position:fixed;bottom:14px;left:50%;transform:translate(-50%)}.navbtn{cursor:pointer;border-radius:var(--r-pill);color:var(--ink-3);transition:var(--dur-fast);background:0 0;border:none;flex-direction:column;align-items:center;gap:1px;padding:7px 12px;display:flex}@media (width<=480px){.navbtn{padding:7px 9px}.navlabel{font-size:9px}}.navicon{filter:grayscale(.5);transition:var(--dur-fast);font-size:20px}.navlabel{font-size:10px;font-weight:800}.navbtn.on{background:var(--lang-soft);color:var(--lang)}.navbtn.on .navicon{filter:none;transform:translateY(-1px)}.navbtn:hover:not(.on){background:var(--surface-2)}.lang-hint{z-index:20;font-size:var(--t-xs);color:var(--ink-3);pointer-events:none;opacity:.7;font-weight:800;position:fixed;bottom:10px;right:14px}@media (width<=700px){.lang-hint{display:none}}.gate{max-width:620px;padding:var(--s-6) var(--s-4) var(--s-8);margin:0 auto}.gate-hero{text-align:center;margin-bottom:var(--s-6);justify-items:center;gap:6px;display:grid}.gate-title{font-size:var(--t-3xl);letter-spacing:-.03em;background:linear-gradient(120deg, var(--lang), var(--brand));color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:900}.gate-sub{color:var(--ink-2);max-width:420px;font-weight:600}.gate-h2{font-size:var(--t-xl);margin-bottom:var(--s-4)}.profile-grid{gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.profile-tile{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-lg);padding:var(--s-5) var(--s-3);cursor:pointer;transition:var(--dur) var(--ease-bounce);justify-items:center;gap:8px;display:grid;position:relative}.profile-tile:hover{border-color:var(--lang);box-shadow:var(--shadow-md);transform:translateY(-3px)}.profile-tile strong{font-size:var(--t-md)}.profile-meta{font-size:var(--t-xs);color:var(--ink-2);font-weight:700}.profile-del{color:var(--ink-3);font-size:13px;position:absolute;top:8px;right:10px}.profile-del:hover{color:var(--danger)}.profile-tile.add{color:var(--ink-2);border-style:dashed}.add-circle{background:var(--surface-2);width:64px;height:64px;color:var(--ink-3);border-radius:50%;place-items:center;font-size:30px;display:grid}.field-label{font-weight:800;font-size:var(--t-sm);color:var(--ink-2);margin:var(--s-4) 0 6px;display:block}.text-input{border-radius:var(--r-md);border:2px solid var(--line-strong);width:100%;font-size:var(--t-md);background:var(--surface);padding:12px 14px;font-family:inherit;font-weight:700}.text-input:focus{border-color:var(--lang);outline:none}.picker{flex-wrap:wrap;gap:8px;display:flex}.pick{border-radius:var(--r-md);border:2px solid var(--line);background:var(--surface);cursor:pointer;width:44px;height:44px;transition:var(--dur-fast) var(--ease-bounce);place-items:center;font-size:22px;display:grid}.pick:hover{transform:scale(1.08)}.pick.on{border-color:var(--lang);background:var(--lang-soft);transform:scale(1.08)}.pick.swatch.on{border-color:var(--ink);box-shadow:inset 0 0 0 3px #fff}.lang-cards{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.lang-card{padding:var(--s-4);border:2px solid var(--line);border-radius:var(--r-md);background:var(--surface);cursor:pointer;transition:var(--dur-fast) var(--ease-bounce);justify-items:center;gap:2px;display:grid}.lang-card:hover{transform:translateY(-2px)}.lang-card.on{border-color:var(--lang);background:var(--lang-soft)}.lang-flag{font-size:30px}.lang-name{font-weight:800}.lang-hello{font-size:var(--t-xs);color:var(--lang);font-weight:800}.gate-foot{text-align:center;color:var(--ink-3);font-size:var(--t-xs);margin-top:var(--s-6);font-weight:600}.signin-foot{margin-top:var(--s-6);justify-items:center;gap:6px;display:grid}.signin-link{color:var(--lang);cursor:pointer;font-weight:800;font-size:var(--t-sm);background:0 0;border:none}.signin-link:hover{text-decoration:underline}.signin-card{margin-top:var(--s-5)}.migrate{margin-top:var(--s-5);border:2px dashed var(--line-strong);border-radius:var(--r-md);overflow:hidden}.migrate.open{border-color:var(--lang);background:var(--lang-soft);border-style:solid}.migrate-toggle{cursor:pointer;width:100%;padding:var(--s-3) var(--s-4);font-weight:800;font-size:var(--t-md);color:var(--ink);background:0 0;border:none;justify-content:space-between;align-items:center;font-family:inherit;display:flex}.migrate-chev{font-size:var(--t-lg);color:var(--lang)}.migrate-body{padding:0 var(--s-4) var(--s-4);gap:var(--s-3);flex-direction:column;display:flex}.migrate-body p{font-size:var(--t-sm)}.migrate-input-row{align-items:center;gap:var(--s-3);display:flex}.streak-input{text-align:center;max-width:120px}.streak-unit{color:var(--ink-2);font-weight:800}.migrate-note{font-size:var(--t-xs);font-weight:700}.active-challenges{gap:var(--s-3);flex-direction:column;display:flex}.chal-card{padding:var(--s-4);gap:var(--s-3);border-color:var(--lang);background:linear-gradient(180deg, var(--lang-soft), var(--surface) 60%);flex-direction:column;display:flex}.chal-title{font-size:var(--t-md)}.chal-x{color:var(--ink-3);cursor:pointer;background:0 0;border:none;font-size:14px}.chal-x:hover{color:var(--danger)}.chal-row{align-items:center;gap:var(--s-3);grid-template-columns:26px 56px 1fr 56px;display:grid}.chal-name{font-weight:800;font-size:var(--t-sm)}.chal-xp{text-align:right;font-weight:800;font-size:var(--t-sm)}.chal-remote{font-size:var(--t-xs);color:var(--ink-2);grid-column:span 2;font-weight:700}.chal-verdict{text-align:center;font-weight:800;font-size:var(--t-sm)}.chal-label{font-weight:800;font-size:var(--t-sm);color:var(--ink-2);margin:var(--s-3) 0 6px;display:block}.target-pick,.rival-pick{margin-bottom:var(--s-3);flex-wrap:wrap;gap:8px;display:flex}.target-chip{border:2px solid var(--line);border-radius:var(--r-pill);background:var(--surface);cursor:pointer;transition:var(--dur-fast);padding:8px 14px;font-weight:800}.target-chip:hover{border-color:var(--lang)}.target-chip.on{border-color:var(--lang);background:var(--lang-soft);color:var(--lang)}.chal-or{text-align:center;color:var(--ink-3);margin:var(--s-4) 0;align-items:center;gap:12px;display:flex}.chal-or:before,.chal-or:after{content:"";background:var(--line);flex:1;height:1.5px}.chal-or span{font-weight:800;font-size:var(--t-xs)}.link-box{background:var(--surface-2);border:1.5px dashed var(--line-strong);border-radius:var(--r-md);padding:var(--s-3);font-size:var(--t-xs);word-break:break-all;color:var(--ink-2);max-height:100px;font-weight:600;overflow:auto}.celebrate-skip{color:var(--ink-3);cursor:pointer;font-weight:700;font-size:var(--t-sm);background:0 0;border:none;margin-top:10px}.celebrate-skip:hover{color:var(--ink)}.home{gap:var(--s-4);flex-direction:column;display:flex}.home-hero{justify-content:space-between;align-items:center;gap:var(--s-4);background:linear-gradient(135deg, var(--lang-soft), var(--surface) 70%);border-color:#0000;display:flex}.hero-greet{color:var(--lang);font-weight:900;font-size:var(--t-md)}.hero-name{font-size:var(--t-2xl)}.hero-blurb{margin:6px 0 14px}.hero-actions{gap:var(--s-3);flex-wrap:wrap;display:flex}.hero-right{flex:none;justify-items:center;gap:4px;display:grid;position:relative}.goal-center{justify-items:center;line-height:1.15;display:grid}.goal-center strong{font-size:var(--t-2xl);color:var(--lang)}.goal-center span{font-size:var(--t-xs);color:var(--ink-2);font-weight:800}.goal-center em{color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-style:normal;font-weight:800}.hero-right .pip{position:absolute;bottom:-8px;right:-10px}@media (width<=560px){.home-hero{flex-direction:column;align-items:flex-start}.hero-right{align-self:center}}.home-stats{gap:var(--s-3);grid-template-columns:repeat(4,1fr);display:grid}.ministat{padding:var(--s-3) var(--s-4)}@media (width<=560px){.home-stats{grid-template-columns:repeat(2,1fr)}}.level-card{padding:var(--s-4) var(--s-5)}.sec-head{margin-top:var(--s-3)}.sec-head h2{font-size:var(--t-xl)}.link{color:var(--lang);cursor:pointer;font-weight:800;font-size:var(--t-sm);background:0 0;border:none}.unit-card{padding:var(--s-4)}.unit-head{align-items:center;gap:var(--s-3);margin-bottom:var(--s-3);display:flex}.unit-icon{font-size:30px}.lesson-row{gap:var(--s-3);grid-template-columns:repeat(3,1fr);display:grid}@media (width<=560px){.lesson-row{grid-template-columns:1fr}}.lesson-node{text-align:center;padding:var(--s-4) var(--s-3);border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--surface);cursor:pointer;transition:var(--dur) var(--ease-bounce);justify-items:center;gap:4px;display:grid}.lesson-node:not(.locked):hover{border-color:var(--lang);box-shadow:var(--shadow-md);transform:translateY(-3px)}.lesson-node.done{background:var(--lang-soft);border-color:var(--lang)}.lesson-node.locked{opacity:.55;cursor:not-allowed}.node-icon{font-size:26px}.node-title{font-weight:800;font-size:var(--t-sm)}.node-stars{font-size:var(--t-xs);color:var(--ink-2);min-height:16px;font-weight:700}.lesson-node.done .node-stars{color:var(--gold);letter-spacing:2px;font-size:var(--t-md)}.path{gap:var(--s-5);flex-direction:column;display:flex}.path-top{justify-content:space-between;align-items:center;gap:var(--s-4);flex-wrap:wrap;display:flex}.path-top h1{font-size:var(--t-2xl)}.path-unit{background:linear-gradient(180deg, var(--lang-soft), transparent 40%);border-radius:var(--r-xl);padding:var(--s-4) var(--s-4) var(--s-6)}.unit-banner{align-items:center;gap:var(--s-3);background:var(--lang);color:#fff;border-radius:var(--r-lg);padding:var(--s-4) var(--s-5);margin-bottom:var(--s-5);display:flex;box-shadow:0 4px #00000029}.unit-emoji{font-size:32px}.unit-banner strong{font-size:var(--t-lg)}.unit-cefr{font-size:var(--t-xs);opacity:.9;font-weight:800}.trail{gap:var(--s-5);flex-direction:column;display:flex;position:relative}.stop{align-items:center;gap:var(--s-4);display:flex;position:relative}.stop.pos-0{margin-left:8%}.stop.pos-1{margin-left:26%}.stop.pos-2{margin-left:14%}.stop.pos-3{margin-left:2%}@media (width<=560px){.stop.pos-0,.stop.pos-1,.stop.pos-2,.stop.pos-3{margin-left:0}}.bubble{cursor:pointer;width:78px;height:70px;transition:var(--dur) var(--ease-bounce);border:none;border-radius:50% 50% 48% 48%;flex:none;place-items:center;font-size:30px;display:grid;position:relative}.bubble.open{background:var(--lang);color:#fff;box-shadow:0 6px #0000002e}.bubble.done{background:var(--gold);color:#fff;box-shadow:0 6px #c98f00}.bubble.locked{background:var(--surface-2);color:var(--ink-3);box-shadow:0 6px 0 var(--line-strong);cursor:not-allowed}.bubble:not(.locked):hover{transform:translateY(-3px)}.bubble:not(.locked):active{transform:translateY(3px);box-shadow:0 2px #0000002e}.bubble.next{box-shadow:0 6px 0 #0000002e, 0 0 0 5px var(--lang-soft);animation:1.6s ease-in-out infinite floaty}.bubble-stars{color:var(--gold);box-shadow:var(--shadow-sm);letter-spacing:1px;background:#fff;border-radius:999px;padding:0 6px;font-size:13px;position:absolute;bottom:-10px}.start-flag{background:var(--brand);color:#fff;box-shadow:var(--shadow-sm);letter-spacing:.05em;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:900;position:absolute;top:-16px;left:50%;transform:translate(-50%)}.stop-label{flex-direction:column;display:flex}.stop-label strong{font-size:var(--t-md)}.stop-label span{font-size:var(--t-xs);color:var(--ink-2);font-weight:600}.here-pip{position:absolute;top:-6px;right:0}@media (width<=700px){.here-pip{display:none}}.path-end{text-align:center;color:var(--ink-2);padding:var(--s-5);justify-items:center;gap:6px;font-weight:700;display:grid}.lesson{gap:var(--s-5);flex-direction:column;min-height:calc(100vh - 40px);display:flex}.lesson-bar{align-items:center;gap:var(--s-3);padding-top:var(--s-2);display:flex}.quit{color:var(--ink-3);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1}.quit:hover{color:var(--ink)}.lprogress{background:var(--line);border-radius:999px;flex:1;height:14px;overflow:hidden}.lprogress-fill{background:var(--lang);height:100%;transition:width .4s var(--ease-out);border-radius:999px}.lcount{color:var(--ink-2);font-weight:800;font-size:var(--t-sm);text-align:right;min-width:42px}.lesson-body{flex:1}.ex{gap:var(--s-4);animation:riseIn var(--dur) var(--ease-out);flex-direction:column;display:flex}.ex-prompt{font-size:var(--t-xl)}.ex-sub{font-size:var(--t-md)}.audio-card{align-items:center;gap:var(--s-3);background:var(--lang);color:#fff;cursor:pointer;padding:var(--s-4) var(--s-5);border-radius:var(--r-lg);font-weight:800;font-size:var(--t-md);border:none;align-self:flex-start;display:flex;box-shadow:0 4px #00000029}.audio-icon{font-size:26px}.options{gap:var(--s-3);grid-template-columns:repeat(2,1fr);display:grid}@media (width<=480px){.options{grid-template-columns:1fr}}.option{padding:var(--s-4) var(--s-4);border-radius:var(--r-md);border:2px solid var(--line-strong);background:var(--surface);font-size:var(--t-md);cursor:pointer;box-shadow:0 3px 0 var(--line-strong);transition:var(--dur-fast);text-align:center;font-weight:800}.option:hover:not(:disabled){border-color:var(--lang)}.option.sel{border-color:var(--lang);background:var(--lang-soft)}.option.right{border-color:var(--success);background:var(--success-soft);box-shadow:0 3px #1f9457}.option.wrong{border-color:var(--danger);background:var(--danger-soft);animation:.4s shake;box-shadow:0 3px #d63a3f}.option:disabled{cursor:default}.cloze-line{font-size:var(--t-xl);background:var(--surface-2);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);font-weight:800}.type-input{width:100%;font-size:var(--t-lg);border:2px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);padding:16px;font-family:inherit;font-weight:700}.type-input:focus{border-color:var(--lang);outline:none}.build-answer{border-bottom:3px dashed var(--line-strong);min-height:60px;padding:var(--s-3) 0;flex-wrap:wrap;align-content:flex-start;gap:8px;display:flex}.build-bank{flex-wrap:wrap;gap:8px;display:flex}.token{border-radius:var(--r-md);border:2px solid var(--line-strong);background:var(--surface);font-size:var(--t-md);cursor:pointer;box-shadow:0 3px 0 var(--line-strong);transition:var(--dur-fast);padding:10px 14px;font-weight:800}.token:hover:not(:disabled){border-color:var(--lang);transform:translateY(-1px)}.token.used{opacity:.25;box-shadow:none}.token.in{background:var(--lang-soft);border-color:var(--lang)}.match-grid{gap:var(--s-4);grid-template-columns:1fr 1fr;display:grid}.match-col{gap:var(--s-3);flex-direction:column;display:flex}.match-cell{padding:var(--s-4);border-radius:var(--r-md);border:2px solid var(--line-strong);background:var(--surface);font-weight:800;font-size:var(--t-md);cursor:pointer;box-shadow:0 3px 0 var(--line-strong);transition:var(--dur-fast)}.match-cell.sel{border-color:var(--lang);background:var(--lang-soft)}.match-cell.gone{opacity:0;pointer-events:none;transition:opacity .3s}.match-cell.shake-bad{border-color:var(--danger);background:var(--danger-soft);animation:.4s shake}.speak-target{align-items:center;gap:var(--s-3);background:var(--lang-soft);padding:var(--s-5);border-radius:var(--r-lg);justify-content:center;display:flex}.speak-phrase{font-size:var(--t-2xl);color:var(--lang);font-weight:900}.speaker{background:var(--surface);cursor:pointer;width:40px;height:40px;box-shadow:var(--shadow-sm);border:none;border-radius:50%;font-size:18px}.speaker.big{background:var(--lang);width:52px;height:52px;font-size:24px}.mic{width:100%;padding:var(--s-5);border-radius:var(--r-lg);cursor:pointer;font-size:var(--t-lg);color:#fff;background:var(--brand);box-shadow:0 5px 0 var(--brand-ink);border:none;font-weight:800}.mic.live{background:var(--danger);animation:1s ease-in-out infinite floaty;box-shadow:0 5px #d63a3f}.heard{text-align:center}.score{text-align:center;font-size:var(--t-lg);font-weight:900}.speak-fallback{gap:var(--s-3);flex-direction:column;display:flex}.check-btn{margin-top:auto}.feedback{margin:0 calc(var(--s-4) * -1) calc(var(--s-4) * -1);padding:var(--s-5) var(--s-4) calc(var(--s-5) + env(safe-area-inset-bottom));border-top-left-radius:var(--r-xl);border-top-right-radius:var(--r-xl);gap:var(--s-3);animation:riseIn var(--dur) var(--ease-out);flex-direction:column;display:flex;position:sticky;bottom:0}.feedback.ok{background:var(--success-soft)}.feedback.no{background:var(--danger-soft)}.feedback-row{gap:var(--s-3);align-items:flex-start;display:flex}.feedback-emoji{font-size:28px}.answer-line{font-size:var(--t-lg);color:var(--ink);align-items:center;gap:8px;font-weight:900;display:flex}.feedback.ok strong{color:#1f7a4d}.feedback.no strong{color:#b3343a}.note{font-size:var(--t-sm);color:var(--ink-2);margin-top:2px;font-weight:600}.results{justify-items:center;gap:var(--s-4);text-align:center;padding-top:var(--s-7);display:grid}.results h1{font-size:var(--t-2xl)}.result-stats{gap:var(--s-5);margin:var(--s-3) 0;display:flex}.rstat{gap:2px;display:grid}.rstat strong{font-size:var(--t-2xl);color:var(--lang)}.rstat span{font-size:var(--t-xs);color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em;font-weight:800}.lesson-empty{justify-items:center;gap:var(--s-3);text-align:center;padding-top:var(--s-7);display:grid}.topics{gap:var(--s-4);flex-direction:column;display:flex}.topics-head h1{font-size:var(--t-2xl)}.topic-grid{gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.topic-card{align-items:center;gap:var(--s-4);cursor:pointer;transition:var(--dur) var(--ease-bounce);display:flex}.topic-card:hover{border-color:var(--lang);box-shadow:var(--shadow-md);transform:translateY(-3px)}.topic-icon{background:var(--lang-soft);border-radius:var(--r-md);flex:none;place-items:center;width:60px;height:60px;font-size:34px;display:grid}.topic-title{font-size:var(--t-lg)}.topic-blurb{font-size:var(--t-sm);margin:2px 0 4px}.topic-meta{font-size:var(--t-xs);color:var(--ink-3);font-weight:700}.topic-go{color:var(--lang);font-size:var(--t-lg);flex:none}.topic-strip{gap:var(--s-3);scroll-snap-type:x mandatory;padding-bottom:6px;display:flex;overflow-x:auto}.topic-chip{scroll-snap-align:start;cursor:pointer;text-align:center;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-lg);width:130px;padding:var(--s-4) var(--s-3);transition:var(--dur) var(--ease-bounce);flex:none;justify-items:center;gap:4px;display:grid}.topic-chip:hover{border-color:var(--lang);box-shadow:var(--shadow-md);transform:translateY(-3px)}.topic-chip .chip-emoji{font-size:30px}.topic-chip strong{font-size:var(--t-sm)}.topic-chip span.muted{font-size:11px}.tdetail{gap:var(--s-4);flex-direction:column;display:flex}.back-link{color:var(--lang);cursor:pointer;font-weight:800;font-size:var(--t-sm);background:0 0;border:none;align-self:flex-start;padding:0}.back-link:hover{text-decoration:underline}.tdetail-hero{align-items:center;gap:var(--s-4);background:linear-gradient(135deg, var(--lang-soft), var(--surface) 70%);border-color:#0000;display:flex}.tdetail-hero h1{font-size:var(--t-2xl)}.tdetail-icon{border-radius:var(--r-lg);width:72px;height:72px;box-shadow:var(--shadow-sm);background:#fff;flex:none;place-items:center;font-size:40px;display:grid}.tgroup{padding:var(--s-4)}.tgroup-head{margin-bottom:var(--s-3)}.tgroup-head strong{font-size:var(--t-md)}.word-list{grid-template-columns:1fr 1fr;gap:6px;display:grid}@media (width<=560px){.word-list{grid-template-columns:1fr}}.word-row{text-align:left;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--surface);cursor:pointer;transition:var(--dur-fast);align-items:center;gap:8px;padding:9px 12px;display:flex}.word-row:hover{border-color:var(--lang);background:var(--lang-soft)}.word-target{color:var(--ink);font-weight:800}.word-native{font-size:var(--t-sm);flex:1}.word-speak{opacity:.5;font-size:14px}.word-row:hover .word-speak{opacity:1}.games-head{margin-bottom:var(--s-5)}.games-head h1{font-size:var(--t-2xl)}.game-grid{gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.game-card{gap:var(--s-2);text-align:center;border-top:5px solid var(--g,var(--lang));flex-direction:column;align-items:center;display:flex}.game-card .game-icon{font-size:46px}.game-card h3{font-size:var(--t-lg)}.game-card p{font-size:var(--t-sm);flex:1}.game-card .btn{margin-top:var(--s-2)}.game-screen{gap:var(--s-5);flex-direction:column;min-height:calc(100vh - 60px);transition:background .2s;display:flex}.game-screen.ok{background:var(--success-soft)}.game-screen.no{background:var(--danger-soft)}.game-top{align-items:center;gap:var(--s-3);justify-content:space-between;display:flex}.game-top strong{font-size:var(--t-lg)}.game-right{align-items:center;gap:var(--s-3);display:flex}.timer{font-weight:900;font-size:var(--t-lg)}.timer[data-low=true]{color:var(--danger);animation:.6s ease-in-out infinite floaty}.score{font-weight:900;font-size:var(--t-lg);color:var(--lang)}.combo{text-align:center;color:#e8590c;font-weight:900;font-size:var(--t-lg);animation:popIn var(--dur) var(--ease-bounce)}.blitz-q{text-align:center;padding:var(--s-6) 0}.blitz-q h2{font-size:var(--t-2xl)}.big-audio{align-self:center}.setup{justify-items:center;gap:var(--s-3);text-align:center;padding-top:var(--s-6);display:grid}.setup h2{font-size:var(--t-xl)}.setup p{max-width:380px}.tense-pick{margin:var(--s-3) 0;flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.tense-chip{border:2px solid var(--line);border-radius:var(--r-pill);background:var(--surface);cursor:pointer;transition:var(--dur-fast);padding:9px 16px;font-weight:800}.tense-chip:hover{border-color:var(--lang)}.tense-chip.on{border-color:var(--lang);background:var(--lang-soft);color:var(--lang)}.tense-badge{background:var(--lang-soft);color:var(--lang);font-weight:900;font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.08em;border-radius:var(--r-pill);place-self:center;margin-bottom:4px;padding:3px 12px;display:inline-block}.conj-q{text-align:center;padding:var(--s-5) 0 var(--s-4);gap:4px;display:grid}.conj-pron{font-size:var(--t-lg);color:var(--lang);text-transform:lowercase;font-weight:800}.conj-inf{font-size:var(--t-3xl);letter-spacing:-.02em;font-weight:900}.conj-meaning{font-size:var(--t-sm);font-weight:700}.gender-q{text-align:center;padding:var(--s-6) 0 var(--s-4);gap:4px;display:grid}.gender-word{font-size:var(--t-3xl);font-weight:900}.gender-native{font-size:var(--t-md);font-weight:700}.gender-opts.cols-2{grid-template-columns:repeat(2,1fr);max-width:360px;margin:0 auto}.gender-opts.cols-3{grid-template-columns:repeat(3,1fr);max-width:460px;margin:0 auto}.gender-opts .option{font-size:var(--t-xl)}.memory-grid{gap:var(--s-3);grid-template-columns:repeat(4,1fr);display:grid}@media (width<=480px){.memory-grid{grid-template-columns:repeat(3,1fr)}}.mcard{aspect-ratio:3/4;border-radius:var(--r-md);cursor:pointer;font-size:var(--t-md);text-align:center;background:var(--lang);color:#fff;transition:var(--dur) var(--ease-bounce);border:none;place-items:center;padding:6px;font-weight:800;display:grid;box-shadow:0 4px #0000002e}.mcard.up{background:var(--surface);color:var(--ink);border:2px solid var(--lang)}.mcard.up.n{background:var(--lang-soft)}.mcard.matched{background:var(--success-soft);border-color:var(--success);color:#1f7a4d;box-shadow:0 4px #1f9457}.mcard:active{transform:translateY(3px)}.game-over{justify-items:center;gap:var(--s-4);text-align:center;padding-top:var(--s-6);display:grid}.game-over h1{font-size:var(--t-2xl)}.lb{gap:var(--s-4);flex-direction:column;display:flex}.lb-head h1{font-size:var(--t-2xl)}.lb-tabs{gap:var(--s-2);background:var(--surface-2);border-radius:var(--r-pill);align-self:flex-start;padding:4px;display:flex}.lb-tab{border-radius:var(--r-pill);cursor:pointer;color:var(--ink-2);background:0 0;border:none;padding:8px 16px;font-weight:800}.lb-tab.on{color:var(--lang);box-shadow:var(--shadow-sm);background:#fff}.podium{justify-content:center;align-items:flex-end;gap:var(--s-4);padding:var(--s-5) 0 0;display:flex}.pod{justify-items:center;gap:4px;display:grid}.medal{font-size:26px}.pod-name{font-size:var(--t-sm)}.pod-val{font-size:var(--t-xs);color:var(--ink-2);font-weight:800}.pod-stand{background:linear-gradient(var(--lang), var(--lang-soft));border-radius:var(--r-md) var(--r-md) 0 0;width:76px;margin-top:4px}.pod-1 .pod-stand{background:linear-gradient(#f7b500,#ffe49b)}.reset-banner{padding:var(--s-3) var(--s-5);background:var(--brand-soft);border-color:#0000;justify-content:space-between;align-items:center;display:flex}.reset-banner span{color:var(--ink-2);font-weight:800}.reset-banner strong{color:var(--brand-ink)}.champ-banner{align-items:center;gap:var(--s-3);background:linear-gradient(120deg, #fff3d6, var(--surface) 80%);border:1.5px solid var(--gold);border-radius:var(--r-lg);padding:var(--s-3) var(--s-4);display:flex}.champ-trophy{font-size:30px}.champ-kicker{font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--accent-ink);font-weight:900}.champ-wins{color:var(--gold);font-weight:900}.wins-badge{color:#9a6b00;background:#fff3d6;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:800}.rival-pick{margin-bottom:var(--s-3);flex-wrap:wrap;gap:8px;display:flex}.rival-chip{border:2px solid var(--line);border-radius:var(--r-pill);background:var(--surface);cursor:pointer;transition:var(--dur-fast);align-items:center;gap:6px;padding:5px 10px 5px 6px;font-weight:800;display:inline-flex}.rival-chip:hover{border-color:var(--lang)}.rival-chip.on{border-color:var(--lang);background:var(--lang-soft)}.race{gap:var(--s-3);margin-top:var(--s-2);flex-direction:column;display:flex}.race-row{align-items:center;gap:var(--s-3);grid-template-columns:96px 1fr 48px;display:grid}.race-name{font-weight:800;font-size:var(--t-sm)}.race-xp{text-align:right;font-weight:800}.race-verdict{text-align:center;margin-top:6px;font-weight:800}.lb-list{padding:var(--s-3);flex-direction:column;gap:2px;display:flex}.lb-row{align-items:center;gap:var(--s-3);padding:var(--s-3);border-radius:var(--r-md);display:flex}.lb-row.me{background:var(--lang-soft)}.lb-rank{text-align:center;width:24px;color:var(--ink-3);font-weight:900}.lb-sub{font-size:var(--t-xs);color:var(--ink-2);font-weight:700}.lb-val{color:var(--lang);font-weight:900}.you{background:var(--lang);color:#fff;vertical-align:middle;border-radius:999px;padding:1px 6px;font-size:10px}.lb-hint{padding:var(--s-4)}.ach{gap:var(--s-4);flex-direction:column;display:flex}.ach-head h1{font-size:var(--t-2xl)}.ach-grid{gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.badge{text-align:center;padding:var(--s-4);opacity:.65;justify-items:center;gap:6px;display:grid}.badge.on{opacity:1;border-color:var(--lang);background:linear-gradient(180deg, var(--lang-soft), var(--surface) 60%)}.badge-icon{font-size:42px}.badge.on .badge-icon{animation:popIn var(--dur) var(--ease-bounce)}.badge strong{font-size:var(--t-md)}.badge p{font-size:var(--t-xs)}.badge-bar{background:var(--line);border-radius:999px;width:100%;height:7px;margin-top:4px;overflow:hidden}.badge-fill{background:var(--lang);border-radius:999px;height:100%}.badge-tag{font-size:var(--t-xs);color:var(--success);font-weight:900}.prof{gap:var(--s-4);flex-direction:column;display:flex}.prof-hero{align-items:center;gap:var(--s-4);background:linear-gradient(135deg, var(--lang-soft), var(--surface) 70%);border-color:#0000;display:flex}.prof-hero h1{font-size:var(--t-2xl)}.streak-center{justify-items:center;line-height:1.1;display:grid}.streak-center strong{font-size:var(--t-lg);color:#e8590c}.streak-center span{color:var(--ink-2);text-transform:uppercase;font-size:10px;font-weight:800}@media (width<=560px){.prof-hero{flex-wrap:wrap}}.prof-grid{gap:var(--s-4);grid-template-columns:1fr 1fr;display:grid}@media (width<=700px){.prof-grid{grid-template-columns:1fr}}.prof-h3{font-size:var(--t-lg)}.skills{gap:var(--s-3);flex-direction:column;display:flex}.skillrow{align-items:center;gap:var(--s-3);grid-template-columns:24px 84px 1fr 28px;display:grid}.skill-ic{font-size:18px}.skill-lb{font-weight:800;font-size:var(--t-sm)}.skill-n{text-align:right;color:var(--ink-2);font-weight:800}.lang-progress{gap:var(--s-2);flex-direction:column;display:flex}.langrow{align-items:center;gap:var(--s-3);padding:var(--s-3);border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--surface);cursor:pointer;transition:var(--dur-fast);display:flex}.langrow:hover{border-color:var(--lang)}.langrow.on{background:var(--lang-soft);border-color:var(--lang)}.lr-flag{font-size:26px}.goals{gap:var(--s-3);grid-template-columns:repeat(4,1fr);display:grid}@media (width<=560px){.goals{grid-template-columns:repeat(2,1fr)}}.goal{padding:var(--s-4);border-radius:var(--r-md);border:2px solid var(--line);background:var(--surface);cursor:pointer;transition:var(--dur-fast) var(--ease-bounce);gap:2px;display:grid}.goal:hover{transform:translateY(-2px)}.goal.on{border-color:var(--lang);background:var(--lang-soft)}.goal strong{font-size:var(--t-md)}.goal span{font-size:var(--t-xs);color:var(--ink-2);font-weight:700}.prof-foot{justify-content:center;gap:var(--s-3);padding:var(--s-3) 0 var(--s-5);flex-wrap:wrap;display:flex}.migrated-flair{color:#9a6b00;font-weight:800;font-size:var(--t-xs);border-radius:var(--r-pill);background:#fff3d6;align-items:center;gap:6px;width:fit-content;margin-top:8px;padding:4px 10px;display:inline-flex}.celebrate-scrim{z-index:90;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:var(--s-4);animation:fadeIn var(--dur) both;background:#1e18378c;place-items:center;display:grid;position:fixed;inset:0}.celebrate{background:var(--surface);border-radius:var(--r-xl);padding:var(--s-7) var(--s-6) var(--s-6);text-align:center;width:100%;max-width:380px;box-shadow:var(--shadow-lg);background-image:radial-gradient(120% 80% at 50% 0%, var(--lang-soft) 0%, var(--surface) 55%);justify-items:center;gap:6px;display:grid}.celebrate-trophy{font-size:64px;animation:1.6s ease-in-out infinite floaty}.celebrate-kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--lang);font-weight:900;font-size:var(--t-xs)}.celebrate-av{margin:6px 0}.celebrate-name{font-size:var(--t-2xl)}.celebrate-xp{color:var(--brand-ink);font-weight:800}.celebrate-wins{color:var(--gold);font-weight:800}.celebrate-msg{font-size:var(--t-sm);margin:8px 0 14px}.celebrate .btn{margin-top:4px}
