.app-nav{position:fixed;left:0;right:0;bottom:0;z-index:20;height:var(--app-nav-height-mobile);padding-bottom:env(safe-area-inset-bottom);border-top:1px solid rgba(148,163,184,.35);background:#ffffffe6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.app-nav__inner{height:100%;display:grid;grid-template-columns:auto repeat(4,minmax(0,1fr))}.app-nav__brand{display:flex;align-items:center;justify-content:center;padding:0 .5rem 0 .75rem;font-size:1.05rem;font-weight:900;letter-spacing:.06em;line-height:1}.app-nav__brand-mark{display:inline-flex;align-items:center}.app-nav__brand-copy{display:none}.app-nav__links{display:contents}.app-nav__link{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;color:#475569;text-decoration:none;opacity:.7;transition:opacity .15s ease,transform .12s ease}.app-nav__link svg{width:1.35rem;height:1.35rem;flex-shrink:0}.app-nav__link span{font-size:.65rem;font-weight:600;letter-spacing:.01em;line-height:1}.app-nav__link.is-active{color:#111827;opacity:1;transform:translateY(-1px)}.app-nav__link:hover{text-decoration:none}@media(min-width:900px){.app-nav{top:0;bottom:auto;height:var(--app-nav-height-desktop);border-top:0;border-bottom:1px solid rgba(203,213,225,.8);padding-bottom:0;background:linear-gradient(180deg,#fffffff5,#f8fafce6);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.app-nav__inner{max-width:76rem;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.app-nav__brand{padding:0;margin-right:0;gap:.8rem;letter-spacing:0}.app-nav__brand-mark{min-width:2.5rem;min-height:2.5rem;justify-content:center;border-radius:.9rem;background:linear-gradient(135deg,#f8fafcf5,#f1f5f9d1);box-shadow:inset 0 0 0 1px #cbd5e1d9,0 8px 18px #0f172a14;font-size:1.2rem;font-weight:900;letter-spacing:.05em}.app-nav__brand-copy{display:grid;gap:.1rem;line-height:1.05}.app-nav__brand-copy strong{color:#0f172a;font-size:.95rem;font-weight:800;letter-spacing:-.02em}.app-nav__brand-copy span{color:#64748b;font-size:.74rem;font-weight:600}.app-nav__links{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem;border-radius:1.1rem;background:#ffffffd1;box-shadow:inset 0 0 0 1px #e2e8f0f2,0 10px 24px #0f172a0f}.app-nav__link{flex-direction:row;gap:.5rem;min-height:2.6rem;padding:0 1rem;border-radius:.85rem;opacity:1;color:#475569;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease,transform .12s ease}.app-nav__link svg{width:1rem;height:1rem}.app-nav__link span{font-size:.88rem;font-weight:700;letter-spacing:-.01em}.app-nav__link:hover{background:#f1f5f9f2;color:#0f172a}.app-nav__link.is-active{background:linear-gradient(135deg,#fffffffa,#f8fafcf0);color:#0f172a;transform:none;box-shadow:inset 0 0 0 1px #cbd5e1f2,0 8px 18px #0f172a14}.app-nav__link.is-active svg{color:#1f3f86}}.dashboard-unit-cards{width:100%;display:grid;gap:.9rem;padding:1rem}.unit-card{border:1px solid rgba(203,213,225,.9);border-radius:1.4rem;background:radial-gradient(circle at top right,color-mix(in srgb,var(--unit-card-accent) 14%,transparent),transparent 34%),linear-gradient(180deg,#fffffffa,#f8fafcf5);box-shadow:0 16px 34px #0f172a12;overflow:hidden}.unit-card.is-current{border-color:color-mix(in srgb,var(--unit-card-accent) 40%,#cbd5e1);box-shadow:0 18px 40px color-mix(in srgb,var(--unit-card-accent) 12%,rgba(15,23,42,.1))}.unit-card.is-locked{background:linear-gradient(180deg,#f8fafcf5,#f1f5f9f0);box-shadow:0 12px 24px #0f172a0a}.unit-card__header{padding:1rem;display:grid;gap:.85rem}.unit-card__overview,.unit-card__copy-block,.unit-card__meta{display:grid;gap:.85rem}.unit-card__topline{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.unit-card__eyebrow{display:inline-flex;align-items:center;border-radius:999px;padding:.28rem .55rem;background:#0f172a0f;color:#475569;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.unit-card__status{display:inline-flex;align-items:center;border-radius:999px;padding:.28rem .55rem;font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.unit-card__status.is-completed{background:#16a34a1f;color:#15803d}.unit-card__status.is-current{background:color-mix(in srgb,var(--unit-card-accent) 14%,white);color:color-mix(in srgb,var(--unit-card-accent) 78%,#0f172a)}.unit-card__status.is-available{background:#d977061f;color:#b45309}.unit-card__status.is-locked{background:#94a3b824;color:#64748b}.unit-card__title{margin:0;color:#0f172a;font-size:1.35rem;line-height:1.05;letter-spacing:-.03em}.unit-card__summary{margin:0;color:#475569;font-size:.94rem;line-height:1.55}.unit-card__secondary-link{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem 0;border:none;background:transparent;color:var(--unit-card-accent);font-size:.82rem;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:.15em}.unit-card__secondary-link:hover{color:color-mix(in srgb,var(--unit-card-accent) 80%,#0f172a)}.unit-card__progress{display:grid;gap:.45rem}.unit-card__progress-copy{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;color:#475569;font-size:.78rem;font-weight:700}.unit-card__progress-copy strong{color:#0f172a;font-size:.82rem}.unit-card__progress-track{height:.45rem;border-radius:999px;background:#e2e8f0eb;overflow:hidden}.unit-card__progress-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--unit-card-accent) 70%,white),var(--unit-card-accent))}.unit-card__actions{display:grid;grid-template-columns:1fr;gap:.55rem}.unit-card__actions.has-icon-primary{grid-template-columns:auto minmax(0,1fr);align-items:stretch}.unit-card__primary-action,.unit-card__toggle{min-height:2.75rem;border-radius:.95rem;font-size:.88rem;font-weight:700}.unit-card__primary-action{border:none;background:var(--unit-card-accent);color:#fff}.unit-card__primary-action.is-icon-only{width:2.75rem;min-width:2.75rem;padding:0;display:inline-flex;align-items:center;justify-content:center}.unit-card__primary-action.is-icon-only svg{width:1rem;height:1rem;margin-left:.08rem}.unit-card__toggle{border:1px solid rgba(203,213,225,.9);background:#ffffffeb;color:#334155;min-width:0}.unit-card__body{border-top:1px solid rgba(226,232,240,.95);background:#f8fafcb8}.unit-card__lesson{padding:.95rem 1rem 1rem}.unit-card__lesson+.unit-card__lesson{border-top:1px solid rgba(226,232,240,.88)}.unit-card__lesson-header{margin-bottom:.7rem;display:grid;gap:.22rem}.unit-card__lesson-eyebrow{color:#64748b;font-size:.66rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.unit-card__lesson-title{margin:0;color:#0f172a;font-size:.95rem;line-height:1.35}.unit-card__rows{display:grid;gap:.55rem}.unit-exercise-row{width:100%;border:1px solid rgba(226,232,240,.95);border-radius:1rem;background:#fffffff5;padding:.72rem .8rem;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem;text-align:left}.unit-exercise-row:disabled{cursor:not-allowed}.unit-exercise-row__icon{width:2.35rem;height:2.35rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}.unit-exercise-row__icon-svg{width:1rem;height:1rem}.unit-exercise-row__icon.is-locked{background:#f1f5f9f0;color:#94a3b8}.unit-exercise-row__icon.is-available{background:color-mix(in srgb,var(--unit-card-accent) 12%,white);color:var(--unit-card-accent)}.unit-exercise-row__icon.is-current{background:var(--unit-card-accent);color:#fff;box-shadow:0 10px 20px color-mix(in srgb,var(--unit-card-accent) 22%,transparent)}.unit-exercise-row__icon.is-completed{background:#16a34a;color:#fff}.unit-exercise-row__check{position:absolute;right:-.05rem;bottom:-.05rem;width:.85rem;height:.85rem;border-radius:999px;background:#fff;color:#16a34a;display:inline-flex;align-items:center;justify-content:center}.unit-exercise-row__check-svg{width:.7rem;height:.7rem}.unit-exercise-row__body{min-width:0;display:grid;gap:.14rem}.unit-exercise-row__body strong{color:#0f172a;font-size:.9rem;line-height:1.35}.unit-exercise-row__body span{color:#64748b;font-size:.77rem;line-height:1.35}.unit-exercise-row__action{color:#475569;font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.unit-exercise-row.is-current-row{border-color:color-mix(in srgb,var(--unit-card-accent) 35%,#cbd5e1);box-shadow:0 10px 24px color-mix(in srgb,var(--unit-card-accent) 10%,rgba(15,23,42,.08))}.unit-exercise-row.is-completed .unit-exercise-row__action{color:#15803d}.unit-exercise-row.is-locked .unit-exercise-row__action{color:#94a3b8}@media(min-width:900px){.dashboard-unit-cards{gap:1.2rem;padding:0}.unit-card__header{padding:1.25rem 1.25rem 1.1rem}.unit-card__overview{grid-template-columns:minmax(0,1.45fr) minmax(15rem,.85fr);align-items:start;gap:1.1rem}.unit-card__copy-block{gap:.7rem}.unit-card__meta{gap:.8rem;padding:.95rem;border:1px solid rgba(226,232,240,.92);border-radius:1.2rem;background:#ffffffd1;box-shadow:inset 0 1px #fffc}.unit-card__title{font-size:1.55rem}.unit-card__actions{grid-template-columns:repeat(2,minmax(0,max-content));justify-content:flex-start}.unit-card__primary-action,.unit-card__toggle{min-width:8.75rem}.unit-card__primary-action.is-icon-only{min-width:2.9rem}.unit-card__lesson-header{grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:.8rem}.unit-card__lesson-eyebrow{border-radius:999px;padding:.28rem .6rem;background:#0f172a0d}.unit-card__lesson{padding:1rem 1.25rem 1.1rem}.unit-exercise-row{padding:.8rem .9rem;transition:border-color .15s ease,transform .12s ease,box-shadow .15s ease,background-color .15s ease}.unit-exercise-row:not(:disabled):hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--unit-card-accent) 22%,#cbd5e1);background:#fff;box-shadow:0 14px 28px #0f172a12}.unit-exercise-row__body strong{font-size:.94rem}}@media(min-width:1280px){.unit-card__header{padding:1.4rem 1.45rem 1.2rem}.unit-card__overview{grid-template-columns:minmax(0,1.65fr) minmax(17rem,.8fr);gap:1.35rem}.unit-card__body{display:grid;gap:0}.unit-card__lesson{padding:1.1rem 1.45rem 1.2rem}.unit-exercise-row{grid-template-columns:auto minmax(0,1fr) minmax(4.5rem,auto);gap:.9rem}}.flashcard{width:100%;max-width:none;background:transparent;height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));display:flex;flex-direction:column;padding:calc(.5rem + env(safe-area-inset-top)) 1rem calc(.75rem + env(safe-area-inset-bottom));overflow:hidden}.flashcard__topbar{display:grid;grid-template-columns:minmax(5.75rem,1fr) auto minmax(5.75rem,1fr);align-items:center;gap:.5rem;margin-bottom:.35rem;flex-shrink:0}.flashcard__back{grid-column:1;justify-self:start;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.flashcard__back:active{background:#e2e8f0}.flashcard__counter{grid-column:2;justify-self:center;text-align:center;font-size:.72rem;color:#94a3b8;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.flashcard__toggle{grid-column:3;justify-self:end;border:none;background:#f1f5f9;color:#64748b;border-radius:999px;padding:.35rem .6rem;font-size:.72rem;font-weight:700;cursor:pointer;transition:background-color .15s ease}.flashcard__toggle:active{background:#e2e8f0}.flashcard__prompt-label{margin:0;font-size:.72rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.flashcard__content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:0;min-height:0}.flashcard__prompt{margin:.25rem 0 0;font-size:clamp(2.75rem,14vw,5rem);font-weight:800;line-height:1;letter-spacing:-.03em}.flashcard__token{margin:.2rem 0 .35rem;font-size:.82rem;font-weight:700}.flashcard__question{margin:0 0 .35rem;color:#475569;font-size:.85rem}.flashcard__extra{margin-bottom:.25rem;min-height:2.5rem;display:grid;grid-template-rows:auto auto;align-content:start;gap:.15rem}.flashcard__token-legend{display:flex;flex-wrap:wrap;gap:.35rem .65rem;margin:0;min-height:1.35rem;align-items:flex-start;justify-content:center}.flashcard__token-legend.is-hidden{visibility:hidden}.flashcard__token-legend span{font-size:.72rem;font-weight:700}.flashcard__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(3rem,1fr));gap:.4rem;padding-top:.35rem;min-height:6.4rem;flex-shrink:0}.flashcard__options--four,.flashcard__options--two{grid-template-columns:repeat(2,minmax(0,1fr))}.flashcard__option{border:none;border-radius:.6rem;background:#f8fafc;color:#1e293b;text-align:center;font-size:.85rem;font-weight:700;padding:.5rem;min-height:0;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease}.flashcard__option:focus{outline:none}.flashcard__option:focus-visible{outline:2px solid #3b65b1;outline-offset:2px}.flashcard__option:active{transform:scale(.97)}.flashcard__option:disabled{cursor:default}.flashcard__option.is-selected{background:#e2e8f0;animation:option-press .18s ease-out}.flashcard__option.is-correct{background:#638f5e26;color:#166534;animation:option-settle-correct .26s ease-out}.flashcard__option.is-incorrect{background:#c6374b1a;color:#991b1b;animation:option-settle-wrong .26s ease-out}.flashcard__stats{margin-top:0;padding-top:.35rem;display:flex;flex-wrap:wrap;gap:.35rem .75rem;color:#94a3b8;font-size:.68rem;font-weight:600;min-height:1.2rem;align-items:center;flex-shrink:0}@media(max-width:360px){.flashcard__options--two{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:640px){.flashcard{height:auto;min-height:32rem;max-height:min(44rem,calc(100svh - var(--app-nav-height-desktop) - 2rem));width:min(100%,26rem);border:1px solid #e5e7eb;border-radius:1.25rem;box-shadow:0 8px 32px #0f172a0f;padding:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.flashcard__back,.flashcard__toggle{border:1px solid #e2e8f0;background:#fff}.flashcard__topbar{display:flex}.flashcard__counter{flex:1;text-align:left}.flashcard__back:hover,.flashcard__toggle:hover{background:#f8fafc}.flashcard__option{border:1px solid #e2e8f0;background:#fff}.flashcard__option.is-selected{border-color:#94a3b8;background:#f8fafc}.flashcard__option.is-correct{border-color:#638f5e;background:#638f5e1a}.flashcard__option.is-incorrect{border-color:#c6374b;background:#c6374b14}}.hangul-builder{display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:none;margin:0 auto;height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));padding:calc(.5rem + env(safe-area-inset-top)) 1rem calc(.75rem + env(safe-area-inset-bottom));background:transparent;overflow:hidden}.hangul-builder__topbar{display:grid;grid-template-columns:minmax(5.75rem,1fr) auto;align-items:center;gap:.5rem;margin-bottom:.35rem;flex-shrink:0}.hangul-builder__back,.hangul-builder__action,.hangul-builder__choice{font:inherit}.hangul-builder__back{grid-column:1;justify-self:start;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer}.hangul-builder__counter,.hangul-builder__eyebrow,.hangul-builder__hint,.hangul-builder__summary,.hangul-builder__correction-label{color:#475569}.hangul-builder__counter,.hangul-builder__eyebrow,.hangul-builder__correction-label{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600}.hangul-builder__content{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;text-align:center;gap:.35rem;padding:0;min-height:0;overflow:hidden}.hangul-builder__title,.hangul-builder__prompt{margin:0;color:#0f172a}.hangul-builder__prompt{font-size:clamp(1.8rem,8vw,2.8rem);font-weight:800;line-height:1.05;letter-spacing:-.03em;color:#334155}.hangul-builder__stage{width:100%;display:flex;flex-direction:column;gap:.5rem;padding:.6rem .75rem .7rem;border-radius:.85rem;background:#f8fafc;flex-shrink:0}.hangul-builder__preview{display:grid;place-items:center;min-height:4.5rem;width:100%;padding:.1rem .75rem;font-size:clamp(3rem,8vw,4.5rem);font-weight:800;color:#1e293b}.hangul-builder__stage.is-correct{background:#638f5e26}.hangul-builder__stage.is-correct .hangul-builder__preview{color:#166534}.hangul-builder__stage.is-incorrect{background:#c6374b1a}.hangul-builder__stage.is-incorrect .hangul-builder__preview{color:#991b1b}.hangul-builder__hint{margin:0 0 .35rem;color:#475569;font-size:.85rem}.hangul-builder__assembly{width:min(100%,12rem);display:flex;justify-content:center;gap:.85rem}.hangul-builder__assembly.is-three-slot{width:min(100%,18rem)}.hangul-builder__slot{flex:0 0 4rem;min-height:2.5rem;border:none;border-radius:0;background:transparent;color:#94a3b8;font:inherit;font-size:1.1rem;font-weight:700;cursor:pointer;border-bottom:2px solid #cbd5e1;padding:0 0 .25rem;display:flex;align-items:flex-end;justify-content:center}.hangul-builder__slot.is-filled{color:#1e293b;border-bottom-color:#64748b}.hangul-builder__slot-text{min-height:1.5rem;line-height:1.2}.hangul-builder__choices{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;gap:.5rem}.hangul-builder__choice{flex:0 0 calc(25% - .375rem);border:none;border-radius:.6rem;background:#f8fafc;color:#1e293b;text-align:center;font-size:.95rem;font-weight:700;padding:.55rem .5rem;min-height:2.75rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .08s ease,background-color .15s ease}.hangul-builder__choice.is-selected{background:#e2e8f0;animation:option-press .18s ease-out}.hangul-builder__choice:disabled{cursor:default}.hangul-builder__correction{width:100%;padding:.6rem .85rem;border-radius:.75rem;background:#fff;border:1px solid #e2e8f0;flex-shrink:0}.hangul-builder__correction-answer{margin:.35rem 0 0;font-size:1.15rem;color:#0f172a}.hangul-builder__footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;margin-top:auto;padding-top:.35rem}.hangul-builder__action{border:none;border-radius:999px;width:100%;padding:.65rem 1rem;background:#f1f5f9;color:#334155;font-weight:700}.hangul-builder__action:disabled{opacity:.45}.hangul-builder__empty{margin:0;color:#475569}@media(max-width:640px){.hangul-builder__topbar{grid-template-columns:minmax(5.25rem,1fr) auto}.hangul-builder__choices{gap:.4rem;flex:1;min-height:0;overflow-y:auto;align-content:flex-start}.hangul-builder__assembly{flex-wrap:wrap}.hangul-builder__assembly.is-two-slot{width:min(100%,9rem)}.hangul-builder__assembly.is-three-slot{width:min(100%,14rem)}.hangul-builder__slot{flex-basis:calc(50% - .35rem);min-width:4rem}.hangul-builder__choice{flex-basis:calc(50% - .2rem)}}@media(min-width:640px){.hangul-builder{height:auto;min-height:36rem;max-height:min(48rem,calc(100svh - var(--app-nav-height-desktop) - 2rem));width:min(100%,26rem);border:1px solid #e5e7eb;border-radius:1.25rem;box-shadow:0 8px 32px #0f172a0f;padding:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hangul-builder__back,.hangul-builder__action{border:1px solid #e2e8f0;background:#fff}.hangul-builder__back:hover,.hangul-builder__action:hover{background:#f8fafc}.hangul-builder__preview{background:transparent}.hangul-builder__stage{border:1px solid #e2e8f0;background:#fff}.hangul-builder__stage.is-correct{border-color:#638f5e;background:#638f5e1a}.hangul-builder__stage.is-incorrect{border-color:#c6374b;background:#c6374b14}.hangul-builder__choice{border:1px solid #e2e8f0;background:#fff}.hangul-builder__choice.is-selected{border-color:#94a3b8;background:#f8fafc}}.hangul-speed{--speed-accent-time: #387da6;--speed-accent-score: #c79e4c;--speed-accent-streak: #ab3871;display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:none;margin:0 auto;height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));padding:calc(.5rem + env(safe-area-inset-top)) 1rem calc(.75rem + env(safe-area-inset-bottom));background:transparent;color:#0f172a;overflow:hidden}.hangul-speed__topbar{display:flex;align-items:center;justify-content:flex-start;margin-bottom:.35rem;flex-shrink:0}.hangul-speed__back,.hangul-speed__option{font:inherit}.hangul-speed__back{border:none;border-radius:999px;padding:.35rem .6rem;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;cursor:pointer}.hangul-speed__stats{display:flex;flex-wrap:wrap;gap:.25rem .35rem;font-size:.68rem;font-weight:700;color:#475569;margin-bottom:.35rem;padding:.4rem;border-radius:.75rem;background:#f8fafcf2;flex-shrink:0}.hangul-speed__stats span{flex:1 1 0;justify-content:center;text-align:center;padding:.25rem .4rem;border-radius:999px;background:#f8fafc;border:1px solid #e2e8f0}.hangul-speed__stats span:nth-child(1){color:var(--speed-accent-time);background:#387da614}.hangul-speed__stats span:nth-child(2){color:#9a6b16;background:#c79e4c1a}.hangul-speed__stats span:nth-child(3){color:var(--speed-accent-streak);background:#ab38711a}.hangul-speed__content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:.35rem;padding:0;min-height:0}.hangul-speed__eyebrow,.hangul-speed__hint,.hangul-speed__summary-label{color:#64748b}.hangul-speed__eyebrow,.hangul-speed__summary-label{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600}.hangul-speed__title,.hangul-speed__prompt{margin:0}.hangul-speed__prompt{font-size:clamp(2.75rem,14vw,5rem);font-weight:800;color:#1e293b;line-height:1.05;letter-spacing:-.03em}.hangul-speed__hint{margin:0 0 .35rem;color:#475569;font-size:.85rem}.hangul-speed__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:minmax(3.5rem,1fr);gap:.75rem;padding-top:.35rem;min-height:3.5rem;flex-shrink:0}.hangul-speed__option{border:none;border-radius:.6rem;min-height:0;height:100%;padding:.5rem;background:#f8fafc;color:#1e293b;font-size:clamp(2rem,10vw,3.5rem);font-weight:800;display:flex;align-items:center;justify-content:center;transition:transform .08s ease,background-color .15s ease,color .15s ease;cursor:pointer;-webkit-tap-highlight-color:transparent}.hangul-speed__option.is-selected{background:#e2e8f0;animation:option-press .18s ease-out}.hangul-speed__option.is-correct{background:#638f5e26;color:#166534;animation:option-settle-correct .26s ease-out}.hangul-speed__option.is-incorrect{background:#c6374b1a;color:#991b1b;animation:option-settle-wrong .26s ease-out}.hangul-speed__option:focus{outline:none}.hangul-speed__option:focus-visible{outline:2px solid var(--speed-accent-time);outline-offset:2px}.hangul-speed__option:active{transform:scale(.97)}.hangul-speed__summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.hangul-speed__summary-card{display:flex;flex-direction:column;gap:.25rem;padding:.65rem .85rem;border-radius:.75rem;background:#fff;border:1px solid #e2e8f0}.hangul-speed__summary-value{font-size:1.35rem;color:#0f172a}.hangul-speed__summary-card:nth-child(1) .hangul-speed__summary-value{color:#9a6b16}.hangul-speed__summary-card:nth-child(2) .hangul-speed__summary-value{color:#638f5e}.hangul-speed__summary-card:nth-child(3) .hangul-speed__summary-value{color:var(--speed-accent-time)}.hangul-speed__summary-card:nth-child(4) .hangul-speed__summary-value{color:var(--speed-accent-streak)}.hangul-speed__empty{margin:0;color:#475569}@keyframes option-press{0%{transform:scale(1)}45%{transform:scale(.965)}to{transform:scale(1)}}@keyframes option-settle-correct{0%{transform:scale(.98)}55%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes option-settle-wrong{0%{transform:translate(0)}30%{transform:translate(-2px)}60%{transform:translate(2px)}to{transform:translate(0)}}@media(max-width:640px){.hangul-speed__summary-grid{grid-template-columns:1fr}.hangul-speed__options{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:640px){.hangul-speed{height:auto;min-height:32rem;max-height:min(44rem,calc(100svh - var(--app-nav-height-desktop) - 2rem));width:min(100%,26rem);border:1px solid #e5e7eb;border-radius:1.25rem;box-shadow:0 8px 32px #0f172a0f;padding:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hangul-speed__back{border:1px solid #e2e8f0;background:#fff}.hangul-speed__back:hover{background:#f8fafc}.hangul-speed__option{border:1px solid #e2e8f0;background:#fff}.hangul-speed__option.is-selected{border-color:#94a3b8;background:#f8fafc}.hangul-speed__option.is-correct{border-color:#638f5e;background:#638f5e1a}.hangul-speed__option.is-incorrect{border-color:#c6374b;background:#c6374b14}}.dashboard-scroll-layout{width:100%}.dashboard-sidebar{display:none}.dashboard-path{width:100%;padding:0}.learning-path-sections{width:100%;display:flex;flex-direction:column;gap:0}.learning-path-section{padding:1.25rem 1rem 1.5rem;background:linear-gradient(180deg,var(--section-prev, rgba(255, 255, 255, .5)) 0%,var(--section-current, rgba(255, 255, 255, .78)) 100%),#ffffffb8}.learning-path-section__header{position:relative;text-align:center;margin-bottom:.75rem}.unit-review-node{position:absolute;top:0;right:0;display:flex;align-items:center;gap:.35rem;border:none;border-radius:999px;background:#14b8a61f;color:#0d9488;padding:.4rem .65rem .4rem .5rem;font-size:.7rem;font-weight:700;cursor:pointer;transition:background-color .15s ease,transform .1s ease;-webkit-tap-highlight-color:transparent}.unit-review-node:hover{background:#14b8a62e;transform:translateY(-1px)}.unit-review-node:active{transform:translateY(0)}.unit-review-node__icon{width:1rem;height:1rem}.unit-review-node__label{text-transform:uppercase;letter-spacing:.04em}.learning-path-section__unit{display:block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:1}.learning-path-section__title{margin:.15rem 0 0;font-size:1.1rem;font-weight:800}.learning-path-list{width:100%;max-width:24rem;margin:0 auto;display:grid;gap:0}.learning-path-step{position:relative;min-height:8.6rem;display:flex;align-items:flex-start;justify-content:center}.learning-path-step__node-wrap{position:relative;width:100%;display:grid;justify-items:center;gap:.38rem;z-index:2}.learning-path-step__text{width:min(10.5rem,42vw);padding:.2rem 0;text-align:center;display:flex;align-items:center;justify-content:center;gap:.38rem}.learning-path-step__text p{margin:0;font-size:.72rem;line-height:1.2;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.learning-path-step__preview-toggle{border:1px solid #cbd5e1;border-radius:999px;background:#ffffffdb;color:#64748b;width:1rem;height:1rem;font-size:.62rem;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0}.learning-path-step__preview{position:absolute;top:3.2rem;width:min(11.5rem,72vw);border:1px solid #dbe2ea;border-radius:.7rem;background:#fffffff0;box-shadow:0 10px 20px #0f172a1a;padding:.48rem .56rem;color:#334155;font-size:.69rem;line-height:1.3;opacity:0;pointer-events:none;transform:translateY(2px);transition:opacity .14s ease,transform .14s ease}.learning-path-step__preview.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}.learning-path-step.side-left .learning-path-step__node-wrap{justify-items:start;padding-left:.8rem}.learning-path-step.side-left .learning-path-step__text{margin-left:2.3rem;text-align:left;justify-content:flex-start}.learning-path-step.side-left .learning-path-step__preview{left:2.3rem}.learning-path-step.side-right .learning-path-step__node-wrap{justify-items:end;padding-right:.8rem}.learning-path-step.side-right .learning-path-step__text{margin-right:2.3rem;text-align:right;justify-content:flex-end}.learning-path-step.side-right .learning-path-step__preview{right:2.3rem}.learning-path-step.side-center .learning-path-step__text{margin:0;text-align:center;justify-content:center}.learning-path-step.side-center .learning-path-step__preview{left:50%;transform:translate(-50%) translateY(2px)}.learning-path-step.side-center .learning-path-step__preview.is-open{transform:translate(-50%) translateY(0)}.learning-path-connector{position:absolute;left:50%;top:0;transform:translate(-50%);width:0;height:100%;z-index:1}.learning-path-connector__line{display:block;width:4px;height:100%;border-radius:999px;background:#cbd5e1}.learning-path-connector.is-active .learning-path-connector__line{background:#334155}.learning-path-node{--node-accent: #94a3b8;width:2.85rem;height:2.85rem;border-radius:999px;border:none;background:#fffffffa;display:grid;place-items:center;padding:0;box-shadow:0 0 0 3px #ffffffc7,0 8px 18px #0f172a1f,0 2px #0f172a38;transition:transform .1s ease,box-shadow .1s ease;position:relative}.learning-path-node:not([aria-disabled=true]):hover{transform:translateY(-1px);box-shadow:0 0 0 3px #ffffffe0,0 10px 22px #0f172a26,0 3px #0f172a3d}.learning-path-node:not([aria-disabled=true]):active{transform:translateY(1px);box-shadow:0 0 0 3px #ffffffc7,0 5px 12px #0f172a1f,0 1px #0f172a33}.learning-path-node.is-large{width:3.8rem;height:3.8rem}.learning-path-node__icon{width:1.1rem;height:1.1rem;color:#cbd5e1}.learning-path-node.is-large .learning-path-node__icon{width:1.4rem;height:1.4rem}.learning-path-node__badge{position:absolute;right:-.2rem;bottom:-.2rem;width:1rem;height:1rem;border-radius:999px;background:#16a34a;color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 1px #0f172a33}.learning-path-node__badge svg{width:.7rem;height:.7rem}.learning-path-node.is-locked{background:#f8fafcf5;box-shadow:0 0 0 3px #ffffffb8,0 6px 14px #0f172a0f,0 2px #0f172a1a}.learning-path-node.is-locked .learning-path-node__icon{color:#a8b4c4}.learning-path-node.is-available{background:#fff;box-shadow:0 0 0 3px #ffffffe0,0 10px 20px color-mix(in srgb,var(--node-accent) 12%,rgba(15,23,42,.08)),0 3px 0 0 var(--node-accent)}.learning-path-node.is-available:hover{box-shadow:0 0 0 3px #fffffff5,0 12px 24px color-mix(in srgb,var(--node-accent) 18%,rgba(15,23,42,.1)),0 4px 0 0 var(--node-accent)}.learning-path-node.is-available:active{box-shadow:0 0 0 3px #ffffffd6,0 6px 14px color-mix(in srgb,var(--node-accent) 12%,rgba(15,23,42,.08)),0 1px 0 0 var(--node-accent)}.learning-path-node.is-available .learning-path-node__icon{color:var(--node-accent)}.learning-path-node.is-current{background:var(--node-accent);box-shadow:0 0 0 4px #ffffffeb,0 12px 24px color-mix(in srgb,var(--node-accent) 28%,rgba(15,23,42,.12)),0 2px #0f172a59;animation:pulse-node 2s ease-in-out infinite}.learning-path-node.is-current .learning-path-node__icon{color:#fff}.learning-path-node.is-completed{background:#16a34a;box-shadow:0 0 0 4px #ffffffe6,0 10px 22px #15803d2e,0 2px #15803d;animation:completed-bob 2.5s ease-in-out infinite}.learning-path-node.is-completed .learning-path-node__icon{color:#fff}.learning-path-node.is-shaking{animation:locked-shake .34s ease-in-out}.learning-path-node[aria-disabled=true]{cursor:not-allowed}@keyframes pulse-node{0%,to{box-shadow:0 2px #0f172a59,0 0 color-mix(in srgb,var(--node-accent) 40%,transparent)}50%{box-shadow:0 2px #0f172a59,0 0 0 5px color-mix(in srgb,var(--node-accent) 25%,transparent)}}@keyframes completed-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes locked-shake{0%,to{transform:translate(0)}25%{transform:translate(-2px)}50%{transform:translate(2px)}75%{transform:translate(-1px)}}@media(min-width:900px){.dashboard-scroll-layout{width:min(100%,112rem);margin:0 auto;padding:1.5rem 1.5rem 3rem;display:grid;grid-template-columns:minmax(15rem,18rem) minmax(0,40rem) minmax(15rem,18rem);gap:1.5rem;align-items:start}.dashboard-sidebar{display:block;position:sticky;top:calc(var(--app-nav-height-desktop) + 1rem)}.dashboard-sidebar__panel{padding:1.2rem 1.15rem;border:1px solid rgba(226,232,240,.92);border-radius:1.5rem;background:linear-gradient(180deg,#fffffff5,#f8fafceb);box-shadow:0 18px 38px #0f172a12;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.dashboard-sidebar__panel--focus{background:radial-gradient(circle at top right,color-mix(in srgb,var(--section-current, #ffffff) 24%,transparent),transparent 38%),linear-gradient(180deg,#fffffffa,#f8fafcf2)}.dashboard-sidebar__eyebrow{display:inline-flex;align-items:center;padding:.35rem .65rem;border-radius:999px;background:#0f172a0f;color:#475569;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.dashboard-sidebar__title,.dashboard-sidebar__focus-title{display:block;margin:.9rem 0 0;color:#0f172a;font-size:1.9rem;line-height:.98;letter-spacing:-.03em}.dashboard-sidebar__focus-title{font-size:1.35rem;line-height:1.05}.dashboard-sidebar__copy{margin:.9rem 0 0;color:#475569;font-size:.95rem;line-height:1.6}.dashboard-sidebar__stat{margin-top:1.1rem;padding-top:1rem;border-top:1px solid rgba(203,213,225,.88)}.dashboard-sidebar__stat-label{display:block;color:#64748b;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.dashboard-sidebar__stat-value{display:block;margin-top:.45rem;color:#0f172a;font-size:2rem;line-height:1;letter-spacing:-.04em}.dashboard-sidebar__stat-copy{margin:.45rem 0 0;color:#64748b;font-size:.9rem;line-height:1.5}.dashboard-sidebar__status{display:inline-flex;align-items:center;margin-top:.85rem;border-radius:999px;padding:.38rem .7rem;font-size:.72rem;font-weight:800;text-transform:capitalize;letter-spacing:.05em}.dashboard-sidebar__status.is-completed{background:#16a34a24;color:#15803d}.dashboard-sidebar__status.is-current{background:#3b82f624;color:#1d4ed8}.dashboard-sidebar__status.is-available{background:#d9770624;color:#b45309}.dashboard-sidebar__status.is-locked{background:#64748b24;color:#475569}.dashboard-path{width:100%;margin:0;padding:0}.learning-path-section{padding:1.75rem 1.4rem 2rem;border:none;border-radius:0;box-shadow:none}.learning-path-sections{display:grid;grid-template-columns:minmax(0,1fr);gap:0;align-items:start;overflow:hidden;border-radius:1.75rem;box-shadow:0 18px 34px #0f172a0f}.learning-path-list{max-width:30rem}.learning-path-step{min-height:9.8rem}.learning-path-step__text{width:12.25rem}.learning-path-step__preview{width:min(13rem,100%)}}@media(min-width:1280px){.dashboard-scroll-layout{grid-template-columns:minmax(16rem,19rem) minmax(0,44rem) minmax(16rem,19rem);gap:2rem}.learning-path-section{padding-left:1.6rem;padding-right:1.6rem}.learning-path-list{max-width:32rem}}.dashboard-session-back{position:fixed;top:calc(.6rem + env(safe-area-inset-top));left:.75rem;z-index:12;border:1px solid #cbd5e1;border-radius:999px;background:#ffffffd1;color:#334155;font-size:.8rem;font-weight:700;padding:.45rem .7rem}@media(min-width:900px){.dashboard-session-back{top:calc(var(--app-nav-height-desktop) + .6rem);left:max(1rem,calc((100vw - 28rem)/2))}}.dashboard-result{position:relative;width:100%;min-height:calc(100dvh - var(--app-nav-height-mobile));padding:calc(1rem + env(safe-area-inset-top)) 1rem calc(1rem + env(safe-area-inset-bottom));display:grid;grid-template-rows:1fr auto;align-items:center;justify-items:center;overflow:hidden}.dashboard-result__content{text-align:center;z-index:2;padding:1.1rem 1rem;display:grid;gap:.3rem}.dashboard-result__content h2{margin:0;font-size:clamp(2.4rem,14vw,4rem);line-height:1;letter-spacing:-.03em}.dashboard-result__content p{margin:.55rem 0 0;color:#475569;font-size:1rem}.dashboard-result__actions{width:min(100%,28rem);margin-bottom:.6rem;display:grid;grid-template-columns:1fr 1fr;gap:.6rem;z-index:2}.dashboard-result__actions button{border:1px solid #cbd5e1;border-radius:.8rem;background:#ffffffeb;color:#0f172a;font-weight:700;padding:.76rem .6rem}@media(min-width:900px){.dashboard-result{min-height:calc(100dvh - var(--app-nav-height-desktop))}.dashboard-result__actions{margin-bottom:1.2rem;max-width:24rem}}.dashboard-result.is-celebrating .dashboard-result__ring{position:absolute;left:50%;top:50%;width:min(64vw,22rem);aspect-ratio:1 / 1;transform:translate(-50%,-50%);border-radius:999px;border:3px solid rgba(22,163,74,.58);animation:checkpoint-ring 1s ease-out forwards;pointer-events:none;z-index:2}.dashboard-result__confetti{position:absolute;width:.55rem;height:1rem;border-radius:2px;opacity:0;z-index:3}.dashboard-result.is-celebrating .dashboard-result__confetti{animation:confetti-fall 2.1s cubic-bezier(.22,.61,.36,1) forwards}.dashboard-result__confetti.confetti-1{left:8%;top:-6%;background:#eab308}.dashboard-result__confetti.confetti-2{left:20%;top:-8%;background:#16a34a;animation-delay:.04s}.dashboard-result__confetti.confetti-3{left:34%;top:-7%;background:#3b82f6;animation-delay:.08s}.dashboard-result__confetti.confetti-4{left:48%;top:-9%;background:#a855f7;animation-delay:.03s}.dashboard-result__confetti.confetti-5{left:62%;top:-6%;background:#ef4444;animation-delay:.06s}.dashboard-result__confetti.confetti-6{left:74%;top:-8%;background:#06b6d4;animation-delay:.11s}.dashboard-result__confetti.confetti-7{left:86%;top:-7%;background:#f97316;animation-delay:.15s}.dashboard-result__confetti.confetti-8{left:94%;top:-5%;background:#22c55e;animation-delay:.1s}@keyframes checkpoint-ring{0%{opacity:.9;transform:translate(-50%,-50%) scale(.95)}to{opacity:0;transform:translate(-50%,-50%) scale(1.08)}}@keyframes confetti-fall{0%{opacity:0;transform:translateY(-10px) rotate(0)}15%{opacity:1}to{opacity:0;transform:translateY(95dvh) rotate(450deg)}}.dashboard-path-celebration{pointer-events:none;position:fixed;inset:0;background:radial-gradient(circle at 18% 22%,rgba(234,179,8,.26),transparent 20%),radial-gradient(circle at 76% 18%,rgba(34,197,94,.22),transparent 20%),radial-gradient(circle at 52% 72%,rgba(59,130,246,.18),transparent 22%);animation:path-celebrate-fade 1.2s ease-out forwards;z-index:3}@keyframes path-celebrate-fade{0%{opacity:.9}to{opacity:0}}.dashboard-test-out-banner{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:1.25rem 1rem;margin-bottom:.75rem;background:linear-gradient(135deg,#eef2ff,#e0e7ff);border-radius:.75rem;text-align:center}.dashboard-test-out-banner p{margin:0;font-size:.9375rem;font-weight:500;color:#4338ca}.dashboard-test-out-banner button{padding:.625rem 1.25rem;font-size:.875rem;font-weight:600;color:#fff;background:#4f46e5;border:none;border-radius:.5rem;cursor:pointer;transition:background .15s,transform .1s}.dashboard-test-out-banner button:hover{background:#4338ca}.dashboard-test-out-banner button:active{transform:scale(.98)}.mixed-review{width:100%;max-width:none;background:transparent;height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));display:flex;flex-direction:column;padding:calc(.5rem + env(safe-area-inset-top)) 1rem calc(.75rem + env(safe-area-inset-bottom));overflow:hidden}.mixed-review__topbar{display:grid;grid-template-columns:minmax(5.75rem,1fr) auto minmax(5.75rem,1fr);align-items:center;gap:.5rem;margin-bottom:.35rem;flex-shrink:0}.mixed-review__back{grid-column:1;justify-self:start;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.mixed-review__back:active{background:#e2e8f0}.mixed-review__counter{grid-column:2;justify-self:center;text-align:center;font-size:.72rem;color:#94a3b8;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.mixed-review__toggle{grid-column:3;justify-self:end;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;transition:background-color .15s ease}.mixed-review__toggle:active{background:#e2e8f0}.mixed-review__content{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;text-align:center;padding:0;min-height:0;overflow:hidden}.mixed-review__content--finished{gap:.5rem}.mixed-review__mode-label{margin:0;padding:.25rem .6rem;border-radius:999px;background:#14b8a61f;color:#0d9488;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.mixed-review__prompt{margin:.25rem 0 0;font-size:clamp(2.75rem,14vw,5rem);font-weight:800;line-height:1;letter-spacing:-.03em}.mixed-review__prompt--sentence{font-size:clamp(1.5rem,7vw,2.4rem);line-height:1.15}.mixed-review__prompt .has-leading-gap{margin-left:.22em}.mixed-review__token{margin:.2rem 0 .35rem;font-size:.82rem;font-weight:700}.mixed-review__question{margin:0 0 .35rem;color:#475569;font-size:.85rem}.mixed-review__score{margin:0;font-size:clamp(2rem,12vw,3rem);font-weight:800;color:#0f172a}.mixed-review__accuracy{margin:0;font-size:.95rem;color:#64748b;font-weight:600}.mixed-review__reading-passage{margin:.45rem 0;padding:.6rem;background:#f8fafc;border-radius:.6rem;font-size:clamp(1.1rem,5vw,1.5rem);font-weight:700;line-height:1.35;width:100%}.mixed-review__reading-translation{margin:0 0 .5rem;padding:.5rem .75rem;border:1px dashed #e2e8f0;border-radius:.5rem;background:transparent;color:#64748b;font-size:.85rem}.mixed-review__reading-progress{margin:0 0 .35rem;font-size:.72rem;color:#94a3b8;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.mixed-review__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(3rem,1fr));gap:.4rem;padding-top:.35rem;min-height:6.4rem;flex-shrink:0}.mixed-review__options--two{grid-template-columns:repeat(2,minmax(0,1fr))}.mixed-review__option{border:none;border-radius:.6rem;background:#f8fafc;color:#1e293b;text-align:center;font-size:.85rem;font-weight:700;padding:.5rem;min-height:0;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease}.mixed-review__option:focus{outline:none}.mixed-review__option:focus-visible{outline:2px solid #0d9488;outline-offset:2px}.mixed-review__option:active{transform:scale(.97)}.mixed-review__option:disabled{cursor:default}.mixed-review__option.is-selected{background:#e2e8f0;animation:mixed-option-press .18s ease-out}.mixed-review__option.is-correct{background:#638f5e26;color:#166534;animation:mixed-option-settle-correct .26s ease-out}.mixed-review__option.is-incorrect{background:#c6374b1a;color:#991b1b;animation:mixed-option-settle-wrong .26s ease-out}.mixed-review__answer{width:100%;min-height:3rem;max-height:4.5rem;margin-top:.45rem;border:2px dashed #e2e8f0;border-radius:.6rem;background:transparent;padding:.45rem;display:flex;flex-wrap:wrap;align-content:flex-start;gap:.35rem;overflow-y:auto;flex-shrink:0}.mixed-review__placeholder{margin:auto;color:#94a3b8;font-size:.84rem}.mixed-review__answer-token{border:none;border-radius:.4rem;background:#f1f5f9;color:#1e293b;font-size:.8rem;font-weight:700;padding:.3rem .45rem}.mixed-review__sentence-footer{margin-top:auto;padding-top:.5rem;flex-shrink:0}.mixed-review__bank{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;max-height:5.5rem;overflow-y:auto}.mixed-review__bank-word{border:none;border-radius:.55rem;background:#f8fafc;color:#1e293b;min-height:2.25rem;padding:.4rem .5rem;font-size:.85rem;font-weight:700;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease}.mixed-review__bank-word:active{transform:scale(.97);background:#e2e8f0}.mixed-review__bank-word.is-used{opacity:.35;background:#f1f5f9}.mixed-review__confirm{width:100%;margin-top:.45rem;border:0;border-radius:.55rem;padding:.65rem .85rem;background:linear-gradient(135deg,#0d9488,#14b8a6);color:#fff;font-size:.9rem;font-weight:700;cursor:pointer;transition:transform .1s ease,box-shadow .15s ease}.mixed-review__confirm:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0d948840}.mixed-review__confirm:active{transform:translateY(0)}.mixed-review__confirm:disabled{background:#cbd5e1;cursor:not-allowed;transform:none;box-shadow:none}.mixed-review__result{min-height:1.3rem;margin:.45rem 0 0;font-size:.84rem;font-weight:700;opacity:0;text-align:center}.mixed-review__result.is-visible{opacity:1}.mixed-review__result.is-good{color:#638f5e}.mixed-review__result.is-bad{color:#c6374b}.mixed-review__token-legend{display:flex;flex-wrap:wrap;gap:.35rem .65rem;margin:.5rem 0;min-height:1.35rem;align-items:flex-start;justify-content:center}.mixed-review__token-legend.is-hidden{visibility:hidden}.mixed-review__token-legend span{font-size:.72rem;font-weight:700}@keyframes mixed-option-press{0%{transform:scale(1)}45%{transform:scale(.965)}to{transform:scale(1)}}@keyframes mixed-option-settle-correct{0%{transform:scale(.98)}55%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes mixed-option-settle-wrong{0%{transform:translate(0)}30%{transform:translate(-2px)}60%{transform:translate(2px)}to{transform:translate(0)}}@media(min-width:640px){.mixed-review__topbar{display:flex}.mixed-review__counter{flex:1;text-align:left}.mixed-review{min-height:44rem;max-height:52rem;width:min(100%,26rem);border:1px solid #e5e7eb;border-radius:1.25rem;box-shadow:0 8px 32px #0f172a0f;padding:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.mixed-review__back,.mixed-review__toggle{border:1px solid #e2e8f0;background:#fff}.mixed-review__back:hover,.mixed-review__toggle:hover{background:#f8fafc}.mixed-review__option{border:1px solid #e2e8f0;background:#fff}.mixed-review__option.is-selected{border-color:#94a3b8;background:#f8fafc}.mixed-review__option.is-correct{border-color:#638f5e;background:#638f5e1a}.mixed-review__option.is-incorrect{border-color:#c6374b;background:#c6374b14}.mixed-review__answer{background:#ffffff80}.mixed-review__answer-token,.mixed-review__bank-word{border:1px solid #e2e8f0;background:#fff}}.primer{width:100%;max-width:none;background:transparent;min-height:calc(100dvh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));display:flex;flex-direction:column;padding:calc(.75rem + env(safe-area-inset-top)) 1.25rem calc(1rem + env(safe-area-inset-bottom))}.primer__topbar{display:grid;grid-template-columns:minmax(5.75rem,1fr) auto minmax(5.75rem,1fr);align-items:center;gap:.5rem;margin-bottom:.5rem}.primer__back{grid-column:1;justify-self:start;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.primer__back:active{background:#e2e8f0}.primer__counter{grid-column:2;justify-self:center;text-align:center;font-size:.72rem;color:#94a3b8;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.primer__toggle{grid-column:3;justify-self:end;border:none;background:#f1f5f9;color:#64748b;border-radius:999px;padding:.35rem .6rem;font-size:.72rem;font-weight:700;cursor:pointer;transition:background-color .15s ease}.primer__toggle:active{background:#e2e8f0}.primer__progress{height:4px;background:#e2e8f0;border-radius:2px;margin-bottom:1rem;overflow:hidden}.primer__progress-bar{height:100%;background:#3b65b1;border-radius:2px;transition:width .3s ease}.primer__header{margin-bottom:1.25rem}.primer__title{margin:0;font-size:1.5rem;font-weight:800;color:#1e293b;line-height:1.2}.primer__content{flex:1;display:flex;flex-direction:column;gap:1rem;overflow-y:auto;padding-bottom:1rem}.primer__heading{margin:.5rem 0 0;font-size:1.1rem;font-weight:700;color:#334155}.primer__paragraph{margin:0;font-size:.95rem;color:#475569;line-height:1.6}.primer__example{background:#f8fafc;border-radius:.75rem;padding:1rem;border-left:4px solid #3b65b1}.primer__example-korean{margin:0 0 .25rem;font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.3}.primer__example-romanization{margin:0 0 .35rem;font-size:.85rem;color:#64748b;font-style:italic}.primer__example-english{margin:0;font-size:.92rem;color:#475569;font-weight:500}.primer__callout{border-radius:.75rem;padding:.85rem 1rem}.primer__callout--tip{background:#638f5e1a;border-left:4px solid #638f5e}.primer__callout--note{background:#3b65b11a;border-left:4px solid #3b65b1}.primer__callout--warning{background:#c79e4c26;border-left:4px solid #c79e4c}.primer__callout-label{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem}.primer__callout--tip .primer__callout-label{color:#638f5e}.primer__callout--note .primer__callout-label{color:#3b65b1}.primer__callout--warning .primer__callout-label{color:#c79e4c}.primer__callout-text{margin:0;font-size:.9rem;color:#475569;line-height:1.5}.primer__comparison{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.primer__comparison-item{background:#f8fafc;border-radius:.75rem;padding:.85rem;text-align:center}.primer__comparison-label{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;margin-bottom:.5rem}.primer__comparison-korean{margin:0 0 .25rem;font-size:1.25rem;font-weight:700;color:#1e293b}.primer__comparison-english{margin:0;font-size:.85rem;color:#64748b}.primer__character{background:#f8fafc;border-radius:.75rem;padding:1.25rem;text-align:center;position:relative}.primer__character--vowel{border-left:4px solid #ce6045}.primer__character--consonant{border-left:4px solid #3b65b1}.primer__character-badge{position:absolute;top:.75rem;right:.75rem;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.2rem .5rem;border-radius:999px}.primer__character--vowel .primer__character-badge{background:#ce604526;color:#ce6045}.primer__character--consonant .primer__character-badge{background:#3b65b126;color:#3b65b1}.primer__character-char{margin:0;font-size:5rem;font-weight:700;color:#1e293b;line-height:1}.primer__character-romanization{margin:.5rem 0 .25rem;font-size:1.25rem;font-weight:600;color:#475569}.primer__character-sound{margin:0;font-size:.9rem;color:#64748b;font-style:italic}.primer__syllable{background:#f8fafc;border-radius:.75rem;padding:1.25rem;text-align:center;border-left:4px solid #638f5e}.primer__syllable-parts{display:flex;align-items:center;justify-content:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.primer__syllable-part{font-size:2.5rem;font-weight:700;color:#64748b}.primer__syllable-plus,.primer__syllable-equals{font-size:1.5rem;font-weight:700;color:#94a3b8}.primer__syllable-result{font-size:3rem;font-weight:700;color:#1e293b}.primer__syllable-romanization{margin:0 0 .25rem;font-size:1.1rem;font-weight:600;color:#475569}.primer__syllable-english{margin:0;font-size:.9rem;color:#64748b}.primer__quiz{background:#f1f5f9;border-radius:.75rem;padding:1rem}.primer__quiz-question{margin:0 0 .75rem;font-size:.95rem;font-weight:600;color:#334155}.primer__quiz-options{display:flex;flex-direction:column;gap:.5rem}.primer__quiz-option{border:none;border-radius:.5rem;background:#fff;color:#1e293b;text-align:left;font-size:.9rem;font-weight:500;padding:.75rem 1rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease}.primer__quiz-option:focus{outline:none}.primer__quiz-option:focus-visible{outline:2px solid #3b65b1;outline-offset:2px}.primer__quiz-option:active{transform:scale(.98)}.primer__quiz-option:disabled{cursor:default}.primer__quiz-option.is-selected{background:#e2e8f0}.primer__quiz-option.is-correct{background:#638f5e26;color:#166534}.primer__quiz-option.is-incorrect{background:#c6374b1a;color:#991b1b}.primer__footer{display:flex;gap:.75rem;padding-top:1rem;margin-top:auto}.primer__nav-button{flex:1;border:none;border-radius:.75rem;font-size:.95rem;font-weight:700;padding:.9rem 1rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease,opacity .15s ease}.primer__nav-button:active{transform:scale(.98)}.primer__nav-button:disabled{opacity:.4;cursor:not-allowed}.primer__nav-button--prev{background:#f1f5f9;color:#64748b}.primer__nav-button--prev:active:not(:disabled){background:#e2e8f0}.primer__nav-button--next{background:#3b65b1;color:#fff}.primer__nav-button--next:active:not(:disabled){background:#2f5299}@media(min-width:640px){.primer__topbar{display:flex}.primer__counter{flex:1;text-align:left}.primer{min-height:44rem;max-height:52rem;width:min(100%,32rem);border:1px solid #e5e7eb;border-radius:1.25rem;box-shadow:0 8px 32px #0f172a0f;padding:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.primer__back,.primer__toggle{border:1px solid #e2e8f0;background:#fff}.primer__back:hover,.primer__toggle:hover{background:#f8fafc}.primer__example{border:1px solid #e2e8f0;border-left:4px solid #3b65b1}.primer__callout{border:1px solid transparent}.primer__callout--tip{border-color:#638f5e33}.primer__callout--note{border-color:#3b65b133}.primer__callout--warning{border-color:#c79e4c4d}.primer__comparison-item,.primer__character{border:1px solid #e2e8f0}.primer__character--vowel{border-left:4px solid #ce6045}.primer__character--consonant{border-left:4px solid #3b65b1}.primer__syllable{border:1px solid #e2e8f0;border-left:4px solid #638f5e}.primer__quiz,.primer__quiz-option{border:1px solid #e2e8f0}.primer__quiz-option:hover:not(:disabled){background:#f8fafc}.primer__quiz-option.is-selected{border-color:#94a3b8}.primer__quiz-option.is-correct{border-color:#638f5e}.primer__quiz-option.is-incorrect{border-color:#c6374b}.primer__nav-button--prev{border:1px solid #e2e8f0;background:#fff}.primer__nav-button--prev:hover:not(:disabled){background:#f8fafc}.primer__nav-button--next:hover:not(:disabled){background:#2f5299}}.reading-comp{width:100%;max-width:none;background:transparent;min-height:calc(100dvh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));display:flex;flex-direction:column;padding:calc(.75rem + env(safe-area-inset-top)) 1.25rem calc(1rem + env(safe-area-inset-bottom))}.reading-comp__topbar{display:grid;grid-template-columns:minmax(5.75rem,1fr) auto minmax(5.75rem,1fr);align-items:center;gap:.5rem;margin-bottom:.75rem}.reading-comp__back{grid-column:1;justify-self:start;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.reading-comp__back:active{background:#e2e8f0}.reading-comp__counter{grid-column:2;justify-self:center;text-align:center;font-size:.72rem;color:#94a3b8;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.reading-comp__toggle{grid-column:3;justify-self:end;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;transition:background-color .15s ease}.reading-comp__toggle:active{background:#e2e8f0}.reading-comp__content{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:.4rem 0 .2rem}.reading-comp__content--finished{justify-content:center;gap:.5rem}.reading-comp__mode-label{margin:0;padding:.25rem .6rem;border-radius:999px;background:#7c3aed1f;color:#7c3aed;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.reading-comp__passage{margin:1rem 0;padding:1rem;background:#f8fafc;border-radius:.75rem;font-size:clamp(1.5rem,7vw,2.2rem);font-weight:700;line-height:1.4;width:100%}.reading-comp__token.has-leading-gap{margin-left:.22em}.reading-comp__token.is-highlighted{background:#7c3aed26;border-radius:.25rem;padding:.1em .15em}.reading-comp__translation-toggle{border:1px dashed #cbd5e1;border-radius:.5rem;background:transparent;color:#94a3b8;font-size:.85rem;padding:.5rem .75rem;cursor:pointer;transition:all .15s ease;margin-bottom:1rem}.reading-comp__translation-toggle:hover{border-color:#94a3b8}.reading-comp__translation-toggle.is-revealed{border-style:solid;border-color:#e2e8f0;background:#f8fafc;color:#475569}.reading-comp__question-area{width:100%;margin-top:auto}.reading-comp__question{margin:0 0 .75rem;color:#1e293b;font-size:1rem;font-weight:600}.reading-comp__options{display:grid;grid-template-columns:1fr;gap:.5rem}.reading-comp__option{border:none;border-radius:.7rem;background:#f8fafc;color:#1e293b;text-align:center;font-size:.92rem;font-weight:700;padding:.85rem .75rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease}.reading-comp__option:focus{outline:none}.reading-comp__option:focus-visible{outline:2px solid #7c3aed;outline-offset:2px}.reading-comp__option:active{transform:scale(.98)}.reading-comp__option:disabled{cursor:default}.reading-comp__option.is-selected{background:#e2e8f0;animation:reading-option-press .18s ease-out}.reading-comp__option.is-correct{background:#638f5e26;color:#166534;animation:reading-option-settle-correct .26s ease-out}.reading-comp__option.is-incorrect{background:#c6374b1a;color:#991b1b;animation:reading-option-settle-wrong .26s ease-out}.reading-comp__explanation{margin:.75rem 0 0;padding:.6rem .75rem;background:#7c3aed14;border-radius:.5rem;color:#5b21b6;font-size:.84rem;text-align:left}.reading-comp__score{margin:0;font-size:clamp(2.5rem,14vw,4rem);font-weight:800;color:#0f172a}.reading-comp__accuracy{margin:0;font-size:1.1rem;color:#64748b;font-weight:600}.reading-comp__token-legend{display:flex;flex-wrap:wrap;gap:.35rem .65rem;margin:.5rem 0;min-height:1.35rem;align-items:flex-start;justify-content:center}.reading-comp__token-legend.is-hidden{visibility:hidden}.reading-comp__token-legend span{font-size:.72rem;font-weight:700}@keyframes reading-option-press{0%{transform:scale(1)}45%{transform:scale(.965)}to{transform:scale(1)}}@keyframes reading-option-settle-correct{0%{transform:scale(.98)}55%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes reading-option-settle-wrong{0%{transform:translate(0)}30%{transform:translate(-2px)}60%{transform:translate(2px)}to{transform:translate(0)}}@media(min-width:640px){.reading-comp__topbar{display:flex}.reading-comp__counter{flex:1;text-align:left}.reading-comp{min-height:44rem;max-height:52rem;width:min(100%,26rem);border:1px solid #e5e7eb;border-radius:1.25rem;box-shadow:0 8px 32px #0f172a0f;padding:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.reading-comp__back,.reading-comp__toggle{border:1px solid #e2e8f0;background:#fff}.reading-comp__back:hover,.reading-comp__toggle:hover{background:#f8fafc}.reading-comp__passage{background:#fff;border:1px solid #e2e8f0}.reading-comp__option{border:1px solid #e2e8f0;background:#fff}.reading-comp__option.is-selected{border-color:#94a3b8;background:#f8fafc}.reading-comp__option.is-correct{border-color:#638f5e;background:#638f5e1a}.reading-comp__option.is-incorrect{border-color:#c6374b;background:#c6374b14}}.sentence-builder{width:100%;max-width:none;background:transparent;height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));display:flex;flex-direction:column;padding:calc(.5rem + env(safe-area-inset-top)) 1rem calc(.75rem + env(safe-area-inset-bottom));overflow:hidden}.sentence-builder__topbar{display:grid;grid-template-columns:minmax(5.75rem,1fr) auto minmax(5.75rem,1fr);align-items:center;gap:.5rem;margin-bottom:.35rem;flex-shrink:0}.sentence-builder__back{grid-column:1;justify-self:start;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.sentence-builder__back:active{background:#e2e8f0}.sentence-builder__counter{grid-column:2;justify-self:center;text-align:center;font-size:.72rem;color:#94a3b8;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.sentence-builder__toggle{grid-column:3;justify-self:end;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;transition:background-color .15s ease}.sentence-builder__toggle:active{background:#e2e8f0}.sentence-builder__content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;min-height:0;overflow:hidden}.sentence-builder__label{margin:0;color:#94a3b8;font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.sentence-builder__prompt{margin:.25rem 0 0;font-size:clamp(1.5rem,7vw,2.4rem);font-weight:800;line-height:1.15}.sentence-builder__prompt-token{display:inline-block}.sentence-builder__prompt-token.has-leading-gap{margin-left:.22em}.sentence-builder__token-legend{width:100%;margin:.35rem 0 .45rem;min-height:1.1rem;display:flex;flex-wrap:wrap;gap:.2rem .5rem;align-items:flex-start;justify-content:center}.sentence-builder__token-legend span{font-size:.72rem;font-weight:700}.sentence-builder__token-legend.is-hidden{visibility:hidden}.sentence-builder__answer{width:100%;min-height:3.5rem;max-height:5rem;border:2px dashed #e2e8f0;border-radius:.65rem;background:transparent;padding:.45rem;display:flex;flex-wrap:wrap;align-content:flex-start;gap:.35rem;transition:border-color .15s ease,background-color .15s ease;overflow-y:auto;flex-shrink:0}.sentence-builder__answer.is-correct{border-color:#638f5e;background:#638f5e14}.sentence-builder__answer.is-incorrect{border-color:#c6374b;background:#c6374b0f}.sentence-builder__placeholder{margin:auto;color:#94a3b8;font-size:.88rem}.sentence-builder__answer-token{border:none;border-radius:.4rem;background:#f1f5f9;color:#1e293b;font-size:.8rem;font-weight:700;padding:.3rem .45rem;transition:background-color .15s ease,color .15s ease}.sentence-builder__answer-token.is-correct{background:#638f5e2e;color:#166534}.sentence-builder__answer-token.is-incorrect{background:#c6374b24;color:#991b1b}.sentence-builder__correction{width:100%;margin-top:.45rem;padding:.5rem .65rem;border-radius:.6rem;background:#3b65b114;border:1px solid rgba(59,101,177,.16);text-align:left;flex-shrink:0}.sentence-builder__correction-label{display:block;margin-bottom:.3rem;color:#3b65b1;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.sentence-builder__correction-text{margin:0;color:#1e293b;font-size:.95rem;font-weight:700;line-height:1.45}.sentence-builder__footer{margin-top:auto;padding-top:.5rem;flex-shrink:0}.sentence-builder__bank{display:flex;flex-wrap:wrap;gap:.4rem;align-content:flex-start;justify-content:flex-start;max-height:6rem;overflow-y:auto}.sentence-builder__bank-word{flex:0 1 auto;border:none;border-radius:.55rem;background:#f8fafc;color:#1e293b;min-height:2.25rem;max-width:100%;padding:.4rem .65rem;font-size:.85rem;font-weight:700;text-align:center;white-space:normal;word-break:break-word;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease}.sentence-builder__bank-word:active{transform:scale(.97);background:#e2e8f0}.sentence-builder__bank-word.is-used{opacity:.35;background:#f1f5f9}.sentence-builder__confirm{width:100%;margin-top:.45rem;border:0;border-radius:.55rem;padding:.65rem .85rem;background:linear-gradient(135deg,#3b65b1,#387da6);color:#fff;font-size:.9rem;font-weight:700;cursor:pointer;transition:transform .1s ease,box-shadow .15s ease}.sentence-builder__confirm:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b65b140}.sentence-builder__confirm:active{transform:translateY(0)}.sentence-builder__confirm:disabled{background:#cbd5e1;cursor:not-allowed;transform:none;box-shadow:none}@media(min-width:640px){.sentence-builder__topbar{display:flex}.sentence-builder__counter{flex:1;text-align:left}.sentence-builder{height:auto;min-height:32rem;max-height:min(44rem,calc(100svh - var(--app-nav-height-desktop) - 2rem));width:min(100%,26rem);border:1px solid #e5e7eb;border-radius:1.25rem;box-shadow:0 8px 32px #0f172a0f;padding:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.sentence-builder__back,.sentence-builder__toggle{border:1px solid #e2e8f0;background:#fff}.sentence-builder__back:hover,.sentence-builder__toggle:hover{background:#f8fafc}.sentence-builder__answer{background:#ffffff80}.sentence-builder__answer-token,.sentence-builder__bank-word{border:1px solid #e2e8f0;background:#fff}}.landing-page{min-height:100dvh;background:#fff}.landing-nav{position:fixed;top:0;left:0;right:0;z-index:100;background:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid transparent;transform:translateY(-100%);transition:transform .3s ease,border-color .3s ease}.landing-nav--visible{transform:translateY(0);border-bottom-color:#e2e8f0}.landing-nav__inner{max-width:64rem;margin:0 auto;padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.landing-nav__logo{font-weight:900;font-size:1.125rem;letter-spacing:.03em}.landing-nav__links{display:flex;align-items:center;gap:1.5rem}.landing-nav__link{font-size:.875rem;font-weight:500;color:#475569;text-decoration:none;transition:color .15s ease}.landing-nav__link:hover{color:#0f172a;text-decoration:none}.landing-btn{display:inline-block;padding:.875rem 1.75rem;border-radius:.75rem;font-size:1rem;font-weight:600;text-decoration:none;transition:all .2s ease;cursor:pointer;border:none}.landing-btn--primary{background:linear-gradient(135deg,#c6374b,#3b65b1);color:#fff;box-shadow:0 4px 14px #c6374b4d}.landing-btn--primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #c6374b66;text-decoration:none}.landing-btn--secondary{background:#f1f5f9;color:#334155}.landing-btn--secondary:hover{background:#e2e8f0;text-decoration:none}.landing-btn--large{padding:1rem 2.5rem;font-size:1.125rem}.landing-btn--small{padding:.5rem 1rem;font-size:.875rem;border-radius:.5rem}.landing-hero{min-height:85vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1.5rem;text-align:center;background:linear-gradient(180deg,#fff,#f8fafc)}.landing-hero__content{max-width:36rem}.landing-hero__title{font-size:2.75rem;font-weight:800;line-height:1.15;margin:0 0 1.25rem;color:#0f172a}.landing-hero__title-accent{background:linear-gradient(135deg,#c6374b,#3b65b1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.landing-hero__subtitle{font-size:1.25rem;color:#475569;margin:0 0 2rem;line-height:1.5}.landing-hero__cta{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.landing-hero__visual{margin-top:3.5rem}.landing-hero__sentence{font-size:2.25rem;font-weight:700;display:flex;justify-content:center;gap:.125rem}.landing-hero__token{transition:transform .3s ease}.landing-hero__token:hover{transform:scale(1.1)}.landing-hero__translation{margin:.75rem 0 0;font-size:1rem;color:#64748b;font-style:italic}.landing-section{padding:5rem 1.5rem}.landing-section--alt{background:#f8fafc}.landing-section--everyday{background:linear-gradient(135deg,#fefce8,#fef3c7)}.landing-section--cta{background:linear-gradient(135deg,#0f172a,#1e293b);text-align:center}.landing-section__inner{max-width:56rem;margin:0 auto}.landing-section__title{font-size:2rem;font-weight:700;margin:0 0 1rem;color:#0f172a;text-align:center}.landing-section--cta .landing-section__title{color:#fff}.landing-section__description{font-size:1.125rem;color:#475569;text-align:center;margin:0 0 2.5rem;line-height:1.6}.landing-problem-solution{display:grid;gap:2rem}.landing-problem,.landing-solution{padding:1.5rem;border-radius:1rem;background:#fff;box-shadow:0 4px 12px #0f172a0d}.landing-problem p,.landing-solution p{margin:.75rem 0 0;font-size:1.125rem;line-height:1.6;color:#334155}.landing-label{display:inline-block;padding:.25rem .75rem;border-radius:999px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.landing-label--problem{background:#fee2e2;color:#b91c1c}.landing-label--solution{background:#dcfce7;color:#15803d}.landing-tokens__interactive{background:#fff;border-radius:1rem;padding:2rem;box-shadow:0 4px 12px #0f172a14;margin-bottom:2rem}.landing-tokens__toggle-wrap{display:flex;justify-content:center;margin-bottom:1.5rem}.landing-tokens__toggle{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem .5rem .5rem;border:1px solid #e2e8f0;border-radius:999px;background:#f8fafc;cursor:pointer;transition:all .2s ease}.landing-tokens__toggle:hover{background:#f1f5f9}.landing-tokens__toggle.is-active{border-color:#c6374b;background:linear-gradient(135deg,#c6374b14,#3b65b114)}.landing-tokens__toggle-track{width:2.5rem;height:1.5rem;background:#cbd5e1;border-radius:999px;position:relative;transition:background .2s ease}.landing-tokens__toggle.is-active .landing-tokens__toggle-track{background:linear-gradient(135deg,#c6374b,#3b65b1)}.landing-tokens__toggle-thumb{position:absolute;top:.2rem;left:.2rem;width:1.1rem;height:1.1rem;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;transition:transform .2s ease}.landing-tokens__toggle.is-active .landing-tokens__toggle-thumb{transform:translate(1rem)}.landing-tokens__toggle-label{font-size:.875rem;font-weight:600;color:#475569}.landing-tokens__sentence-demo{text-align:center}.landing-tokens__sentence-large{font-size:2rem;font-weight:700;margin:0 0 .75rem;line-height:1.4}.landing-tokens__sentence-large span{transition:color .3s ease}.landing-tokens__translation{font-size:1rem;color:#64748b;font-style:italic;margin:0}.landing-tokens__legend{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;transition:opacity .3s ease}.landing-tokens__legend.is-dimmed{opacity:.4}.landing-tokens__legend-item{display:flex;align-items:center;gap:.5rem}.landing-tokens__legend-dot{width:.75rem;height:.75rem;border-radius:50%;transition:background-color .3s ease}.landing-tokens__legend-label{font-size:.875rem;color:#475569}.landing-mid-cta{margin-top:2.5rem;text-align:center}.landing-builder{display:grid;gap:2rem;background:#fff;padding:2rem;border-radius:1rem;box-shadow:0 4px 12px #0f172a14}.landing-builder__mode{text-align:center}.landing-builder__direction{display:inline-block;padding:.375rem .875rem;border-radius:999px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:#f1f5f9;color:#475569;margin-bottom:1rem}.landing-builder__prompt{font-size:1.5rem;font-weight:600;margin-bottom:1rem}.landing-builder__prompt--english{color:#334155;font-style:italic}.landing-builder__answer{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.landing-builder__word{padding:.5rem 1rem;border-radius:.5rem;background:#f1f5f9;font-size:1rem;font-weight:500;color:#334155}.landing-builder__answer--korean .landing-builder__word{background:linear-gradient(135deg,#c6374b1f,#3b65b11f)}.landing-builder__divider{height:1px;background:#e2e8f0}.landing-path-track{position:relative;max-width:34rem;margin:0 auto 2rem;padding-left:.25rem}.landing-path-track:before{content:"";position:absolute;left:1.1rem;top:1.1rem;bottom:1.1rem;width:2px;background:linear-gradient(180deg,#16a34a 0% 12%,#e2e8f0 12%);border-radius:999px}.landing-path-unit{display:grid;grid-template-columns:2.25rem 1fr;gap:0 1rem;padding-bottom:1.25rem;position:relative}.landing-path-unit--last{padding-bottom:0}.landing-path-unit__node{--ucolor: #94a3b8;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:.8rem;flex-shrink:0;position:relative;z-index:1;line-height:1}.landing-path-unit__node--done{background:#16a34a;box-shadow:0 2px #15803d;color:#fff}.landing-path-unit__node--done svg{width:1rem;height:1rem}.landing-path-unit__node--active{background:var(--ucolor);box-shadow:0 2px #0f172a33;color:#fff}.landing-path-unit__node--locked{background:#f1f5f9;box-shadow:0 2px #e2e8f0;color:#94a3b8;border:1.5px solid #e2e8f0}.landing-path-unit__body{padding-top:.25rem}.landing-path-unit__body--locked .landing-path-unit__name{color:#94a3b8}.landing-path-unit__body--locked .landing-path-unit__goal{color:#cbd5e1}.landing-path-unit__name{font-size:.95rem;font-weight:700;color:#0f172a;margin:0 0 .2rem;line-height:1.3}.landing-path-unit__goal{font-size:.875rem;color:#475569;margin:0 0 .5rem;line-height:1.4}.landing-path-unit__tags{display:flex;flex-wrap:wrap;gap:.3rem}.landing-path-unit__tags--locked .landing-path-unit__tag{background:#f8fafc;color:#cbd5e1;border-color:#f1f5f9}.landing-path-unit__tag{font-size:.72rem;font-weight:600;padding:.2rem .5rem;border-radius:999px;background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;letter-spacing:.01em}.landing-path-track-wrap{position:relative;margin-bottom:.5rem}.landing-path-track-wrap:after{content:"";position:absolute;bottom:0;left:0;right:0;height:7rem;background:linear-gradient(to bottom,transparent,#ffffff);pointer-events:none}.landing-path-unit--ghost{opacity:.45}.landing-path-unit--ghost-2{opacity:.25}.landing-path-unit--ghost-3{opacity:.12}.landing-path-unit__ghost-bar{background:#e2e8f0;border-radius:4px;margin-bottom:.4rem;height:.7rem}.landing-path-unit__ghost-bar--lg{width:58%}.landing-path-unit__ghost-bar--md{width:75%;height:.6rem}.landing-path-unit__ghost-bar--sm{width:45%;height:.55rem}.landing-path-more{display:flex;flex-direction:column;align-items:center;gap:.35rem;margin-bottom:2rem}.landing-path-more__dot{display:block;width:4px;height:4px;border-radius:50%;background:#cbd5e1}.landing-path-more__text{font-size:.8rem;color:#94a3b8;font-weight:500;margin:.25rem 0 0;letter-spacing:.01em}.landing-path-engine{background:#0f172a;border-radius:1rem;padding:1.5rem;margin-bottom:1.5rem}.landing-path-engine__title{font-size:1rem;font-weight:700;color:#fff;margin:0 0 .5rem;line-height:1.4}.landing-path-engine__body{font-size:.9rem;color:#94a3b8;line-height:1.6;margin:0}.landing-path-engine__example{margin-top:1rem;padding:.75rem 1rem;background:#ffffff0f;border-radius:.5rem;font-size:1rem;font-weight:600;line-height:1.5}.landing-path-engine__example-gloss{font-size:.8rem;font-weight:400;color:#64748b;display:block;margin-top:.25rem}.landing-path__note{text-align:center;font-size:.9375rem;color:#64748b;margin:0 0 .25rem}.landing-daily{display:flex;justify-content:center;margin-bottom:2rem}.landing-daily__card{background:#fff;padding:1.5rem 2rem;border-radius:1rem;box-shadow:0 4px 12px #0f172a14;text-align:center;max-width:20rem;width:100%}.landing-daily__badge{display:inline-block;padding:.25rem .75rem;border-radius:999px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:linear-gradient(135deg,#c6374b,#3b65b1);color:#fff;margin-bottom:1rem}.landing-daily__content{display:flex;flex-direction:column;align-items:center;gap:.25rem;margin-bottom:1.25rem}.landing-daily__korean{font-size:2.5rem;font-weight:700;line-height:1.2}.landing-daily__romanization{font-size:.875rem;color:#64748b;font-style:italic}.landing-daily__english{font-size:1.125rem;font-weight:600;color:#334155}.landing-daily__example{font-size:1.25rem;font-weight:600;margin:0 0 .375rem;line-height:1.4}.landing-daily__translation{font-size:.875rem;color:#64748b;font-style:italic;margin:0}.landing-everyday__pitch{text-align:center;font-size:1rem;color:#78716c;line-height:1.6;max-width:32rem;margin:0 auto}.landing-focus{display:grid;gap:1.5rem;margin-bottom:2rem}.landing-focus__pillar{padding:1.5rem;border-radius:1rem;background:#f8fafc;text-align:center}.landing-focus__icon{font-size:1.5rem;display:block;margin-bottom:.75rem}.landing-focus__pillar h3{margin:0 0 .5rem;font-size:1.125rem;font-weight:700;color:#0f172a}.landing-focus__pillar p{margin:0;font-size:.9375rem;color:#475569;line-height:1.5}.landing-focus__note{text-align:center;font-size:1rem;color:#64748b;line-height:1.6;margin:0}.landing-faq{display:flex;flex-direction:column;gap:1rem;text-align:left}.landing-faq__item{background:#fff;border-radius:.875rem;padding:1.25rem 1.5rem;box-shadow:0 2px 8px #0f172a0d}.landing-faq__question{font-size:1rem;font-weight:700;color:#0f172a;margin:0 0 .5rem}.landing-faq__answer p{font-size:.9375rem;color:#475569;line-height:1.6;margin:0}.landing-cta__title{font-size:2rem;font-weight:700;color:#fff;margin:0 0 2rem}.landing-cta__buttons{margin-bottom:1.5rem}.landing-cta__login{color:#94a3b8;font-size:.9375rem;margin:0}.landing-cta__login a{color:#fff;text-decoration:underline}.landing-footer{padding:2rem;text-align:center;background:#0f172a;border-top:1px solid #1e293b}.landing-footer p{margin:0;color:#64748b;font-size:.875rem}.landing-footer__tagline{margin-top:.375rem!important;font-size:.8rem!important;color:#475569!important}@media(max-width:479px){.landing-nav__link{display:none}.landing-hero{min-height:auto;padding:4rem 1rem 3rem}.landing-hero__title{font-size:2rem}.landing-hero__subtitle{font-size:1rem}.landing-hero__sentence{font-size:1.5rem}.landing-section{padding:3rem 1rem}.landing-section__title{font-size:1.5rem}.landing-section__description{font-size:1rem}.landing-tokens__interactive{padding:1.25rem 1rem}.landing-tokens__sentence-large{font-size:1.1rem;line-height:1.8}.landing-tokens__legend{gap:.5rem .75rem}.landing-tokens__legend-label{font-size:.75rem}.landing-daily__card{padding:1.25rem 1.5rem}.landing-daily__korean{font-size:2rem}.landing-daily__example,.landing-builder__prompt{font-size:1.1rem}.landing-builder__word{padding:.4rem .75rem;font-size:.875rem}}@media(min-width:480px)and (max-width:639px){.landing-nav__link{display:none}.landing-tokens__sentence-large{font-size:1.35rem;line-height:1.6}}@media(min-width:640px){.landing-hero__title{font-size:3.5rem}.landing-hero__sentence{font-size:2.75rem}.landing-problem-solution{grid-template-columns:1fr 1fr}.landing-focus{grid-template-columns:repeat(3,1fr)}.landing-builder{grid-template-columns:1fr auto 1fr;align-items:center}.landing-builder__divider{width:1px;height:100%}.landing-tokens__sentence-large{font-size:1.75rem}}@media(min-width:900px){.landing-section{padding:6rem 2rem}.landing-section__title{font-size:2.5rem}.landing-hero{min-height:90vh}.landing-hero__title{font-size:4rem}.landing-tokens__sentence-large{font-size:2rem}}@media(min-width:1100px){.landing-tokens__sentence-large{font-size:2.25rem}}.daily-page{min-height:100dvh;padding:1rem 1rem calc(var(--app-nav-height-mobile) + 2rem);background:#f8fafc}.daily-layout{display:block}.daily-layout__main,.daily-layout__side{min-width:0}.daily-header{text-align:center;margin-bottom:1.5rem}.daily-header__title{font-size:1.5rem;font-weight:700;color:#0f172a;margin:0 0 .25rem}.daily-header__theme{display:inline-block;padding:.25rem .75rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:linear-gradient(135deg,#c79e4c,#ce6045);color:#fff}.daily-card{background:#fff;border-radius:1rem;padding:1.5rem;margin-bottom:1.25rem;box-shadow:0 4px 12px #0f172a14;text-align:center}.daily-card__badge{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:#f1f5f9;color:#64748b;margin-bottom:1rem}.daily-card__word{font-size:3rem;font-weight:700;line-height:1.1;margin-bottom:.25rem}.daily-card__romanization{font-size:.9rem;color:#64748b;font-style:italic;margin-bottom:.125rem}.daily-card__english{font-size:1.25rem;font-weight:600;color:#334155}.daily-card__divider{height:1px;background:#e2e8f0;margin:1.25rem 0}.daily-card__example{font-size:1.35rem;font-weight:600;margin:0 0 .375rem;line-height:1.4}.daily-card__translation{font-size:.9rem;color:#64748b;font-style:italic;margin:0 0 1.25rem}.daily-card__btn{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;border:none;border-radius:.75rem;font-size:1rem;font-weight:600;cursor:pointer;background:linear-gradient(135deg,#c79e4c,#ce6045);color:#fff;box-shadow:0 2px 8px #ce60454d;transition:transform .15s ease,box-shadow .15s ease}.daily-card__btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #ce604566}.daily-card__btn:active{transform:translateY(0)}.daily-card__btn--secondary{background:#fff;color:#334155;box-shadow:inset 0 0 0 1px #cbd5e1}.daily-card__btn--secondary:hover{box-shadow:inset 0 0 0 1px #94a3b8,0 4px 12px #0f172a14}.daily-card__complete{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:999px;font-size:.9rem;font-weight:600;background:#dcfce7;color:#16a34a}.daily-card__complete svg{width:1.1rem;height:1.1rem}.daily-card__notice{margin:1rem 0 0;font-size:.92rem;font-weight:600;color:#15803d}.daily-card__actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.75rem;margin-top:1.25rem}.daily-teach-grid{display:grid;gap:.85rem;margin-top:1.25rem}.daily-teach-card{display:grid;align-content:start;gap:.45rem;min-height:8.25rem;padding:1rem;border-radius:.95rem;background:#f8fafc;box-shadow:inset 0 0 0 1px #e2e8f0;text-align:left}.daily-teach-card__eyebrow{margin:0;font-size:.76rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9a3412}.daily-teach-card__body{margin:0;font-size:.94rem;line-height:1.6;color:#334155}.daily-quiz{margin-top:1.5rem;padding:1.25rem;border-radius:1rem;background:linear-gradient(180deg,#f8fafcfa,#f1f5f9fa);border:1px solid #e2e8f0}.daily-quiz__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.daily-quiz__header-actions{display:flex;flex-direction:column;align-items:flex-end;gap:.75rem}.daily-quiz__eyebrow{margin:0 0 .2rem;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#c05621}.daily-quiz__title{margin:0;font-size:1rem;font-weight:700;color:#0f172a}.daily-quiz__steps{display:inline-flex;align-items:center;gap:.5rem}.daily-quiz__step{width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#e2e8f0;color:#64748b;font-size:.85rem;font-weight:700}.daily-quiz__step.is-active{background:linear-gradient(135deg,#c79e4c,#ce6045);color:#fff}.daily-quiz__step.is-complete{background:#dcfce7;color:#15803d}.daily-quiz__panel{display:grid;gap:.9rem}.daily-quiz__prompt{margin:0;font-size:.95rem;font-weight:600;color:#334155}.daily-quiz__translation{margin:-.35rem 0 0;font-size:.95rem;color:#64748b;font-style:italic}.daily-quiz__options,.daily-quiz__bank{display:flex;flex-wrap:wrap;gap:.65rem}.daily-quiz__option,.daily-quiz__bank-token,.daily-quiz__answer-token,.daily-quiz__action{border:none;border-radius:.8rem;font:inherit}.daily-quiz__option{flex:1 1 12rem;padding:.9rem 1rem;background:#fff;color:#0f172a;box-shadow:inset 0 0 0 1px #dbe3ee;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.daily-quiz__option:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px #cbd5e1,0 10px 18px #0f172a0f}.daily-quiz__option.is-selected{box-shadow:inset 0 0 0 2px #ce6045}.daily-quiz__option.is-incorrect{background:#fff1f2;color:#b42318;box-shadow:inset 0 0 0 2px #fda4af}.daily-quiz__answer{min-height:4rem;display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;padding:.85rem;border-radius:.9rem;background:#fff;box-shadow:inset 0 0 0 1px #dbe3ee}.daily-quiz__placeholder{color:#94a3b8}.daily-quiz__answer-token,.daily-quiz__bank-token{padding:.6rem .8rem;background:#f8fafc;box-shadow:inset 0 0 0 1px #dbe3ee;cursor:pointer}.daily-quiz__answer-token{color:#0f172a}.daily-quiz__bank-token{font-weight:700;background:#fff}.daily-quiz__bank-token.is-used,.daily-quiz__bank-token:disabled{opacity:.42;cursor:not-allowed}.daily-quiz__actions{display:flex;justify-content:flex-end;gap:.75rem}.daily-quiz__action{padding:.8rem 1rem;font-weight:700;cursor:pointer}.daily-quiz__action--ghost{background:#fff;color:#475569;box-shadow:inset 0 0 0 1px #cbd5e1}.daily-quiz__action--primary{background:linear-gradient(135deg,#c79e4c,#ce6045);color:#fff;box-shadow:0 8px 16px #ce60452e}.daily-quiz__action:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.daily-quiz__feedback{margin:0;font-size:.9rem;font-weight:600}.daily-quiz__feedback.is-error{color:#b42318}.daily-quiz__feedback.is-success{color:#15803d}.daily-progress{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.25rem;padding:.875rem 1rem;background:#fff;border-radius:.75rem;box-shadow:0 2px 6px #0f172a0d}.daily-progress__label{font-size:.8rem;font-weight:600;color:#64748b}.daily-progress__dots{display:flex;gap:.375rem}.daily-progress__dot{width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#f1f5f9;font-size:.65rem;font-weight:600;color:#94a3b8}.daily-progress__dot.is-complete{background:#16a34a;color:#fff}.daily-progress__dot.is-complete svg{width:.9rem;height:.9rem}.daily-progress__dot.is-current{background:linear-gradient(135deg,#c79e4c,#ce6045);color:#fff;animation:pulse-dot 2s ease-in-out infinite}.daily-progress__count{font-size:.9rem;font-weight:700;color:#334155}@keyframes pulse-dot{0%,to{box-shadow:0 0 #ce604566}50%{box-shadow:0 0 0 4px #ce604526}}.daily-calendar{background:#fff;border-radius:1rem;padding:1.25rem;margin-bottom:1rem;box-shadow:0 2px 6px #0f172a0d}.daily-calendar__month{font-size:1.1rem;font-weight:700;color:#0f172a;text-align:center;margin:0 0 1rem}.daily-calendar__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;margin-bottom:.5rem}.daily-calendar__weekdays span{text-align:center;font-size:.7rem;font-weight:600;color:#94a3b8;text-transform:uppercase}.daily-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.35rem}.daily-calendar__day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:none;border-radius:.5rem;background:transparent;font-size:.85rem;font-weight:600;color:#334155;cursor:default;transition:background .15s ease,transform .1s ease}.daily-calendar__day--empty{background:transparent}.daily-calendar__day--completed{background:#16a34a;color:#fff;cursor:pointer}.daily-calendar__day--completed svg{width:1rem;height:1rem}.daily-calendar__day--completed:hover{background:#15803d;transform:scale(1.05)}.daily-calendar__day--completed.is-selected{box-shadow:0 0 0 2px #fff,0 0 0 4px #16a34a}.daily-calendar__day--today{background:linear-gradient(135deg,#c79e4c,#ce6045);color:#fff;cursor:pointer;animation:pulse-today 2s ease-in-out infinite}.daily-calendar__day--today:hover{transform:scale(1.05)}.daily-calendar__day--today.is-selected{box-shadow:0 0 0 2px #fff,0 0 0 4px #ce6045}@keyframes pulse-today{0%,to{box-shadow:0 0 #ce604566}50%{box-shadow:0 0 0 4px #ce604526}}.daily-calendar__day--future{color:#cbd5e1;background:#f8fafc}.daily-calendar__day--missed{color:#94a3b8;background:#f1f5f9;text-decoration:line-through}.daily-note{text-align:center;font-size:.8rem;color:#64748b;line-height:1.5;margin:0;padding:0 1rem}@media(min-width:480px){.daily-card__word{font-size:3.5rem}.daily-calendar__day{font-size:.95rem}}@media(min-width:640px){.daily-page{max-width:28rem;margin:0 auto;padding:2rem 1.5rem calc(var(--app-nav-height-mobile) + 2rem)}.daily-header__title{font-size:1.75rem}.daily-card{padding:2rem}.daily-card__word{font-size:4rem}.daily-teach-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-quiz__title{font-size:1.08rem}}@media(min-width:900px){.daily-page{max-width:72rem;padding-top:calc(var(--app-nav-height-desktop) + 2rem);padding-bottom:2rem}.daily-header{margin-bottom:2rem}.daily-header__title{font-size:2.25rem}.daily-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(22rem,.9fr);gap:1.25rem;align-items:start}.daily-layout__main,.daily-layout__side{display:grid;gap:1.25rem}.daily-card,.daily-progress,.daily-calendar{border:1px solid rgba(226,232,240,.92);box-shadow:0 18px 36px #0f172a0f}.daily-card{display:flex;flex-direction:column;min-height:100%;padding:2.25rem;margin-bottom:0;text-align:left}.daily-card__word{font-size:4.4rem}.daily-card__example,.daily-card__translation{max-width:28rem}.daily-card__btn,.daily-card__complete{align-self:flex-start}.daily-card__actions{justify-content:flex-start}.daily-quiz{max-width:38rem}.daily-progress{justify-content:space-between;margin-bottom:0;padding:1rem 1.1rem}.daily-calendar{margin-bottom:0;padding:1.4rem}.daily-note{text-align:left;padding:0 .25rem}}@media(max-width:479px){.daily-quiz__header,.daily-quiz__header-actions,.daily-quiz__actions{flex-direction:column;align-items:stretch}.daily-quiz__steps{justify-content:flex-start}.daily-card__actions{align-items:stretch}}@media(min-width:1200px){.daily-page{max-width:80rem}.daily-layout{grid-template-columns:minmax(0,1.15fr) minmax(25rem,.85fr);gap:1.5rem}}.auth-form__forgot-link{font-size:.85rem;color:#3b65b1;text-decoration:none;text-align:right;margin-top:.25rem}.auth-form__forgot-link:hover{text-decoration:underline}.auth-shell{min-height:100dvh;display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top) + 2.5rem) 1.25rem calc(env(safe-area-inset-bottom) + 1.5rem);background:linear-gradient(180deg,#fff,#f8fafc)}.auth-shell__brand{width:100%;max-width:24rem;margin:0 auto 1.75rem}.auth-shell__brand a{display:inline-flex;align-items:baseline;gap:.15rem;font-size:1.35rem;font-weight:900;letter-spacing:.04em;text-decoration:none;line-height:1}.auth-card{width:100%;max-width:24rem;margin:0 auto;background:transparent}.auth-card__header{margin-bottom:1.5rem}.auth-card__header h1{margin:0;font-size:1.75rem;font-weight:800;line-height:1.15;letter-spacing:-.025em;color:#0f172a}.auth-card__header p{margin:.5rem 0 0;color:#64748b;font-size:.95rem}.auth-card__footer{margin-top:1.5rem;padding-top:1rem;border-top:1px solid #e2e8f0}.auth-card__footer p{margin:0;color:#64748b;font-size:.88rem;text-align:center}.auth-card__footer a{color:#3b65b1;font-weight:600}.auth-card__footer a:hover{color:#c6374b}@media(min-width:640px){.auth-shell{align-items:center;justify-content:center;padding:2rem}.auth-card{border:1px solid #e5e7eb;border-radius:1.25rem;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 32px #0f172a0f;padding:2rem}.auth-card__header h1{font-size:1.85rem}}@media(min-width:1024px){.auth-shell{max-width:72rem;margin:0 auto;padding:3rem 2rem;justify-content:center}.auth-shell__brand,.auth-card{max-width:32rem}.auth-shell__brand{margin-bottom:2rem}.auth-shell__brand a{font-size:1.5rem}.auth-card{padding:2.4rem;border-radius:1.5rem;box-shadow:0 20px 44px #0f172a14}.auth-card__header{margin-bottom:1.75rem}.auth-card__header h1{font-size:2.2rem}.auth-card__header p{font-size:1rem}}.practice-page{min-height:100dvh;padding:calc(.75rem + env(safe-area-inset-top)) 1rem calc(var(--app-nav-height-mobile) + 1rem + env(safe-area-inset-bottom));background:radial-gradient(circle at top right,rgba(199,158,76,.12),transparent 28%),linear-gradient(180deg,#fffdf7,#f8fafc 52%,#eef4fb);color:#0f172a}.practice-hero,.practice-customize,.practice-shell,.practice-summary{width:100%;margin:0 auto}.practice-hero{display:grid;gap:.85rem;grid-template-columns:1fr}.practice-hero__panel,.practice-customize,.practice-shell,.practice-summary,.practice-card{border:1px solid rgba(226,232,240,.92);border-radius:1.1rem;background:#ffffffeb;box-shadow:0 12px 28px #0f172a0f}.practice-hero__intro{padding:.65rem 0}.practice-hero__eyebrow,.practice-customize__eyebrow,.practice-shell__eyebrow,.practice-summary__eyebrow{margin:0 0 .4rem;font-size:.76rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#c05621}.practice-hero__title,.practice-summary__title{margin:0;font-size:clamp(2rem,5vw,3.4rem);line-height:.96;letter-spacing:-.04em}.practice-hero__copy,.practice-summary__copy,.practice-shell__copy,.practice-customize__unit-copy,.practice-hero__panel-copy{color:#475569;line-height:1.65}.practice-hero__panel{padding:1rem;background:radial-gradient(circle at top right,rgba(199,158,76,.14),transparent 36%),linear-gradient(180deg,#fffffffa,#fffdf7eb)}.practice-hero__panel-eyebrow{margin:0 0 .3rem;font-size:.78rem;font-weight:700;color:#c05621;text-transform:uppercase;letter-spacing:.08em}.practice-hero__panel-title,.practice-customize__title,.practice-shell__title{margin:0;font-size:clamp(1.5rem,3vw,2.25rem);letter-spacing:-.03em}.practice-hero__panel-actions,.practice-summary__actions,.practice-build__actions{display:flex;flex-direction:column;align-items:stretch;gap:.65rem;margin-top:1.2rem}.practice-hero__start,.practice-summary__button,.practice-build__action--primary,.practice-feedback__continue,.practice-shell__exit{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:999px;padding:.9rem 1.2rem;font:inherit;font-weight:700;cursor:pointer}.practice-hero__start,.practice-summary__button,.practice-build__action--primary,.practice-feedback__continue{background:linear-gradient(135deg,#c79e4c,#ce6045);color:#fff;box-shadow:0 10px 24px #ce604538}.practice-hero__customize,.practice-summary__button--secondary,.practice-build__action--ghost,.practice-shell__exit{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:999px;padding:.9rem 1.2rem;font:inherit;font-weight:700;cursor:pointer;background:#fff;color:#334155;box-shadow:inset 0 0 0 1px #cbd5e1}.practice-customize{margin-top:.85rem;padding:1rem}.practice-customize__header{margin-bottom:1rem}.practice-customize__grid{display:grid;gap:.75rem;grid-template-columns:1fr}.practice-customize__unit{display:grid;gap:.35rem;padding:.95rem .9rem;border:1px solid #dbe3ee;border-radius:1rem;background:#fff;text-align:left;cursor:pointer;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.practice-customize__unit:hover{transform:translateY(-2px);box-shadow:0 14px 28px #0f172a14}.practice-customize__unit.is-selected{border-color:#c79e4c99;background:radial-gradient(circle at top right,rgba(199,158,76,.1),transparent 40%),linear-gradient(180deg,#fffffffc,#fffdf7f5)}.practice-customize__unit-title{font-size:1rem;font-weight:700}.practice-customize__unit-copy{font-size:.92rem;line-height:1.5}.practice-page--session,.practice-page--results{display:grid;align-items:start;padding-top:.85rem}.practice-shell,.practice-summary{padding:1rem}.practice-shell__topbar{display:grid;grid-template-columns:minmax(4.75rem,1fr) auto minmax(4.75rem,1fr);align-items:center;gap:.5rem;margin-bottom:.7rem}.practice-shell__counter{grid-column:2;justify-self:center;text-align:center;font-size:.72rem;color:#94a3b8;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.practice-shell__score{grid-column:3;justify-self:end;font-size:.72rem;color:#94a3b8;font-weight:700}.practice-shell__header{display:grid;gap:.2rem}.practice-card{margin-top:.75rem;padding:.85rem 0}.practice-card__header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.55rem;margin-bottom:.75rem}.practice-card__badge,.practice-card__support{display:inline-flex;align-items:center;padding:.38rem .7rem;border-radius:999px;font-size:.76rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.practice-card__badge{background:#fef3c7;color:#92400e}.practice-card__support{background:#eff6ff;color:#1d4ed8}.practice-card__prompt{margin:0;font-size:clamp(1.1rem,5vw,1.85rem);line-height:1.15;letter-spacing:-.03em}.practice-card__hint{margin:.35rem 0 0;color:#64748b;font-size:.9rem}.practice-options{display:grid;gap:.65rem;margin-top:.85rem}.practice-option{display:flex;flex-wrap:wrap;gap:.3rem .42rem;padding:.82rem;border:none;border-radius:.85rem;background:#f8fafc;text-align:left;cursor:pointer;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.practice-option:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 22px #0f172a14}.practice-option.is-selected{background:#e2e8f0}.practice-option.is-correct{background:#f0fdf4}.practice-option.is-incorrect{background:#fff1f2}.practice-page__token{font-size:1rem;font-weight:700}.practice-dialogue{display:grid;gap:.45rem;padding:.85rem;border-radius:1rem;background:#f8fafc;border:none}.practice-dialogue__label{margin:0;font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#c05621}.practice-dialogue__line,.practice-dialogue__cue{margin:0}.practice-build__answer{min-height:4.25rem;display:flex;flex-wrap:wrap;gap:.55rem;align-items:center;margin-top:.85rem;padding:.8rem;border-radius:1rem;background:#fff;box-shadow:inset 0 0 0 1px #dbe3ee}.practice-build__placeholder{color:#94a3b8}.practice-build__token,.practice-build__bank-token{border:none;border-radius:.8rem;font:inherit;font-weight:700}.practice-build__token{padding:.6rem .8rem;background:#f1f5f9;cursor:pointer}.practice-build__bank{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:.85rem}.practice-build__bank-token{padding:.7rem .9rem;background:#fff;border:none;box-shadow:inset 0 0 0 1px #dbe3ee;cursor:pointer}.practice-build__bank-token.is-used,.practice-build__bank-token:disabled{opacity:.45;cursor:not-allowed}.practice-build__action:disabled,.practice-hero__start:disabled,.practice-summary__button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.practice-hero__start,.practice-hero__customize,.practice-summary__button,.practice-build__action{width:100%}.practice-feedback{display:grid;gap:.85rem;margin-top:.85rem;padding:.9rem;border-radius:1rem;background:#f8fafc;border:none}.practice-feedback p{margin:0;color:#334155;line-height:1.6}.practice-feedback__continue{justify-self:start}.practice-summary{text-align:center}.practice-summary__actions{justify-content:center}@media(min-width:720px){.practice-page{padding:1.5rem 1.5rem calc(var(--app-nav-height-mobile) + 2.5rem)}.practice-shell__header{align-items:start}}@media(min-width:900px){.practice-page{padding-top:calc(var(--app-nav-height-desktop) + 1.5rem);padding-left:1.5rem;padding-right:1.5rem;padding-bottom:2rem}.practice-hero,.practice-customize,.practice-shell,.practice-summary{max-width:56rem;margin-left:auto;margin-right:auto}.practice-hero{grid-template-columns:minmax(0,1.2fr) minmax(20rem,.8fr);align-items:stretch}.practice-customize__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.practice-hero__intro{padding:1rem;border:1px solid rgba(226,232,240,.92);border-radius:1.1rem;background:#ffffffeb;box-shadow:0 12px 28px #0f172a0f}.practice-hero__panel-actions,.practice-summary__actions,.practice-build__actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.75rem}.practice-hero__start,.practice-hero__customize,.practice-summary__button,.practice-build__action{width:auto}.practice-page--session{padding-top:1.25rem}.practice-shell__topbar{grid-template-columns:minmax(5.5rem,1fr) auto minmax(5.5rem,1fr);margin-bottom:1rem}.practice-shell__exit{padding:.55rem .9rem}.practice-shell__header{gap:.35rem}}@media(min-width:1100px){.practice-page{padding-top:calc(var(--app-nav-height-desktop) + 2rem)}.practice-hero,.practice-customize,.practice-shell,.practice-summary{width:min(100%,76rem);max-width:none}.practice-customize__grid{grid-template-columns:repeat(3,minmax(0,1fr))}.practice-card,.practice-shell,.practice-summary,.practice-customize,.practice-hero__panel{border-radius:1.6rem}.practice-hero__intro{padding:1.25rem;border-radius:1.6rem;box-shadow:0 18px 40px #0f172a14}.practice-shell{padding:1.2rem;border-radius:1.6rem;box-shadow:0 18px 40px #0f172a14}.practice-card{margin-top:.85rem;padding:1rem;border:1px solid rgba(226,232,240,.92);border-radius:1.35rem;background:#ffffffeb;box-shadow:0 14px 30px #0f172a0f}.practice-option,.practice-dialogue,.practice-feedback{border:1px solid #dbe3ee;background:#fff}}@media(max-width:639px){.practice-page--session{padding-left:.7rem;padding-right:.7rem;padding-top:calc(.55rem + env(safe-area-inset-top))}.practice-page:not(.practice-page--session):not(.practice-page--results){padding-left:.85rem;padding-right:.85rem}.practice-shell,.practice-card{padding-left:0;padding-right:0;border:none;border-radius:0;background:transparent;box-shadow:none}.practice-shell__exit{grid-column:1;justify-self:start;width:auto;padding:.35rem .6rem;font-size:.72rem;background:#f1f5f9;color:#64748b;box-shadow:none}.practice-shell__title{font-size:1.55rem}.practice-shell__copy{font-size:.88rem}.practice-card__support{display:none}}.profile-page{min-height:calc(100dvh - var(--app-nav-height-mobile));display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top) + 1rem) 1rem calc(env(safe-area-inset-bottom) + 1.25rem);background:transparent}.profile-card{flex:1;display:flex;flex-direction:column;width:100%;max-width:62rem;margin:0 auto}.profile-card__content{display:flex;flex:1;flex-direction:column;gap:1rem}.profile-card__main{display:flex;flex:1;flex-direction:column;gap:1.5rem}.profile-card__actions{margin-top:auto}.profile-page h1{margin:0;font-size:1.9rem;font-weight:800;letter-spacing:-.03em;color:#0f172a}.profile-hero{display:flex;align-items:center;gap:1rem;padding:1rem;border:1px solid rgba(226,232,240,.95);border-radius:1.35rem;background:radial-gradient(circle at top right,rgba(59,101,177,.12),transparent 28%),linear-gradient(180deg,#fffffff5,#f8fafce0)}.profile-avatar{display:grid;place-items:center;width:4.35rem;height:4.35rem;border-radius:1.35rem;background:radial-gradient(circle at top,rgba(255,255,255,.5),transparent 55%),linear-gradient(135deg,#1f3c88,#ce6045);box-shadow:0 18px 40px #1f3c882e;color:#fff;font-size:1.35rem;font-weight:800;letter-spacing:.08em}.profile-hero__copy{display:flex;flex-direction:column;gap:.3rem}.profile-hero__topline{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.profile-pill{display:inline-flex;align-items:center;border-radius:999px;padding:.28rem .55rem;background:#0f172a0f;color:#475569;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.profile-pill--soft{background:#bfdbfe59;color:#1d4ed8}.profile-email{margin:0;color:#475569;font-size:.95rem}.profile-level{margin:0;color:#b45309;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.profile-stats{display:flex;flex-direction:column;gap:.9rem}.profile-stat-card{display:flex;flex-direction:column;gap:.28rem;padding:1rem 1.1rem;border-radius:1.25rem;border:1px solid rgba(226,232,240,.95);background:radial-gradient(circle at top right,rgba(255,255,255,.8),transparent 36%),linear-gradient(180deg,#fffffffa,#f8fafcf0);box-shadow:0 12px 24px #0f172a0a}.profile-stat-card strong{font-size:1.8rem;line-height:1.1;color:#0f172a}.profile-stat-card__eyebrow,.profile-stat-card__meta{font-size:.82rem;color:#64748b}.profile-stat-card__eyebrow{font-weight:700;text-transform:uppercase;letter-spacing:.08em}.profile-stat-card--streak{background:radial-gradient(circle at top right,rgba(254,202,202,.9),transparent 35%),linear-gradient(180deg,#fff7ed,#fff)}.profile-stat-card--xp{background:radial-gradient(circle at top right,rgba(99,143,94,.24),transparent 35%),linear-gradient(180deg,#f3faf2,#fff)}.profile-progress-track{display:block;height:.45rem;margin-top:.2rem;border-radius:999px;background:#e2e8f0eb;overflow:hidden}.profile-progress-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#7aa772,#638f5e)}.profile-badges{display:flex;flex-direction:column;gap:1rem;padding:1rem;border:1px solid rgba(226,232,240,.95);border-radius:1.35rem;background:radial-gradient(circle at top right,rgba(56,125,166,.08),transparent 28%),linear-gradient(180deg,#fffffff5,#f8fafce6)}.profile-section-heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.profile-section-heading h2{margin:0;font-size:1rem;color:#0f172a}.profile-section-heading span{color:#64748b}.profile-badge-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.profile-badge-card{display:flex;align-items:flex-start;gap:.75rem;padding:.9rem;border-radius:1.05rem;border:1px solid rgba(226,232,240,.95);background:#fffffff5;transition:transform .18s ease,box-shadow .18s ease}.profile-badge-card.is-earned{box-shadow:0 10px 28px #0f172a14}.profile-badge-card__icon{flex:none;display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;font-size:1.2rem;background:#f8fafc}.profile-badge-card__copy h3{margin:0 0 .2rem;font-size:.92rem;color:#0f172a}.profile-badge-card__copy p{margin:0;color:#64748b;font-size:.8rem;line-height:1.45}.profile-badge-card--gold .profile-badge-card__icon{background:#fef3c7}.profile-badge-card--red .profile-badge-card__icon{background:#fee2e2}.profile-badge-card--blue .profile-badge-card__icon{background:#dbeafe}.profile-badge-card--green .profile-badge-card__icon{background:#dcfce7}.profile-badge-card.is-locked{opacity:.55}.profile-badge-card.is-locked .profile-badge-card__icon{background:#e2e8f0}.profile-badge-card.is-earned:hover{transform:translateY(-2px);box-shadow:0 14px 32px #0f172a1a}.logout-button{width:100%;margin-top:auto;border:1px solid #e2e8f0;border-radius:.65rem;padding:.8rem 1rem;background:transparent;color:#64748b;font-size:.92rem;font-weight:600;cursor:pointer;transition:border-color .15s ease,color .15s ease}.logout-button:hover{border-color:#c6374b;color:#c6374b}.delete-account-button{width:100%;margin-top:.75rem;border:none;border-radius:0;padding:.5rem 1rem;background:transparent;color:#94a3b8;font-size:.82rem;font-weight:500;cursor:pointer;text-align:center;transition:color .15s ease}.delete-account-button:hover{color:#c6374b}.delete-confirm{margin-top:.75rem;padding:1rem;border:1px solid #fecaca;border-radius:.65rem;background:#fff5f5}.delete-confirm-text{margin:0 0 .75rem;font-size:.85rem;color:#64748b;line-height:1.5}.delete-error{margin:0 0 .75rem;font-size:.82rem;color:#c6374b}.delete-confirm-actions{display:flex;gap:.5rem}.delete-cancel-button{flex:1;border:1px solid #e2e8f0;border-radius:.5rem;padding:.65rem .75rem;background:transparent;color:#64748b;font-size:.85rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.delete-cancel-button:hover:not(:disabled){border-color:#94a3b8}.delete-cancel-button:disabled{opacity:.5;cursor:not-allowed}.delete-confirm-button{flex:2;border:none;border-radius:.5rem;padding:.65rem .75rem;background:#c6374b;color:#fff;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s ease}.delete-confirm-button:hover:not(:disabled){background:#a82e3f}.delete-confirm-button:disabled{opacity:.6;cursor:not-allowed}@media(min-width:640px){.profile-page{padding:1rem}.profile-card{flex:1;border:1px solid rgba(203,213,225,.9);border-radius:1.5rem;background:linear-gradient(180deg,#fffffffa,#f8fafcf5);box-shadow:0 16px 34px #0f172a12;overflow:hidden}.profile-card__content{padding:1rem}}@media(min-width:900px){.profile-page{padding:calc(var(--app-nav-height-desktop) + .25rem) 1rem 1.5rem}.profile-card__content{display:flex;flex-direction:column;gap:1rem;padding:1.25rem}.profile-card__actions{display:grid;grid-template-columns:1fr;justify-items:center;gap:.75rem;padding:1.25rem;border-radius:1rem;background:linear-gradient(180deg,#f8fafcf5,#f1f5f9f0);border:1px solid rgba(226,232,240,.95)}.profile-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.profile-badge-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.logout-button{margin-top:0;width:min(100%,18rem);max-width:18rem}.delete-account-button{margin-top:0;width:min(100%,18rem);max-width:18rem;padding-left:1rem;padding-right:1rem;text-align:center}.delete-confirm{margin-top:0;width:min(100%,32rem);max-width:32rem}}.auth-form{display:grid;gap:.6rem}.auth-form label{font-size:.82rem;font-weight:600;color:#475569;letter-spacing:.01em}.auth-form input{width:100%;border:none;border-bottom:2px solid #e2e8f0;border-radius:0;background:transparent;color:#111827;padding:.7rem 0;font-size:1rem;transition:border-color .2s ease}.auth-form input:focus{outline:none;border-bottom-color:#3b65b1}.auth-form input::placeholder{color:#94a3b8}.auth-form button{margin-top:.75rem;border:0;border-radius:.75rem;padding:.875rem 1rem;background:linear-gradient(135deg,#c6374b,#3b65b1);color:#fff;font-size:1rem;font-weight:700;cursor:pointer;transition:transform .1s ease,box-shadow .15s ease}.auth-form button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #c6374b4d}.auth-form button:active{transform:translateY(0)}.auth-form button:disabled{background:#cbd5e1;cursor:not-allowed;transform:none;box-shadow:none}.auth-form__error{background:#c6374b14;border-left:3px solid #c6374b;color:#991b1b;padding:.7rem .85rem;border-radius:.35rem;font-size:.88rem;font-weight:500}.auth-form__success{background:#638f5e1a;border-left:3px solid #638f5e;color:#166534;padding:.7rem .85rem;border-radius:.35rem;font-size:.88rem;font-weight:500}@media(min-width:640px){.auth-form input{border:1px solid #e2e8f0;border-radius:.6rem;padding:.75rem .9rem;background:#fff}.auth-form input:focus{border-color:#3b65b1;box-shadow:0 0 0 3px #3b65b11a}}.grammar-visualizer{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;max-width:1400px;margin:0 auto;padding:20px;background:#1a1a2e;color:#eee;min-height:100vh}.visualizer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:16px}.visualizer-header h1{margin:0;font-size:1.5rem;color:#fff}.view-tabs{display:flex;gap:8px}.view-tabs button{padding:8px 16px;border:1px solid #444;background:#2a2a4a;color:#aaa;border-radius:6px;cursor:pointer;transition:all .2s}.view-tabs button:hover{background:#3a3a5a;color:#fff}.view-tabs button.active{background:#4a4a7a;color:#fff;border-color:#6a6aaa}.visualizer-stats{display:flex;gap:24px;padding:16px;background:#2a2a4a;border-radius:8px;margin-bottom:20px;flex-wrap:wrap}.stat{display:flex;flex-direction:column;align-items:center}.stat-value{font-size:1.5rem;font-weight:700;color:#fff}.stat-label{font-size:.8rem;color:#888;text-transform:uppercase}.stat.recommended{flex-direction:row;gap:8px;padding:8px 16px;background:#4caf50;border-radius:20px}.stat.recommended .stat-label{color:#fffc}.stat.recommended .stat-value{font-size:1rem}.visualizer-content{display:flex;flex-direction:column;gap:20px}.graph-view{display:grid;grid-template-columns:1fr 350px;gap:20px}@media(max-width:900px){.graph-view{grid-template-columns:1fr}}.nodes-panel{display:flex;flex-direction:column;gap:20px}.category-group{background:#252545;border-radius:8px;padding:16px}.category-title{margin:0 0 12px;font-size:1rem;text-transform:capitalize;border-bottom:2px solid currentColor;padding-bottom:8px}.category-nodes{display:flex;flex-wrap:wrap;gap:12px}.grammar-node-card{background:#1a1a2e;border:1px solid #444;border-left:4px solid;border-radius:6px;padding:12px;cursor:pointer;transition:all .2s;min-width:140px}.grammar-node-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.grammar-node-card.selected{border-color:#fff;box-shadow:0 0 0 2px #ffffff4d}.grammar-node-card.mastered{background:linear-gradient(135deg,#1a3a1a,#1a1a2e)}.grammar-node-card.available{background:linear-gradient(135deg,#2a2a5a,#1a1a2e)}.grammar-node-card.locked{opacity:.5}.node-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.node-label{font-weight:700;font-size:1.1rem}.node-difficulty{color:gold;font-size:.7rem}.node-id{font-size:.75rem;color:#888;font-family:monospace}.node-category{font-size:.7rem;color:#666;text-transform:uppercase;margin-top:4px}.details-panel{background:#252545;border-radius:8px;padding:20px;position:sticky;top:20px;max-height:calc(100vh - 200px);overflow-y:auto}.no-selection{color:#666;text-align:center;padding:40px}.node-details h3{margin:0 0 8px;font-size:1.5rem}.node-description{color:#aaa;margin-bottom:20px}.detail-section{margin-bottom:20px}.detail-section h4{color:#888;font-size:.85rem;text-transform:uppercase;margin:0 0 8px;border-bottom:1px solid #444;padding-bottom:4px}.detail-section ul{margin:0;padding-left:20px}.detail-section li{margin:4px 0}.detail-section li.met{color:#4caf50}.detail-section li.unmet{color:#f44336}.detail-section .none{color:#666;font-style:italic}.examples li{font-family:Noto Sans KR,sans-serif;color:#ccc}.tips li{color:gold}.toggle-mastery-btn{width:100%;padding:12px;background:#4a4a7a;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;transition:background .2s}.toggle-mastery-btn:hover{background:#5a5a9a}.list-view{overflow-x:auto}.nodes-table{width:100%;border-collapse:collapse;background:#252545;border-radius:8px;overflow:hidden}.nodes-table th,.nodes-table td{padding:12px;text-align:left;border-bottom:1px solid #333}.nodes-table th{background:#1a1a2e;color:#888;font-size:.85rem;text-transform:uppercase}.nodes-table tr.mastered{background:linear-gradient(90deg,rgba(76,175,80,.1) 0%,transparent 100%)}.nodes-table tr.available{background:linear-gradient(90deg,rgba(33,150,243,.1) 0%,transparent 100%)}.nodes-table tr.locked{opacity:.5}.nodes-table code{font-size:.8rem;background:#1a1a2e;padding:2px 6px;border-radius:3px}.nodes-table button{padding:4px 12px;background:#4a4a7a;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.85rem}.nodes-table button:hover{background:#5a5a9a}.templates-view{display:grid;grid-template-columns:1fr 400px;gap:20px}@media(max-width:900px){.templates-view{grid-template-columns:1fr}}.templates-panel{display:flex;flex-direction:column;gap:12px}.template-card{background:#252545;border:1px solid #444;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s}.template-card:hover{transform:translate(4px);border-color:#666}.template-card.eligible{border-left:4px solid #4CAF50}.template-card.locked{opacity:.5;border-left:4px solid #666}.template-header{display:flex;justify-content:space-between;margin-bottom:8px}.template-label{font-weight:700}.template-difficulty{color:#888;font-size:.85rem}.template-purpose{color:#aaa;font-size:.9rem;margin-bottom:8px}.template-grammar{font-family:monospace;font-size:.8rem;color:#666}.template-details .output-pattern{display:block;background:#1a1a2e;padding:12px;border-radius:6px;font-size:1.1rem}.conjugator-tool{background:#252545;border-radius:8px;padding:24px;max-width:600px}.conjugator-tool h3{margin:0 0 20px}.conjugator-input{margin-bottom:16px}.conjugator-input label{display:flex;flex-direction:column;gap:8px;color:#aaa;font-size:.9rem}.conjugator-input input,.conjugator-input select{padding:12px;background:#1a1a2e;border:1px solid #444;border-radius:6px;color:#fff;font-size:1.1rem}.conjugator-input input:focus,.conjugator-input select:focus{outline:none;border-color:#4a4a7a}.conjugate-btn{width:100%;padding:12px;background:#4caf50;border:none;border-radius:6px;color:#fff;font-size:1rem;cursor:pointer;transition:background .2s;margin-bottom:16px}.conjugate-btn:hover{background:#45a049}.conjugator-result{background:#1a3a1a;border:1px solid #4CAF50;border-radius:8px;padding:16px;display:flex;align-items:center;gap:12px}.result-label{color:#888}.result-value{font-size:1.5rem;font-weight:700}.conjugator-error{background:#3a1a1a;border:1px solid #F44336;border-radius:8px;padding:12px;color:#f44336}.common-verbs{margin-top:24px}.common-verbs h4{color:#888;margin:0 0 12px}.verb-chips{display:flex;flex-wrap:wrap;gap:8px}.verb-chip{padding:6px 12px;background:#3a3a5a;border:none;border-radius:20px;color:#fff;cursor:pointer;transition:background .2s}.verb-chip:hover{background:#4a4a7a}.visualizer-footer{margin-top:20px;padding-top:16px;border-top:1px solid #333}.visualizer-footer p{color:#666;font-size:.85rem;text-align:center;margin:0}.test-out-exercise{display:flex;flex-direction:column;height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));overflow:hidden}.test-out-exercise__topbar{display:flex;align-items:center;padding:.65rem 1rem;border-bottom:1px solid var(--color-border, #e5e7eb);flex-shrink:0}.test-out-exercise__back{background:none;border:none;color:var(--color-primary, #3b82f6);font-size:1rem;cursor:pointer;padding:.5rem}.test-out-exercise__intro{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:1rem 1.25rem 1.25rem;text-align:center;max-width:480px;margin:0 auto;overflow-y:auto;min-height:0}.test-out-exercise__title{font-size:1.35rem;font-weight:700;margin:0 0 .5rem;color:var(--color-text, #1f2937)}.test-out-exercise__description{font-size:.88rem;color:var(--color-text-secondary, #6b7280);margin:0 0 1rem;line-height:1.5}.test-out-exercise__phases-preview{width:100%;background:var(--color-surface, #f9fafb);border-radius:.65rem;padding:.85rem 1rem;margin-bottom:1rem;text-align:left}.test-out-exercise__phases-title{font-size:.72rem;font-weight:600;color:var(--color-text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.05em;margin:0 0 .6rem}.test-out-exercise__phase-list{display:flex;flex-direction:column;gap:.45rem}.test-out-exercise__phase-item{display:flex;align-items:center;gap:.65rem;padding:.45rem .65rem;background:var(--color-background, #fff);border-radius:.4rem}.test-out-exercise__phase-number{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--color-primary, #3b82f6);color:#fff;border-radius:50%;font-weight:600;font-size:.72rem;flex-shrink:0}.test-out-exercise__phase-item strong{display:block;color:var(--color-text, #1f2937);margin-bottom:0;font-size:.85rem}.test-out-exercise__phase-item p{margin:0;font-size:.75rem;color:var(--color-text-secondary, #6b7280)}.test-out-exercise__start-button{width:100%;padding:.75rem 1.25rem;font-size:.95rem;font-weight:600;background:var(--color-primary, #3b82f6);color:#fff;border:none;border-radius:.45rem;cursor:pointer;transition:background .15s,transform .1s;flex-shrink:0;margin-top:auto}.test-out-exercise__start-button:hover{background:var(--color-primary-hover, #2563eb)}.test-out-exercise__start-button:active{transform:scale(.98)}.test-out-exercise__phase-wrapper{display:flex;flex-direction:column;height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom));overflow:hidden}.test-out-exercise__phase-header{padding:.45rem 1rem;background:var(--color-primary, #3b82f6);color:#fff;text-align:center;flex-shrink:0}.test-out-exercise__phase-label{font-weight:600;font-size:.75rem}.test-out-exercise__phase-wrapper>.hangul-builder,.test-out-exercise__phase-wrapper>.flashcard,.test-out-exercise__phase-wrapper>.hangul-speed{height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom) - 1.65rem);max-height:calc(100svh - var(--app-nav-height-mobile) - env(safe-area-inset-bottom) - 1.65rem)}.test-out-exercise__submitting{flex:1;display:flex;align-items:center;justify-content:center;padding:1.5rem}.test-out-exercise__submitting p{color:var(--color-text-secondary, #6b7280);font-size:.95rem}@media(min-width:640px){.test-out-exercise{height:auto;min-height:calc(100svh - var(--app-nav-height-desktop) - 2rem);max-height:calc(100svh - var(--app-nav-height-desktop) - 2rem)}.test-out-exercise__intro{justify-content:center;padding:1.5rem 2rem}.test-out-exercise__title{font-size:1.5rem}.test-out-exercise__description{font-size:.95rem}.test-out-exercise__phase-wrapper{height:auto;min-height:calc(100svh - var(--app-nav-height-desktop) - 2rem);max-height:calc(100svh - var(--app-nav-height-desktop) - 2rem)}.test-out-exercise__phase-wrapper>.hangul-builder,.test-out-exercise__phase-wrapper>.flashcard,.test-out-exercise__phase-wrapper>.hangul-speed{height:calc(100svh - var(--app-nav-height-desktop) - 2rem - 1.65rem);max-height:calc(100svh - var(--app-nav-height-desktop) - 2rem - 1.65rem)}}.test-out-results{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;padding:2rem;overflow:hidden}.test-out-results.is-celebration{background:linear-gradient(180deg,#f0fdf4,#dcfce7)}.test-out-results__confetti{position:absolute;top:0;left:0;right:0;height:200px;background:radial-gradient(circle at 20% 30%,#fbbf24 2px,transparent 2px),radial-gradient(circle at 80% 20%,#f472b6 2px,transparent 2px),radial-gradient(circle at 40% 10%,#60a5fa 2px,transparent 2px),radial-gradient(circle at 60% 40%,#34d399 2px,transparent 2px),radial-gradient(circle at 10% 50%,#a78bfa 2px,transparent 2px),radial-gradient(circle at 90% 35%,#fb923c 2px,transparent 2px);background-size:100px 100px;animation:confetti-fall 2s ease-out forwards;pointer-events:none}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-20px)}to{opacity:0;transform:translateY(100px)}}.test-out-results__content{position:relative;max-width:480px;width:100%;text-align:center;z-index:1}.test-out-results__status{display:inline-block;padding:.5rem 1.5rem;border-radius:2rem;font-size:1rem;font-weight:600;margin-bottom:1rem}.test-out-results__status.is-passed{background:var(--color-success-bg, #dcfce7);color:var(--color-success, #16a34a);font-size:1.125rem;padding:.625rem 2rem;animation:celebrate-bounce .5s ease-out}@keyframes celebrate-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.test-out-results__status.is-failed{background:var(--color-error-bg, #fee2e2);color:var(--color-error, #dc2626)}.test-out-results__title{font-size:1.75rem;font-weight:700;margin:0 0 .5rem;color:var(--color-text, #1f2937)}.test-out-results__subtitle{font-size:1rem;color:var(--color-text-secondary, #6b7280);margin:0 0 1rem}.test-out-results__celebration-text{font-size:.9375rem;color:var(--color-success, #16a34a);background:#fffc;padding:1rem;border-radius:.5rem;margin:0 0 1.5rem;line-height:1.5}.test-out-results__breakdown{background:var(--color-surface, #f9fafb);border-radius:.75rem;padding:1.5rem;margin-bottom:2rem;text-align:left}.test-out-results__breakdown-title{font-size:.875rem;font-weight:600;color:var(--color-text-secondary, #6b7280);margin:0 0 1rem;text-transform:uppercase;letter-spacing:.05em}.test-out-results__phases{display:flex;flex-direction:column;gap:.75rem}.test-out-results__phase{display:grid;grid-template-columns:1fr auto auto auto;gap:1rem;align-items:center;padding:.75rem;background:var(--color-background, #fff);border-radius:.5rem;border-left:3px solid transparent}.test-out-results__phase.is-passed{border-left-color:var(--color-success, #16a34a)}.test-out-results__phase.is-failed{border-left-color:var(--color-error, #dc2626)}.test-out-results__phase-name{font-weight:500;color:var(--color-text, #1f2937)}.test-out-results__phase-score{font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.test-out-results__phase-accuracy{font-weight:600;color:var(--color-text, #1f2937)}.test-out-results__phase-status{font-size:.75rem;font-weight:600;padding:.25rem .5rem;border-radius:.25rem}.test-out-results__phase.is-passed .test-out-results__phase-status{background:var(--color-success-bg, #dcfce7);color:var(--color-success, #16a34a)}.test-out-results__phase.is-failed .test-out-results__phase-status{background:var(--color-error-bg, #fee2e2);color:var(--color-error, #dc2626)}.test-out-results__actions{display:flex;flex-direction:column;gap:.75rem}.test-out-results__button{display:block;width:100%;padding:1rem 1.5rem;font-size:1rem;font-weight:600;border-radius:.5rem;border:none;cursor:pointer;transition:background .15s,transform .1s}.test-out-results__button:active{transform:scale(.98)}.test-out-results__button--primary{background:var(--color-primary, #3b82f6);color:#fff}.test-out-results__button--primary:hover{background:var(--color-primary-hover, #2563eb)}.test-out-results__button--secondary{background:var(--color-surface, #f3f4f6);color:var(--color-text, #1f2937)}.test-out-results__button--secondary:hover{background:var(--color-surface-hover, #e5e7eb)}.test-out-results.is-celebration .test-out-results__button--primary{background:var(--color-success, #16a34a)}.test-out-results.is-celebration .test-out-results__button--primary:hover{background:#15803d}.hangul-test-out-page{min-height:100vh;display:flex;flex-direction:column}.hangul-test-out-page__loading,.hangul-test-out-page__error{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.hangul-test-out-page__error h2{margin:0 0 .5rem;color:var(--color-error, #dc2626)}.hangul-test-out-page__error p{margin:0 0 1.5rem;color:var(--color-text-secondary, #6b7280)}.hangul-test-out-page__error button{display:block;width:100%;max-width:300px;padding:.75rem 1.5rem;margin-bottom:.75rem;font-size:1rem;font-weight:600;border-radius:.5rem;border:none;cursor:pointer}.hangul-test-out-page__error button:first-of-type{background:var(--color-primary, #3b82f6);color:#fff}.hangul-test-out-page__error button:last-of-type{background:var(--color-surface, #f3f4f6);color:var(--color-text, #1f2937)}*,*:before,*:after{box-sizing:border-box}:root{--app-nav-height-mobile: 4.25rem;--app-nav-height-desktop: 4rem;font-family:Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#111827;background-color:#fff}html,body,#root{min-height:100%}body{position:relative;margin:0;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{position:relative;z-index:1}.app-shell{min-height:100dvh}.app-shell--with-nav{padding-bottom:calc(var(--app-nav-height-mobile) + env(safe-area-inset-bottom))}a{color:#0f172a;text-decoration:none}a:hover{text-decoration:underline}.dashboard-page{min-height:calc(100dvh - var(--app-nav-height-mobile));display:flex;align-items:center;justify-content:center;padding:0;background:transparent}.practice-page{min-height:calc(100dvh - var(--app-nav-height-mobile));display:flex;align-items:flex-start;justify-content:center;padding:calc(env(safe-area-inset-top) + 1rem) 1.25rem calc(env(safe-area-inset-bottom) + 1rem);background:transparent}.practice-back-button{position:fixed;top:calc(.6rem + env(safe-area-inset-top));left:.85rem;z-index:12;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:.72rem;font-weight:700;padding:.4rem .65rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.practice-back-button:active{background:#e2e8f0}.shell-page{min-height:calc(100dvh - var(--app-nav-height-mobile));display:flex;align-items:center;justify-content:center;padding:1rem}.shell-panel{width:100%;max-width:24rem;border:1px solid #dbe2ea;border-radius:1rem;background:#fffc;padding:1rem;box-shadow:0 10px 28px #0f172a0f}.shell-panel h1{margin:0;font-size:1.4rem}.shell-panel p{margin:.6rem 0 0;color:#475569}.page-loading{width:100%;min-height:inherit;display:grid;place-items:center;padding:1.25rem;animation:page-loading-fade .18s ease-out}.page-loading__content{display:inline-flex;align-items:center;gap:.75rem;opacity:.5;color:#0f172a}.page-loading__spinner{width:1rem;height:1rem;border:2px solid rgba(15,23,42,.16);border-top-color:#0f172a8c;border-radius:999px;animation:page-loading-spin .72s linear infinite}.page-loading__label{margin:0;font-size:.95rem;font-weight:600;letter-spacing:.08em;animation:page-loading-pulse 1.1s ease-in-out infinite}@keyframes page-loading-spin{to{transform:rotate(360deg)}}@keyframes page-loading-fade{0%{opacity:0}to{opacity:1}}@keyframes page-loading-pulse{0%,to{opacity:.72}50%{opacity:1}}@media(min-width:900px){.app-shell--with-nav{padding-bottom:0;padding-top:var(--app-nav-height-desktop)}.dashboard-page,.practice-page,.shell-page{min-height:calc(100dvh - var(--app-nav-height-desktop))}.shell-page{padding:2rem}.shell-panel{max-width:40rem;padding:1.5rem;border-radius:1.25rem;box-shadow:0 16px 36px #0f172a14}.practice-back-button{top:calc(var(--app-nav-height-desktop) + .6rem);left:max(1rem,calc((100vw - 64rem)/2 + 1rem));border:1px solid #e2e8f0;background:#fff}.practice-back-button:hover{background:#f8fafc}}
