/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-paper:#0f1a2b;--color-paper-2:#1a2740;--color-paper-3:#243558;--color-ink:#f2f4f8;--color-ink-soft:#a8b8cc;--color-ink-faint:#6b7e97;--color-primary:#7ab3e5;--color-primary-dark:#a8c8e8;--color-primary-soft:#1f3a5c;--color-slate:#a8b8cc;--color-slate-light:#6b7e97;--color-success:#7db386;--color-success-soft:#1f3826;--color-error:#e07060;--color-error-soft:#3d1f18;--color-warn:#d4a05c;--color-warn-soft:#3a2d18;--font-body:"Plus Jakarta Sans Variable", ui-sans-serif, system-ui, sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.flex-shrink{flex-shrink:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-vietnamese-wght-normal.qRpaaN48.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-ext-wght-normal.DmpS2jIq.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-wght-normal.eXO_dkmS.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}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);min-height:100vh;font-size:1rem;line-height:1.55;overflow-x:hidden}a{color:var(--color-primary-dark);text-underline-offset:3px;text-decoration:underline}button{font:inherit;cursor:pointer}input,button{font-family:inherit}.app{max-width:28rem;margin:0 auto;padding:0 1.25rem;position:relative}.header{z-index:10;background:#0f1a2be0;position:sticky;top:0}@supports (color:color-mix(in lab,red,red)){.header{background:color-mix(in oklab,var(--color-paper),transparent 12%)}}.header{-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-paper-3);margin:0 -1.25rem;padding:.75rem 1.25rem .875rem}.header-row{align-items:center;gap:.75rem;display:flex}.brand{letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary-dark);font-size:.875rem;font-weight:700}.brand-dot{color:var(--color-slate)}.tier-badge{letter-spacing:.06em;background:var(--color-primary-soft);color:var(--color-primary-dark);text-transform:uppercase;border-radius:4px;padding:.1875rem .5rem;font-size:.6875rem;font-weight:700}.lang-toggle{background:var(--color-paper-2);border-radius:999px;align-items:center;gap:0;margin-left:auto;padding:.1875rem;font-size:.75rem;font-weight:600;display:flex}.lang-toggle button{color:var(--color-ink-soft);background:0 0;border:0;border-radius:999px;padding:.25rem .625rem;transition:all .15s}.lang-toggle button[aria-pressed=true]{background:var(--color-primary-dark);color:var(--color-paper)}.progress{background:var(--color-paper-3);border-radius:4px;height:4px;margin-top:.75rem;overflow:hidden}.progress-bar{background:var(--color-primary);border-radius:4px;width:0%;height:100%;transition:width .5s cubic-bezier(.4,0,.2,1)}.lesson-meta{color:var(--color-ink-faint);text-transform:uppercase;letter-spacing:.1em;margin-top:1.5rem;font-size:.75rem;font-weight:700}.lesson-title{letter-spacing:-.02em;color:var(--color-primary-dark);margin-top:.375rem;font-size:1.875rem;font-weight:700;line-height:1.1}.lesson-objective{color:var(--color-slate);margin-top:.625rem;font-size:.9375rem;font-weight:500}.card{background:var(--color-paper);border:1px solid var(--color-paper-3);border-radius:8px;margin-top:1.25rem;padding:1.125rem 1.25rem}.card-label{letter-spacing:.1em;color:var(--color-primary-dark);text-transform:uppercase;margin-bottom:.625rem;font-size:.6875rem;font-weight:700}.explanation p{color:var(--color-ink);font-size:.9375rem;line-height:1.55}.explanation p strong{color:var(--color-primary-dark);font-weight:600}.explanation p+p{margin-top:.625rem}.explanation ol,.explanation ul{margin-top:.5rem;margin-left:1.25rem}.explanation li{font-size:.9375rem;line-height:1.55}.explanation li+li{margin-top:.25rem}.explanation em{color:var(--color-slate)}.example{border-bottom:1px solid var(--color-paper-3);align-items:center;gap:.75rem;padding:.625rem 0;display:flex}.example:last-child{border-bottom:0}.example-text{flex:1;font-size:1rem;font-weight:500;line-height:1.4}.example-text .highlight{color:var(--color-primary-dark);font-weight:700}.example-translation{color:var(--color-ink-soft);margin-top:.125rem;font-size:.8125rem;font-weight:400;display:block}.tts-btn{border:1px solid var(--color-paper-3);background:var(--color-paper);width:2.5rem;height:2.5rem;color:var(--color-primary-dark);border-radius:50%;flex-shrink:0;place-items:center;transition:all .15s;display:grid}.tts-btn:active,.tts-btn.playing{background:var(--color-primary);color:var(--color-paper);border-color:var(--color-primary);transform:scale(.95)}.tts-btn svg{width:1rem;height:1rem}.divider{align-items:center;gap:.875rem;margin:2.25rem 0 .625rem;display:flex}.divider-line{background:var(--color-paper-3);flex:1;height:1px}.divider-label{color:var(--color-slate);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:700}.exercise{padding-top:.25rem}.exercise-header{justify-content:space-between;align-items:baseline;margin-bottom:.75rem;display:flex}.exercise-num{letter-spacing:-.01em;color:var(--color-primary-dark);font-size:1.125rem;font-weight:700}.exercise-num .ex-label{color:var(--color-ink-faint);margin-right:.375rem;font-weight:500}.exercise-progress{color:var(--color-ink-faint);font-size:.75rem;font-weight:700}.exercise-instruction{color:var(--color-ink-soft);margin-bottom:.875rem;font-size:.875rem;font-weight:500}.q{background:var(--color-paper);border:1px solid var(--color-paper-3);border-radius:12px;margin-bottom:.75rem;padding:1rem 1.125rem;transition:all .3s}.q.correct{border-color:var(--color-success);background:var(--color-success-soft)}.q.incorrect{animation:.4s shake}.q.locked{opacity:.7}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(3px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.q-prompt{font-size:1rem;font-weight:500;line-height:1.5}.q-prompt .blank{border-bottom:2px solid var(--color-primary);text-align:center;min-width:4rem;color:var(--color-primary-dark);padding:0 .25rem;font-weight:700;display:inline-block}.q-translation{color:var(--color-ink-faint);margin-top:.375rem;font-size:.75rem}.input-row{gap:.5rem;margin-top:.75rem;display:flex}.fill-input{border:1.5px solid var(--color-slate-light);background:var(--color-paper);font:inherit;color:var(--color-ink);border-radius:6px;outline:none;flex:1;padding:.6875rem .875rem;font-size:1rem;transition:border-color .15s}.fill-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.fill-input::placeholder{color:var(--color-ink-faint)}.check-btn{background:var(--color-primary-dark);color:var(--color-paper);font:inherit;white-space:nowrap;letter-spacing:.03em;text-transform:uppercase;border:0;border-radius:6px;padding:0 1.125rem;font-size:.8125rem;font-weight:700;transition:all .15s}.check-btn:hover{background:var(--color-primary)}.check-btn:active{transform:scale(.97)}.check-btn:disabled{opacity:.4;cursor:not-allowed}.choices{flex-direction:column;gap:.5rem;margin-top:.75rem;display:flex}.choice{border:1.5px solid var(--color-paper-3);background:var(--color-paper);color:var(--color-ink);font:inherit;text-align:left;border-radius:10px;align-items:center;gap:.75rem;min-height:48px;padding:.75rem .875rem;font-size:.9375rem;font-weight:600;transition:all .15s;display:flex}.choice:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-soft)}.choice:active{transform:scale(.99)}.choice-letter{background:var(--color-paper-2);width:1.625rem;height:1.625rem;color:var(--color-ink-soft);border-radius:6px;flex-shrink:0;place-items:center;font-size:.6875rem;font-weight:800;transition:background .15s,color .15s;display:grid}.choice.correct{border-color:var(--color-success);background:var(--color-success-soft);color:var(--color-success)}.choice.correct .choice-letter{background:var(--color-success);color:var(--color-paper)}.choice.incorrect{border-color:var(--color-error);background:var(--color-error-soft);color:var(--color-error)}.choice.incorrect .choice-letter{background:var(--color-error);color:var(--color-paper)}.choice:disabled{cursor:default}.order-prompt-label{letter-spacing:.08em;color:var(--color-primary-dark);text-transform:uppercase;margin-bottom:.375rem;font-size:.6875rem;font-weight:700}.order-prompt-text{color:var(--color-ink);margin-bottom:.625rem;font-size:1.0625rem;font-style:italic;font-weight:600;line-height:1.4}.order-target{background:var(--color-paper);border:1.5px dashed var(--color-slate-light);border-radius:6px;flex-wrap:wrap;align-content:flex-start;gap:.375rem;min-height:3rem;margin-top:.5rem;padding:.5rem .625rem;display:flex}.order-source{flex-wrap:wrap;gap:.375rem;margin-top:.5rem;display:flex}.token{background:var(--color-paper);border:1.5px solid var(--color-slate-light);color:var(--color-ink);border-radius:4px;padding:.4375rem .75rem;font-size:.9375rem;font-weight:600;transition:all .15s}.token:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary)}.token:active{transform:scale(.95)}.token.used{opacity:.3;cursor:not-allowed}.token-in-target{background:var(--color-primary-dark);color:var(--color-paper);border-color:var(--color-primary-dark)}.token-in-target:hover{background:var(--color-primary);border-color:var(--color-primary)}.matching{grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.5rem;display:grid}.matching-column{flex-direction:column;gap:.375rem;display:flex}.matching-column-label{letter-spacing:.08em;color:var(--color-primary-dark);text-transform:uppercase;margin-bottom:.25rem;font-size:.6875rem;font-weight:700}.match-item{border:1.5px solid var(--color-slate-light);background:var(--color-paper);text-align:left;color:var(--color-ink);border-radius:6px;padding:.5625rem .75rem;font-size:.9375rem;font-weight:600;transition:all .15s}.match-item:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary)}.match-item.selected{background:var(--color-primary-dark);color:var(--color-paper);border-color:var(--color-primary-dark)}.match-item.matched{background:var(--color-success-soft);border-color:var(--color-success);color:var(--color-success);cursor:default}.match-item.mismatch{background:var(--color-error-soft);border-color:var(--color-error);color:var(--color-error);animation:.3s shake}.free-given{color:var(--color-primary-dark);letter-spacing:.02em;margin-bottom:.5rem;font-size:.9375rem;font-weight:600}.free-textarea{border:1.5px solid var(--color-slate-light);background:var(--color-paper);width:100%;color:var(--color-ink);font:inherit;resize:vertical;border-radius:6px;outline:none;min-height:4rem;padding:.6875rem .875rem;font-size:.9375rem;transition:border-color .15s}.free-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.free-model{background:var(--color-primary-soft);color:var(--color-ink);border-radius:6px;margin-top:.625rem;padding:.625rem .75rem;font-size:.875rem}.free-model strong{color:var(--color-primary-dark);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.25rem;font-size:.6875rem;display:block}.feedback{border-radius:4px;align-items:flex-start;gap:.5rem;margin-top:.625rem;padding:.5625rem .75rem;font-size:.8125rem;display:flex}.feedback.success{background:var(--color-success-soft);color:var(--color-success)}.feedback.error{background:var(--color-error-soft);color:var(--color-error)}.feedback-icon{flex-shrink:0;margin-top:.0625rem}.q-action-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.625rem;display:flex}.ghost-btn{color:var(--color-primary-dark);font:inherit;text-underline-offset:3px;text-transform:uppercase;letter-spacing:.03em;background:0 0;border:0;padding:.25rem 0;font-size:.75rem;font-weight:700;text-decoration:underline}.order-listen{color:var(--color-ink-soft);font:inherit;text-transform:uppercase;letter-spacing:.03em;background:0 0;border:0;align-items:center;gap:.375rem;margin-left:auto;font-size:.75rem;font-weight:700;display:inline-flex}.order-listen svg{width:.875rem;height:.875rem}.order-listen.playing{color:var(--color-primary-dark)}.completion{background:var(--color-primary-dark);color:var(--color-paper);text-align:center;border-radius:8px;margin-top:2rem;padding:1.75rem 1.25rem;display:none}.completion.show{animation:.5s cubic-bezier(.16,1,.3,1) rise;display:block}@keyframes rise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.completion h2{letter-spacing:-.02em;font-size:1.625rem;font-weight:700}.completion-score{margin:.625rem 0;font-size:3.75rem;font-weight:700;line-height:1}.completion-score .total{color:var(--color-slate-light);font-weight:500}.completion p{color:#0f1a2bbf;font-size:.875rem}@supports (color:color-mix(in lab,red,red)){.completion p{color:color-mix(in oklab,var(--color-paper),transparent 25%)}}.completion-actions{gap:.5rem;margin-top:1.25rem;display:flex}.completion-actions button{font:inherit;text-transform:uppercase;letter-spacing:.03em;border:0;border-radius:6px;flex:1;padding:.75rem;font-size:.8125rem;font-weight:700}.btn-primary{background:var(--color-primary);color:var(--color-paper)}.btn-secondary{background:#0f1a2b26}@supports (color:color-mix(in lab,red,red)){.btn-secondary{background:color-mix(in oklab,var(--color-paper),transparent 85%)}}.btn-secondary{color:var(--color-paper)}.spacer{height:3rem}.footer{text-align:center;color:var(--color-ink-faint);letter-spacing:.05em;padding:1.5rem 0;font-size:.6875rem}.footer em{color:var(--color-slate);font-style:normal;font-weight:600}.tf-row{gap:.625rem;margin-top:.875rem;display:flex}.tf-button{border:1.5px solid var(--color-slate-light);background:var(--color-paper);color:var(--color-ink);font:inherit;letter-spacing:.06em;border-radius:8px;flex:1;padding:.875rem 1rem;font-size:.9375rem;font-weight:700;transition:all .15s}.tf-button:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-soft)}.tf-button:active{transform:scale(.98)}.tf-button.correct{border-color:var(--color-success);background:var(--color-success-soft);color:var(--color-success)}.tf-button.incorrect{border-color:var(--color-error);background:var(--color-error-soft);color:var(--color-error)}.tf-button:disabled{cursor:default}.rewrite-given{background:var(--color-paper-2);border-left:3px solid var(--color-primary);border-radius:0 6px 6px 0;margin-bottom:.625rem;padding:.625rem .875rem;font-size:.9375rem;font-style:italic}.rewrite-label{letter-spacing:.1em;text-transform:uppercase;color:var(--color-primary-dark);margin-bottom:.25rem;font-size:.625rem;font-style:normal;font-weight:700;display:block}.rewrite-extra{color:var(--color-slate);margin-bottom:.5rem;font-size:.8125rem;font-weight:600}.dictation-row{align-items:stretch;gap:.625rem;margin-top:.75rem;display:flex}.dictation-replay{border:1.5px solid var(--color-primary-dark);background:var(--color-paper);color:var(--color-primary-dark);letter-spacing:.06em;text-transform:uppercase;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.25rem;min-width:5.5rem;padding:.5rem .875rem;font-size:.625rem;font-weight:700;transition:all .15s;display:inline-flex}.dictation-replay svg{width:1.25rem;height:1.25rem}.dictation-replay:hover{background:var(--color-primary-soft)}.dictation-replay.playing{background:var(--color-primary);color:var(--color-paper);border-color:var(--color-primary)}.dictation-replay [data-lang-en],.dictation-replay [data-lang-es]{display:none}[data-lang=en] .dictation-replay [data-lang-en],.dictation-replay [data-lang-en]:not([data-lang=es] *),[data-lang=es] .dictation-replay [data-lang-es]{display:inline}.dictation-row .free-textarea{flex:1}.vocab-grid{grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:.875rem;margin-top:1.25rem;display:grid}.vocab-card{background:var(--color-paper);border:1px solid var(--color-paper-3);color:inherit;border-radius:10px;padding:1rem 1.125rem;text-decoration:none;transition:all .15s;display:block}.vocab-card:hover{border-color:var(--color-primary);background:var(--color-primary-soft);transform:translateY(-1px)}.vocab-card-title{color:var(--color-primary-dark);letter-spacing:-.01em;font-size:1rem;font-weight:700}.vocab-card-count{color:var(--color-ink-faint);text-transform:uppercase;letter-spacing:.06em;margin-top:.25rem;font-size:.75rem;font-weight:600}.vocab-card-progress{color:var(--color-success);margin-top:.5rem;font-size:.8125rem;font-weight:700}.vocab-tabs{background:var(--color-paper-2);border-radius:999px;gap:.25rem;margin:1.25rem 0;padding:.25rem;display:flex}.vocab-tab{color:var(--color-ink-soft);font:inherit;background:0 0;border:0;border-radius:999px;flex:1;padding:.5rem .875rem;font-size:.8125rem;font-weight:700;transition:all .15s}.vocab-tab:hover{color:var(--color-primary-dark)}.vocab-tab.is-active{background:var(--color-primary-dark);color:var(--color-paper)}.vocab-list{flex-direction:column;gap:0;margin-top:.75rem;display:flex}.vocab-row{border-bottom:1px solid var(--color-paper-3);align-items:flex-start;gap:.75rem;padding:.75rem 0;display:flex}.vocab-row:last-child{border-bottom:0}.vocab-word{flex:1;min-width:0}.vocab-word-text{color:var(--color-ink);font-size:1rem;font-weight:700}.vocab-pos{letter-spacing:.06em;text-transform:uppercase;color:var(--color-slate);margin-left:.5rem;font-size:.6875rem;font-weight:700}.vocab-translation{color:var(--color-ink-soft);margin-top:.125rem;font-size:.9375rem}.vocab-example{color:var(--color-ink-faint);margin-top:.25rem;font-size:.8125rem;font-style:italic}.flashcard-wrap{flex-direction:column;align-items:center;padding:1.25rem 0;display:flex}.flashcard{aspect-ratio:4/3;perspective:1000px;cursor:pointer;width:100%;max-width:22rem;margin-bottom:1rem}.flashcard-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.4,0,.2,1);position:relative}.flashcard.is-flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-face{border:1px solid var(--color-paper-3);background:var(--color-paper);backface-visibility:hidden;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:absolute;inset:0;box-shadow:0 4px 12px #2e74b514}.flashcard-face.back{background:var(--color-primary-soft);border-color:var(--color-primary);transform:rotateY(180deg)}.flashcard-word{color:var(--color-primary-dark);letter-spacing:-.02em;font-size:2rem;font-weight:800;line-height:1.1}.flashcard-pos{letter-spacing:.1em;text-transform:uppercase;color:var(--color-slate);margin-top:.5rem;font-size:.6875rem;font-weight:700}.flashcard-translation{color:var(--color-ink);letter-spacing:-.01em;font-size:1.625rem;font-weight:700}.flashcard-example{color:var(--color-ink-soft);margin-top:.75rem;font-size:.875rem;font-style:italic}.flashcard-hint{color:var(--color-ink-faint);text-transform:uppercase;letter-spacing:.06em;margin-top:.875rem;font-size:.75rem}.flashcard-actions{gap:.625rem;width:100%;max-width:22rem;margin-top:.5rem;display:flex}.srs-actions{grid-template-columns:1fr 1fr 1fr;gap:.5rem;width:100%;max-width:22rem;margin-top:.5rem;display:grid}.srs-btn{background:var(--color-paper);font:inherit;cursor:pointer;border:1.5px solid;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.125rem;min-height:56px;padding:.625rem .5rem;transition:background .15s;display:flex}.srs-btn:active{transform:scale(.97)}.srs-label{letter-spacing:.02em;font-size:.8125rem;font-weight:700}.srs-interval{letter-spacing:.04em;text-transform:uppercase;opacity:.75;font-variant-numeric:tabular-nums;font-size:.625rem;font-weight:700}.srs-miss{border-color:var(--color-error);color:var(--color-error)}.srs-miss:hover,.srs-miss:focus-visible{background:var(--color-error-soft)}.srs-hard{border-color:var(--color-warn);color:var(--color-warn)}.srs-hard:hover,.srs-hard:focus-visible{background:var(--color-warn-soft)}.srs-good{border-color:var(--color-success);color:var(--color-success)}.srs-good:hover,.srs-good:focus-visible{background:var(--color-success-soft)}.flashcard-actions button{border:1.5px solid var(--color-slate-light);background:var(--color-paper);color:var(--color-ink);font:inherit;letter-spacing:.03em;text-transform:uppercase;border-radius:8px;flex:1;padding:.625rem 1rem;font-size:.8125rem;font-weight:700}.flashcard-actions .knew-it{border-color:var(--color-success);color:var(--color-success);background:var(--color-success-soft)}.flashcard-progress{color:var(--color-ink-faint);letter-spacing:.06em;text-transform:uppercase;margin-top:1rem;font-size:.75rem;font-weight:700}.vocab-quiz-prompt{color:var(--color-primary-dark);letter-spacing:-.02em;text-align:center;margin:.5rem 0 1.25rem;font-size:1.75rem;font-weight:800}[data-lang=es] [data-lang-en]{display:none}[data-lang=es] [data-lang-es]{display:inline}[data-lang-es]{display:none}[data-lang-en]{display:inline}html[data-text-size=large]{font-size:18px}html[data-text-size=large] .lesson-title{font-size:2.125rem}html[data-text-size=large] .q-prompt,html[data-text-size=large] .choice,html[data-text-size=large] .match-item,html[data-text-size=large] .token,html[data-text-size=large] .tf-button,html[data-text-size=large] .fill-input,html[data-text-size=large] .free-textarea,html[data-text-size=large] .vocab-word-text,html[data-text-size=large] .vocab-translation{font-size:1.0625rem}html[data-contrast=high]{--color-paper:#fff;--color-paper-2:#fff;--color-paper-3:#000;--color-ink:#000;--color-ink-soft:#000;--color-ink-faint:#333;--color-primary:#003a78;--color-primary-dark:#002046;--color-primary-soft:#e6efff;--color-slate:#000;--color-slate-light:#000;--color-success:#006000;--color-success-soft:#d8f0d8;--color-error:#8a0000;--color-error-soft:#ffe0e0}html[data-contrast=high] .card,html[data-contrast=high] .q,html[data-contrast=high] .vocab-card,html[data-contrast=high] .flashcard-face{border-width:2px}html[data-contrast=high] .choice,html[data-contrast=high] .match-item,html[data-contrast=high] .token,html[data-contrast=high] .tf-button,html[data-contrast=high] .fill-input,html[data-contrast=high] .free-textarea{border-width:2px;border-color:#000}html[data-contrast=high] a,html[data-contrast=high] .ghost-btn{text-decoration:underline;text-decoration-thickness:2px}@media(prefers-color-scheme:dark){html[data-contrast=high]{--color-paper:#000;--color-paper-2:#000;--color-paper-3:#fff;--color-ink:#fff;--color-ink-soft:#fff;--color-ink-faint:#ccc;--color-primary:#79c0ff;--color-primary-dark:#aed4ff;--color-primary-soft:#002046;--color-slate:#fff;--color-slate-light:#fff;--color-success:#5dd55d;--color-success-soft:#002800;--color-error:#f88;--color-error-soft:#2a0000}html[data-contrast=high] .choice,html[data-contrast=high] .match-item,html[data-contrast=high] .token,html[data-contrast=high] .tf-button,html[data-contrast=high] .fill-input,html[data-contrast=high] .free-textarea{border-color:#fff}}.print-sheet{background:var(--color-paper);border:1px solid var(--color-paper-3);border-radius:8px;padding:1.25rem}@media print{body{background:#fff}.app{max-width:none;padding:0}.header,.print-screen-actions,.footer,.spacer{display:none!important}.print-sheet{border:0;padding:0}html[data-contrast=high]{--color-paper:#fff;--color-paper-2:#fff;--color-paper-3:#ccc;--color-ink:#000}.class-qr-card{page-break-inside:avoid}}.t-display-xl{letter-spacing:-.02em;font-size:2rem;font-weight:800;line-height:1}.t-display-lg{letter-spacing:-.02em;font-size:1.875rem;font-weight:700;line-height:1.1}.t-display{letter-spacing:-.02em;font-size:1.625rem;font-weight:700;line-height:1.15}.t-heading{letter-spacing:-.02em;font-size:1.375rem;font-weight:700;line-height:1.2}.t-subtitle{font-size:1.0625rem;font-weight:500;line-height:1.5}.t-body{font-size:.875rem;font-weight:500;line-height:1.5}.t-body-sm{font-size:.8125rem;font-weight:500;line-height:1.5}.t-meta{font-size:.75rem;font-weight:600;line-height:1.4}.t-label-sc{letter-spacing:.1em;text-transform:uppercase;font-size:.6875rem;font-weight:700;line-height:1.3}.t-caption{font-size:.6875rem;font-weight:600;line-height:1.4}.t-micro{letter-spacing:.06em;text-transform:uppercase;font-size:.625rem;font-weight:700;line-height:1.2}.tone-ink{color:var(--color-ink)}.tone-ink-soft{color:var(--color-ink-soft)}.tone-ink-faint{color:var(--color-ink-faint)}.tone-primary{color:var(--color-primary)}.tone-success{color:var(--color-success)}.tone-error{color:var(--color-error)}.tone-warn{color:var(--color-warn)}.tap{min-height:44px}.pill-warn{background:var(--color-warn-soft);color:var(--color-warn);letter-spacing:.06em;text-transform:uppercase;border-radius:4px;align-items:center;gap:.25rem;padding:.1875rem .5rem;font-size:.6875rem;font-weight:700;display:inline-flex}.toggle-switch{background:var(--color-paper-3);cursor:pointer;border:0;border-radius:999px;flex-shrink:0;width:44px;height:26px;padding:0;transition:background .2s;position:relative}.toggle-switch.is-on{background:var(--color-primary)}.toggle-knob{background:var(--color-paper);border-radius:50%;width:22px;height:22px;transition:left .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000002e}.toggle-switch.is-on .toggle-knob{left:20px}.settings-row{color:var(--color-ink);border-bottom:1px solid var(--color-paper-3);background:var(--color-paper);justify-content:space-between;align-items:center;min-height:44px;padding:.875rem 1.125rem;font-size:.875rem;text-decoration:none;transition:background .15s;display:flex}.settings-row:last-child{border-bottom:0}.settings-row:hover,.settings-row:focus-visible{background:var(--color-paper-2)}.settings-row.destructive{color:var(--color-error)}.pwa-install-backdrop{-webkit-backdrop-filter:blur(2px);z-index:60;background:#0e16268c;justify-content:center;align-items:flex-end;animation:.2s ease-out pwa-fade-in;display:flex;position:fixed;inset:0}@keyframes pwa-fade-in{0%{opacity:0}to{opacity:1}}.pwa-install-sheet{background:var(--color-paper);text-align:center;border-radius:20px 20px 0 0;flex-direction:column;align-items:center;width:100%;max-width:28rem;padding:.875rem 1.5rem 1.5rem;animation:.25s cubic-bezier(.16,1,.3,1) pwa-slide-up;display:flex}@keyframes pwa-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.pwa-install-drag-handle{background:var(--color-paper-3);border-radius:2px;width:36px;height:4px;margin-bottom:1.25rem}.pwa-install-tile{background:var(--color-primary);width:72px;height:72px;color:var(--color-paper);letter-spacing:-.04em;border-radius:16px;place-items:center;font-size:2.25rem;font-weight:800;display:grid;box-shadow:inset 0 0 0 1px #ffffff26}.pwa-install-title{letter-spacing:-.02em;color:var(--color-ink);margin-top:.875rem;font-size:1.375rem;font-weight:700}.pwa-install-sub{color:var(--color-ink-soft);margin-top:.25rem;font-size:.875rem;line-height:1.4}.pwa-install-benefits{grid-template-columns:1fr 1fr 1fr;gap:.5rem;width:100%;margin-top:1.25rem;display:grid}.pwa-install-benefit{background:var(--color-paper-2);color:var(--color-ink);border-radius:8px;flex-direction:column;align-items:center;gap:.25rem;padding:.625rem .5rem;font-size:.6875rem;font-weight:700;display:flex}.pwa-install-benefit span:first-child{font-size:1.25rem}.pwa-install-ios-strip{background:var(--color-primary-soft);border:1px solid var(--color-primary);color:var(--color-ink);text-align:left;border-radius:10px;width:100%;margin-top:1.25rem;padding:.75rem .875rem;font-size:.8125rem;line-height:1.45}.pwa-install-ios-strip strong{color:var(--color-primary)}.pwa-install-cta{width:100%;margin-top:1.25rem;padding:.875rem 1rem;font-size:.875rem}.pwa-install-dismiss{text-transform:none;letter-spacing:0;color:var(--color-ink-soft);margin-top:.75rem;font-size:.8125rem;font-weight:600;text-decoration:none}.quick-card{background:var(--color-paper);border:1px solid var(--color-paper-3);text-align:left;color:var(--color-ink);border-radius:12px;flex-direction:column;padding:.875rem;text-decoration:none;transition:border-color .15s,background .15s;display:flex}.quick-card:hover,.quick-card:focus-visible{border-color:var(--color-primary);background:var(--color-primary-soft)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
