@font-face{font-family:Zen Maru Gothic;src:url(/assets/fonts/zen-maru-gothic-medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Huninn;src:url(/assets/fonts/huninn.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans HK;src:url(/assets/fonts/noto-sans-hk-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans HK;src:url(/assets/fonts/noto-sans-hk-medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans HK;src:url(/assets/fonts/noto-sans-hk-bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans JP;src:url(/assets/fonts/noto-sans-jp-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans JP;src:url(/assets/fonts/noto-sans-jp-medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans JP;src:url(/assets/fonts/noto-sans-jp-bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--palette-paper:#fff9ee;--palette-ink:#403832;--palette-action:#295e56;--palette-peach:#f4a88a;--palette-mint:#a8d9c5;--palette-sky:#a8cfe8;--palette-sun:#f2d36b;--color-background:var(--palette-paper);--color-surface:#fff;--color-text:var(--palette-ink);--color-text-muted:#6b6059;--color-border:#e4d9c8;--color-primary:var(--palette-action);--color-primary-contrast:#fff;--color-focus-ring:var(--palette-action);--color-accent-success:var(--palette-mint);--color-accent-calm:var(--palette-sky);--color-accent-celebrate:var(--palette-sun);--color-accent-warm:var(--palette-peach);--color-danger:#b3413a;--font-reading:"Noto Sans HK", "Hiragino Sans", "PingFang HK", system-ui, sans-serif;--font-japanese:"Noto Sans JP", "Noto Sans HK", system-ui, sans-serif;--font-display-zh:"Huninn", var(--font-reading);--font-display-jp:"Zen Maru Gothic", var(--font-japanese);--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--target-size-min:44px;--focus-ring-width:3px;--focus-ring-offset:2px;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-right:env(safe-area-inset-right,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);--status-color-preview:var(--color-text-muted);--status-color-learning:var(--palette-sky);--status-color-practising:var(--palette-peach);--status-color-reviewing:var(--palette-sun);--status-color-mastered:var(--palette-mint)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background-color:var(--color-background);min-width:320px;color:var(--color-text);font-family:var(--font-reading);margin:0;line-height:1.5;overflow-x:hidden}img,svg{max-width:100%;height:auto;display:block}h1,h2,h3{font-family:var(--font-display-zh);color:var(--color-text)}a{color:var(--color-primary)}button{font:inherit;color:inherit}.skip-link{left:var(--space-sm);z-index:100;padding:var(--space-xs) var(--space-md);background-color:var(--color-primary);color:var(--color-primary-contrast);border-radius:var(--radius-sm);text-decoration:none;transition:top .15s ease-in-out;position:absolute;top:-3rem}.skip-link:focus{top:var(--space-sm)}:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus-ring);outline-offset:var(--focus-ring-offset)}.app-header{align-items:center;column-gap:var(--space-md);row-gap:var(--space-sm);padding:var(--space-md) max(var(--space-md), var(--safe-area-right)) var(--space-md) max(var(--space-md), var(--safe-area-left));border-bottom:1px solid var(--color-border);grid-template-columns:1fr auto;grid-template-areas:"brand auth""nav nav";display:grid}@media (width>=640px){.app-header{grid-template-columns:auto 1fr auto;grid-template-areas:"brand nav auth"}}.app-header__brand{min-height:var(--target-size-min);grid-area:brand;justify-self:start;align-items:center;display:inline-flex}.app-header__logo{width:180px;height:auto}.app-header__mark{width:44px;height:auto;display:none}@media (width<=400px){.app-header__logo{display:none}.app-header__mark{display:block}}.level-page__mascot{width:120px;height:auto}.app-header__auth{flex-direction:column;grid-area:auth;align-items:flex-end;min-width:0;display:flex}.app-nav{grid-area:nav;min-width:0}.app-nav__list{gap:var(--space-2xs);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.app-nav__list li{min-width:0}.app-nav__link{width:100%;min-height:var(--target-size-min);min-width:var(--target-size-min);padding:var(--space-2xs) 2px;border-radius:var(--radius-sm);color:var(--color-text);white-space:nowrap;justify-content:center;align-items:center;font-size:clamp(.875rem,4.1vw,1rem);text-decoration:none;display:flex}@media (width>=640px){.app-nav__list{gap:var(--space-sm);flex-wrap:nowrap;display:flex}.app-nav__link{width:auto;padding:var(--space-xs) var(--space-sm);font-size:1rem;display:inline-flex}}.app-nav__link:hover,.app-nav__link.active,.app-nav__link[aria-current=page]{background-color:var(--color-surface);color:var(--color-primary)}main{max-width:72rem;padding:var(--space-lg) max(var(--space-lg), var(--safe-area-right)) calc(var(--space-2xl) + var(--safe-area-bottom)) max(var(--space-lg), var(--safe-area-left));margin:0 auto}.error-boundary{align-items:center;gap:var(--space-md);text-align:center;padding:var(--space-xl) var(--space-md);flex-direction:column;display:flex}.error-boundary__illustration{mix-blend-mode:darken;max-width:20rem}.error-boundary__actions{justify-content:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.error-boundary__actions button,.error-boundary__actions a{min-height:var(--target-size-min);min-width:var(--target-size-min);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background-color:var(--color-surface);cursor:pointer;text-decoration:none}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.button{min-height:var(--target-size-min);min-width:var(--target-size-min);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background-color:var(--color-surface);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.button:disabled{opacity:.6;cursor:not-allowed}.app-nav__auth-button{background:0 0;border:none}.app-nav__auth-error{width:100%;color:var(--color-danger);text-align:right;overflow-wrap:anywhere;font-size:.875rem}@media (width>=640px){.app-nav__auth-error{text-align:left}}.sign-in-invitation{align-items:flex-start;gap:var(--space-md);flex-direction:column;max-width:32rem;display:flex}.onboarding-form{gap:var(--space-lg);flex-direction:column;max-width:32rem;display:flex}.onboarding-field{gap:var(--space-xs);flex-direction:column;display:flex}.onboarding-field select{min-height:var(--target-size-min);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--color-border);background-color:var(--color-surface);color:var(--color-text)}.onboarding-radio-group{gap:var(--space-xs);flex-direction:column;display:flex}.onboarding-radio-option{align-items:center;gap:var(--space-xs);min-height:var(--target-size-min);padding:var(--space-2xs) var(--space-sm);display:inline-flex}.app-footer{padding:var(--space-md) max(var(--space-md), var(--safe-area-right)) calc(var(--space-md) + var(--safe-area-bottom)) max(var(--space-md), var(--safe-area-left));border-top:1px solid var(--color-border);justify-content:center;display:flex}.app-footer a{min-height:var(--target-size-min);align-items:center;display:inline-flex}.japanese-text,.japanese-text ruby,.japanese-text rt{font-family:var(--font-japanese)}.japanese-text rt{color:var(--color-text-muted)}.lesson-pattern{margin-bottom:0;font-size:1.5rem}.button--primary{background-color:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.level-card-list,.unit-list{gap:var(--space-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.level-card{align-items:center;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-surface);flex-wrap:wrap;display:flex}.level-card__link{align-items:center;gap:var(--space-sm);min-height:var(--target-size-min);color:var(--color-text);text-decoration:none;display:inline-flex}.level-card__badge{width:3rem;height:3rem}.level-card__level{font-family:var(--font-display-jp)}.level-card__preview{color:var(--color-text-muted)}.practice-tools{margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:2px solid var(--color-text)}.practice-tools__links{gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));display:grid}.practice-tool-link{align-items:center;gap:var(--space-md);min-height:5.5rem;padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-surface);color:var(--color-text);text-decoration:none;display:flex}.practice-tool-link:first-child{border-left:.5rem solid var(--color-accent-calm)}.practice-tool-link:last-child{border-left:.5rem solid var(--color-accent-warm)}.practice-tool-link svg{width:2rem;height:2rem;color:var(--color-primary);flex:none}.practice-tool-link span{gap:var(--space-2xs);flex-direction:column;display:flex}.practice-tool-link small{color:var(--color-text-muted)}.practice-tool-link:hover{border-color:var(--color-primary)}.unit-card{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-surface);flex-wrap:wrap;display:flex}.unit-card__link{align-items:baseline;gap:var(--space-sm);min-height:var(--target-size-min);color:var(--color-text);flex-wrap:wrap;text-decoration:none;display:inline-flex}.inline-status{align-items:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--color-border);color:var(--color-text);font-size:.875rem;display:inline-flex}.inline-status:before{content:"";background-color:var(--status-accent,currentColor);border-radius:50%;width:.5rem;height:.5rem;display:inline-block}.inline-status--preview{--status-accent:var(--status-color-preview)}.inline-status--learning{--status-accent:var(--status-color-learning)}.inline-status--practising{--status-accent:var(--status-color-practising)}.inline-status--reviewing{--status-accent:var(--status-color-reviewing)}.inline-status--mastered{--status-accent:var(--status-color-mastered)}.inline-status--saving{--status-accent:var(--color-text-muted)}.inline-status--synced{--status-accent:var(--color-primary)}.inline-status--sync-error{--status-accent:var(--color-danger);border-color:var(--color-danger)}.progress-bar{gap:var(--space-2xs);flex-direction:column;min-width:12rem;display:flex}.progress-bar__meter{width:100%;height:.5rem;accent-color:var(--color-primary)}.progress-bar__label{color:var(--color-text-muted);font-size:.875rem}.level-placement-note,.review-status-notice{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);border-left:4px solid var(--color-accent-warm);background-color:var(--color-surface)}.prerequisite-note{color:var(--color-text-muted)}.formation-list,.example-list{gap:var(--space-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.formation-list li,.example-list li{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-surface)}.formation-part-of-speech{margin-right:var(--space-sm);color:var(--color-text-muted);font-size:.875rem;display:inline-block}.example-note{color:var(--color-text-muted);font-size:.875rem}.furigana-toggle{margin:var(--space-sm) 0}.preview-exercise{margin-top:var(--space-xl);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-surface)}.preview-exercise__options{gap:var(--space-xs);margin:0 0 var(--space-md);border:0;flex-direction:column;padding:0;display:flex}.preview-exercise__option{align-items:center;gap:var(--space-xs);min-height:var(--target-size-min);display:flex}.preview-exercise__feedback--correct{color:var(--color-primary)}.preview-exercise__feedback--incorrect{color:var(--color-danger)}.preview-exercise__disclaimer{color:var(--color-text-muted);font-size:.875rem}.dashboard__header{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.dashboard__mascot{flex:none;width:88px;height:auto}.dashboard__section{margin-bottom:var(--space-xl)}.dashboard__today{align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.dashboard__today>div{flex:16rem}.dashboard__illustration{object-fit:cover;mix-blend-mode:darken;width:min(100%,360px);height:auto}.dashboard__streak{margin-bottom:0;font-size:1.5rem;font-weight:700}.dashboard__counts{padding-left:var(--space-lg)}.history__calendar{border-collapse:collapse;margin-bottom:var(--space-xl);width:min(100%,24rem)}.history__calendar caption{text-align:start;margin-bottom:var(--space-xs);font-weight:700}.history__calendar th,.history__calendar td{text-align:center;padding:var(--space-2xs);min-width:2.25rem;height:2.25rem}.history__calendar-day--done{background-color:var(--color-accent-success);border-radius:var(--radius-sm);font-weight:700}.history__calendar td[aria-current=date]{outline:2px solid var(--color-primary);outline-offset:-2px;border-radius:var(--radius-sm)}.history__day{margin-bottom:var(--space-xl)}.history__entries{gap:var(--space-xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.history__entry{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-surface)}.history__entry p{margin:0 0 var(--space-2xs)}.onboarding-field input[type=text]{min-height:var(--target-size-min);padding:var(--space-2xs) var(--space-xs);border:1px solid var(--color-border);border-radius:var(--radius-sm);font:inherit;max-width:100%}.onboarding-field>.button{align-self:flex-start}.settings__hint{color:var(--color-text-muted);margin:0;font-size:.875rem}.settings__error{color:var(--color-danger);margin:0}.settings__account,.account-data{margin-top:var(--space-2xl)}.button--danger{background-color:var(--color-danger);border-color:var(--color-danger);color:#fff}.today__summary{color:var(--color-text-muted)}.today__celebration{align-items:flex-end;gap:var(--space-md);flex-wrap:wrap;display:flex}.today__completion-art{mix-blend-mode:darken;width:min(100%,320px);height:auto}.practice__notice{color:var(--color-text-muted)}.practice__sync{margin:0 0 var(--space-sm)}.practice__sync--error{align-items:flex-start;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-danger);border-radius:var(--radius-md);background-color:var(--color-surface);flex-direction:column;display:flex}.practice__sync--error p{margin:0}.practice__unit{color:var(--color-text-muted);margin-bottom:0}.practice__body{align-items:flex-start;gap:var(--space-md);flex-wrap:wrap;display:flex}.practice-mascot{flex:none;width:96px;height:auto}.practice__body>.activity{flex:16rem;min-width:0}.practice__invitation{margin-top:var(--space-xl);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-surface)}.activity{align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-md);flex-direction:column;display:flex}.activity__prompt{margin:0;font-weight:700}.activity__hint summary{min-height:var(--target-size-min);cursor:pointer;align-items:center;display:inline-flex}.activity__stem,.flashcard__front,.fill-blank__sentence{margin:0;font-size:1.25rem}.activity__translation,.flashcard__mnemonic{color:var(--color-text-muted);margin:0}.activity__options{gap:var(--space-xs);border:0;flex-direction:column;margin:0;padding:0;display:flex}.activity__option{align-items:center;gap:var(--space-xs);min-height:var(--target-size-min);display:flex}.activity__option input{width:1.25rem;height:1.25rem}.activity__actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.activity__feedback:empty{display:none}.activity__feedback{width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);border-left:4px solid var(--color-border);background-color:var(--color-surface)}.activity__feedback p{margin:0 0 var(--space-2xs)}.activity__feedback--correct{border-left-color:var(--color-accent-success)}.activity__feedback--retry{border-left-color:var(--color-accent-warm)}.flashcard__back{gap:var(--space-xs);flex-direction:column;display:flex}.vocabulary-page,.quiz-page{max-width:50rem;margin:0 auto}.study-page__header{align-items:end;gap:var(--space-lg);grid-template-columns:minmax(0,1fr) auto;display:grid}.study-page__header h1{margin-bottom:var(--space-xs)}.study-page__header p{max-width:44rem;margin-bottom:0}.study-level-select{gap:var(--space-2xs);flex-direction:column;font-weight:700;display:flex}.study-level-select select{min-width:7rem;min-height:var(--target-size-min);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);font:inherit}.study-progress{margin:var(--space-xl) 0 var(--space-sm);color:var(--color-text-muted);font-weight:700}.vocabulary-card{gap:var(--space-lg);border:2px solid var(--color-text);border-radius:var(--radius-lg);background-color:var(--color-surface);min-height:26rem;box-shadow:.75rem .75rem 0 var(--color-accent-calm);flex-direction:column;padding:clamp(1.5rem,6vw,3.5rem);display:flex;position:relative}.vocabulary-card__front{justify-content:center;align-items:center;gap:var(--space-md);text-align:center;flex-direction:column;flex:1;display:flex}.vocabulary-card__level{padding:var(--space-2xs) var(--space-sm);background-color:var(--color-accent-celebrate);font-family:var(--font-display-jp);border-radius:999px;align-self:flex-start;font-weight:700}.vocabulary-card__term{font-family:var(--font-display-jp);margin:0;font-size:clamp(2.75rem,12vw,5rem);line-height:1.1}.vocabulary-card__answer{width:100%;padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.vocabulary-card__reading,.vocabulary-card__meaning{margin:0 0 var(--space-xs);font-size:1.25rem}.vocabulary-card__meaning{font-weight:700}.vocabulary-card__example{margin:var(--space-md) 0 0}.vocabulary-card__translation{margin:0 0 var(--space-lg);color:var(--color-text-muted)}.study-complete{padding:var(--space-xl);border:2px solid var(--color-primary);border-radius:var(--radius-lg);background-color:var(--color-surface)}.quiz-setup{align-items:flex-start;gap:var(--space-lg);flex-direction:column;max-width:42rem;display:flex}.quiz-sheet{margin-top:var(--space-xl);border:2px solid var(--color-text);border-radius:var(--radius-md);background-color:var(--color-surface);padding:clamp(1.25rem,4vw,2.5rem)}.quiz-sheet__progress{justify-content:space-between;align-items:center;gap:var(--space-md);margin:calc(clamp(1.25rem, 4vw, 2.5rem) * -1) calc(clamp(1.25rem, 4vw, 2.5rem) * -1) var(--space-lg);padding:var(--space-md) clamp(1.25rem, 4vw, 2.5rem);background-color:var(--color-accent-calm);display:flex}.quiz-sheet__progress h2{margin:0}.quiz-sheet__progress span{font-family:var(--font-display-jp);font-weight:700}.quiz-sheet__unit{color:var(--color-text-muted)}.quiz-sheet__options{gap:var(--space-sm);margin:var(--space-lg) 0;border:0;padding:0;display:grid}.quiz-sheet__option{align-items:center;gap:var(--space-sm);min-height:var(--target-size-min);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;display:flex}.quiz-sheet__option:has(input:checked){border-color:var(--color-primary);background-color:color-mix(in srgb, var(--color-accent-calm) 45%, white)}.quiz-sheet__option input{flex:none;width:1.25rem;height:1.25rem}.quiz-results{gap:var(--space-xl);display:grid}.quiz-score{padding:var(--space-xl);border-left:.75rem solid var(--color-accent-celebrate);background-color:var(--color-surface)}.quiz-score__number{margin:var(--space-sm) 0;font-family:var(--font-display-zh);font-size:clamp(2rem,8vw,3.5rem);line-height:1.1}.quiz-review ol{gap:var(--space-md);padding-left:1.5rem;display:grid}.quiz-review__item{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border)}.quiz-review__item p{margin:var(--space-xs) 0}.quiz-review__status{font-weight:700}@media (width<=39.99rem){.study-page__header{grid-template-columns:1fr;align-items:start}.study-level-select select{width:100%}.vocabulary-card{min-height:23rem;box-shadow:.4rem .4rem 0 var(--color-accent-calm)}}.matching__list,.sentence-order__list{gap:var(--space-xs);flex-direction:column;width:100%;margin:0;padding:0;list-style:none;display:flex}.matching__row{align-items:center;gap:var(--space-xs) var(--space-md);flex-wrap:wrap;display:flex}.matching__item{flex:8rem}.matching__select,.fill-blank__input,.free-text__input{min-height:var(--target-size-min);padding:var(--space-2xs) var(--space-xs);border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:inherit;font:inherit}.matching__select{flex:10rem;max-width:100%}.fill-blank__input{width:6em;margin:0 var(--space-2xs);font-family:var(--font-japanese)}.free-text__source{margin:0;font-size:1.125rem}.free-text__input{width:100%;font-family:var(--font-japanese)}.sentence-order__token{justify-content:space-between;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-surface);flex-wrap:wrap;display:flex}.sentence-order__text{font-size:1.25rem}.sentence-order__controls{gap:var(--space-2xs);display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
