@import"https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;500;600;700;800;900&family=Noto+Sans+KR:wght@400;500;700;800;900&display=swap";:root{--ek-control-radius: .75rem;--ek-tile-radius: 1.1rem;--ek-control-depth: 3px;--ek-tile-depth: 4px;--ek-edge: #dcdfd2;--ek-inset: #f7f6ee;--ek-press-duration: .12s}.app-shell .ek-button{--control-edge: var(--ek-edge);--control-depth: var(--ek-control-depth);min-height:2.75rem;border:1px solid var(--ek-border);border-radius:var(--ek-control-radius);box-shadow:0 var(--control-depth) 0 var(--control-edge),inset 0 1px #ffffff30;transform:translateY(0);transition:transform var(--ek-press-duration) ease,box-shadow var(--ek-press-duration) ease,background-color .15s ease,border-color .15s ease;touch-action:manipulation}.app-shell .ek-button--primary{--control-edge: var(--page-accent-dark);background:var(--page-accent);border-color:var(--page-accent);color:#fff}.app-shell .ek-button--soft{--control-edge: color-mix(in srgb, var(--page-accent) 30%, var(--ek-surface));background:var(--page-accent-soft);border-color:color-mix(in srgb,var(--page-accent) 25%,var(--ek-surface));color:var(--page-accent-dark)}.app-shell .ek-button--neutral{background:var(--ek-surface)}.app-shell .ek-button--inverse{--control-edge: var(--page-accent-dark);background:var(--ek-surface);color:var(--ek-ink)}.app-shell .ek-button--on-accent{--control-edge: color-mix(in srgb, var(--page-accent-dark) 85%, #111827);background:var(--page-accent-dark);border-color:color-mix(in srgb,var(--page-accent) 65%,white);color:#fff}.app-shell .ek-button--danger{--control-edge: #edc6cd;border-color:#edc6cd;color:var(--ek-red-dark)}.app-shell .ek-button--danger-fill{--control-edge: var(--ek-red-dark);background:var(--ek-red);border-color:var(--ek-red);color:#fff}.app-shell .ek-button--row{--control-depth: 2px}.app-shell .ek-button--tile{border-radius:var(--ek-tile-radius);--control-depth: var(--ek-tile-depth)}.app-shell .ek-button.is-incorrect{--control-edge: #edc6cd}.app-shell .ek-button[aria-pressed=true]{--control-edge: var(--page-accent);border-color:var(--page-accent);background:var(--page-accent-soft);color:var(--page-accent-dark)}@media(hover:hover){.app-shell .ek-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 calc(var(--control-depth) + 1px) 0 var(--control-edge),inset 0 1px #ffffff45}.app-shell .ek-button--primary:hover:not(:disabled){background:var(--page-accent-dark)}}.app-shell .ek-button:active:not(:disabled){transform:translateY(var(--control-depth));box-shadow:0 0 0 var(--control-edge),inset 0 1px 2px #11182718}.app-shell .ek-button:focus-visible{outline:2px solid var(--page-accent);outline-offset:4px}.app-shell .ek-button:disabled{transform:none;box-shadow:none;cursor:default;opacity:.5}.app-shell .ek-button--primary:disabled{background:var(--ek-inset);border-color:var(--ek-border);color:var(--ek-muted)}.app-shell .ek-tile{--tile-edge: var(--ek-edge);border:1px solid var(--ek-border);border-radius:var(--ek-tile-radius);background:var(--ek-surface);box-shadow:0 var(--ek-tile-depth) 0 var(--tile-edge),inset 0 1px #ffffff40}.app-shell .ek-tile--accent{--tile-edge: color-mix(in srgb, var(--page-paint) 45%, white);background:var(--page-accent-soft);border-color:color-mix(in srgb,var(--page-paint) 35%,white);color:var(--page-accent-dark)}.app-shell .ek-tile--subtle{--ek-tile-depth: 2px}.app-shell .ek-inset{border:1px solid var(--ek-border);border-radius:var(--ek-control-radius);background:var(--ek-inset);box-shadow:inset 0 2px #11182708}.app-shell .ek-mark{border-radius:.65rem;box-shadow:0 2px color-mix(in srgb,var(--page-accent) 22%,var(--ek-surface))}.app-shell .ek-dialog{border-radius:var(--ek-tile-radius);border-color:var(--ek-border);background:var(--ek-surface);box-shadow:0 6px #11182718,0 20px 60px #11182730}.app-shell .ek-dialog::backdrop{background:#172b3b77}.app-shell .course-lesson.is-current .ek-button{--control-edge: color-mix(in srgb, var(--page-accent) 30%, var(--ek-surface))}.app-shell .course-lesson.is-locked .ek-button{opacity:1;background:transparent;border-color:transparent}.app-shell .course-lesson.is-current .ek-mark{box-shadow:0 2px 0 var(--page-accent-dark)}.app-shell .daily-token--answer{--control-depth: 2px}.app-shell .daily-answer.ek-inset{border-style:dashed}.app-shell .profile-setting-toggle.is-on{background:var(--page-accent-soft)}.app-shell .pf-row .sound-toggle{min-width:4.5rem}.app-shell .learning-progress.ek-tile{margin-bottom:1.5rem}@media(max-width:540px){.app-shell .tk-dialog,.app-shell .daily-dialog,.app-shell .course-unit-picker{border-bottom-left-radius:0;border-bottom-right-radius:0}}@media(prefers-reduced-motion:reduce){.app-shell .ek-button{transition:none}.app-shell .ek-button:hover:not(:disabled),.app-shell .ek-button:active:not(:disabled){transform:none}}.app-shell .lesson-instruction{margin:0 0 .65rem;color:var(--ek-ink);font-size:.9rem;font-weight:650;line-height:1.45;letter-spacing:0;text-transform:none}.app-shell .lesson-counter{color:var(--ek-muted);font-size:.75rem;font-variant-numeric:tabular-nums;justify-self:end}.app-shell .lesson-help{margin-block:.75rem;border-top:1px solid var(--ek-border);color:var(--ek-text);font-size:.85rem}.app-shell .lesson-help summary{min-height:44px;padding-block:.75rem;cursor:pointer;font-size:.78rem;font-weight:600}.app-shell .lesson-help summary:focus-visible{outline:2px solid var(--page-accent);outline-offset:2px}.app-shell .lesson-history{flex:0 0 auto}.app-shell .lesson-history[open]>:not(summary){margin-block:.5rem}.app-shell .lesson-continue{width:100%;min-height:48px;padding:.75rem 1rem;font:inherit;font-size:.9rem;font-weight:650;cursor:pointer}.app-shell .primer-conversation__topbar{grid-template-columns:1fr auto}.app-shell .primer-conversation__intro{align-items:flex-start;text-align:left}.app-shell .primer-conversation__title{font-size:.9rem;font-weight:650}.app-shell :is(.contrast-choice__resume,.dialogue-chain__resume,.reading-comp__resume,.scenario-response__resume,.mixed-review__resume){width:auto;min-width:6rem;min-height:44px;border-radius:.65rem;padding:.65rem .85rem;font-size:.8rem;font-weight:650}.app-shell :is(.contrast-choice__scenario,.dialogue-chain__scenario,.scenario-response__scenario,.reading-comp__topic){font-size:1rem;font-weight:650}.app-shell :is(.contrast-choice__intro,.dialogue-chain__intro,.scenario-response__intro,.reading-comp__reading-header){gap:.35rem}.app-shell .placeholder-exercise,.app-shell .scaffold-exercise{width:100%;max-width:42rem;margin:0 auto 1rem;gap:.75rem}.app-shell :is(.placeholder-exercise__hero,.scaffold-exercise__hero){padding:.5rem 0;border:0;border-radius:0;box-shadow:none;background:transparent}.app-shell :is(.placeholder-exercise__title,.scaffold-exercise__title){margin:0 0 .5rem;font-size:1.05rem;font-weight:650}.app-shell :is(.placeholder-exercise__panel,.scaffold-exercise__panel){padding:1.25rem;border:1px solid var(--ek-border);border-radius:1rem;background:var(--ek-surface);box-shadow:0 3px 0 var(--ek-edge)}.app-shell :is(.placeholder-exercise__prompt-label,.placeholder-exercise__answer-label){font-size:.82rem;font-weight:600;letter-spacing:0;text-transform:none}.app-shell .placeholder-exercise__prompt{margin:1rem 0;font-size:clamp(1.4rem,4vw,2rem)}.app-shell .placeholder-exercise__session-meta{font-size:.75rem;color:var(--ek-muted)}.app-shell .placeholder-exercise__answer-card{margin-block:1rem;padding:.9rem;box-shadow:none}.app-shell .placeholder-exercise__actions{flex-wrap:wrap}.app-shell .scaffold-exercise__footer{gap:.75rem;flex-wrap:wrap}.app-shell .scaffold-exercise__footer button{min-height:48px;padding:.7rem 1rem;font-size:.85rem;font-weight:600;cursor:pointer}.app-shell .scaffold-exercise__self-check{display:flex;flex-wrap:wrap;gap:.75rem}.app-shell .scaffold-exercise__self-check p{flex-basis:100%}@media(max-width:540px){.app-shell :is(.placeholder-exercise__panel,.scaffold-exercise__panel){padding:1rem}.app-shell .lesson-instruction{font-size:.85rem}}.app-shell .primer-conversation__transcript>:first-child{margin-top:0}.app-shell .sentence-builder__prompt--source-english{font-size:clamp(1.5rem,6vw,2.2rem);line-height:1.35}.app-shell>.dashboard-page{position:relative}.app-shell .dashboard-session-back{position:absolute;top:.6rem}.app-shell .dashboard-page:has(>.placeholder-exercise,>.scaffold-exercise){align-items:flex-start;padding:3.75rem 1rem 1rem;overflow-y:auto}@media(min-width:900px){.app-shell .dashboard-session-back{top:.6rem}}.app-shell :is(.contrast-choice__line,.dialogue-chain__line,.scenario-response__bubble,.scenario-response__line,.primer-conversation__bubble){--tile-edge: var(--ek-edge);border:1px solid var(--ek-border);border-radius:var(--ek-tile-radius);background:var(--ek-surface);box-shadow:0 var(--ek-tile-depth) 0 var(--tile-edge),inset 0 1px #ffffff40}.app-shell :is(.dialogue-chain__line.is-speaker-b,.contrast-choice__line.is-speaker-b,.primer-conversation__bubble.is-learner,.primer-conversation__bubble--reply,.scenario-response__bubble--reply){--tile-edge: color-mix(in srgb, var(--page-accent) 30%, var(--ek-edge));border-color:color-mix(in srgb,var(--page-accent) 25%,var(--ek-surface));background:var(--page-accent-soft)}.app-shell :is(.primer-conversation__transcript,.scenario-response__setup,.dialogue-chain__lines){overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;padding-top:1.5rem;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 1.5rem);mask-image:linear-gradient(to bottom,transparent 0,#000 1.5rem)}.app-shell .primer-conversation__transcript.is-advanceable{cursor:pointer;-webkit-tap-highlight-color:transparent}.app-shell .primer-conversation__transcript.is-advanceable:focus-visible{outline:2px solid var(--page-accent);outline-offset:2px;border-radius:var(--ek-tile-radius)}.app-shell .primer-conversation__hint{flex-shrink:0;margin:0;padding:.55rem 0 .15rem;color:var(--ek-muted);font-size:.75rem;font-weight:600;text-align:center}@keyframes ek-bubble-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.app-shell :is(.primer-conversation__bubble,.scenario-response__bubble,.dialogue-chain__line){animation:ek-bubble-in .28s cubic-bezier(.22,.61,.36,1) both}@media(prefers-reduced-motion:reduce){.app-shell :is(.primer-conversation__bubble,.scenario-response__bubble,.dialogue-chain__line){animation:none}}.lesson-romanization{display:block;margin-top:.35rem;color:#64748b;font-size:.78rem;font-weight:400;line-height:1.5;overflow-wrap:anywhere}.lesson-romanization-toggle{min-height:44px;padding:.4rem .65rem;border:1px solid var(--ek-border);border-radius:.65rem;background:var(--ek-surface);color:var(--ek-muted);font-size:.75rem;cursor:pointer}.app-shell .primer-conversation__transcript{padding-bottom:10px}.app-shell .primer-conversation{gap:10px}@media(max-width:899px){.app-shell .dashboard-page:has(>.primer-conversation,>.primer){padding-bottom:10px}}.app-nav{position:fixed;inset:auto 0 0;z-index:20;height:calc(var(--app-nav-height-mobile) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--ek-border);background:var(--ek-surface)}.app-nav__inner{height:100%;display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}.app-nav__links{display:contents}.app-nav__brand,.app-nav__sync-slot{display:none}.app-nav__link{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;min-height:2.75rem;color:var(--ek-muted);text-decoration:none;border-top:2px solid transparent;transition:color .15s,background .15s}.app-nav__link svg{width:1.25rem;height:1.25rem;flex-shrink:0}.app-nav__link span{font-size:.65rem;font-weight:650;line-height:1}.app-nav__link.is-active{color:var(--ek-blue);border-color:var(--ek-blue);background:#e8f0fb}.app-nav__link:hover{text-decoration:none;background:var(--ek-canvas)}.app-nav__sync{border:1px solid #eddfcc;border-radius:.65rem;padding:.5rem .7rem;background:#fff7ed;color:#9a3412;font-size:.67rem;font-weight:650;cursor:pointer}.app-nav__sync span{display:inline-block;width:.4rem;height:.4rem;margin-right:.35rem;border-radius:50%;background:currentColor}.app-nav__sync--saving{background:#eff6ff;border-color:#d9e5f3;color:#315fa8;cursor:default}@media(min-width:900px){.app-nav{inset:0 0 auto;height:var(--app-nav-height-desktop);padding-bottom:0;border-top:0;border-bottom:1px solid var(--ek-border)}.app-nav__link{border-top:0;border-bottom:2px solid transparent}.app-nav__inner{max-width:75rem;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1.25rem}.app-nav__brand{display:inline-flex;align-items:center;gap:.7rem;color:var(--ek-ink);font-weight:750;font-size:.92rem;letter-spacing:-.04em;white-space:nowrap}.app-nav__brand:hover{text-decoration:none}.app-nav__brand-mark{width:2.35rem;height:2.5rem;display:inline-flex;align-items:center;justify-content:center;gap:.05rem;border:1px solid var(--ek-border);border-radius:.8rem;background:var(--ek-canvas);box-shadow:0 3px 0 var(--ek-border);font-size:.88rem;font-weight:800}.app-nav__brand-mark i{font-style:normal}.app-nav__brand-mark i:first-child{color:var(--token-adjective-paint)}.app-nav__brand-mark i:last-child{color:var(--token-pronoun-paint)}.app-nav__links{display:flex;align-items:center;gap:.45rem;margin-left:auto}.app-nav__link{flex-direction:row;gap:.5rem;padding:0 1rem;min-height:2.65rem;border:1px solid transparent;border-radius:.7rem}.app-nav__link svg{width:1.05rem;height:1.05rem}.app-nav__link span{font-size:.78rem}.app-nav__link.is-active{border-color:#bed2ee;background:#e8f0fb}.app-nav__sync-slot:has(button){display:inline-flex;max-width:11rem}}@media(max-width:899px){.app-nav__sync-slot{position:absolute;right:.75rem;top:-2.7rem;display:block}}.app-nav__link.is-active{color:var(--page-accent);border-color:var(--page-paint);background:var(--page-accent-soft)}.app-shell:has(.learning-next,.tk-next)+.app-nav{border-top-color:transparent}.beta-banner{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.5rem 2.5rem;background:#eef2f7;border-bottom:1px solid #e5e7eb;position:relative}.beta-banner__text{margin:0;font-size:.7rem;color:#4b5563;text-align:center;line-height:1.4}.beta-banner__text strong{font-weight:700}.beta-banner__close{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:.7rem;color:#92400e;padding:.35rem .45rem;line-height:1;border-radius:.25rem;opacity:.7;transition:opacity .15s ease}.beta-banner__close:hover{opacity:1}:root{--streak-fire: #e4572e;--streak-fire-soft: #fff1e6;--streak-amber: #b86a00;--streak-amber-soft: #fff7e0;--streak-ice: #2f7ea6;--streak-ice-soft: #eaf6fc}.streak-flame{display:block;flex-shrink:0}.app-shell .streak-bar{display:flex;align-items:center;gap:.7rem;width:100%;min-width:0;min-height:3.35rem;padding:.45rem .75rem;border-color:color-mix(in srgb,var(--streak-fire) 22%,white);background:var(--streak-fire-soft);color:var(--ek-ink);text-align:left;cursor:pointer;--control-edge: color-mix(in srgb, var(--streak-fire) 30%, white)}.app-shell .streak-bar.is-warn,.app-shell .streak-bar.is-lost{background:var(--streak-amber-soft);border-color:#f1d8a4;--control-edge: #ecd29a}.app-shell .streak-bar.is-ice{background:var(--streak-ice-soft);border-color:#bfe0ef;--control-edge: #b3d7e8}.app-shell .streak-bar.is-new{background:var(--ek-surface);border-color:var(--ek-border);--control-edge: var(--ek-edge)}.streak-bar__count{display:inline-flex;align-items:center;gap:.2rem;flex-shrink:0}.streak-bar__count strong{min-width:1.4ch;font-size:1.35rem;font-weight:850;letter-spacing:-.04em;color:var(--streak-fire);font-variant-numeric:tabular-nums}.streak-bar.is-warn .streak-bar__count strong,.streak-bar.is-lost .streak-bar__count strong,.streak-bar.is-new .streak-bar__count strong{color:var(--ek-muted)}.streak-bar.is-ice .streak-bar__count strong{color:var(--streak-ice)}.streak-bar__text{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.streak-bar__text strong{font-size:.86rem;font-weight:800;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.streak-bar__text span{font-size:.72rem;color:var(--ek-muted);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.streak-bar.is-warn .streak-bar__text span,.streak-bar.is-lost .streak-bar__text span{color:var(--streak-amber);font-weight:650}.streak-bar__divider{width:1px;align-self:stretch;flex-shrink:0;margin:.15rem .05rem;background:color-mix(in srgb,var(--ek-ink) 16%,transparent)}.streak-bar__freezes{display:inline-flex;align-items:center;gap:.22rem;flex-shrink:0;padding:.3rem .55rem;border-radius:999px;background:var(--ek-blue);color:#fff;font-size:1.05rem;line-height:1}.streak-bar__freezes small{font-size:.8rem;font-weight:800}.streak-week{display:flex;gap:.4rem;margin:0;padding:0;list-style:none;justify-content:center}.streak-week--compact{gap:.2rem;flex-shrink:0}.streak-week__day{display:flex;flex-direction:column;align-items:center;gap:.25rem}.streak-week__dot{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border-radius:50%;border:2px solid var(--ek-border);background:var(--ek-surface);color:#fff;font-size:.8rem;font-weight:800}.streak-week--compact .streak-week__dot{width:.8rem;height:.8rem;border-width:1.5px;font-size:0}.streak-week__day.is-studied .streak-week__dot{background:var(--streak-fire);border-color:var(--streak-fire)}.streak-week__day.is-frozen .streak-week__dot{background:var(--streak-ice);border-color:var(--streak-ice)}.streak-week__day.is-today .streak-week__dot{border-style:dashed;border-color:var(--streak-fire)}.streak-week__label{font-size:.68rem;font-weight:700;color:var(--ek-muted)}@media(max-width:420px){.streak-bar .streak-week--compact{display:none}}.app-shell .streak-sheet{width:min(28rem,calc(100vw - 2rem));padding:1.25rem;border:1px solid var(--ek-border);color:var(--ek-ink)}.streak-sheet__head{display:flex;align-items:center;gap:.9rem;margin-bottom:1rem}.streak-sheet__head h2{margin:0;font-size:1.6rem;font-weight:850;letter-spacing:-.03em}.streak-sheet__head p{margin:.15rem 0 0;color:var(--ek-muted);font-size:.9rem}.streak-sheet__goal{margin:1.1rem 0 .4rem}.streak-sheet__goal>div{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:.35rem}.streak-sheet__goal>div span{color:var(--ek-muted)}.streak-sheet__goal p{margin:.5rem 0 0;font-size:.78rem;color:var(--ek-muted)}.streak-sheet progress,.streak-celebration progress{width:100%;height:.55rem;border:0;border-radius:999px;background:var(--ek-inset);overflow:hidden;appearance:none}.streak-sheet progress::-webkit-progress-bar,.streak-celebration progress::-webkit-progress-bar{background:var(--ek-inset);border-radius:999px}.streak-sheet progress::-webkit-progress-value,.streak-celebration progress::-webkit-progress-value{background:var(--streak-fire);border-radius:999px}.streak-sheet progress::-moz-progress-bar,.streak-celebration progress::-moz-progress-bar{background:var(--streak-fire);border-radius:999px}.streak-sheet__rules{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--ek-border);font-size:.82rem;line-height:1.45;color:var(--ek-text)}.streak-sheet__rules p{margin:0 0 .55rem}.streak-sheet__actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap;margin-top:.75rem}.streak-sheet__actions .ek-button{display:inline-flex;align-items:center;justify-content:center;padding:0 1rem;font-weight:750;font-size:.85rem;text-decoration:none;cursor:pointer}.streak-celebration{--page-accent: var(--streak-fire);--page-accent-dark: #b83d19;--page-accent-soft: var(--streak-fire-soft);--page-paint: #f59e5b}.streak-celebration{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:1rem;background:#172b3b88;animation:streak-fade .18s ease-out}.streak-celebration__card{width:min(24rem,100%);padding:1.6rem 1.35rem 1.25rem;border-radius:1.4rem;background:var(--ek-surface);box-shadow:0 6px #11182718,0 24px 60px #11182740;text-align:center;color:var(--ek-ink);animation:streak-pop .32s cubic-bezier(.2,1.4,.4,1)}.streak-celebration__card.is-milestone{background:linear-gradient(180deg,#fff3e3 0%,var(--ek-surface) 55%)}.streak-celebration__flame{position:relative;width:92px;margin:0 auto .6rem}.streak-celebration__flame .streak-flame{animation:streak-flicker 1.6s ease-in-out infinite;transform-origin:50% 90%}.streak-celebration__flame strong{position:absolute;left:50%;bottom:-.35rem;transform:translate(-50%);min-width:2.2rem;padding:.1rem .5rem;border-radius:999px;background:var(--streak-fire);color:#fff;font-size:1.15rem;font-weight:850;box-shadow:0 3px #b83d19}.streak-celebration h2{margin:.9rem 0 .3rem;font-size:1.5rem;font-weight:850;letter-spacing:-.03em}.streak-celebration p{margin:0 0 1rem;color:var(--ek-text);font-size:.92rem;line-height:1.45}.streak-celebration__goal{margin-top:1rem;text-align:left;font-size:.8rem;color:var(--ek-muted)}.streak-celebration__goal span{display:block;margin-bottom:.3rem;font-weight:700}.streak-celebration__bonus{margin:.8rem 0 0!important;color:var(--streak-ice)!important;font-weight:750}.streak-celebration__actions{display:flex;flex-direction:column;gap:.5rem;margin-top:1.1rem}.streak-celebration__actions .ek-button{width:100%;font-weight:800;font-size:.95rem;cursor:pointer}@keyframes streak-fade{0%{opacity:0}}@keyframes streak-pop{0%{opacity:0;transform:translateY(12px) scale(.94)}}@keyframes streak-flicker{0%,to{transform:scale(1) rotate(0)}50%{transform:scale(1.06,.97) rotate(-1.5deg)}}@media(prefers-reduced-motion:reduce){.streak-celebration,.streak-celebration__card,.streak-celebration__flame .streak-flame{animation:none}}.app-shell .group-pulse{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;border-color:color-mix(in srgb,var(--token-particle-paint) 40%,white);background:color-mix(in srgb,var(--token-particle-paint) 14%,white);color:var(--ek-ink);font-size:.8rem;font-weight:650;line-height:1.35;text-decoration:none;--tile-edge: color-mix(in srgb, var(--token-particle-paint) 40%, white)}.app-shell .group-pulse:hover{text-decoration:none}.group-pulse>span:nth-child(2){flex:1;min-width:0}@media(max-width:380px){.streak-bar__text strong{font-size:.8rem}.streak-bar__text span{font-size:.68rem}}.consent-banner{position:fixed;inset:auto 0 0;z-index:40;padding:.85rem 1rem calc(.85rem + env(safe-area-inset-bottom));border-top:1px solid var(--ek-border);background:var(--ek-surface);box-shadow:0 -6px 24px #0f172a1f}.consent-banner--above-nav{bottom:calc(var(--app-nav-height-mobile) + env(safe-area-inset-bottom))}.consent-banner__inner{display:flex;flex-direction:column;gap:.75rem;max-width:44rem;margin:0 auto}.consent-banner__title{margin:0 0 .25rem;font-size:.9rem;font-weight:750;color:var(--ek-ink)}.consent-banner__body{margin:0;font-size:.78rem;line-height:1.5;color:var(--ek-muted)}.consent-banner__body a{color:inherit;text-decoration:underline}.consent-banner__actions{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.consent-banner__button{width:100%;min-height:2.75rem;padding:.55rem 1rem;border:1px solid var(--ek-border);border-radius:.7rem;background:var(--ek-canvas);color:var(--ek-ink);font:inherit;font-size:.82rem;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}.consent-banner__button:hover{background:var(--ek-inset)}.consent-banner__button:focus-visible{outline:2px solid var(--ek-ink);outline-offset:2px}@media(min-width:48rem){.consent-banner__inner{flex-direction:row;align-items:center;justify-content:space-between;gap:1.5rem;max-width:62rem}.consent-banner__actions{flex-shrink:0;grid-template-columns:auto auto}.consent-banner__button{min-width:7rem}.consent-banner--above-nav{bottom:0}}.app-error{min-height:100dvh;display:grid;place-items:center;padding:1.25rem;background:radial-gradient(circle at top,#edf4ff,#f5f8fc 55%)}.app-error__card{width:min(100%,32rem);padding:2rem 1.35rem;border:1px solid var(--ek-border);border-radius:var(--ek-radius-lg);background:#fff;text-align:center;box-shadow:var(--ek-shadow-md)}.app-error__mark{display:grid;place-items:center;width:3.5rem;height:3.5rem;margin:0 auto 1rem;border-radius:1rem;background:var(--ek-soft-blue);color:var(--ek-blue-dark);font-size:1.55rem;font-weight:900}.app-error__eyebrow{margin:0 0 .35rem;color:var(--ek-blue-dark);font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.app-error h1{margin:0}.app-error p{color:var(--ek-text)}.app-error__actions{display:grid;gap:.65rem;margin-top:1.4rem}.app-error__actions button,.app-error__actions a{min-height:3rem;display:grid;place-items:center;border-radius:.85rem;font-weight:800}.app-error__actions button{border:0;background:var(--ek-blue);color:#fff;cursor:pointer}.app-error__actions a{color:var(--ek-blue-dark)}@media(min-width:600px){.app-error__card{padding:2.5rem}.app-error__actions{grid-template-columns:1fr 1fr}}*,*:before,*:after{box-sizing:border-box}:root{--ek-red: #bd4650;--ek-red-dark: #a03642;--ek-blue: #246a90;--ek-blue-dark: #1d5675;--ek-gold: #dca52d;--ek-green: #287543;--ek-ink: #263d36;--ek-text: #46574f;--ek-muted: #697269;--ek-border: #e4e5da;--ek-canvas: #fffaf1;--ek-surface: #ffffff;--ek-soft-blue: #edf7fb;--ek-soft-red: #fff0f4;--ek-radius-sm: .75rem;--ek-radius-md: 1rem;--ek-radius-lg: 1.5rem;--ek-shadow-sm: 0 8px 22px rgba(26, 48, 78, .06);--ek-shadow-md: 0 18px 42px rgba(26, 48, 78, .09);--ek-focus-ring: 0 0 0 3px rgba(36, 106, 144, .24);--page-accent: var(--ek-blue);--page-accent-soft: var(--ek-soft-blue);--page-accent-dark: var(--ek-blue-dark);--app-nav-height-mobile: 4.25rem;--app-nav-height-desktop: 4.75rem;--practice-font-family: "Noto Sans", "Noto Sans KR", "Segoe UI", sans-serif;--practice-exercise-shell-width: 46rem;--practice-exercise-content-width: 38rem;--practice-exercise-wide-content-width: 41rem;--practice-exercise-chat-bubble-width: 36rem;--practice-exercise-shell-min-height: min( 35rem, calc(100svh - var(--app-nav-height-desktop) - 2.5rem) );--practice-exercise-shell-max-height: min( 48rem, calc(100svh - var(--app-nav-height-desktop) - 2.5rem) );--practice-exercise-shell-padding: 1.45rem 1.7rem;--practice-exercise-shell-radius: 1.4rem;--practice-exercise-shell-shadow: 0 18px 40px rgba(15, 23, 42, .1);font-family:Noto Sans,Noto Sans KR,Segoe UI,sans-serif;color:var(--ek-ink);background-color:var(--ek-canvas)}html,body,#root{min-height:100%}body{position:relative;margin:0;background:var(--ek-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{position:relative;z-index:1}.app-shell{min-height:100dvh}.app-shell--with-nav:has(>.dashboard-page){display:flex;flex-direction:column;height:100dvh}.app-shell--with-nav:has(>.dashboard-page)>.beta-banner{flex-shrink:0}.app-shell--with-nav>.dashboard-page{flex:1;min-height:0}.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}button,input,select,textarea{font:inherit}:is(a,button,input,select,textarea):focus-visible{outline:2px solid var(--ek-blue);outline-offset:3px}html[data-reading-help=off] :is(.daily-card__romanization,.vocab-list__romanization,.primer__example-romanization,.primer__character-romanization,.primer__syllable-romanization){display:none}.dashboard-page{min-height:calc(100dvh - var(--app-nav-height-mobile));display:flex;align-items:center;justify-content:center;padding:0;background:var(--ek-canvas)}.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;min-height:2.75rem;font-size:.78rem;font-weight:700;padding:.4rem .65rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.practice-back-button:active{background:#e2e8f0}.dashboard-session-back{position:fixed;top:calc(.6rem + env(safe-area-inset-top));left:.75rem;z-index:12;border:none;border-radius:999px;background:#f1f5f9;color:#64748b;min-height:2.75rem;font-size:.78rem;font-weight:700;padding:.35rem .6rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}.dashboard-session-back:active{background:#e2e8f0}.dashboard-page,.practice-page,.flashcard,.sentence-builder,.mixed-review,.hangul-builder,.hangul-speed,.reading-comp,.primer,.primer-conversation,.test-out-exercise,.test-out-results{font-family:var(--practice-font-family)}.dashboard-page :is(button,input,select,textarea),.practice-page :is(button,input,select,textarea),.flashcard :is(button,input,select,textarea),.sentence-builder :is(button,input,select,textarea),.mixed-review :is(button,input,select,textarea),.hangul-builder :is(button,input,select,textarea),.hangul-speed :is(button,input,select,textarea),.reading-comp :is(button,input,select,textarea),.primer :is(button,input,select,textarea),.primer-conversation :is(button,input,select,textarea),.test-out-exercise :is(button,input,select,textarea),.test-out-results :is(button,input,select,textarea){font-family:var(--practice-font-family)}:is(.flashcard,.sentence-builder,.mixed-review,.hangul-builder,.hangul-speed,.reading-comp,.contrast-choice,.dialogue-chain,.scenario-response,.primer,.primer-conversation,.cloze-exercise,.recall-exercise,.sequence-exercise,.test-out-exercise) :is(button,input,select,textarea){min-width:0;overflow-wrap:anywhere}.audio-button--icon{width:2.6rem;height:2.6rem;flex-shrink:0}@media(min-width:900px){.flashcard,.sentence-builder,.mixed-review,.hangul-builder,.hangul-speed,.reading-comp,.contrast-choice,.dialogue-chain,.scenario-response,.primer,.primer-conversation{margin:0 auto}.dashboard-session-back{top:calc(var(--app-nav-height-desktop) + .6rem);left:max(1rem,calc((100vw - var(--practice-exercise-shell-width)) / 2 + .75rem));border:1px solid #e2e8f0;background:#fff}.dashboard-session-back:hover{background:#f8fafc}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.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))}.dashboard-page{padding:1.5rem}.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}}.learning-home,.app-nav__link--dashboard{--page-accent: var(--token-pronoun);--page-paint: var(--token-pronoun-paint)}.daily-page,.app-nav__link--daily{--page-accent: var(--token-adjective);--page-paint: var(--token-adjective-paint)}.vc,.app-nav__link--vocab{--page-accent: var(--token-connector);--page-paint: var(--token-connector-paint)}.tk,.app-nav__link--topik{--page-accent: var(--token-adverb);--page-paint: var(--token-adverb-paint)}.pf,.app-nav__link--profile{--page-accent: var(--token-verb);--page-paint: var(--token-verb-paint)}.group-page,.app-nav__link--group{--page-accent: var(--token-particle);--page-paint: var(--token-particle-paint)}:is(.learning-home,.daily-page,.vc,.tk,.pf,.group-page,.app-nav__link){--page-accent-soft: color-mix(in srgb, var(--page-paint) 18%, white);--page-accent-dark: color-mix(in srgb, var(--page-accent) 85%, #213c36)}:is(.flashcard__option,.contrast-choice__option,.dialogue-chain__option,.scenario-response__option,.reading-comp__option,.primer-conversation__option,.mixed-review__option,.mixed-review__bank-word,.sentence-builder__bank-word,.word-reading__option,.hangul-builder__choice,.hangul-speed__option,.topik-listening__option,.topik-reading__option,.placeholder-exercise__option):is(.app-shell *):not(.is-selected,.is-correct,.is-incorrect,.is-wrong,.is-used,.is-dim){border:1px solid var(--ek-border);background:#fff;box-shadow:0 3px #e4e5da;transition:transform .12s ease,box-shadow .12s ease,background .15s ease}:is(.flashcard__option,.contrast-choice__option,.dialogue-chain__option,.scenario-response__option,.reading-comp__option,.primer-conversation__option,.mixed-review__option,.mixed-review__bank-word,.sentence-builder__bank-word,.word-reading__option,.hangul-builder__choice,.hangul-speed__option,.topik-listening__option,.topik-reading__option,.placeholder-exercise__option):is(.app-shell *):active:not(:disabled){transform:translateY(3px);box-shadow:none}.app-shell :is(.word-reading__content,.hangul-builder__content){flex:0 1 auto;margin-block:auto;padding:1.25rem 1rem;border:1px solid #daddd2;border-radius:1.1rem;background:var(--ek-surface);box-shadow:0 4px #e4e5da;min-height:0;overflow-y:auto;overscroll-behavior:contain}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
