@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-normal-Czevyj-6.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-normal-CJcjJNj7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-normal-DihXLNYH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-italic-DxWqP7Ku.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-italic-CGbN9UgK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-italic-lSdLDfvT.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/schibsted-grotesk-latin-ext-wght-normal-hsMS0n0O.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/schibsted-grotesk-latin-wght-normal-Bb8VGrTG.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f6f1e7;--paper-2:#eee5d4;--card:#fffdf8;--ink:#1d1a16;--ink-2:#463e35;--muted:#7b705f;--line:#ddd1bc;--ember:#ff5a1f;--ember-deep:#d9430f;--ember-soft:#ffe2d3;--gold:#f2b134;--ok:#2f8f5b;--ok-soft:#dcf0e2;--bad:#c8374a;--bad-soft:#f8dde0;--der:#2f6db5;--die:#c8374a;--das:#2f8f5b;--inverse-bg:#1d1a16;--inverse-fg:#f6f1e7;--inverse-muted:#b9ae9c;--inverse-line:#5a5045;--ok-text:#1f5e3c;--bad-text:#8a2131;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--radius:18px;--shadow:0 1px 0 #1d1a160f, 0 12px 32px -18px #1d1a1659;--display:"Fraunces Variable", Georgia, serif;--body:"Schibsted Grotesk Variable", system-ui, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#16130f;--paper-2:#231e18;--card:#1e1a15;--ink:#f3ece0;--ink-2:#d6cbba;--muted:#a3967f;--line:#3a3229;--ember:#ff6a33;--ember-deep:#ff8f62;--ember-soft:#3d2317;--gold:#f2b134;--ok:#4fbf84;--ok-soft:#173020;--bad:#ef6b7d;--bad-soft:#3a1b21;--der:#5b93dd;--die:#e5596d;--das:#3fae74;--inverse-bg:#2a241d;--inverse-fg:#f3ece0;--inverse-muted:#b9ae9c;--inverse-line:#4d443a;--ok-text:#a8e4c1;--bad-text:#f6b5bf;--shadow:0 1px 0 #0000004d, 0 12px 32px -18px #000c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#16130f;--paper-2:#231e18;--card:#1e1a15;--ink:#f3ece0;--ink-2:#d6cbba;--muted:#a3967f;--line:#3a3229;--ember:#ff6a33;--ember-deep:#ff8f62;--ember-soft:#3d2317;--gold:#f2b134;--ok:#4fbf84;--ok-soft:#173020;--bad:#ef6b7d;--bad-soft:#3a1b21;--der:#5b93dd;--die:#e5596d;--das:#3fae74;--inverse-bg:#2a241d;--inverse-fg:#f3ece0;--inverse-muted:#b9ae9c;--inverse-line:#4d443a;--ok-text:#a8e4c1;--bad-text:#f6b5bf;--shadow:0 1px 0 #0000004d, 0 12px 32px -18px #000c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;opacity:.35;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.11 0 0 0 0 0.1 0 0 0 0 0.08 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}#root{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.015em;font-variation-settings:"opsz" 96;margin:0 0 .4em;font-weight:650;line-height:1.1}h1{font-size:clamp(2.2rem,5vw,3.6rem)}h2{font-size:clamp(1.6rem,3vw,2.2rem)}h3{font-size:1.3rem}p{margin:0 0 1em}a{color:inherit}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--ember);outline-offset:2px;border-radius:6px}.container{width:min(1120px,100% - 32px);margin-inline:auto}.narrow{width:min(760px,100% - 32px);margin-inline:auto}main{flex:1;padding:32px 0 72px}.muted{color:var(--muted)}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--ember-deep);margin-bottom:.6em;font-size:.78rem;font-weight:700}.de{font-family:var(--display);font-style:italic;font-weight:500}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.spread{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.stack>*+*{margin-top:16px}.site-header{z-index:20;background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header .container{align-items:center;gap:24px;height:64px;display:flex}.brand{font-family:var(--display);letter-spacing:-.02em;align-items:center;gap:10px;font-size:1.35rem;font-weight:700;text-decoration:none;display:flex}.brand-mark{background:var(--inverse-bg);border-radius:9px;place-items:center;width:30px;height:30px;display:grid}.brand-mark svg{width:18px;height:18px}.brand b{color:var(--ember);font-weight:700}.nav{align-items:center;gap:4px;margin-left:auto;display:flex}.nav a{color:var(--ink-2);border-radius:10px;padding:8px 12px;font-size:.95rem;font-weight:550;text-decoration:none}.nav a:hover{background:var(--paper-2)}.nav a.active{color:var(--ink);background:var(--paper-2)}.nav-pill{background:var(--card);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:.9rem;font-weight:700;display:inline-flex}.theme-btn{margin-left:4px}.menu-btn{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:10px;margin-left:auto;padding:6px 10px;display:none}@media (width<=820px){.menu-btn{display:block}.nav{background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;padding:12px 16px 16px;display:none;position:absolute;top:64px;left:0;right:0}.nav.open{display:flex}}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding:28px 0;font-size:.9rem}.btn{border:1.5px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;box-shadow:0 3px 0 var(--ember-deep);border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-weight:650;text-decoration:none;transition:transform .12s,box-shadow .12s,background .15s;display:inline-flex}.btn:hover{box-shadow:0 4px 0 var(--ember-deep);transform:translateY(-1px)}.btn:active{box-shadow:0 1px 0 var(--ember-deep);transform:translateY(2px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.ember{background:var(--ember);border-color:var(--ember);color:#fff;box-shadow:0 3px #a8320a}.btn.ghost{color:var(--ink);box-shadow:none;border-color:var(--line);background:0 0}.btn.ghost:hover{background:var(--paper-2)}.btn.small{border-radius:10px;padding:7px 12px;font-size:.9rem}.icon-btn{border:1.5px solid var(--line);background:var(--card);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;width:40px;height:40px;transition:background .15s,border-color .15s;display:inline-grid}.icon-btn:hover{border-color:var(--ember);background:var(--ember-soft)}.icon-btn.playing{background:var(--ember);border-color:var(--ember);color:#fff}.icon-btn svg{width:18px;height:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}a.card{text-decoration:none;transition:transform .15s,border-color .15s;display:block}a.card:hover{border-color:var(--ink-2);transform:translateY(-3px)}.grid{gap:18px;display:grid}.grid.cols-2{grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}.level-badge{min-width:46px;height:32px;font-family:var(--display);color:#fff;background:var(--lvl,var(--ink));letter-spacing:.02em;border-radius:9px;place-items:center;padding:0 10px;font-size:1rem;font-weight:750;display:inline-grid}.level-badge.big{border-radius:16px;min-width:76px;height:64px;font-size:1.9rem}.art{font-weight:700}.art-der{color:var(--der)}.art-die{color:var(--die)}.art-das{color:var(--das)}.art-chip{color:#fff;text-transform:lowercase;border-radius:6px;padding:2px 8px;font-size:.75rem;font-weight:800;display:inline-block}.art-chip.der{background:var(--der)}.art-chip.die{background:var(--die)}.art-chip.das{background:var(--das)}.bar{background:var(--paper-2);border-radius:99px;height:8px;overflow:hidden}.bar>span{background:var(--ember);border-radius:inherit;height:100%;transition:width .4s;display:block}.tag{background:var(--paper-2);color:var(--ink-2);border-radius:99px;align-items:center;gap:6px;padding:3px 9px;font-size:.78rem;font-weight:700;display:inline-flex}.tag.done{background:var(--ok-soft);color:var(--ok)}.tag.ember{background:var(--ember-soft);color:var(--ember-deep)}.hero{grid-template-columns:1.15fr .85fr;align-items:center;gap:48px;padding:56px 0 40px;display:grid}.hero h1{font-size:clamp(2.6rem,6.4vw,5rem);font-weight:700;line-height:.98}.hero h1 em{color:var(--ember);font-style:italic;font-weight:600}.hero .lead{color:var(--ink-2);max-width:34em;font-size:1.2rem}@media (width<=860px){.hero{grid-template-columns:1fr;padding-top:24px}.hero-stage{height:340px}}.hero-stage{height:420px;position:relative}.float-card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;padding:18px 20px;animation:.8s cubic-bezier(.2,.8,.2,1) both rise;position:absolute}.float-card .de{font-size:1.7rem;display:block}@keyframes rise{0%{opacity:0;transform:translateY(24px) rotate(var(--r,0deg))}to{opacity:1;transform:translateY(0) rotate(var(--r,0deg))}}.float-card{z-index:1}.spark{z-index:0;background:var(--ember);filter:blur(.5px);border-radius:50%;width:10px;height:10px;animation:2.4s ease-in-out infinite flicker;position:absolute}@keyframes flicker{0%,to{opacity:.2;transform:scale(.6)}50%{opacity:1;transform:scale(1.2)}}.ladder{grid-template-columns:repeat(6,1fr);align-items:end;gap:10px;margin:24px 0 8px;display:grid}.ladder a{color:#fff;background:var(--lvl);border-radius:14px;flex-direction:column;justify-content:space-between;min-height:120px;padding:14px;text-decoration:none;transition:transform .15s;display:flex}.ladder a:hover{transform:translateY(-4px)}.ladder b{font-family:var(--display);font-size:1.8rem}.ladder small{opacity:.9;font-size:.8rem;line-height:1.25}@media (width<=700px){.ladder{grid-template-columns:repeat(3,1fr)}}.feature-grid{grid-template-columns:repeat(4,1fr);gap:18px;display:grid}@media (width<=900px){.feature-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=520px){.feature-grid{grid-template-columns:1fr}}.feature-num{font-family:var(--display);color:var(--ember);font-size:2.4rem;font-weight:700;line-height:1}section.block{padding:48px 0}.band{background:var(--inverse-bg);color:var(--inverse-fg);border-radius:28px;padding:48px;position:relative;overflow:hidden}.band h2{color:var(--inverse-fg)}.band .muted{color:var(--inverse-muted)}.dash-head{grid-template-columns:1fr auto;align-items:end;gap:24px;margin-bottom:28px;display:grid}.stat-row{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px;display:grid}@media (width<=820px){.stat-row{grid-template-columns:repeat(2,1fr)}.dash-head{grid-template-columns:1fr}}.stat{padding:18px 20px}.stat .num{font-family:var(--display);font-size:2.2rem;font-weight:700;line-height:1}.stat .lbl{color:var(--muted);margin-top:6px;font-size:.85rem;font-weight:600}.week{align-items:end;gap:8px;height:70px;display:flex}.week div{color:var(--muted);flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;height:100%;font-size:.7rem;display:flex}.week i{background:var(--paper-2);border-radius:6px 6px 3px 3px;width:100%;min-height:4px;display:block}.week i.hit{background:var(--ember)}.item-list{flex-direction:column;gap:10px;display:flex}.item{background:var(--card);border:1px solid var(--line);border-radius:14px;grid-template-columns:44px 1fr auto;align-items:center;gap:16px;padding:16px 18px;text-decoration:none;transition:border-color .15s,transform .15s;display:grid}.item:hover{border-color:var(--ink-2);transform:translate(3px)}.item-icon{background:var(--paper-2);border-radius:12px;place-items:center;width:44px;height:44px;font-size:1.2rem;display:grid}.item-icon svg{width:22px;height:22px}.item h4{font-family:var(--body);letter-spacing:0;margin:0 0 2px;font-size:1.02rem;font-weight:700}.item p{color:var(--muted);margin:0;font-size:.9rem}.tabs{border-bottom:1px solid var(--line);gap:6px;margin-bottom:24px;display:flex;overflow-x:auto}.tabs button{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-1px;padding:12px 16px;font-weight:650}.tabs button.on{color:var(--ink);border-bottom-color:var(--ember)}.form{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field label{font-size:.92rem;font-weight:650}.input{border:1.5px solid var(--line);background:var(--card);width:100%;font:inherit;color:var(--ink);border-radius:12px;padding:13px 15px;transition:border-color .15s}.input:focus{border-color:var(--ink);outline:none}.error-box{background:var(--bad-soft);color:var(--bad);border-radius:12px;padding:12px 14px;font-size:.95rem;font-weight:600}.prose p{color:var(--ink-2)}.prose strong{color:var(--ink)}.prose h3{margin-top:1.6em}.gtable{border-collapse:separate;border-spacing:0;border:1px solid var(--line);background:var(--card);border-radius:12px;width:100%;margin:12px 0 20px;font-size:.95rem;overflow:hidden}.gtable th{text-align:left;background:var(--paper-2);padding:10px 12px;font-weight:700}.gtable td{border-top:1px solid var(--line);padding:10px 12px}.table-scroll{overflow-x:auto}.examples{flex-direction:column;gap:8px;margin:12px 0 20px;display:flex}.example{background:var(--card);border-left:4px solid var(--ember);border-radius:4px 12px 12px 4px;align-items:center;gap:12px;padding:10px 14px;display:flex}.example .icon-btn{width:34px;height:34px}.example .en{color:var(--muted);font-size:.9rem}.ex-shell{max-width:720px;margin:0 auto}.ex-top{align-items:center;gap:14px;margin-bottom:28px;display:flex}.ex-top .bar{flex:1;height:12px}.ex-prompt{font-family:var(--display);margin-bottom:24px;font-size:clamp(1.35rem,3vw,1.8rem);font-weight:550;line-height:1.3}.gap{border-bottom:3px solid var(--ember);text-align:center;min-width:3.4em;margin:0 4px;display:inline-block}.options{gap:10px;display:grid}.option{text-align:left;border:2px solid var(--line);background:var(--card);cursor:pointer;border-radius:14px;align-items:center;gap:12px;padding:15px 18px;font-weight:550;transition:border-color .12s,background .12s;display:flex}.option:hover:not(:disabled){border-color:var(--ink-2)}.option kbd{font-family:var(--body);border:1px solid var(--line);color:var(--muted);border-radius:6px;padding:1px 7px;font-size:.75rem}.option.picked{border-color:var(--ink)}.option.right{border-color:var(--ok);background:var(--ok-soft)}.option.wrong{border-color:var(--bad);background:var(--bad-soft)}.option:disabled{cursor:default}.word-bank{flex-wrap:wrap;gap:8px;min-height:56px;display:flex}.answer-line{border-bottom:2px dashed var(--line);flex-wrap:wrap;align-items:center;gap:8px;min-height:64px;margin-bottom:18px;padding:8px 0;display:flex}.chip{border:1.5px solid var(--line);background:var(--card);cursor:pointer;box-shadow:0 2px 0 var(--line);border-radius:10px;padding:9px 14px;font-weight:600;transition:transform .1s}.chip:hover:not(:disabled){transform:translateY(-1px)}.chip.used{visibility:hidden}.feedback{border-radius:14px;margin-top:20px;padding:16px 18px;animation:.25s both rise}.feedback.ok{background:var(--ok-soft);color:var(--ok-text)}.feedback.no{background:var(--bad-soft);color:var(--bad-text)}.feedback b{margin-bottom:2px;font-size:1.05rem;display:block}.ex-actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.result{text-align:center;padding:40px 24px}.result .score{font-family:var(--display);color:var(--ember);font-size:4.5rem;font-weight:750;line-height:1}.flash-wrap{perspective:1400px;max-width:560px;margin:0 auto}.flash{height:340px;transform-style:preserve-3d;cursor:pointer;transition:transform .5s cubic-bezier(.3,.7,.2,1);position:relative}.flash.flipped{transform:rotateY(180deg)}.flash-face{backface-visibility:hidden;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);text-align:center;border-radius:24px;flex-direction:column;justify-content:center;align-items:center;padding:28px;display:flex;position:absolute;inset:0;overflow:hidden}.flash-face.back{background:var(--inverse-bg);color:var(--inverse-fg);border-color:var(--inverse-line);transform:rotateY(180deg)}.flash-face .de-word{font-family:var(--display);font-size:clamp(2rem,6vw,3rem);font-weight:650;line-height:1.1}.flash-face .hint{color:var(--muted);font-size:.8rem;position:absolute;bottom:16px}.flash-face.back .hint{color:var(--inverse-muted)}.flash-face .stripe{background:var(--stripe,var(--ember));border-radius:24px 24px 0 0;height:8px;position:absolute;top:0;left:0;right:0}.grades{grid-template-columns:repeat(4,1fr);gap:10px;max-width:560px;margin:22px auto 0;display:grid}.grade{border:2px solid var(--line);background:var(--card);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:12px 6px;font-weight:700;display:flex}.grade small{color:var(--muted);font-size:.75rem;font-weight:500}.grade.again:hover{border-color:var(--bad)}.grade.hard:hover{border-color:var(--gold)}.grade.good:hover{border-color:var(--ok)}.grade.easy:hover{border-color:var(--der)}.word-table{border-collapse:collapse;width:100%}.word-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:12px 8px}.word-table tr:last-child td{border-bottom:none}.reader p.para{font-family:var(--display);color:var(--ink);border-radius:8px;margin:0 -10px 14px;padding:4px 10px;font-size:1.25rem;font-weight:420;line-height:1.65;transition:background .2s}.reader p.para.speaking{background:var(--ember-soft)}.bubble-row{align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.bubble-row.right{flex-direction:row-reverse}.avatar{color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:38px;height:38px;font-size:.9rem;font-weight:800;display:grid}.bubble{background:var(--card);border:1px solid var(--line);border-radius:4px 16px 16px;max-width:80%;padding:10px 14px;font-size:1.05rem;transition:background .2s}.bubble-row.right .bubble{border-radius:16px 4px 16px 16px}.bubble.speaking{background:var(--ember-soft);border-color:var(--ember)}.bubble small{color:var(--muted);font-size:.75rem;font-weight:700;display:block}.reading-layout{grid-template-columns:1fr 280px;align-items:start;gap:32px;display:grid}.reading-layout aside{position:sticky;top:88px}@media (width<=900px){.reading-layout{grid-template-columns:1fr}.reading-layout aside{position:static}}.gloss{flex-direction:column;gap:8px;font-size:.92rem;display:flex}.gloss div{border-bottom:1px dotted var(--line);justify-content:space-between;gap:10px;padding-bottom:6px;display:flex}.blur{filter:blur(6px);-webkit-user-select:none;user-select:none;transition:filter .3s}.player{background:var(--card);border:1px solid var(--line);border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:24px;padding:12px 14px;display:flex}.player select{border:1px solid var(--line);background:var(--paper);font:inherit;border-radius:8px;padding:6px 8px;font-size:1rem}.placement-result{grid-template-columns:repeat(6,1fr);gap:8px;margin:24px 0;display:grid}.placement-result div{text-align:center}.placement-result .col{background:var(--paper-2);border-radius:10px;align-items:flex-end;height:120px;display:flex;overflow:hidden}.placement-result .col i{background:var(--lvl);border-radius:10px;width:100%;display:block}.toast{background:var(--inverse-bg);width:fit-content;max-width:calc(100vw - 32px);color:var(--inverse-fg);z-index:50;box-shadow:var(--shadow);border-radius:12px;margin-inline:auto;padding:12px 18px;font-weight:650;animation:.3s both rise;position:fixed;bottom:24px;left:0;right:0}.center-screen{text-align:center;place-items:center;min-height:60vh;display:grid}.loader{border:3px solid var(--line);border-top-color:var(--ember);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.stagger>*{animation:.55s cubic-bezier(.2,.8,.2,1) both rise}.stagger>:nth-child(2){animation-delay:60ms}.stagger>:nth-child(3){animation-delay:.12s}.stagger>:nth-child(4){animation-delay:.18s}.stagger>:nth-child(5){animation-delay:.24s}.stagger>:nth-child(6){animation-delay:.3s}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.dictation-diff{font-family:var(--display);flex-wrap:wrap;gap:6px 8px;margin-top:16px;font-size:1.25rem;display:flex}.dictation-diff .hit{color:var(--ok)}.dictation-diff .miss{color:var(--bad);text-underline-offset:4px;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.badges{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin:16px 0 0;padding:0;list-style:none;display:grid}.badge{border:1px dashed var(--line);color:var(--muted);background:0 0;border-radius:14px;flex-direction:column;gap:2px;padding:14px;display:flex}.badge .badge-icon{filter:grayscale();opacity:.45;font-size:1.7rem}.badge small{font-size:.78rem;line-height:1.3}.badge.earned{background:var(--card);color:var(--ink);box-shadow:var(--shadow);border-style:solid}.badge.earned .badge-icon{filter:none;opacity:1}.badge.earned small{color:var(--muted)}.achievement-toast{align-items:center;gap:12px;max-width:min(520px,100vw - 32px);display:flex}.achievement-toast .btn{color:var(--inverse-fg);border-color:var(--inverse-line)}.path{margin:0;padding:0;list-style:none;position:relative}.path:before{content:"";background:var(--line);width:2px;position:absolute;top:8px;bottom:8px;left:17px}.path-unit{grid-template-columns:36px 1fr;gap:16px;margin-bottom:18px;display:grid;position:relative}.path-dot{z-index:1;background:var(--paper-2);width:36px;height:36px;color:var(--muted);border:2px solid var(--line);border-radius:50%;place-items:center;font-weight:800;display:grid;position:relative}.path-unit.done .path-dot{background:var(--ok);border-color:var(--ok);color:#fff}.path-unit.current .path-dot{background:var(--ember);border-color:var(--ember);color:#fff;box-shadow:0 0 0 6px var(--ember-soft)}.path-unit.current>.card{border-color:var(--ember)}.path-unit.todo>.card{opacity:.85}.item.compact{grid-template-columns:36px 1fr auto;padding:10px 14px}.item.compact .item-icon{width:36px;height:36px}.item.is-next{border-color:var(--ember)}.path-banner{border-radius:var(--radius);border:1px solid var(--ember);background:var(--card);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:8px 0 24px;padding:16px 20px;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.item>*,.path-unit>*,.grid>*{min-width:0}.item h4,.item p{overflow-wrap:anywhere}.item.level-row{grid-template-columns:56px 1fr minmax(120px,180px)}@media (width<=600px){.item.level-row{grid-template-columns:56px 1fr;row-gap:10px}.item.level-row>:last-child{grid-column:1/-1}.card{padding:18px}.site-header .container{gap:10px}.ladder a{overflow-wrap:anywhere;min-width:0}.word-table,.word-table tbody{display:block}.word-table tr{border-bottom:1px solid var(--line);grid-template-columns:44px 1fr;column-gap:8px;padding:10px 0;display:grid}.word-table tr:last-child{border-bottom:none}.word-table td{overflow-wrap:anywhere;border:none;min-width:0;padding:2px 0}.word-table td:nth-child(3),.word-table td:nth-child(4){grid-column:2;text-align:left!important}}@media (width<=420px){.ladder{grid-template-columns:repeat(2,1fr)}}html{-webkit-tap-highlight-color:transparent}.flash-face>*{backface-visibility:hidden}select.input,.player select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%237b705f' stroke-width='2'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding-right:38px}select.input{min-height:48px}.player select{min-height:40px;color:var(--ink);padding-left:10px}input[type=checkbox]{width:20px;height:20px;accent-color:var(--ember)}@media (hover:none){.btn:hover,a.card:hover,.ladder a:hover,.item:hover,.chip:hover:not(:disabled){transform:none}.item:hover,a.card:hover{border-color:var(--line)}.item:active,a.card:active{background:var(--paper-2)}}@media (pointer:coarse){.btn.small{min-height:44px}.icon-btn,.example .icon-btn{width:44px;height:44px}input,select,textarea{font-size:max(16px,1em)}}@media (width<=360px){.brand{gap:8px;font-size:1.12rem}.menu-btn{padding:6px 8px}}
