@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-serif:"Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-sans:"Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--shadow-card:0 1px 2px #0f1e190f, 0 12px 32px -16px #0f1e1938;--color-bg:#f6f9f7;--color-surface:#fff;--color-surface-alt:#eaf1ec;--color-text:#1c2a23;--color-text-muted:#5b6d63;--color-border:#dbe6df;--color-border-strong:#c3d3c9;--color-primary:#17a06d;--color-primary-deep:#0e7d53;--color-primary-hover:#128a5d;--color-primary-contrast:#0d1512;--color-danger:#c23a2f;--color-danger-bg:#fdeceb;--color-danger-border:#f2c7c2;--color-success-text:#0e7d53;--color-success-bg:#dff5ea;--color-warning-text:#8a5f00;--color-warning-bg:#fff3d6;--color-neutral-text:#5b6d63;--color-neutral-bg:#eaf1ec;--color-xp-bg:#fff3d6;--color-xp-text:#8a5f00;--hue1:#3b82c4;--hue1-deep:#2a6398;--hue2:#e8684a;--hue2-deep:#bf4a2f;--hue3:#eda23b;--hue3-deep:#c07d1f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--color-bg:#101713;--color-surface:#1a231e;--color-surface-alt:#243029;--color-text:#e8f1ec;--color-text-muted:#9cb2a7;--color-border:#2b3830;--color-border-strong:#3a4a41;--color-primary:#2fbd85;--color-primary-deep:#17845a;--color-primary-hover:#4acb96;--color-primary-contrast:#0d1512;--color-danger:#ff9a8f;--color-danger-bg:#2c1917;--color-danger-border:#4a2521;--color-success-text:#7fdcb5;--color-success-bg:#143a2b;--color-warning-text:#f2c46a;--color-warning-bg:#3a2f12;--color-neutral-text:#9cb2a7;--color-neutral-bg:#243029;--color-xp-bg:#3a2f12;--color-xp-text:#f2c46a;--hue1:#5ea3dd;--hue1-deep:#3a76ab;--hue2:#f08265;--hue2-deep:#c25539;--hue3:#f2b45c;--hue3-deep:#c08a2b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{overscroll-behavior-y:contain;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.5}h1,h2,h3{font-family:var(--font-serif);margin:0 0 var(--space-2);color:var(--color-text);letter-spacing:-.02em;font-weight:600;line-height:1.2}h1{font-size:1.75rem}h2{font-size:1.375rem}p{margin:0 0 var(--space-3)}a{color:var(--color-primary)}button,input{font-family:inherit;font-size:inherit;color:inherit}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:no-preference){.btn,.nav-item,.invite-card,.provider-option{transition:background-color .15s,border-color .15s,transform .1s}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.loading{min-height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.skeleton{background:color-mix(in srgb, var(--color-border) 55%, var(--color-surface));border-radius:var(--radius-sm);display:inline-block;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.skeleton:after{content:"";background-image:linear-gradient(100deg, transparent 20%, color-mix(in srgb, var(--color-surface) 70%, var(--color-border)) 50%, transparent 80%);background-position:150% 0;background-size:200% 100%;animation:1.6s ease-in-out infinite skeleton-shimmer;position:absolute;inset:0}}@keyframes skeleton-shimmer{to{background-position:-50% 0}}.skeleton-line{width:100%;height:.8em;margin:.3em 0;display:block}.skeleton-line.lg{height:1.4em}.skeleton-line.sm{height:.65em}.skeleton-pill{border-radius:999px;width:5rem;height:1.5rem;display:inline-block}.skeleton-circle{border-radius:50%;flex-shrink:0;display:inline-block}.skeleton-btn{border-radius:var(--radius-md);width:100%;height:2.625rem;display:block}.skeleton-block{width:100%;height:100%;display:block}.is-skeleton{pointer-events:none;cursor:default}.auth-page{min-height:100vh;padding:var(--space-6) var(--space-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.auth-brand{margin-bottom:var(--space-5);text-align:center;flex-direction:column;align-items:center;display:flex}.auth-brand-mark{font-family:var(--font-serif);color:var(--color-primary);letter-spacing:-.01em;font-size:1.5rem;font-weight:600}.auth-brand-tagline{margin-top:var(--space-1);color:var(--color-text-muted);font-size:.9375rem}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:380px;box-shadow:var(--shadow-card);padding:var(--space-6);position:relative;overflow:hidden}.auth-card h1{margin-top:var(--space-2)}.auth-card .subtitle{color:var(--color-text-muted);margin-bottom:var(--space-5);font-size:.9375rem}.field{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.field label{color:var(--color-text-muted);font-size:.8125rem;font-weight:600}.field input{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:.625rem .75rem}.field input:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.field select{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:.625rem .75rem}.field select:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.field select:disabled{opacity:.6}.field .hint,.hint{color:var(--color-text-muted);font-size:.8125rem}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;padding:.625rem 1.25rem;font-size:.9375rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--color-primary);width:100%;color:var(--color-primary-contrast);border-radius:var(--radius-md);box-shadow:0 3px 0 var(--color-primary-deep)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:active:not(:disabled){box-shadow:0 1px 0 var(--color-primary-deep);transform:translateY(2px)}.btn-primary:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.btn-ghost{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text);border-radius:var(--radius-md);box-shadow:0 3px 0 var(--color-border-strong)}.btn-ghost:hover{background:var(--color-surface-alt)}.btn-ghost:active{box-shadow:0 1px 0 var(--color-border-strong);transform:translateY(2px)}.btn-sm{width:auto;padding:.4375rem .875rem;font-size:.8125rem}.confirm-inline{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:inline-flex}.confirm-inline-text{color:var(--color-text-muted);font-size:.8125rem}.auth-switch{margin-top:var(--space-5);text-align:center;color:var(--color-text-muted);font-size:.9375rem}.error-box{margin-top:var(--space-4);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger);font-size:.9375rem}.shell{min-height:100vh}.shell-brand{font-family:var(--font-serif);color:var(--color-primary);white-space:nowrap;letter-spacing:-.01em;font-size:1.15rem;font-weight:650}.shell-topbar{z-index:10;justify-content:space-between;align-items:center;gap:var(--space-3);padding:max(var(--space-3), env(safe-area-inset-top)) var(--space-4) var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;position:sticky;top:0}.topbar-right{align-items:center;gap:var(--space-3);display:inline-flex}.shell-side{display:none}.shell-tabs{z-index:10;background:var(--color-surface);border-top:1px solid var(--color-border);padding:var(--space-1) var(--space-2) max(var(--space-2), env(safe-area-inset-bottom));grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.nav-item{min-height:48px;color:var(--color-text-muted);border-radius:var(--radius-sm);flex-direction:column;justify-content:center;align-items:center;gap:.15rem;font-size:.66rem;font-weight:650;text-decoration:none;display:flex}.nav-item.active{color:var(--color-primary)}.nav-item-icon{display:inline-flex;position:relative}.nav-badge{background:var(--color-primary);min-width:1.1rem;height:1.1rem;color:var(--color-primary-contrast);border-radius:999px;justify-content:center;align-items:center;padding:0 .3rem;font-size:.62rem;font-weight:700;display:inline-flex;position:absolute;top:-6px;right:-12px}.shell-main{width:100%;max-width:860px;padding:var(--space-5) var(--space-4) calc(72px + env(safe-area-inset-bottom));margin:0 auto}.focus-bar{z-index:10;padding:max(var(--space-3), env(safe-area-inset-top)) var(--space-4) var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.focus-exit{width:44px;height:44px;color:var(--color-text-muted);border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.focus-exit:hover{background:var(--color-surface-alt);color:var(--color-text)}.shell-focus .shell-main{padding-bottom:var(--space-6)}@media (width>=768px){.shell-topbar,.shell-tabs{display:none}.shell-side{gap:var(--space-2);width:220px;padding:var(--space-5) var(--space-3);background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.shell-side .shell-brand{padding:0 var(--space-2) var(--space-4)}.side-nav{gap:var(--space-1);flex-direction:column;display:flex}.side-nav .nav-item{justify-content:flex-start;gap:var(--space-3);min-height:44px;padding:0 var(--space-3);flex-direction:row;font-size:.9rem}.side-nav .nav-item.active{background:var(--color-surface-alt);box-shadow:inset 3px 0 0 var(--color-primary)}.side-nav .nav-badge{order:1;margin-left:auto;position:static}.side-nav .nav-item-icon{display:contents;position:static}.side-foot{justify-content:space-between;align-items:center;gap:var(--space-2);padding:0 var(--space-2);margin-top:auto;display:flex}.shell:not(.shell-focus) .shell-main{width:auto;max-width:none;padding:var(--space-7) var(--space-6);margin-left:220px}.shell:not(.shell-focus) .shell-main>*{max-width:860px;margin-left:auto;margin-right:auto}}.invites-header{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.invites-header .btn-primary{width:auto}.invite-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.invite-card{justify-content:space-between;align-items:center;gap:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);display:flex}.invite-code{font-family:var(--font-serif);letter-spacing:.02em;font-size:1.0625rem}.invite-code-skeleton{height:1.0625rem;margin:0}.badge{border-radius:999px;align-items:center;padding:.25rem .625rem;font-size:.8125rem;font-weight:600;display:inline-flex}.badge-available{background:var(--color-success-bg);color:var(--color-success-text)}.badge-used{background:var(--color-neutral-bg);color:var(--color-neutral-text)}.badge-expired{background:var(--color-warning-bg);color:var(--color-warning-text)}.empty-state,.loading-inline{color:var(--color-text-muted);padding:var(--space-5) 0}.admin-page{max-width:640px}.settings-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-6);margin-bottom:var(--space-6);position:relative;overflow:hidden}.provider-fieldset{margin:0 0 var(--space-4);border:none;padding:0}.provider-fieldset legend{margin-bottom:var(--space-2);color:var(--color-text-muted);padding:0;font-size:.8125rem;font-weight:600}.provider-options{gap:var(--space-2);flex-direction:column;display:flex}.provider-option{align-items:center;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;display:flex}.provider-option:has(input:checked){border-color:var(--color-primary);background:var(--color-surface-alt)}.provider-option-disabled{cursor:not-allowed;opacity:.6}.provider-option-label{flex:1;font-weight:500}.settings-card .btn-primary{width:auto;margin-top:var(--space-2)}.settings-card .feedback-banner,.settings-card .error-box{margin-top:var(--space-4)}.provider-status-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.provider-status-list li{padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);justify-content:space-between;align-items:center;display:flex}.badge-unavailable{background:var(--color-warning-bg);color:var(--color-warning-text)}.settings-submit-skeleton{width:auto;min-width:10rem;margin-top:var(--space-2)}@media (width<=640px){.invite-card{flex-direction:column;align-items:flex-start}.settings-card{padding:var(--space-4)}}@media (width<=400px){.shell-brand{font-size:1.0625rem}.auth-card{padding:var(--space-4)}}.xp-chip{background:var(--color-xp-bg);color:var(--color-xp-text);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .65rem;font-size:.78rem;font-weight:700;display:inline-flex}.profile-menu{position:relative}.profile-avatar{border:1px solid var(--color-border-strong);background:var(--color-surface-alt);width:2.75rem;height:2.75rem;color:var(--color-text-muted);cursor:pointer;border-radius:50%;place-items:center;font-size:.78rem;font-weight:700;display:grid}.profile-avatar:hover{border-color:var(--color-primary);color:var(--color-primary)}.profile-dropdown{z-index:20;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:210px;box-shadow:var(--shadow-card);padding:var(--space-2);flex-direction:column;gap:.15rem;display:flex;position:absolute;top:calc(100% + .4rem);right:0}.side-foot .profile-dropdown{top:auto;bottom:calc(100% + .4rem)}.profile-name{padding:var(--space-2) var(--space-3);color:var(--color-text-muted);margin:0;font-size:.8rem;font-weight:650}.profile-item{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);min-height:40px;color:var(--color-text);text-align:left;cursor:pointer;background:0 0;border:none;font-size:.9rem;font-weight:550;text-decoration:none;display:flex}.profile-item:hover{background:var(--color-surface-alt)}.profile-item-danger{color:var(--color-danger)}.profile-sep{border:none;border-top:1px solid var(--color-border);margin:var(--space-1) 0}.profile-confirm{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);color:var(--color-text-muted);flex-wrap:wrap;font-size:.8rem;display:flex}.back-link{margin-bottom:var(--space-4);color:var(--color-text-muted);font-size:.9375rem;font-weight:500;text-decoration:none;display:inline-block}.back-link:hover{color:var(--color-primary)}.page-header{margin-bottom:var(--space-6)}.page-subtitle{color:var(--color-text-muted);margin:0}.exercise-eyebrow{margin:0 0 var(--space-2);letter-spacing:.06em;text-transform:uppercase;color:var(--color-primary);font-size:.75rem;font-weight:700}.grammar-capsule,.player-card{position:relative;overflow:hidden}.badge-cefr{font-family:var(--font-serif);background:var(--color-neutral-bg);color:var(--color-neutral-text)}.badge-score-none{background:var(--color-neutral-bg);color:var(--color-neutral-text)}.badge-score-high{background:var(--color-success-bg);color:var(--color-success-text);gap:.25rem}.badge-score-mid{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-score-low{background:var(--color-danger-bg);color:var(--color-danger)}.units-list{gap:var(--space-3);flex-direction:column;display:flex}.unit-row{align-items:center;gap:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-4) var(--space-5);color:inherit;min-height:64px;text-decoration:none;display:flex}.unit-row:hover{border-color:var(--color-border-strong)}.unit-hue-0{--unit-color:var(--color-primary);--unit-color-deep:var(--color-primary-deep)}.unit-hue-1{--unit-color:var(--hue1);--unit-color-deep:var(--hue1-deep)}.unit-hue-2{--unit-color:var(--hue2);--unit-color-deep:var(--hue2-deep)}.unit-hue-3{--unit-color:var(--hue3);--unit-color-deep:var(--hue3-deep)}.unit-chip{border-radius:var(--radius-md);background:var(--unit-color);width:2.75rem;height:2.75rem;box-shadow:0 3px 0 var(--unit-color-deep);flex-shrink:0;place-items:center;font-size:1.3rem;display:grid}.unit-chip.skeleton{background:color-mix(in srgb, var(--color-border) 55%, var(--color-surface));box-shadow:none}.unit-row-body{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.unit-row-title{margin:0;font-size:1.05rem}.unit-row-summary{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.85rem;overflow:hidden}.unit-row .unit-progress-track{margin-top:var(--space-1)}.unit-row .unit-progress-fill{background:var(--unit-color)}.unit-row-action{flex-shrink:0}.unit-row-action .m-action{border-radius:var(--radius-md);background:var(--unit-color);color:var(--color-primary-contrast);box-shadow:0 3px 0 var(--unit-color-deep);justify-content:center;align-items:center;padding:.45rem .9rem;font-size:.8rem;font-weight:700;display:inline-flex}.unit-row-action .m-action-ghost{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong);box-shadow:0 3px 0 var(--color-border-strong)}@media (width<=480px){.unit-row{padding:var(--space-3) var(--space-4);gap:var(--space-3)}.unit-row-summary{display:none}}.unit-progress-track,.player-progress-track{background:var(--color-border);border-radius:999px;height:8px;overflow:hidden}.unit-progress-fill,.player-progress-fill{background:var(--color-primary);border-radius:999px;width:0%;height:100%}.unit-progress-fill.skeleton,.player-progress-fill.skeleton{background:color-mix(in srgb, var(--color-border) 55%, var(--color-surface))}.unit-progress-label{color:var(--color-text-muted);font-size:.8125rem}.unit-page-title-row{align-items:center;gap:var(--space-3);display:flex}.unit-page-title-row h1{margin:0}.grammar-capsule{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-6);margin-bottom:var(--space-6)}.grammar-explanation{color:var(--color-text);margin-bottom:var(--space-4)}.grammar-examples,.vocab-list,.lesson-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.grammar-example,.vocab-item{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--color-surface-alt);border-radius:var(--radius-sm);display:flex}.grammar-example-text,.vocab-item-text{flex-direction:column;gap:.125rem;display:flex}.grammar-example-en,.vocab-item-en{font-family:var(--font-serif);font-size:1.0625rem}.grammar-example-es,.vocab-item-es{color:var(--color-text-muted);font-size:.875rem}.vocab-section,.lesson-list-section{margin-bottom:var(--space-6)}.lesson-card{justify-content:space-between;align-items:center;gap:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);display:flex}.lesson-card-info{align-items:center;gap:var(--space-3);display:flex}.lesson-card-order{background:var(--color-surface-alt);width:1.75rem;height:1.75rem;color:var(--color-text-muted);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.8125rem;font-weight:700;display:inline-flex}.lesson-card-title{font-weight:500}.lesson-card-actions{align-items:center;gap:var(--space-3);display:flex}.speak-btn{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-primary);cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.speak-btn-sm{width:2.75rem;height:2.75rem;font-size:1.125rem}.speak-btn-lg{background:var(--color-primary);width:3rem;height:3rem;color:var(--color-primary-contrast);border-color:#0000;font-size:1.375rem}.speak-btn:hover:not(:disabled){background:var(--color-surface-alt)}.speak-btn-lg:hover:not(:disabled){background:var(--color-primary-hover)}.speak-btn:disabled{opacity:.5;cursor:not-allowed}.speak-unavailable{align-items:center;gap:var(--space-2);display:inline-flex}.speak-hint{color:var(--color-text-muted);font-size:.75rem}.player{max-width:560px;margin:0 auto}.player-header{gap:var(--space-2);margin-bottom:var(--space-5);flex-direction:column;display:flex}.player-progress-label{color:var(--color-text-muted);font-size:.8125rem}.player-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-6)}.exercise-phrase-row{align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.exercise-phrase{font-family:var(--font-serif);flex:1;margin:0;font-size:1.5rem}.exercise-translation{color:var(--color-text-muted);font-size:1.0625rem}.exercise-note{color:var(--color-text-muted);background:var(--color-surface-alt);border-radius:var(--radius-sm);padding:var(--space-3);font-size:.875rem;font-style:italic}.exercise-continue{margin-top:var(--space-4);width:100%}.exercise-prompt{color:var(--color-text-muted);font-size:.9375rem}.exercise-question{font-family:var(--font-serif);margin-bottom:var(--space-4);font-size:1.1875rem}.exercise-phrase-es{font-family:var(--font-serif);margin-bottom:var(--space-4);font-size:1.375rem}.options-list{gap:var(--space-2);flex-direction:column;display:flex}.option-btn{text-align:left;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;font-size:.9375rem}.option-btn:hover:not(:disabled){background:var(--color-surface-alt)}.option-btn:disabled{cursor:not-allowed}.option-selected{border-color:var(--color-primary)}.option-correct{border-color:var(--color-success-text);background:var(--color-success-bg);color:var(--color-success-text)}.option-incorrect{border-color:var(--color-danger);background:var(--color-danger-bg);color:var(--color-danger)}.word-build{align-items:center;gap:var(--space-2);min-height:3rem;padding:var(--space-3);margin-bottom:var(--space-4);border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface-alt);flex-wrap:wrap;display:flex}.word-build-placeholder{color:var(--color-text-muted);font-size:.875rem}.word-build-correct{border-style:solid;border-color:var(--color-success-text);background:var(--color-success-bg)}.word-build-incorrect{border-style:solid;border-color:var(--color-danger);background:var(--color-danger-bg)}.word-bank{gap:var(--space-2);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.token-chip{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);cursor:pointer;border-radius:999px;padding:.5rem .875rem;font-size:.9375rem}.token-chip:hover:not(:disabled){background:var(--color-surface-alt)}.token-chip:disabled{opacity:.45;cursor:not-allowed}.token-chip-built{background:var(--color-primary);color:var(--color-primary-contrast);border-color:#0000}.token-chip-built:disabled{opacity:.85}.exercise-check{width:100%}.dictation-play{margin-bottom:var(--space-4);justify-content:center;display:flex}.dictation-input.input-correct,.field input.input-correct{border-color:var(--color-success-text)}.dictation-input.input-incorrect,.field input.input-incorrect{border-color:var(--color-danger)}.speak-mic-row{align-items:center;gap:var(--space-3);margin:var(--space-4) 0;display:flex}.speak-mic-error{color:var(--color-danger);margin-top:calc(var(--space-2) * -1);margin-bottom:var(--space-3)}.speak-transcript{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-surface-alt);margin-bottom:var(--space-3);font-size:.9375rem}.speak-transcript-correct{background:var(--color-success-bg);color:var(--color-success-text)}.speak-transcript-incorrect{background:var(--color-danger-bg);color:var(--color-danger)}.speak-fallback{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--color-border)}.feedback-banner{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid #0000}.feedback-title{margin:0;font-weight:700}.feedback-answer{margin:var(--space-1) 0 0;font-size:.9375rem}.feedback-correct{background:var(--color-success-bg);border-color:var(--color-success-text);color:var(--color-success-text)}.feedback-incorrect{background:var(--color-danger-bg);border-color:var(--color-danger-border);color:var(--color-danger)}.player-actions{margin-top:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.player-actions .btn{width:100%}.player-summary{max-width:420px;margin:var(--space-7) auto 0;text-align:center}.summary-score{font-family:var(--font-serif);color:var(--color-primary);margin:var(--space-3) 0 0;font-size:3.5rem;font-weight:600}.summary-detail{color:var(--color-text-muted);margin-bottom:var(--space-5)}.summary-xp{margin:var(--space-1) 0 var(--space-5);color:var(--color-xp-text);font-weight:700}.player-summary-actions{gap:var(--space-3);flex-direction:column;display:flex}.player-summary-actions .btn{width:100%}@media (prefers-reduced-motion:no-preference){.unit-row,.option-btn,.token-chip,.speak-btn,.unit-progress-fill,.player-progress-fill{transition:background-color .15s,border-color .15s,width .2s}}@media (width<=640px){.grammar-capsule,.player-card{padding:var(--space-4)}.grammar-example,.vocab-item,.lesson-card{flex-direction:column;align-items:flex-start}.lesson-card-actions{justify-content:space-between;width:100%}}.streak-card{align-items:center;gap:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-5);margin-bottom:var(--space-5);display:flex}.streak-flame{flex-shrink:0;font-size:2rem;line-height:1}.streak-body{gap:var(--space-2);flex-direction:column;flex:1;min-width:0;display:flex}.streak-days{font-family:var(--font-serif);margin:0;font-size:1.125rem;font-weight:600}.streak-progress{gap:var(--space-1);flex-direction:column;display:flex}.streak-progress-track{background:var(--color-border);border-radius:999px;height:8px;overflow:hidden}.streak-progress-fill{background:var(--color-primary);border-radius:999px;width:0%;height:100%}.streak-progress-fill.skeleton{background:color-mix(in srgb, var(--color-border) 55%, var(--color-surface))}.streak-progress-label{color:var(--color-text-muted);font-size:.8125rem}.streak-total{padding-left:var(--space-4);border-left:1px solid var(--color-border);flex-direction:column;flex-shrink:0;align-items:center;display:flex}.streak-total-count{font-family:var(--font-serif);color:var(--color-primary);font-size:1.375rem;font-weight:600}.streak-total-label{color:var(--color-text-muted);font-size:.75rem}.review-cta-banner{justify-content:space-between;align-items:center;gap:var(--space-4);background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.review-cta-banner p{color:var(--color-text);margin:0}.review-cta{width:auto}.review-page{max-width:480px;margin:0 auto}.review-done{text-align:center;max-width:420px;margin:0 auto}.review-done .review-cta{width:100%;margin-top:var(--space-4)}.review-xp{margin:var(--space-2) 0 0;color:var(--color-xp-text);font-size:.8rem;font-weight:700}.review-xp-bonus{font-weight:650}.review-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-6);position:relative;overflow:hidden}.review-card-eyebrow{margin:0 0 var(--space-2);letter-spacing:.06em;text-transform:uppercase;color:var(--color-primary);font-size:.75rem;font-weight:700;display:block}.review-card-face{align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.review-card-term{font-family:var(--font-serif);flex:1;margin:0;font-size:1.75rem}.review-card-back{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--color-border-strong)}.review-card-term-back{color:var(--color-text-muted)}.review-answer-form{margin-top:var(--space-4)}.review-answer-field{margin-bottom:0}.review-answer-row{gap:var(--space-2);align-items:center;display:flex}.review-answer-row input{flex:1;min-width:0}.review-answer-field .hint{margin-top:var(--space-1);display:block}.review-check-btn{width:100%;margin-top:var(--space-4)}.review-card-back .feedback-banner.review-result{margin-top:0}.review-typed-echo{margin:0 0 var(--space-2);opacity:.85;font-size:.875rem}.review-voice-result{margin:var(--space-2) 0 0;font-size:.875rem;font-weight:600}@media (prefers-reduced-motion:no-preference){.review-card-back{animation:.2s review-reveal}}@keyframes review-reveal{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.review-reveal-btn{width:100%;margin-top:var(--space-4)}.review-continue{margin-top:var(--space-5);flex-direction:column;align-items:center;display:flex}.review-continue-btn{width:100%}.review-continue-hint{margin:var(--space-2) 0 0;color:var(--color-text-muted);text-align:center;font-size:.8125rem}.review-adjust-toggle{margin-top:var(--space-3);padding:var(--space-1) var(--space-2);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;font-size:.8125rem;font-weight:600}.review-adjust-toggle:hover,.review-adjust-toggle:focus-visible{color:var(--color-text);text-decoration:underline}.rating-row{gap:var(--space-2);margin-top:var(--space-4);grid-template-columns:repeat(4,1fr);width:100%;display:grid}.rating-btn{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:var(--space-3) var(--space-2);cursor:pointer;flex-direction:column;align-items:center;gap:.125rem;font-size:.875rem;font-weight:600;display:flex;position:relative}.rating-btn:disabled{opacity:.6;cursor:not-allowed}.rating-label{line-height:1.2}.rating-sublabel{opacity:.8;font-size:.6875rem;font-weight:500;line-height:1.2}.rating-suggested{padding:calc(var(--space-3) - 1px) calc(var(--space-2) - 1px);border-width:2px}.rating-suggested-badge{background:var(--color-text);color:var(--color-bg);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;border-radius:999px;margin-bottom:.125rem;padding:.15rem .5rem;font-size:.625rem;font-weight:700}.rating-again{border-color:var(--color-danger);color:var(--color-danger)}.rating-hard{border-color:var(--color-warning-text);color:var(--color-warning-text)}.rating-good{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-primary-contrast)}.rating-easy{border-color:var(--color-success-text);color:var(--color-success-text)}.rating-again:hover:not(:disabled),.rating-again:focus-visible{background:var(--color-danger-bg)}.rating-hard:hover:not(:disabled),.rating-hard:focus-visible{background:var(--color-warning-bg)}.rating-good:hover:not(:disabled),.rating-good:focus-visible{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.rating-easy:hover:not(:disabled),.rating-easy:focus-visible{background:var(--color-success-bg)}@media (prefers-reduced-motion:no-preference){.rating-btn,.streak-progress-fill{transition:background-color .15s,border-color .15s,width .2s}}@media (width<=640px){.streak-card{flex-wrap:wrap}.streak-total{gap:var(--space-1);border-left:none;flex-direction:row;padding-left:0}.review-cta-banner{flex-direction:column;align-items:flex-start}.rating-row{grid-template-columns:repeat(2,1fr)}}.tutor-page{max-width:640px}.tutor-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap;display:flex}.tutor-header-actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.tutor-usage{padding:var(--space-1) var(--space-3);background:var(--color-surface-alt);color:var(--color-text-muted);white-space:nowrap;border-radius:999px;flex-shrink:0;font-size:.8125rem;font-weight:600}.tutor-starters{gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.tutor-starter-chip{border:1px dashed var(--color-border-strong);color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:.4375rem .875rem;font-size:.8125rem}.tutor-starter-chip:hover{border-style:solid;border-color:var(--color-primary);color:var(--color-primary);background:var(--color-surface-alt)}.tutor-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin-bottom:var(--space-4);position:relative;overflow:hidden}.tutor-transcript{gap:var(--space-3);min-height:320px;max-height:55vh;padding:var(--space-6) var(--space-5) var(--space-5);flex-direction:column;display:flex;overflow-y:auto}.chat-row{align-items:flex-end;gap:var(--space-2);display:flex}.chat-row-user{justify-content:flex-end}.chat-row-assistant{justify-content:flex-start}.chat-bubble{max-width:75%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md)}.chat-bubble p{white-space:pre-wrap;margin:0;font-size:.9375rem;line-height:1.45}.chat-row-user .chat-bubble{background:var(--color-primary);color:var(--color-primary-contrast);border-bottom-right-radius:var(--radius-sm)}.chat-row-assistant .chat-bubble{background:var(--color-surface-alt);color:var(--color-text);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm)}.tutor-fallback-note{margin:0 0 var(--space-3)}.limit-banner{margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-warning-bg);border:1px solid var(--color-warning-text);color:var(--color-warning-text);font-size:.9375rem}.tutor-composer{gap:var(--space-2);align-items:center;display:flex}.tutor-composer input[type=text]{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);min-width:0;color:var(--color-text);flex:1;padding:.625rem .75rem}.tutor-composer input[type=text]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.tutor-composer input:disabled{opacity:.6}.tutor-send{flex-shrink:0;width:auto}.mic-btn{border:1px solid var(--color-border-strong);background:var(--color-surface);width:2.75rem;height:2.75rem;color:var(--color-primary);cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.125rem;display:inline-flex}.mic-btn:hover:not(:disabled){background:var(--color-surface-alt)}.mic-btn:disabled{opacity:.5;cursor:not-allowed}.mic-btn-recording{background:var(--color-danger);border-color:var(--color-danger);color:var(--color-primary-contrast)}@media (prefers-reduced-motion:no-preference){.mic-btn,.chat-bubble,.tutor-starter-chip{transition:background-color .15s,border-color .15s}.mic-btn-recording{animation:1.2s ease-in-out infinite mic-pulse}}@keyframes mic-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-danger) 40%, transparent)}50%{box-shadow:0 0 0 10px #0000}}@media (width<=640px){.chat-bubble{max-width:88%}.tutor-transcript{max-height:45vh}}.chat-row-user .chat-bubble.is-skeleton,.chat-row-assistant .chat-bubble.is-skeleton{background:color-mix(in srgb, var(--color-border) 55%, var(--color-surface));border-color:#0000}.tutor-composer-input-skeleton{flex:1;min-width:0;height:2.5rem;margin:0}.tutor-send-skeleton{flex-shrink:0;width:6rem}.progress-grid{gap:var(--space-5);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.progress-tile,.activity-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);position:relative;overflow:hidden}.progress-tile{gap:var(--space-1);padding:var(--space-5);flex-direction:column;display:flex}.progress-tile-icon{margin-bottom:var(--space-1);font-size:1.5rem;line-height:1}.progress-tile-value{font-family:var(--font-serif);color:var(--color-primary);font-size:1.75rem;font-weight:700;line-height:1.15}.progress-tile-label{color:var(--color-text);text-transform:uppercase;letter-spacing:.03em;font-size:.8125rem;font-weight:600}.progress-tile-caption{color:var(--color-text-muted);font-size:.8125rem}.activity-card{padding:var(--space-6)}.activity-card-header{margin-bottom:var(--space-5)}.activity-chart-bars{align-items:flex-end;gap:var(--space-1);border-bottom:1px solid var(--color-border);height:140px;display:flex}.activity-col{align-items:center;gap:var(--space-2);flex-direction:column;flex:1;min-width:0;display:flex}.activity-bar-wrap{justify-content:center;align-items:flex-end;width:100%;height:140px;display:flex}.activity-bar{background:var(--color-primary);opacity:.5;border-radius:4px 4px 0 0;width:100%;max-width:22px;display:block;position:relative}.activity-bar:hover,.activity-bar:focus-visible{opacity:.75;outline:none}.activity-bar.skeleton{background:color-mix(in srgb, var(--color-border) 55%, var(--color-surface));opacity:1}.activity-bar.is-zero{background:var(--color-border-strong);opacity:1}.activity-bar.is-today{opacity:1}.activity-bar.is-today:hover,.activity-bar.is-today:focus-visible{opacity:.85}.activity-col-label{color:var(--color-text-muted);white-space:nowrap;font-size:.6875rem}.activity-col.is-today .activity-col-label{color:var(--color-primary);font-weight:700}.activity-tooltip{background:var(--color-text);color:var(--color-bg);white-space:nowrap;border-radius:var(--radius-sm);opacity:0;pointer-events:none;z-index:1;padding:.1875rem .5rem;font-size:.6875rem;font-weight:600;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.activity-bar:hover .activity-tooltip,.activity-bar:focus-visible .activity-tooltip{opacity:1}@media (prefers-reduced-motion:no-preference){.activity-bar,.activity-tooltip{transition:opacity .15s}}@media (width<=640px){.progress-grid{grid-template-columns:1fr 1fr}.activity-card{padding:var(--space-4)}.activity-chart-bars,.activity-bar-wrap{height:110px}}@media (width<=400px){.progress-grid{grid-template-columns:1fr}}.suspended-cards-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-6);margin-top:var(--space-6);position:relative;overflow:hidden}.suspended-cards-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.suspended-card-item{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex}.suspended-card-terms{flex-direction:column;gap:.125rem;font-weight:600;display:flex}.suspended-card-es{color:var(--color-text-muted);font-size:.8125rem;font-weight:400}
