:root{--bg:#fbf9f5;--bg-tint:#f7f1e8;--sidebar:#f3ecdf;--surface:#fff;--surface-2:#f7f2ea;--border:#e7ddcd;--border-strong:#dccdb6;--text:#2a1c14;--text-soft:#4a3228;--muted:#7a6a58;--faint:#a3927d;--accent:#bf4d2b;--accent-hover:#a53f21;--accent-weak:#bf4d2b1a;--accent-ring:#bf4d2b2e;--gold:#c9a96e;--olive:#6f8a52;--success-bg:#6f8a5224;--success-text:#4d6636;--danger:#b23a2e;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #2a1c140a, 0 8px 24px #2a1c140f}@media (prefers-color-scheme:dark){:root:not([data-theme]){--bg:#1a1410;--bg-tint:#211812;--sidebar:#201711;--surface:#241a14;--surface-2:#2b201a;--border:#3a2c22;--border-strong:#4a3729;--text:#f3ece1;--text-soft:#e2d5c6;--muted:#b6a794;--faint:#8b7c69;--accent:#d4856a;--accent-hover:#e0967c;--accent-weak:#d4856a29;--accent-ring:#d4856a38;--success-bg:#6f8a5233;--success-text:#a8c088;--shadow:0 1px 2px #0000004d, 0 10px 30px #00000059}}:root[data-theme=dark]{--bg:#1a1410;--bg-tint:#211812;--sidebar:#201711;--surface:#241a14;--surface-2:#2b201a;--border:#3a2c22;--border-strong:#4a3729;--text:#f3ece1;--text-soft:#e2d5c6;--muted:#b6a794;--faint:#8b7c69;--accent:#d4856a;--accent-hover:#e0967c;--accent-weak:#d4856a29;--accent-ring:#d4856a38;--success-bg:#6f8a5233;--success-text:#a8c088;--shadow:0 1px 2px #0000004d, 0 10px 30px #00000059}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{background:var(--surface-2);border-radius:5px;padding:.1em .35em;font-size:.85em}.btn{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.7rem 1rem;font-family:inherit;font-size:.95rem;font-weight:600;transition:background .14s,border-color .14s,transform 50ms;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg, var(--accent), var(--accent-hover));color:#fff;box-shadow:0 1px 2px #9f3f214d}.btn-primary:not(:disabled):hover{background:var(--accent-hover)}.btn-ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong);width:100%}.btn-ghost:not(:disabled):hover{background:var(--surface-2)}.btn-link{color:var(--muted);background:0 0;padding:.35rem;font-weight:500}.btn-link:not(:disabled):hover{color:var(--accent)}.field{flex-direction:column;gap:.4rem;display:flex}.label{color:var(--muted);font-size:.82rem;font-weight:600}.input{width:100%;color:var(--text);background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);outline:none;padding:.7rem .8rem;font-family:inherit;font-size:1rem;transition:border-color .14s,box-shadow .14s}.input::placeholder{color:var(--faint)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.code-input{letter-spacing:.5em;text-align:center;font-size:1.15rem;font-weight:600}.stack{flex-direction:column;gap:.85rem;display:flex}.stack-lg{flex-direction:column;gap:1.25rem;max-width:620px;display:flex}.auth-wrap{background:radial-gradient(120% 90% at 50% -10%, var(--bg-tint), var(--bg));place-items:center;min-height:100dvh;padding:1.5rem;display:grid;position:relative;overflow:hidden}.auth-wrap:before,.auth-wrap:after{content:"";filter:blur(90px);z-index:0;pointer-events:none;border-radius:50%;position:absolute}.auth-wrap:before{background:radial-gradient(circle,#bf4d2b47,#0000 68%);width:520px;height:520px;top:-220px;right:-160px}.auth-wrap:after{background:radial-gradient(circle,#c9a96e42,#0000 68%);width:460px;height:460px;bottom:-220px;left:-160px}.auth-card{z-index:1;background:var(--surface);border:1px solid var(--border);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:20px;padding:2.25rem;position:relative}.auth-brand{align-items:center;gap:.55rem;margin-bottom:1.5rem;display:flex}.auth-brand-name{letter-spacing:-.01em;font-size:1.05rem;font-weight:700}.auth-title{letter-spacing:-.02em;margin:0 0 .25rem;font-size:1.6rem}.auth-subtitle{color:var(--muted);margin:0 0 1.5rem}.auth-foot{z-index:1;margin-top:1.25rem;font-size:.9rem;position:relative}.auth-foot a{color:var(--muted)}.brand-mark{color:#fff;background:linear-gradient(135deg, var(--accent), var(--gold));border-radius:9px;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex;box-shadow:0 2px 8px #bf4d2b4d}.brand-mark.lg{border-radius:12px;width:40px;height:40px}.divider{color:var(--faint);align-items:center;gap:.75rem;margin:1.25rem 0;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.notice{color:var(--muted);margin:1rem 0 0;font-size:.9rem}.error{color:var(--danger);margin:1rem 0 0;font-size:.9rem}.banner-warn{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--muted);margin:0 0 1.25rem;padding:.65rem .75rem;font-size:.85rem}.shell{grid-template-columns:260px 1fr;min-height:100dvh;display:grid}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;gap:1.25rem;padding:1.15rem .9rem;display:flex}.sidebar-brand{align-items:center;gap:.55rem;padding:.35rem .5rem;display:flex}.brand-name{letter-spacing:-.01em;font-weight:700}.plan-badge{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;margin-left:auto;padding:.12rem .5rem;font-size:.68rem;font-weight:700}.user-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:.65rem;padding:.6rem;display:flex}.avatar{color:#fff;background:linear-gradient(135deg, var(--accent), var(--gold));border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:.85rem;font-weight:700;display:inline-flex}.avatar.sm{width:28px;height:28px;font-size:.75rem}.user-meta{flex-direction:column;min-width:0;display:flex}.user-name{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.user-sub{color:var(--muted);font-size:.72rem}.nav{flex-direction:column;flex:1;gap:1.1rem;display:flex}.nav-group{flex-direction:column;gap:.15rem;display:flex}.nav-label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);padding:0 .6rem .35rem;font-size:.68rem;font-weight:700}.nav-item{border-radius:var(--radius-sm);width:100%;color:var(--text-soft);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.65rem;padding:.55rem .6rem;font-family:inherit;font-size:.92rem;font-weight:500;transition:background .12s,color .12s;display:flex}.nav-item:disabled{opacity:1}.nav-item:not(.soon):not(.active):hover{background:var(--surface)}.nav-item.active{background:var(--accent-weak);color:var(--accent);box-shadow:inset 2px 0 0 var(--accent);font-weight:600}.nav-item.soon{color:var(--faint);cursor:default}.nav-item-label{flex:1}.soon-badge{text-transform:uppercase;letter-spacing:.03em;color:var(--faint);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.08rem .4rem;font-size:.62rem;font-weight:700}.sidebar-foot{flex-direction:column;gap:.75rem;display:flex}.upgrade-cta{color:#fff;border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--accent), var(--gold));cursor:pointer;opacity:.95;border:none;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.7rem;font-family:inherit;font-size:.9rem;font-weight:700;display:flex}.upgrade-cta:disabled{cursor:default}.foot-links{text-align:center;font-size:.78rem}.foot-links a{color:var(--faint)}.main{flex-direction:column;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 85%, transparent);justify-content:space-between;align-items:center;gap:.5rem;padding:1rem 1.75rem;display:flex}.theme-toggle{width:36px;height:36px;color:var(--muted);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;transition:color .14s,border-color .14s,transform .12s;display:inline-flex}.theme-toggle:hover{color:var(--accent);border-color:var(--border-strong)}.theme-toggle:active{transform:scale(.92)rotate(-8deg)}.topbar-title{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:1.15rem;font-weight:700;overflow:hidden}.menu-toggle{width:40px;height:40px;color:var(--text-soft);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;margin-right:.5rem;display:none}.menu-toggle:hover{color:var(--accent)}.scrim{border:none;padding:0;display:none}body.no-scroll{overflow:hidden}.account-btn{color:var(--muted);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .5rem .3rem .35rem;display:flex}.account-btn:hover{color:var(--accent);border-color:var(--border-strong)}.content{padding:1.75rem;padding-bottom:max(1.75rem, env(safe-area-inset-bottom));flex:1}.content>*{margin-inline:auto}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.35rem 1.4rem}.panel-head{align-items:center;gap:.85rem;margin-bottom:1.1rem;display:flex}.panel-head>div:not(.panel-icon){flex:1}.panel-icon{width:38px;height:38px;color:var(--accent);background:var(--accent-weak);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.panel-title{margin:0;font-size:1.05rem;font-weight:700}.panel-sub{color:var(--muted);margin:.1rem 0 0;font-size:.85rem}.plan-chip{text-transform:uppercase;letter-spacing:.03em;color:var(--text-soft);background:var(--surface-2);border:1px solid var(--border-strong);border-radius:999px;padding:.25rem .7rem;font-size:.72rem;font-weight:700}.plan-chip.pro,.plan-badge.pro{color:#fff;background:linear-gradient(135deg, var(--accent), var(--gold));border-color:#0000}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem 1.5rem;margin:0;display:grid}.detail-grid dt{text-transform:uppercase;letter-spacing:.03em;color:var(--faint);margin-bottom:.2rem;font-size:.75rem;font-weight:600}.detail-grid dd{color:var(--text);word-break:break-word;margin:0;font-size:1rem}.info-banner{color:var(--success-text);background:var(--success-bg);border:1px solid color-mix(in srgb, var(--olive) 35%, transparent);border-radius:var(--radius-sm);align-items:flex-start;gap:.6rem;padding:.75rem .85rem;font-size:.9rem;display:flex}.info-banner svg{flex-shrink:0;margin-top:1px}.sign-out{align-self:flex-start;width:auto}@media (width<=860px){.shell{grid-template-columns:1fr}.menu-toggle{display:inline-flex}.sidebar{z-index:50;width:min(84vw,300px);padding-top:max(1.15rem, env(safe-area-inset-top));padding-bottom:max(1.15rem, env(safe-area-inset-bottom));transition:transform .25s;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%);box-shadow:0 0 40px #140c0840}.shell.menu-open .sidebar{transform:translate(0)}.scrim{z-index:40;opacity:0;pointer-events:none;background:#140c0873;transition:opacity .25s;display:block;position:fixed;inset:0}.shell.menu-open .scrim{opacity:1;pointer-events:auto}.nav-item{padding:.7rem .65rem;font-size:.98rem}.topbar{padding:.7rem 1rem;padding-top:max(.7rem, env(safe-area-inset-top))}.content{padding:1.15rem 1rem;padding-bottom:max(1.15rem, env(safe-area-inset-bottom))}}@media (width<=560px){.flashcard{min-height:220px;padding:1.5rem}.flashcard-text{font-size:1.6rem}.quiz-prompt{padding:1.35rem;font-size:1.4rem}.mode-grid{grid-template-columns:1fr}.vocab-toolbar{flex-wrap:wrap}.search{flex-basis:100%}}.muted{color:var(--muted)}.center{place-items:center;min-height:100dvh;display:grid}.vocab{max-width:760px}.vocab-toolbar{align-items:center;gap:.85rem;margin-bottom:1.4rem;display:flex}.search{flex:1;min-width:0}.search .input{padding:.6rem .8rem}.vocab-dict-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23948a7d' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right .7rem center;background-repeat:no-repeat;flex:0 auto;width:auto;max-width:15rem;padding:.6rem 2rem .6rem .8rem}.vocab-count{color:var(--muted);white-space:nowrap;font-size:.85rem}.vocab-refresh{width:auto;padding:.6rem .85rem}.vocab-group{margin-bottom:1.6rem}.vocab-group-head{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;margin-bottom:.6rem;padding-bottom:.4rem;display:flex}.vocab-group-name{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0;font-size:.78rem;font-weight:700}.vocab-group-count{color:var(--faint);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:.05rem .45rem;font-size:.72rem;font-weight:700}.word-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.word-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);content-visibility:auto;contain-intrinsic-size:auto 3.25rem;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;padding:.7rem .9rem;transition:border-color .12s;display:flex}.word-row:hover{border-color:var(--border-strong)}.word-main{flex-wrap:wrap;flex:1;align-items:baseline;gap:.5rem;min-width:0;display:flex}.word-text{color:var(--text);font-size:1rem;font-weight:600}.word-tr{color:var(--faint);font-size:.85rem}.pos{text-transform:uppercase;letter-spacing:.03em;color:var(--accent);background:var(--accent-weak);border-radius:999px;padding:.08rem .45rem;font-size:.68rem;font-weight:600}.word-translation{color:var(--text-soft);text-align:right;font-size:.95rem}.state-inline{padding:.5rem 0}.state-msg{text-align:center;flex-direction:column;align-items:center;gap:.9rem;max-width:460px;margin:3rem auto 0;display:flex}.state-msg .panel-title,.state-msg .muted{margin:0}.state-msg .btn{width:auto}.empty-mark{width:60px;height:60px;color:var(--accent);background:var(--accent-weak);border-radius:18px;justify-content:center;align-items:center;display:inline-flex}.spinner{border:2.5px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=560px){.word-main{flex-basis:100%}.word-translation{text-align:left;margin-right:auto}}.panel-actions{flex-wrap:wrap;gap:.6rem;margin-top:.4rem;display:flex}.panel-actions .btn{width:auto}.btn-danger-ghost{background:var(--surface);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 35%, var(--border))}.btn-danger-ghost:disabled{opacity:.5}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.85rem;display:grid}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:.15rem;padding:1.1rem 1.2rem;display:flex}.stat-value{letter-spacing:-.02em;color:var(--text);font-size:1.7rem;font-weight:800}.stat-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.75rem;font-weight:600}.rank-list{flex-direction:column;gap:.7rem;display:flex}.rank-row{grid-template-columns:90px 1fr 36px;align-items:center;gap:.75rem;display:grid}.rank-name{color:var(--text-soft);font-size:.85rem;font-weight:600}.rank-bar-track{background:var(--surface-2);border-radius:999px;height:10px;overflow:hidden}.rank-bar{border-radius:999px;min-width:2px;height:100%;transition:width .3s}.rank-count{color:var(--muted);text-align:right;font-size:.85rem;font-weight:600}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;gap:.25rem;padding:.25rem;display:inline-flex}.segmented-item{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:.45rem 1.1rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:background .12s,color .12s}.segmented-item:hover{color:var(--text)}.segmented-item.active{color:var(--text);background:var(--surface);box-shadow:var(--shadow)}.upgrade-hero{text-align:center;background:radial-gradient(120% 130% at 50% -20%, var(--accent-weak), var(--surface));flex-direction:column;align-items:center;gap:.5rem;display:flex}.upgrade-hero .brand-mark{margin-bottom:.4rem}.upgrade-hero .btn{width:auto;margin-top:.6rem}.compare{flex-direction:column;display:flex}.compare-head,.compare-row{grid-template-columns:1fr 84px 84px;align-items:center;gap:.5rem;display:grid}.compare-head{border-bottom:1px solid var(--border);margin-bottom:.3rem;padding-bottom:.6rem}.compare-col{text-align:center;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.72rem;font-weight:700}.compare-col.pro{color:var(--accent)}.compare-row{border-bottom:1px solid var(--border);padding:.55rem 0}.compare-row:last-child{border-bottom:none}.compare-label{color:var(--text-soft);font-size:.9rem}.compare-cell{text-align:center;color:var(--muted);font-size:.9rem;font-weight:600}.compare-cell.pro{color:var(--text)}.mode-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.mode-card{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;flex-direction:column;gap:.4rem;padding:1.5rem;font-family:inherit;transition:border-color .12s,transform 50ms;display:flex}.mode-card:disabled{opacity:.55;cursor:not-allowed}.mode-icon{width:44px;height:44px;color:var(--accent);background:var(--accent-weak);border-radius:12px;justify-content:center;align-items:center;margin-bottom:.4rem;display:inline-flex}.mode-name{color:var(--text);font-size:1.1rem;font-weight:700}.mode-desc{color:var(--muted);font-size:.88rem}.practice{max-width:620px;margin:0 auto;position:relative}.practice-bar{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.practice-actions{justify-content:center;gap:.75rem;margin-top:1.25rem;display:flex}.practice-actions .btn{width:auto}.flashcard{border:1px solid var(--border);background:var(--surface);width:100%;min-height:260px;box-shadow:var(--shadow);cursor:pointer;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:2rem;font-family:inherit;transition:border-color .12s;display:flex}.flashcard:hover{border-color:var(--border-strong)}.flashcard.flipped{background:radial-gradient(120% 130% at 50% 0%, var(--accent-weak), var(--surface));border-color:color-mix(in srgb, var(--accent) 40%, var(--border))}.flashcard-hint{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-size:.72rem;font-weight:600}.flashcard-text{text-align:center;color:var(--text);font-size:2rem;font-weight:700}.quiz-prompt{text-align:center;color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;margin-bottom:1.1rem;padding:1.75rem;font-size:1.75rem;font-weight:700}.quiz-options{flex-direction:column;gap:.6rem;display:flex}.quiz-option{text-align:left;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;align-items:center;padding:.85rem 1rem;font-family:inherit;font-size:1rem;font-weight:600;transition:border-color .12s,background .12s;display:flex}.opt-key{width:20px;height:20px;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-right:.65rem;font-size:.72rem;font-weight:700;display:inline-flex}.quiz-option.correct .opt-key,.quiz-option.wrong .opt-key{opacity:.6}.quiz-option:not(:disabled):hover{border-color:var(--accent)}.quiz-option:disabled{cursor:default}.quiz-option.correct{color:var(--success-text);background:var(--success-bg);border-color:color-mix(in srgb, var(--olive) 45%, transparent)}.quiz-option.wrong{color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, var(--surface));border-color:color-mix(in srgb, var(--danger) 45%, transparent)}.vocab-add{white-space:nowrap;width:auto;padding:.6rem .85rem}.modal-scrim{z-index:60;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-backdrop{cursor:pointer;background:#140c0880;border:none;padding:0;position:absolute;inset:0}.modal{z-index:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:min(460px,100%);max-height:92dvh;padding:1.35rem 1.4rem;padding-bottom:max(1.35rem, env(safe-area-inset-bottom));flex-direction:column;gap:1rem;display:flex;position:relative;overflow-y:auto;box-shadow:0 10px 40px #140c084d}.modal-head{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.modal-close{width:34px;height:34px;color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:inline-flex}.modal-close:hover{color:var(--accent);background:var(--surface-2)}.modal-foot{justify-content:flex-end;align-items:center;gap:.6rem;display:flex}.modal-foot .btn{width:auto}.lang-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.review-progress{background:var(--surface-2);border-radius:999px;height:6px;margin-bottom:1rem;overflow:hidden}.review-progress>span{background:var(--accent);border-radius:999px;height:100%;transition:width .3s;display:block}.review-mode-badge{text-transform:uppercase;letter-spacing:.05em;width:fit-content;color:var(--accent);background:var(--accent-weak);border-radius:999px;margin:0 auto .85rem;padding:.2rem .7rem;font-size:.7rem;font-weight:700;display:block}.review-card{text-align:center;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:20px;flex-direction:column;align-items:center;gap:.9rem;padding:2rem 1.5rem;display:flex}.review-prompt-label{text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-size:.7rem;font-weight:700}.review-prompt{color:var(--text);font-size:1.9rem;font-weight:700;line-height:1.2}.review-prompt.cloze{font-size:1.3rem;font-weight:600}.review-sub{color:var(--muted);font-size:.95rem}.review-answer{color:var(--accent);font-size:1.35rem;font-weight:600}.reveal-word{letter-spacing:.25em;color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.55rem;font-weight:700}.review-card .input{width:100%;max-width:340px}.review-card .quiz-options{width:100%}.match-grid{grid-template-columns:1fr 1fr;gap:.6rem .9rem;display:grid}.match-col{flex-direction:column;gap:.6rem;display:flex}.match-tile{text-align:center;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;padding:.8rem .9rem;font-family:inherit;font-size:.95rem;font-weight:600;transition:border-color .12s,background .12s,opacity .2s}.match-tile:hover:not(:disabled){border-color:var(--accent)}.match-tile.selected{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.match-tile.matched{opacity:.4;cursor:default;border-style:dashed}.match-tile.wrong{border-color:color-mix(in srgb, var(--danger) 55%, transparent);background:color-mix(in srgb, var(--danger) 12%, var(--surface));color:var(--danger)}.match-tile.drop-over{border-color:var(--accent);background:var(--accent-weak);border-style:dashed}.match-tile[draggable=true]{cursor:grab}.word-actions{flex-shrink:0;gap:.2rem;display:flex}.row-icon-btn{width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.row-icon-btn:hover:not(:disabled){color:var(--accent);background:var(--surface-2);border-color:var(--border)}.row-icon-btn.danger:hover:not(:disabled){color:var(--danger)}.row-icon-btn:disabled{opacity:.5;cursor:default}.stat-grid-review{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:.6rem}.stat-grid-review .stat-tile{text-align:center;align-items:center;gap:.1rem;padding:.7rem .6rem}.stat-grid-review .stat-value{font-size:1.4rem}.gamebar{flex-wrap:wrap;gap:.5rem;display:flex}.game-pill{color:var(--text-soft);background:var(--surface);border:1px solid var(--border);border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .7rem;font-size:.82rem;font-weight:600;display:inline-flex}.game-pill svg{color:var(--accent)}.game-xp{gap:.5rem}.xp-track{background:var(--surface-2);border-radius:999px;width:56px;height:6px;overflow:hidden}.xp-track>span{background:linear-gradient(90deg, var(--accent), var(--gold));border-radius:999px;height:100%;display:block}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes cardIn{0%{opacity:0;transform:translateY(12px)scale(.99)}to{opacity:1;transform:none}}@keyframes popIn{0%{transform:scale(.94)}60%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@keyframes scrimIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mode-card,.match-tile,.stat-tile,.game-pill,.word-row{transition:border-color .14s,background .14s,transform .14s,box-shadow .14s,opacity .2s}.mode-card:not(:disabled):hover{transform:translateY(-3px);box-shadow:0 8px 22px #2a1c141a}.match-tile:not(:disabled):hover,.stat-tile:hover{transform:translateY(-2px)}.word-row:hover{transform:translate(2px)}.btn{transition:background .14s,border-color .14s,transform 80ms,box-shadow .14s}.btn-primary:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 6px 16px #9f3f2157}.nav-item,.quiz-option,.row-icon-btn,.segmented-item{transition:background .14s,color .14s,border-color .14s,transform .1s}.nav-item:not(.soon):active{transform:scale(.98)}.xp-track>span{transition:width .6s cubic-bezier(.2,.7,.2,1)}@media (prefers-reduced-motion:no-preference){.content>*{animation:.34s backwards fadeInUp}.review-card{animation:.3s both cardIn}.quiz-options .quiz-option{animation:.26s both fadeInUp}.quiz-options .quiz-option:nth-child(2){animation-delay:40ms}.quiz-options .quiz-option:nth-child(3){animation-delay:80ms}.quiz-options .quiz-option:nth-child(4){animation-delay:.12s}.quiz-option.correct{animation:.3s popIn}.quiz-option.wrong{animation:.36s shake}.review-card .notice,.review-card .error,.match-tile.matched{animation:.3s popIn}.match-tile.wrong{animation:.36s shake}.flip-face{animation:.28s popIn}.modal-scrim{animation:.2s both scrimIn}.modal{animation:.26s both modalIn}.state-msg{animation:.4s both fadeInUp}.state-msg .empty-mark{animation:.5s .1s both popIn}}@media (width<=560px){.desktop-only{display:none!important}}.switch-row{cursor:pointer;align-items:flex-start;gap:.6rem;display:flex}.switch-row input{width:18px;height:18px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;margin-top:.15rem}.switch-title{font-size:.9rem;font-weight:600;display:block}.switch-sub{font-size:.8rem;display:block}.page-actions{justify-content:flex-end;display:flex}.page-actions .btn{width:auto}.dict-list{flex-direction:column;gap:.6rem;display:flex}.dict-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:.85rem;padding:.9rem 1rem;transition:border-color .12s,transform .12s;display:flex}.dict-card:hover{border-color:var(--border-strong);transform:translate(2px)}.dict-icon{width:38px;height:38px;color:var(--accent);background:var(--accent-weak);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.dict-main{flex:1;min-width:0}.dict-name-row{align-items:center;gap:.5rem;display:flex}.dict-name{font-weight:700}.dict-tag{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:.08rem .45rem;font-size:.62rem;font-weight:700}.dict-meta{color:var(--muted);margin-top:.15rem;font-size:.82rem}.goal-track{background:var(--surface-2);border-radius:999px;height:10px;overflow:hidden}.goal-fill{background:linear-gradient(90deg, var(--accent), var(--gold));border-radius:999px;height:100%;transition:width .5s cubic-bezier(.2,.7,.2,1)}.activity{align-items:flex-end;gap:4px;height:96px;display:flex}.activity-col{flex:1;align-items:flex-end;height:100%;display:flex}.activity-bar{background:linear-gradient(180deg, var(--accent), var(--gold));border-radius:4px 4px 0 0;width:100%;max-width:24px;min-height:2px;margin:0 auto;transition:height .4s}.activity-bar.empty{background:var(--surface-2)}.badge-row{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.badge-chip{color:var(--faint);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:.35rem .7rem;font-size:.82rem;font-weight:600}.badge-chip.earned{color:var(--text-soft);background:var(--accent-weak);border-color:color-mix(in srgb, var(--accent) 30%, transparent);transition:transform .12s}.badge-chip.earned:hover{transform:translateY(-2px)}.btn-lg{border-radius:var(--radius);padding:.9rem 1.3rem;font-size:1rem}.hero{border-radius:calc(var(--radius) + 4px);border:1px solid color-mix(in srgb, var(--accent) 22%, var(--border));background:radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--gold) 26%, transparent), transparent 55%), radial-gradient(120% 160% at 0% 100%, var(--accent-weak), transparent 60%), linear-gradient(135deg, var(--surface), var(--surface-2));box-shadow:var(--shadow);padding:1.7rem 1.8rem;position:relative;overflow:hidden}.hero-title{letter-spacing:-.02em;color:var(--text);margin:0;font-size:1.55rem;font-weight:800}.hero-sub{color:var(--text-soft);max-width:46ch;margin:.35rem 0 1.1rem;font-size:.98rem}.hero-actions{flex-wrap:wrap;gap:.6rem;display:flex}.hero-actions .btn{width:auto}.hero-ghost{background:color-mix(in srgb, var(--surface) 70%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.today-grid{grid-template-columns:1.3fr 1fr 1fr;gap:1rem;display:grid}@media (width<=720px){.today-grid{grid-template-columns:1fr}}.today-card{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;justify-content:center;align-items:center;gap:.3rem;padding:1.3rem 1.1rem;display:flex}.ring-card{text-align:left;flex-direction:row;justify-content:flex-start;gap:1.1rem}.today-meta{flex-direction:column;gap:.2rem;display:flex}.today-title{color:var(--text);font-weight:700}.today-note{color:var(--muted);font-size:.85rem}.today-sub{color:var(--faint);font-size:.78rem}.big-num{letter-spacing:-.03em;color:var(--text);font-size:2.4rem;font-weight:800;line-height:1}.flame{filter:grayscale(.8)opacity(.5);font-size:1.9rem;line-height:1}.flame.lit{filter:none}.level-card{gap:.5rem}.level-badge{color:var(--accent);background:var(--accent-weak);border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .7rem;font-size:.9rem;font-weight:700;display:inline-flex}.level-badge svg{color:var(--gold)}.xp-bar-lg{background:var(--surface-2);border-radius:999px;width:100%;height:9px;overflow:hidden}.xp-bar-lg>span{background:linear-gradient(90deg, var(--accent), var(--gold));border-radius:999px;height:100%;display:block}.goal-ring{flex-shrink:0;position:relative}.goal-ring .ring-track{stroke:var(--surface-2)}.goal-ring .ring-fill{stroke:var(--accent)}.goal-ring.done .ring-fill{stroke:var(--olive)}.ring-center{flex-direction:column;justify-content:center;align-items:center;line-height:1.1;display:flex;position:absolute;inset:0}.ring-num{color:var(--text);font-size:1.7rem;font-weight:800}.ring-of{color:var(--muted);font-size:.72rem}.mode-card{--mc:var(--accent)}.mode-card .mode-icon{color:var(--mc);background:color-mix(in srgb, var(--mc) 14%, transparent);transition:transform .16s,background .16s}.mode-card:not(:disabled):hover{border-color:color-mix(in srgb, var(--mc) 55%, var(--border))}.mode-card:not(:disabled):hover .mode-icon{background:color-mix(in srgb, var(--mc) 22%, transparent);transform:scale(1.08)rotate(-4deg)}.practice-bar-right{align-items:center;gap:.6rem;display:flex}.combo-pill{color:#fff;background:linear-gradient(180deg, #e0793f, var(--accent));border-radius:999px;align-items:center;gap:.25rem;padding:.25rem .6rem;font-size:.8rem;font-weight:700;display:inline-flex;box-shadow:0 3px 10px #bf4d2b4d}.cheer{color:var(--olive);letter-spacing:-.01em;align-self:center;margin-top:.6rem;font-size:1.05rem;font-weight:800}.practice.flash-correct{animation:.6s glowGood}.practice.flash-wrong{animation:.6s glowBad}.session-done{text-align:center;flex-direction:column;align-items:center;gap:.55rem;max-width:460px;margin:1.5rem auto 0;padding:2rem 1.5rem;display:flex;position:relative}.done-emoji{font-size:3rem;line-height:1}.done-title{letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:800}.done-score{flex-direction:column;align-items:center;gap:.5rem;margin:.3rem 0;display:flex}.score-ring-num{align-items:baseline;gap:.3rem;display:flex}.score-big{color:var(--accent);letter-spacing:-.03em;font-size:2.6rem;font-weight:800}.score-small{color:var(--muted);font-size:1.2rem;font-weight:700}.done-chips{flex-wrap:wrap;justify-content:center;gap:.45rem;display:flex}.done-chip{color:var(--text-soft);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:.3rem .7rem;font-size:.82rem;font-weight:700}.done-chip.fire{color:var(--accent);background:var(--accent-weak);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.done-note{color:var(--faint);margin:.2rem 0 .6rem;font-size:.82rem}.session-done .btn{width:auto}.confetti{pointer-events:none;z-index:2;position:absolute;inset:0;overflow:hidden}.confetti .conf{opacity:0;border-radius:2px;width:9px;height:14px;position:absolute;top:-12%}.confetti .conf.round{border-radius:50%;width:10px;height:10px}@keyframes glowGood{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--olive) 55%, transparent)}to{box-shadow:0 0 0 14px #0000}}@keyframes glowBad{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--danger) 50%, transparent)}to{box-shadow:0 0 0 14px #0000}}@keyframes confettiFall{0%{opacity:1;transform:translate(0)rotate(0)}to{transform:translate(var(--drift,0), 460px) rotate(var(--spin,360deg));opacity:0}}@keyframes comboPop{0%{transform:scale(.7)}55%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes cheerIn{0%{opacity:0;transform:translateY(8px)scale(.9)}55%{transform:translateY(-2px)scale(1.04)}to{opacity:1;transform:none}}@keyframes flamePulse{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.today-card{transition:transform .14s,box-shadow .14s,border-color .14s}.today-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px #2a1c141a}@media (prefers-reduced-motion:no-preference){.confetti .conf{animation-name:confettiFall;animation-timing-function:cubic-bezier(.3,.5,.5,1);animation-fill-mode:forwards}.combo-pill{animation:.34s comboPop}.cheer{animation:.34s cheerIn}.flame.lit{animation:2.4s ease-in-out infinite flamePulse}.goal-ring .ring-fill{transition:stroke-dashoffset .95s cubic-bezier(.2,.7,.2,1)}.xp-bar-lg>span{transition:width .8s cubic-bezier(.2,.7,.2,1)}.done-emoji{animation:.5s 50ms both popIn}.session-done{animation:.4s both fadeInUp}}.hero-copy{z-index:1;position:relative}.hero-blob{filter:blur(28px);opacity:.5;pointer-events:none;z-index:0;border-radius:50%;position:absolute}.hero-blob.b1{background:radial-gradient(circle, color-mix(in srgb, var(--gold) 70%, transparent), transparent 70%);width:180px;height:180px;top:-60px;right:-30px}.hero-blob.b2{background:radial-gradient(circle, var(--accent-weak), transparent 70%);width:150px;height:150px;bottom:-70px;left:20%}.wave{transform-origin:70% 70%;display:inline-block}.btn-primary{position:relative;overflow:hidden}.btn-primary:after{content:"";opacity:0;background:linear-gradient(100deg,#0000,#ffffff59,#0000);width:45%;height:100%;position:absolute;top:0;left:-60%;transform:skew(-18deg)}.xp-float-layer{pointer-events:none;z-index:3;justify-content:center;display:flex;position:absolute;top:40%;left:0;right:0}.xp-float{color:var(--olive);text-shadow:0 1px 6px color-mix(in srgb, var(--olive) 30%, transparent);white-space:nowrap;font-size:1.2rem;font-weight:800}.review-progress>span{background:linear-gradient(90deg, var(--accent), var(--gold));position:relative;overflow:hidden}.goal-ring.done{filter:drop-shadow(0 0 6px color-mix(in srgb, var(--olive) 55%, transparent))}.flashcard-card{gap:1.1rem}.flip3d{perspective:1100px;cursor:pointer;outline:none;width:100%}.flip3d:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);border-radius:16px}.flip3d-inner{width:100%;min-height:128px;transform-style:preserve-3d;position:relative}.flip3d.flipped .flip3d-inner{transform:rotateY(180deg)}.flip-front,.flip-back{backface-visibility:hidden;flex-direction:column;justify-content:center;align-items:center;gap:.6rem;display:flex;position:absolute;inset:0}.flip-back{transform:rotateY(180deg)}.flip-hint{color:var(--faint);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}@keyframes wave{0%,60%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}40%{transform:rotate(10deg)}50%{transform:rotate(-4deg)}}@keyframes blobDrift{0%,to{transform:translate(0)scale(1)}50%{transform:translate(14px,-12px)scale(1.08)}}@keyframes blobDrift2{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-16px,10px)scale(1.1)}}@keyframes xpRise{0%{opacity:0;transform:translateY(6px)scale(.8)}20%{opacity:1;transform:translateY(0)scale(1.05)}to{opacity:0;transform:translateY(-42px)scale(1)}}@keyframes shine{0%{opacity:0;left:-60%}12%{opacity:1}60%,to{opacity:0;left:130%}}@keyframes barShine{0%{transform:translate(-120%)}to{transform:translate(320%)}}@keyframes ctaBreathe{0%,to{box-shadow:0 6px 16px #9f3f2147}50%{box-shadow:0 8px 26px #9f3f2173}}@media (prefers-reduced-motion:no-preference){.wave{animation:2.6s ease-in-out .4s infinite wave}.hero-blob.b1{animation:9s ease-in-out infinite blobDrift}.hero-blob.b2{animation:11s ease-in-out infinite blobDrift2}.xp-float{animation:.95s forwards xpRise}.flip3d-inner{transition:transform .55s cubic-bezier(.2,.75,.25,1)}.review-progress>span:after{content:"";background:linear-gradient(90deg,#0000,#ffffff80,#0000);width:40%;height:100%;animation:1.8s ease-in-out infinite barShine;position:absolute;top:0;left:0}.btn-primary:not(:disabled):hover:after{animation:.8s shine}.hero-actions .btn-primary{animation:3.2s ease-in-out infinite ctaBreathe}.mode-grid .mode-card{animation:.32s backwards cardIn}.mode-grid .mode-card:nth-child(2){animation-delay:40ms}.mode-grid .mode-card:nth-child(3){animation-delay:80ms}.mode-grid .mode-card:nth-child(4){animation-delay:.12s}.mode-grid .mode-card:nth-child(5){animation-delay:.16s}.mode-grid .mode-card:nth-child(6){animation-delay:.2s}.mode-grid .mode-card:nth-child(7){animation-delay:.24s}.mode-grid .mode-card:nth-child(8){animation-delay:.28s}.today-grid .today-card{animation:.36s backwards cardIn}.today-grid .today-card:nth-child(2){animation-delay:60ms}.today-grid .today-card:nth-child(3){animation-delay:.12s}}
