.guide{max-width:47rem;padding:var(--space-6) var(--space-4) var(--space-7);font-family:var(--font-serif);margin:0 auto;line-height:1.65}.guide h1,.guide h2,.guide h3{text-wrap:balance;margin:0;line-height:1.2}.guide h1{letter-spacing:-.01em;font-size:2.2rem;font-weight:700}.guide h2{font-size:1.5rem}.guide h3{font-size:1.1rem}.guide p{margin:0}.guide-eyebrow{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.14em;color:var(--color-primary);font-size:.72rem;font-weight:600}.guide-header{gap:var(--space-3);margin-bottom:var(--space-4);flex-direction:column;display:flex}.guide-lede{color:var(--color-text-muted);max-width:40rem;font-size:1.1rem}.guide-chips{gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.guide-chip{font-family:var(--font-sans);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);border-radius:999px;padding:.26rem .68rem;font-size:.76rem;font-weight:600}.guide-section{margin-top:var(--space-7)}.guide-section-head{margin-bottom:var(--space-4);flex-direction:column;gap:.35rem;display:flex}.guide-sub{color:var(--color-text-muted);max-width:40rem;font-size:.98rem}.guide-callout{background:var(--color-success-bg);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);font-size:1.02rem}.guide-callout strong{color:var(--color-primary)}.guide-flow{gap:var(--space-2);flex-direction:column;display:flex}.guide-flow-node{gap:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);grid-template-columns:2.4rem 1fr;align-items:start;display:grid}.guide-flow-ic{border-radius:var(--radius-sm);background:var(--color-success-bg);place-items:center;width:2.4rem;height:2.4rem;font-size:1.3rem;display:grid}.guide-flow-ic.amber{background:var(--color-warning-bg)}.guide-flow-node p{color:var(--color-text-muted);margin-top:.15rem;font-size:.94rem}.guide-flow-arrow{text-align:center;color:var(--color-text-muted);font-size:.95rem}.guide-table-scroll{overflow-x:auto}.guide-routine{border-collapse:collapse;width:100%;font-size:.96rem}.guide-routine th{font-family:var(--font-sans);text-align:left;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);padding:.5rem .8rem .5rem 0;font-size:.72rem}.guide-routine td{border-bottom:1px solid var(--color-border);vertical-align:top;padding:.7rem .8rem .7rem 0}.guide-rt-time{font-family:var(--font-sans);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--color-primary);font-size:.85rem;font-weight:700}.guide-rt-what{font-weight:650}.guide-rt-why{color:var(--color-text-muted);font-size:.9rem}.guide-mod{border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-top:var(--space-4);background:var(--color-surface);overflow:hidden}.guide-mod-head{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--m-soft);display:flex}.guide-mod-head .ic{border-radius:var(--radius-sm);background:var(--color-surface);place-items:center;width:2.2rem;height:2.2rem;font-size:1.15rem;display:grid}.guide-mod-head h3{color:var(--m)}.guide-mod-head .route{color:var(--color-text-muted);background:var(--color-surface);border-radius:var(--radius-sm);border:1px solid var(--color-border);margin-left:auto;padding:.15rem .5rem;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.8rem}.guide-mod-body{padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.guide-mod-body p{font-size:.96rem}.guide-mod-label{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.1em;color:var(--m);font-size:.72rem;font-weight:700}.guide-mod-tip{background:var(--m-soft);border-radius:var(--radius-sm);padding:.7rem .9rem;font-size:.92rem}.guide-mod-tip strong{color:var(--m)}.guide-mod--green{--m:var(--color-primary);--m-soft:var(--color-success-bg)}.guide-mod--amber{--m:var(--color-warning-text);--m-soft:var(--color-warning-bg)}.guide-mini{flex-direction:column;gap:.3rem;margin:0;padding-left:1.15rem;font-size:.94rem;display:flex}.guide-tips{flex-direction:column;display:flex}.guide-tip{gap:var(--space-3);padding:var(--space-4) 0;border-top:1px solid var(--color-border);grid-template-columns:2rem 1fr;display:grid}.guide-tip:last-child{border-bottom:1px solid var(--color-border)}.guide-tip-n{font-family:var(--font-sans);color:var(--color-primary);font-size:1.05rem;font-weight:700}.guide-tip h3{margin-bottom:.2rem}.guide-tip p{font-size:.95rem}.guide-tip .src{color:var(--color-text-muted);margin-top:.35rem;font-size:.8rem;font-style:italic;display:block}.guide-check{gap:var(--space-2);flex-direction:column;margin:.4rem 0 0;padding:0;list-style:none;display:flex}.guide-check li{gap:var(--space-2);grid-template-columns:1.4rem 1fr;font-size:.96rem;display:grid}.guide-check li:before{content:"✓";color:var(--color-primary);font-weight:700;font-family:var(--font-sans)}.guide-notes{background:var(--color-surface-alt);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);flex-direction:column;gap:.6rem;font-size:.94rem;display:flex}.guide-notes b{color:var(--color-primary)}.guide-footer{margin-top:var(--space-7);padding-top:var(--space-4);border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:.85rem}@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:6px;--radius-md:10px;--radius-lg:14px;--shadow-card:0 1px 2px #0f1e190f, 0 12px 32px -16px #0f1e1938;--color-bg:#eef3f1;--color-bg-rule:#1f5c4d0f;--color-surface:#fff;--color-surface-alt:#e4ece8;--color-text:#14211d;--color-text-muted:#52655e;--color-border:#d3e0da;--color-border-strong:#b7c9c1;--color-primary:#1f5c4d;--color-primary-hover:#164539;--color-primary-contrast:#f6faf8;--color-danger:#a3271f;--color-danger-bg:#fbeceb;--color-danger-border:#eec6c2;--color-success-text:#1f5c4d;--color-success-bg:#e2f0ea;--color-warning-text:#8a5a12;--color-warning-bg:#faf0dd;--color-neutral-text:#52655e;--color-neutral-bg:#e7ece9;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--color-bg:#0e1613;--color-bg-rule:#5cb89f0e;--color-surface:#17221e;--color-surface-alt:#1c2824;--color-text:#e7f0ec;--color-text-muted:#9fb5ac;--color-border:#263630;--color-border-strong:#34483f;--color-primary:#5cb89f;--color-primary-hover:#7bcab3;--color-primary-contrast:#06201a;--color-danger:#ff9a8f;--color-danger-bg:#2c1917;--color-danger-border:#4a2521;--color-success-text:#7bcab3;--color-success-bg:#143229;--color-warning-text:#e3b565;--color-warning-bg:#302710;--color-neutral-text:#9fb5ac;--color-neutral-bg:#1c2824;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--color-bg);background-image:repeating-linear-gradient(to bottom, var(--color-bg-rule) 0, var(--color-bg-rule) 1px, transparent 1px, transparent 2.25rem);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-link,.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:before{content:"";top:0;left:var(--space-5);background:var(--color-primary);border-radius:0 0 4px 4px;width:2.5rem;height:5px;position:absolute}.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)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{border-color:var(--color-border-strong);color:var(--color-text);background:0 0}.btn-ghost:hover{background:var(--color-surface-alt)}.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{flex-direction:column;min-height:100vh;display:flex}.shell-header{z-index:10;justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;position:sticky;top:0}.shell-brand{font-family:var(--font-serif);color:var(--color-primary);white-space:nowrap;font-size:1.25rem;font-weight:600}.shell-nav{gap:var(--space-5);margin-left:var(--space-6);flex:1;display:flex}.nav-link{color:var(--color-text-muted);padding:var(--space-1) 0;border-bottom:2px solid #0000;font-size:.9375rem;font-weight:500;text-decoration:none}.nav-link:hover{color:var(--color-text)}.nav-link.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.nav-badge{min-width:1.25rem;height:1.25rem;margin-left:var(--space-1);background:var(--color-primary);color:var(--color-primary-contrast);border-radius:999px;justify-content:center;align-items:center;padding:0 .375rem;font-size:.6875rem;font-weight:700;display:inline-flex}.shell-user{align-items:center;gap:var(--space-4);display:flex}.shell-user-name{color:var(--color-text-muted);white-space:nowrap;font-size:.9375rem}.shell-main{width:100%;max-width:860px;padding:var(--space-7) var(--space-6);flex:1;margin:0 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}.settings-card:before{content:"";top:0;left:var(--space-5);background:var(--color-primary);border-radius:0 0 4px 4px;width:2.5rem;height:5px;position:absolute}.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){.shell-header{row-gap:var(--space-2);padding:var(--space-3) var(--space-4);flex-wrap:wrap}.shell-user{gap:var(--space-3)}.shell-user-name{text-overflow:ellipsis;max-width:8rem;overflow:hidden}.shell-nav{gap:var(--space-4);-webkit-overflow-scrolling:touch;flex-wrap:nowrap;flex:0 0 100%;order:3;width:100%;margin-left:0;overflow-x:auto}.nav-link{flex-shrink:0;align-items:center;min-height:40px;padding:0;display:flex}.shell-main{padding:var(--space-5) var(--space-4)}.invite-card{flex-direction:column;align-items:flex-start}.settings-card{padding:var(--space-4)}}@media (width<=400px){.shell-header{padding:var(--space-2) var(--space-3)}.shell-brand{font-size:1.0625rem}.shell-user-name{max-width:5.5rem}.shell-user .btn-ghost{padding:.5rem .75rem;font-size:.8125rem}.shell-main{padding:var(--space-4) var(--space-3)}.auth-card{padding:var(--space-4)}}.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}.unit-card,.grammar-capsule,.player-card{position:relative;overflow:hidden}.unit-card:before,.grammar-capsule:before,.player-card:before{content:"";top:0;left:var(--space-5);background:var(--color-primary);border-radius:0 0 4px 4px;width:2.5rem;height:5px;position:absolute}.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-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.unit-card{gap:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-5);color:inherit;flex-direction:column;text-decoration:none;display:flex}.unit-card:hover{border-color:var(--color-border-strong)}.unit-card-header{justify-content:space-between;align-items:center;display:flex}.unit-card-order{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8125rem;font-weight:600}.unit-card-title{margin:0}.unit-card-summary{color:var(--color-text-muted);flex:1;margin:0;font-size:.9375rem}.unit-progress{gap:var(--space-1);margin-top:var(--space-2);flex-direction:column;display:flex}.unit-progress-track,.player-progress-track{background:var(--color-border);border-radius:999px;height:6px;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:2rem;height:2rem;font-size:1rem}.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)}@media (prefers-reduced-motion:no-preference){.unit-card,.option-btn,.token-chip,.speak-btn,.unit-progress-fill,.player-progress-fill{transition:background-color .15s,border-color .15s,width .2s}}@media (width<=640px){.units-grid{grid-template-columns:1fr}.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:6px;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-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:before{content:"";top:0;left:var(--space-5);background:var(--color-primary);border-radius:0 0 4px 4px;width:2.5rem;height:5px;position:absolute}.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-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-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-panel:before{content:"";top:0;left:var(--space-5);background:var(--color-primary);border-radius:0 0 4px 4px;width:2.5rem;height:5px;position:absolute}.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{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:before,.activity-card:before{content:"";top:0;left:var(--space-5);background:var(--color-primary);border-radius:0 0 4px 4px;width:2.5rem;height:5px;position:absolute}.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}}
