:root{--bg: #0b0b14;--bg-2: #12121f;--surface: hsla(240, 30%, 18%, .45);--surface-strong: hsla(240, 30%, 22%, .7);--border: hsla(240, 40%, 80%, .1);--border-strong: hsla(250, 90%, 75%, .35);--text: #eeeefa;--text-dim: #a3a3c2;--text-faint: #8a8aad;--violet: #7c5cff;--cyan: #3ee0d0;--pink: #ff5f8f;--amber: #ffb36b;--green: #4ade80;--white: #fff;--black: #000;--text-on-accent: #0b0b14;--text-bright: #f5f5ff;--text-light: #e5e5f7;--text-mist: #e0e0f0;--text-soft: #c4c4e0;--text-soft-alt: #c8c8e6;--text-muted: #c4c4dc;--text-quiet: #a8a8cc;--bg-glow: #17172e;--bg-deep: #0e0e1a;--panel: #121220;--panel-hi: #1a1a2e;--panel-lo: #0f0f1e;--red-300: #fca5a5;--red-400: #f87171;--red-500: #ef4444;--danger: #ff4757;--pink-soft: #ffd1de;--pink-light: #ff85a1;--pink-500: #ec4899;--orange-500: #f97316;--amber-200: #fde68a;--amber-400: #fbbf24;--amber-500: #f59e0b;--yellow-200: #fef08a;--yellow-400: #facc15;--yellow-500: #eab308;--green-200: #bbf7d0;--green-300: #86efac;--emerald-200: #a7f3d0;--emerald-500: #10b981;--cyan-400: #22d3ee;--cyan-500: #06b6d4;--sky-400: #38bdf8;--blue-500: #3b82f6;--violet-300: #c4b5fd;--violet-400: #a78bfa;--violet-500: #8b5cf6;--violet-600: #7c3aed;--purple-500: #a855f7;--slate-200: #e2e8f0;--slate-300: #cbd5e1;--slate-400: #94a3b8;--rose: hsl(340, 90%, 65%);--rose-bright: hsl(340, 100%, 70%);--rose-deep: hsl(340, 80%, 40%);--red-soft: hsl(350, 75%, 55%);--orange-soft: hsl(35, 100%, 60%);--green-mid: hsl(142, 70%, 45%);--green-light: hsl(142, 70%, 58%);--teal: hsl(190, 80%, 50%);--sky: hsl(200, 90%, 55%);--violet-bright: hsl(252, 100%, 68%);--lavender: hsl(250, 70%, 65%);--indigo-dim: hsl(250, 40%, 25%);--indigo-deep: hsl(240, 25%, 12%);--slate-deep: hsl(220, 25%, 12%);--mode-conversation: var(--cyan-500);--mode-grammar: var(--violet-500);--mode-listen: var(--blue-500);--mode-translation: var(--pink-500);--mode-story: var(--amber-500);--mode-vocab: var(--emerald-500);--mode-notebook: var(--orange-500);--mode-image: var(--yellow-400);--mode-uplyric: var(--purple-500);--grad: linear-gradient(135deg, var(--violet), var(--cyan));--grad-warm: linear-gradient(135deg, var(--pink), var(--amber));--radius-2xs: 4px;--radius-xs: 8px;--radius-sm: 12px;--radius-md: 16px;--radius-lg: 18px;--radius-xl: 20px;--radius-pill: 999px;--radius: var(--radius-lg);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--fs-xs: .75rem;--fs-sm: .85rem;--fs-md: .92rem;--fs-base: 1rem;--fs-lg: 1.15rem;--fs-xl: 1.35rem;--fs-2xl: 1.8rem;--fs-display: 2.4rem;--touch-target: 44px;--page-wide: 1440px;--page-focus: 1240px;--measure: 72ch;--side-panel: 340px;--side-panel-lg: 440px;--shadow: 0 10px 40px -10px color-mix(in srgb, var(--black) 60%, transparent);--ease: cubic-bezier(.22, 1, .36, 1);font-family:Outfit,system-ui,sans-serif;color:var(--text);background:var(--bg);color-scheme:dark}*{box-sizing:border-box;margin:0}html,body,#root{min-height:100%}body{min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}button:disabled{cursor:not-allowed;opacity:.5}@media(pointer:coarse),(max-width:640px){input:not([type=checkbox],[type=radio],[type=range]),select{min-height:var(--touch-target)}}:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.bg-orbs{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;background:radial-gradient(ellipse at top,var(--bg-glow) 0%,var(--bg) 60%)}.orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.45;animation:float 18s ease-in-out infinite}.orb-1{width:520px;height:520px;background:var(--violet);top:-160px;left:-120px;opacity:.22}.orb-2{width:420px;height:420px;background:var(--cyan);bottom:-140px;right:-100px;animation-delay:-6s;opacity:.15}.orb-3{width:300px;height:300px;background:var(--pink);top:40%;left:55%;animation-delay:-12s;opacity:.1}@keyframes float{0%,to{transform:translate(0) scale(1)}33%{transform:translate(40px,-30px) scale(1.08)}66%{transform:translate(-30px,30px) scale(.95)}}.page{max-width:1100px;margin:0 auto;padding:var(--space-7) var(--space-6)}.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}kbd{padding:2px var(--space-2);border-radius:6px;border:1px solid var(--border);background:var(--surface);font-size:var(--fs-xs)}.hero{text-align:center;padding:var(--space-8) 0 var(--space-7);animation:rise .8s var(--ease) both}.brand{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-weight:600;color:var(--text-dim);margin-bottom:28px}.brand-mark{display:inline-flex;flex:none}.brand-mark .mascot{width:34px}.brand-mark-small .mascot{width:28px}.hero h1{font-size:clamp(var(--fs-display),5.5vw,calc(var(--fs-display) * 1.6));line-height:1.05;font-weight:800;letter-spacing:-.03em}.hero-sub{max-width:560px;margin:var(--space-5) auto 0;color:var(--text-dim);font-size:var(--fs-lg);line-height:1.6}.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}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--cyan);animation:spin .9s linear infinite}.footer{text-align:center;color:var(--text-faint);font-size:var(--fs-sm);padding:48px 0 var(--space-2)}.toast{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 auto var(--space-2);padding:10px 10px 10px var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--rose-deep) 25%,transparent);border:1px solid color-mix(in srgb,var(--rose) 40%,transparent);color:var(--pink-soft);font-size:var(--fs-md);animation:rise .3s var(--ease) both}.hint{color:var(--text-faint);font-size:var(--fs-sm);margin-top:6px}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media(max-width:640px){.page{padding:var(--space-5) var(--space-4)}.hero{padding:var(--space-2) 0 var(--space-4)}.brand{margin-bottom:var(--space-3)}.hero h1{font-size:var(--fs-2xl)}.hero-sub,.hint{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.with-side{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6)}.with-side-main,.with-side-panel{min-width:0}.with-side-panel{display:flex;flex-direction:column;gap:var(--space-4)}.side-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}.side-card-title{margin:0;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.side-card.wide-only,.with-side-panel.wide-only{display:none}@media(min-width:1280px){.with-side{grid-template-columns:minmax(0,1fr) var(--side-panel);gap:var(--space-7);align-items:start}.with-side-panel{position:sticky;top:var(--space-5);max-height:calc(100dvh - 2 * var(--space-5));overflow-y:auto}.side-card.wide-only,.with-side-panel.wide-only{display:flex}}.btn-primary{display:inline-flex;align-items:center;gap:var(--space-2);padding:14px var(--space-6);border-radius:var(--radius-pill);background:var(--grad);color:var(--text-on-accent);font-weight:600;box-shadow:0 8px 30px -8px var(--violet);transition:transform .25s var(--ease),box-shadow .25s}.btn-primary:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 12px 36px -6px var(--violet)}.btn-ghost{display:inline-flex;align-items:center;gap:6px;padding:10px var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-dim);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:all .2s}.btn-ghost:hover{color:var(--text);border-color:var(--border-strong)}.btn-ghost.small{padding:6px var(--space-3);font-size:var(--fs-sm)}.btn-danger{display:inline-flex;align-items:center;gap:6px;padding:10px var(--space-4);border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--red-500) 40%,transparent);background:color-mix(in srgb,var(--red-500) 10%,transparent);color:var(--red-400);transition:all .2s}.btn-danger:not(:disabled):hover{background:color-mix(in srgb,var(--red-500) 20%,transparent);border-color:var(--red-500)}.btn-danger.small{padding:6px var(--space-3);font-size:var(--fs-sm)}.icon-btn{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-xs);color:var(--text-faint);transition:all .2s}.icon-btn:hover{color:var(--text);background:var(--surface-strong)}.segmented{display:inline-flex;padding:var(--space-1);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.segmented button{padding:var(--space-2) 18px;border-radius:var(--radius-pill);color:var(--text-dim);text-transform:capitalize;transition:all .25s var(--ease)}.segmented button.active{background:var(--grad);color:var(--text-on-accent);font-weight:600}@media(max-width:640px){.segmented{width:100%;display:flex}.segmented button{flex:1;padding:var(--space-2) 6px;font-size:var(--fs-sm);text-align:center}}.icon-btn.active{color:var(--cyan)}.btn-primary.small{padding:var(--space-2) 18px;font-size:var(--fs-md)}@media(pointer:coarse),(max-width:640px){.btn-primary,.btn-ghost,.btn-danger,.segmented button{min-height:var(--touch-target);min-width:var(--touch-target);justify-content:center}.icon-btn{width:var(--touch-target);height:var(--touch-target)}}.activity{max-width:820px}@media(min-width:1280px){.activity{max-width:var(--page-focus)}}.activity .convo-header{justify-content:flex-start}.activity-card{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:var(--space-6);padding:28px var(--space-5);border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-align:center;animation:rise .4s var(--ease) both}.activity-soon{font-size:var(--fs-xl);font-weight:700}.activity-note{color:var(--text-dim);font-size:var(--fs-md)}.activity-actions{display:flex;justify-content:center;margin-top:var(--space-4)}.activity .toast{margin-top:var(--space-4)}.activity .convo-topic h1{max-width:none;white-space:normal;overflow-wrap:anywhere}.convo-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.convo-topic{display:flex;align-items:center;gap:var(--space-3);min-width:0;flex:1}.convo-topic>div{min-width:0}.convo-topic h1{font-size:var(--fs-lg);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.convo-icon{font-size:var(--fs-2xl)}.convo-meta{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--text-faint);font-size:var(--fs-sm);text-transform:capitalize}.convo-meta .meta-sep{opacity:.4}.convo-meta.is-plain{text-transform:none}@media(max-width:640px){.convo-header{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"back actions" "topic topic";row-gap:10px;padding-bottom:var(--space-3)}#end-conversation,#end-activity{grid-area:back}.convo-topic{grid-area:topic;min-width:0}.convo-topic h1{max-width:none;white-space:normal;overflow-wrap:anywhere;font-size:var(--fs-lg)}.convo-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:var(--space-1);font-size:var(--fs-sm)}.convo-meta .meta-sep{display:none}}@media(max-width:640px){.practice-card{padding:var(--space-3) 14px}.practice-said,.practice-correct{align-items:baseline;gap:var(--space-1) 6px}.practice-said span,.practice-correct span{align-self:flex-start}.practice-actions{gap:6px;flex-wrap:wrap}}.practice-card{display:flex;flex-direction:column;gap:var(--space-2);padding:14px var(--space-4);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);line-height:1.45}.practice-card.is-ok{border-color:color-mix(in srgb,var(--green-light) 50%,transparent)}.practice-card.is-wrong{border-color:color-mix(in srgb,var(--orange-soft) 45%,transparent)}.practice-category{align-self:flex-start;font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--amber)}.practice-said,.practice-correct{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2)}.practice-said span,.practice-correct span{font-size:var(--fs-xs);color:var(--text-faint);align-self:center}.practice-said{color:var(--text-dim)}.practice-said s{text-decoration-color:color-mix(in srgb,var(--rose-bright) 60%,transparent)}.practice-correct{font-size:var(--fs-base);font-weight:600}.practice-ask{color:var(--cyan)}.practice-tip{color:var(--text-dim);font-size:var(--fs-sm)}.practice-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.practice-type{display:flex;flex-wrap:wrap;gap:6px}.practice-mic.recording{border-color:var(--pink);color:var(--pink)}.practice-type input{flex:1;min-width:0;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);padding:var(--space-2) 14px}.practice-error{color:var(--pink);font-size:var(--fs-sm)}.practice-result{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--fs-md)}.practice-result.is-ok strong{color:var(--green)}.practice-result.is-wrong strong{color:var(--amber)}.practice-answer,.practice-legend{color:var(--text-dim)}.practice-legend{font-size:var(--fs-xs)}.practice-diff .w-missing{color:var(--amber);text-decoration:underline;text-underline-offset:3px}.practice-diff .w-extra{color:var(--pink);text-decoration:line-through}.select{display:inline-flex;align-items:center;gap:10px;padding:var(--space-1) 6px var(--space-1) var(--space-4);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);color:var(--text-dim);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.select select{background:transparent;border:none;padding:var(--space-2) 10px;border-radius:var(--radius-pill);outline:none}.select option{background:var(--bg-2)}.section-title{font-size:var(--fs-base);font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:.12em;margin-bottom:var(--space-4)}.custom-topic{display:flex;gap:10px;margin-top:22px;padding:var(--space-2);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:border-color .25s}.custom-topic:focus-within{border-color:var(--border-strong)}.custom-topic input{flex:1;min-width:0;padding:0 18px;background:transparent;border:none;outline:none;font-size:var(--fs-base)}.custom-topic input::placeholder{color:var(--text-faint)}.mode-text{display:flex;flex-direction:column;gap:3px;min-width:0}.request-step{max-width:720px;margin:0 auto;scroll-margin-top:16px;animation:rise .5s var(--ease) both}.request-mode{margin-top:18px;color:var(--text-faint);font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:.12em}.request-title{margin-top:6px;font-size:clamp(var(--fs-xl),4vw,var(--fs-2xl));font-weight:700;letter-spacing:-.02em}.request-step .custom-topic{margin-top:var(--space-4)}.request-hint{margin-top:var(--space-2);color:var(--text-faint);font-size:var(--fs-sm)}.chip-group{margin-top:22px}.chip-label{margin-bottom:10px;color:var(--text-faint);font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:.12em}.chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:var(--space-2) 14px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:var(--fs-md);transition:border-color .2s,background .2s}.chip:hover{border-color:var(--border-strong);background:var(--surface-strong)}.chip.recent{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--text-dim)}@media(max-width:640px){.mode-grid{grid-template-columns:1fr;gap:10px}.mode-card{padding:var(--space-3) 14px}.mode-icon-box{width:42px;height:42px;font-size:var(--fs-xl)}.select{width:100%;justify-content:space-between}.custom-topic{flex-direction:column;border-radius:var(--radius)}.custom-topic input{padding:var(--space-3)}.custom-topic .btn-primary{justify-content:center}}.user-avatar{width:28px;height:28px;border-radius:50%}.home-page-v2{max-width:var(--page-wide);margin:0 auto;padding:18px 28px 48px}.top-navbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:6px 0 var(--space-5);margin-bottom:var(--space-2);border-bottom:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.navbar-brand{display:flex;align-items:center;gap:10px}.brand-name{font-size:var(--fs-base);font-weight:500;letter-spacing:-.01em;color:var(--text)}.brand-name strong{font-weight:800}.navbar-actions{display:flex;align-items:center;gap:var(--space-3)}.user-avatar-fallback{font-size:var(--fs-md)}.profile-menu{position:relative}.profile-menu-trigger{display:inline-flex;align-items:center;justify-content:center;width:var(--touch-target);height:var(--touch-target);padding:0;border-radius:50%;background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid var(--border);cursor:pointer;transition:border-color .2s,background .2s}.profile-menu-trigger:hover,.profile-menu-trigger[aria-expanded=true]{border-color:var(--border-strong);background:color-mix(in srgb,var(--white) 8%,transparent)}.profile-menu-panel{position:absolute;top:calc(100% + var(--space-2));right:0;z-index:30;display:flex;flex-direction:column;gap:var(--space-1);width:max-content;min-width:220px;max-width:min(300px,calc(100vw - 2 * var(--space-4)));padding:var(--space-2);border-radius:var(--radius-md);background:var(--panel-hi);border:1px solid var(--border);box-shadow:var(--shadow)}.profile-menu-who{display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3) var(--space-3);border-bottom:1px solid var(--border);margin-bottom:var(--space-1);min-width:0}.profile-menu-name{font-size:var(--fs-sm);color:var(--text);overflow-wrap:anywhere}.profile-menu-email{font-size:var(--fs-xs);color:var(--text-dim);overflow-wrap:anywhere}.profile-menu-item{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:var(--touch-target);padding:0 var(--space-3);border-radius:var(--radius-sm);background:transparent;border:0;color:var(--text-soft);font-size:var(--fs-sm);font-weight:600;text-align:left;cursor:pointer}.profile-menu-item:hover{background:color-mix(in srgb,var(--white) 6%,transparent);color:var(--text)}.profile-menu-item.is-danger:hover{background:color-mix(in srgb,var(--red-500) 15%,transparent);color:var(--red-400)}@media(max-width:640px){.top-navbar{flex-wrap:wrap;row-gap:var(--space-2)}.navbar-brand{flex:1 1 0;min-width:min-content}.navbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);min-width:0;margin-left:auto}.pwa-install-label{display:none}.pwa-install-btn{min-width:var(--touch-target);min-height:var(--touch-target);justify-content:center}}.dashboard-grid{display:grid;grid-template-columns:1fr 340px;grid-template-rows:auto auto 1fr;grid-template-areas:"hero      sidebar" "settings  sidebar" "modes     sidebar";gap:var(--space-4) 28px;align-items:start}.compact-hero{grid-area:hero}.settings-bar-card{grid-area:settings}.modes-container,.request-step{grid-area:modes}.dashboard-sidebar{grid-area:sidebar;position:sticky;top:20px;align-self:start;display:flex;flex-direction:column;gap:var(--space-4)}.compact-hero{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:var(--space-1) 0 2px}.greeting-pill{display:inline-flex;align-items:center;gap:var(--space-2);padding:5px var(--space-3);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--violet) 12%,transparent);border:1px solid color-mix(in srgb,var(--violet) 25%,transparent);font-size:var(--fs-sm);color:var(--slate-200)}.greeting-icon{font-size:var(--fs-base)}.greeting-user strong{color:var(--white);font-weight:700}.compact-headline{font-size:clamp(var(--fs-2xl),3.4vw,var(--fs-display));font-weight:800;letter-spacing:-.025em;line-height:1.18;margin-top:var(--space-1)}.compact-subline{font-size:var(--fs-md);color:var(--text-dim);line-height:1.5;max-width:640px}.settings-bar-card{background:color-mix(in srgb,var(--panel) 70%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);border-radius:var(--radius-md);padding:var(--space-3) 18px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);display:flex;flex-direction:column;gap:10px;box-shadow:0 4px 20px -8px color-mix(in srgb,var(--black) 35%,transparent)}.btn-mobile-settings-toggle{display:none}.settings-controls-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3)}.settings-dropdowns-group{display:flex;align-items:center;gap:10px}.compact-select-label{display:inline-flex;align-items:center;gap:6px;padding:3px var(--space-2) 3px var(--space-3);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid var(--border);color:var(--text-soft);font-size:var(--fs-sm);cursor:pointer;transition:border-color .2s}.compact-select-label:hover{border-color:var(--border-strong)}.compact-select-label select{background:transparent;border:none;padding:5px 6px;color:var(--text);font-size:var(--fs-sm);outline:none;cursor:pointer}.compact-select-label select option{background:var(--bg-2);color:var(--text)}.level-hint-inline{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--fs-sm);color:var(--cyan);padding-top:var(--space-2);border-top:1px solid color-mix(in srgb,var(--white) 5%,transparent);line-height:1.45}.hint-bullet{flex-shrink:0;font-size:var(--fs-md)}.modes-container{display:flex;flex-direction:column;gap:14px}.modes-header-row{display:flex;align-items:center;justify-content:space-between}.modes-badge-count{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);background:color-mix(in srgb,var(--white) 4%,transparent);padding:3px 10px;border-radius:var(--radius-pill);border:1px solid var(--border)}.mode-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.mode-card{position:relative;animation:rise .6s var(--ease) both;display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:var(--space-5);border-radius:var(--radius-md);background:color-mix(in srgb,var(--panel) 75%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);cursor:pointer;overflow:hidden;transition:transform .25s cubic-bezier(.2,.8,.2,1),border-color .25s ease,box-shadow .25s ease}.mode-card:disabled{opacity:.55;cursor:default}.mode-card:hover{transform:translateY(-4px);border-color:var(--mode-accent, var(--violet));box-shadow:0 16px 36px -12px color-mix(in srgb,var(--black) 60%,transparent),0 0 24px -6px var(--mode-accent, var(--violet))}.mode-card.is-external{grid-column:1 / -1}.mode-card.is-featured{background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--violet) 12%,transparent),color-mix(in srgb,var(--panel) 85%,transparent) 60%);border-color:color-mix(in srgb,var(--violet) 35%,transparent)}.mode-card.is-featured:hover{border-color:var(--mode-accent, var(--violet-500));box-shadow:0 18px 40px -10px color-mix(in srgb,var(--black) 65%,transparent),0 0 30px -4px var(--mode-accent, color-mix(in srgb, var(--violet-500) 40%, transparent))}.mode-card.is-featured.mode-conversation{background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--cyan-500) 18%,transparent),color-mix(in srgb,var(--panel) 92%,transparent) 60%);border-color:color-mix(in srgb,var(--cyan-500) 45%,transparent)}.mode-card.is-featured.mode-conversation:hover{border-color:var(--cyan-500);box-shadow:0 18px 40px -10px color-mix(in srgb,var(--black) 65%,transparent),0 0 32px -4px color-mix(in srgb,var(--cyan-500) 50%,transparent)}.mode-card.is-featured.mode-conversation .featured-cta-btn{background:linear-gradient(135deg,var(--cyan-500) 0%,var(--blue-500) 100%);color:var(--white);box-shadow:0 4px 16px -4px color-mix(in srgb,var(--cyan-500) 55%,transparent)}.mode-card.is-featured.mode-grammar{background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--violet-500) 14%,transparent),color-mix(in srgb,var(--panel) 90%,transparent) 60%);border-color:color-mix(in srgb,var(--violet-500) 35%,transparent)}.mode-card.is-featured.mode-grammar:hover{border-color:var(--violet-500);box-shadow:0 18px 40px -10px color-mix(in srgb,var(--black) 65%,transparent),0 0 28px -4px color-mix(in srgb,var(--violet-500) 40%,transparent)}.mode-card.is-featured.mode-grammar .featured-cta-btn{background:linear-gradient(135deg,var(--violet-500) 0%,var(--purple-500) 100%);color:var(--white);box-shadow:0 4px 16px -4px color-mix(in srgb,var(--violet-500) 45%,transparent)}@media(min-width:901px){.mode-card.mode-conversation{grid-column:span 2}.mode-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.mode-card-header{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:14px}.mode-icon-box{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;border:1px solid color-mix(in srgb,var(--mode-accent, var(--violet)) 30%,transparent);background:color-mix(in srgb,var(--mode-accent, var(--violet)) 12%,transparent);font-size:var(--fs-2xl);flex-shrink:0}.mode-tag{color:var(--mode-accent, var(--violet));background:color-mix(in srgb,var(--mode-accent, var(--violet)) 9%,transparent);padding:var(--space-1) 10px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;border:1px solid currentColor}.mode-title{font-size:var(--fs-lg);font-weight:700;color:var(--white);letter-spacing:-.01em}.mode-desc{font-size:var(--fs-sm);color:var(--text-dim);line-height:1.45;margin-top:var(--space-1)}.mode-featured-cta{margin-top:var(--space-4);width:100%}.featured-cta-btn{display:inline-flex;align-items:center;gap:6px;padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);background:var(--grad);color:var(--text-on-accent);font-size:var(--fs-sm);font-weight:700;box-shadow:0 4px 16px -4px color-mix(in srgb,var(--violet) 50%,transparent);transition:transform .2s}.mode-card:hover .featured-cta-btn{transform:translate(4px)}.streak-widget{display:flex;flex-direction:column;gap:var(--space-4);background:color-mix(in srgb,var(--panel) 75%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);border-radius:var(--radius-md);padding:var(--space-5);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 8px 30px -10px color-mix(in srgb,var(--black) 40%,transparent)}.streak-widget-header{display:flex;align-items:center;justify-content:space-between}.streak-widget-title{font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;color:var(--text-soft)}.streak-hero-card{display:flex;align-items:center;gap:var(--space-4);padding:14px var(--space-4);background:color-mix(in srgb,var(--white) 3%,transparent);border:1px solid color-mix(in srgb,var(--white) 6%,transparent);border-radius:14px}.circular-progress-wrapper{position:relative;width:100px;height:100px;flex-shrink:0;display:grid;place-items:center}.circular-progress-svg{width:100%;height:100%}.circle-progress{transition:stroke-dashoffset .6s cubic-bezier(.2,.8,.2,1)}.circle-progress.is-complete{filter:drop-shadow(0 0 8px color-mix(in srgb,var(--yellow-500) 50%,transparent))}.circular-inner{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.circular-icon{font-size:var(--fs-xl);line-height:1}.circular-streak-val{font-size:var(--fs-xl);font-weight:800;color:var(--white);line-height:1;margin-top:2px}.circular-streak-unit{font-size:var(--fs-xs);font-weight:700;color:var(--text-soft);text-transform:uppercase;letter-spacing:.04em}.streak-hero-details{display:flex;flex-direction:column;gap:var(--space-3);flex:1}.streak-detail-row{display:flex;flex-direction:column;gap:2px}.streak-detail-label{font-size:var(--fs-xs);font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.streak-detail-status{font-size:var(--fs-md);font-weight:700}.streak-detail-status.is-goal_reached{color:var(--yellow-400)}.streak-detail-status.is-in_progress{color:var(--sky-400)}.streak-detail-status.is-not_studied{color:var(--slate-400)}.streak-points-meter{font-size:var(--fs-lg);color:var(--white);display:flex;align-items:baseline;gap:3px}.streak-points-meter strong{font-size:var(--fs-xl);color:var(--cyan)}.meter-total{font-size:var(--fs-sm);color:var(--text-dim);font-weight:500}.streak-stats-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-chip{display:flex;align-items:center;gap:10px;padding:10px var(--space-3);background:color-mix(in srgb,var(--white) 3%,transparent);border:1px solid color-mix(in srgb,var(--white) 6%,transparent);border-radius:var(--radius-sm)}.stat-chip-icon{font-size:var(--fs-xl);line-height:1}.stat-chip-text{display:flex;flex-direction:column}.stat-chip-val{font-size:var(--fs-md);font-weight:700;color:var(--white);line-height:1.2}.stat-chip-lbl{font-size:var(--fs-xs);font-weight:600;color:var(--text-soft);text-transform:uppercase;letter-spacing:.03em}.streak-week-container{display:flex;flex-direction:column;gap:10px;padding-top:var(--space-3);border-top:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.week-track-label{font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;color:var(--text-soft)}.streak-week-track{display:flex;align-items:center;justify-content:space-between;gap:var(--space-1)}.streak-day{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:28px}.streak-day .day-name{font-size:var(--fs-sm);font-weight:700;color:var(--slate-200)}.streak-day .day-dot{width:26px;height:26px;border-radius:50%;border:1.5px dashed color-mix(in srgb,var(--white) 20%,transparent);background:color-mix(in srgb,var(--white) 4%,transparent);display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:800;transition:all .2s ease}.streak-day.is-in_progress .day-dot{background:color-mix(in srgb,var(--cyan-500) 25%,transparent);border:1.5px solid var(--cyan);color:var(--cyan-400);box-shadow:0 0 10px color-mix(in srgb,var(--cyan-500) 40%,transparent)}.streak-day.is-goal_reached .day-dot{background:color-mix(in srgb,var(--yellow-500) 30%,transparent);border:1.5px solid var(--yellow-500);color:var(--yellow-400);box-shadow:0 0 12px color-mix(in srgb,var(--yellow-500) 55%,transparent)}.streak-day.is-today.is-not_studied .day-dot{border-style:solid;border-color:color-mix(in srgb,var(--white) 45%,transparent);background:color-mix(in srgb,var(--white) 8%,transparent)}.streak-leaderboard-section{padding-top:10px;border-top:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.btn-leaderboard-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;background:transparent;border:none;color:var(--cyan);font-size:var(--fs-sm);font-weight:600;cursor:pointer;padding:var(--space-1) 0;transition:opacity .2s}@media(pointer:coarse),(max-width:640px){.btn-leaderboard-toggle{min-height:var(--touch-target)}}.btn-leaderboard-toggle:hover{opacity:.85}.btn-leaderboard-title{display:flex;align-items:center;gap:6px}.toggle-arrow{font-size:var(--fs-xs);color:var(--text-soft)}.leaderboard-cards-grid{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}.leaderboard-card{display:flex;align-items:center;gap:10px;padding:10px var(--space-3);background:color-mix(in srgb,var(--white) 3%,transparent);border:1px solid color-mix(in srgb,var(--white) 6%,transparent);border-radius:var(--radius-sm)}.leaderboard-card.is-me{border-color:color-mix(in srgb,var(--violet) 50%,transparent);background:color-mix(in srgb,var(--violet) 10%,transparent)}.leaderboard-card-outside{margin-top:var(--space-2);border-style:dashed}.leaderboard-rank{font-size:var(--fs-lg);line-height:1}.leaderboard-user-details{display:flex;flex-direction:column;flex:1;overflow:hidden}.leaderboard-name{font-size:var(--fs-sm);font-weight:600;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard-streak{font-size:var(--fs-xs);color:var(--text-soft)}.leaderboard-score{display:flex;flex-direction:column;align-items:flex-end}.week-pts{font-size:var(--fs-md);font-weight:700;color:var(--cyan)}.week-label{font-size:var(--fs-xs);color:var(--text-soft);text-transform:uppercase}.mobile-bottom-bar{display:none}.home-footer{margin-top:var(--space-8);text-align:center;font-size:var(--fs-sm);color:var(--text-faint)}.home-footer strong{font-weight:700;color:var(--text-muted)}@media(max-width:900px){.home-page-v2{padding:14px var(--space-4) calc(76px + env(safe-area-inset-bottom))}.dashboard-grid{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-4)}.compact-hero{order:1}.dashboard-sidebar{order:2;position:static;width:100%}.settings-bar-card{order:3;margin-bottom:0}.modes-container,.request-step{order:4}.streak-widget{padding:var(--space-3) 14px;gap:var(--space-3)}.streak-hero-card{padding:10px var(--space-3);gap:var(--space-3)}.circular-progress-wrapper,.circular-progress-svg{width:76px;height:76px}.circular-icon{font-size:var(--fs-lg)}.circular-streak-val{font-size:var(--fs-base)}.circular-streak-unit{font-size:var(--fs-xs)}.streak-detail-row{gap:1px}.streak-detail-status{font-size:var(--fs-sm)}.streak-points-meter{font-size:var(--fs-base)}.streak-points-meter strong{font-size:var(--fs-lg)}.streak-stats-row{gap:var(--space-2)}.stat-chip{padding:var(--space-2) 10px;gap:var(--space-2)}.stat-chip-icon{font-size:var(--fs-lg)}.stat-chip-val{font-size:var(--fs-sm)}.streak-day .day-dot{width:24px;height:24px;font-size:var(--fs-xs)}.btn-mobile-settings-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 14px;background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);border-radius:var(--radius-sm);color:var(--white);font-size:var(--fs-sm);font-weight:600;cursor:pointer;min-height:var(--touch-target)}.toggle-indicator{font-size:var(--fs-xs);color:var(--cyan)}.settings-controls-row{display:none;flex-direction:column;align-items:stretch;gap:var(--space-3);padding-top:10px}.settings-controls-row.is-mobile-open{display:flex}.segmented{width:100%;display:flex}.segmented button{flex:1;text-align:center;padding:var(--space-2) var(--space-1);font-size:var(--fs-sm)}.settings-dropdowns-group{flex-direction:column;width:100%}.compact-select-label{width:100%;justify-content:space-between}.mode-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.mode-card{padding:var(--space-4);min-height:60px}.mode-card.is-featured,.mode-card.mode-conversation{grid-column:span 1}.mobile-bottom-bar{display:flex;position:fixed;bottom:0;inset-inline:0;z-index:100;background:color-mix(in srgb,var(--bg-deep) 94%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid color-mix(in srgb,var(--white) 10%,transparent);padding:var(--space-2) var(--space-4) max(var(--space-2),env(safe-area-inset-bottom));justify-content:space-around;align-items:center;box-shadow:0 -4px 24px color-mix(in srgb,var(--black) 50%,transparent)}.mobile-tab-btn{display:flex;flex-direction:column;align-items:center;gap:3px;background:transparent;border:none;color:var(--text-dim);padding:var(--space-1) 10px;cursor:pointer;transition:color .2s}.mobile-tab-btn .tab-icon{font-size:var(--fs-xl);line-height:1}.mobile-tab-btn .tab-label{font-size:var(--fs-xs);font-weight:600}.mobile-tab-btn.is-active,.mobile-tab-btn:hover{color:var(--white)}.mobile-tab-btn.mobile-tab-primary{color:var(--white);transform:translateY(-8px);padding:0}.mobile-tab-btn.mobile-tab-primary .tab-icon-large{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--grad);box-shadow:0 4px 18px color-mix(in srgb,var(--violet) 60%,transparent);font-size:var(--fs-xl)}.mobile-tab-btn.mobile-tab-primary .tab-label{margin-top:2px;font-weight:700;color:var(--cyan)}}.billing-nav-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700;cursor:pointer;border:1px solid color-mix(in srgb,var(--amber-400) 40%,transparent);background:color-mix(in srgb,var(--amber-400) 12%,transparent);color:var(--amber-200);transition:background .2s,border-color .2s,transform .2s}.billing-nav-pill:hover{background:color-mix(in srgb,var(--amber-400) 22%,transparent);border-color:color-mix(in srgb,var(--amber-400) 65%,transparent);transform:translateY(-1px)}.billing-nav-pill.is-premium{border-color:color-mix(in srgb,var(--emerald-500) 40%,transparent);background:color-mix(in srgb,var(--emerald-500) 14%,transparent);color:var(--emerald-200)}.billing-nav-pill.is-premium:hover{background:color-mix(in srgb,var(--emerald-500) 24%,transparent);border-color:color-mix(in srgb,var(--emerald-500) 65%,transparent)}.mode-tag.is-premium-lock,.billing-lock-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700;color:var(--amber-200);background:color-mix(in srgb,var(--amber-400) 14%,transparent);border:1px solid color-mix(in srgb,var(--amber-400) 40%,transparent)}button.billing-lock-pill{cursor:pointer}.billing-banner-card{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border-radius:var(--radius-xl);background:linear-gradient(145deg,color-mix(in srgb,var(--violet-600) 20%,var(--panel)),color-mix(in srgb,var(--amber-500) 12%,var(--panel-lo)));border:1px solid color-mix(in srgb,var(--amber-400) 32%,transparent);box-shadow:var(--shadow)}.billing-banner-card.is-premium{background:linear-gradient(145deg,color-mix(in srgb,var(--emerald-500) 18%,var(--panel)),color-mix(in srgb,var(--cyan-500) 12%,var(--panel-lo)));border-color:color-mix(in srgb,var(--emerald-500) 35%,transparent)}.billing-banner-head{display:flex;align-items:center;gap:var(--space-3)}.billing-banner-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:var(--radius-sm);font-size:var(--fs-xl);background:color-mix(in srgb,var(--amber-400) 16%,transparent);border:1px solid color-mix(in srgb,var(--amber-400) 35%,transparent)}.billing-banner-card.is-premium .billing-banner-icon{background:color-mix(in srgb,var(--emerald-500) 16%,transparent);border-color:color-mix(in srgb,var(--emerald-500) 35%,transparent)}.billing-banner-titles{display:flex;flex-direction:column;gap:2px}.billing-banner-title{margin:0;font-size:var(--fs-lg);font-weight:800;color:var(--text-bright)}.billing-banner-tag{font-size:var(--fs-xs);font-weight:700;color:var(--amber-200);text-transform:uppercase;letter-spacing:.06em}.billing-banner-card.is-premium .billing-banner-tag{color:var(--emerald-200)}.billing-banner-desc{margin:0;font-size:var(--fs-sm);line-height:1.5;color:var(--text-soft)}.billing-banner-validity{margin:0;font-size:var(--fs-xs);font-weight:600;color:var(--emerald-200)}.billing-banner-cta{width:100%;padding:11px var(--space-4);border-radius:var(--radius-sm);border:none;font-size:var(--fs-sm);font-weight:700;cursor:pointer;color:var(--text-on-accent);background:linear-gradient(135deg,var(--amber-400),var(--amber-500));transition:transform .2s,filter .2s}.billing-banner-cta:hover{transform:translateY(-1px);filter:brightness(1.06)}.billing-banner-cta.is-premium{color:var(--text-bright);background:color-mix(in srgb,var(--white) 10%,transparent);border:1px solid var(--border)}.billing-banner-cta.is-premium:hover{background:color-mix(in srgb,var(--white) 16%,transparent)}.basic-day{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent)}.basic-day-title{margin:0;font-size:var(--fs-sm);font-weight:700;color:var(--text-bright)}.basic-day-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.basic-day-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px var(--space-2);font-size:var(--fs-xs)}.basic-day-label{color:var(--text-bright);font-weight:600}.basic-day-value{color:var(--text-soft);text-align:right}.basic-day-meter{grid-column:1 / -1;height:6px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 10%,transparent);overflow:hidden}.basic-day-meter-fill{display:block;height:100%;background:linear-gradient(90deg,var(--amber-400),var(--amber-500))}.basic-day-meter-fill.is-full{background:var(--text-soft)}.basic-day-note{margin:0;font-size:var(--fs-xs);color:var(--text-soft)}.billing-page{max-width:var(--page-focus);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-6)}.billing-intro{text-align:center;max-width:640px;margin:0 auto}.billing-intro-title{margin:0 0 var(--space-2);font-size:clamp(var(--fs-xl),3vw,var(--fs-2xl));font-weight:800;color:var(--text-bright)}.billing-intro-sub{margin:0;font-size:var(--fs-md);color:var(--text-dim);line-height:1.55}.billing-plans-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);align-items:stretch}.billing-plan-card{position:relative;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.billing-plan-card.is-featured{background:linear-gradient(160deg,color-mix(in srgb,var(--violet-600) 22%,var(--panel)),color-mix(in srgb,var(--amber-500) 12%,var(--panel-lo)));border:2px solid color-mix(in srgb,var(--amber-400) 55%,transparent);box-shadow:var(--shadow)}.billing-plan-ribbon{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:4px 12px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:800;letter-spacing:.06em;color:var(--text-on-accent);background:linear-gradient(135deg,var(--amber-400),var(--amber-500))}.billing-plan-top{display:flex;flex-direction:column;gap:6px}.billing-plan-badge{align-self:flex-start;padding:3px 10px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700;color:var(--text-dim);background:color-mix(in srgb,var(--white) 8%,transparent);border:1px solid var(--border)}.billing-plan-badge.is-gold{color:var(--amber-200);background:color-mix(in srgb,var(--amber-400) 14%,transparent);border-color:color-mix(in srgb,var(--amber-400) 35%,transparent)}.billing-plan-name{margin:0;font-size:var(--fs-xl);font-weight:800;color:var(--text-bright)}.billing-plan-subtitle{margin:0;font-size:var(--fs-sm);color:var(--text-dim);line-height:1.45}.billing-plan-price-row{display:flex;align-items:baseline;gap:8px;padding:var(--space-3) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.billing-plan-price{font-size:var(--fs-2xl);font-weight:800;color:var(--text-bright)}.billing-plan-period{font-size:var(--fs-sm);color:var(--text-faint)}.billing-validity-pill{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--fs-xs);font-weight:700;color:var(--emerald-200);background:color-mix(in srgb,var(--emerald-500) 14%,transparent);border:1px solid color-mix(in srgb,var(--emerald-500) 32%,transparent)}.billing-feature-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3);flex:1}.billing-feature-item{display:flex;align-items:flex-start;gap:10px;font-size:var(--fs-sm);color:var(--text-soft);line-height:1.45}.billing-feature-check{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:800;flex-shrink:0;color:var(--cyan);background:color-mix(in srgb,var(--cyan) 15%,transparent)}.billing-feature-check.is-gold{color:var(--amber-400);background:color-mix(in srgb,var(--amber-400) 18%,transparent)}.billing-plan-footer{margin-top:auto;padding-top:var(--space-2)}.billing-plan-btn{width:100%;justify-content:center}.billing-plan-btn.is-gold-btn{color:var(--text-on-accent);background:linear-gradient(135deg,var(--amber-400),var(--amber-500))}.billing-history-section{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--border)}.billing-section-heading{margin:0;font-size:var(--fs-lg);font-weight:700;color:var(--text-bright)}.billing-history-list{display:flex;flex-direction:column;gap:var(--space-2)}.billing-history-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid var(--border)}.billing-history-main{display:flex;flex-direction:column;gap:2px}.billing-history-plan{font-size:var(--fs-sm);color:var(--text-bright)}.billing-history-date{font-size:var(--fs-xs);color:var(--text-faint)}.billing-history-meta{display:flex;align-items:center;gap:var(--space-3)}.billing-history-amount{font-size:var(--fs-sm);font-weight:700;color:var(--text-soft)}.billing-status-pill{padding:4px 10px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700}.billing-status-pill.is-approved,.billing-status-pill.is-success{color:var(--emerald-200);background:color-mix(in srgb,var(--emerald-500) 16%,transparent);border:1px solid color-mix(in srgb,var(--emerald-500) 35%,transparent)}.billing-status-pill.is-pending,.billing-status-pill.is-warning{color:var(--amber-200);background:color-mix(in srgb,var(--amber-400) 16%,transparent);border:1px solid color-mix(in srgb,var(--amber-400) 35%,transparent)}.billing-status-pill.is-rejected,.billing-status-pill.is-danger{color:var(--red-300);background:color-mix(in srgb,var(--red-500) 16%,transparent);border:1px solid color-mix(in srgb,var(--red-500) 35%,transparent)}.billing-payer-sheet,.billing-return-sheet{max-width:520px;width:100%;display:flex;flex-direction:column;gap:var(--space-4)}.billing-sheet-title{margin:0;font-size:var(--fs-lg);font-weight:800}.billing-summary-box{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--violet) 14%,transparent);border:1px solid color-mix(in srgb,var(--violet) 35%,transparent)}.billing-summary-name{font-size:var(--fs-sm);font-weight:600;color:var(--text-soft)}.billing-summary-price{font-size:var(--fs-base);font-weight:800;color:var(--amber-200)}.billing-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.billing-field{display:flex;flex-direction:column;gap:6px}.billing-field.is-full{grid-column:1 / -1}.billing-field-label{font-size:var(--fs-xs);font-weight:600;color:var(--text-dim)}.billing-required{color:var(--red-400)}.billing-input{width:100%;padding:10px 14px;border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--bg-deep);color:var(--text);font-size:var(--fs-sm);outline:none;transition:border-color .2s}.billing-input:focus{border-color:var(--violet)}.billing-form-error{margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);font-size:var(--fs-xs);font-weight:600;color:var(--red-300);background:color-mix(in srgb,var(--red-500) 14%,transparent);border:1px solid color-mix(in srgb,var(--red-500) 35%,transparent)}.billing-security-note{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid var(--border)}.billing-security-note p{margin:0;font-size:var(--fs-xs);color:var(--text-faint);line-height:1.45}.billing-sheet-actions{display:flex;justify-content:flex-end;gap:var(--space-3)}.billing-return-loading{padding:var(--space-5) 0;text-align:center;font-size:var(--fs-sm);color:var(--text-dim)}.billing-return-body{display:flex;flex-direction:column;gap:var(--space-4)}.billing-return-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2)}.billing-return-icon{font-size:var(--fs-display)}.billing-return-msg{margin:0;font-size:var(--fs-sm);color:var(--text-soft);line-height:1.5}.billing-receipt-box{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid var(--border)}.billing-receipt-heading{margin:0 0 var(--space-1);font-size:var(--fs-sm);font-weight:700;color:var(--text-bright)}.billing-receipt-row,.billing-receipt-total{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:var(--fs-xs);color:var(--text-dim)}.billing-receipt-total{padding-top:var(--space-2);border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-bright)}@media(max-width:640px){.billing-plans-grid,.billing-form-grid{grid-template-columns:1fr}.billing-history-row{flex-direction:column;align-items:flex-start}}@media(max-width:640px){.billing-nav-label{display:none}.billing-nav-pill{justify-content:center;min-width:var(--touch-target);padding:5px 10px}}@media(pointer:coarse),(max-width:640px){.billing-nav-pill,.billing-banner-cta,.billing-input,button.billing-lock-pill{min-height:var(--touch-target)}}.admin-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4)}.admin-kpi-card{display:flex;flex-direction:column;gap:6px;padding:var(--space-4);border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--border)}.admin-kpi-card.is-highlight{background:linear-gradient(145deg,color-mix(in srgb,var(--violet-600) 20%,var(--panel)),color-mix(in srgb,var(--amber-500) 12%,var(--panel-lo)));border-color:color-mix(in srgb,var(--amber-400) 40%,transparent)}.admin-kpi-card.is-emerald{background:linear-gradient(145deg,color-mix(in srgb,var(--emerald-500) 18%,var(--panel)),color-mix(in srgb,var(--cyan-500) 10%,var(--panel-lo)));border-color:color-mix(in srgb,var(--emerald-500) 40%,transparent)}.admin-kpi-label{font-size:var(--fs-xs);font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.admin-kpi-value{font-size:var(--fs-2xl);font-weight:800;color:var(--text-bright)}.admin-kpi-sub{font-size:var(--fs-xs);color:var(--text-faint)}.admin-months-list{display:flex;flex-direction:column;gap:var(--space-3)}.admin-month-row{display:grid;grid-template-columns:220px 1fr auto;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid var(--border)}.admin-month-info{display:flex;flex-direction:column;gap:2px}.admin-month-title{font-size:var(--fs-sm);color:var(--text-bright);text-transform:capitalize}.admin-month-counts{font-size:var(--fs-xs);color:var(--text-faint)}.admin-month-bar-wrap{height:10px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--white) 8%,transparent);overflow:hidden}.admin-month-bar{height:100%;border-radius:var(--radius-pill);background:linear-gradient(90deg,var(--emerald-500),var(--cyan))}.admin-kpi-card.is-warning{background:linear-gradient(145deg,color-mix(in srgb,var(--rose) 18%,var(--panel)),color-mix(in srgb,var(--amber-500) 10%,var(--panel-lo)));border-color:color-mix(in srgb,var(--rose) 45%,transparent)}.admin-month-bar.is-warning{background:linear-gradient(90deg,var(--amber-500),var(--rose))}.admin-month-title.admin-ai-pool-title{text-transform:none}.admin-ai-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.admin-month-revenue{font-size:var(--fs-sm);font-weight:800;color:var(--emerald-200)}.admin-user-email{font-weight:500;color:var(--text-dim)}.admin-payments-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.admin-filter-group{display:flex;flex-wrap:wrap;gap:var(--space-2)}.admin-filter-btn.is-active{border-color:var(--cyan);color:var(--cyan);background:color-mix(in srgb,var(--cyan) 14%,transparent)}button.admin-payment-row{width:100%;text-align:left;cursor:pointer;transition:background .2s,border-color .2s}button.admin-payment-row:hover{background:color-mix(in srgb,var(--white) 8%,transparent);border-color:color-mix(in srgb,var(--cyan) 40%,var(--border))}@media(max-width:900px){.admin-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-month-row{grid-template-columns:1fr;gap:var(--space-2)}}@media(max-width:640px){.admin-kpi-grid{grid-template-columns:1fr}}.admin-month-row.admin-abuse-row{grid-template-columns:1fr auto}.admin-month-title.admin-abuse-email{overflow-wrap:anywhere}.admin-tabs{gap:var(--space-2);padding-bottom:var(--space-1)}.admin-tab{display:inline-flex;flex-shrink:0;align-items:center;gap:var(--space-2);min-height:var(--touch-target);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-dim);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;cursor:pointer;transition:background .2s,color .2s}@media(hover:hover){.admin-tab:not(.is-active):hover{color:var(--text-bright)}}.admin-tab.is-active{background:var(--grad);border-color:transparent;color:var(--text-on-accent)}.admin-tab-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);background:var(--rose);color:var(--text-on-accent);font-size:var(--fs-xs);font-weight:800}.admin-tab-panel{display:flex;flex-direction:column;gap:var(--space-6)}.admin-insights-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-alerts{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.admin-alert{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-height:var(--touch-target);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border);border-left-width:4px;background:color-mix(in srgb,var(--white) 4%,transparent);color:var(--text-bright);font-size:var(--fs-sm);text-align:left;cursor:pointer}.admin-alert.is-danger{border-left-color:var(--rose);background:color-mix(in srgb,var(--rose) 10%,transparent)}.admin-alert.is-warning{border-left-color:var(--amber-400);background:color-mix(in srgb,var(--amber-400) 8%,transparent)}.admin-alert:hover{background:color-mix(in srgb,var(--white) 8%,transparent)}.admin-alert-link{flex-shrink:0;color:var(--cyan);font-size:var(--fs-xs);font-weight:700}.admin-see-all{min-height:var(--touch-target);padding:0 var(--space-2);background:none;border:none;cursor:pointer}.admin-top-modes{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding-left:var(--space-5);color:var(--text-bright);font-size:var(--fs-sm)}.admin-top-modes li{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-2)}@media(max-width:900px){.admin-insights-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.admin-insights-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.admin-insights-grid .admin-kpi-card{padding:var(--space-3)}.admin-insights-grid .admin-kpi-value{font-size:var(--fs-xl)}.admin-alert{flex-direction:column;align-items:flex-start;gap:var(--space-1)}}.pwa-install-btn{display:inline-flex;align-items:center;gap:6px;padding:6px var(--space-3);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--cyan);font-size:var(--fs-sm);font-weight:500;transition:all .2s var(--ease)}.pwa-install-btn:hover{background:var(--surface-strong);color:var(--white);border-color:var(--cyan);box-shadow:0 0 16px -4px color-mix(in srgb,var(--cyan) 40%,transparent)}.pwa-install-btn svg{flex-shrink:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:var(--space-4);background:color-mix(in srgb,var(--black) 70%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.ios-install-modal{width:min(440px,100%);padding:var(--space-6);background:var(--bg-2);border-radius:var(--radius);border:1px solid var(--border-strong);box-shadow:var(--shadow);color:var(--text);animation:popIn .2s var(--ease)}.ios-install-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.ios-install-header h3{font-size:var(--fs-lg);font-weight:600}.ios-install-steps{padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);color:var(--text-dim);font-size:var(--fs-md);line-height:1.5}.ios-install-steps strong{color:var(--text)}.feedback-panel.info-sheet-panel,.feedback-panel.uplyric-panel{width:min(440px,100%);display:flex;flex-direction:column;gap:var(--space-3)}.info-sheet-brand-row,.uplyric-brand-row{display:flex;align-items:center;gap:var(--space-3)}.info-sheet-icon-circle,.uplyric-icon-circle{width:40px;height:40px;border-radius:var(--radius-pill);display:grid;place-items:center;background:color-mix(in srgb,var(--purple-500) 18%,transparent);border:1px solid color-mix(in srgb,var(--purple-500) 45%,transparent);font-size:20px;flex-shrink:0;box-shadow:0 0 16px -2px color-mix(in srgb,var(--purple-500) 30%,transparent)}.info-sheet-title,.uplyric-title{font-size:var(--fs-lg);font-weight:700;color:var(--text-bright);letter-spacing:-.01em;margin:0;line-height:1.2}.info-sheet-subtitle,.uplyric-subtitle{font-size:var(--fs-xs);color:var(--purple-500);font-weight:600;display:block}.info-sheet-desc,.uplyric-desc{font-size:var(--fs-sm);line-height:1.5;color:var(--text-dim);margin:0}.info-sheet-desc strong,.uplyric-desc strong{color:var(--text);font-weight:600}.info-sheet-features,.uplyric-features{list-style:none;margin:0;display:flex;flex-direction:column;gap:8px;padding:10px 14px;background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);border-radius:var(--radius-md)}.info-sheet-feature-item,.uplyric-feature-item{display:flex;align-items:center;gap:10px;font-size:var(--fs-xs);color:var(--text-soft);line-height:1.35}.info-sheet-feature-icon,.uplyric-feature-icon{font-size:var(--fs-sm);flex-shrink:0}.info-sheet-actions,.uplyric-actions{display:flex;flex-direction:column;gap:var(--space-2);margin-top:4px}.info-sheet-link,.uplyric-link{justify-content:center;text-decoration:none}.support-email-box{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:12px 14px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--purple-500) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--purple-500) 35%,var(--border))}.support-email-info{display:flex;flex-direction:column;gap:2px;min-width:0}.support-email-label{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-weight:600}.support-email-value{font-size:var(--fs-sm);color:var(--text-bright);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.support-creator-box{display:flex;flex-direction:column;gap:8px;padding:10px 14px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid color-mix(in srgb,var(--border) 80%,transparent)}.support-creator-title{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-weight:600}.support-social-links{display:flex;gap:var(--space-2);flex-wrap:wrap}.support-social-link{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--fs-xs);font-weight:500;color:var(--text-soft);background:color-mix(in srgb,var(--surface-hover) 80%,transparent);border:1px solid color-mix(in srgb,var(--border) 90%,transparent);border-radius:var(--radius-pill);text-decoration:none;transition:all .15s ease}.support-social-link:hover{color:var(--text-bright);border-color:var(--purple-500);background:color-mix(in srgb,var(--purple-500) 15%,transparent)}.ranking-history{list-style:none;margin:var(--space-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.ranking-history-item{display:flex;align-items:center;gap:10px;padding:10px var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 3%,transparent);border:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.ranking-history-item.is-podium{border-color:color-mix(in srgb,var(--amber-400) 45%,transparent);background:color-mix(in srgb,var(--amber-400) 8%,transparent)}.ranking-history-badge{min-width:28px;text-align:center;font-size:var(--fs-lg);line-height:1;color:var(--text-soft)}.ranking-history-details{display:flex;flex-direction:column;flex:1;min-width:0}.ranking-history-week{font-size:var(--fs-sm);font-weight:600;color:var(--white)}.ranking-history-winner{font-size:var(--fs-xs);color:var(--text-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-history-me{font-size:var(--fs-xs);font-weight:600;color:var(--cyan);white-space:nowrap}.ranking-history-note{margin:var(--space-3) 0 0;font-size:var(--fs-xs);color:var(--text-soft)}.ranking-result-title{margin:0;font-size:var(--fs-md)}.ranking-result-hero{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);text-align:center;border-radius:var(--radius-md);background:color-mix(in srgb,var(--violet) 12%,transparent);border:1px solid color-mix(in srgb,var(--violet) 30%,transparent)}.ranking-result-sheet.is-podium .ranking-result-hero{background:color-mix(in srgb,var(--amber-400) 12%,transparent);border-color:color-mix(in srgb,var(--amber-400) 45%,transparent)}.ranking-result-badge{font-size:var(--fs-display);line-height:1}.ranking-result-headline{margin:0;font-size:var(--fs-lg);font-weight:700;color:var(--white)}.ranking-result-detail{margin:0;font-size:var(--fs-sm);color:var(--text-soft)}.ranking-result-podium{list-style:none;margin:var(--space-4) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.ranking-result-row{display:flex;align-items:center;gap:10px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 3%,transparent);font-size:var(--fs-sm)}.ranking-result-row.is-me{background:color-mix(in srgb,var(--violet) 14%,transparent)}.ranking-result-name{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-result-points{font-weight:700;color:var(--cyan)}.ranking-result-actions{display:flex;justify-content:flex-end;margin-top:var(--space-4)}@media(max-width:640px){.ranking-result-actions>*{width:100%}}.mascot-slot{display:flex;justify-content:flex-end}.mascot{width:128px;height:auto;overflow:visible}.mascot-eye{transform-box:fill-box;transform-origin:center}.mascot-body{transform-box:fill-box;transform-origin:bottom center;animation:mascot-breathe 3.6s ease-in-out infinite}@keyframes mascot-breathe{50%{transform:translateY(-2px) scale(1.015)}}.mascot-waves path{opacity:0;transform-box:fill-box;transform-origin:left center}.mascot-listening .mascot-waves path{animation:mascot-wave 1.2s ease-out infinite}.mascot-listening .mascot-waves .mascot-wave-late{animation-delay:.3s}@keyframes mascot-wave{0%{opacity:0;transform:scale(.7)}30%{opacity:1}to{opacity:0;transform:scale(1.15)}}.mascot-thinking .mascot-dots circle{animation:mascot-dot 1.2s ease-in-out infinite}.mascot-thinking .mascot-dots circle:nth-child(2){animation-delay:.2s}.mascot-thinking .mascot-dots circle:nth-child(3){animation-delay:.4s}@keyframes mascot-dot{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-5px)}}.mascot-sparkles path{opacity:0;transform-box:fill-box;transform-origin:center}.mascot-happy .mascot-sparkles path{animation:mascot-sparkle 1.4s ease-in-out infinite}.mascot-happy .mascot-sparkles .mascot-sparkle-late{animation-delay:.5s}@keyframes mascot-sparkle{0%,to{opacity:.3;transform:scale(.7) rotate(0)}50%{opacity:1;transform:scale(1.1) rotate(20deg)}}.mascot-oops .mascot-body{animation:mascot-shake .5s ease-in-out 1,mascot-breathe 3.6s ease-in-out .5s infinite}@keyframes mascot-shake{20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@media(prefers-reduced-motion:reduce){.mascot-body,.mascot-oops .mascot-body,.mascot-listening .mascot-waves path,.mascot-thinking .mascot-dots circle,.mascot-happy .mascot-sparkles path{animation:none}.mascot-listening .mascot-waves path,.mascot-happy .mascot-sparkles path{opacity:1}}.mascot-float{animation:mascot-float 2.6s ease-in-out infinite}@keyframes mascot-float{50%{transform:translateY(-5px)}}.mascot-steam path{animation:mascot-steam 2s ease-in-out infinite}.mascot-steam path:nth-child(2){animation-delay:.6s}@keyframes mascot-steam{0%,to{opacity:.2}50%{opacity:.9}}@media(prefers-reduced-motion:reduce){.mascot-float,.mascot-steam path{animation:none}}.mascot-thinking .mascot-eyes{transform:translate(8px,-4px);animation:mascot-look 3.2s ease-in-out infinite}@keyframes mascot-look{0%,to{transform:translate(8px,-4px)}25%{transform:translate(13px,-2px)}50%{transform:translate(3px,-6px)}75%{transform:translate(10px,-5px)}}@media(prefers-reduced-motion:reduce){.mascot-thinking .mascot-eyes{animation:none}}.speed-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);color:var(--amber);font-size:var(--fs-xs);font-weight:600;cursor:pointer;transition:all .2s}@media(pointer:coarse),(max-width:640px){.speed-badge{min-height:var(--touch-target);padding:0 var(--space-3)}}.speed-badge:hover{border-color:var(--amber);transform:scale(1.05)}.conversation{display:flex;flex-direction:column;height:100vh;height:100dvh;max-width:820px;padding-bottom:var(--space-3)}.convo-body,.convo-chat{display:flex;flex-direction:column;flex:1;min-height:0}@media(min-width:1280px){.conversation{max-width:var(--page-focus)}.convo-body{display:grid;grid-template-columns:minmax(0,1fr) var(--side-panel-lg);gap:var(--space-7)}.convo-side{padding-top:var(--space-6);max-height:100%}}.convo-side-text{margin:0;line-height:1.5}.convo-side-meta{margin:0;font-size:var(--fs-sm);color:var(--text-dim)}.convo-side-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);margin:0}.convo-side-stats div{display:flex;flex-direction:column;align-items:center;padding:var(--space-2);border-radius:var(--radius-sm);background:var(--surface-strong)}.convo-side-stats dt{font-size:var(--fs-xs);color:var(--text-dim)}.convo-side-stats dd{margin:0;font-size:var(--fs-lg);font-weight:700}.convo-side-tips{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding-left:var(--space-5);font-size:var(--fs-sm);color:var(--text-dim);line-height:1.5}.sheet-dock{min-height:0}.feedback-panel.is-docked{width:100%;max-height:none;box-shadow:none;padding:var(--space-4) var(--space-5)}#end-conversation{flex-shrink:0}.status-pill{display:inline-flex;align-items:center;gap:var(--space-2);padding:7px 14px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-dim);white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint)}.status-pill.status-recording .status-dot{background:var(--pink);animation:pulse 1s infinite}.status-pill.status-transcribing .status-dot,.status-pill.status-thinking .status-dot{background:var(--amber);animation:pulse .8s infinite}.status-pill.status-speaking .status-dot{background:var(--cyan);animation:pulse 1.2s infinite}.status-pill.status-idle .status-dot{background:var(--green)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.transcript{flex:1;overflow-y:auto;padding:var(--space-6) var(--space-1);display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:var(--surface-strong) transparent}.transcript-content{display:flex;flex-direction:column;gap:14px}.transcript.empty{align-items:center;justify-content:center;color:var(--text-faint)}.bubble-row{display:flex;animation:rise .45s var(--ease) both}.bubble-row.user{justify-content:flex-end}.bubble{max-width:min(80%,560px);padding:14px 18px 10px;border-radius:var(--radius);line-height:1.55;position:relative}.bubble p{white-space:pre-wrap}.bubble.assistant{background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:6px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.bubble.user{background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--violet-bright) 90%,transparent),color-mix(in srgb,var(--sky) 85%,transparent));border-bottom-right-radius:6px;box-shadow:0 8px 30px -12px var(--violet)}.bubble-author{display:block;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;opacity:.6;margin-bottom:var(--space-1)}.bubble-tools{display:flex;gap:2px;margin-top:6px;margin-left:-6px;opacity:0;transition:opacity .2s}.bubble:hover .bubble-tools,.bubble:focus-within .bubble-tools{opacity:1}.bubble.user .icon-btn{color:color-mix(in srgb,var(--white) 75%,transparent)}.typing{display:inline-flex;gap:var(--space-1);padding:6px 0}.typing i{width:7px;height:7px;border-radius:50%;background:var(--text-dim);animation:bounce 1.2s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}.convo-controls{display:flex;flex-direction:column;align-items:center;padding-top:var(--space-1)}.composer{display:flex;gap:var(--space-2);width:100%;max-width:560px;margin-top:var(--space-1)}.composer input{flex:1;min-width:0;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);padding:var(--space-3) 18px;outline:none;transition:border-color .2s}.composer input::placeholder{color:var(--text-faint)}.composer input:focus-visible{border-color:var(--border-strong)}.composer-send{flex:none;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--grad);color:var(--text-on-accent);transition:opacity .2s,transform .2s var(--ease)}.composer-send:disabled{opacity:.35;cursor:not-allowed}.composer-send:not(:disabled):active{transform:scale(.94)}.controls-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;gap:var(--space-3)}.record-wrap{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.record-stage{position:relative;width:220px;height:220px;display:grid;place-items:center}.visualizer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.record-btn{position:relative;width:104px;height:104px;border-radius:50%;display:grid;place-items:center;background:var(--grad);color:var(--text-on-accent);box-shadow:0 10px 40px -8px var(--violet),inset 0 -4px 12px color-mix(in srgb,var(--black) 15%,transparent);transition:transform .3s var(--ease),box-shadow .3s,background .3s}.record-btn:not(:disabled):hover{transform:scale(1.06)}.record-btn:not(:disabled):active{transform:scale(.96)}.record-btn:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:2px solid transparent;transition:border-color .3s}.status-recording .record-btn{background:var(--grad-warm);box-shadow:0 10px 50px -6px var(--pink)}.status-recording .record-btn:after{border-color:color-mix(in srgb,var(--rose-bright) 50%,transparent);animation:ring 1.4s ease-out infinite}.status-transcribing .record-btn,.status-thinking .record-btn{animation:breathe 1.6s ease-in-out infinite}.status-speaking .record-btn{box-shadow:0 10px 50px -6px var(--cyan)}@keyframes ring{0%{transform:scale(1);opacity:1}to{transform:scale(1.4);opacity:0}}@keyframes breathe{0%,to{transform:scale(1);filter:saturate(1)}50%{transform:scale(.94);filter:saturate(.6)}}.record-actions{display:flex;align-items:center;gap:10px;min-height:34px}.record-label{color:var(--text-dim);font-weight:500}@media(max-width:640px){.conversation{padding-bottom:var(--space-5)}.record-stage{width:180px;height:180px}.controls-row{display:flex;justify-content:center;gap:var(--space-1)}.mascot-slot-spacer{display:none}.mascot-slot .mascot{width:92px}.convo-actions{grid-area:actions;justify-self:end;gap:6px;flex-wrap:wrap}.convo-meta .speed-badge,.convo-meta .listen-badge{margin:0}.record-btn{width:88px;height:88px}.bubble{max-width:90%;padding:var(--space-3) 14px}.bubble-tools{opacity:1;flex-wrap:wrap}.correction{padding:var(--space-2) 36px var(--space-2) 10px;font-size:var(--fs-sm)}.hidden-speech-card{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.hidden-speech-actions{width:100%;justify-content:flex-end}.feedback-panel{padding:var(--space-4) 14px;max-height:90dvh;border-radius:var(--radius-sm)}.feedback-head h2{font-size:var(--fs-lg);overflow-wrap:anywhere}}@media(max-width:640px)and (max-height:760px){.record-stage{width:140px;height:140px}.record-btn{width:72px;height:72px}.mascot-slot .mascot{width:76px}}.convo-actions{display:flex;align-items:center;gap:var(--space-2)}.feedback-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;padding:var(--space-4);background:color-mix(in srgb,var(--black) 60%,transparent)}.feedback-panel{width:min(680px,100%);max-height:85dvh;overflow-y:auto;padding:var(--space-5) var(--space-6);border-radius:var(--radius);background:var(--bg-2);border:1px solid var(--border);box-shadow:var(--shadow)}.feedback-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.feedback-loading{color:var(--text-dim)}.feedback-text{white-space:pre-wrap;font-family:inherit;line-height:1.6;color:var(--text)}.correction{position:relative;margin:2px 0 10px;padding:10px var(--space-8) 10px var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--orange-soft) 10%,transparent);border:1px solid color-mix(in srgb,var(--orange-soft) 35%,transparent);color:var(--text);font-size:var(--fs-md)}.correction-label{display:block;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--amber);margin-bottom:var(--space-1)}.correction .icon-btn{position:absolute;top:8px;right:6px}.translation{position:relative;margin:6px 0 var(--space-1);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--teal) 8%,transparent);border:1px solid color-mix(in srgb,var(--teal) 22%,transparent);color:var(--text);font-size:var(--fs-md);animation:rise .25s var(--ease) both}.translation-label{display:block;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--cyan);margin-bottom:3px}.translation.translating{display:flex;align-items:center;gap:var(--space-2)}.translation.translating .typing{padding:0}.hidden-speech-card{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-2) var(--space-3);margin:6px 0 var(--space-1);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--slate-deep) 70%,transparent);border:1px dashed color-mix(in srgb,var(--sky) 35%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:rise .25s var(--ease) both}.hidden-speech-badge{display:inline-flex;align-items:center;gap:6px;color:var(--text-faint);font-size:var(--fs-xs);font-weight:500;letter-spacing:.02em}.hidden-speech-badge svg{color:var(--cyan)}.hidden-speech-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.reveal-speech-btn{display:inline-flex;align-items:center;gap:6px;padding:5px var(--space-3);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--sky) 12%,transparent);border:1px solid color-mix(in srgb,var(--sky) 35%,transparent);color:var(--cyan);font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:all .2s var(--ease)}.reveal-speech-btn:hover{background:color-mix(in srgb,var(--sky) 24%,transparent);border-color:var(--cyan);color:var(--white);transform:translateY(-1px);box-shadow:0 4px 12px -2px color-mix(in srgb,var(--cyan) 30%,transparent)}.reveal-speech-btn:active{transform:scale(.96)}.revealed-speech-bar{display:flex;justify-content:flex-end;margin-top:var(--space-1)}.hide-speech-inline-btn{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill);background:transparent;border:1px solid var(--border);color:var(--text-faint);font-size:var(--fs-xs);font-family:inherit;cursor:pointer;transition:all .2s}.hide-speech-inline-btn:hover{border-color:var(--text-dim);color:var(--text-dim);background:var(--surface)}.listen-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);color:var(--text-dim);font-size:var(--fs-xs);font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s var(--ease);vertical-align:middle}@media(pointer:coarse),(max-width:640px){.listen-badge{min-height:var(--touch-target);padding:0 var(--space-3)}}.listen-badge:hover{border-color:var(--cyan);color:var(--text);transform:scale(1.04)}.listen-badge.active{background:color-mix(in srgb,var(--sky) 15%,transparent);border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 10px -2px color-mix(in srgb,var(--cyan) 30%,transparent)}.listen-badge svg{flex-shrink:0}.practice-link{margin-top:6px;padding:0;font:inherit;font-size:var(--fs-sm);font-weight:600;color:var(--amber);text-decoration:underline;text-underline-offset:3px}@keyframes pulseMic{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@media(min-width:1280px){.bubble{max-width:min(80%,680px)}.composer{max-width:680px}}.review-words .practice-legend{margin-top:6px}@media(max-width:640px){.review-stats ul{gap:var(--space-1)}.review-stats li{padding:var(--space-1) 10px;font-size:var(--fs-xs)}}.review-panel{display:flex;flex-direction:column;gap:14px}.review-panel h3{font-size:var(--fs-sm);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--space-2)}.review-stats ul{display:flex;flex-wrap:wrap;gap:6px;padding:0;list-style:none}.review-stats li{padding:6px var(--space-3);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);font-size:var(--fs-sm)}.review-stats strong{color:var(--amber);margin-left:var(--space-1)}.review-tabs{align-self:flex-start}.review-tabs button{text-transform:none}.review-empty{color:var(--text-dim);line-height:1.5}.review-training{display:flex;flex-direction:column;gap:10px}.review-progress{color:var(--text-dim);font-size:var(--fs-sm)}.review-next{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-2)}.review-feedback{padding-top:14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:10px}.teacher-eval-container{display:flex;flex-direction:column;gap:var(--space-3)}.teacher-eval-actions{display:flex;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap}.eval-action-btn{font-size:var(--fs-xs)!important;padding:var(--space-1) var(--space-3)!important;border-radius:var(--radius-pill)!important;border:1px solid var(--border)!important}.teacher-eval-cards{display:flex;flex-direction:column;gap:var(--space-3)}.eval-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);line-height:1.55}.eval-card-title{font-size:var(--fs-md);font-weight:700;color:var(--amber);margin-bottom:2px;letter-spacing:.02em}.eval-card-body{display:flex;flex-direction:column;gap:6px}.eval-p{font-size:var(--fs-md);color:var(--text);margin:0;line-height:1.55}.eval-bullet{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--fs-md);color:var(--text);margin:0;line-height:1.55}.eval-bullet-dot{color:var(--violet);font-weight:700;-webkit-user-select:none;user-select:none}.eval-examples-grid{display:flex;flex-direction:column;gap:10px;margin-top:6px}.eval-example-item{display:flex;flex-direction:column;gap:6px;padding:10px var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--indigo-deep) 65%,transparent);border:1px solid var(--border)}.eval-row{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--fs-md);flex-wrap:wrap}.eval-tag{display:inline-block;font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:var(--radius-pill);white-space:nowrap;flex-shrink:0}.eval-tag-said{background:color-mix(in srgb,var(--red-soft) 18%,transparent);border:1px solid color-mix(in srgb,var(--red-soft) 40%,transparent);color:var(--pink-light)}.eval-quote-said{color:var(--text-dim);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--red-soft) 60%,transparent);font-style:italic}.eval-tag-correct{background:color-mix(in srgb,var(--green-mid) 18%,transparent);border:1px solid color-mix(in srgb,var(--green-mid) 40%,transparent);color:var(--green)}.eval-quote-correct{color:var(--emerald-200);font-weight:600}.eval-tag-tip{background:color-mix(in srgb,var(--lavender) 18%,transparent);border:1px solid color-mix(in srgb,var(--lavender) 40%,transparent);color:var(--violet-300)}.eval-tip-text{color:var(--text-dim);font-size:var(--fs-sm);line-height:1.45}.word-list{display:flex;flex-direction:column;gap:6px;padding:0;list-style:none}.word-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border)}.word-text{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;min-width:0;overflow-wrap:anywhere}.word-en{font-weight:600}.word-pt{color:var(--text-dim);font-size:var(--fs-md)}.word-row .icon-btn{flex:none}.word-row.is-tagged .word-text{opacity:.6}.word-tag{flex:none;margin-left:auto;padding:2px var(--space-2);border-radius:var(--radius-pill);border:1px solid var(--border);color:var(--text-faint);font-size:var(--fs-xs);white-space:nowrap}.convo-helper-row{display:flex;justify-content:center;margin-top:6px;margin-bottom:2px}.btn-rehearse{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--orange-soft) 12%,transparent);border:1px solid color-mix(in srgb,var(--orange-soft) 35%,transparent);color:var(--amber);font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:all .2s var(--ease)}@media(pointer:coarse),(max-width:640px){.btn-rehearse{min-height:var(--touch-target)}}.btn-rehearse:hover{background:color-mix(in srgb,var(--orange-soft) 22%,transparent);border-color:color-mix(in srgb,var(--orange-soft) 60%,transparent);transform:translateY(-1px)}.btn-rehearse:active{transform:translateY(0)}.rehearse-bulb{font-size:var(--fs-md)}.rehearsal-panel{width:min(520px,94%);display:flex;flex-direction:column;gap:var(--space-3)}.rehearsal-title-group{display:flex;align-items:center;gap:var(--space-2)}.rehearsal-title-badge{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;background:color-mix(in srgb,var(--orange-soft) 18%,transparent);border:1px solid color-mix(in srgb,var(--orange-soft) 40%,transparent);color:var(--amber);padding:2px var(--space-2);border-radius:var(--radius-pill)}.rehearsal-subtitle{color:var(--text-dim);font-size:var(--fs-sm);line-height:1.45;margin-bottom:2px}.rehearsal-error{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--rose-deep) 25%,transparent);border:1px solid color-mix(in srgb,var(--rose) 40%,transparent);color:var(--pink-soft);font-size:var(--fs-sm)}.rehearsal-input-section{display:flex;flex-direction:column;gap:var(--space-3)}.rehearsal-mic-row{display:flex;justify-content:center}.rehearsal-mic-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:10px var(--space-5);border-radius:var(--radius-pill);background:var(--surface-strong);border:1px solid var(--border-strong);color:var(--text);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:all .2s var(--ease)}.rehearsal-mic-btn:hover:not(:disabled){border-color:var(--violet);background:color-mix(in srgb,var(--indigo-dim) 80%,transparent)}.rehearsal-mic-btn.is-recording{background:color-mix(in srgb,var(--red-soft) 20%,transparent);border-color:var(--pink);color:var(--pink)}.rehearsal-text-input-wrap{display:flex;flex-direction:column;gap:var(--space-2)}.rehearsal-textarea{width:100%;font:inherit;font-size:var(--fs-md);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3) 14px;resize:none;line-height:1.5}.rehearsal-textarea:focus-visible{border-color:var(--border-strong);outline:none}.rehearsal-submit-btn{align-self:flex-end}.rehearsal-result-section{display:flex;flex-direction:column;gap:var(--space-3)}.rehearsal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px var(--space-4);display:flex;flex-direction:column;gap:10px}.rehearsal-row{display:flex;flex-direction:column;gap:var(--space-1)}.rehearsal-quote-said{font-size:var(--fs-md);color:var(--text-dim);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--red-soft) 50%,transparent);font-style:italic}.rehearsal-quote-natural{font-size:var(--fs-base);font-weight:700;color:var(--emerald-200)}.rehearsal-audio-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-1) 0}.rehearsal-listen-btn{font-size:var(--fs-sm)!important;border-radius:var(--radius-pill)!important}.rehearsal-tip-text{color:var(--text);font-size:var(--fs-sm);line-height:1.5;margin:0}.rehearsal-instruction-box{display:flex;align-items:flex-start;gap:10px;padding:var(--space-3) 14px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--green-mid) 12%,transparent);border:1px solid color-mix(in srgb,var(--green-mid) 35%,transparent);color:var(--text);font-size:var(--fs-sm);line-height:1.45}.rehearsal-instruction-icon{font-size:var(--fs-lg);line-height:1}.rehearsal-instruction-text strong{display:block;color:var(--green);font-weight:700;margin-bottom:2px}.rehearsal-instruction-text p{margin:0;color:var(--text-dim)}.rehearsal-actions-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap}.drill{display:flex;flex-direction:column;gap:14px;margin-top:var(--space-6);animation:rise .4s var(--ease) both}.listen-answer-mode{align-self:flex-start}.drill-progress{display:flex;align-items:center;gap:var(--space-3)}.drill-count{flex-shrink:0;font-size:var(--fs-sm);font-weight:600;color:var(--text-dim)}.drill-bar{flex:1;height:6px;border-radius:var(--radius-pill);background:var(--surface-strong);overflow:hidden}.drill-bar span{display:block;height:100%;border-radius:inherit;background:var(--grad);transition:width .3s var(--ease)}.drill-prompt{color:var(--cyan);font-size:var(--fs-md)}.drill-item-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.drill-mascot{flex:none}.drill-mascot .mascot{width:84px}.drill-en,.drill-source{font-size:var(--fs-lg);font-weight:600;overflow-wrap:anywhere}.drill-reference{display:flex;flex-direction:column;gap:6px;padding-top:10px;border-top:1px solid var(--border)}.drill-label,.drill-better span:first-child{font-size:var(--fs-xs);color:var(--text-faint)}.drill-verdict{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--border);background:color-mix(in srgb,var(--surface) 90%,transparent);font-size:var(--fs-sm);overflow-wrap:anywhere;margin-top:var(--space-2)}.drill-verdict.is-ok{border-color:color-mix(in srgb,var(--green-light) 45%,transparent);background:color-mix(in srgb,var(--green) 6%,var(--surface))}.drill-verdict.is-wrong{border-color:color-mix(in srgb,var(--orange-soft) 45%,transparent);background:color-mix(in srgb,var(--amber) 6%,var(--surface))}.drill-verdict-header{display:flex;align-items:center}.drill-verdict-badge{font-size:var(--fs-sm);font-weight:700;display:inline-flex;align-items:center;gap:6px}.drill-verdict.is-ok .drill-verdict-badge{color:var(--green-light)}.drill-verdict.is-wrong .drill-verdict-badge{color:var(--orange-soft)}.drill-better-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font-size:var(--fs-sm);padding:var(--space-1) 0}.drill-better-label{font-size:var(--fs-xs);color:var(--text-faint);font-weight:600;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0}.drill-better-text{font-weight:600;color:var(--cyan)}.drill-verdict-note{margin:0;font-size:var(--fs-sm);line-height:1.5;color:var(--text)}.drill-first-note{font-size:var(--fs-xs);color:var(--text-faint);margin:0}.drill-hidden{color:var(--text-faint);font-style:italic}.drill-pt{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2);color:var(--text-dim);overflow-wrap:anywhere}.drill-pt span{font-size:var(--fs-xs);color:var(--text-faint);align-self:center}.drill-mic{align-self:flex-start;justify-content:center}.drill-mic.recording{background:var(--grad-warm);box-shadow:0 8px 30px -8px var(--pink)}.drill-hint{font-size:var(--fs-xs);color:var(--text-faint)}@media(pointer:coarse){.drill-hint{display:none}}.drill-nav{display:flex;justify-content:space-between;gap:var(--space-2)}.drill .activity-actions{margin-top:0}.drill-summary .drill-score{font-size:var(--fs-display);font-weight:700;line-height:1}.drill-score-label{margin-top:-8px;color:var(--text-dim)}.drill-review{align-self:stretch;display:flex;flex-direction:column;gap:var(--space-2);text-align:left;padding:0;list-style:none}.drill-review-item{display:flex;gap:10px;padding:10px var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);overflow-wrap:anywhere}.drill-review-item>span:last-child,.drill-review-body{display:flex;flex:1;flex-direction:column;min-width:0}.drill-mark{flex-shrink:0;width:1.2em;font-weight:700;color:var(--text-faint)}.drill-review-item.is-ok .drill-mark{color:var(--green)}.drill-review-item.is-wrong .drill-mark{color:var(--amber)}.drill-review-pt{font-size:var(--fs-sm);color:var(--text-dim)}.drill-summary-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2)}.drill-back-link{font-size:var(--fs-sm);color:var(--text-faint);text-decoration:underline;text-underline-offset:3px}.drill-back-link:hover{color:var(--text)}@media(pointer:coarse),(max-width:640px){.drill-back-link{min-height:var(--touch-target)}}.pack-words{display:flex;flex-direction:column;gap:10px;margin-top:28px;padding-top:18px;border-top:1px solid var(--border)}.pack-words-title{color:var(--text-faint);font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:.12em}.pack-words .btn-ghost{align-self:flex-start}.pack-words-done{color:var(--green);font-size:var(--fs-md)}.vocab-reveal{display:flex;flex-direction:column;gap:var(--space-2);padding-top:10px;border-top:1px solid var(--border)}.vocab-word{font-size:var(--fs-xl);font-weight:700;overflow-wrap:anywhere}.vocab-example{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);overflow-wrap:anywhere}.vocab-example p{font-style:italic}.vocab-source{color:var(--text-faint);font-size:var(--fs-xs);overflow-wrap:anywhere}@media(max-width:640px){.drill-prompt{font-size:var(--fs-sm)}.drill-mascot .mascot{width:64px}.drill-en,.drill-source{font-size:var(--fs-base)}.drill-summary .drill-score{font-size:var(--fs-2xl)}.drill-review-item{padding:var(--space-2) 10px;font-size:var(--fs-sm)}.drill-summary-actions{flex-direction:column;width:100%}.drill-summary-actions .btn-primary,.drill-summary-actions .btn-ghost{width:100%;justify-content:center}}.drill-side-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);margin:0}.drill-side-stats div{display:flex;flex-direction:column;align-items:center;padding:var(--space-2);border-radius:var(--radius-sm);background:var(--surface-strong)}.drill-side-stats dt{font-size:var(--fs-xs);color:var(--text-dim)}.drill-side-stats dd{margin:0;font-size:var(--fs-lg);font-weight:700}.drill-side-stats .is-ok dd{color:var(--green)}.drill-side-stats .is-wrong dd{color:var(--amber)}.drill-side-steps{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0;padding:0;list-style:none}.drill-side-step{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-pill);border:1px solid var(--border);font-size:var(--fs-xs);font-weight:700;color:var(--text-dim)}.drill-side-step.is-ok{border-color:color-mix(in srgb,var(--green) 60%,transparent);color:var(--green)}.drill-side-step.is-wrong{border-color:color-mix(in srgb,var(--amber) 60%,transparent);color:var(--amber)}.drill-side-step.is-current{border-color:var(--violet);background:color-mix(in srgb,var(--violet) 25%,transparent);color:var(--text)}.drill-side-note{margin:0;font-size:var(--fs-xs);color:var(--text-faint)}.drill-layout{margin-top:var(--space-6)}.drill-layout .drill,.drill-layout .drill-summary{margin-top:0}@media(min-width:1280px){.with-side-panel .pack-words{margin-top:0;padding-top:0;border-top:0}}.listen-tricky{padding:0 2px;border-radius:var(--radius-2xs);background:color-mix(in srgb,var(--amber-500) 25%,transparent);color:inherit;text-decoration:underline dotted;text-underline-offset:3px}.listen-explain{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--violet) 10%,transparent);border:1px solid color-mix(in srgb,var(--violet) 25%,transparent);text-align:left}.listen-explain strong{font-size:var(--fs-sm);color:var(--text-bright)}.listen-explain ul{display:flex;flex-direction:column;gap:var(--space-1);margin:0;padding-left:var(--space-5);color:var(--text-soft);font-size:var(--fs-sm)}.listen-insights{display:flex;flex-direction:column;gap:var(--space-2);width:100%;text-align:left}.listen-insights h3{margin:0;font-size:var(--fs-md);color:var(--text-bright)}.listen-insights ul{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.listen-insight{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--amber-500) 8%,transparent);border:1px solid color-mix(in srgb,var(--amber-500) 30%,transparent);color:var(--text-soft);font-size:var(--fs-sm)}.listen-insight strong{color:var(--text-bright)}.listen-insight-examples{color:var(--text);font-style:italic}.listen-review-detail{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-2)}.listen-review-detail .listen-explain{flex-basis:100%}.listen-review-said{flex-basis:100%;margin:0;font-size:var(--fs-sm);color:var(--amber)}.listen-focus-banner{margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--cyan-500) 10%,transparent);color:var(--text);font-size:var(--fs-sm)}.notebook-page{max-width:var(--page-wide);min-height:100dvh;margin:0 auto;padding:var(--space-6) var(--space-5) calc(96px + env(safe-area-inset-bottom))}.vocab-trainer{margin-top:var(--space-5)}.notebook-convo-header{margin-bottom:var(--space-6)}.notebook-tabs-row{margin-bottom:var(--space-5)}.notebook-segmented{display:inline-flex;padding:var(--space-1);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--panel) 75%,transparent);border:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.notebook-segmented button{padding:9px var(--space-5);border-radius:var(--radius-pill);font-size:var(--fs-md);font-weight:600;color:var(--text-dim);transition:all .2s}.notebook-segmented button.active{background:var(--grad);color:var(--text-on-accent);font-weight:700}.notebook-empty-card{text-align:center;padding:48px var(--space-6);background:color-mix(in srgb,var(--panel) 60%,transparent);border:1px dashed color-mix(in srgb,var(--white) 12%,transparent);border-radius:var(--radius-xl);display:flex;flex-direction:column;align-items:center;gap:14px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.notebook-empty-card h2{font-size:var(--fs-xl);font-weight:800;color:var(--white)}.notebook-empty-card p{color:var(--text-dim);font-size:var(--fs-md);max-width:500px;line-height:1.6}.extra-pill{padding:3px 10px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--yellow-500) 15%,transparent);color:var(--yellow-400);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase}.srs-status-bar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-3)}.btn-train-filtered{flex-shrink:0}.category-filters-container{display:flex;flex-direction:column;gap:var(--space-2)}.filters-label{font-size:var(--fs-xs);font-weight:700;color:var(--text-soft);text-transform:uppercase;letter-spacing:.06em}.category-filters-scroll{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:2px 0}.cat-filter-chip{padding:6px 14px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);color:var(--text-soft);font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:all .2s ease}.cat-filter-chip:hover{border-color:color-mix(in srgb,var(--white) 20%,transparent);color:var(--white)}.cat-filter-chip.is-active{background:var(--violet);color:var(--white);border-color:var(--violet);font-weight:700;box-shadow:0 2px 10px color-mix(in srgb,var(--violet) 40%,transparent)}.notebook-search-input{width:100%;padding:var(--space-3) 44px var(--space-3) var(--space-4);background:color-mix(in srgb,var(--panel) 75%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);border-radius:var(--radius-sm);color:var(--white);font-size:var(--fs-md);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);outline:none;transition:border-color .2s}.notebook-search-input:focus{border-color:var(--cyan)}.search-clear-btn{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:36px;height:36px;display:inline-grid;place-items:center;background:transparent;border:none;color:var(--text-dim);font-size:var(--fs-md);cursor:pointer}.no-filter-match{text-align:center;color:var(--text-dim);padding:30px 10px;font-size:var(--fs-md)}.notebook-entry-card{background:color-mix(in srgb,var(--panel) 75%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);transition:border-color .2s}.notebook-entry-card:hover,.notebook-entry-card.is-practicing{border-color:color-mix(in srgb,var(--white) 18%,transparent)}.entry-card-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-2)}.entry-header-left{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.entry-category-badge{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 10px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--violet) 15%,transparent);color:var(--violet-400);border:1px solid color-mix(in srgb,var(--violet) 30%,transparent)}.entry-topic-tag{font-size:var(--fs-xs);font-weight:600;color:var(--text-dim);background:color-mix(in srgb,var(--white) 5%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);padding:2px 10px;border-radius:var(--radius-pill)}.entry-meta-badges{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.vocab-entry-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-3)}.vocab-entry-en{font-size:var(--fs-lg);font-weight:700;color:var(--white);overflow-wrap:anywhere}.vocab-entry-pt{font-size:var(--fs-base);color:var(--cyan);font-weight:600;overflow-wrap:anywhere}.vocab-entry-example{justify-content:space-between;align-items:center;flex-wrap:wrap}.vocab-example-content{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.entry-phrases{display:flex;flex-direction:column;gap:var(--space-2)}.entry-said,.entry-correct{display:flex;align-items:flex-start;gap:10px}.phrase-tag{flex-shrink:0;font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;padding:2px var(--space-2);border-radius:6px;letter-spacing:.04em;margin-top:2px}.phrase-tag.said{background:color-mix(in srgb,var(--red-500) 15%,transparent);color:var(--red-400)}.phrase-tag.correct{background:color-mix(in srgb,var(--green) 15%,transparent);color:var(--green)}.phrase-text.said{color:var(--red-400);font-size:var(--fs-md);overflow-wrap:anywhere}.phrase-text.correct{color:var(--white);font-size:var(--fs-base);font-weight:600;overflow-wrap:anywhere}.entry-tip{display:flex;align-items:flex-start;gap:var(--space-2);padding:10px 14px;background:color-mix(in srgb,var(--white) 3%,transparent);border-left:3px solid var(--violet);border-radius:0 10px 10px 0}.tip-icon{font-size:var(--fs-base)}.tip-text{font-size:var(--fs-sm);color:var(--slate-300);line-height:1.45;overflow-wrap:anywhere}.entry-footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.entry-listen-group,.entry-footer-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.entry-inline-practice{padding-top:var(--space-2);border-top:1px dashed color-mix(in srgb,var(--white) 10%,transparent)}.notebook-table-said{color:color-mix(in srgb,var(--red-500) 85%,var(--white));font-size:var(--fs-sm);text-decoration:line-through}.notebook-row-said{color:color-mix(in srgb,var(--red-500) 85%,var(--white));font-size:var(--fs-xs);text-decoration:line-through;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notebook-table-detail-box{display:flex;flex-direction:column;gap:var(--space-3)}.notebook-detail-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.notebook-inline-practice-wrap{padding-top:var(--space-2);border-top:1px dashed color-mix(in srgb,var(--white) 10%,transparent)}@media(pointer:coarse),(max-width:640px){.cat-filter-chip,.search-clear-btn{min-height:var(--touch-target);min-width:var(--touch-target);display:inline-flex;align-items:center;justify-content:center}}@media(max-width:640px){.notebook-page{padding:var(--space-4) 14px 72px}.notebook-segmented{width:100%;display:flex}.notebook-segmented button{flex:1;padding:var(--space-2) 6px;font-size:var(--fs-sm)}.srs-status-bar{flex-direction:column;align-items:stretch}.btn-train-filtered{width:100%;justify-content:center}.entry-said,.entry-correct{flex-direction:column;gap:var(--space-1)}}.activity.activity-vocab{max-width:var(--page-wide);min-height:100dvh;padding-bottom:calc(96px + env(safe-area-inset-bottom))}.vocab-trainer{display:flex;flex-direction:column;gap:var(--space-5);margin-top:var(--space-6)}.vocab-top-tabs{margin-bottom:0}.vocab-train-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);align-items:start}.vocab-desktop-sidebar-slot{display:none}@media(min-width:901px){.vocab-train-layout{grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-6)}.vocab-desktop-sidebar-slot{display:block;position:sticky;top:var(--space-5)}}.desktop-kbd{display:none;padding:2px 6px;border-radius:var(--radius-2xs);background:color-mix(in srgb,var(--black) 28%,transparent);border:1px solid color-mix(in srgb,var(--white) 22%,transparent);color:inherit;font-size:var(--fs-xs);font-weight:600}@media(min-width:901px){.desktop-kbd{display:inline-block}}.vocab-reveal{display:flex;flex-direction:column;gap:var(--space-4);padding-top:var(--space-4);border-top:1px solid color-mix(in srgb,var(--white) 10%,transparent)}.vocab-reveal .drill-label{display:block;margin-bottom:var(--space-1);color:var(--text-soft);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.vocab-example{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid color-mix(in srgb,var(--white) 8%,transparent);border-left:3px solid var(--cyan)}.vocab-example-highlight{background:color-mix(in srgb,var(--cyan) 22%,transparent);color:var(--cyan-400);padding:1px 6px;border-radius:var(--radius-2xs);font-weight:700}.vocab-source{color:var(--text-soft);font-size:var(--fs-xs)}.vocab-train-sidebar{display:flex;flex-direction:column;gap:var(--space-4)}.vocab-sidebar-due-cta{width:100%;min-height:68px;padding:var(--space-4);border-radius:var(--radius-md);background:color-mix(in srgb,var(--panel) 85%,transparent);border:1px solid color-mix(in srgb,var(--white) 12%,transparent);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);text-align:left;transition:border-color .2s}.vocab-sidebar-due-cta.has-due{border-color:color-mix(in srgb,var(--cyan-500) 45%,transparent);background:color-mix(in srgb,var(--cyan-500) 10%,var(--panel))}.vocab-sidebar-due-cta.has-due:hover{border-color:var(--cyan)}.sidebar-due-left{display:flex;align-items:center;gap:var(--space-3)}.sidebar-due-icon{font-size:var(--fs-xl)}.sidebar-due-val{display:block;font-size:var(--fs-xl);font-weight:800;color:var(--white);line-height:1.1}.sidebar-due-lbl{display:block;font-size:var(--fs-xs);font-weight:600;color:var(--text-soft);margin-top:2px}.sidebar-due-action{font-size:var(--fs-sm);font-weight:700;color:var(--cyan)}.vocab-sidebar-card{padding:var(--space-4);border-radius:var(--radius-md);background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid color-mix(in srgb,var(--white) 10%,transparent);display:flex;flex-direction:column;gap:var(--space-3)}.sidebar-section-header,.sidebar-mastered-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.sidebar-section-title{font-size:var(--fs-xs);font-weight:700;color:var(--text-soft);text-transform:uppercase;letter-spacing:.05em}.sidebar-session-scores{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.session-score-box{padding:var(--space-3) var(--space-2);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid color-mix(in srgb,var(--white) 6%,transparent);display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px}.session-score-box.is-ok .score-num{color:var(--green)}.session-score-box.is-wrong .score-num{color:var(--red-400)}.score-num{font-size:var(--fs-base);font-weight:800;color:var(--white)}.score-lbl{font-size:var(--fs-xs);color:var(--text-soft)}.sidebar-mastered-count{font-size:var(--fs-sm);font-weight:700;color:var(--white)}.sidebar-mastered-bar{height:8px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--white) 10%,transparent);overflow:hidden}.sidebar-mastered-bar span{display:block;height:100%;background:var(--grad);border-radius:inherit}.sidebar-upcoming-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.sidebar-upcoming-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-sm);color:var(--text-light);padding:var(--space-2) 0;border-bottom:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.sidebar-upcoming-item:last-child{border-bottom:none;padding-bottom:0}.upcoming-idx{color:var(--text-soft);font-weight:700;font-size:var(--fs-xs)}.upcoming-pt{overflow-wrap:anywhere}@media(min-width:641px)and (max-width:900px){.activity.activity-vocab{max-width:900px;padding:var(--space-6)}}@media(prefers-reduced-motion:reduce){.btn-primary{box-shadow:none!important;transform:none!important}}.vocab-list-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);align-items:start}.vocab-filter-sidebar{display:none}@media(max-width:900px){.vocab-desktop-only{display:none!important}}@media(min-width:901px){.vocab-list-layout{grid-template-columns:260px minmax(0,1fr);gap:var(--space-6)}.vocab-filter-sidebar{display:flex;flex-direction:column;gap:var(--space-5);position:sticky;top:var(--space-5);padding:var(--space-5);border-radius:var(--radius-md);background:color-mix(in srgb,var(--panel) 84%,transparent);border:1px solid color-mix(in srgb,var(--white) 10%,transparent)}.vocab-mobile-only{display:none!important}}.sidebar-filter-group{display:flex;flex-direction:column;gap:var(--space-2)}.sidebar-status-list{display:flex;flex-direction:column;gap:6px}.sidebar-status-btn{width:100%;min-height:42px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);border:1px solid transparent;display:flex;align-items:center;justify-content:space-between;color:var(--text-soft);font-size:var(--fs-sm);font-weight:600;transition:background-color .15s,color .15s,border-color .15s}.sidebar-status-btn:hover{background:color-mix(in srgb,var(--white) 6%,transparent);color:var(--white)}.sidebar-status-btn.is-active{background:color-mix(in srgb,var(--violet) 22%,transparent);border-color:color-mix(in srgb,var(--violet) 45%,transparent);color:var(--white);font-weight:700}.sidebar-status-count{font-size:var(--fs-xs);color:var(--text-soft);background:color-mix(in srgb,var(--white) 6%,transparent);padding:2px var(--space-2);border-radius:var(--radius-pill)}.source-dropdown-container{position:relative}.source-dropdown-trigger{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);background:var(--bg-deep);border:1px solid color-mix(in srgb,var(--white) 14%,transparent);color:var(--text-light);font-size:var(--fs-sm);font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.source-dropdown-menu{margin-top:var(--space-2);padding:var(--space-2);border-radius:var(--radius-xs);background:var(--bg-deep);border:1px solid color-mix(in srgb,var(--white) 14%,transparent);display:flex;flex-direction:column;gap:var(--space-2);max-height:240px;overflow-y:auto}.source-dropdown-search{width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-2xs);background:var(--panel);border:1px solid color-mix(in srgb,var(--white) 14%,transparent);color:var(--white);font-size:var(--fs-sm)}.source-dropdown-list{display:flex;flex-direction:column;gap:4px}.source-checkbox-row{display:flex;align-items:center;gap:var(--space-2);min-height:40px;padding:var(--space-1) var(--space-2);border-radius:var(--radius-2xs);cursor:pointer;font-size:var(--fs-sm);color:var(--text-soft)}.source-checkbox-row:hover,.source-checkbox-row.is-checked{background:color-mix(in srgb,var(--white) 5%,transparent);color:var(--white)}.source-checkbox-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-active-filters{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid color-mix(in srgb,var(--white) 8%,transparent)}.sidebar-active-header{display:flex;align-items:center;justify-content:space-between}.btn-clear-filters{font-size:var(--fs-xs);font-weight:700;color:var(--cyan);min-height:36px}.active-filter-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.active-filter-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--cyan-500) 14%,transparent);border:1px solid color-mix(in srgb,var(--cyan-500) 35%,transparent);color:var(--cyan-400);font-size:var(--fs-xs);font-weight:600}.vocab-list-content{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.vocab-list-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.vocab-search-box{position:relative;flex:1;min-width:220px}.search-shortcut-kbd{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none}.vocab-toolbar-controls{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.vocab-toolbar-controls .segmented{gap:4px}.vocab-toolbar-controls .segmented button{padding:6px 14px;font-size:var(--fs-sm)}.vocab-sort-select{min-height:40px;padding:0 var(--space-3);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:var(--fs-sm);font-weight:600}@media(pointer:coarse),(max-width:640px){.vocab-sort-select{min-height:var(--touch-target)}}.vocab-quick-chips{padding:2px 0;gap:var(--space-2)}.vocab-cards-grid{display:flex;flex-direction:column;gap:var(--space-4)}.vocab-mobile-list-stack{display:flex;flex-direction:column;gap:var(--space-2)}.vocab-batch-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--violet) 16%,var(--panel));border:1px solid color-mix(in srgb,var(--violet) 40%,transparent)}.batch-count{font-size:var(--fs-sm);font-weight:700;color:var(--white)}.batch-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.vocab-list-meta-row{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-1)}.vocab-showing-count{font-size:var(--fs-xs);font-weight:600;color:var(--text-soft)}.vocab-table-wrapper{border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--white) 12%,transparent);background:color-mix(in srgb,var(--panel) 82%,transparent)}.vocab-table{width:100%;border-collapse:collapse;text-align:left;font-size:var(--fs-sm)}.vocab-table thead th{height:46px;padding:0 var(--space-4);background:var(--panel-hi);border-bottom:1px solid color-mix(in srgb,var(--white) 12%,transparent);color:var(--text-soft);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.vocab-table thead tr:first-child th:first-child{border-top-left-radius:calc(var(--radius-md) - 1px)}.vocab-table thead tr:first-child th:last-child{border-top-right-radius:calc(var(--radius-md) - 1px)}.table-sort-btn{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--text-soft);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.table-sort-btn:hover{color:var(--white)}.vocab-table-row{height:52px;border-bottom:1px solid color-mix(in srgb,var(--white) 6%,transparent);cursor:pointer;transition:background-color .12s}.vocab-table tbody tr:last-child{border-bottom:none}.vocab-table-row:hover,.vocab-table-row.is-expanded{background:color-mix(in srgb,var(--white) 4%,transparent)}.vocab-table-row.is-selected{background:color-mix(in srgb,var(--violet) 12%,transparent)}.vocab-table td{padding:var(--space-2) var(--space-4);vertical-align:middle}.col-check{width:44px;text-align:center}.vocab-row-checkbox{width:18px;height:18px;accent-color:var(--violet);cursor:pointer}.vocab-table-en{font-weight:700;color:var(--white);font-size:var(--fs-md)}.vocab-table-pt{color:var(--cyan);font-size:var(--fs-sm);font-weight:600}.vocab-table-source{color:var(--text-soft);font-size:var(--fs-xs)}.col-actions{width:104px;text-align:right}.vocab-table-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:var(--space-1)}.vocab-row-menu-wrap{position:relative}.vocab-row-menu{position:absolute;right:0;top:100%;z-index:20;min-width:172px;padding:var(--space-1);border-radius:var(--radius-xs);background:var(--panel-hi);border:1px solid color-mix(in srgb,var(--white) 14%,transparent);box-shadow:var(--shadow);display:flex;flex-direction:column}.vocab-row-menu button{min-height:40px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-2xs);text-align:left;font-size:var(--fs-sm);color:var(--text-light)}.vocab-row-menu button:hover{background:color-mix(in srgb,var(--white) 8%,transparent)}.vocab-table-detail-row td{background:color-mix(in srgb,var(--bg-deep) 85%,transparent);border-bottom:1px solid color-mix(in srgb,var(--white) 10%,transparent);padding:var(--space-3) var(--space-4)}.vocab-detail-example{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);color:var(--text-light);font-size:var(--fs-sm)}.vocab-level-indicator{display:inline-flex;align-items:center;gap:var(--space-2)}.vocab-dots{display:inline-flex;align-items:center;gap:4px}.vocab-dot{width:7px;height:7px;border-radius:50%;background:color-mix(in srgb,var(--white) 18%,transparent)}.vocab-dot.is-filled{background:var(--cyan)}.vocab-state-tag{font-size:var(--fs-xs);font-weight:600;color:var(--text-soft)}.vocab-state-tag.is-due{color:var(--cyan-400);font-weight:700}.vocab-state-tag.is-mastered{color:var(--emerald-200)}.vocab-mobile-row-wrap{border:1px solid color-mix(in srgb,var(--white) 10%,transparent);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--panel) 80%,transparent);overflow:hidden}.vocab-mobile-row-wrap.is-selected{border-color:var(--violet);background:color-mix(in srgb,var(--violet) 14%,var(--panel))}.vocab-mobile-row{min-height:68px;padding:var(--space-3) var(--space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);transition:transform .15s var(--ease)}.vocab-mobile-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.vocab-mobile-line1{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-3)}.vocab-row-en{font-size:var(--fs-base);font-weight:700;color:var(--white);overflow-wrap:anywhere}.vocab-row-pt{font-size:var(--fs-sm);font-weight:600;color:var(--cyan);overflow-wrap:anywhere}.vocab-mobile-line2{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);font-size:var(--fs-xs);color:var(--text-soft)}.vocab-row-source{color:var(--text-soft)}.vocab-grouped-sections{display:flex;flex-direction:column;gap:var(--space-4)}.vocab-status-section{border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--white) 12%,transparent);background:color-mix(in srgb,var(--panel) 60%,transparent);overflow:hidden}.vocab-section-header{width:100%;min-height:48px;padding:var(--space-3) var(--space-4);background:var(--panel-hi);color:var(--white);font-size:var(--fs-sm);font-weight:700;display:flex;align-items:center;justify-content:space-between}.vocab-section-body{padding:var(--space-3)}.vocab-load-more-wrap{display:flex;justify-content:center;padding:var(--space-4) 0}.vocab-gesture-hint{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--cyan-500) 10%,var(--panel));border:1px solid color-mix(in srgb,var(--cyan-500) 30%,transparent);color:var(--text-light);font-size:var(--fs-xs)}.vocab-gesture-hint button{min-width:44px;min-height:44px;color:var(--text-soft)}.vocab-undo-toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:40;display:flex;align-items:center;gap:var(--space-3);margin:0;box-shadow:var(--shadow)}.sidebar-section-header .segmented button{padding:4px 12px;font-size:var(--fs-xs)}.vocab-undo-actions{display:flex;align-items:center;gap:var(--space-2)}:where(.chip-row){display:flex;gap:var(--space-2)}:where(.chip-row:not(.is-wrap)){overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}:where(.chip-row:not(.is-wrap))::-webkit-scrollbar{display:none}:where(.chip-row.is-wrap){flex-wrap:wrap}.chip-row{--chip-fade: 32px}.chip-row[data-fade=end]{-webkit-mask-image:linear-gradient(to right,black calc(100% - var(--chip-fade)),transparent);mask-image:linear-gradient(to right,black calc(100% - var(--chip-fade)),transparent)}.chip-row[data-fade=start]{-webkit-mask-image:linear-gradient(to left,black calc(100% - var(--chip-fade)),transparent);mask-image:linear-gradient(to left,black calc(100% - var(--chip-fade)),transparent)}.chip-row[data-fade=both]{-webkit-mask-image:linear-gradient(to right,transparent,black var(--chip-fade),black calc(100% - var(--chip-fade)),transparent);mask-image:linear-gradient(to right,transparent,black var(--chip-fade),black calc(100% - var(--chip-fade)),transparent)}@media(max-width:640px){.story-progress-bar{padding:var(--space-3) 14px}.story-progress-info{flex-wrap:wrap;gap:var(--space-2)}.story-genre-tag,.story-chapter-count{font-size:var(--fs-sm)}.story-progress-track{gap:3px}.story-step{height:24px;font-size:var(--fs-xs);border-radius:var(--radius-2xs)}.story-turn-bubble{padding:var(--space-3) 14px;font-size:var(--fs-md)}.story-turn-meta{flex-wrap:wrap;gap:6px 10px}.turn-author{font-size:var(--fs-sm)}.turn-chapter{font-size:var(--fs-xs)}.story-turn-tools{width:100%;margin-left:0;justify-content:flex-end;margin-top:var(--space-1);padding-top:var(--space-1);border-top:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.story-hook-banner{padding:var(--space-3) 14px;gap:10px}.hook-icon{font-size:var(--fs-xl)}.hook-question{font-size:var(--fs-md)}.suggestions-chips{gap:6px}.chip-suggestion{padding:6px var(--space-3);font-size:var(--fs-sm)}.story-composer{padding:var(--space-3)}.composer-input-row{flex-direction:column;align-items:stretch;gap:10px}.story-textarea{min-height:64px;font-size:var(--fs-md);padding:10px var(--space-3)}.composer-actions{justify-content:space-between;width:100%}.story-send-btn{flex:1;justify-content:center;padding:var(--space-3) var(--space-4);font-size:var(--fs-md)}.story-completed-banner{padding:18px 14px;gap:var(--space-3)}.story-completed-banner h3{font-size:var(--fs-lg)}.story-completed-banner p{font-size:var(--fs-sm)}.story-finish-btn{width:100%;white-space:normal;text-align:center;justify-content:center;padding:var(--space-3) var(--space-4);font-size:var(--fs-md);line-height:1.35}.storybook-header{padding:var(--space-4) 14px}.storybook-badge{flex-wrap:wrap;justify-content:center;gap:6px}.storybook-title{font-size:var(--fs-xl);overflow-wrap:anywhere}.storybook-subtitle{font-size:var(--fs-sm)}.storybook-audio-btn{width:100%;justify-content:center;padding:var(--space-3) 18px;font-size:var(--fs-md)}.storybook-manuscript{padding:18px 14px}.manuscript-title{font-size:var(--fs-xl)}.manuscript-body p{font-size:var(--fs-base);line-height:1.6;text-indent:1em}.storybook-section{padding:var(--space-4) 14px}.storybook-section-header{gap:10px}.storybook-section-icon{font-size:var(--fs-xl)}.storybook-section-header h3{font-size:var(--fs-lg)}.correction-line{flex-direction:column;align-items:flex-start;gap:2px}.storybook-vocab-grid{grid-template-columns:1fr}.storybook-footer{flex-direction:column;gap:var(--space-2);width:100%}.storybook-footer .btn-primary,.storybook-footer .btn-ghost{width:100%;justify-content:center}}.story-container{width:100%;max-width:860px;margin:0 auto;padding-bottom:60px}@media(min-width:1280px){.story-container{max-width:none}}.genre-selector{animation:fadeIn .3s var(--ease)}.genre-header{text-align:center;margin-bottom:var(--space-7)}.genre-header h2{font-size:var(--fs-2xl);font-weight:700;margin-bottom:10px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.genre-header p{color:var(--text-dim);font-size:var(--fs-base);max-width:620px;margin:0 auto;line-height:1.5}.genre-header strong{color:var(--text)}.genre-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4)}.genre-card{display:flex;align-items:center;gap:var(--space-4);padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-align:left;transition:transform .2s var(--ease),border-color .2s,background .2s,box-shadow .2s}.genre-card:hover:not(:disabled){transform:translateY(-3px);border-color:var(--border-strong);background:var(--surface-strong);box-shadow:0 12px 30px -8px color-mix(in srgb,var(--violet) 25%,transparent)}.genre-card-icon{font-size:var(--fs-display);line-height:1;flex-shrink:0}.genre-card-mascot .mascot{width:68px}.genre-card-body{flex:1;min-width:0}.genre-card-title{font-size:var(--fs-base);font-weight:600;color:var(--text);margin-bottom:var(--space-1)}.genre-card-desc{font-size:var(--fs-sm);color:var(--text-dim);line-height:1.35}.genre-card-arrow{color:var(--cyan);font-size:var(--fs-lg);opacity:.6;transition:transform .2s,opacity .2s}.genre-card:hover .genre-card-arrow{opacity:1;transform:translate(4px)}.story-round{display:flex;flex-direction:column;gap:var(--space-5);animation:fadeIn .3s var(--ease)}.story-main,.story-side{display:contents}.story-round .story-progress-bar{order:0}.story-round .story-transcript{order:1}.story-round .story-hook-banner{order:2}.story-round .story-suggestions{order:3}.story-round .story-composer{order:4}.story-round .story-completed-banner{order:5}@media(min-width:1280px){.story-round{display:grid;grid-template-columns:minmax(0,1fr) var(--side-panel-lg);gap:var(--space-7);align-items:start}.story-main,.story-side{display:flex;flex-direction:column;gap:var(--space-5);min-width:0}.story-side{position:sticky;top:var(--space-5)}.story-round .story-transcript{max-height:min(640px,calc(100dvh - 320px))}.story-side .suggestions-chips{flex-direction:column;align-items:stretch}}.story-progress-bar{padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.story-progress-info{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.story-genre-tag{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:600;color:var(--cyan)}.story-progress-info .story-change-genre{margin-left:auto;padding:2px var(--space-2);font-size:var(--fs-sm)}.story-chapter-count{font-size:var(--fs-md);color:var(--text-dim)}.story-chapter-count strong{color:var(--text);font-size:var(--fs-base)}.story-progress-track{display:flex;gap:6px;width:100%}.story-step{flex:1;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:color-mix(in srgb,var(--white) 5%,transparent);border:1px solid var(--border);font-size:var(--fs-xs);font-weight:600;color:var(--text-faint);transition:all .25s var(--ease)}.story-step.is-completed{background:color-mix(in srgb,var(--violet) 25%,transparent);border-color:var(--violet);color:var(--text)}.story-step.is-current{background:var(--grad);border-color:transparent;color:var(--text-on-accent);box-shadow:0 0 14px color-mix(in srgb,var(--cyan) 40%,transparent);transform:scale(1.05)}.story-transcript{max-height:520px;overflow-y:auto;padding:var(--space-2) var(--space-1)}.story-transcript-content{display:flex;flex-direction:column;gap:var(--space-4)}.story-turn-bubble{padding:var(--space-4) var(--space-5);border-radius:var(--radius);line-height:1.6;font-size:var(--fs-base);animation:popIn .25s var(--ease)}.story-turn-bubble.is-ai{background:var(--surface-strong);border:1px solid var(--border-strong);border-left:4px solid var(--violet)}.story-turn-bubble.is-user{background:color-mix(in srgb,var(--cyan) 8%,transparent);border:1px solid color-mix(in srgb,var(--cyan) 25%,transparent);border-left:4px solid var(--cyan)}.story-turn-meta{display:flex;align-items:center;gap:10px;margin-bottom:var(--space-2)}.turn-author{font-weight:600;font-size:var(--fs-sm);color:var(--text)}.story-narrator{display:inline-flex;align-items:center;gap:var(--space-2)}.story-narrator-mascot .mascot{width:46px}.turn-chapter{font-size:var(--fs-xs);color:var(--text-dim);background:color-mix(in srgb,var(--white) 8%,transparent);padding:2px var(--space-2);border-radius:var(--radius-pill)}.story-turn-tools{margin-left:auto;display:flex;align-items:center;gap:var(--space-1)}.story-turn-tools .icon-btn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);color:var(--text-dim);background:color-mix(in srgb,var(--white) 4%,transparent);border:1px solid transparent;transition:all .2s var(--ease);cursor:pointer}@media(pointer:coarse),(max-width:640px){.story-turn-tools .icon-btn{width:var(--touch-target);height:var(--touch-target)}}.story-turn-tools .icon-btn:hover:not(:disabled){color:var(--text);background:color-mix(in srgb,var(--white) 10%,transparent);border-color:var(--border)}.story-turn-tools .icon-btn.active{color:var(--cyan);background:color-mix(in srgb,var(--cyan) 12%,transparent);border-color:color-mix(in srgb,var(--cyan) 35%,transparent)}.story-hidden-speech{margin:var(--space-2) 0}.story-reveal-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 14px;background:color-mix(in srgb,var(--white) 4%,transparent);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-dim);font-size:var(--fs-sm);cursor:pointer;transition:all .2s var(--ease)}.story-reveal-btn:hover{background:color-mix(in srgb,var(--violet) 12%,transparent);border-color:var(--violet);color:var(--text)}.story-translation-box{margin-top:10px;padding:10px 14px;background:color-mix(in srgb,var(--black) 25%,transparent);border-left:3px solid var(--cyan);border-radius:var(--radius-sm);animation:popIn .2s var(--ease)}.story-translation-badge{display:inline-block;font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--cyan);margin-bottom:var(--space-1)}.story-translation-text{font-size:var(--fs-md);color:var(--text);line-height:1.5;margin:0}.story-turn-text{color:var(--text);font-family:inherit}.story-typing-indicator{display:flex;gap:6px;padding:6px 0}.story-typing-indicator .dot{width:8px;height:8px;background:var(--violet);border-radius:50%;animation:bounce 1.2s infinite ease-in-out}.story-typing-indicator .dot:nth-child(2){animation-delay:.2s}.story-typing-indicator .dot:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.story-hook-banner{display:flex;align-items:flex-start;gap:14px;padding:var(--space-4) var(--space-5);background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--violet) 15%,transparent),color-mix(in srgb,var(--cyan) 15%,transparent));border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 8px 24px -6px color-mix(in srgb,var(--black) 30%,transparent)}.hook-icon{font-size:var(--fs-xl);line-height:1}.hook-content{flex:1}.hook-label{display:block;font-size:var(--fs-sm);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--amber);margin-bottom:var(--space-1)}.hook-question{font-size:var(--fs-base);font-weight:600;color:var(--text);line-height:1.4}.story-suggestions{display:flex;flex-direction:column;gap:var(--space-2)}.suggestions-label{font-size:var(--fs-sm);color:var(--text-dim)}.suggestions-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip-suggestion{padding:var(--space-2) 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:var(--fs-sm);color:var(--text);text-align:left;transition:all .2s var(--ease)}@media(pointer:coarse),(max-width:640px){.chip-suggestion{min-height:var(--touch-target)}}.chip-suggestion:hover{background:var(--surface-strong);border-color:var(--cyan);color:var(--cyan);transform:translateY(-1px)}.story-composer{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.composer-input-row{display:flex;gap:var(--space-3);align-items:flex-end}.story-textarea{flex:1;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3) 14px;color:var(--text);font-size:var(--fs-md);line-height:1.4;resize:vertical;min-height:64px}.story-textarea:focus{border-color:var(--cyan)}.composer-actions{display:flex;align-items:center;gap:var(--space-2)}.story-mic-btn{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:var(--surface-strong);border:1px solid var(--border);color:var(--text);transition:all .2s var(--ease)}.story-mic-btn:hover:not(:disabled){border-color:var(--cyan);color:var(--cyan)}.story-mic-btn.is-recording{background:var(--danger);border-color:var(--danger);color:var(--white);box-shadow:0 0 16px color-mix(in srgb,var(--danger) 40%,transparent)}.story-send-btn{padding:var(--space-3) var(--space-5);white-space:nowrap}.recording-status{font-size:var(--fs-sm);color:var(--danger);font-weight:500;display:flex;align-items:center;gap:6px}.transcribing-status{font-size:var(--fs-sm);color:var(--cyan);font-weight:500}.story-completed-banner{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--violet) 18%,transparent),color-mix(in srgb,var(--green) 18%,transparent));border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 12px 32px -8px color-mix(in srgb,var(--black) 40%,transparent);text-align:center;align-items:center;animation:popIn .3s var(--ease)}.story-completed-banner .celebration-badge{display:inline-block;padding:var(--space-1) var(--space-3);background:color-mix(in srgb,var(--green) 20%,transparent);color:var(--green);border-radius:var(--radius-pill);font-size:var(--fs-sm);font-weight:700;letter-spacing:.05em;text-transform:uppercase;margin-bottom:var(--space-2)}.story-completed-banner h3{font-size:var(--fs-xl);font-weight:700;color:var(--text);margin-bottom:6px}.story-completed-banner p{color:var(--text-dim);font-size:var(--fs-md);max-width:600px;line-height:1.5;margin:0 auto}.story-finish-btn{padding:14px 28px;font-size:var(--fs-base);font-weight:600;cursor:pointer;box-shadow:0 4px 16px color-mix(in srgb,var(--violet) 35%,transparent);display:inline-flex;align-items:center;gap:var(--space-2)}.storybook-review{display:flex;flex-direction:column;gap:var(--space-7);animation:fadeIn .3s var(--ease)}.storybook-header{text-align:center;padding:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.storybook-badge{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--fs-md);color:var(--text-dim);margin-bottom:var(--space-3)}.storybook-pill{background:color-mix(in srgb,var(--green) 15%,transparent);color:var(--green);padding:2px 10px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase}.storybook-title{font-size:var(--fs-display);font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:10px;line-height:1.2}.storybook-subtitle{color:var(--text-dim);max-width:600px;margin:0 auto var(--space-5);line-height:1.45}.storybook-audiobook-bar{display:flex;justify-content:center}.storybook-audio-btn{padding:14px 28px;font-size:var(--fs-base)}.storybook-manuscript{background:var(--bg-2);border:1px solid var(--border-strong);border-radius:var(--radius);padding:var(--space-7);box-shadow:0 16px 40px -12px color-mix(in srgb,var(--black) 60%,transparent)}.manuscript-paper{max-width:700px;margin:0 auto}.manuscript-title{font-size:var(--fs-2xl);font-weight:700;text-align:center;color:var(--amber);margin-bottom:var(--space-6);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.manuscript-body p{font-size:var(--fs-lg);line-height:1.75;color:var(--text-light);margin-bottom:var(--space-4);text-indent:1.5em}.storybook-section{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.storybook-section-header{display:flex;align-items:flex-start;gap:14px}.storybook-section-icon{font-size:var(--fs-2xl);line-height:1}.storybook-section-header h3{font-size:var(--fs-xl);font-weight:700;color:var(--text);margin-bottom:var(--space-1)}.storybook-section-header p{font-size:var(--fs-md);color:var(--text-dim)}.storybook-clean-slate{display:flex;align-items:center;gap:14px;padding:18px;background:color-mix(in srgb,var(--green) 10%,transparent);border:1px solid color-mix(in srgb,var(--green) 25%,transparent);border-radius:var(--radius-sm);color:var(--green-200)}.storybook-corrections-list{display:flex;flex-direction:column;gap:var(--space-4)}.storybook-correction-card{padding:18px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:var(--space-3)}.correction-diff{display:flex;flex-direction:column;gap:var(--space-2)}.correction-line{display:flex;align-items:baseline;gap:10px;font-size:var(--fs-md);line-height:1.4}.correction-line.is-original .correction-tag{color:var(--red-400);font-weight:600;font-size:var(--fs-sm)}.correction-line.is-original .correction-text{color:var(--red-300);text-decoration:line-through}.correction-line.is-improved .correction-tag{color:var(--green);font-weight:600;font-size:var(--fs-sm)}.correction-line.is-improved .correction-text{color:var(--green-300);font-weight:600}.correction-tip{font-size:var(--fs-md);color:var(--text-dim);background:color-mix(in srgb,var(--white) 3%,transparent);padding:10px 14px;border-radius:var(--radius-xs);border-left:3px solid var(--amber)}.correction-tip strong{color:var(--amber)}.storybook-vocab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3)}.storybook-vocab-card{padding:14px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.vocab-word-en{font-size:var(--fs-base);font-weight:700;color:var(--cyan);margin-bottom:var(--space-1)}.vocab-word-pt{font-size:var(--fs-md);color:var(--text);margin-bottom:6px}.vocab-word-example{font-size:var(--fs-sm);color:var(--text-dim);font-style:italic;line-height:1.35}.storybook-footer{display:flex;justify-content:center;padding-top:10px}.grammar-page{display:flex;flex-direction:column;gap:var(--space-6);max-width:var(--page-wide);margin:0 auto;padding:var(--space-6) var(--space-5) 80px;width:100%}.grammar-header{border-bottom:1px solid var(--border)}.grammar-subnav{display:flex;gap:var(--space-2);background:var(--surface);padding:var(--space-1);border-radius:var(--radius-sm);border:1px solid var(--border)}.grammar-subnav-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:10px var(--space-4);font-size:var(--fs-md);font-weight:600;color:var(--text-dim);background:transparent;border:none;border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;transition:all .2s var(--ease);min-height:44px;touch-action:manipulation}.grammar-subnav-btn:hover{color:var(--text);background:var(--surface-strong)}.grammar-subnav-btn.active{background:var(--surface-strong);color:var(--text);box-shadow:0 2px 8px color-mix(in srgb,var(--black) 25%,transparent);border:1px solid var(--border-strong)}.grammar-trilha-container{display:flex;flex-direction:column;gap:var(--space-6);width:100%}.grammar-hero-card{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:var(--space-6);text-align:left;padding:var(--space-6) 28px;margin:0;background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--panel-hi) 75%,transparent),color-mix(in srgb,var(--panel-lo) 90%,transparent));border:1px solid var(--border-strong);border-radius:var(--radius-sm);position:relative;overflow:hidden;box-shadow:var(--shadow)}.grammar-hero-card:before{content:"";position:absolute;top:0;right:0;width:280px;height:100%;background:radial-gradient(circle at top right in srgb,color-mix(in srgb,var(--violet) 15%,transparent),transparent 70%);pointer-events:none}.grammar-hero-text{flex:1;display:flex;flex-direction:column;gap:10px;z-index:1;min-width:0}.grammar-user-greeting{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.grammar-greeting-pill{font-size:var(--fs-sm);font-weight:700;color:var(--text);background:color-mix(in srgb,var(--white) 6%,transparent);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--border)}.grammar-user-level-badge{font-size:var(--fs-xs);font-weight:800;color:var(--cyan);background:color-mix(in srgb,var(--cyan-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--cyan-500) 30%,transparent);padding:3px 10px;border-radius:var(--radius-pill);letter-spacing:.04em;text-transform:uppercase}.grammar-hero-title{font-size:var(--fs-xl);font-weight:800;color:var(--text);margin:0;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1.25}.grammar-hero-desc{font-size:var(--fs-md);color:var(--text-soft-alt);line-height:1.55;max-width:580px;margin:0}.grammar-overall-progress-zone{display:flex;flex-direction:column;gap:6px;margin-top:6px;max-width:500px}.grammar-overall-labels{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-sm)}.grammar-progress-stat{color:var(--text-dim)}.grammar-progress-stat strong{color:var(--text)}.grammar-progress-percent{font-weight:800;color:var(--cyan)}.grammar-overall-bar{width:100%;height:8px;background:color-mix(in srgb,var(--white) 8%,transparent);border-radius:var(--radius-pill);overflow:hidden;border:1px solid var(--border)}.grammar-overall-fill{height:100%;background:var(--grad);border-radius:var(--radius-pill);transition:width .6s var(--ease);box-shadow:0 0 10px color-mix(in srgb,var(--cyan) 50%,transparent)}.grammar-hero-stats{display:flex;gap:var(--space-3);flex-shrink:0;z-index:1}.grammar-stat-pill{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-3) 18px;background:var(--surface-strong);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:96px;transition:transform .2s,border-color .2s}.grammar-stat-pill:hover{transform:translateY(-2px);border-color:var(--border-strong)}.grammar-stat-num{font-size:var(--fs-xl);font-weight:800;color:var(--text);line-height:1.2}.grammar-stat-lbl{font-size:var(--fs-xs);font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.daily-goal-pill.is-met{border-color:color-mix(in srgb,var(--emerald-500) 40%,transparent);background:color-mix(in srgb,var(--emerald-500) 10%,transparent)}.daily-goal-pill.is-met .grammar-stat-num{color:var(--green)}.grammar-resume-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);padding:18px var(--space-6);background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--violet) 14%,transparent),color-mix(in srgb,var(--cyan-500) 8%,transparent));border:1.5px solid color-mix(in srgb,var(--violet) 35%,transparent);border-radius:var(--radius-sm);box-shadow:0 4px 20px -6px color-mix(in srgb,var(--violet) 25%,transparent);text-align:left;margin:0}.grammar-resume-left{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.grammar-resume-tag{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:800;color:var(--cyan);text-transform:uppercase;letter-spacing:.05em}.pulse-indicator{width:8px;height:8px;border-radius:50%;background:var(--cyan);box-shadow:0 0 color-mix(in srgb,var(--cyan) 70%,transparent);animation:pulse-ring 1.8s infinite}@keyframes pulse-ring{0%{transform:scale(.9);box-shadow:0 0 color-mix(in srgb,var(--cyan) 70%,transparent)}70%{transform:scale(1);box-shadow:0 0 0 6px color-mix(in srgb,var(--cyan) 0%,transparent)}to{transform:scale(.9);box-shadow:0 0 color-mix(in srgb,var(--cyan) 0%,transparent)}}.grammar-resume-title-wrap{display:flex;align-items:center;gap:14px;min-width:0}.grammar-resume-icon{font-size:var(--fs-2xl);line-height:1;flex-shrink:0}.grammar-resume-title{font-size:var(--fs-lg);font-weight:700;color:var(--text);margin:0;line-height:1.3}.grammar-resume-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:var(--fs-sm);color:var(--text-dim);margin-top:var(--space-1)}.grammar-resume-cta{min-height:46px;padding:var(--space-3) 26px;font-size:var(--fs-md);font-weight:700;white-space:nowrap;flex-shrink:0}.grammar-recommendation-card{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5) var(--space-6);background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--amber-500) 9%,transparent),color-mix(in srgb,var(--pink-500) 5%,transparent));border:1px solid color-mix(in srgb,var(--amber-500) 35%,transparent);border-radius:var(--radius-sm);text-align:left;margin:0}.grammar-rec-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.grammar-rec-tag{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:800;color:var(--amber);text-transform:uppercase;letter-spacing:.05em}.grammar-rec-source-pill{font-size:var(--fs-xs);font-weight:600;color:var(--text-dim);background:color-mix(in srgb,var(--white) 5%,transparent);padding:3px 10px;border-radius:var(--radius-pill);border:1px solid var(--border)}.grammar-rec-body{display:flex;justify-content:space-between;align-items:center;gap:var(--space-5);flex-wrap:wrap}.grammar-rec-main{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0}.grammar-rec-title-row{display:flex;align-items:center;gap:var(--space-3)}.grammar-rec-icon{font-size:var(--fs-2xl);flex-shrink:0}.grammar-rec-title{font-size:var(--fs-lg);font-weight:700;color:var(--text);margin:0}.grammar-rec-reason{font-size:var(--fs-sm);color:var(--text-mist);line-height:1.45;margin:0}.grammar-rec-example-box{display:flex;flex-direction:column;gap:var(--space-1);padding:10px 14px;background:color-mix(in srgb,var(--black) 30%,transparent);border-radius:var(--radius-sm);border:1px dashed color-mix(in srgb,var(--amber-500) 35%,transparent);font-size:var(--fs-sm)}.grammar-rec-example-box .example-en{font-weight:700;color:var(--text)}.grammar-rec-example-box .example-pt{color:var(--text-muted);font-style:italic}.grammar-rec-cta{min-height:46px;padding:var(--space-3) var(--space-6);font-size:var(--fs-md);font-weight:700;white-space:nowrap;flex-shrink:0}.grammar-nav-controls{display:flex;flex-direction:column;gap:var(--space-4);width:100%;margin:0}.grammar-search-bar{position:relative;width:100%}.grammar-search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);font-size:var(--fs-base);color:var(--text-faint);pointer-events:none}.grammar-search-input{width:100%;min-height:48px;padding:var(--space-3) 46px var(--space-3) 46px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:var(--fs-md);outline:none;transition:border-color .2s,box-shadow .2s}.grammar-search-input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px color-mix(in srgb,var(--cyan-500) 15%,transparent)}.grammar-search-clear{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-sm);color:var(--text-dim);border-radius:50%;background:color-mix(in srgb,var(--white) 8%,transparent)}.grammar-search-clear:hover{color:var(--text);background:color-mix(in srgb,var(--white) 15%,transparent)}.grammar-level-tabs{display:flex;gap:10px;overflow-x:auto;padding:var(--space-1) 2px var(--space-2);scrollbar-width:none;-webkit-overflow-scrolling:touch;width:100%}.grammar-level-tabs::-webkit-scrollbar{display:none}.grammar-level-chip-wrapper{position:relative;display:inline-flex;flex-shrink:0}.grammar-level-chip{background:var(--surface);border:1px solid var(--border);color:var(--text-dim);font-size:var(--fs-sm);font-weight:600;padding:var(--space-2) 18px;border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;flex-shrink:0;min-height:40px;display:inline-flex;align-items:center;justify-content:center;transition:all .2s var(--ease);touch-action:manipulation}.grammar-level-chip:hover{background:var(--surface-strong);color:var(--text);border-color:var(--border-strong)}.grammar-level-chip.active{background:var(--grad);color:var(--text-on-accent);border-color:transparent;font-weight:700;box-shadow:0 4px 16px -4px var(--violet)}.grammar-status-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3);width:100%}.grammar-status-tabs{display:flex;gap:var(--space-2);overflow-x:auto;padding:2px 2px 6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.grammar-status-tabs::-webkit-scrollbar{display:none}.grammar-status-chip{white-space:nowrap;flex-shrink:0;padding:var(--space-2) var(--space-4);font-size:var(--fs-sm);font-weight:600;border-radius:var(--radius-xs);min-height:38px;background:color-mix(in srgb,var(--white) 5%,transparent);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center}@media(pointer:coarse),(max-width:640px){.grammar-level-chip,.grammar-status-chip{min-height:var(--touch-target)}}.grammar-status-chip:hover{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.grammar-status-chip.active{background:var(--surface-strong);border-color:var(--cyan);color:var(--cyan);font-weight:700}.grammar-expand-all-btn{white-space:nowrap;flex-shrink:0;font-size:var(--fs-sm);color:var(--text-dim);padding:var(--space-2) var(--space-4);min-height:38px;border:1px solid var(--border);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--white) 3%,transparent)}@media(pointer:coarse),(max-width:640px){.grammar-expand-all-btn{min-height:var(--touch-target)}}.grammar-expand-all-btn:hover{color:var(--text);background:var(--surface)}.grammar-empty-results{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:50px var(--space-5);text-align:center;background:var(--surface);border-radius:var(--radius-sm);border:1px dashed var(--border);margin-top:10px}.grammar-empty-results .empty-icon{font-size:var(--fs-display);opacity:.7}.grammar-empty-results h3{font-size:var(--fs-lg);color:var(--text);margin:0}.grammar-empty-results p{font-size:var(--fs-sm);color:var(--text-dim);margin:0}.grammar-categories-stack{display:flex;flex-direction:column;gap:22px;width:100%}.grammar-category-section{display:flex;flex-direction:column;background:color-mix(in srgb,var(--bg-2) 60%,transparent);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;transition:border-color .2s,box-shadow .2s}.grammar-category-section:hover{border-color:var(--border-strong)}.grammar-category-section.mastered{border-color:color-mix(in srgb,var(--amber-500) 45%,transparent)}.grammar-category-accordion-header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:18px 22px;background:var(--surface);border:none;cursor:pointer;text-align:left;transition:background .2s;gap:var(--space-4)}.grammar-category-section.is-open .grammar-category-accordion-header{border-bottom:1px solid var(--border)}.grammar-category-accordion-header:hover{background:var(--surface-strong)}.grammar-cat-header-left{display:flex;align-items:center;gap:14px;flex:1;min-width:0}.grammar-cat-icon{font-size:var(--fs-2xl);line-height:1;flex-shrink:0}.grammar-cat-title-block{display:flex;flex-direction:column;gap:2px;min-width:0}.grammar-category-heading{font-size:var(--fs-lg);font-weight:700;color:var(--text);margin:0;line-height:1.35}.grammar-cat-subtext{font-size:var(--fs-sm);color:var(--text-dim)}.grammar-cat-header-right{display:flex;align-items:center;gap:var(--space-4);flex-shrink:0}.grammar-mastery-badge{font-size:var(--fs-xs);font-weight:800;color:var(--amber-400);background:color-mix(in srgb,var(--amber-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--amber-500) 35%,transparent);padding:var(--space-1) 10px;border-radius:var(--radius-pill);white-space:nowrap}.grammar-cat-progress-widget{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1);min-width:110px}.grammar-cat-count-lbl{font-size:var(--fs-xs);font-weight:600;color:var(--text-dim)}.grammar-cat-mini-bar{width:100px;height:6px;background:color-mix(in srgb,var(--white) 8%,transparent);border-radius:var(--radius-pill);overflow:hidden}.grammar-cat-mini-bar span{display:block;height:100%;background:var(--green);border-radius:var(--radius-pill);transition:width .3s}.grammar-cat-arrow{font-size:var(--fs-lg);color:var(--text-dim);transition:transform .25s var(--ease);display:inline-block;line-height:1}.grammar-cat-arrow.open{transform:rotate(180deg)}.grammar-topics-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr));gap:18px;padding:var(--space-5);background:transparent;width:100%}.grammar-topic-card{display:flex;flex-direction:column;gap:14px;padding:var(--space-5);cursor:pointer;text-align:left;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);transition:transform .25s var(--ease),border-color .25s,background .25s,box-shadow .25s;position:relative;min-height:250px}.grammar-topic-card:hover{transform:translateY(-4px);background:var(--surface-strong);border-color:var(--border-strong);box-shadow:0 14px 34px -10px color-mix(in srgb,var(--violet) 35%,transparent)}.grammar-topic-card.status-completed{border-color:color-mix(in srgb,var(--emerald-500) 35%,transparent);background:linear-gradient(180deg in srgb,color-mix(in srgb,var(--emerald-500) 4%,transparent),var(--surface))}.grammar-topic-card.status-completed:hover{border-color:color-mix(in srgb,var(--emerald-500) 60%,transparent);box-shadow:0 14px 34px -10px color-mix(in srgb,var(--emerald-500) 35%,transparent)}.grammar-topic-card.status-in_progress{border-color:color-mix(in srgb,var(--cyan-500) 40%,transparent);background:linear-gradient(180deg in srgb,color-mix(in srgb,var(--cyan-500) 4%,transparent),var(--surface))}.grammar-topic-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;width:100%}.grammar-topic-badges-left{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.grammar-track-num{font-size:var(--fs-xs);font-weight:800;color:var(--text-faint);background:color-mix(in srgb,var(--white) 7%,transparent);padding:2px 7px;border-radius:var(--radius-2xs)}.grammar-topic-level{font-size:var(--fs-xs);font-weight:800;padding:3px 9px;border-radius:6px;letter-spacing:.04em;text-transform:uppercase}.grammar-topic-level.level-a1{color:var(--emerald-500);background:color-mix(in srgb,var(--emerald-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--emerald-500) 35%,transparent)}.grammar-topic-level.level-a2{color:var(--blue-500);background:color-mix(in srgb,var(--blue-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--blue-500) 35%,transparent)}.grammar-topic-level.level-b1{color:var(--amber-500);background:color-mix(in srgb,var(--amber-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--amber-500) 35%,transparent)}.grammar-topic-level.level-b2{color:var(--purple-500);background:color-mix(in srgb,var(--purple-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--purple-500) 35%,transparent)}.grammar-topic-done-badge{font-size:var(--fs-xs);font-weight:800;color:var(--green);background:color-mix(in srgb,var(--emerald-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--emerald-500) 35%,transparent);padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}.grammar-topic-progress-badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:800;color:var(--cyan);background:color-mix(in srgb,var(--cyan-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--cyan-500) 35%,transparent);padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}.pulse-dot{width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 6px var(--cyan)}.grammar-topic-new-badge{font-size:var(--fs-xs);font-weight:600;color:var(--text-faint);background:color-mix(in srgb,var(--white) 5%,transparent);border:1px solid var(--border);padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}.grammar-topic-title-wrap{display:flex;align-items:flex-start;gap:var(--space-3)}.grammar-topic-emoji{font-size:var(--fs-xl);line-height:1.2;flex-shrink:0}.grammar-topic-title{font-size:var(--fs-base);font-weight:700;color:var(--text);line-height:1.35;margin:0}.grammar-topic-summary{font-size:var(--fs-sm);color:var(--text-soft-alt);line-height:1.55;margin:0}.grammar-topic-mini-example{display:flex;flex-direction:column;gap:var(--space-1);padding:10px 14px;background:color-mix(in srgb,var(--black) 30%,transparent);border:1px dashed color-mix(in srgb,var(--white) 14%,transparent);border-radius:var(--radius-xs);font-size:var(--fs-sm)}.mini-example-en{font-weight:700;color:var(--text-bright)}.mini-example-pt{color:var(--text-quiet);font-style:italic;font-size:var(--fs-sm)}.grammar-topic-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3);border-top:1px solid color-mix(in srgb,var(--white) 8%,transparent);padding-top:14px;margin-top:auto;width:100%}.grammar-topic-features{display:flex;align-items:center;gap:10px;font-size:var(--fs-sm);color:var(--text-dim)}.grammar-time-est{font-weight:600}.grammar-type-icons{font-size:var(--fs-sm);opacity:.85}.grammar-card-cta{display:flex;align-items:center;margin-left:auto}.grammar-cta-btn{font-size:var(--fs-sm);font-weight:700;padding:var(--space-2) 18px;border-radius:var(--radius-xs);min-height:38px;transition:all .2s var(--ease);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}.grammar-cta-btn.start{color:var(--cyan);background:color-mix(in srgb,var(--cyan-500) 12%,transparent);border:1px solid color-mix(in srgb,var(--cyan-500) 30%,transparent)}.grammar-cta-btn.continue{color:var(--amber);background:color-mix(in srgb,var(--amber-500) 14%,transparent);border:1px solid color-mix(in srgb,var(--amber-500) 35%,transparent)}.grammar-cta-btn.review{color:var(--green);background:color-mix(in srgb,var(--emerald-500) 12%,transparent);border:1px solid color-mix(in srgb,var(--emerald-500) 30%,transparent)}.grammar-topic-card:hover .grammar-cta-btn.start{background:var(--cyan);color:var(--text-on-accent)}.grammar-topic-card:hover .grammar-cta-btn.continue{background:var(--amber);color:var(--text-on-accent)}.grammar-topic-card:hover .grammar-cta-btn.review{background:var(--green);color:var(--text-on-accent)}.grammar-theory-view{display:flex;flex-direction:column;gap:var(--space-4)}.grammar-theory-card{padding:var(--space-6)}.grammar-markdown{display:flex;flex-direction:column;gap:var(--space-3);text-align:left}.grammar-h2{font-size:var(--fs-xl);font-weight:700;color:var(--text);margin-top:var(--space-2)}.grammar-h3{font-size:var(--fs-base);font-weight:700;color:var(--cyan);margin-top:6px}.grammar-p{font-size:var(--fs-md);color:var(--text-dim);line-height:1.6;margin:0}.grammar-gap{height:4px}.grammar-bullets{margin:0;padding:0}.grammar-bullet{list-style:none;font-size:var(--fs-md);color:var(--text);line-height:1.6}.grammar-bullet-content{display:block}.grammar-inline-speak{margin-left:var(--space-2);padding:var(--space-1) var(--space-2);font-size:var(--fs-sm);vertical-align:middle}.grammar-divider{border:none;border-top:1px solid var(--border);margin:var(--space-3) 0}.grammar-table-block{margin:var(--space-2) 0}.grammar-table-wrapper{--table-fade: 32px;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-sm);border:1px solid var(--border)}.grammar-table-wrapper[data-fade=end]{-webkit-mask-image:linear-gradient(to right,black calc(100% - var(--table-fade)),transparent);mask-image:linear-gradient(to right,black calc(100% - var(--table-fade)),transparent)}.grammar-table-wrapper[data-fade=start]{-webkit-mask-image:linear-gradient(to left,black calc(100% - var(--table-fade)),transparent);mask-image:linear-gradient(to left,black calc(100% - var(--table-fade)),transparent)}.grammar-table-wrapper[data-fade=both]{-webkit-mask-image:linear-gradient(to right,transparent,black var(--table-fade),black calc(100% - var(--table-fade)),transparent);mask-image:linear-gradient(to right,transparent,black var(--table-fade),black calc(100% - var(--table-fade)),transparent)}.grammar-table-hint{margin-top:var(--space-1);font-size:var(--fs-xs);color:var(--text-faint);text-align:right}.grammar-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);text-align:left;white-space:nowrap}.grammar-table th{background:var(--surface-strong);color:var(--text);font-weight:700;padding:10px 14px;border-bottom:1px solid var(--border-strong)}.grammar-table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text-dim)}.grammar-table tr:last-child td{border-bottom:none}.grammar-table tr:hover td{background:color-mix(in srgb,var(--white) 2%,transparent)}.grammar-tips-card{padding:18px 22px;border-color:color-mix(in srgb,var(--amber-500) 30%,transparent);background:color-mix(in srgb,var(--amber-500) 4%,transparent);text-align:left;margin-top:0}.grammar-tips-header{font-size:var(--fs-md);font-weight:700;color:var(--amber);margin-bottom:var(--space-2)}.grammar-theory-cta{display:flex;justify-content:flex-end;margin-top:var(--space-2)}.grammar-btn-start-practice{min-height:48px;padding:var(--space-3) 28px;font-size:var(--fs-md);font-weight:700}.grammar-practice-view{display:flex;flex-direction:column;gap:var(--space-4)}.grammar-type-badge{font-size:var(--fs-xs);font-weight:700;color:var(--cyan);background:color-mix(in srgb,var(--cyan-500) 12%,transparent);padding:3px var(--space-2);border-radius:6px;letter-spacing:.04em;white-space:nowrap}.grammar-practice-card{display:flex;flex-direction:column;gap:var(--space-4);text-align:left;padding:var(--space-6)}.grammar-prompt-box{display:flex;flex-direction:column;gap:6px}.grammar-prompt-label{font-size:var(--fs-xs);font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.grammar-prompt-text{font-size:var(--fs-xl);font-weight:700;color:var(--text);line-height:1.4;margin:0}.grammar-base-sentence{display:flex;flex-direction:column;gap:2px;padding:10px 14px;background:var(--surface-strong);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--fs-md);color:var(--text-dim)}.grammar-base-sentence strong{color:var(--text)}.grammar-scramble-arena{display:flex;flex-direction:column;gap:var(--space-3)}.grammar-scramble-assembly{min-height:56px;padding:var(--space-3);background:var(--surface-strong);border:1.5px dashed var(--border-strong);border-radius:var(--radius-sm);display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.grammar-placeholder-tokens{font-size:var(--fs-sm);color:var(--text-faint);font-style:italic}.grammar-scramble-bank{display:flex;flex-wrap:wrap;gap:var(--space-2);min-height:44px}.grammar-token-chip{min-height:44px;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border-strong);color:var(--text);font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:all .2s var(--ease);display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation}.grammar-token-chip:hover{background:var(--surface-strong);border-color:var(--cyan)}.grammar-token-chip.selected{background:var(--grad);color:var(--text-on-accent);border-color:transparent;font-weight:700}.grammar-token-chip .token-close{font-size:var(--fs-xs);margin-left:6px;opacity:.75}.grammar-scramble-actions{display:flex;justify-content:flex-start}.grammar-writing-arena{width:100%}.grammar-input-field{width:100%;min-height:48px;padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);font-size:var(--fs-base);outline:none;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}.grammar-input-field:focus{border-color:var(--violet);box-shadow:0 0 0 3px color-mix(in srgb,var(--violet-600) 25%,transparent)}.grammar-speaking-arena{display:flex;flex-direction:column;gap:14px}.grammar-speaking-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.grammar-mic-btn{min-width:170px;min-height:44px;height:44px;justify-content:center;align-items:center;gap:var(--space-2);font-weight:700;font-size:var(--fs-md);transition:background .3s,box-shadow .3s}.grammar-mic-btn.recording{background:var(--grad-warm);box-shadow:0 8px 30px -8px var(--pink);color:var(--white)}.grammar-speaking-transcript-box{display:flex;flex-direction:column;gap:6px}.grammar-transcript-label{font-size:var(--fs-xs);color:var(--text-faint);font-weight:600}.grammar-action-row{display:flex;justify-content:flex-end;width:100%;margin-top:var(--space-2)}.grammar-btn-check,.grammar-btn-next{min-height:46px;padding:var(--space-3) 28px;font-size:var(--fs-md);font-weight:700}.grammar-feedback-box{display:flex;flex-direction:column;gap:var(--space-3);padding:18px var(--space-5);border-radius:var(--radius-sm);background:var(--surface-strong);border:1px solid var(--border)}.grammar-feedback-box.is-ok{border-color:color-mix(in srgb,var(--emerald-500) 35%,transparent);background:color-mix(in srgb,var(--emerald-500) 6%,transparent)}.grammar-feedback-box.is-wrong{border-color:color-mix(in srgb,var(--red-500) 35%,transparent);background:color-mix(in srgb,var(--red-500) 6%,transparent)}.grammar-feedback-header{display:flex;align-items:center;gap:var(--space-2)}.grammar-feedback-icon{font-size:var(--fs-lg)}.grammar-feedback-title{font-size:var(--fs-base);font-weight:700}.grammar-feedback-box.is-ok .grammar-feedback-title{color:var(--green)}.grammar-feedback-box.is-wrong .grammar-feedback-title{color:var(--amber)}.grammar-feedback-hint{font-size:var(--fs-sm);color:var(--amber);margin:0}.grammar-expected-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);font-size:var(--fs-md);color:var(--text-dim)}.grammar-expected-row strong{color:var(--text)}.grammar-explanation-box{padding:var(--space-3) 14px;background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-dim);line-height:1.5}.grammar-explanation-box p{margin:0}.grammar-ai-tutor-zone{margin-top:2px}.grammar-btn-ask-ai{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-strong);color:var(--cyan)}.grammar-btn-ask-ai:hover{background:var(--surface);color:var(--text)}.grammar-ai-explanation-card{padding:14px var(--space-4);background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--cyan);display:flex;flex-direction:column;gap:6px}.grammar-ai-explanation-header{font-size:var(--fs-xs);font-weight:700;color:var(--cyan);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:6px}.grammar-ai-explanation-text{font-size:var(--fs-md);color:var(--text);line-height:1.5;margin:0}.grammar-summary-view{display:flex;justify-content:center;margin-top:10px}.grammar-summary-card{max-width:480px;width:100%;position:relative;overflow:hidden}.grammar-summary-celebration-stars{display:flex;justify-content:center;gap:10px;font-size:var(--fs-xl);margin-bottom:6px;animation:bounce-subtle 1.8s ease-in-out infinite}@keyframes bounce-subtle{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.grammar-summary-badge{font-size:var(--fs-xs);font-weight:800;color:var(--green);background:color-mix(in srgb,var(--emerald-500) 12%,transparent);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.04em}.grammar-summary-title{font-size:var(--fs-xl);font-weight:700;color:var(--text);margin:0;line-height:1.3}.grammar-summary-subtitle{font-size:var(--fs-md);color:var(--text-dim);margin:0}.grammar-summary-rewards{display:flex;flex-direction:column;gap:var(--space-2);width:100%;margin:var(--space-2) 0}.grammar-reward-item{padding:10px 14px;background:var(--surface-strong);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:600;color:var(--text);text-align:center}.grammar-reward-item.xp-item{background:color-mix(in srgb,var(--violet) 12%,transparent);border-color:color-mix(in srgb,var(--violet) 35%,transparent);color:var(--violet-300)}.grammar-reward-item.streak-item{background:color-mix(in srgb,var(--amber-500) 12%,transparent);border-color:color-mix(in srgb,var(--amber-500) 35%,transparent);color:var(--amber-200)}.grammar-reward-item.medal-item{background:color-mix(in srgb,var(--amber-500) 20%,transparent);border-color:var(--amber-400);color:var(--yellow-200);font-weight:700}.grammar-btn-return-trilha{width:100%;min-height:48px;font-size:var(--fs-md);font-weight:700}.grammar-loading-box{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:60px 0;color:var(--text-dim);font-size:var(--fs-md)}.grammar-spinner{width:32px;height:32px;border:3px solid var(--surface-strong);border-top-color:var(--cyan);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.grammar-page{padding:var(--space-4) 14px 80px;gap:var(--space-5)}.grammar-trilha-container{gap:var(--space-5)}.grammar-hero-card{flex-direction:column;align-items:stretch;padding:var(--space-5) var(--space-4);gap:18px}.grammar-hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);width:100%}.grammar-stat-pill{min-width:0;padding:var(--space-3) 6px;width:100%;text-align:center}.grammar-stat-num{font-size:var(--fs-lg)}.grammar-stat-lbl{font-size:var(--fs-xs)}.grammar-resume-banner{flex-direction:column;align-items:stretch;gap:var(--space-4);padding:18px var(--space-4)}.grammar-resume-cta{width:100%;justify-content:center;min-height:48px}.grammar-rec-body{flex-direction:column;align-items:stretch;gap:var(--space-4)}.grammar-rec-cta{width:100%;justify-content:center;min-height:48px}.grammar-category-accordion-header{flex-direction:column;align-items:flex-start;gap:14px;padding:var(--space-4)}.grammar-cat-header-right{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding-top:10px;border-top:1px solid color-mix(in srgb,var(--white) 6%,transparent)}.grammar-cat-progress-widget{align-items:flex-start;flex:1;min-width:0}.grammar-status-bar{flex-direction:column;align-items:stretch;gap:var(--space-3)}.grammar-status-tabs{width:100%;padding-bottom:var(--space-1)}.grammar-accordion-controls{display:flex;justify-content:flex-end;width:100%}.grammar-topics-grid{grid-template-columns:1fr;gap:14px;padding:var(--space-4)}.grammar-topic-card{padding:18px var(--space-4);gap:14px;min-height:auto}.grammar-topic-footer{flex-direction:row;justify-content:space-between;align-items:center;gap:10px}.grammar-card-cta{margin-left:auto}.grammar-cta-btn{padding:var(--space-2) 18px;font-size:var(--fs-sm);min-height:38px}.grammar-practice-card{padding:18px var(--space-4)}.grammar-prompt-text{font-size:var(--fs-lg)}.grammar-speaking-actions{flex-direction:column;width:100%}.grammar-speaking-actions .drill-listen,.grammar-mic-btn,.grammar-action-row,.grammar-btn-check,.grammar-btn-next,.grammar-btn-start-practice,.grammar-theory-cta{width:100%}}.grammar-page.is-lesson{max-width:1100px}.grammar-theory-view.with-side{display:grid;gap:var(--space-4)}@media(min-width:1280px){.grammar-page.is-lesson{max-width:var(--page-focus)}.grammar-theory-view.with-side{gap:var(--space-7)}.with-side-panel .grammar-theory-cta{justify-content:stretch}.with-side-panel .grammar-btn-start-practice{width:100%}}.grammar-side-steps{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.grammar-side-step{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);font-size:var(--fs-sm)}.grammar-side-num{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-pill);background:var(--surface-strong);font-weight:700}.grammar-side-state{font-size:var(--fs-xs);color:var(--text-dim)}.grammar-side-step.is-current{border-color:var(--violet);background:color-mix(in srgb,var(--violet) 12%,transparent)}.grammar-side-step.is-ok .grammar-side-state{color:var(--green)}.grammar-side-step.is-wrong .grammar-side-state{color:var(--amber)}.grammar-side-tips{font-size:var(--fs-sm)}.grammar-exam-panel{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5) var(--space-6);border-radius:var(--radius-sm);background:linear-gradient(135deg in srgb,color-mix(in srgb,var(--cyan-500) 10%,transparent),color-mix(in srgb,var(--violet) 6%,transparent));border:1px solid color-mix(in srgb,var(--cyan-500) 35%,transparent);text-align:left}.grammar-exam-panel.has-review{border-color:color-mix(in srgb,var(--amber-500) 55%,transparent)}.grammar-exam-panel-head{display:flex;align-items:flex-start;gap:var(--space-3)}.grammar-exam-panel-head>div{flex:1;min-width:0}.grammar-exam-panel-icon{font-size:var(--fs-2xl);line-height:1}.grammar-exam-panel-title{margin:0;font-size:var(--fs-lg);color:var(--text-bright)}.grammar-exam-panel-desc{margin:var(--space-1) 0 0;font-size:var(--fs-sm);color:var(--text-dim)}.grammar-exam-last{flex-shrink:0;padding:3px 10px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:700;white-space:nowrap}.grammar-exam-last.is-pass,.grammar-exam-history-score.is-pass{color:var(--green);background:color-mix(in srgb,var(--emerald-500) 15%,transparent)}.grammar-exam-last.is-fail,.grammar-exam-history-score.is-fail{color:var(--amber);background:color-mix(in srgb,var(--amber-500) 15%,transparent)}.grammar-exam-review{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--amber-500) 10%,transparent)}.grammar-exam-review-text{margin:0;font-size:var(--fs-sm);color:var(--text)}.grammar-exam-review-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.grammar-exam-review-chip{padding:6px var(--space-3);border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--amber-500) 45%,transparent);background:var(--surface);color:var(--text);font-size:var(--fs-sm);text-align:left}.grammar-exam-review-chip:hover{border-color:var(--amber-500)}.grammar-exam-panel-actions,.grammar-exam-result-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.grammar-exam-wait,.grammar-exam-note{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--fs-sm);color:var(--text-dim)}.grammar-exam-error{margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--red-300);font-size:var(--fs-sm)}.grammar-exam-layout{margin-top:var(--space-5)}.grammar-exam-main{display:flex;flex-direction:column;gap:var(--space-4)}.grammar-exam-intro{display:flex;flex-direction:column;gap:var(--space-2);text-align:left}.grammar-exam-intro p{margin:0;color:var(--text)}.grammar-exam-intro .grammar-exam-note{justify-content:flex-start;color:var(--text-dim)}.grammar-exam-list,.grammar-exam-correction{display:flex;flex-direction:column;gap:var(--space-3);margin:0;padding:0;list-style:none}.grammar-exam-item,.grammar-exam-corr{display:flex;flex-direction:column;gap:var(--space-3);scroll-margin-top:var(--space-6)}.grammar-exam-item.is-answered{border-color:color-mix(in srgb,var(--cyan-500) 35%,transparent)}.grammar-exam-item-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.grammar-exam-number{display:grid;place-items:center;min-width:28px;height:28px;padding:0 6px;border-radius:var(--radius-pill);background:var(--surface-strong);color:var(--text-bright);font-size:var(--fs-sm);font-weight:700}.grammar-exam-save{margin-left:auto;font-size:var(--fs-xs);color:var(--text-faint)}.grammar-exam-save.is-error{color:var(--amber)}.grammar-exam-prompt{margin:0;color:var(--text-bright);font-size:var(--fs-base);font-weight:600}.grammar-exam-item .grammar-input-field{width:100%}.grammar-exam-deliver{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-2)}.grammar-exam-confirm{flex-basis:100%;margin:0;text-align:center;font-size:var(--fs-sm);color:var(--amber)}.grammar-exam-side-title,.grammar-exam-section-title{margin:0;font-size:var(--fs-md);color:var(--text-bright)}.grammar-exam-map{display:grid;grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:6px}.grammar-exam-dot{height:34px;border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--surface);color:var(--text-dim);font-size:var(--fs-xs);font-weight:600}.grammar-exam-dot.is-answered{border-color:color-mix(in srgb,var(--cyan-500) 50%,transparent);background:color-mix(in srgb,var(--cyan-500) 18%,transparent);color:var(--text-bright)}@media(min-width:1280px){.grammar-exam-side{position:sticky;top:var(--space-4);align-self:flex-start}}.grammar-exam-result,.grammar-exam-history{display:flex;flex-direction:column;gap:var(--space-5);margin-top:var(--space-5)}.grammar-exam-score-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);text-align:center}.grammar-exam-score-card.is-pass{border-color:color-mix(in srgb,var(--emerald-500) 45%,transparent)}.grammar-exam-score-card.is-fail{border-color:color-mix(in srgb,var(--amber-500) 45%,transparent)}.grammar-exam-date{margin:0;font-size:var(--fs-xs);color:var(--text-faint)}.grammar-exam-score{margin:0;font-size:var(--fs-display);font-weight:800;line-height:1.1}.grammar-exam-score-label,.grammar-exam-message{margin:0;color:var(--text-dim)}.grammar-exam-message{max-width:560px;color:var(--text)}.grammar-exam-points{margin:0;color:var(--green);font-weight:700}.grammar-exam-result-actions{justify-content:center;margin-top:var(--space-2)}.grammar-exam-section{display:flex;flex-direction:column;gap:var(--space-3)}.grammar-exam-topics,.grammar-exam-history-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.grammar-exam-topic-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(80px,160px) auto;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-xs);background:var(--surface);border:1px solid var(--border)}.grammar-exam-topic-row.is-weak{border-color:color-mix(in srgb,var(--amber-500) 40%,transparent)}.grammar-exam-topic-info{display:flex;flex-direction:column;min-width:0}.grammar-exam-topic-name{color:var(--text);font-size:var(--fs-sm);font-weight:600}.grammar-exam-topic-count{color:var(--text-dim);font-size:var(--fs-xs)}.grammar-exam-topic-bar{height:8px;border-radius:var(--radius-pill);background:var(--surface-strong);overflow:hidden}.grammar-exam-topic-bar span{display:block;height:100%;background:var(--grad)}.grammar-exam-feedback-card{text-align:left;border-color:color-mix(in srgb,var(--violet) 40%,transparent)}.grammar-exam-summary{margin:0;color:var(--text);line-height:1.6}.grammar-exam-subtitle{margin:var(--space-2) 0 0;font-size:var(--fs-sm);color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.grammar-exam-study{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.grammar-exam-study-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--amber-500) 8%,transparent);border:1px solid color-mix(in srgb,var(--amber-500) 30%,transparent)}.grammar-exam-study-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}.grammar-exam-study-text p{margin:var(--space-1) 0 0;color:var(--text-soft);font-size:var(--fs-sm)}.grammar-exam-section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.grammar-exam-corr{padding:var(--space-4);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border-strong)}.grammar-exam-corr.is-ok{border-left-color:var(--emerald-500)}.grammar-exam-corr.is-wrong{border-left-color:var(--danger)}.grammar-exam-corr.is-unanswered{border-left-color:var(--amber-500)}.grammar-exam-corr p{margin:0;font-size:var(--fs-sm)}.grammar-exam-verdict{margin-left:auto;font-size:var(--fs-xs);font-weight:700}.grammar-exam-verdict.is-ok,.grammar-exam-corr .is-ok{color:var(--green)}.grammar-exam-verdict.is-wrong,.grammar-exam-corr .is-wrong{color:var(--red-400)}.grammar-exam-verdict.is-unanswered{color:var(--amber)}.grammar-exam-base{color:var(--text-soft);font-style:italic}.grammar-exam-teacher{padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--violet) 12%,transparent);color:var(--text)}.grammar-exam-rule{color:var(--text-soft);font-size:var(--fs-sm)}.grammar-exam-topic{color:var(--text-faint);font-size:var(--fs-xs)}.grammar-exam-chart{position:relative;display:flex;align-items:flex-end;gap:var(--space-2);height:160px;padding-top:var(--space-4);border-bottom:1px solid var(--border)}.grammar-exam-chart-line{position:absolute;inset-inline:0;border-top:1px dashed color-mix(in srgb,var(--green) 60%,transparent);color:var(--green);font-size:var(--fs-xs);text-align:right;line-height:1;transform:translateY(-100%)}.grammar-exam-bar{position:relative;flex:1;max-width:48px;border-radius:var(--radius-2xs) var(--radius-2xs) 0 0;background:color-mix(in srgb,var(--amber-500) 55%,transparent)}.grammar-exam-bar.is-pass{background:color-mix(in srgb,var(--emerald-500) 65%,transparent)}.grammar-exam-bar-label{position:absolute;inset-inline:0;top:calc(-1 * var(--space-4));font-size:var(--fs-xs);color:var(--text-dim);text-align:center}.grammar-exam-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fs-sm);text-align:left}.grammar-exam-history-row:hover{border-color:var(--border-strong)}.grammar-exam-history-status,.grammar-exam-history-count{color:var(--text-dim)}.grammar-exam-history-score{padding:2px 10px;border-radius:var(--radius-pill);font-weight:700}.grammar-category-practice{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin:var(--space-4) var(--space-5);padding:var(--space-3) var(--space-4);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--cyan-500) 8%,transparent);border:1px solid color-mix(in srgb,var(--cyan-500) 30%,transparent);color:var(--text-soft);font-size:var(--fs-sm);text-align:left}.grammar-category-practice .grammar-exam-error{flex-basis:100%}.grammar-practice{margin-top:var(--space-5)}.grammar-practice-form{display:flex;gap:var(--space-2)}.grammar-practice-form .grammar-input-field{flex:1;min-width:0}.grammar-practice-result{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.grammar-practice-result p{margin:0;font-size:var(--fs-sm)}.grammar-practice-result .is-ok{color:var(--green)}.grammar-practice-result .is-wrong{color:var(--red-400)}.grammar-exam-study-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.grammar-topic-review-badge{font-size:var(--fs-xs);font-weight:800;color:var(--amber);background:color-mix(in srgb,var(--amber-500) 15%,transparent);border:1px solid color-mix(in srgb,var(--amber-500) 40%,transparent);padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}.grammar-topic-card.needs-review{border-color:color-mix(in srgb,var(--amber-500) 45%,transparent)}@media(max-width:640px){.grammar-exam-panel{padding:var(--space-4)}.grammar-exam-panel-head{flex-wrap:wrap}.grammar-exam-topic-row{grid-template-columns:minmax(0,1fr) auto}.grammar-exam-topic-bar{grid-column:1 / -1;grid-row:2}.grammar-exam-history-row{grid-template-columns:minmax(0,1fr) auto}.grammar-exam-study-item{flex-direction:column;align-items:flex-start}.grammar-category-practice{margin:var(--space-3)}.grammar-practice-form{flex-direction:column}}@media(pointer:coarse),(max-width:640px){.grammar-exam-map{grid-template-columns:repeat(auto-fill,minmax(var(--touch-target),1fr))}.grammar-exam-dot,.grammar-exam-review-chip{min-height:var(--touch-target)}}.image-page{display:flex;flex-direction:column;gap:var(--space-6);max-width:var(--page-wide);width:100%}.image-page.is-scene{max-width:1100px}@media(min-width:1280px){.image-page.is-scene{max-width:var(--page-focus)}}.image-header{border-bottom:1px solid var(--border)}.image-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-4);text-align:center;color:var(--text-dim)}.image-empty>div{display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.image-empty p{margin:0}.image-empty-icon{font-size:var(--fs-2xl)}.image-spinner{width:32px;height:32px;border-radius:var(--radius-pill);border:3px solid var(--border);border-top-color:var(--mode-image);animation:image-spin .9s linear infinite}@keyframes image-spin{to{transform:rotate(360deg)}}.image-gallery{display:flex;flex-direction:column;gap:var(--space-7)}.image-gallery-intro{margin:0;max-width:var(--measure);color:var(--text-dim);font-size:var(--fs-md)}.image-level-section{display:flex;flex-direction:column;gap:var(--space-4)}.image-level-title{display:flex;align-items:baseline;gap:var(--space-3);margin:0;font-size:var(--fs-lg)}.image-level-count{font-size:var(--fs-xs);font-weight:500;color:var(--text-dim)}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-4)}.image-card{display:flex;flex-direction:column;padding:0;overflow:hidden;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .2s var(--ease),transform .2s var(--ease)}.image-card:hover,.image-card:focus-visible{border-color:var(--mode-image);transform:translateY(-2px)}.image-card.is-done{border-color:color-mix(in srgb,var(--green) 40%,transparent)}.image-card-photo{display:block;width:100%;height:auto;aspect-ratio:4 / 3;object-fit:cover;background:var(--surface-strong)}.image-card-body{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4)}.image-card-title{font-weight:600;font-size:var(--fs-md)}.image-card-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:var(--fs-xs);color:var(--text-dim)}.image-level{padding:2px var(--space-2);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--mode-image) 18%,transparent);color:var(--mode-image);font-weight:700}.image-card-status.is-done{color:var(--green);font-weight:600}.image-main,.image-round,.image-feedback{display:flex;flex-direction:column;gap:var(--space-5)}.image-photo{margin:0;overflow:hidden;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-strong)}.image-photo img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain}.image-composer{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}.image-composer-label{font-weight:600;font-size:var(--fs-md)}.image-textarea{width:100%;min-height:120px;padding:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-2);color:var(--text);font:inherit;font-size:var(--fs-base);line-height:1.5;resize:vertical}.image-textarea:focus{outline:2px solid color-mix(in srgb,var(--mode-image) 60%,transparent);outline-offset:1px}.image-composer-row{display:flex;align-items:center;gap:var(--space-3)}.image-count{flex:1;font-size:var(--fs-xs);color:var(--text-dim)}.image-error{margin:0;font-size:var(--fs-sm);color:var(--amber)}.image-score{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-radius:var(--radius);border:1px solid color-mix(in srgb,var(--mode-image) 40%,transparent);background:color-mix(in srgb,var(--mode-image) 8%,transparent)}.image-score-value{font-size:var(--fs-2xl);font-weight:800;color:var(--mode-image)}.image-score-message,.image-score-best{margin:0}.image-score-best{font-size:var(--fs-sm);color:var(--text-dim)}.image-score-parts{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin:var(--space-1) 0 0;font-size:var(--fs-sm);color:var(--text-dim)}.image-block{display:flex;flex-direction:column;gap:var(--space-3)}.image-block-title{margin:0;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.image-block-note{margin:0;font-size:var(--fs-sm);color:var(--text-dim)}.image-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0;padding:0;list-style:none}.image-chip{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--border);font-size:var(--fs-sm)}.image-chip.is-covered{border-color:color-mix(in srgb,var(--green) 45%,transparent);background:color-mix(in srgb,var(--green) 12%,transparent)}.image-starter{min-height:32px;background:color-mix(in srgb,var(--mode-image) 10%,transparent);border-color:color-mix(in srgb,var(--mode-image) 40%,transparent);color:var(--text);font:inherit;font-size:var(--fs-sm);cursor:pointer}.image-starter:hover{background:color-mix(in srgb,var(--mode-image) 20%,transparent)}@media(pointer:coarse),(max-width:640px){.image-starter{min-height:44px}}.image-chip.is-missed{border-style:dashed;color:var(--text-dim)}.image-details{display:flex;flex-direction:column;gap:var(--space-3);margin:0;padding:0;list-style:none}.image-detail{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface)}.image-detail-head{margin:0;font-size:var(--fs-sm);line-height:1.5}.image-warnings{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--amber) 40%,transparent);background:color-mix(in srgb,var(--amber) 8%,transparent)}.image-warning-list{margin:0;padding-left:var(--space-5);font-size:var(--fs-sm)}.image-corrections{display:flex;flex-direction:column;gap:var(--space-3)}.image-speakable{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface)}.image-speakable-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.image-speakable-text{margin:0;line-height:1.5}.image-next{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border)}.image-next-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.image-hints-toggle{display:flex;align-items:center;min-height:32px;font-weight:600;font-size:var(--fs-sm);cursor:pointer}.image-hint-list{display:flex;flex-direction:column;gap:var(--space-3);margin:var(--space-3) 0 0;padding:0;list-style:none}.image-hint{display:flex;flex-direction:column;gap:var(--space-1)}.image-hint-head{display:flex;align-items:center;gap:var(--space-2)}.image-hint-en{font-weight:600}.image-hint-pt{flex:1;font-size:var(--fs-sm);color:var(--text-dim)}.image-hint-example{margin:0;font-size:var(--fs-sm);font-style:italic;color:var(--text-dim)}.image-side-stat,.image-side-tip,.image-credit-text{margin:0;font-size:var(--fs-sm)}.image-side-tip{color:var(--text-dim)}.image-credit .side-card-title{display:flex;align-items:center;gap:var(--space-2)}.image-credit-text a{color:var(--mode-image)}.image-summary{margin-top:0}.image-summary-badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--green) 15%,transparent);color:var(--green);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.image-summary-title{margin:0;font-size:var(--fs-xl)}.image-summary-score{font-size:var(--fs-display);font-weight:800;color:var(--mode-image)}.image-summary-message{margin:0;color:var(--text-dim)}.image-summary-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none;font-size:var(--fs-sm)}@media(max-width:640px){.image-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}.image-composer{padding:var(--space-3)}.image-score{padding:var(--space-3) var(--space-4)}.image-next-actions>*{flex:1}}@media(pointer:coarse),(max-width:640px){.image-hints-toggle{min-height:var(--touch-target)}.image-credit-text a{display:inline-flex;align-items:center;justify-content:center;min-width:var(--touch-target);min-height:var(--touch-target)}}.image-guide{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--mode-image) 35%,transparent);background:color-mix(in srgb,var(--mode-image) 7%,transparent)}.image-guide-goal{margin:0;font-size:var(--fs-md)}.image-guide-steps{margin:0;padding-left:var(--space-5);font-size:var(--fs-sm);color:var(--text-muted)}.image-starters{display:flex;flex-direction:column;gap:var(--space-2)}.image-points{display:flex;flex-direction:column;gap:var(--space-2);margin:0 0 var(--space-3);padding:0;list-style:none;font-size:var(--fs-sm)}.image-point{display:flex;gap:var(--space-2);align-items:baseline;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border)}.image-point.is-ok{border-color:color-mix(in srgb,var(--green) 40%,transparent);background:color-mix(in srgb,var(--green) 8%,transparent)}.image-point.is-wrong{border-color:color-mix(in srgb,var(--amber) 45%,transparent);background:color-mix(in srgb,var(--amber) 8%,transparent)}.image-point.is-missing{border-style:dashed;color:var(--text-muted)}.image-point-icon{flex:none;width:1.2em;font-weight:700;text-align:center}.image-point.is-ok .image-point-icon{color:var(--green)}.image-point.is-wrong .image-point-icon{color:var(--amber)}.image-point-quote{color:var(--text-muted)}.image-point-reveal,.image-model{margin-top:var(--space-1)}.image-point-reveal summary,.image-model summary{cursor:pointer;color:var(--text-muted);font-size:var(--fs-sm)}.image-model{margin-top:var(--space-3)}.login{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - var(--space-8));padding-top:var(--space-5);padding-bottom:var(--space-8);overflow-x:hidden}.login-bg-slideshow{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.login-bg-slide{position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;width:calc(100% + 20px);height:calc(100% + 20px);object-fit:cover;opacity:0;transform:scale(1);transition:opacity 1.8s ease-in-out,transform 7s ease-out;will-change:opacity,transform;backface-visibility:hidden}.login-bg-slide.is-active{opacity:.6;transform:scale(1.05)}.login-bg-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 25%,color-mix(in srgb,var(--bg) 35%,transparent) 0%,color-mix(in srgb,var(--bg) 75%,transparent) 60%,var(--bg) 100%),linear-gradient(180deg,color-mix(in srgb,var(--bg) 50%,transparent) 0%,color-mix(in srgb,var(--bg) 80%,transparent) 45%,var(--bg) 100%)}.login-container{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;width:100%;max-width:920px;margin:0 auto;gap:var(--space-5);animation:rise .7s var(--ease) both}.login-brand-pill{display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 16px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--surface-strong) 85%,var(--panel));border:1px solid color-mix(in srgb,var(--border-strong) 35%,transparent);box-shadow:0 4px 16px -2px color-mix(in srgb,var(--black) 50%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.login-brand-name{font-size:var(--fs-sm);font-weight:500;letter-spacing:-.01em;color:var(--text-bright);white-space:nowrap}.login-brand-name strong{font-weight:800}.login-mascot-section{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);position:relative;margin-top:var(--space-2)}.login-mascot-wrapper{position:relative;display:grid;place-items:center}.login-mascot-glow{position:absolute;width:170px;height:170px;border-radius:var(--radius-pill);background:radial-gradient(circle,color-mix(in srgb,var(--violet) 40%,transparent) 0%,color-mix(in srgb,var(--cyan) 20%,transparent) 50%,transparent 75%);filter:blur(24px);z-index:0;pointer-events:none}.login-mascot-figure{position:relative;z-index:1;transform:scale(1.05);filter:drop-shadow(0 10px 24px color-mix(in srgb,var(--violet) 28%,transparent))}.login-mascot-figure .mascot{width:140px;height:auto}.login-speech-bubble{position:relative;max-width:380px;background:color-mix(in srgb,var(--surface-strong) 85%,var(--panel));border:1px solid color-mix(in srgb,var(--border-strong) 50%,transparent);border-radius:var(--radius-lg);padding:12px 18px;box-shadow:0 12px 30px -10px color-mix(in srgb,var(--black) 50%,transparent),0 0 16px -2px color-mix(in srgb,var(--violet) 20%,transparent);text-align:center;z-index:2}.login-speech-bubble:before{content:"";position:absolute;top:-8px;left:50%;transform:translate(-50%);border-width:0 8px 8px 8px;border-style:solid;border-color:transparent transparent color-mix(in srgb,var(--border-strong) 50%,transparent) transparent}.login-speech-bubble:after{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%);border-width:0 7px 7px 7px;border-style:solid;border-color:transparent transparent color-mix(in srgb,var(--surface-strong) 85%,var(--panel)) transparent}.login-speech-header{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:4px}.login-status-indicator{width:7px;height:7px;border-radius:var(--radius-pill);background:var(--green);box-shadow:0 0 8px var(--green)}.login-speech-author{font-size:var(--fs-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-bright)}.login-speech-badge{font-size:10px;padding:1px 6px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--green) 18%,transparent);color:var(--green);font-weight:600}.login-speech-text{margin:0;font-size:var(--fs-sm);color:var(--text-soft);line-height:1.45;font-weight:500}.login-header{text-align:center;max-width:620px}.login-title{font-size:clamp(1.85rem,5vw,2.75rem);font-weight:800;line-height:1.15;letter-spacing:-.025em;color:var(--text-bright);margin:0 0 var(--space-3)}.login-subtitle{font-size:clamp(var(--fs-sm),2.5vw,var(--fs-md));color:var(--text-dim);line-height:1.55;margin:0}.login-toast{width:100%;max-width:480px;margin:0}.login-card{width:100%;max-width:440px;display:flex;flex-direction:column;align-items:center;padding:var(--space-6) var(--space-5);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 75%,transparent);border:1px solid color-mix(in srgb,var(--border-strong) 40%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 20px 40px -15px color-mix(in srgb,var(--black) 60%,transparent),inset 0 1px color-mix(in srgb,var(--white) 10%,transparent);gap:var(--space-3)}.login-btn{width:100%;justify-content:center;text-decoration:none;font-size:var(--fs-md);font-weight:600;padding:14px 24px;border-radius:var(--radius-pill);box-shadow:0 10px 25px -5px color-mix(in srgb,var(--violet) 50%,transparent),0 0 15px color-mix(in srgb,var(--cyan) 25%,transparent);transition:all .2s var(--ease)}.login-btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px -4px color-mix(in srgb,var(--violet) 65%,transparent),0 0 20px color-mix(in srgb,var(--cyan) 35%,transparent)}.login-btn-icon{margin-right:8px;flex-shrink:0}.login-reassurance{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--text-faint);margin-top:2px}.login-reassurance-item{display:inline-flex;align-items:center;gap:4px}.login-reassurance-icon{font-size:12px}.login-reassurance-sep{opacity:.4}.login-pwa-btn{margin-top:var(--space-1)}.login-highlights{width:100%;max-width:820px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);margin-top:var(--space-4)}.login-highlight-card{display:flex;align-items:flex-start;gap:var(--space-3);padding:16px 18px;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 45%,transparent);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);transition:border-color .2s,background-color .2s}.login-highlight-card:hover{border-color:color-mix(in srgb,var(--border-strong) 40%,transparent);background:color-mix(in srgb,var(--surface) 65%,transparent)}.login-highlight-icon{font-size:22px;line-height:1;flex-shrink:0;padding:8px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface-strong) 70%,transparent);border:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.login-highlight-info{display:flex;flex-direction:column;gap:4px}.login-highlight-title{font-size:var(--fs-sm);font-weight:700;color:var(--text-bright);margin:0;line-height:1.3}.login-highlight-desc{font-size:var(--fs-xs);color:var(--text-dim);line-height:1.45;margin:0}.login-levels-section{width:100%;margin-top:var(--space-6);display:flex;flex-direction:column;align-items:center;gap:var(--space-5)}.login-levels-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}.login-level-card{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding:22px 20px;border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);overflow:hidden;transition:transform .25s var(--ease),border-color .25s var(--ease),box-shadow .25s var(--ease),background-color .25s var(--ease)}.login-level-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--level-accent, var(--violet));opacity:.8;transition:opacity .25s}.login-level-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--level-accent, var(--violet)) 55%,transparent);background:color-mix(in srgb,var(--surface) 80%,transparent);box-shadow:0 14px 30px -10px color-mix(in srgb,var(--black) 60%,transparent),0 0 18px -4px color-mix(in srgb,var(--level-accent, var(--violet)) 25%,transparent)}.login-level-card:hover:before{opacity:1}.login-level-top{display:flex;align-items:center;justify-content:space-between}.login-level-icon{width:40px;height:40px;border-radius:var(--radius-md);display:grid;place-items:center;font-size:22px;background:color-mix(in srgb,var(--level-accent, var(--violet)) 15%,transparent);border:1px solid color-mix(in srgb,var(--level-accent, var(--violet)) 35%,transparent)}.login-level-cefr{font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;padding:3px 10px;border-radius:var(--radius-pill);color:var(--level-accent, var(--violet));background:color-mix(in srgb,var(--level-accent, var(--violet)) 15%,transparent);border:1px solid color-mix(in srgb,var(--level-accent, var(--violet)) 35%,transparent)}.login-level-body{display:flex;flex-direction:column;gap:8px}.login-level-name-row{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap}.login-level-name{font-size:var(--fs-md);font-weight:700;color:var(--text-bright);margin:0}.login-level-tag{font-size:var(--fs-2xs);font-weight:600;color:var(--text-soft);padding:2px 8px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--surface-strong) 80%,transparent);border:1px solid color-mix(in srgb,var(--border) 80%,transparent)}.login-level-desc{font-size:var(--fs-xs);color:var(--text-dim);line-height:1.5;margin:0}.login-modes-section{width:100%;margin-top:var(--space-7);display:flex;flex-direction:column;align-items:center;gap:var(--space-6)}.login-section-header{text-align:center;max-width:640px;display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.login-section-pill{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--cyan);padding:4px 14px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--cyan) 12%,transparent);border:1px solid color-mix(in srgb,var(--cyan) 30%,transparent)}.login-section-title{font-size:clamp(1.5rem,3.5vw,2.15rem);font-weight:800;color:var(--text-bright);margin:0;line-height:1.25;letter-spacing:-.02em}.login-section-desc{font-size:var(--fs-sm);color:var(--text-dim);margin:0;line-height:1.55}.login-modes-grid{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.login-mode-card{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding:20px 22px;border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);overflow:hidden;transition:transform .25s var(--ease),border-color .25s var(--ease),box-shadow .25s var(--ease),background-color .25s var(--ease)}.login-mode-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,var(--mode-accent, var(--violet)) 50%,transparent 100%);opacity:.7;transition:opacity .25s}.login-mode-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--mode-accent, var(--violet)) 55%,transparent);background:color-mix(in srgb,var(--surface) 80%,transparent);box-shadow:0 14px 30px -10px color-mix(in srgb,var(--black) 60%,transparent),0 0 18px -4px color-mix(in srgb,var(--mode-accent, var(--violet)) 25%,transparent)}.login-mode-card:hover:before{opacity:1}.login-mode-card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.login-mode-icon{width:42px;height:42px;border-radius:var(--radius-md);display:grid;place-items:center;font-size:22px;background:color-mix(in srgb,var(--mode-accent, var(--violet)) 15%,transparent);border:1px solid color-mix(in srgb,var(--mode-accent, var(--violet)) 35%,transparent);flex-shrink:0}.login-mode-tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.login-mode-tag{font-size:var(--fs-2xs);font-weight:600;padding:3px 9px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--surface-strong) 80%,transparent);color:var(--text-soft);border:1px solid color-mix(in srgb,var(--border) 80%,transparent)}.login-mode-badge{font-size:var(--fs-2xs);font-weight:700;padding:3px 9px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--mode-accent, var(--violet)) 20%,transparent);color:var(--mode-accent, var(--violet));border:1px solid color-mix(in srgb,var(--mode-accent, var(--violet)) 40%,transparent)}.login-mode-card-body{display:flex;flex-direction:column;gap:6px}.login-mode-title{font-size:var(--fs-md);font-weight:700;color:var(--text-bright);margin:0;line-height:1.3}.login-mode-desc{font-size:var(--fs-xs);color:var(--text-dim);line-height:1.5;margin:0}.login-bottom-banner{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-6);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface-strong) 85%,var(--panel));border:1px solid color-mix(in srgb,var(--border-strong) 45%,transparent);box-shadow:0 16px 36px -12px color-mix(in srgb,var(--black) 60%,transparent);margin-top:var(--space-3)}.login-bottom-info{display:flex;flex-direction:column;gap:4px}.login-bottom-title{font-size:var(--fs-lg);font-weight:700;color:var(--text-bright);margin:0}.login-bottom-desc{font-size:var(--fs-xs);color:var(--text-dim);margin:0;line-height:1.45}.login-bottom-btn{flex-shrink:0;width:auto;min-width:210px}@media(max-width:768px){.login-highlights{grid-template-columns:1fr;max-width:440px}.login-levels-grid,.login-modes-grid{grid-template-columns:1fr}.login-bottom-banner{flex-direction:column;text-align:center;padding:var(--space-5)}.login-bottom-btn{width:100%}.login-container{gap:var(--space-4)}.login-speech-bubble{max-width:320px}}@media(prefers-reduced-motion:reduce){.login-bg-slide{transition:opacity .5s ease;transform:none}}.update-banner{position:fixed;top:var(--space-3);left:50%;z-index:60;display:flex;align-items:center;gap:var(--space-3);width:min(560px,calc(100% - 2 * var(--space-4)));padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);background:var(--bg-2);border:1px solid color-mix(in srgb,var(--cyan) 45%,transparent);border-radius:var(--radius-md);box-shadow:var(--shadow);color:var(--text);transform:translate(-50%);animation:update-drop .3s var(--ease) both}.update-icon{flex-shrink:0;color:var(--cyan)}.update-text{flex:1;font-size:var(--fs-sm);line-height:1.4;color:var(--text-dim)}.update-text strong{color:var(--text)}.update-actions{display:flex;flex-shrink:0;gap:var(--space-2)}@keyframes update-drop{0%{opacity:0;transform:translate(-50%,-12px)}}@media(max-width:640px){.update-banner{flex-wrap:wrap}.update-text{flex-basis:calc(100% - 40px)}.update-actions{width:100%;justify-content:flex-end}}.tutor-fab{position:fixed;right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom));z-index:9;display:grid;place-items:center;padding:0;border:none;border-radius:var(--radius-md);background:none;cursor:pointer;transition:transform .2s}.tutor-fab:hover{transform:translateY(-3px) scale(1.05)}.tutor-fab:active{transform:scale(.96)}.tutor-fab-mascot{display:block;width:76px;filter:drop-shadow(0 6px 10px color-mix(in srgb,var(--black) 45%,transparent))}.tutor-fab-mascot .mascot{display:block;width:100%;height:auto}.tutor-fab .mascot-body{animation:none}@media(max-width:640px){.tutor-fab-mascot{width:64px}}@media(prefers-reduced-motion:reduce){.tutor-fab,.tutor-fab:hover,.tutor-fab:active{transform:none;transition:none}}body:has(.page.conversation) .tutor-fab{bottom:calc(150px + env(safe-area-inset-bottom))}.tutor-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:flex-end;justify-content:flex-end;padding:var(--space-5);background:color-mix(in srgb,var(--black) 45%,transparent)}.tutor-panel{display:flex;flex-direction:column;width:min(420px,100%);height:min(620px,100%);border-radius:var(--radius);background:var(--bg-2);border:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden}.tutor-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.tutor-head-avatar{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0}.tutor-head-avatar .mascot{width:40px;height:auto}.tutor-title{flex:1;min-width:0}.tutor-title h2{margin:0;font-size:var(--fs-lg)}.tutor-title p{margin:0;font-size:var(--fs-xs);color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tutor-list{flex:1;overflow-y:auto;padding:var(--space-4)}.tutor-list>div{display:flex;flex-direction:column;gap:var(--space-3)}.tutor-empty p{margin:0 0 var(--space-3);font-size:var(--fs-sm);color:var(--text-dim)}.tutor-suggestions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tutor-chip{padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill);font-size:var(--fs-sm);color:var(--text-light);background:var(--surface);border:1px solid var(--border-strong);text-align:left}.tutor-chip:hover{background:var(--surface-strong)}.tutor-msg{max-width:88%;margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--fs-md);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.tutor-msg.is-user{align-self:flex-end;background:color-mix(in srgb,var(--violet) 30%,transparent)}.tutor-msg.is-tutor{align-self:flex-start;background:var(--surface-strong)}.tutor-msg.is-rich{white-space:normal}.tutor-msg.is-rich p,.tutor-msg.is-rich ul,.tutor-msg.is-rich ol{margin:0 0 var(--space-2)}.tutor-msg.is-rich>:last-child{margin-bottom:0}.tutor-msg.is-rich ul,.tutor-msg.is-rich ol{padding-left:var(--space-5)}.tutor-msg.is-rich strong{color:var(--text-bright)}.tutor-msg.is-rich code{padding:0 var(--space-1);border-radius:var(--radius-2xs);background:var(--surface)}.tutor-msg .tutor-heading{font-weight:700}.tutor-msg.is-error{color:var(--red-300)}.tutor-composer{display:flex;align-items:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border)}.tutor-composer textarea{flex:1;resize:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font:inherit;font-size:var(--fs-md);color:var(--text);background:var(--surface);border:1px solid var(--border)}.tutor-composer .tutor-send{width:44px;height:44px;color:var(--white);background:var(--violet)}.tutor-composer .tutor-send:disabled{opacity:.5}@media(pointer:coarse),(max-width:640px){.tutor-head .icon-btn,.tutor-chip{min-width:var(--touch-target);min-height:var(--touch-target)}}@media(max-width:640px){.tutor-fab{right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom))}.tutor-backdrop{padding:0}.tutor-panel{width:100%;height:100%;border-radius:0;border:0}}@media(max-width:900px){body:has(.mobile-bottom-bar) .tutor-fab{bottom:calc(96px + env(safe-area-inset-bottom))}}
