@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;gap:var(--space-md);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);flex-wrap:wrap;display:flex}.app-header__brand{min-height:var(--target-size-min);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-nav__list{gap:var(--space-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.app-nav__link{min-height:var(--target-size-min);min-width:var(--target-size-min);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);color:var(--color-text);align-items:center;text-decoration:none;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);font-size:.875rem}.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)}.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}.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}}
