@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #0f1220;--bg-soft: #171b2e;--card: #1c2138;--card-2: #232945;--border: #2c3355;--text: #e8eaf2;--text-dim: #a2a8c3;--muted: #8d94b8;--primary: #5d60f0;--primary-2: #818cf8;--primary-soft: rgba(99, 102, 241, .15);--success: #22c55e;--success-soft: rgba(34, 197, 94, .15);--warning: #f59e0b;--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .15);--radius: 16px;--radius-sm: 10px;--shadow: 0 10px 30px rgba(0, 0, 0, .35);--shadow-sm: 0 4px 14px rgba(0, 0, 0, .25);--maxw: 1080px;--font: "Segoe UI", system-ui, -apple-system, Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:radial-gradient(1200px 600px at 20% -10%,#1b2140 0%,var(--bg) 55%) no-repeat var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.55}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}h1,h2,h3,h4{margin:0 0 .4em;line-height:1.2;font-weight:700}.page-title{font-size:1.5em;margin:0}p{margin:0 0 .8em}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}::-webkit-scrollbar-track{background:transparent}.app-shell{min-height:100%;display:flex;flex-direction:column}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 20px}.page{padding-top:28px;padding-bottom:80px;animation:fade .35s ease}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.navbar{position:sticky;top:0;z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f1220cc;border-bottom:1px solid var(--border)}.navbar-inner{display:flex;align-items:center;gap:16px;height:64px;min-width:0}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.15rem;letter-spacing:.2px;min-width:0}.brand-text{white-space:nowrap}.brand-badge{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--primary-2));display:grid;place-items:center;color:#fff;font-weight:800;box-shadow:var(--shadow-sm)}.brand span.accent{color:var(--primary-2)}.nav-links{display:flex;align-items:center;gap:2px;margin-left:auto}.nav-link{display:inline-flex;align-items:center;gap:5px;padding:9px 14px;border-radius:10px;color:var(--text-dim);font-weight:600;font-size:.92rem;white-space:nowrap;background:none;transition:color .15s ease,background .15s ease}.nav-link:hover{color:var(--text);background:var(--card)}.nav-link.active{color:#fff;background:var(--primary)}.nav-link .caret{font-size:.62rem;opacity:.7;transition:transform .18s ease}.nav-group{position:relative}.nav-group.active>.nav-link{color:var(--text);background:var(--card)}.nav-dropdown{display:none;position:absolute;top:100%;left:0;margin-top:6px;min-width:250px;flex-direction:column;gap:2px;padding:8px;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);z-index:60}.nav-group:after{content:"";position:absolute;top:100%;left:0;right:0;height:10px}.nav-group.open>.nav-dropdown{display:flex}.nav-drop-item{display:flex;align-items:flex-start;gap:11px;padding:9px 11px;border-radius:10px;color:var(--text-dim)}.nav-drop-item:hover{background:var(--card-2);color:var(--text)}.nav-drop-item.active{background:var(--primary-soft)}.ndi-icon{font-size:1.2rem;line-height:1.3;flex-shrink:0}.ndi-label{display:block;font-weight:700;color:var(--text);font-size:.92rem}.nav-drop-item.active .ndi-label{color:var(--primary-2)}.ndi-desc{display:block;font-size:.78rem;color:var(--muted)}.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;border-radius:10px;border:1px solid var(--border);background:var(--card);flex-shrink:0}.nav-toggle span{display:block;width:18px;height:2px;margin:0 auto;background:var(--text);border-radius:2px;transition:transform .2s ease,opacity .2s ease}.nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle.open span:nth-child(2){opacity:0}.nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.streak-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--card);border:1px solid var(--border);font-weight:700;font-size:.85rem;flex-shrink:0}@media (min-width: 901px){.nav-group:hover>.nav-dropdown{display:flex}.nav-group:hover .caret,.nav-group.open .caret{transform:rotate(180deg)}}@media (max-width: 900px){.nav-toggle{display:flex}.streak-pill{margin-left:auto}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:2px;margin:0;padding:10px;max-height:calc(100vh - 64px);overflow-y:auto;background:var(--bg-soft);border-bottom:1px solid var(--border);box-shadow:var(--shadow)}.nav-links.open{display:flex}.nav-link{padding:12px 14px;font-size:1rem}.nav-group{position:static}.nav-group>.nav-link{width:100%;justify-content:space-between}.nav-group:after{display:none}.nav-dropdown{position:static;display:none;margin:2px 0 6px 10px;min-width:0;padding:4px;background:transparent;border:none;box-shadow:none;border-left:2px solid var(--border);border-radius:0}.nav-group.open>.nav-dropdown{display:flex}.nav-group.open>.nav-link .caret{transform:rotate(180deg)}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-sm)}.card-hover{transition:transform .15s ease,border-color .15s ease}.card-hover:hover{transform:translateY(-3px);border-color:var(--primary)}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 820px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,1fr);gap:10px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:12px;font-weight:700;font-size:.95rem;background:var(--card-2);border:1px solid var(--border);color:var(--text);transition:all .15s ease}.btn:hover{border-color:var(--primary)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-2));border:none;color:#fff}.btn-primary:hover{filter:brightness(1.08)}.btn-success{background:var(--success);border:none;color:#06240f}.btn-danger{background:var(--danger);border:none;color:#2a0606}.btn-warning{background:var(--warning);border:none;color:#2a1c02}.btn-ghost{background:transparent}.btn-block{width:100%}.btn-lg{padding:14px 24px;font-size:1.02rem}.btn-sm{padding:7px 12px;font-size:.85rem;border-radius:9px}.icon-btn{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--card-2);border:1px solid var(--border);transition:all .15s ease;font-size:1.1rem}.icon-btn:hover{border-color:var(--primary);color:var(--primary-2)}.tag{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:700;background:var(--primary-soft);color:var(--primary-2)}.tag-pos{background:#818cf81f;color:var(--primary-2);font-style:italic}.text-dim{color:var(--text-dim)}.text-muted{color:var(--muted)}.text-center{text-align:center}.mono{font-family:Consolas,Courier New,monospace}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.eyebrow{text-transform:uppercase;letter-spacing:1.5px;font-size:.72rem;font-weight:800;color:var(--primary-2);margin-bottom:6px}.progress-bar{height:10px;background:var(--bg-soft);border-radius:999px;overflow:hidden}.progress-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-2));border-radius:999px;transition:width .4s ease}.stat{display:flex;flex-direction:column;gap:2px}.stat .num{font-size:1.9rem;font-weight:800}.stat .label{color:var(--text-dim);font-size:.85rem;font-weight:600}.spinner{width:26px;height:26px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-col{display:flex;flex-direction:column;align-items:center;gap:14px}.input{width:100%;padding:12px 16px;border-radius:12px;background:var(--bg-soft);border:1px solid var(--border);color:var(--text);font-size:1rem;font-family:inherit}.input:focus{outline:none;border-color:var(--primary)}.badge-rank{font-size:.72rem;font-weight:700;color:var(--muted);background:var(--bg-soft);padding:2px 8px;border-radius:6px}.flashcard{perspective:1600px;width:100%;max-width:620px;height:420px;margin:0 auto}.flashcard-inner{position:relative;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;border-radius:var(--radius);border:1px solid var(--border);background:linear-gradient(160deg,var(--card),var(--card-2));box-shadow:var(--shadow);padding:28px;display:flex;flex-direction:column}.flashcard-back{transform:rotateY(180deg);overflow-y:auto}.big-word{font-size:2.6rem;font-weight:800;letter-spacing:.5px}.phonetic{color:var(--primary-2);font-size:1.1rem}.meaning-block{margin-bottom:14px}.definition{margin:4px 0}.example{color:var(--text-dim);font-style:italic;border-left:3px solid var(--primary);padding-left:10px;margin:6px 0}.grade-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.word-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:12px 16px;border-radius:12px;border:1px solid var(--border);background:var(--card);transition:border-color .15s ease}.word-row:hover{border-color:var(--primary)}.word-row .w{font-weight:700;font-size:1.05rem;min-width:0;overflow-wrap:anywhere}.status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-new{background:var(--muted)}.status-learning{background:var(--warning)}.status-known{background:var(--success)}.option{text-align:left;padding:15px 18px;border-radius:12px;border:1px solid var(--border);background:var(--card);font-weight:600;font-size:1rem;transition:all .12s ease}.option:hover:not(:disabled){border-color:var(--primary)}.option.correct{background:var(--success-soft);border-color:var(--success)}.option.wrong{background:var(--danger-soft);border-color:var(--danger)}.mic-btn{width:110px;height:110px;border-radius:50%;display:grid;place-items:center;font-size:2.6rem;background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#fff;box-shadow:var(--shadow);transition:transform .15s ease}.mic-btn:hover{transform:scale(1.05)}.mic-btn.listening{animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #6366f199}50%{box-shadow:0 0 0 22px #6366f100}}.score-ring{font-size:2.4rem;font-weight:800}.hero{border-radius:20px;padding:34px;background:radial-gradient(600px 200px at 90% -20%,rgba(129,140,248,.25),transparent),linear-gradient(135deg,#232945,#1a1f36);border:1px solid var(--border);margin-bottom:26px}.hero h1{font-size:2.2rem}html[data-theme=light] .hero{background:radial-gradient(600px 200px at 90% -20%,rgba(99,102,241,.16),transparent),linear-gradient(135deg,#fff,#eef1fb)}@media (max-width: 560px){.hero h1{font-size:1.6rem}}.pill-row{display:flex;gap:8px;flex-wrap:wrap}.empty-state{text-align:center;padding:50px 20px;color:var(--text-dim)}.empty-state .big{font-size:3rem;margin-bottom:8px}.level-bar{height:8px;border-radius:999px;background:var(--bg-soft);overflow:hidden;margin-top:8px}.level-bar>span{display:block;height:100%;border-radius:999px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:18px}.select{padding:10px 14px;border-radius:10px;background:var(--bg-soft);border:1px solid var(--border);color:var(--text);font-family:inherit;font-weight:600}.footer{margin-top:auto;border-top:1px solid var(--border);padding:20px 0;color:var(--muted);font-size:.85rem;text-align:center}.grammar-layout{display:grid;grid-template-columns:260px 1fr;gap:22px;align-items:start}.grammar-sidebar{position:sticky;top:84px;max-height:calc(100vh - 110px);overflow-y:auto;padding-right:6px}.grammar-link{display:block;width:100%;text-align:left;padding:8px 12px;border-radius:9px;color:var(--text-dim);font-weight:600;font-size:.9rem;transition:all .12s ease}.grammar-link:hover{background:var(--card);color:var(--text)}.grammar-link.active{background:var(--primary);color:#fff}@media (max-width: 760px){.grammar-layout{grid-template-columns:1fr}.grammar-sidebar{position:static;max-height:280px;border:1px solid var(--border);border-radius:var(--radius);padding:14px;background:var(--card)}}.form-box{background:linear-gradient(160deg,var(--card),var(--card-2))}.formula{font-family:Consolas,Courier New,monospace;font-size:1.02rem;font-weight:600;color:var(--primary-2);background:var(--bg-soft);border:1px dashed var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px;line-height:1.7}.formula:last-child{margin-bottom:0}.point-block{padding:14px 0;border-bottom:1px solid var(--border)}.point-block:last-child{border-bottom:none;padding-bottom:0}.tips-box{border-left:4px solid var(--warning)}.tips-box li{color:var(--text-dim)}.pair-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--border)}.pair-row:last-child{border-bottom:none}.pair-word{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:10px;background:var(--bg-soft);border:1px solid var(--border);font-weight:700;font-size:1.02rem;color:var(--text)}.pair-vs{color:var(--muted);font-size:.8rem;font-weight:700}.pair-note{flex:1 1 100%;font-size:.85rem}@media (min-width: 620px){.pair-note{flex:1}}html[data-theme=light]{--bg: #f4f6fc;--bg-soft: #e9edf7;--card: #ffffff;--card-2: #f2f5fb;--border: #dde2ee;--text: #1a1f36;--text-dim: #4c5673;--muted: #5d6680;--primary: #4f46e5;--primary-2: #5650e6;--primary-soft: rgba(79, 70, 229, .12);--success-soft: rgba(22, 163, 74, .14);--danger-soft: rgba(220, 38, 38, .12);--shadow: 0 10px 30px rgba(30, 41, 90, .12);--shadow-sm: 0 4px 14px rgba(30, 41, 90, .08)}html[data-theme=light] body{background:radial-gradient(1200px 600px at 20% -10%,#e6ebfb 0%,var(--bg) 55%) no-repeat var(--bg)}html[data-theme=light] .navbar{background:#ffffffd1}html[data-theme=light] .nav-link.active{color:#fff}html[data-theme=light] .example{color:var(--text-dim)}html[data-theme=light] .eyebrow,html[data-theme=light] .link-btn{color:var(--primary)}.theme-toggle{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--card);border:1px solid var(--border);font-size:1.05rem;flex-shrink:0;transition:border-color .15s ease,transform .15s ease}.theme-toggle:hover{border-color:var(--primary);transform:rotate(12deg)}.toast{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;align-items:center;gap:14px;max-width:340px;padding:16px 18px;border-radius:16px;background:linear-gradient(135deg,var(--card),var(--card-2));border:1px solid var(--primary);box-shadow:var(--shadow);cursor:pointer;animation:toast-in .4s cubic-bezier(.2,.8,.2,1)}@keyframes toast-in{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:none}}.toast-icon{font-size:2.2rem;width:54px;height:54px;display:grid;place-items:center;border-radius:12px;background:var(--primary-soft);flex-shrink:0}.toast-title{font-size:.72rem;text-transform:uppercase;letter-spacing:1px;font-weight:800;color:var(--primary-2)}.toast-name{font-weight:800;font-size:1.05rem}.toast-desc{font-size:.85rem;color:var(--text-dim)}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.badge{text-align:center;padding:16px 12px;border-radius:14px;border:1px solid var(--border);background:var(--card);transition:transform .15s ease}.badge.locked{border-style:dashed}.badge.locked .b-icon{opacity:.4;filter:grayscale(1)}.badge.locked .b-name{color:var(--text-dim)}.badge.unlocked:hover{transform:translateY(-3px);border-color:var(--primary)}.badge .b-icon{font-size:2rem}.badge .b-name{font-weight:700;font-size:.92rem;margin-top:4px}.badge .b-desc{font-size:.78rem;color:var(--muted);margin-top:2px}.reminder-banner{display:flex;align-items:center;gap:12px;padding:14px 18px;margin-bottom:20px;border-radius:14px;background:linear-gradient(135deg,#6366f12e,#818cf81a);border:1px solid var(--primary);color:var(--text);font-size:.95rem}.reminder-banner .rb-icon{font-size:1.4rem;flex-shrink:0}.reminder-banner .rb-cta{margin-left:auto;font-weight:800;color:var(--primary-2);white-space:nowrap}.reminder-banner:hover{border-color:var(--primary-2)}.wod-card{border-left:4px solid var(--primary)}.icon-btn.starred{color:#fbbf24;border-color:#fbbf24}.icon-btn.starred:hover{color:#f59e0b}.search-btn{font-size:1rem}.search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#0608128c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px}.search-panel{width:100%;max-width:600px;background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.search-input{border:none;border-bottom:1px solid var(--border);border-radius:0;font-size:1.1rem;padding:18px 20px}.search-input:focus{border-color:var(--border)}.search-results{max-height:60vh;overflow-y:auto;padding:8px}.search-group{margin-bottom:8px}.search-group-title{font-size:.72rem;text-transform:uppercase;letter-spacing:1px;font-weight:800;color:var(--muted);padding:8px 10px 4px}.search-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 12px;border-radius:10px;color:var(--text)}.search-item:hover{background:var(--card-2)}.si-icon{font-size:1.1rem;width:24px;text-align:center;flex-shrink:0}.si-label{font-weight:700}.si-sub{margin-left:auto;font-size:.8rem;color:var(--muted)}kbd{background:var(--bg-soft);border:1px solid var(--border);border-radius:5px;padding:1px 6px;font-size:.8rem;font-family:inherit}.check-row{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:9px;background:var(--bg-soft);cursor:pointer;font-size:.92rem}.check-row input{margin-top:3px;flex-shrink:0}.builder-line{min-height:52px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px;border-radius:12px;border:1px dashed var(--border);background:var(--bg-soft);margin-bottom:12px}.builder-pool{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:8px 14px;border-radius:10px;background:var(--card-2);border:1px solid var(--border);font-weight:600;font-size:.95rem;color:var(--text);transition:border-color .12s ease}.chip:hover{border-color:var(--primary)}.chip-picked{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-2)}.chart{display:flex;align-items:flex-end;gap:4px;height:130px;padding-top:10px}.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}.chart-bar{width:100%;min-height:3px;border-radius:5px 5px 0 0;background:linear-gradient(180deg,var(--primary-2),var(--primary));position:relative;transition:height .4s ease}.chart-val{position:absolute;top:-16px;left:50%;transform:translate(-50%);font-size:.68rem;font-weight:700;color:var(--text-dim)}.chart-label{font-size:.68rem;color:var(--muted)}.rec-dot{color:var(--danger);animation:blink 1s steps(2,start) infinite;font-size:1.1rem}@keyframes blink{to{visibility:hidden}}.record-compare audio{margin-top:4px;border-radius:10px}.speak-hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.reading-line{padding:10px 12px;border-radius:10px;transition:background .15s ease}.reading-line.active{background:var(--primary-soft)}.reading-line.done{opacity:.75}.pair-word.correct-pair{border-color:var(--success);background:var(--success-soft);color:var(--text)}.pair-word.wrong-pair{border-color:var(--danger);background:var(--danger-soft);color:var(--text)}.auth-panel{max-width:400px}.auth-head{text-align:center;padding:24px 20px 14px}.auth-head .brand-badge{width:46px;height:46px;margin:0 auto;font-size:1.3rem}.auth-error{background:var(--danger-soft);border:1px solid var(--danger);color:#fca5a5;border-radius:10px;padding:9px 12px;font-size:.88rem;margin-bottom:12px}.auth-switch{padding:14px 20px;border-top:1px solid var(--border);text-align:center;font-size:.9rem;color:var(--text-dim)}.link-btn{color:var(--primary-2);font-weight:700;background:none}.link-btn:hover{text-decoration:underline}.account-btn{flex-shrink:0}.account-wrap{position:relative;flex-shrink:0}.avatar-btn{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#fff;font-weight:800;border:none;flex-shrink:0}.avatar-btn:hover{filter:brightness(1.1)}.account-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:220px;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:8px;z-index:60}.account-info{padding:10px 12px}.account-name{font-weight:700}.account-email{font-size:.82rem;color:var(--muted)}.account-sync{padding:4px 12px 10px;font-size:.78rem;color:var(--muted)}.account-sync[data-state=synced]{color:var(--success)}.account-sync[data-state=error]{color:var(--danger)}.account-sync[data-state=syncing]{color:var(--warning)}.async-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:44px 20px;min-height:180px}.async-state p{margin:0}.async-icon{font-size:2.2rem;line-height:1}body{overflow-wrap:break-word}.big-word{font-size:clamp(1.75rem,9vw,2.6rem);overflow-wrap:anywhere}.section-title,.reminder-banner{flex-wrap:wrap}.reminder-banner .rb-cta{margin-left:auto}.formula{overflow-x:auto}.grade-row .btn{flex:1 1 auto;min-width:88px}@media (max-width: 900px){.navbar-inner{gap:10px}.streak-pill{margin-left:auto}}@media (max-width: 620px){.container{padding:0 14px}.page{padding-top:20px;padding-bottom:60px}.brand-text{display:none}.navbar-inner{gap:8px}.theme-toggle,.icon-btn{width:38px;height:38px;font-size:1rem}.avatar-btn{width:36px;height:36px}.nav-toggle{width:38px;height:38px}.streak-pill{padding:5px 10px;font-size:.8rem}.card{padding:16px}.hero{padding:22px 18px;border-radius:16px}.flashcard{height:clamp(300px,58vh,420px)}.flashcard-face{padding:18px}.mic-btn{width:92px;height:92px;font-size:2.2rem}.toast{left:12px;right:12px;bottom:12px;max-width:none}.search-overlay{padding:8vh 10px 10px}.search-results{max-height:66vh}.option{padding:13px 14px;font-size:.95rem}.empty-state{padding:34px 12px}.async-state{padding:32px 12px}.chart{height:110px;gap:2px}.chart-label,.chart-val{font-size:.6rem}}@media (max-width: 380px){.streak-pill{display:none}.big-word{font-size:clamp(1.5rem,8.5vw,2rem)}.stat .num{font-size:1.6rem}}@media (max-height: 480px) and (orientation: landscape){.flashcard{height:250px}.mic-btn{width:74px;height:74px;font-size:1.8rem}.navbar{position:static}}.check-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--primary)}input[type=range]{width:100%;height:26px;accent-color:var(--primary);background:transparent;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;margin-top:-8px;border-radius:50%;background:var(--primary-2);border:2px solid var(--card);box-shadow:var(--shadow-sm)}input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:var(--bg-soft);border:1px solid var(--border)}input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--primary-2);border:2px solid var(--card)}input[type=range]::-moz-range-track{height:6px;border-radius:999px;background:var(--bg-soft)}.check-row{min-height:40px;align-items:center}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 16px;background:radial-gradient(1200px 600px at 20% -10%,#1b2140 0%,var(--bg) 55%)}.auth-card{width:100%;max-width:440px}html[data-theme=light] .auth-page{background:radial-gradient(1200px 600px at 20% -10%,#e6ebfb 0%,var(--bg) 55%) var(--bg)}.account-divider{height:1px;background:var(--border);margin:6px 0}.admin-panel{display:flex;flex-direction:column;gap:0}.admin-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:20px;flex-wrap:wrap}.admin-tab-bar{display:flex;gap:4px;flex-wrap:wrap;border-bottom:2px solid var(--border);margin-bottom:24px}.admin-tab{padding:10px 18px;border-radius:10px 10px 0 0;font-weight:700;font-size:.92rem;color:var(--text-dim);background:none;border:1px solid transparent;border-bottom:none;margin-bottom:-2px;transition:color .15s ease,background .15s ease,border-color .15s ease;white-space:nowrap}.admin-tab:hover{color:var(--text);background:var(--card)}.admin-tab.active{color:var(--text);background:var(--card);border-color:var(--border);border-bottom-color:var(--card)}.admin-content{animation:fade .25s ease}.admin-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-bottom:20px}.admin-stat-card{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-sm);min-width:0}.admin-stat-icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem;flex-shrink:0}.admin-stat-body{min-width:0}.admin-stat-value{font-size:1.55rem;font-weight:800;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-stat-label{font-size:.8rem;color:var(--text-dim);font-weight:600;margin-top:2px}.admin-stat-sub{font-size:.75rem;color:var(--muted);margin-top:1px}.admin-charts-row{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:20px}.admin-mini-chart{display:flex;align-items:flex-end;gap:5px;height:110px}.admin-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%}.admin-chart-bar{width:100%;border-radius:5px 5px 0 0;min-height:3px;transition:height .35s ease}.admin-chart-label{font-size:.62rem;color:var(--muted);text-align:center;line-height:1}.admin-table-wrap{overflow-x:auto;border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:14px}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem;white-space:nowrap}.admin-table thead tr{background:var(--bg-soft);border-bottom:1px solid var(--border)}.admin-table th{padding:10px 14px;text-align:left;font-weight:700;color:var(--text-dim);font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;-webkit-user-select:none;user-select:none}.admin-th-sort{cursor:pointer}.admin-th-sort:hover{color:var(--text)}.admin-table td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table tbody tr:last-child td{border-bottom:none}.admin-tr-hover:hover td{background:var(--card-2)}.admin-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:4px}.admin-role-badge,.up-role-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:700}.admin-role-admin,.up-role-admin{background:#6366f12e;color:var(--primary-2);border:1px solid rgba(99,102,241,.35)}.admin-role-user,.up-role-user{background:var(--bg-soft);color:var(--text-dim);border:1px solid var(--border)}.admin-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#06081299;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px}.admin-modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-width:580px;max-height:90vh;display:flex;flex-direction:column;animation:fade .2s ease}.admin-modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.admin-modal-body{overflow-y:auto;padding:18px 20px 20px;display:flex;flex-direction:column;gap:0}.admin-user-detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:18px}.admin-detail-row{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);font-size:.88rem}.admin-detail-row:nth-child(2n){border-right:none}.admin-detail-row:nth-last-child(-n+2){border-bottom:none}.admin-detail-row span{font-size:.75rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.admin-detail-section{padding-top:16px;margin-top:16px;border-top:1px solid var(--border)}.admin-detail-section h3{margin-bottom:12px;font-size:.88rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim)}.admin-field-label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.9rem}.up-panel{max-width:680px}.up-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}.up-pw-wrap{position:relative}.up-pw-wrap .input{padding-right:46px}.up-pw-toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:1rem;background:none;border:none;cursor:pointer;padding:2px;line-height:1}@media (max-width: 820px){.admin-charts-row{grid-template-columns:1fr}.admin-stat-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}@media (max-width: 620px){.admin-tab{padding:8px 12px;font-size:.85rem}.admin-user-detail-grid{grid-template-columns:1fr}.admin-detail-row{border-right:none}.admin-detail-row:nth-last-child(-n+2){border-bottom:1px solid var(--border)}.admin-detail-row:last-child{border-bottom:none}.up-panel{max-width:100%}}html[data-theme=light] .admin-table thead tr,html[data-theme=light] .admin-tr-hover:hover td{background:var(--bg-soft)}html[data-theme=light] .admin-modal{background:var(--card)}.level-text{color:color-mix(in srgb,var(--level) 55%,var(--text))}.text-wrong{color:#fca5a5}.text-right{color:#86efac}html[data-theme=light] .text-wrong{color:#b91c1c}html[data-theme=light] .text-right{color:#15803d}html:not([data-theme=light]) .up-role-admin{color:#a5b4fc}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.plan-list{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}.plan-task{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card-2);color:var(--text);text-decoration:none;transition:border-color .15s ease,transform .15s ease}.plan-task:hover{border-color:var(--primary);transform:translate(2px)}.plan-check{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:.85rem;border:2px solid var(--border)}.plan-task.is-done .plan-check{background:var(--success);border-color:var(--success);color:#fff}.plan-task.is-done .plan-title{text-decoration:line-through;color:var(--text-dim)}.plan-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.plan-title{font-weight:700}.plan-detail{font-size:.85rem;color:var(--text-dim)}.plan-progress{margin-top:6px;max-width:220px}.plan-progress>span{background:linear-gradient(90deg,var(--primary),var(--primary-2))}.plan-go{flex:none;color:var(--primary-2);font-weight:800}html[data-theme=light] .plan-go{color:var(--primary)}.plan-done{margin:14px 0 0;font-weight:600}.text-close{color:#fcd34d}html[data-theme=light] .text-close{color:#b45309}.spoken-word{margin-right:.3em}.spoken-word.is-ok{color:#86efac}.spoken-word.is-close{color:#fcd34d;text-decoration:underline dotted;text-underline-offset:4px}.spoken-word.is-missed{color:#fca5a5;text-decoration:line-through;text-decoration-thickness:2px}html[data-theme=light] .spoken-word.is-ok{color:#15803d}html[data-theme=light] .spoken-word.is-close{color:#b45309}html[data-theme=light] .spoken-word.is-missed{color:#b91c1c}.speech-summary{margin-top:12px;display:grid;gap:4px}.speech-score{font-size:1.15rem}.speech-heard{font-size:.9rem;overflow-wrap:anywhere}.speech-tips{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}.speech-tips li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--card-2);border:1px solid var(--border);font-size:.92rem}.stat-sub{display:block;margin-top:4px;font-size:.78rem;color:var(--text-dim);cursor:help}.streak-banner{border-color:#f59e0b73}.chart-frozen{font-size:.7rem;line-height:1}.card-title{font-size:1.17em;margin:0}.welcome{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 24px;margin-bottom:22px}.welcome-title{font-size:2rem;margin:2px 0 6px}.welcome-sub{margin:0;max-width:620px}.welcome-streak{color:var(--text);font-weight:600}.welcome-cta{white-space:normal;text-align:left}.level-list{list-style:none;margin:4px -10px 0;padding:0;display:grid;gap:2px}.level-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:6px 12px;padding:10px;border-radius:var(--radius-sm);color:var(--text);text-decoration:none}.level-row:hover{background:var(--card-2)}.level-row-range{margin-left:8px;font-size:.8rem}.level-row-count{font-size:.85rem;font-variant-numeric:tabular-nums}.level-row-bar{grid-column:1 / -1}.level-toggle{margin-top:8px}.quick-tile{display:flex;align-items:center;gap:14px;padding:16px 18px;color:var(--text);text-decoration:none}.quick-icon{font-size:1.7rem;flex:none}.quick-title{font-size:1rem;margin:0 0 2px}.quick-desc{display:block;font-size:.85rem;color:var(--text-dim)}@media (max-width: 560px){.welcome-title{font-size:1.55rem}.welcome-cta{width:100%;justify-content:center;text-align:center}.stat{padding:14px}.quick-grid{gap:8px}.quick-tile{padding:12px 14px}}:root{--font: "Inter Variable", "Segoe UI", system-ui, -apple-system, Roboto, Helvetica, Arial, sans-serif;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .15s;--dur: .3s;--dur-slow: .6s;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .25), 0 4px 12px rgba(0, 0, 0, .18);--shadow: 0 2px 4px rgba(0, 0, 0, .2), 0 12px 32px rgba(0, 0, 0, .32);--shadow-lift: 0 4px 8px rgba(0, 0, 0, .22), 0 18px 40px rgba(0, 0, 0, .36);--highlight: inset 0 1px 0 rgba(255, 255, 255, .05);--ring: 0 0 0 3px rgba(129, 140, 248, .55);--glow-1: rgba(99, 102, 241, .22);--glow-2: rgba(236, 72, 153, .12);--glow-3: rgba(20, 184, 166, .12)}html[data-theme=light]{--shadow-sm: 0 1px 2px rgba(30, 41, 90, .06), 0 4px 12px rgba(30, 41, 90, .06);--shadow: 0 2px 4px rgba(30, 41, 90, .05), 0 12px 32px rgba(30, 41, 90, .1);--shadow-lift: 0 4px 8px rgba(30, 41, 90, .06), 0 18px 40px rgba(30, 41, 90, .14);--highlight: inset 0 1px 0 rgba(255, 255, 255, .9);--ring: 0 0 0 3px rgba(79, 70, 229, .35);--glow-1: rgba(99, 102, 241, .16);--glow-2: rgba(236, 72, 153, .08);--glow-3: rgba(20, 184, 166, .09)}body{font-feature-settings:"cv11","ss01","ss03";text-rendering:optimizeLegibility}h1,h2,h3,.page-title,.card-title,.big-word{letter-spacing:-.02em}h1{letter-spacing:-.03em}.stat .num,.level-row-count,.speech-score{font-variant-numeric:tabular-nums}::selection{background:#6366f159}.app-shell{position:relative;isolation:isolate}.app-shell:before{content:"";position:fixed;top:-20vmax;right:-20vmax;bottom:-20vmax;left:-20vmax;z-index:-1;pointer-events:none;background:radial-gradient(38vmax 38vmax at 18% 12%,var(--glow-1),transparent 70%),radial-gradient(32vmax 32vmax at 85% 20%,var(--glow-2),transparent 70%),radial-gradient(36vmax 36vmax at 60% 95%,var(--glow-3),transparent 70%);animation:aurora 28s ease-in-out infinite alternate}@keyframes aurora{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(-3vmax,2vmax,0) scale(1.06)}to{transform:translate3d(2vmax,-2vmax,0) scale(1.02)}}.navbar{transition:box-shadow var(--dur) var(--ease-out),background var(--dur) var(--ease-out)}.navbar.is-scrolled{box-shadow:0 6px 24px #00000047}html[data-theme=light] .navbar.is-scrolled{box-shadow:0 6px 24px #1e295a14}.brand-badge{transition:transform var(--dur) var(--ease-spring)}.brand:hover .brand-badge{transform:rotate(-8deg) scale(1.06)}.card{border-radius:18px;box-shadow:var(--shadow-sm),var(--highlight)}.card-hover{transition:transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.card-hover:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift),var(--highlight)}.card-hover:active{transform:translateY(-1px) scale(.995)}.btn{transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur) var(--ease-out),background var(--dur-fast) ease,border-color var(--dur-fast) ease,color var(--dur-fast) ease}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{box-shadow:0 1px #ffffff2e inset,0 6px 18px -6px #6366f1b3;background-size:160% 160%;background-position:0% 50%;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur) var(--ease-out),background-position var(--dur-slow) var(--ease-out)}.btn-primary:hover:not(:disabled){background-position:100% 50%;box-shadow:0 1px #fff3 inset,0 10px 26px -8px #6366f1d9}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--ring);border-radius:10px}.btn:focus-visible,.card:focus-visible{box-shadow:var(--ring),var(--shadow-sm)}.hero{position:relative;overflow:hidden;box-shadow:var(--shadow),var(--highlight)}.hero h1{background:linear-gradient(120deg,var(--text) 30%,var(--primary-2) 70%,#ec4899);-webkit-background-clip:text;background-clip:text;color:transparent}html[data-theme=light] .hero h1{background-image:linear-gradient(120deg,#1a1f36 30%,#4338ca 70%,#be185d)}.welcome-title{background:linear-gradient(120deg,var(--text) 55%,var(--primary-2));-webkit-background-clip:text;background-clip:text;color:transparent}html[data-theme=light] .welcome-title{background-image:linear-gradient(120deg,#1a1f36 55%,#4338ca)}.chip-icon{flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;font-size:1.35rem;background:color-mix(in srgb,var(--chip, var(--primary)) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chip, var(--primary)) 30%,transparent);transition:transform var(--dur) var(--ease-spring)}.card-hover:hover .chip-icon{transform:scale(1.08) rotate(-4deg)}.stat{position:relative;overflow:hidden}.stat:after{content:"";position:absolute;width:120px;height:120px;right:-40px;top:-40px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--chip, var(--primary)) 22%,transparent),transparent 70%);pointer-events:none}.progress-bar>span,.level-bar>span{transform-origin:left center;animation:bar-in .9s var(--ease-out) both}@keyframes bar-in{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.plan-card.is-complete .progress-bar>span{background:linear-gradient(90deg,var(--success),#4ade80,var(--success));background-size:200% 100%;animation:bar-in .9s var(--ease-out) both,shimmer 2.4s linear infinite}.plan-task{transition:border-color var(--dur) var(--ease-out),transform var(--dur) var(--ease-out),background var(--dur) ease}.plan-task.is-done .plan-check{animation:pop .45s var(--ease-spring) both}@keyframes pop{0%{transform:scale(.4)}70%{transform:scale(1.15)}to{transform:scale(1)}}.stagger>*{animation:rise .55s var(--ease-out) both}.stagger>:nth-child(1){animation-delay:0ms}.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}.stagger>:nth-child(7){animation-delay:.36s}.stagger>:nth-child(n+8){animation-delay:.42s}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.cascade>*{animation:rise .5s var(--ease-out) both}.cascade>:nth-child(2){animation-delay:40ms}.cascade>:nth-child(3){animation-delay:80ms}.cascade>:nth-child(4){animation-delay:.12s}.cascade>:nth-child(5){animation-delay:.16s}.cascade>:nth-child(6){animation-delay:.2s}.cascade>:nth-child(n+7){animation-delay:.24s}@supports (animation-timeline: view()){.scroll-reveal{animation:rise linear both;animation-timeline:view();animation-range:entry 0% entry 40%}}.page{animation:none}.route-view{animation:rise .4s var(--ease-out)}.skeleton{display:grid;gap:12px;padding:8px 0}.skeleton-line{height:14px;border-radius:8px;background:linear-gradient(90deg,var(--card-2) 25%,var(--border) 50%,var(--card-2) 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}.skeleton-line.is-title{height:26px;width:45%}.skeleton-line.is-short{width:60%}.skeleton-block{height:120px;border-radius:16px;background:linear-gradient(90deg,var(--card) 25%,var(--card-2) 50%,var(--card) 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border:1px solid var(--border)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-new(root){animation:theme-reveal .55s var(--ease-out)}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--vt-x, 50%) var(--vt-y, 0%))}to{clip-path:circle(150vmax at var(--vt-x, 50%) var(--vt-y, 0%))}}.theme-toggle:not(.search-btn){transition:transform var(--dur) var(--ease-spring)}.theme-toggle:not(.search-btn):hover{transform:rotate(18deg)}.toast,.admin-modal,.auth-card{box-shadow:var(--shadow-lift),var(--highlight)}kbd{display:inline-grid;place-items:center;min-width:1.5em;height:1.5em;padding:0 .4em;margin-left:.45em;border-radius:6px;font:600 .72em/1 var(--font);background:#ffffff24;border:1px solid rgba(255,255,255,.22);color:inherit;vertical-align:middle}.btn-ghost kbd,.option kbd{background:var(--card-2);border-color:var(--border)}@media (hover: none),(pointer: coarse){kbd{display:none}}.session-bar{height:6px;max-width:620px;margin:0 auto 18px}.session-bar>span{transition:width .45s var(--ease-out)}.card-enter{animation:card-in .45s var(--ease-out) both}@keyframes card-in{0%{opacity:0;transform:translate(28px) scale(.98)}to{opacity:1;transform:none}}.study-controls{position:relative;max-width:620px;margin:22px auto 0}.xp-pop-anchor{position:absolute;left:50%;top:-6px;width:0;height:0;pointer-events:none}.xp-pop{position:absolute;left:0;transform:translate(-50%);white-space:nowrap;font-weight:800;font-size:.95rem;padding:4px 10px;border-radius:999px;color:#fff;background:linear-gradient(135deg,var(--primary),#a855f7);box-shadow:0 6px 18px -6px #6366f1cc;animation:xp-float 1.1s var(--ease-out) forwards}@keyframes xp-float{0%{opacity:0;transform:translate(-50%,6px) scale(.8)}20%{opacity:1;transform:translate(-50%,-6px) scale(1.05)}70%{opacity:1;transform:translate(-50%,-26px) scale(1)}to{opacity:0;transform:translate(-50%,-40px) scale(.98)}}.option{display:flex;align-items:center;gap:10px;transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur) ease,background var(--dur) ease}.option:hover:not(:disabled){transform:translateY(-2px)}.option .option-key{margin-left:0;flex:none}.option.correct{animation:bounce-in .5s var(--ease-spring)}.option.wrong{animation:shake .45s ease}@keyframes bounce-in{0%{transform:scale(1)}40%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@property --pct{syntax: "<number>"; inherits: false; initial-value: 0;}.score-ring-chart{--track: var(--card-2);width:132px;height:132px;margin:4px auto 14px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--ring) calc(var(--pct) * 1%),var(--track) 0);animation:ring-fill 1.2s var(--ease-out) both}.score-ring-chart>span{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;background:var(--card);font-size:1.7rem;font-weight:800;font-variant-numeric:tabular-nums}@keyframes ring-fill{0%{--pct: 0}}.is-celebrating{position:relative;overflow:hidden}.celebration{position:absolute;left:50%;top:38%;width:0;height:0;pointer-events:none;z-index:1}.confetti{position:absolute;width:var(--w);height:calc(var(--w) * .45);background:var(--c);border-radius:2px;opacity:0;animation:confetti 1.5s var(--ease-out) var(--d) forwards}@keyframes confetti{0%{opacity:1;transform:translate(0) rotate(0) scale(.6)}70%{opacity:1}to{opacity:0;transform:translate(var(--x),calc(var(--y) + 160px)) rotate(var(--r)) scale(1)}}.example{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:2px;padding-bottom:2px}.example>.icon-btn{flex:none}.lesson-nav{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.lesson-nav-btn{display:flex;flex-direction:column;gap:4px;text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;padding:16px 18px}.lesson-nav-btn.is-next{text-align:right;align-items:flex-end}.lesson-nav-dir{font-size:.8rem;font-weight:700;color:var(--primary-2)}html[data-theme=light] .lesson-nav-dir{color:var(--primary)}.lesson-nav-title{font-weight:700}@media (max-width: 560px){.lesson-nav{grid-template-columns:1fr}.lesson-nav-btn.is-next{text-align:left;align-items:flex-start}}.course-tile{display:flex;align-items:flex-start;gap:14px;text-align:left;font:inherit;color:var(--text);cursor:pointer;width:100%}.course-tile-title{display:block;font-weight:700;margin:2px 0 4px}.course-tile-desc{display:block;font-size:.88rem;color:var(--text-dim);line-height:1.45}.welcome-page{min-height:100vh;padding:24px 16px 48px;display:flex;justify-content:center;align-items:flex-start;position:relative;isolation:isolate}.welcome-page:before{content:"";position:fixed;top:-20vmax;right:-20vmax;bottom:-20vmax;left:-20vmax;z-index:-1;pointer-events:none;background:radial-gradient(38vmax 38vmax at 18% 12%,var(--glow-1),transparent 70%),radial-gradient(32vmax 32vmax at 85% 20%,var(--glow-2),transparent 70%),radial-gradient(36vmax 36vmax at 60% 95%,var(--glow-3),transparent 70%);animation:aurora 28s ease-in-out infinite alternate}.welcome-shell{width:100%;max-width:640px}.welcome-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.welcome-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:18px}.welcome-step{height:5px;border-radius:999px;background:var(--card-2);transition:background var(--dur) var(--ease-out)}.welcome-step.is-done{background:linear-gradient(90deg,var(--primary),var(--primary-2))}.welcome-card{padding:28px}.welcome-q{font-size:1.7rem;margin:4px 0 6px;outline:none}.welcome-q:focus,.welcome-q:focus-visible{box-shadow:none}.choice-group{border:0;margin:18px 0 0;padding:0;display:grid;gap:10px}.choice-card{position:relative;display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:14px;cursor:pointer;border:1.5px solid var(--border);background:var(--card-2);transition:border-color var(--dur) var(--ease-out),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.choice-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--chip) 60%,var(--border))}.choice-card.is-selected{border-color:var(--chip);box-shadow:0 0 0 3px color-mix(in srgb,var(--chip) 22%,transparent)}.choice-card:has(input:focus-visible){box-shadow:var(--ring)}.choice-title{display:block;font-weight:700}.choice-desc{display:block;font-size:.88rem;color:var(--text-dim)}.choice-check{margin-left:auto;flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:.8rem;font-weight:800;color:#fff;background:var(--chip);opacity:0;transform:scale(.5);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-spring)}.choice-card.is-selected .choice-check{opacity:1;transform:scale(1)}.welcome-summary{list-style:none;margin:16px 0;padding:0;display:grid;gap:8px}.welcome-summary li{padding:10px 14px;border-radius:12px;background:var(--card-2);border:1px solid var(--border)}.welcome-summary li span{margin-right:8px}.welcome-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;flex-wrap:wrap}@media (max-width: 560px){.welcome-card{padding:20px}.welcome-q{font-size:1.4rem}.welcome-actions>.btn{flex:1;justify-content:center}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.app-shell:before,.welcome-page:before{animation:none}.celebration{display:none}.scroll-reveal{animation:none!important}}.h3-size{font-size:1.17em}.h4-size{font-size:1em}
