:root{--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);--study-width:440px;--color-espresso:#3d1f05;--color-walnut:#6b4226;--color-oak:#8b6e52;--color-birch:#c4a882;--color-cream:#e8d5b7;--color-parchment:#f5efe6;--color-paper:#fdf6ec;--btn-again-bg:#c4a882;--btn-again-text:#3d1f05;--btn-hard-bg:#d4b896;--btn-hard-text:#3d1f05;--btn-good-bg:#e8d5b7;--btn-good-text:#6b4226;--btn-easy-bg:#fdf6ec;--btn-easy-text:#6b4226;--font-ui:"Plus Jakarta Sans", sans-serif;--font-accent:"Fredoka", sans-serif;--font-jp:"Noto Sans JP", sans-serif;--font-jp-accent:"M PLUS Rounded 1c", sans-serif;--font-tsu:"Fredoka", "M PLUS Rounded 1c", sans-serif;--font-body:"DM Sans", sans-serif;--font-2xs:10px;--font-xs:11px;--font-sm:13px;--font-base:16px;--font-md:18px;--font-lg:24px;--font-xl:32px;--font-2xl:48px;--font-3xl:80px;--font-4xl:96px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:22px;--radius-full:99px;--ease-wood:cubic-bezier(.22, 1, .36, 1);--dur-fast:.14s;--dur-med:.22s;--dur-slow:.32s;--press-depth:3px;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:var(--color-espresso);--ink-accent:var(--color-walnut);--ink-muted:var(--color-oak);--surface-paper:var(--color-paper);--surface-parchment:var(--color-parchment);--surface-cream:var(--color-cream);--surface-birch:var(--color-birch);--night-paper:#3f2a1c;--night-parchment:#291c14;--night-cream:#513725;--night-birch:#654730;--night-muted:#d0b694}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:var(--color-paper);--ink-accent:var(--color-cream);--ink-muted:var(--night-muted);--surface-paper:var(--night-paper);--surface-parchment:var(--night-parchment);--surface-cream:var(--night-cream);--surface-birch:var(--night-birch)}.review-screen{background:var(--color-walnut);align-items:center;gap:var(--space-3);min-height:0;padding:var(--space-4) var(--space-4) var(--space-5);box-sizing:border-box;font-family:var(--font-ui);flex-direction:column;flex:1;display:flex}.type-pill{background:var(--surface-paper);color:var(--ink-accent);padding:6px var(--space-4);border-radius:var(--radius-full);font-size:var(--font-sm);letter-spacing:.5px;flex-shrink:0;font-weight:700}.review-card{width:100%;min-height:0;max-height:620px;max-width:var(--study-width);background:var(--surface-paper);border-radius:var(--radius-xl);padding:var(--space-5);box-sizing:border-box;flex-direction:column;flex:1;align-items:center;display:flex;overflow-y:auto}.review-card-body{align-items:center;gap:var(--space-4);flex-direction:column;width:100%;margin:auto 0;display:flex}@keyframes card-slide-in{0%{opacity:0;transform:translateY(14px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes card-reveal-lift{0%{opacity:.85;transform:translateY(3px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.review-card{animation:card-slide-in var(--dur-med) var(--ease-wood) both}.review-card--revealed{animation:card-reveal-lift var(--dur-fast) var(--ease-wood) both}.review-card--revealed .review-card-body{gap:var(--space-3)}.review-card--revealed .card-hero{font-size:68px}.review-card--revealed .vocab-word{font-size:44px}.card-hero{font-family:var(--font-jp);color:var(--ink);text-align:center;word-break:break-word;font-size:104px;font-weight:900;line-height:1}.card-hero:disabled{cursor:default}.card-hint{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);text-align:center;font-weight:500}.reveal-btn{width:100%;max-width:var(--study-width);--wood-face:var(--surface-cream);color:var(--ink-accent);border-radius:var(--radius-full);padding:var(--space-4);font-family:var(--font-ui);font-size:var(--font-md);--press-side:var(--color-birch);flex-shrink:0;font-weight:700}.answer-buttons{gap:var(--space-2);width:100%;max-width:var(--study-width);flex-shrink:0;display:flex}.answer-btn{border-radius:var(--radius-lg);padding:var(--space-3) var(--space-1);font-family:var(--font-ui);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-height:58px;display:flex}.btn-label{font-size:var(--font-base);font-weight:700;line-height:1}.btn-interval{font-size:var(--font-xs);opacity:.8;font-weight:600;line-height:1}.btn-again{--wood-face:var(--btn-again-bg);color:var(--btn-again-text);--press-side:var(--color-oak)}.btn-hard{--wood-face:var(--btn-hard-bg);color:var(--btn-hard-text);--press-side:var(--color-birch)}.btn-good{--wood-face:var(--btn-good-bg);color:var(--btn-good-text);--press-side:var(--color-birch)}.btn-easy{--wood-face:var(--btn-easy-bg);color:var(--btn-easy-text);--press-side:var(--color-cream)}.answer-btn,.reveal-btn{transition:transform var(--dur-fast) var(--ease-wood);position:relative;transform:translateY(0)}.answer-btn:active,.reveal-btn:active{transform:translateY(var(--press-depth))}.jp-text{font-family:var(--font-jp)}@media (height<=720px){.review-screen{gap:var(--space-2);padding:var(--space-2) var(--space-4) var(--space-3)}.review-card{padding:var(--space-3) var(--space-4)}.review-card-body{gap:var(--space-2)}.card-hero{font-size:72px}.review-card--revealed .card-hero{font-size:52px}.review-card--revealed .vocab-word{font-size:34px}.card-hint{font-size:var(--font-xs)}.answer-btn{min-height:46px;padding:var(--space-2) var(--space-1)}.btn-label{font-size:var(--font-sm)}.reveal-btn{padding:var(--space-3)}}@media (height<=620px){.review-screen .tsu-wrapper{display:none}}@media (height<=460px){.review-screen{overflow-y:auto}.review-card{min-height:160px}}@media (prefers-reduced-motion:reduce){.review-card,.review-card--revealed,.answer-btn,.reveal-btn{transition:none;animation:none}.answer-btn:active,.reveal-btn:active{transform:none}}.review-tabs{gap:var(--space-1);flex-wrap:wrap;justify-content:center;width:100%;display:flex}.review-tabs button{min-height:40px;padding:var(--space-2);font-size:var(--font-xs);color:var(--ink-accent);border-radius:var(--radius-sm);background:var(--surface-parchment)}.review-tabs .review-tab--active{background:var(--color-walnut);color:var(--color-paper)}.review-card[data-review-tab]:not([data-review-tab=Answer]) .card-hint{display:none}.review-card[data-review-tab]:not([data-review-tab=Answer]) .card-hero{font-size:var(--font-2xl)}.review-card[data-review-tab]:not([data-review-tab=Answer]) .readings-grid,.review-card[data-review-tab]:not([data-review-tab=Answer]) .kanji-meanings,.review-card[data-review-tab]:not([data-review-tab=Answer]) .vocab-pitch,.review-card[data-review-tab]:not([data-review-tab=Answer]) .vocab-reading,.review-card[data-review-tab]:not([data-review-tab=Answer]) .vocab-meanings,.review-card[data-review-tab=Answer] .grammar-section{display:none}.review-card-body{gap:var(--space-3)}:root{--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-anticipate:cubic-bezier(.36, 0, .66, -.56);--dur-celebrate:.6s;--press-depth-lg:6px}.wood-block{--wood-face:var(--surface-cream);--wood-side:var(--color-birch);--wood-depth:var(--press-depth);isolation:isolate;margin-bottom:var(--wood-depth);background:0 0;border:none;position:relative}.wood-block:before,.wood-block:after{content:"";border-radius:inherit;pointer-events:none;position:absolute;left:0;right:0}.wood-block:before{background:var(--wood-face);z-index:-1;top:0;bottom:0}.wood-block:after{top:var(--wood-depth);bottom:calc(var(--wood-depth) * -1);background:var(--wood-side);z-index:-2}.wood-block--cream{--wood-face:var(--surface-cream);--wood-side:var(--color-birch)}.wood-block--birch{--wood-face:var(--surface-birch);--wood-side:var(--color-oak)}.wood-block--oak{--wood-face:var(--color-oak);--wood-side:var(--color-walnut)}.wood-block--walnut{--wood-face:var(--color-walnut);--wood-side:var(--color-espresso)}.wood-block--paper{--wood-face:var(--surface-paper);--wood-side:var(--color-cream)}.wood-block--parchment{--wood-face:var(--surface-parchment);--wood-side:var(--color-cream)}.wood-press{cursor:pointer;transition:transform var(--dur-fast) var(--ease-wood);-webkit-tap-highlight-color:transparent;transform:translateY(0)}.wood-press:active:not(:disabled),.wood-press.is-pressed{transform:translateY(var(--wood-depth))}.wood-press:disabled{cursor:default}@keyframes tsk-pop{0%{transform:scale(1)}40%{transform:scale(1.07)}70%{transform:scale(.98)}to{transform:scale(1)}}.tsk-pop{animation:tsk-pop .36s var(--ease-spring)}@keyframes tsk-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.tsk-shake{animation:tsk-shake .32s var(--ease-wood)}@keyframes tsk-drop{0%{transform:translateY(calc(var(--drop-from,48px) * -1)) scale(1, 1);opacity:0}55%{opacity:1;transform:translateY(0)scale(1)}70%{transform:translateY(0)scale(1.06,.9)}85%{transform:translateY(-2px)scale(.98,1.03)}to{opacity:1;transform:translateY(0)scale(1)}}.tsk-drop{animation:tsk-drop .52s var(--ease-wood) both;transform-origin:50% 100%}@keyframes tsk-breathe{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-3px)scale(1.03)}}.tsk-breathe{animation:2.4s ease-in-out infinite tsk-breathe}@keyframes tsk-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.tsk-float{animation:3.2s ease-in-out infinite tsk-float}@keyframes tsk-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.tsk-rise{animation:tsk-rise var(--dur-slow) var(--ease-wood) both}@keyframes tsk-wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-6deg)}50%{transform:rotate(5deg)}75%{transform:rotate(-3deg)}}.tsk-wiggle{animation:tsk-wiggle .48s var(--ease-wood)}@media (prefers-reduced-motion:reduce){.wood-press{transition:none}.tsk-pop,.tsk-shake,.tsk-drop,.tsk-breathe,.tsk-float,.tsk-rise,.tsk-wiggle{animation:none}}.wood-block--walnut{color:var(--color-paper)}.answer-btn,.reveal-btn,.writing-rate-btn,.practice-btn,.fb-btn-review,.fb-btn-study-all,.fb-due-banner-btn,.fb-btn-lesson,.fb-practice-band-btn,.fb-lesson-chip{isolation:isolate;background:0 0;position:relative}:is(.answer-btn,.reveal-btn,.writing-rate-btn,.practice-btn,.fb-btn-review,.fb-btn-study-all,.fb-due-banner-btn,.fb-btn-lesson,.fb-practice-band-btn,.fb-lesson-chip):before,:is(.answer-btn,.reveal-btn,.writing-rate-btn,.practice-btn,.fb-btn-review,.fb-btn-study-all,.fb-due-banner-btn,.fb-btn-lesson,.fb-practice-band-btn,.fb-lesson-chip):after{content:"";border-radius:inherit;pointer-events:none;position:absolute;left:0;right:0}:is(.answer-btn,.reveal-btn,.writing-rate-btn,.practice-btn,.fb-btn-review,.fb-btn-study-all,.fb-due-banner-btn,.fb-btn-lesson,.fb-practice-band-btn,.fb-lesson-chip):before{background:var(--wood-face);z-index:-1;top:0;bottom:0}:is(.answer-btn,.reveal-btn,.writing-rate-btn,.practice-btn,.fb-btn-review,.fb-btn-study-all,.fb-due-banner-btn,.fb-btn-lesson,.fb-practice-band-btn,.fb-lesson-chip):after{top:var(--press-depth);bottom:calc(var(--press-depth) * -1);background:var(--press-side,var(--color-oak));z-index:-2}.reveal-btn,.practice-btn,.fb-btn-lesson{margin-bottom:var(--press-depth)}@keyframes screen-arrive{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.app-content>*{animation:screen-arrive var(--dur-med) var(--ease-wood)}.practice-card,.writing-empty-card{animation:tsk-rise var(--dur-slow) var(--ease-wood) both}.practice-option--right{animation:tsk-pop var(--dur-slow) var(--ease-wood)}.practice-option--wrong{animation:tsk-shake var(--dur-slow) var(--ease-wood)}.profile-section{animation:tsk-rise var(--dur-slow) var(--ease-wood) both}.profile-toggle-knob{transition:transform var(--dur-med) var(--ease-wood)}.profile-toggle--on .profile-toggle-knob{transform:translate(20px)}.profile-toggle--on{justify-content:flex-start}.profile-choices button{transition:transform var(--dur-fast) var(--ease-wood)}.profile-choices button:active{transform:scale(.96)}.wood-spark{z-index:100;pointer-events:none;width:0;height:0;position:fixed}.wood-spark i{background:var(--color-birch);width:7px;height:7px;animation:chip-burst .6s var(--ease-wood) both;border-radius:2px;position:absolute}.wood-spark i:nth-child(2n){background:var(--color-oak)}@keyframes chip-burst{0%{opacity:0;transform:translate(0)rotate(0)scale(.3)}15%{opacity:1}to{transform:translate(var(--chip-x), var(--chip-y)) rotate(var(--chip-turn)) scale(.4);opacity:0}}:root[data-paused=true] *,:root[data-paused=true] :before,:root[data-paused=true] :after{animation-play-state:paused!important}:root[data-celebrations=off] :is(.wood-spark,.interlude-confetti){display:none}:root[data-celebrations=off] :is(.scene-block-drop,.scene-tsu-land,.lesson-done-char--pop){animation:none!important}:root[data-motion=reduced] *,:root[data-motion=reduced] :before,:root[data-motion=reduced] :after{scroll-behavior:auto!important;transition:none!important;animation:none!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}:root[data-motion=reduced] .lesson-option--right:after{display:none}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--color-walnut);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;height:100%}body{background:var(--color-walnut);height:100vh;font-family:var(--font-ui);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;display:flex;overflow:hidden}@supports (height:100dvh){body{height:100dvh}}#root{flex-direction:column;flex:1;min-height:0;display:flex}button,textarea{font:inherit;color:inherit;background:0 0;border:none;outline:none}button{cursor:pointer}input{font:inherit;border:none;outline:none}[tabindex="-1"],[tabindex="-1"]:focus,[tabindex="-1"]:focus-visible,:focus:not(:focus-visible){outline:none}button:focus-visible,summary:focus-visible{text-underline-offset:4px;text-decoration:underline}input:focus-visible{background:var(--surface-cream)}.app-shell{background:var(--color-walnut);flex-direction:column;flex:1;width:100%;min-height:0;padding:0;display:flex}.app-container{width:100%;min-height:0;padding-top:var(--safe-area-top);background:var(--color-walnut);flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}@media (width>=620px) and (height>=620px){.app-shell{padding:var(--space-6) 0;background:var(--color-espresso);justify-content:center;align-items:center}.app-container{border-radius:28px;flex:none;width:390px;max-height:860px}}.app-content{min-height:0;padding-left:var(--safe-area-left);padding-right:var(--safe-area-right);flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.app-content>*{min-width:0;min-height:0}.speech-status{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.app-container>.onboarding{top:var(--safe-area-top);left:var(--safe-area-left);right:var(--safe-area-right);bottom:var(--safe-area-bottom)}.speech-status--error{clip-path:none;z-index:40;width:auto;height:auto;bottom:var(--space-7);left:var(--space-4);right:var(--space-4);padding:var(--space-3);background:var(--surface-cream);color:var(--ink);border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-sm)}.tsu{flex-shrink:0;display:block;overflow:visible}.tsu g{transform-box:view-box}.tsu-hand-r{--tsu-paw-lag:-1.45s}.tsu--live .tsu-blink-a{animation:4.7s linear infinite tsu-blink}.tsu--live .tsu-blink-b{animation:7.3s linear infinite tsu-blink-double}@keyframes tsu-blink{0%,95.4%,to{transform:scaleY(1)}97.4%{transform:scaleY(.08)}}@keyframes tsu-blink-double{0%,58%,60.6%,62%,64.6%,to{transform:scaleY(1)}59.3%,63.3%{transform:scaleY(.08)}}.tsu--live .tsu-breathe{animation:3.8s ease-in-out infinite tsu-breathe}.tsu--live.tsu--sleepy .tsu-breathe{animation:5.4s ease-in-out infinite tsu-breathe-deep}@keyframes tsu-breathe{0%,to{transform:scale(1)}50%{transform:scale(.996,1.016)}}@keyframes tsu-breathe-deep{0%,to{transform:scale(1)}45%{transform:scale(1.012,1.026)}}.tsu--live .tsu-ear-r{animation:6.1s linear infinite tsu-twitch-r}.tsu--live .tsu-ear-l{animation:9.7s linear -3.2s infinite tsu-twitch-l}@keyframes tsu-twitch-r{0%,88%,to{transform:rotate(0)}90%{transform:rotate(-15deg)}92.5%{transform:rotate(5deg)}95%{transform:rotate(-4deg)}97%{transform:rotate(0)}}@keyframes tsu-twitch-l{0%,91%,to{transform:rotate(0)}93%{transform:rotate(14deg)}95.5%{transform:rotate(-3deg)}97.5%{transform:rotate(0)}}.tsu--live .tsu-tail{animation:3.2s ease-in-out infinite alternate tsu-tail}@keyframes tsu-tail{0%{transform:rotate(-6deg)}to{transform:rotate(8deg)}}.tsu--live .tsu-hand-float{animation:tsu-paw-float 3.6s ease-in-out var(--tsu-paw-lag,0s) infinite}@keyframes tsu-paw-float{0%,to{transform:translate(0)rotate(0)}50%{transform:translateY(-1.3px)rotate(-3deg)}}.tsu--live .tsu-beckon{animation:6.4s ease-in-out infinite tsu-beckon}@keyframes tsu-beckon{0%,52%,to{transform:rotate(0)scale(1)}8%,25%,42%{transform:rotate(-18deg)scale(.96,.84)}16.5%,33.5%{transform:rotate(0)scale(1)}}.tsu--live.tsu--listening .tsu-head,.tsu--live.tsu--thinking .tsu-head{animation:3.4s ease-in-out infinite alternate tsu-head-sway}@keyframes tsu-head-sway{0%{transform:rotate(-2deg)}to{transform:rotate(3deg)}}.tsu--live.tsu--encouraging .tsu-hand-float{animation:tsu-paw-pump 2.6s var(--ease-wood) calc(var(--tsu-paw-lag,0s) * .08) infinite}@keyframes tsu-paw-pump{0%,46%,to{transform:translate(0)}14%{transform:translateY(-1.8px)rotate(-6deg)}28%{transform:translateY(.3px)}}.tsu--live.tsu--cheer .tsu-hand-float{animation:tsu-paw-sway 1.7s ease-in-out calc(var(--tsu-paw-lag,0s) * .3) infinite alternate}@keyframes tsu-paw-sway{0%{transform:translate(0)rotate(-7deg)}to{transform:translateY(-1.6px)rotate(7deg)}}.tsu--live.tsu--sleepy .tsu-hand-float{animation:5.4s ease-in-out infinite tsu-paw-float}.tsu--live.tsu--love .tsu-hand-float{animation:2.4s ease-in-out infinite tsu-paw-squish}@keyframes tsu-paw-squish{0%,to{transform:scale(1)}40%{transform:scale(1.06,.92)}}.tsu--live.tsu--thinking .tsu-hand-r .tsu-hand-float{animation:3.6s ease-in-out infinite tsu-paw-tap}@keyframes tsu-paw-tap{0%,30%,to{transform:translate(0)}8%,22%{transform:translateY(-1.1px)rotate(-5deg)}15%{transform:translateY(.2px)}}.tsu--live.tsu--oops .tsu-hand-r .tsu-hand-float{animation:3.2s ease-in-out infinite tsu-paw-scratch}@keyframes tsu-paw-scratch{0%,44%,to{transform:rotate(0)}8%,24%{transform:rotate(12deg)translateY(.6px)}16%,32%{transform:rotate(-6deg)}}.tsu--live .tsu-z{animation:3.6s ease-in-out infinite tsu-z-drift}.tsu--live .tsu-z-2{animation-delay:-1.2s}.tsu--live .tsu-z-3{animation-delay:-2.4s}@keyframes tsu-z-drift{0%{opacity:0;transform:translate(-1px,2px)scale(.7)}25%,70%{opacity:1}to{opacity:0;transform:translate(2px,-3px)scale(1.1)}}.tsu--live .tsu-twinkle{animation:2.2s ease-in-out infinite tsu-twinkle}.tsu--live .tsu-twinkle-2{animation-delay:-.8s}.tsu--live .tsu-twinkle-3{animation-delay:-1.5s}@keyframes tsu-twinkle{0%,to{transform:scale(1)rotate(0)}50%{transform:scale(.5)rotate(45deg)}}.tsu--live .tsu-float{animation:2.8s ease-in-out infinite tsu-float}.tsu--live .tsu-float-2{animation-delay:-.9s}.tsu--live .tsu-float-3{animation-delay:-1.8s}@keyframes tsu-float{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-2.5px)scale(1.15)}}.tsu--live .tsu-heart-eye{animation:1.2s ease-in-out infinite tsu-pulse}@keyframes tsu-pulse{0%,to{transform:scale(1)}30%{transform:scale(1.14)}55%{transform:scale(.98)}}.tsu--live .tsu-wave-1,.tsu--live .tsu-wave-2{animation:1.6s ease-in-out infinite tsu-sound}.tsu--live .tsu-wave-2{animation-delay:.25s}@keyframes tsu-sound{0%,to{opacity:1}50%{opacity:.25}}.tsu--live .tsu-dot{animation:2.4s ease-in-out infinite tsu-dot}.tsu--live .tsu-dot-2{animation-delay:.3s}.tsu--live .tsu-dot-3{animation-delay:.6s}@keyframes tsu-dot{0%,60%,to{transform:scale(1)}30%{transform:scale(.6)}}.tsu--live .tsu-drop{animation:2.6s ease-in-out infinite tsu-drop}@keyframes tsu-drop{0%,to{transform:translateY(0)}55%{transform:translateY(1.4px)scale(.94,1.06)}}.tsu--act-hop{--tsu-act-dur:.76s}.tsu--act-spin{--tsu-act-dur:.9s}.tsu--act-wave{--tsu-act-dur:1.3s}.tsu--act-nod{--tsu-act-dur:.82s}.tsu--act-clap{--tsu-act-dur:1.2s}.tsu--act-cheer,.tsu--act-tilt{--tsu-act-dur:1.1s}.tsu--act-bow{--tsu-act-dur:1.4s}.tsu--act-hop .tsu-act{animation:tsu-hop var(--tsu-act-dur) linear both}@keyframes tsu-hop{0%{animation-timing-function:cubic-bezier(.33,0,.67,1);transform:none}16%{animation-timing-function:cubic-bezier(.18,.9,.32,1.25);transform:scale(1.1,.86)}46%{animation-timing-function:cubic-bezier(.55,0,.85,.5);transform:translateY(-11px)scale(.94,1.08)}68%{animation-timing-function:cubic-bezier(.34,1.56,.64,1);transform:translateY(0)scale(1.1,.88)}84%{animation-timing-function:var(--ease-wood);transform:scale(.97,1.04)}to{transform:none}}.tsu--act-hop .tsu-hand{animation:tsu-hop-paws var(--tsu-act-dur) ease-in-out both}@keyframes tsu-hop-paws{0%,to{transform:var(--tsu-pose) translate(0px, 0px)}16%{transform:var(--tsu-pose) translate(0px, 1.2px)}46%{transform:var(--tsu-pose) translate(0px, 4px)}68%{transform:var(--tsu-pose) translate(0px, -2.4px)}84%{transform:var(--tsu-pose) translate(0px, .8px)}}.tsu--act-spin .tsu-act{animation:tsu-spin var(--tsu-act-dur) cubic-bezier(.34, 1.56, .64, 1) both}@keyframes tsu-spin{0%{transform:none}12%{transform:scale(1.08,.9)}30%{transform:translateY(-5px)rotate(-10deg)scale(.86,1.05)}48%{transform:translateY(-6px)rotate(8deg)scale(.72,1.06)}66%{transform:translateY(-2px)rotate(-5deg)scale(1.05,.97)}82%{animation-timing-function:var(--ease-wood);transform:rotate(2deg)scale(1.02,.98)}to{transform:none}}.tsu--act-wave .tsu-hand-r{animation:tsu-wave var(--tsu-act-dur) ease-in-out both}@keyframes tsu-wave{0%,to{transform:var(--tsu-pose)}14%{transform:translate(6.4px,-24.6px)rotate(-20deg)}28%{transform:translate(.6px,-25.6px)rotate(18deg)}42%{transform:translate(6.2px,-24.6px)rotate(-18deg)}56%{transform:translate(1.4px,-25.4px)rotate(12deg)}70%{animation-timing-function:var(--ease-wood);transform:translate(5px,-24.8px)rotate(-6deg)}}.tsu--act-nod .tsu-nod{animation:tsu-nod var(--tsu-act-dur) var(--ease-wood) both}@keyframes tsu-nod{0%,to{transform:none}20%{transform:translateY(1.8px)rotate(2deg)scaleY(.96)}42%{transform:translateY(-.8px)}64%{transform:translateY(1.2px)rotate(1deg)scaleY(.98)}84%{transform:translateY(-.3px)}}.tsu--act-clap .tsu-hand-l{animation:tsu-clap-l var(--tsu-act-dur) ease-in-out both}.tsu--act-clap .tsu-hand-r{animation:tsu-clap-r var(--tsu-act-dur) ease-in-out both}.tsu--act-clap .tsu-act{animation:tsu-clap-bounce var(--tsu-act-dur) ease-in-out both}@keyframes tsu-clap-l{0%,to{transform:var(--tsu-pose)}18%,40%,62%{transform:translate(10.4px,-3px)rotate(-14deg)}28%,50%,72%{transform:translate(15.4px,-1px)rotate(8deg)}86%{animation-timing-function:var(--ease-wood);transform:translate(11px,-2px)rotate(-4deg)}}@keyframes tsu-clap-r{0%,to{transform:var(--tsu-pose)}18%,40%,62%{transform:translate(-10.4px,-3px)rotate(14deg)}28%,50%,72%{transform:translate(-15.4px,-1px)rotate(-8deg)}86%{animation-timing-function:var(--ease-wood);transform:translate(-11px,-2px)rotate(4deg)}}@keyframes tsu-clap-bounce{0%,18%,40%,62%,86%,to{transform:none}28%,50%,72%{transform:translateY(-1.4px)scale(1.02,.98)}}.tsu--act-cheer .tsu-act{animation:tsu-cheer-hop var(--tsu-act-dur) linear both}.tsu--act-cheer .tsu-hand-l{animation:tsu-cheer-l var(--tsu-act-dur) ease-in-out both}.tsu--act-cheer .tsu-hand-r{animation:tsu-cheer-r var(--tsu-act-dur) ease-in-out both}@keyframes tsu-cheer-hop{0%{animation-timing-function:cubic-bezier(.33,0,.67,1);transform:none}16%{animation-timing-function:cubic-bezier(.18,.9,.32,1.25);transform:scale(1.08,.88)}40%{animation-timing-function:cubic-bezier(.55,0,.85,.5);transform:translateY(-10px)scale(.95,1.06)}60%{animation-timing-function:cubic-bezier(.34,1.56,.64,1);transform:translateY(0)scale(1.08,.9)}76%{animation-timing-function:var(--ease-wood);transform:scale(.98,1.03)}to{transform:none}}@keyframes tsu-cheer-l{0%,to{transform:var(--tsu-pose)}16%{transform:translate(-4px,-21px)rotate(-16deg)}40%{transform:translate(-5.6px,-24.5px)rotate(-26deg)}60%{transform:translate(-5px,-22px)rotate(-12deg)}78%{animation-timing-function:var(--ease-wood);transform:translate(-5.4px,-23.4px)rotate(-22deg)}}@keyframes tsu-cheer-r{0%,to{transform:var(--tsu-pose)}16%{transform:translate(4px,-21px)rotate(16deg)}40%{transform:translate(5.6px,-24.5px)rotate(26deg)}60%{transform:translate(5px,-22px)rotate(12deg)}78%{animation-timing-function:var(--ease-wood);transform:translate(5.4px,-23.4px)rotate(22deg)}}.tsu--act-tilt .tsu-nod{animation:tsu-tilt var(--tsu-act-dur) var(--ease-wood) both}.tsu--act-tilt .tsu-hand{animation:tsu-tilt-paws var(--tsu-act-dur) var(--ease-wood) both}@keyframes tsu-tilt{0%,to{transform:none}24%{transform:rotate(-13deg)}34%{transform:rotate(-11deg)}72%{transform:rotate(-12deg)}}@keyframes tsu-tilt-paws{0%,to{transform:var(--tsu-pose) translate(0px, 0px)}24%,72%{transform:var(--tsu-pose) translate(0px, -2.6px)}}.tsu--act-bow .tsu-nod{animation:tsu-bow-head var(--tsu-act-dur) var(--ease-wood) both}.tsu--act-bow .tsu-act{animation:tsu-bow-body var(--tsu-act-dur) var(--ease-wood) both}.tsu--act-bow .tsu-eyes{animation:tsu-bow-eyes var(--tsu-act-dur) ease-in-out both}.tsu--act-bow .tsu-hand-l{animation:tsu-bow-l var(--tsu-act-dur) var(--ease-wood) both}.tsu--act-bow .tsu-hand-r{animation:tsu-bow-r var(--tsu-act-dur) var(--ease-wood) both}@keyframes tsu-bow-head{0%,to{transform:none}30%,66%{transform:translateY(3.2px)scaleY(.95)}}@keyframes tsu-bow-body{0%,to{transform:none}30%,66%{transform:scale(1.02,.97)}}@keyframes tsu-bow-eyes{0%,22%,74%,to{transform:scaleY(1)}30%,66%{transform:scaleY(.08)}}@keyframes tsu-bow-l{0%,to{transform:var(--tsu-pose)}30%,66%{transform:translate(14.6px,7.6px)rotate(14deg)}}@keyframes tsu-bow-r{0%,to{transform:var(--tsu-pose)}30%,66%{transform:translate(-14.6px,7.6px)rotate(-14deg)}}.tsu--act-hop .tsu-bell,.tsu--act-spin .tsu-bell,.tsu--act-nod .tsu-bell,.tsu--act-cheer .tsu-bell,.tsu--act-clap .tsu-bell,.tsu--act-bow .tsu-bell{animation:tsu-jingle 1s ease-out calc(var(--tsu-act-dur) * .55) both}@keyframes tsu-jingle{0%,to{transform:rotate(0)}15%{transform:rotate(16deg)}35%{transform:rotate(-11deg)}55%{transform:rotate(6deg)}75%{transform:rotate(-3deg)}}@media (prefers-reduced-motion:reduce){.tsu,.tsu *{animation:none!important}}:root[data-motion=reduced] .tsu,:root[data-motion=reduced] .tsu *{animation:none!important}.onboarding{z-index:30;background:var(--surface-parchment);color:var(--ink);padding:var(--space-5);font-family:var(--font-ui);flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.onboarding-top{flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.onboarding-brand{font-size:var(--font-md);font-weight:800}.onboarding-counter,.onboarding-eyebrow{font-size:var(--font-sm);color:var(--ink-muted)}.onboarding-body>*{flex-shrink:0}.onboarding-body{isolation:isolate;align-items:center;gap:var(--space-3);min-height:0;padding:var(--space-5) 0;flex-direction:column;flex:1;display:flex;overflow:hidden auto}.onboarding-body h1{font-size:var(--font-lg);text-align:center;max-width:320px;line-height:1.25}.onboarding-body>p{font-family:var(--font-body);font-size:var(--font-base);text-align:center;line-height:1.5}.onboarding-body>.onboarding-eyebrow{font-size:var(--font-sm)}.welcome-guide{counter-reset:steps;gap:var(--space-4);width:100%;margin:var(--space-3) 0;padding:0;list-style:none;display:grid}.welcome-guide li{counter-increment:steps;padding-left:44px;position:relative}.welcome-guide li:before{content:counter(steps);border-radius:var(--radius-sm);background:var(--surface-cream);place-items:center;width:30px;height:30px;font-weight:800;display:grid;position:absolute;top:0;left:0}.welcome-guide strong,.welcome-guide span,.welcome-option strong,.welcome-option span{display:block}.welcome-guide span,.welcome-option span{font-family:var(--font-body);font-size:var(--font-sm);margin-top:var(--space-1);line-height:1.5}.welcome-options{gap:var(--space-3);width:100%;display:grid}.welcome-option{background:var(--surface-paper);color:var(--ink);padding:var(--space-4);border-radius:var(--radius-lg);text-align:left;min-height:64px}.welcome-option--chosen{background:var(--color-walnut);color:var(--color-paper)}.welcome-options--row{grid-template-columns:repeat(3,1fr)}.welcome-options--row .welcome-option{text-align:center;padding:var(--space-3) var(--space-2)}.onboarding-body>.welcome-save-note{background:var(--surface-cream);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--font-sm);margin-top:var(--space-3)}.onboarding-actions{align-items:center;gap:var(--space-3);padding-top:var(--space-3);flex-shrink:0;display:flex}.welcome-next{padding:var(--space-4);flex:1;min-height:52px;font-weight:800}.welcome-back{min-width:56px;min-height:48px;color:var(--ink-accent)}.welcome-next{border-radius:var(--radius-lg)}.welcome-field{gap:var(--space-2);width:100%;font-size:var(--font-sm);display:grid}.welcome-field input{background:var(--surface-paper);color:var(--ink);padding:var(--space-4);border-radius:var(--radius-md);width:100%;font-size:var(--font-base)}.onboarding-body h2{font-size:var(--font-md);align-self:flex-start}.welcome-skip{color:var(--ink-muted);font-size:var(--font-sm);min-height:44px;margin-top:var(--space-2)}.guide-link{color:var(--ink-accent);text-align:left;min-height:44px;font-weight:700}@keyframes welcome-arrive{0%{opacity:0}to{opacity:1}}.onboarding-body>*{animation:welcome-arrive var(--dur-slow) var(--ease-wood) both}.onboarding-body>:nth-child(2){animation-delay:40ms}.onboarding-body>:nth-child(3){animation-delay:80ms}.onboarding-body>:nth-child(4){animation-delay:.12s}.onboarding-body>:nth-child(n+5){animation-delay:.16s}.welcome-option{transition:transform var(--dur-fast) var(--ease-wood), background-color var(--dur-fast) var(--ease-wood)}.welcome-option:active{transform:scale(.98)}.onboarding-body .tsu{flex-shrink:0}.iso-block{flex-shrink:0;display:block;overflow:visible}.iso-cube-label{font-family:var(--font-jp);font-weight:900}.path-wrap{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.path-scroll{overscroll-behavior:contain;flex:1;min-height:0;overflow:hidden auto}.path-column{max-width:520px;padding:var(--space-5) var(--space-4);margin:0 auto}.path-section-head{padding:var(--space-3) var(--space-2);gap:var(--space-2);text-align:left;flex-wrap:wrap;align-items:center;width:100%;display:flex}.path-micro,.path-section-count{font-size:var(--font-xs);color:var(--ink-muted)}.path-section-title{font-size:var(--font-base);font-weight:800}.path-section-head .path-block-row,.path-section-head .path-micro{display:none}.path-section-count{margin-left:auto}.path-section-toggle{font-size:var(--font-xs);color:var(--ink-accent)}.path-banner{justify-content:space-between;align-items:center;gap:var(--space-3);background:var(--surface-cream);padding:var(--space-4);border-radius:var(--radius-lg);display:flex}.path-banner-title{font-size:var(--font-base);margin-top:var(--space-1);line-height:1.5}.path-banner-sub{font-size:var(--font-sm);margin-top:var(--space-1);color:var(--ink-accent)}.path-banner-actions{gap:var(--space-2);margin-top:var(--space-3);display:flex}.path-guide-btn{padding:var(--space-2) var(--space-3);min-height:40px;font-size:var(--font-sm);font-weight:700}.path-diorama{flex-shrink:0;width:86px;height:86px}.path-nodes{padding:var(--space-5) 0}.path-row{min-height:116px;padding:var(--space-3) 0;flex-direction:column;align-items:center;display:flex;position:relative}.path-row:before{content:"";background:var(--surface-cream);width:12px;height:80px;top:50px;left:calc(50% + var(--offset,0px) - 6px);border-radius:var(--radius-full);position:absolute;transform:rotate(-20deg)}.path-node{width:66px;height:64px;font-size:var(--font-lg);--press-depth:6px;place-items:center;font-weight:800;display:grid}.path-node--primary{width:76px;height:72px}.path-node--upcoming{color:var(--ink-accent)}.path-node-glyph{font-family:var(--font-jp)}.path-start-tab{padding:var(--space-1) var(--space-3);background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-sm);font-size:var(--font-xs);white-space:nowrap;position:absolute;top:-26px;left:50%;transform:translate(-50%)}.path-node-label{font-size:var(--font-xs);color:var(--ink-accent);margin-top:var(--space-2);text-align:center;font-weight:700;display:block}.path-tsu{pointer-events:none;flex-direction:column;align-items:center;width:104px;display:flex;position:absolute;top:0}.path-tsu--left{right:calc(50% + 47px)}.path-tsu--right{left:calc(50% + 47px)}.path-tsu-bubble{background:var(--surface-paper);padding:var(--space-2);border-radius:var(--radius-md);font-family:var(--font-tsu);font-size:var(--font-xs);line-height:1.45}.path-tsu-tail{gap:var(--space-1);padding:3px;display:flex}.path-tsu-dot{background:var(--surface-paper);border-radius:var(--radius-full);width:5px;height:5px;display:block}.path-popover{z-index:5;width:min(100%,340px);padding:var(--space-4);margin-top:var(--space-4);background:var(--surface-paper);--wood-face:var(--surface-paper);--wood-side:var(--color-cream)}.path-popover-eyebrow{font-size:var(--font-sm);font-weight:800}.path-popover-line,.path-popover-note,.path-guide-note{font-family:var(--font-body);font-size:var(--font-sm);margin:var(--space-3) 0;line-height:1.6}.path-popover-note{color:var(--ink-muted)}.path-popover-big{font-size:var(--font-base);margin:var(--space-3) 0}.path-popover-number{margin-right:var(--space-2);font-weight:800}.path-btn{width:100%;min-height:48px;font-weight:700;font-size:var(--font-sm);padding:var(--space-3)}.path-chips{justify-content:center;gap:var(--space-2);margin:var(--space-3) 0;flex-wrap:wrap;display:flex}.path-chips--left{justify-content:flex-start}.path-chip{background:var(--surface-cream);border-radius:var(--radius-sm);padding:var(--space-2);min-width:40px;color:var(--ink);flex-direction:column;align-items:center;display:flex}.path-chip--learned{background:var(--color-walnut);color:var(--color-paper)}.path-chip-char{font-family:var(--font-jp);font-size:var(--font-lg)}.path-chip-key{font-size:var(--font-xs)}.path-chip--pattern .path-chip-char{font-size:var(--font-base)}.path-compact{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-4);margin-bottom:var(--space-3);font-size:var(--font-sm);display:flex}.path-back{bottom:var(--space-4);align-items:center;gap:var(--space-2);padding:var(--space-3);white-space:nowrap;font-size:var(--font-sm);z-index:8;min-height:44px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.path-guide{z-index:20;align-items:flex-end;display:flex;position:absolute;inset:0}.path-guide-backdrop{background:var(--color-espresso);opacity:.55;position:absolute;inset:0}.path-guide-sheet{background:var(--surface-paper);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-height:92%;padding:var(--space-5);position:relative;overflow-y:auto}.path-guide-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.path-guide-title{font-size:var(--font-md);line-height:1.5}.path-guide-close{min-height:44px;padding:var(--space-2) var(--space-3);font-size:var(--font-sm)}.path-guide-lesson{margin:var(--space-4) 0}.path-guide-grammar{padding:var(--space-4);font-size:var(--font-sm)}.path-guide-grammar li{margin-bottom:var(--space-3)}.path-guide-pattern,.path-guide-meaning{display:block}@media (prefers-reduced-motion:reduce){.path-node{animation:none}}.path-block-row{margin-top:var(--space-3);justify-content:center;gap:3px;display:flex}.path-slot{margin-left:calc(var(--offset,0px) * 2);position:relative}.path-motion,.path-breathe{justify-content:center;display:flex}.path-node{border-radius:var(--radius-xl)}.path-guide-btn,.path-btn,.path-compact{border-radius:var(--radius-md)}.path-start-tab{border-radius:var(--radius-sm)}.path-row:before{width:8px;left:calc(50% + var(--offset,0px) - 4px)}.path-tsu-btn{pointer-events:auto;-webkit-tap-highlight-color:transparent;min-width:44px;min-height:44px;display:block}.tsu-wrapper{width:100%;max-width:var(--study-width);padding-left:var(--space-4);margin-top:var(--space-3);flex-direction:column;align-items:flex-start;display:flex}.tsu-bubble{background:var(--surface-paper);color:var(--ink-accent);border-radius:var(--radius-xl);padding:var(--space-3) var(--space-5);align-items:center;gap:var(--space-2);font-family:var(--font-tsu);font-size:var(--font-sm);max-width:300px;font-weight:400;line-height:1.4;display:flex}.tsu-bubble .tsu{align-self:flex-start}.tsu-phrase{text-align:left;line-height:1.4}.tsu-tail{width:100%;padding-left:var(--space-2);margin-top:var(--space-1);flex-direction:column;align-items:flex-start;gap:3px;display:flex}.tsu-circle{background:var(--surface-paper);border-radius:50%}.tsu-circle-lg{width:8px;height:8px}.tsu-circle-sm{width:5px;height:5px}.tsu-wrapper--stage{flex-direction:column-reverse;align-items:center;width:auto;max-width:320px;margin-top:0;padding-left:0}.tsu-wrapper--stage .tsu-bubble{font-size:var(--font-md);padding:var(--space-4) var(--space-6);justify-content:center}.tsu-wrapper--stage .tsu-tail{margin-top:0;margin-bottom:var(--space-1);flex-direction:column-reverse;align-items:center;padding-left:0}.tsu-wrapper--stage .tsu-phrase{text-align:left}.stroke-order{align-items:center;gap:var(--space-3);flex-direction:column;display:flex}.stroke-order-svg{background:var(--surface-parchment);border-radius:var(--radius-md)}.stroke-order-path{fill:none;stroke:var(--ink-accent);stroke-width:3.5px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:.45s ease-out forwards stroke-order-draw}@keyframes stroke-order-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.stroke-order-path{stroke-dashoffset:0;animation:none}}.stroke-order-replay{background:var(--surface-cream);color:var(--ink-accent);border-radius:var(--radius-full);padding:var(--space-1) var(--space-4);font-family:var(--font-ui);font-size:var(--font-xs);font-weight:700}:root[data-motion=reduced] .stroke-order-path{stroke-dashoffset:0}.pictograph{align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.pictograph-strip{justify-content:center;align-items:center;gap:var(--space-2);width:100%;display:flex}.pictograph-panel{border-radius:var(--radius-md);background:var(--color-parchment);flex-shrink:0;justify-content:center;align-items:center;width:64px;height:64px;display:flex}.pictograph-svg{width:100%;height:100%;display:block;overflow:visible}.pictograph-panel--kanji{background:var(--surface-cream)}.pictograph-kanji{font-family:var(--font-jp);font-weight:900;font-size:var(--font-2xl);color:var(--ink);line-height:1}.pictograph-arrow{color:var(--ink-muted);font-family:var(--font-ui);font-size:var(--font-md);flex-shrink:0}.pictograph-caption{text-align:center;font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted);margin:0}@media (prefers-reduced-motion:reduce){.pictograph-svg *{transition:none!important;animation:none!important}}.radicals-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.radical-box{background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-sm);padding:var(--space-2) 10px;flex-direction:column;align-items:center;gap:2px;min-width:52px;display:flex}.radical-char{font-size:var(--font-md);font-weight:700;line-height:1.1}.radical-keyword{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.02em;color:var(--color-birch);text-align:center;font-weight:600;line-height:1.2}.radical-plus{color:var(--ink-muted);font-weight:700;font-size:var(--font-md)}.mnemonic-head{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.mnemonic-label{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);font-weight:700}.mnemonic-edit{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-accent);cursor:pointer;background:0 0;padding:0;font-weight:600}.mnemonic-text{margin:0}.mnemonic-input{background:var(--surface-paper);border-radius:var(--radius-sm);width:100%;padding:var(--space-2);font-family:var(--font-body);font-size:var(--font-base);color:var(--ink);resize:none;line-height:1.5}.mnemonic-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);display:flex}.mnemonic-btn{background:var(--surface-cream);color:var(--ink-accent);border-radius:var(--radius-full);font-family:var(--font-ui);cursor:pointer;padding:6px 14px;font-size:12px;font-weight:600}.mnemonic-btn--save{background:var(--color-walnut);color:var(--color-paper)}.mnemonic-box{background:var(--surface-parchment);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);width:100%;color:var(--ink);font-family:var(--font-body);text-align:center;box-sizing:border-box;font-size:14px;line-height:1.5}.reading-cell{background:var(--surface-cream);border-radius:var(--radius-md);padding:10px var(--space-3);align-items:center;gap:var(--space-1);flex-direction:column;display:flex}.reading-label{font-size:var(--font-xs);color:var(--ink-muted);letter-spacing:1px;font-weight:800}.reading-value{font-size:var(--font-md);color:var(--ink)}.kanji-meanings{color:var(--ink-accent);font-size:var(--font-md);text-align:center;font-weight:700}.stroke-section{align-items:center;gap:var(--space-1);flex-direction:column;display:flex}.stroke-section-label{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);font-weight:700}.readings-grid{gap:var(--space-2);grid-template-columns:1fr 1fr;width:100%;display:grid}.reading-cell{background:var(--surface-cream);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex}.reading-cell:disabled{opacity:.55;cursor:default}.reading-speaker{font-size:var(--font-2xs);opacity:.75;margin-left:4px}@media (height<=720px){.reading-value{font-size:var(--font-base)}.reading-cell{padding:var(--space-1) var(--space-2)}}.kana-romaji{font-family:var(--font-ui);font-weight:700;font-size:var(--font-md);color:var(--ink-muted);text-align:center;margin-top:8px}.kana-group-label{font-family:var(--font-ui);font-weight:500;font-size:var(--font-xs);color:var(--ink-muted);text-align:center;margin-top:var(--space-2)}.kana-mnemonic-section{background:var(--surface-cream);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.kana-mnemonic-label{font-family:var(--font-ui);font-weight:600;font-size:var(--font-xs);color:var(--ink-muted);letter-spacing:1.2px;text-transform:uppercase;margin-bottom:var(--space-2)}.kana-mnemonic-text{font-family:var(--font-body);color:var(--ink);font-size:14px;font-weight:400;line-height:1.6}.furigana{font-family:var(--font-jp);line-height:2.1}.furigana ruby{ruby-align:center}.furigana rt{font-family:var(--font-jp);color:var(--ink-muted);-webkit-user-select:none;user-select:none;font-size:.5em;font-weight:400;line-height:1.1}.vocab-word{font-size:60px}.vocab-word:disabled{cursor:default;cursor:default}.vocab-reading{font-family:var(--font-jp);font-size:var(--font-lg);color:var(--ink-accent);font-weight:700}.vocab-pitch{justify-content:center;align-items:flex-start;display:flex}.vocab-pitch-mora{flex-direction:column;align-items:center;display:flex;position:relative}.vocab-pitch-bar{background:0 0;width:100%;min-width:22px;height:2px;margin-bottom:3px}.vocab-pitch-bar--high{background:var(--color-walnut)}.vocab-pitch-char{font-size:var(--font-lg);color:var(--ink-accent);font-weight:700;line-height:1.2}.vocab-pitch-drop{background:var(--color-walnut);width:2px;height:9px;position:absolute;top:0;right:0}.vocab-meanings{font-family:var(--font-body);font-size:var(--font-md);color:var(--ink);text-align:center;line-height:1.4}.vocab-parts{background:var(--surface-parchment);border-radius:var(--radius-md);width:100%;padding:var(--space-3) var(--space-4)}.vocab-parts-label{font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);margin-bottom:var(--space-2);font-weight:700}.vocab-parts-row{gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.vocab-part{background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-sm);padding:var(--space-2) 10px;flex-direction:column;align-items:center;gap:2px;min-width:52px;display:flex}.vocab-part-char{font-size:var(--font-md);font-weight:700;line-height:1.1}.vocab-part-meaning{font-family:var(--font-ui);font-size:var(--font-2xs);color:var(--color-birch);text-align:center;font-weight:600;line-height:1.2}.vocab-mnemonic-box{background:var(--surface-parchment);border-radius:var(--radius-md);width:100%;padding:var(--space-3) var(--space-4);color:var(--ink)}.vocab-mnemonic-head{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.vocab-mnemonic-label{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);font-weight:700}.vocab-mnemonic-edit{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-accent);cursor:pointer;background:0 0;padding:0;font-weight:600}.vocab-mnemonic-text{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink);margin:0;line-height:1.5}.vocab-mnemonic-text--empty{color:var(--ink-muted)}.vocab-mnemonic-input{background:var(--surface-paper);border-radius:var(--radius-sm);width:100%;padding:var(--space-2);font-family:var(--font-body);font-size:var(--font-base);color:var(--ink);resize:none;line-height:1.5}.vocab-mnemonic-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);display:flex}.vocab-mnemonic-btn{background:var(--surface-cream);color:var(--ink-accent);border-radius:var(--radius-full);font-family:var(--font-ui);font-size:var(--font-xs);cursor:pointer;padding:6px 14px;font-weight:600}.vocab-mnemonic-btn--save{background:var(--color-walnut);color:var(--color-paper)}.sentence-jp{font-family:var(--font-jp);font-size:var(--font-lg);color:var(--ink);text-align:center;width:100%;font-weight:700;line-height:2.1}.sentence-mode{background:var(--surface-cream);color:var(--ink-accent);border-radius:var(--radius-full);padding:4px var(--space-3);font-family:var(--font-ui);font-size:var(--font-xs);letter-spacing:.03em;font-weight:700}.sentence-en{font-family:var(--font-body);font-size:var(--font-base);color:var(--ink-accent);text-align:center;line-height:1.5}.sentence-parts{background:var(--surface-parchment);border-radius:var(--radius-md);width:100%;padding:var(--space-3)}.sentence-parts-label{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);margin-bottom:var(--space-2);font-weight:700}.sentence-parts-row{gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.sentence-part{background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-sm);padding:var(--space-2) 10px;flex-direction:column;align-items:center;gap:2px;min-width:48px;display:flex}.sentence-part-char{font-size:var(--font-md);font-weight:700;line-height:1.1}.sentence-part-meaning{font-family:var(--font-ui);font-size:var(--font-2xs);color:var(--color-birch);text-align:center;font-weight:600;line-height:1.2}.grammar-name{font-family:var(--font-jp);color:var(--ink);text-align:center;font-size:34px;font-weight:900;line-height:1.25}.grammar-name:disabled{cursor:default}.grammar-meaning{font-family:var(--font-ui);font-size:var(--font-md);color:var(--ink-accent);text-align:center;font-weight:700}.grammar-section{background:var(--surface-parchment);border-radius:var(--radius-md);width:100%;padding:var(--space-3)}.grammar-section-label{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);margin-bottom:var(--space-2);font-weight:700}.grammar-formation{font-family:var(--font-jp);font-size:var(--font-sm);color:var(--ink-accent);font-weight:700}.grammar-section-text{font-family:var(--font-body);color:var(--ink);font-size:14px;line-height:1.55}.grammar-examples{gap:var(--space-2);flex-direction:column;width:100%;display:flex}.grammar-example{background:var(--surface-parchment);border-radius:var(--radius-md);width:100%;padding:var(--space-3);text-align:left;flex-direction:column;align-items:flex-start;gap:4px;display:flex}.grammar-example-jp{font-size:var(--font-base);color:var(--ink)}.grammar-example-en{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted)}.grammar-related{width:100%}.grammar-related-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.grammar-related-chip{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--color-paper);background:var(--color-walnut);border-radius:var(--radius-full);padding:4px var(--space-3);font-weight:600}@media (height<=720px){.grammar-name{font-size:var(--font-lg)}}.tsu-interlude{z-index:30;justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-6) var(--space-5);background:var(--color-walnut);color:var(--color-paper);--surface-paper:var(--color-paper);--surface-cream:var(--color-cream);--ink:var(--color-espresso);--ink-accent:var(--color-walnut);cursor:pointer;animation:interlude-fade var(--dur-fast) ease-out both;flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.tsu-interlude>:not(.interlude-confetti){z-index:1;flex-shrink:0;position:relative}.interlude-stage{place-items:center;width:236px;height:236px;display:grid;position:relative}.interlude-halo{background:var(--color-oak);animation:interlude-halo .46s var(--ease-spring) 40ms both;border-radius:50%;position:absolute;inset:0}.interlude-tsu{animation:interlude-rise .52s var(--ease-spring) .12s both;place-items:center;display:grid;position:relative}.tsu-interlude--miss .interlude-halo{background:var(--color-oak);opacity:.8}.tsu-interlude .tsu-wrapper{animation:interlude-pop .38s var(--ease-spring) .3s both}.interlude-badge{font-family:var(--font-accent);font-size:var(--font-sm);background:var(--color-birch);color:var(--color-espresso);padding:var(--space-1) var(--space-4);border-radius:var(--radius-full);animation:interlude-pop .36s var(--ease-spring) .44s both}.interlude-go{--wood-depth:var(--press-depth-lg);min-width:220px;min-height:56px;padding:var(--space-4) var(--space-8);border-radius:var(--radius-lg);color:var(--color-walnut);font-family:var(--font-ui);font-size:var(--font-base);animation:interlude-rise .42s var(--ease-wood) .52s both;font-weight:800}.interlude-confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.interlude-chip{top:-24px;left:var(--x);width:var(--size);height:calc(var(--size) * 1.5);background:var(--tone);animation:interlude-fall var(--dur) cubic-bezier(.3, .1, .6, 1) var(--delay) both;border-radius:2px;position:absolute}@keyframes interlude-fade{0%{opacity:0}to{opacity:1}}@keyframes interlude-halo{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes interlude-rise{0%{opacity:0;transform:translateY(22px)scale(.92)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes interlude-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes interlude-fall{0%{opacity:0;transform:translate(0,0)rotate(0)}10%{opacity:1}to{transform:translate3d(var(--drift), var(--fall,100vh), 0) rotate(var(--turn));opacity:.9}}@supports (height:100dvh){.tsu-interlude{--fall:100dvh}}.tsu-cheer{--fall:240px;flex-shrink:0;place-items:center;width:168px;height:168px;display:grid;position:relative}.tsu-cheer .interlude-halo{background:var(--color-oak)}.tsu-cheer .interlude-tsu{z-index:1}.tsu-cheer .interlude-confetti{inset:-48px -64px -24px}:root[data-celebrations=off] .tsu-cheer .interlude-confetti{display:none}@media (height<=700px){.interlude-stage{width:180px;height:180px}.interlude-tsu svg{width:136px;height:auto}.tsu-cheer{width:132px;height:132px}}@media (prefers-reduced-motion:reduce){.tsu-interlude,.interlude-halo,.interlude-tsu,.tsu-interlude .tsu-wrapper,.interlude-badge,.interlude-go,.interlude-chip{animation:none}.tsu-cheer .interlude-confetti,.interlude-confetti{display:none}}.feed-screen{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.feed-progress-blocks{padding:var(--space-2) var(--space-4) 0;flex-shrink:0;justify-content:center;align-items:center;gap:3px;display:flex}.feed-progress-blocks .iso-block path{transition:fill var(--dur-med) var(--ease-wood)}@media (prefers-reduced-motion:reduce){.feed-progress-blocks .iso-block path{transition:none}}.feed-session-header{padding:var(--space-2) var(--space-4);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.feed-session-back{color:var(--color-parchment);font-family:var(--font-ui);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:14px;font-weight:600}.feed-session-info{color:var(--color-birch);font-family:var(--font-ui);font-size:var(--font-sm);font-weight:500}.feed-loading-screen{background:var(--color-walnut);justify-content:center;align-items:center;display:flex}.feed-loading-text{color:var(--color-birch);font-family:var(--font-ui);font-size:var(--font-md);font-weight:600}.feed-done{background:var(--color-walnut);justify-content:center;align-items:center;gap:var(--space-4);flex-direction:column;height:100%;display:flex}.feed-done-kanji{font-family:var(--font-jp);font-size:var(--font-3xl);color:var(--color-paper);margin:0;font-weight:900;line-height:1}.feed-done-sub{font-family:var(--font-ui);font-size:var(--font-lg);color:var(--color-birch);margin:0;font-weight:600}.feed-done-home-btn{background:var(--surface-paper);color:var(--ink-accent);border-radius:var(--radius-full);padding:var(--space-3) var(--space-8);font-family:var(--font-ui);font-size:var(--font-base);cursor:pointer;margin-top:var(--space-2);border:none;font-weight:700}.feed-back-btn{background:var(--surface-cream);color:var(--ink);border-radius:var(--radius-full);padding:var(--space-3) var(--space-6);font-family:var(--font-ui);cursor:pointer;border:none;font-size:14px;font-weight:600}.feed-empty{background:var(--color-walnut);justify-content:center;align-items:center;gap:var(--space-4);height:100%;padding:var(--space-8);flex-direction:column;display:flex}.feed-empty-jp{font-family:var(--font-jp);font-size:var(--font-base);color:var(--color-paper);text-align:center;margin:0;font-weight:400}.feed-empty-en{font-family:var(--font-ui);color:var(--color-paper);opacity:.8;text-align:center;margin:0;font-size:14px;font-weight:400}@keyframes feed-progress-drop{0%{opacity:0;transform:translateY(-7px)scale(1)}50%{opacity:1;transform:translateY(0)scale(1)}68%{transform:translateY(0)scale(1.14,.82)}84%{transform:translateY(-1px)scale(.96,1.05)}to{opacity:1;transform:translateY(0)scale(1)}}.feed-progress-block--filled{transform-box:fill-box;transform-origin:50% 100%;animation:feed-progress-drop .38s var(--ease-wood) both}@media (prefers-reduced-motion:reduce){.feed-progress-block--filled{animation:none}}.feed-save-error{color:var(--color-paper);background:var(--color-espresso);padding:var(--space-3);font-size:var(--font-sm);line-height:1.5}.scene-svg{width:100%;display:block;overflow:visible}.home-hero{max-width:220px;margin:0 auto}.lesson-complete-scene{max-width:240px;margin:0 auto}.empty-state-scene{max-width:160px;margin:0 auto}.empty-state-wrap{align-items:center;gap:var(--space-3);padding:var(--space-4) 0;flex-direction:column;display:flex}.empty-state-text{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);text-align:center}@keyframes scene-block-fall{0%{opacity:0;animation-timing-function:cubic-bezier(.5,0,.9,.55);transform:translateY(-34px)scale(1)}12%{opacity:1}50%{transform:translateY(0)scale(1)}64%{transform:translateY(0)scale(1.1,.84)}80%{transform:translateY(-1.5px)scale(.97,1.04)}to{opacity:1;transform:translateY(0)scale(1)}}.scene-block-drop{transform-box:fill-box;transform-origin:50% 100%;animation:.44s ease-out both scene-block-fall}@keyframes scene-tsu-land{0%{opacity:0;animation-timing-function:cubic-bezier(.5,0,.9,.55);transform:translateY(-30px)scale(1)}10%{opacity:1}35%{animation-timing-function:ease-out;transform:translateY(0)scale(1.1,.86)}58%{animation-timing-function:ease-in;transform:translateY(-9px)scale(.95,1.07)}78%{animation-timing-function:ease-out;transform:translateY(0)scale(1.05,.95)}to{opacity:1;transform:translateY(0)scale(1)}}.scene-tsu-land{transform-box:fill-box;transform-origin:50% 100%;animation:.52s ease-out both scene-tsu-land}@media (prefers-reduced-motion:reduce){.scene-block-drop,.scene-tsu-land{opacity:1;animation:none;transform:none}}.lesson-screen{background:var(--color-walnut);align-items:center;gap:var(--space-3);min-height:0;padding:var(--space-4);box-sizing:border-box;font-family:var(--font-ui);flex-direction:column;flex:1;display:flex;position:relative}.lesson-screen--message{text-align:center;justify-content:center;gap:var(--space-4)}.lesson-header{width:100%;max-width:var(--study-width);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.lesson-back{font-size:var(--font-base);color:var(--color-paper);font-weight:600}.lesson-progress{font-size:var(--font-sm);color:var(--color-birch);font-weight:500}.lesson-dots{flex-shrink:0;gap:6px;max-width:100%;display:flex}.lesson-dot{border-radius:var(--radius-full);background:var(--color-oak);flex-shrink:1;width:26px;height:4px}.lesson-dot--done{background:var(--surface-paper)}.lesson-card{width:100%;min-height:0;max-height:620px;max-width:var(--study-width);background:var(--surface-paper);border-radius:var(--radius-xl);padding:var(--space-5);box-sizing:border-box;flex-direction:column;flex:1;display:flex;overflow-y:auto}.lesson-card-body{align-items:center;gap:var(--space-3);flex-direction:column;width:100%;margin:auto 0;display:flex}.lesson-hero{font-family:var(--font-jp);color:var(--ink);text-align:center;font-size:88px;font-weight:900;line-height:1}.lesson-hero--word{font-size:56px}.lesson-hero--grammar{font-size:var(--font-2xl);line-height:1.3}.lesson-grammar-gloss{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);text-align:center;font-weight:600}.lesson-meaning{font-family:var(--font-ui);font-size:var(--font-lg);color:var(--ink-accent);text-align:center;font-weight:700;line-height:1.2}.lesson-reading{font-family:var(--font-ui);font-size:var(--font-xl);color:var(--ink-accent);font-weight:700}.lesson-vocab-reading{font-family:var(--font-jp);font-size:var(--font-lg);color:var(--ink-accent);font-weight:700}.lesson-hint{font-size:var(--font-xs);color:var(--ink-muted)}.lesson-section{background:var(--surface-parchment);border-radius:var(--radius-md);width:100%;padding:var(--space-3)}.lesson-section-label{font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);margin-bottom:var(--space-2);font-weight:700}.lesson-section-text{font-family:var(--font-body);color:var(--ink);font-size:14px;line-height:1.55}.lesson-blocks{gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.lesson-block{background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-sm);padding:var(--space-2) 10px;flex-direction:column;align-items:center;gap:2px;min-width:52px;display:flex}.lesson-block-char{font-size:var(--font-md);font-weight:700;line-height:1.1}.lesson-block-keyword{font-size:var(--font-2xs);color:var(--color-birch);font-weight:600;line-height:1.2}.lesson-readings{gap:var(--space-2);grid-template-columns:1fr 1fr;width:100%;display:grid}.lesson-reading-cell{background:var(--surface-cream);border-radius:var(--radius-md);padding:var(--space-2);text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex}.lesson-reading-cell:disabled{opacity:.55;cursor:default}.lesson-reading-label{font-size:var(--font-xs);color:var(--ink-muted);letter-spacing:1px;font-weight:800}.lesson-reading-value{font-size:var(--font-base);color:var(--ink)}.lesson-nav{gap:var(--space-2);width:100%;max-width:var(--study-width);flex-shrink:0;display:flex}.lesson-btn{background:var(--surface-cream);color:var(--ink-accent);border-radius:var(--radius-full);padding:var(--space-4);font-family:var(--font-ui);font-size:var(--font-base);flex:1;font-weight:700}.lesson-btn--primary{background:var(--surface-paper);color:var(--ink-accent);flex:2}.lesson-btn:disabled{opacity:.45;cursor:default}.lesson-screen>.lesson-btn{width:100%;max-width:var(--study-width);flex:none}.lesson-quiz-card{width:100%;min-height:0;max-height:620px;max-width:var(--study-width);background:var(--surface-paper);border-radius:var(--radius-xl);padding:var(--space-5);justify-content:center;align-items:center;gap:var(--space-2);box-sizing:border-box;flex-direction:column;flex:1;display:flex}.lesson-quiz-char{font-family:var(--font-jp);font-weight:900;font-size:var(--font-4xl);color:var(--ink);line-height:1}.lesson-quiz-char--word{font-size:60px}.lesson-quiz-char--grammar{font-size:var(--font-2xl);line-height:1.3}.lesson-quiz-example{font-size:var(--font-base);color:var(--ink);text-align:center}.lesson-quiz-prompt{font-size:var(--font-sm);color:var(--ink-muted)}.lesson-options{gap:var(--space-2);width:100%;max-width:var(--study-width);flex-shrink:0;grid-template-columns:1fr 1fr;display:grid}.lesson-option{background:var(--surface-cream);color:var(--ink);border-radius:var(--radius-lg);padding:var(--space-3);font-family:var(--font-ui);font-size:var(--font-sm);min-height:52px;font-weight:600;line-height:1.25}.lesson-option--right{background:var(--surface-paper);color:var(--ink-accent);font-weight:800}.lesson-option--wrong{background:var(--color-oak);color:var(--color-paper)}.lesson-option--dim{opacity:.4;transition:opacity var(--dur-med) var(--ease-wood)}@keyframes lesson-option-pop{0%{background-color:var(--surface-cream);transform:scale(1)}35%{background-color:var(--surface-paper);transform:scale(1.06)}65%{transform:scale(.985)}to{background-color:var(--surface-paper);transform:scale(1)}}@keyframes lesson-option-ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.1,1.45)}}.lesson-option--picked.lesson-option--right{animation:lesson-option-pop .38s var(--ease-wood) both;position:relative}.lesson-option--picked.lesson-option--right:after{content:"";border-radius:inherit;background:var(--surface-paper);z-index:-1;pointer-events:none;animation:.42s ease-out both lesson-option-ring;position:absolute;inset:0}.lesson-option--wrong{animation:tsk-shake .32s var(--ease-wood)}@keyframes lesson-option-reveal{0%{background-color:var(--surface-cream);color:var(--ink);transform:scale(1)}45%{background-color:var(--surface-paper);color:var(--ink-accent);transform:scale(1.04)}to{background-color:var(--surface-paper);color:var(--ink-accent);transform:scale(1)}}.lesson-option--revealed{animation:lesson-option-reveal .3s var(--ease-wood) .28s both}.lesson-options~.tsu-wrapper{animation:tsk-rise var(--dur-med) var(--ease-wood) both}.lesson-screen--message .lesson-complete-scene{width:auto;max-width:140px;height:200px;max-height:32vh}.lesson-done-jp,.lesson-empty-jp{font-family:var(--font-jp-accent);font-size:var(--font-xl);color:var(--color-paper);font-weight:700}.lesson-done-en,.lesson-empty-en{font-family:var(--font-body);font-size:var(--font-base);color:var(--color-birch);max-width:300px;line-height:1.5}.lesson-done-chars{gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.lesson-done-char{font-family:var(--font-jp);font-size:var(--font-xl);color:var(--color-paper);background:var(--color-oak);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-weight:900}@keyframes lesson-done-char-pop{0%{opacity:0;transform:translateY(6px)scale(.6)}60%{opacity:1;transform:translateY(0)scale(1.1)}to{opacity:1;transform:translateY(0)scale(1)}}.lesson-done-char--pop{animation:lesson-done-char-pop .3s var(--ease-wood) both}@media (prefers-reduced-motion:reduce){.lesson-option--dim{transition:none}.lesson-option--picked.lesson-option--right,.lesson-option--picked.lesson-option--right:after,.lesson-option--wrong,.lesson-option--revealed,.lesson-options~.tsu-wrapper,.lesson-done-char--pop{animation:none}.lesson-option--picked.lesson-option--right:after{opacity:0}}.lesson-screen--message .lesson-btn{flex:none;width:auto;min-width:220px}.lesson-notebook-skip{color:var(--color-birch);padding:var(--space-2);background:0 0;font-weight:600}@media (height<=720px){.lesson-screen{gap:var(--space-2);padding:var(--space-2) var(--space-4) var(--space-3)}.lesson-screen--message .lesson-complete-scene{height:130px}.lesson-card,.lesson-quiz-card{padding:var(--space-3) var(--space-4)}.lesson-hero,.lesson-quiz-char{font-size:64px}.lesson-hero--word,.lesson-quiz-char--word,.lesson-hero--grammar,.lesson-quiz-char--grammar{font-size:42px}.lesson-btn{padding:var(--space-3)}.lesson-option{min-height:44px;padding:var(--space-2)}}@media (height<=620px){.lesson-screen .tsu-wrapper{display:none}}@media (height<=460px){.lesson-screen{overflow-y:auto}.lesson-card,.lesson-quiz-card{min-height:160px}.lesson-screen--message{justify-content:flex-start}}.lesson-mnemonic{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink);background:var(--surface-parchment);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);text-align:center;line-height:1.5}.lesson-step-label{color:var(--color-paper);font-size:var(--font-sm);font-weight:700}.lesson-hero{font-size:var(--font-3xl)}.lesson-hero--word{font-size:var(--font-2xl);overflow-wrap:anywhere}.lesson-hero--grammar{font-size:var(--font-xl);overflow-wrap:anywhere}.lesson-section-text{font-size:var(--font-base)}.lesson-hint{font-size:var(--font-sm)}.lesson-save-error{color:var(--color-paper);font-size:var(--font-base)}.lesson-reading-cell{min-height:64px}.lesson-reading-value{overflow-wrap:anywhere}.lesson-card-body>.lesson-section-text{text-align:center}@media (height<=740px){.lesson-screen{gap:var(--space-2);padding:var(--space-3)}.lesson-card{padding:var(--space-3)}.lesson-hero{font-size:var(--font-2xl)}}.home-screen{background:var(--surface-parchment);min-height:0;color:var(--ink);font-family:var(--font-ui);flex-direction:column;flex:1;display:flex;position:relative}.home-header{padding:var(--space-4) var(--space-5) var(--space-3);background:var(--surface-paper);flex-shrink:0}.home-header-top,.home-logo{align-items:center;gap:var(--space-2);display:flex}.home-header-top{justify-content:space-between}.home-logo-mark{background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-sm);font-size:var(--font-md);padding:var(--space-1) var(--space-2)}.home-wordmark{font-size:var(--font-md);font-weight:800}.home-help-btn{font-size:var(--font-sm);color:var(--ink-accent);min-height:44px;padding:var(--space-2);font-weight:700}.home-welcome{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-3);display:flex}.home-welcome h1{font-size:var(--font-md);line-height:1.4}.home-welcome p:last-child{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);margin-top:var(--space-1)}.home-eyebrow{font-size:var(--font-2xs);letter-spacing:.08em;color:var(--ink-muted);font-weight:700}.home-continue{padding:var(--space-3) var(--space-5) var(--space-4);background:var(--surface-paper);align-items:center;gap:var(--space-3);flex-wrap:wrap;flex-shrink:0;display:flex}.home-continue-copy{flex:1;min-width:0}.home-continue-copy p{margin-top:var(--space-1);font-size:var(--font-base);font-weight:700}.home-continue-btn{font-size:var(--font-sm);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);min-height:48px;font-weight:800}.home-continue-secondary{width:100%;min-height:32px;color:var(--ink-accent);font-size:var(--font-sm);font-weight:600}.home-path-footer{text-align:center;padding:var(--space-8) var(--space-4);font-size:var(--font-sm);font-family:var(--font-body);line-height:1.6}.home-path-footer button{padding:var(--space-4);min-height:48px;color:var(--ink-accent);font-weight:700}.home-path-footer p:last-child{color:var(--ink-muted);font-size:var(--font-xs)}.home-header{transition:padding var(--dur-med) var(--ease-wood)}.home-header--compact{padding:4px var(--space-4)}.home-header--compact .home-logo-mark{display:none}.home-header--compact .home-wordmark{font-size:var(--font-sm)}.home-overview{background:var(--surface-paper);transition:grid-template-rows var(--dur-med) var(--ease-wood);flex-shrink:0;grid-template-rows:1fr;display:grid}.home-overview>div{min-height:0;overflow:hidden}.home-overview--collapsed{grid-template-rows:0fr}.home-overview .home-welcome{padding:0 var(--space-5) var(--space-3);margin-top:0}.home-compact-actions{gap:var(--space-2);align-items:center;display:flex}.home-expand-btn,.home-resume-btn{min-height:44px;padding:var(--space-2) var(--space-3);font-size:var(--font-sm);border-radius:var(--radius-md);font-weight:700}.home-expand-btn{color:var(--ink-accent)}.jump-overlay{z-index:30;padding:var(--space-4);background:var(--surface-parchment);display:flex;position:absolute;inset:0;overflow:hidden}.jump-dialog{align-items:center;gap:var(--space-3);text-align:center;width:100%;max-width:520px;min-height:0;animation:welcome-arrive var(--dur-med) var(--ease-wood);flex-direction:column;margin:0 auto;display:flex;overflow:hidden auto}.jump-dialog>*{flex-shrink:0}.jump-dialog h1{font-size:var(--font-lg)}.jump-dialog p{line-height:1.5;font-family:var(--font-body)}.jump-top{justify-content:space-between;align-items:center;width:100%;display:flex}.jump-top button,.jump-secondary{min-height:44px;color:var(--ink-accent);padding:var(--space-2);font-weight:700}.jump-dialog .jump-characters{overflow-wrap:anywhere;font-size:36px;font-weight:700}.jump-primary{border-radius:var(--radius-lg);width:100%;padding:var(--space-4);min-height:52px;font-weight:800}.jump-note{color:var(--ink-muted);font-size:var(--font-sm)}.jump-options{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.jump-options button{text-align:center;overflow-wrap:anywhere;min-height:64px;transition:background-color var(--dur-fast) var(--ease-wood)}.jump-option--right{background:var(--color-walnut);color:var(--color-paper)}.jump-option--wrong{background:var(--surface-cream);color:var(--ink)}.practice-screen{background:var(--color-walnut);align-items:center;gap:var(--space-3);min-height:0;padding:var(--space-4);box-sizing:border-box;font-family:var(--font-ui);flex-direction:column;flex:1;display:flex;overflow-y:auto}.practice-screen--message{text-align:center;justify-content:center;gap:var(--space-4)}.practice-loading{font-family:var(--font-jp);font-size:var(--font-base);color:var(--color-paper)}.practice-empty-en{font-family:var(--font-body);font-size:var(--font-base);color:var(--color-paper);max-width:var(--study-width);line-height:1.5}.practice-header{width:100%;max-width:var(--study-width);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.practice-back{font-size:var(--font-base);color:var(--color-paper);font-weight:600}.practice-progress{font-size:var(--font-sm);color:var(--color-birch);font-weight:500}.practice-intro-jp{font-family:var(--font-jp-accent);font-size:var(--font-xl);color:var(--color-paper);font-weight:700}.practice-intro-en{font-family:var(--font-body);font-size:var(--font-base);color:var(--color-paper);max-width:var(--study-width);line-height:1.55}.practice-intro-note{font-size:var(--font-sm);color:var(--color-birch)}@keyframes practice-card-slide-in{0%{opacity:0;transform:translateY(14px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.practice-card{width:100%;min-height:0;max-height:620px;max-width:var(--study-width);background:var(--surface-paper);border-radius:var(--radius-xl);padding:var(--space-5);justify-content:center;align-items:center;gap:var(--space-3);box-sizing:border-box;text-align:center;animation:practice-card-slide-in var(--dur-med) var(--ease-wood) both;flex-direction:column;flex:1;display:flex;overflow-y:auto}.practice-type-pill{background:var(--surface-cream);color:var(--ink-accent);padding:6px var(--space-4);border-radius:var(--radius-full);font-size:var(--font-sm);letter-spacing:.5px;font-weight:700}.practice-instruction{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);font-weight:500}.practice-prompt{font-family:var(--font-jp);color:var(--ink);word-break:break-word;font-size:40px;font-weight:700;line-height:1.4}.practice-blank{white-space:nowrap}.practice-prompt-en{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);line-height:1.5}.practice-options{gap:var(--space-2);width:100%;max-width:var(--study-width);flex-shrink:0;grid-template-columns:1fr 1fr;display:grid}.practice-option{background:var(--surface-cream);color:var(--ink);border-radius:var(--radius-lg);padding:var(--space-3);font-size:var(--font-base);text-align:center;justify-content:center;align-items:center;min-height:52px;font-weight:700;display:flex}.practice-option--right{background:var(--surface-paper);color:var(--ink-accent);font-weight:800}.practice-option--wrong{background:var(--color-oak);color:var(--color-paper)}.practice-option--dim{opacity:.4}.practice-option:disabled{cursor:default}.practice-btn{width:100%;max-width:var(--study-width);--wood-face:var(--surface-cream);color:var(--ink-accent);border-radius:var(--radius-full);padding:var(--space-4);font-family:var(--font-ui);font-size:var(--font-base);transition:transform var(--dur-fast) var(--ease-wood);--press-side:var(--color-birch);flex:none;font-weight:700;position:relative;transform:translateY(0)}.practice-btn:active{transform:translateY(var(--press-depth))}.practice-btn--primary{--wood-face:var(--surface-paper);color:var(--ink-accent);--press-side:var(--color-cream)}.practice-result{padding-bottom:var(--space-6);align-items:stretch}.practice-result-header{text-align:center;padding-top:var(--space-3);flex-shrink:0}.practice-result-jp{font-family:var(--font-jp-accent);font-size:var(--font-xl);color:var(--color-paper);font-weight:700}.practice-result-en{font-family:var(--font-body);font-size:var(--font-base);color:var(--color-paper);margin-top:var(--space-1)}.practice-sections{gap:var(--space-3);flex-direction:column;display:flex}.practice-section-row{background:var(--surface-paper);border-radius:var(--radius-lg);padding:var(--space-4);gap:var(--space-2);flex-direction:column;display:flex}.practice-section-top{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.practice-section-label{font-family:var(--font-ui);color:var(--ink);font-size:15px;font-weight:700}.practice-section-score{font-family:var(--font-ui);font-weight:800;font-size:var(--font-md);color:var(--ink-accent)}.practice-section-score--muted{font-weight:600;font-size:var(--font-sm);color:var(--ink-muted)}.practice-pill{border-radius:var(--radius-full);font-family:var(--font-ui);align-self:flex-start;padding:4px 12px;font-size:12px;font-weight:600}.practice-pill--clear{background:var(--color-walnut);color:var(--color-paper)}.practice-pill--under{background:var(--color-oak);color:var(--color-paper)}.practice-section-note{font-family:var(--font-body);color:var(--ink-muted);font-size:12px;line-height:1.5}.practice-overall-note{font-family:var(--font-body);font-size:var(--font-sm);color:var(--color-birch);line-height:1.55}.practice-review-list{gap:var(--space-2);flex-direction:column;display:flex}.practice-review-row{background:var(--surface-parchment);border-radius:var(--radius-md);padding:var(--space-3);align-items:center;gap:var(--space-3);display:flex}.practice-review-type{font-family:var(--font-ui);font-size:var(--font-2xs);color:var(--ink-muted);background:var(--surface-cream);border-radius:var(--radius-sm);flex-shrink:0;padding:3px 6px;font-weight:700}.practice-review-prompt{font-family:var(--font-jp);font-size:var(--font-sm);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.practice-review-mark{font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted);text-align:right;flex-shrink:0;font-weight:600}.practice-review-mark--right{color:var(--ink-accent)}.practice-review-mark--wrong{color:var(--ink)}@media (height<=720px){.practice-screen{gap:var(--space-2);padding:var(--space-2) var(--space-4) var(--space-3)}.practice-card{padding:var(--space-3) var(--space-4)}.practice-prompt{font-size:30px}.practice-option{min-height:44px;padding:var(--space-2)}}@media (height<=620px){.practice-screen .tsu-wrapper{display:none}}@media (prefers-reduced-motion:reduce){.practice-card,.practice-btn{transition:none;animation:none}.practice-btn:active{transform:none}}.writing-screen--message{text-align:center;justify-content:center;gap:var(--space-4)}.writing-loading{font-family:var(--font-body);font-size:var(--font-base);color:var(--color-paper)}.writing-top{width:100%;max-width:var(--study-width);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.writing-back{font-family:var(--font-ui);font-size:var(--font-base);color:var(--color-paper);font-weight:600}.writing-progress{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--color-birch);font-weight:500}.writing-meta-meaning{font-family:var(--font-ui);font-weight:800;font-size:var(--font-xl);color:var(--ink);text-align:center}.writing-meta-readings{font-family:var(--font-jp);font-size:var(--font-md);color:var(--ink-muted);flex-direction:column;align-items:center;gap:2px;display:flex}.writing-meta-script{font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);color:var(--ink-muted);text-transform:uppercase;letter-spacing:.5px}.writing-recap{font-family:var(--font-ui);font-weight:700;font-size:var(--font-md);color:var(--ink-muted);text-align:center}.writing-rate-btn{border-radius:var(--radius-md);padding:var(--space-3) var(--space-2);min-height:56px;font-family:var(--font-ui);font-size:var(--font-base);transition:transform var(--dur-fast) var(--ease-wood);flex:1;justify-content:center;align-items:center;font-weight:700;display:flex;position:relative;transform:translateY(0)}.writing-rate-btn:active{transform:translateY(var(--press-depth))}.writing-rate-btn--again{--wood-face:var(--btn-again-bg);color:var(--btn-again-text);--press-side:var(--color-oak)}.writing-rate-btn--good{--wood-face:var(--btn-good-bg);color:var(--btn-good-text);--press-side:var(--color-birch)}.writing-empty-card{background:var(--surface-paper);border-radius:var(--radius-xl);padding:var(--space-5);width:100%;max-width:var(--study-width);box-sizing:border-box}.writing-end-jp{font-family:var(--font-jp-accent);font-size:var(--font-xl);color:var(--color-paper);font-weight:700}.writing-end-summary{font-family:var(--font-body);font-size:var(--font-base);color:var(--color-paper);max-width:var(--study-width)}.writing-btn-secondary{color:var(--color-paper);font-family:var(--font-ui);font-weight:600;font-size:var(--font-base);padding:var(--space-2);background:0 0}@media (height<=720px){.writing-rate-btn{min-height:46px;padding:var(--space-2) var(--space-1)}}@media (prefers-reduced-motion:reduce){.writing-rate-btn{transition:none}.writing-rate-btn:active{transform:none}}.writing-save-error{color:var(--color-paper);font-size:var(--font-sm);text-align:center;line-height:1.5}.writing-save-error:empty{display:none}.kana-grid-screen{background:var(--surface-parchment);flex-direction:column;width:100%;height:100%;display:flex}.kana-grid-header{background:var(--color-walnut);padding:var(--space-4) var(--space-4) var(--space-3);align-items:center;gap:var(--space-3);flex-shrink:0;display:flex}.kana-grid-back-btn{color:var(--color-paper);font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0}.kana-grid-header-title{font-family:var(--font-ui);font-weight:700;font-size:var(--font-base);color:var(--color-paper);flex:1}.kana-grid-type-toggle{gap:var(--space-2);display:flex}.kana-grid-toggle-btn{background:var(--color-oak);border-radius:var(--radius-full);padding:5px var(--space-3);font-family:var(--font-ui);font-weight:600;font-size:var(--font-xs);color:var(--color-paper);cursor:pointer;border:none}.kana-grid-toggle-btn.active{background:var(--surface-paper);color:var(--ink-accent)}.kana-grid-body{min-height:0;padding:var(--space-4) var(--space-3);padding-bottom:var(--space-6);flex:1;overflow-y:auto}.kana-grid-col-labels{grid-template-columns:repeat(5,1fr);gap:4px;margin-bottom:4px;padding:0 2px;display:grid}.kana-grid-col-label{font-family:var(--font-body);font-size:var(--font-2xs);color:var(--ink-muted);text-align:center;font-weight:500}.kana-grid-rows{flex-direction:column;gap:6px;display:flex}.kana-grid-row{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.kana-grid-cell{isolation:isolate;aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform var(--dur-fast) var(--ease-wood);background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:relative}.kana-grid-cell:before{content:"";border-radius:inherit;background:var(--tile-face);z-index:-1;position:absolute;inset:0}.kana-grid-cell:after{content:"";left:0;right:0;top:calc(var(--press-depth) + 1px);bottom:calc((var(--press-depth) + 1px) * -1);border-radius:inherit;background:var(--tile-side);z-index:-2;position:absolute}.kana-grid-cell.locked{--tile-face:var(--surface-cream);--tile-side:var(--color-birch);cursor:pointer}.kana-grid-cell.new{--tile-face:var(--surface-birch);--tile-side:var(--color-oak)}.kana-grid-cell.learning{--tile-face:var(--color-oak);--tile-side:var(--color-walnut)}.kana-grid-cell.mastered{--tile-face:var(--color-walnut);--tile-side:var(--color-espresso)}.kana-grid-cell.selected{--tile-face:var(--color-espresso);--tile-side:var(--color-espresso);transform:translateY(calc(var(--press-depth) + 1px))}.kana-grid-cell.empty{cursor:default}.kana-grid-cell.empty:before,.kana-grid-cell.empty:after{content:none}.kana-grid-char{font-family:var(--font-jp);font-weight:700;font-size:var(--font-lg);color:var(--ink);line-height:1}.kana-grid-cell.learning .kana-grid-char,.kana-grid-cell.mastered .kana-grid-char,.kana-grid-cell.selected .kana-grid-char{color:var(--color-paper)}.kana-grid-romaji{font-family:var(--font-body);font-size:var(--font-2xs);color:var(--ink);opacity:.65;font-weight:400;line-height:1}.kana-grid-cell.learning .kana-grid-romaji,.kana-grid-cell.mastered .kana-grid-romaji,.kana-grid-cell.selected .kana-grid-romaji{color:var(--color-cream);opacity:.8}.kana-grid-romaji--link{font:inherit;color:inherit;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;margin:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.kana-grid-hint{font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted);text-align:center;padding:var(--space-2) var(--space-4) 0;margin:0 0 var(--space-3)}.kana-grid-legend{gap:8px;margin-bottom:8px;padding:0 2px;display:flex}.kana-grid-legend-item{font-family:var(--font-body);font-size:var(--font-2xs);border-radius:var(--radius-full);padding:2px 8px;font-weight:500}.kana-grid-legend-item.locked{background:var(--surface-cream);color:var(--ink-muted)}.kana-grid-legend-item.new{background:var(--surface-birch);color:var(--ink)}.kana-grid-legend-item.mastered{background:var(--color-walnut);color:var(--color-paper)}.kana-grid-action-bar{background:var(--surface-paper);width:100%;padding:var(--space-3) var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;flex-shrink:0;display:flex}.kana-grid-action-count{font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);color:var(--ink);flex-shrink:0}.kana-grid-action-buttons{gap:var(--space-2);flex-wrap:wrap;display:flex}.kana-grid-btn-introduce{background:var(--surface-cream);color:var(--ink);border-radius:var(--radius-full);padding:9px var(--space-4);font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);cursor:pointer;border:none}.kana-grid-btn-study{background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-full);padding:9px var(--space-4);font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);cursor:pointer;border:none}@media (prefers-reduced-motion:reduce){.kana-grid-cell{transition:none}}.kg-screen{background:var(--surface-parchment);flex-direction:column;height:100%;display:flex;overflow:hidden}.kg-header{background:var(--color-walnut);flex-shrink:0;align-items:center;gap:12px;padding:14px 16px 10px;display:flex}.kg-back-btn{color:var(--color-parchment);font-family:var(--font-ui);font-size:var(--font-sm);cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.kg-title{color:var(--color-paper);font-family:var(--font-ui);font-size:var(--font-md);font-weight:700}.kg-header-spacer{flex:1}.kg-tabs{background:var(--color-walnut);flex-shrink:0;gap:6px;padding:10px 16px;display:flex}.kg-tab{border-radius:var(--radius-full);color:var(--color-parchment);font-family:var(--font-ui);font-size:var(--font-sm);cursor:pointer;opacity:.55;background:0 0;border:none;flex:1;padding:6px 0;font-weight:600;transition:background .15s,opacity .15s}.kg-tab--active{background:var(--surface-paper);color:var(--ink-accent);opacity:1}.kg-legend{flex-shrink:0;gap:8px;padding:8px 16px 4px;display:flex}.kg-legend-pill{font-family:var(--font-ui);font-size:var(--font-xs);border-radius:var(--radius-full);padding:3px 10px;font-weight:600}.kg-legend--new{background:var(--surface-birch);color:var(--ink)}.kg-legend--learning{background:var(--color-oak);color:var(--color-paper)}.kg-legend--mastered{background:var(--color-walnut);color:var(--color-paper)}.kg-legend-count{font-family:var(--font-ui);font-size:var(--font-2xs);color:var(--ink-muted);align-self:center;margin-left:auto;font-weight:600}.kg-grid-scroll{flex:1;padding:8px 12px 12px;overflow-y:auto}.kg-grid{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.kg-cell{isolation:isolate;aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;transition:transform var(--dur-fast) var(--ease-wood);background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:2px;display:flex;position:relative}.kg-cell:before{content:"";border-radius:inherit;background:var(--tile-face);z-index:-1;position:absolute;inset:0}.kg-cell:after{content:"";left:0;right:0;top:calc(var(--press-depth) + 1px);bottom:calc((var(--press-depth) + 1px) * -1);border-radius:inherit;background:var(--tile-side);z-index:-2;position:absolute}.kg-cell--locked{--tile-face:var(--surface-cream);--tile-side:var(--color-birch)}.kg-cell--new{--tile-face:var(--surface-birch);--tile-side:var(--color-oak)}.kg-cell--learning{--tile-face:var(--color-oak);--tile-side:var(--color-walnut)}.kg-cell--mastered{--tile-face:var(--color-walnut);--tile-side:var(--color-espresso)}.kg-cell--disabled{cursor:default;opacity:.45}.kg-cell--selected{--tile-face:var(--color-espresso);transform:translateY(calc(var(--press-depth) + 1px))}.kg-cell--selected .kg-cell-char,.kg-cell--selected .kg-cell-meaning{color:var(--color-paper);opacity:1}.kg-cell-char{font-family:var(--font-jp);font-size:var(--font-lg);color:var(--ink);font-weight:700;line-height:1}.kg-cell--learning .kg-cell-char,.kg-cell--mastered .kg-cell-char{color:var(--color-paper)}.kg-cell-meaning{font-family:var(--font-ui);font-size:var(--font-2xs);color:var(--ink);opacity:.65;text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-weight:500;line-height:1;overflow:hidden}.kg-cell--learning .kg-cell-meaning,.kg-cell--mastered .kg-cell-meaning{color:var(--color-cream);opacity:.8}.kg-cell-meaning--link{cursor:pointer;text-underline-offset:2px;background:0 0;border:none;margin:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.kg-coming-soon{flex-direction:column;align-items:center;gap:6px;padding:24px 16px 16px;display:flex}.kg-coming-soon-text{font-family:var(--font-ui);font-size:var(--font-base);color:var(--ink-accent);font-weight:700}.kg-coming-soon-sub{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted)}.kg-action-bar{background:var(--surface-paper);flex-shrink:0;padding:12px 16px}.kg-action-hint{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);text-align:center;margin:0}.kg-btn-primary{border-radius:var(--radius-full);background:var(--color-walnut);width:100%;color:var(--color-paper);font-family:var(--font-ui);font-size:var(--font-base);cursor:pointer;border:none;padding:14px;font-weight:700}@media (prefers-reduced-motion:reduce){.kg-cell{transition:none}}.fb-screen{background:var(--surface-parchment);flex-direction:column;width:100%;height:100%;display:flex}.fb-header{background:var(--color-walnut);padding:var(--space-6) var(--space-5) var(--space-4);flex-shrink:0}.fb-header-top{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.fb-logo{align-items:center;gap:var(--space-2);display:flex}.fb-logo-mark{background:var(--surface-paper);width:32px;height:32px;color:var(--ink);border-radius:var(--radius-sm);font-family:var(--font-jp);flex-shrink:0;justify-content:center;align-items:center;font-size:17px;font-weight:900;line-height:1;display:flex}.fb-wordmark{font-family:var(--font-ui);font-size:var(--font-lg);color:var(--color-paper);font-weight:800}.fb-avatar{background:var(--surface-parchment);width:44px;height:44px;font-size:var(--font-lg);border-radius:50%;justify-content:center;align-items:center;line-height:1;display:flex}.fb-subtitle{font-family:var(--font-jp-accent);font-weight:400;font-size:var(--font-sm);color:var(--color-paper);opacity:.85;margin:0}.fb-body{padding:var(--space-4);gap:var(--space-5);padding-bottom:var(--space-6);flex-direction:column;flex:1;display:flex;overflow-y:auto}.fb-loading{font-family:var(--font-jp);font-size:var(--font-base);color:var(--ink-muted);text-align:center;margin-top:var(--space-10)}.fb-due-banner{background:var(--surface-birch);border-radius:var(--radius-xl);padding:14px var(--space-4);flex-direction:row;justify-content:space-between;align-items:center;display:flex}.fb-due-banner-left{flex-direction:column;gap:3px;display:flex}.fb-due-banner-title{font-family:var(--font-ui);color:var(--ink);font-size:15px;font-weight:700}.fb-due-banner-sub{font-family:var(--font-ui);font-weight:500;font-size:var(--font-sm);color:var(--ink)}.fb-due-banner-btn{--wood-face:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-full);padding:8px var(--space-4);font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);cursor:pointer;--press-side:var(--color-espresso);border:none}.fb-section{gap:var(--space-3);flex-direction:column;display:flex}.fb-section-label{align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-weight:600;font-size:var(--font-xs);letter-spacing:1.2px;color:var(--ink-muted);text-transform:uppercase;margin:0;display:flex}.fb-section-label .iso-block{flex-shrink:0}.fb-section-card{background:var(--surface-paper);border-radius:var(--radius-xl);border:1.5px solid var(--surface-cream);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.fb-card-row1{justify-content:space-between;align-items:flex-start;display:flex}.fb-card-title-group{flex-direction:column;gap:2px;display:flex}.fb-card-title{font-family:var(--font-ui);font-weight:700;font-size:var(--font-base);color:var(--ink)}.fb-card-subtitle{font-family:var(--font-ui);font-weight:400;font-size:var(--font-xs);color:var(--ink-muted)}.fb-card-count{font-family:var(--font-body);color:var(--ink-muted);font-size:12px;font-weight:500}.fb-progress-track{background:var(--surface-cream);border-radius:var(--radius-full);height:6px;overflow:hidden}.fb-progress-fill{background:var(--surface-birch);border-radius:var(--radius-full);min-width:0;height:100%;transition:width .4s}.fb-due-status{min-height:22px}.fb-due-pill{background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-full);font-family:var(--font-ui);font-weight:600;font-size:var(--font-xs);padding:3px 10px;display:inline-block}.fb-up-to-date{font-family:var(--font-body);color:var(--ink-muted);font-size:12px;font-weight:500}.fb-lessons-card{background:var(--surface-paper);border-radius:var(--radius-xl);border:1.5px solid var(--surface-cream);padding:var(--space-4)}.fb-lessons-text{font-family:var(--font-body);color:var(--ink-muted);margin:0;font-size:14px;font-weight:400;line-height:1.5}.fb-card-right{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.fb-btn-grid{font-family:var(--font-ui);font-weight:600;font-size:var(--font-xs);color:var(--ink-accent);cursor:pointer;padding:var(--space-3) var(--space-2);background:0 0;border:none;min-height:44px}.fb-action-buttons{flex-direction:row;gap:8px;display:flex}.fb-btn-review{--wood-face:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-full);font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);cursor:pointer;--press-side:var(--color-espresso);border:none;flex:1;padding:10px 0}.fb-btn-study-all{--wood-face:var(--surface-cream);color:var(--ink);border-radius:var(--radius-full);font-family:var(--font-ui);font-weight:600;font-size:var(--font-sm);cursor:pointer;--press-side:var(--color-birch);border:none;flex:1;padding:10px 0}.fb-btn-review,.fb-btn-study-all,.fb-due-banner-btn,.fb-btn-lesson,.fb-practice-band-btn{transform:translateY(var(--step-y,0));transition:transform var(--dur-fast) var(--ease-wood);position:relative}.fb-btn-review:active,.fb-btn-study-all:active,.fb-due-banner-btn:active,.fb-btn-lesson:active,.fb-practice-band-btn:active{transform:translateY(calc(var(--step-y,0) + var(--press-depth)))}.fb-practice-bands{gap:var(--space-2);padding-top:var(--space-3);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.fb-practice-band-btn{--wood-face:var(--color-walnut);min-width:0;min-height:44px;color:var(--color-paper);border-radius:var(--radius-full);font-family:var(--font-ui);font-weight:700;font-size:var(--font-sm);cursor:pointer;--press-side:var(--color-espresso);padding:10px 0}.fb-lesson-card{background:var(--surface-paper);border-radius:var(--radius-lg);padding:var(--space-4);gap:var(--space-3);border:1.5px solid var(--surface-cream);flex-direction:column;display:flex}.fb-lesson-top{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.fb-lesson-title{font-family:var(--font-ui);font-size:var(--font-md);color:var(--ink);font-weight:700}.fb-lesson-sub{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);margin-top:2px;font-weight:500}.fb-lesson-count{font-family:var(--font-ui);font-size:var(--font-xl);color:var(--ink-accent);font-weight:800;line-height:1}.fb-lesson-preview{gap:var(--space-2);flex-wrap:wrap;display:flex}.fb-lesson-chip{font-family:var(--font-jp);font-size:var(--font-lg);color:var(--color-paper);--wood-face:var(--color-oak);border-radius:var(--radius-sm);padding:4px var(--space-3);font-weight:700;line-height:1.3;position:relative}.fb-btn-lesson{--wood-face:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-full);padding:var(--space-3) var(--space-4);font-family:var(--font-ui);font-size:var(--font-base);--press-side:var(--color-espresso);font-weight:700}@media (prefers-reduced-motion:reduce){.fb-btn-review,.fb-btn-study-all,.fb-due-banner-btn,.fb-btn-lesson,.fb-practice-band-btn{transition:none}.fb-btn-review:active,.fb-btn-study-all:active,.fb-due-banner-btn:active,.fb-btn-lesson:active,.fb-practice-band-btn:active{transform:translateY(var(--step-y,0))}}.block-wall{width:100%;height:auto;display:block}.band-tower{align-items:center;gap:var(--space-2);flex-direction:column;width:100%;display:flex}.band-tower-svg{width:100%;max-width:320px;height:auto;display:block;overflow:visible}.band-tower-labels{grid-template-columns:repeat(5,1fr);width:100%;max-width:320px;display:grid}.band-tower-label{flex-direction:column;align-items:center;gap:1px;display:flex}.band-tower-band{font-family:var(--font-ui);font-weight:800;font-size:var(--font-xs);color:var(--ink)}.band-tower-count{font-family:var(--font-ui);font-weight:500;font-size:var(--font-2xs);color:var(--ink-muted)}.progress-screen{background:var(--surface-parchment);flex-direction:column;width:100%;height:100%;display:flex}.progress-header{background:var(--color-walnut);padding:var(--space-6) var(--space-5) var(--space-4);flex-shrink:0}.progress-header-top{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.progress-logo{align-items:center;gap:var(--space-2);display:flex}.progress-logo-mark{background:var(--surface-paper);width:32px;height:32px;color:var(--ink);border-radius:var(--radius-sm);font-family:var(--font-jp);flex-shrink:0;justify-content:center;align-items:center;font-size:17px;font-weight:900;line-height:1;display:flex}.progress-wordmark{font-family:var(--font-ui);font-size:var(--font-lg);color:var(--color-paper);font-weight:800}.progress-avatar{background:var(--surface-parchment);width:44px;height:44px;font-size:var(--font-lg);border-radius:50%;justify-content:center;align-items:center;line-height:1;display:flex}.progress-subtitle{font-family:var(--font-jp-accent);font-weight:400;font-size:var(--font-sm);color:var(--color-paper);opacity:.85;margin:0}.progress-body{padding:var(--space-4);gap:var(--space-5);padding-bottom:var(--space-6);flex-direction:column;flex:1;display:flex;overflow-y:auto}.progress-section-label{font-family:var(--font-ui);font-weight:600;font-size:var(--font-xs);letter-spacing:1.2px;color:var(--ink-muted);text-transform:uppercase;margin:0 0 var(--space-3)}.progress-card{background:var(--surface-paper);border-radius:var(--radius-xl);padding:var(--space-4);border:1.5px solid var(--surface-cream)}.progress-card--city{padding:var(--space-5) var(--space-4) var(--space-4);justify-content:center;display:flex}.progress-day-future .progress-day-num{color:var(--ink-muted)}.progress-day-past .progress-day-num,.progress-day-studied .progress-day-num{color:var(--ink)}.progress-compare-row{padding:var(--space-3) 0;grid-template-columns:1fr 1fr 1fr;align-items:center;display:grid}.progress-compare-divider{border-top:1px solid var(--color-cream)}.progress-compare-col-header{font-family:var(--font-ui);text-align:center;font-size:12px;font-weight:600}.progress-compare-this{color:var(--ink-accent)}.progress-compare-last{color:var(--ink-muted)}.progress-compare-label{font-family:var(--font-body);font-weight:500;font-size:var(--font-sm);color:var(--ink)}.progress-compare-value{font-family:var(--font-ui);font-weight:700;font-size:var(--font-base);text-align:center}.progress-stats-grid{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.progress-stat-card{background:var(--surface-paper);border:1.5px solid var(--surface-cream);border-radius:var(--radius-xl);padding:var(--space-4);align-items:center;gap:var(--space-1);flex-direction:column;display:flex}.progress-stat-number{font-family:var(--font-ui);font-weight:800;font-size:var(--font-lg);color:var(--ink-accent);line-height:1}.progress-stat-label{font-family:var(--font-ui);font-weight:500;font-size:var(--font-xs);color:var(--ink-muted);text-align:center}.wall-head{align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.wall-count{font-family:var(--font-ui);font-size:var(--font-lg);color:var(--ink);font-weight:800;line-height:1}.wall-total{font-size:var(--font-base);color:var(--ink-muted);font-weight:600}.wall-caption{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);font-weight:500}.wall-frame{background:var(--color-walnut);border-radius:var(--radius-md);padding:var(--space-3)}.wall-frame--days{padding:var(--space-4)}.wall-legend{gap:var(--space-2) var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.wall-legend-item{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-muted);align-items:center;gap:5px;font-weight:600;display:flex}.wall-swatch{border-radius:2px;flex-shrink:0;width:9px;height:9px}.wall-swatch--paper{background:var(--surface-paper)}.wall-swatch--cream{background:var(--surface-cream)}.wall-swatch--birch{background:var(--surface-birch)}.wall-swatch--oak{background:var(--color-oak)}.wall-swatch--walnut{background:var(--color-walnut)}.wall-note{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);margin-top:var(--space-3);line-height:1.5}.wall-note--empty{margin-top:0}.wall-swatch--empty{background:var(--color-espresso);opacity:.35}.wall-bands{gap:var(--space-2);margin-top:var(--space-4);flex-direction:column;display:flex}.wall-band-row{align-items:center;gap:var(--space-2);grid-template-columns:24px 1fr 56px;display:grid}.wall-band-label{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-accent);font-weight:700}.wall-band-track{background:var(--surface-cream);border-radius:var(--radius-full);height:6px;overflow:hidden}.wall-band-fill{background:var(--color-walnut);border-radius:var(--radius-full);height:100%}.wall-band-count{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-muted);text-align:right;font-weight:600}.profile-screen{--profile-chosen-bg:var(--color-walnut);--profile-chosen-ink:var(--color-paper);--profile-gutter:var(--space-4);background:var(--surface-parchment);width:100%;min-height:0;color:var(--ink);flex-direction:column;flex:1;display:flex}:root[data-theme=dark] .profile-screen{--profile-chosen-bg:var(--color-birch);--profile-chosen-ink:var(--color-espresso)}.profile-header{background:var(--color-walnut);color:var(--color-paper);padding:var(--space-3) var(--profile-gutter);flex-direction:column;flex-shrink:0;justify-content:center;min-height:64px;display:flex}.profile-header-root{align-items:center;gap:var(--space-3);min-height:40px;display:flex}.profile-logo-mark{background:var(--color-paper);width:32px;height:32px;color:var(--color-walnut);border-radius:var(--radius-sm);font-family:var(--font-jp);font-weight:900;font-size:var(--font-base);flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:flex}.profile-title{font-family:var(--font-ui);font-weight:800;font-size:var(--font-md);color:var(--color-paper);margin:0;line-height:1.2}.profile-title--sub{font-size:var(--font-lg);padding:0 0 var(--space-1);overflow-wrap:anywhere}.profile-subtitle{font-family:var(--font-jp-accent);font-size:var(--font-sm);color:var(--color-paper);opacity:.8;margin-left:auto}.profile-back{align-self:flex-start;align-items:center;gap:var(--space-1);min-height:44px;margin-left:calc(var(--space-2) * -1);padding:0 var(--space-3) 0 var(--space-1);border-radius:var(--radius-full);font-family:var(--font-ui);font-weight:700;font-size:var(--font-base);color:var(--color-paper);-webkit-tap-highlight-color:transparent;transition:transform var(--dur-fast) var(--ease-wood);display:inline-flex}.profile-back svg{flex-shrink:0;width:22px;height:22px}.profile-back:active{transform:translate(-2px)}.profile-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--surface-parchment);min-height:0;padding:var(--profile-gutter) var(--profile-gutter) var(--space-10);flex:1;overflow:hidden auto}.profile-root,.profile-subscreen{gap:var(--space-5);max-width:var(--study-width);flex-direction:column;margin:0 auto;display:flex}.profile-subscreen{gap:var(--space-4);animation:profile-enter var(--dur-med) var(--ease-wood) both}@keyframes profile-enter{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}.profile-overview{align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--surface-paper);border-radius:var(--radius-xl);display:flex}.profile-avatar{border-radius:var(--radius-lg);background:var(--color-walnut);flex-shrink:0;justify-content:center;align-items:flex-end;width:72px;height:72px;display:flex;overflow:hidden}.profile-avatar svg{display:block}.profile-identity{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.profile-username{font-family:var(--font-ui);font-weight:800;font-size:var(--font-md);color:var(--ink);overflow-wrap:anywhere;margin:0;line-height:1.25}.profile-tagline{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-accent);margin:0;line-height:1.35}.profile-storage-label{font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted);margin:0;line-height:1.35}.profile-edit{min-height:36px;padding:0 var(--space-4);border-radius:var(--radius-full);background:var(--surface-cream);color:var(--ink-accent);font-family:var(--font-ui);font-weight:700;font-size:var(--font-sm);flex-shrink:0;align-self:flex-start}.profile-highlights,.profile-stats-grid{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.profile-highlights{margin-top:calc(var(--space-2) * -1)}.profile-stat-card{min-height:72px;padding:var(--space-3) var(--space-2);background:var(--surface-paper);border-radius:var(--radius-md);text-align:center;flex-direction:column;justify-content:flex-start;align-items:center;gap:2px;display:flex}.profile-stat-number{font-family:var(--font-ui);font-size:var(--font-lg);color:var(--ink-accent);font-variant-numeric:tabular-nums;font-weight:800;line-height:1.1}.profile-stat-label{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-muted);font-weight:600;line-height:1.25}.profile-section{scroll-margin-top:var(--space-4)}.profile-group-title{margin:0 0 var(--space-2) var(--space-1);font-family:var(--font-ui);font-size:var(--font-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:800}.profile-card{background:var(--surface-paper);color:var(--ink);border-radius:var(--radius-lg)}.profile-list{padding:var(--space-1) 0;flex-direction:column;display:flex;overflow:hidden}.profile-row,.profile-resource{align-items:center;gap:var(--space-3);width:100%;min-height:60px;padding:var(--space-2) var(--space-3) var(--space-2) var(--space-4);text-align:left;color:var(--ink);-webkit-tap-highlight-color:transparent;transition:background var(--dur-fast) var(--ease-wood);text-decoration:none;display:flex}.profile-row:active,.profile-resource:active{background:var(--surface-cream)}@media (hover:hover){.profile-row:hover,.profile-resource:hover{background:var(--surface-parchment)}}.profile-resource:focus-visible{background:var(--surface-parchment);outline:none}.profile-resource:focus-visible .profile-row-title{text-underline-offset:3px;text-decoration:underline}.profile-row-icon{border-radius:var(--radius-sm);background:var(--surface-cream);width:36px;height:36px;color:var(--ink-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.profile-row-icon svg{width:22px;height:22px}.profile-row-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.profile-row-title{font-family:var(--font-ui);font-weight:700;font-size:var(--font-base);color:var(--ink);line-height:1.25}.profile-row-value{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);line-height:1.35}.profile-row-chevron{width:18px;height:18px;color:var(--ink-muted);opacity:.8;flex-shrink:0}.profile-row-badge{padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--profile-chosen-bg);color:var(--profile-chosen-ink);font-family:var(--font-accent);font-size:var(--font-xs);flex-shrink:0}.profile-row--warning .profile-row-icon{background:var(--color-birch);color:var(--color-espresso)}.profile-row--warning .profile-row-title{color:var(--ink-accent)}.profile-row--compact{min-height:52px}.profile-about{gap:var(--space-1);padding:var(--space-3) var(--space-4);flex-direction:column;display:flex}.profile-about-line{justify-content:space-between;align-items:baseline;gap:var(--space-3);display:flex}.profile-version{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);font-variant-numeric:tabular-nums;margin:0;font-weight:600}.profile-version--sub{text-align:center}.profile-milestones{gap:var(--space-1);padding:var(--space-2) 0 var(--space-1);flex-direction:column;display:flex}.profile-milestone{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);color:var(--ink);display:flex}.profile-milestone>svg{flex-shrink:0}.profile-milestone-text{flex:1;min-width:0}.profile-milestone-line{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.profile-milestone strong{font-family:var(--font-ui);font-size:var(--font-sm);font-weight:700}.profile-milestone-line span{font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.profile-milestone--earned .profile-milestone-line span{color:var(--ink-accent);font-weight:700}.profile-milestone p{font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted);margin:1px 0 0}.profile-milestone progress{width:100%;height:5px;margin-top:var(--space-2);appearance:none;border-radius:var(--radius-full);background:var(--surface-cream);border:none;display:block;overflow:hidden}.profile-milestone progress::-webkit-progress-bar{background:var(--surface-cream)}.profile-milestone progress::-webkit-progress-value{background:var(--color-birch);border-radius:var(--radius-full)}.profile-milestone progress::-moz-progress-bar{background:var(--color-birch);border-radius:var(--radius-full)}.profile-milestone--earned progress::-webkit-progress-value{background:var(--profile-chosen-bg)}.profile-milestone--earned progress::-moz-progress-bar{background:var(--profile-chosen-bg)}.profile-panel{gap:var(--space-3);padding:var(--space-4);flex-direction:column;display:flex}.profile-panel-title{font-family:var(--font-ui);font-weight:800;font-size:var(--font-base);color:var(--ink);margin:0;line-height:1.3}.profile-panel-title+.profile-setting-desc{margin-top:calc(var(--space-2) * -1)}.profile-subhead{margin-top:var(--space-2)}.profile-setting{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:48px;display:flex}.profile-setting+.profile-setting{padding-top:var(--space-2)}.profile-setting-text{flex:1;min-width:0}.profile-setting-title{font-family:var(--font-ui);font-size:var(--font-base);color:var(--ink);margin:0;font-weight:700;line-height:1.3}.profile-setting-desc{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);margin:2px 0 0;line-height:1.5}.profile-status{color:var(--ink)}.profile-footnote{padding:0 var(--space-1);font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);margin:0;line-height:1.5}.profile-choices{gap:var(--space-1);padding:var(--space-1);border-radius:var(--radius-md);background:var(--surface-cream);display:flex}.profile-choice{min-width:0;min-height:44px;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--ink-accent);font-family:var(--font-ui);font-size:var(--font-sm);text-align:center;transition:background var(--dur-fast) var(--ease-wood), color var(--dur-fast) var(--ease-wood), transform var(--dur-fast) var(--ease-wood);background:0 0;flex:1;font-weight:700;line-height:1.25}.profile-choice--on{background:var(--profile-chosen-bg);color:var(--profile-chosen-ink)}.profile-options{gap:var(--space-2);flex-direction:column;display:flex}.profile-option{align-items:flex-start;gap:var(--space-3);width:100%;min-height:60px;padding:var(--space-3) var(--space-4) var(--space-3) var(--space-3);border-radius:var(--radius-md);background:var(--surface-parchment);color:var(--ink);text-align:left;transition:background var(--dur-fast) var(--ease-wood), transform var(--dur-fast) var(--ease-wood);display:flex}.profile-option:active{transform:scale(.99)}.profile-option-mark{background:var(--surface-cream);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;margin-top:1px;display:flex}.profile-option-mark:after{content:"";background:0 0;border-radius:50%;width:8px;height:8px}.profile-option-text{flex:1;min-width:0}.profile-option strong,.profile-option-text>span{display:block}.profile-option strong{font-family:var(--font-ui);font-size:var(--font-base);font-weight:700;line-height:1.3}.profile-option-text>span{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);margin-top:2px;line-height:1.45}.profile-option--on{background:var(--profile-chosen-bg);color:var(--profile-chosen-ink)}.profile-option--on .profile-option-text>span{color:var(--profile-chosen-ink);opacity:.85}.profile-option--on .profile-option-mark{background:var(--profile-chosen-ink)}.profile-option--on .profile-option-mark:after{background:var(--profile-chosen-bg)}.profile-toggle{border-radius:var(--radius-full);background:var(--surface-cream);width:50px;height:30px;transition:background var(--dur-fast) ease;flex-shrink:0;justify-content:flex-start;align-items:center;padding:3px;display:flex}.profile-toggle--on{background:var(--profile-chosen-bg);justify-content:flex-start}.profile-toggle-knob{background:var(--color-paper);border-radius:50%;width:24px;height:24px}.profile-volume{gap:var(--space-1);flex-direction:column;display:flex}.profile-volume-label{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink);justify-content:space-between;font-weight:700;display:flex}.profile-volume-label span{color:var(--ink-muted);font-variant-numeric:tabular-nums}#sound-volume{appearance:none;cursor:pointer;touch-action:pan-y;background:0 0;width:100%;height:44px;margin:0;padding:0}#sound-volume::-webkit-slider-runnable-track{border-radius:var(--radius-full);background:var(--surface-cream);height:8px}#sound-volume::-moz-range-track{border-radius:var(--radius-full);background:var(--surface-cream);height:8px}#sound-volume::-moz-range-progress{border-radius:var(--radius-full);background:var(--color-birch);height:8px}#sound-volume::-webkit-slider-thumb{appearance:none;background:var(--profile-chosen-bg);border:none;border-radius:50%;width:26px;height:26px;margin-top:-9px}#sound-volume::-moz-range-thumb{background:var(--profile-chosen-bg);border:none;border-radius:50%;width:26px;height:26px}#sound-volume:focus-visible::-webkit-slider-thumb{transform:scale(1.15)}.profile-soft-btn,.profile-wide-btn,.profile-test-btn{min-height:48px;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);background:var(--surface-cream);color:var(--ink);font-family:var(--font-ui);font-size:var(--font-sm);text-align:center;transition:transform var(--dur-fast) var(--ease-wood);font-weight:700;line-height:1.25}.profile-soft-btn:active,.profile-wide-btn:active,.profile-test-btn:active,.profile-sample:active{transform:scale(.97)}.profile-wide-btn{width:100%;font-size:var(--font-base)}.profile-wide-btn--primary{background:var(--profile-chosen-bg);color:var(--profile-chosen-ink)}.profile-wide-btn--warning{background:var(--color-birch);color:var(--color-espresso)}.profile-button-pair,.profile-samples{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.profile-sample{min-height:64px;padding:var(--space-2);border-radius:var(--radius-md);background:var(--surface-parchment);color:var(--ink);transition:transform var(--dur-fast) var(--ease-wood);flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.profile-sample-caption{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-muted);font-weight:700}.profile-sample-text{font-family:var(--font-jp);font-size:var(--font-md);font-weight:700;line-height:1.3}.profile-name-input{width:100%;min-height:48px;padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-parchment);color:var(--ink);font-size:var(--font-base)}.profile-name-input::placeholder{color:var(--ink-muted)}.profile-confirm{gap:var(--space-2);flex-direction:column;display:flex}.profile-faq{padding:var(--space-1) var(--space-4)}.profile-guide{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink);line-height:1.6}.profile-guide summary{min-height:52px;padding:var(--space-2) 0;cursor:pointer;font-family:var(--font-ui);font-size:var(--font-base);align-items:center;font-weight:700;list-style:none;display:flex}.profile-guide summary::-webkit-details-marker{display:none}.profile-guide summary:after{content:"+";padding-left:var(--space-3);font-family:var(--font-ui);font-size:var(--font-md);color:var(--ink-muted);margin-left:auto;font-weight:600}.profile-guide[open] summary:after{content:"−"}.profile-guide p{padding-bottom:var(--space-3);color:var(--ink-muted);margin:0}.profile-steps{counter-reset:profile-step;gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.profile-steps li{counter-increment:profile-step;align-items:center;gap:var(--space-3);min-height:32px;font-family:var(--font-body);font-size:var(--font-base);color:var(--ink);line-height:1.4;display:flex}.profile-steps li:before{content:counter(profile-step);background:var(--surface-cream);width:28px;height:28px;color:var(--ink-accent);font-family:var(--font-ui);font-size:var(--font-sm);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:800;display:flex}.profile-credits{gap:var(--space-3);padding:var(--space-4);font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);overflow-wrap:anywhere;flex-direction:column;line-height:1.55;display:flex}.profile-credits p{margin:0}.profile-credits strong{color:var(--ink)}.profile-credits a{color:var(--ink-accent);font-weight:700}.profile-external-note{align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface-cream);font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink);margin:0;line-height:1.45;display:flex}.profile-external-note-icon{width:18px;height:18px;color:var(--ink-accent);flex-shrink:0;margin-top:1px}.profile-resource{padding-top:var(--space-3);padding-bottom:var(--space-3);align-items:flex-start}.profile-resource .profile-row-chevron{margin-top:2px}.profile-resource-text{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.profile-resource-kind{padding:1px var(--space-2);border-radius:var(--radius-full);background:var(--surface-cream);color:var(--ink-accent);font-family:var(--font-accent);font-size:var(--font-xs);align-self:flex-start}.profile-resource--featured .profile-resource-kind{background:var(--profile-chosen-bg);color:var(--profile-chosen-ink)}.profile-resource-desc{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink);line-height:1.45}.profile-resource-source{font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted)}.profile-visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.backup-card{gap:var(--space-2);padding:var(--space-4);flex-direction:column;display:flex}.backup-actions{gap:var(--space-2);margin:var(--space-2) 0 0;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.backup-actions button{width:100%}.backup-status{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink);margin:0;line-height:1.6}.backup-confirm{gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-4);border-radius:var(--radius-md);background:var(--surface-parchment);flex-direction:column;display:flex}.backup-card button:disabled{opacity:.6;cursor:default}@media (width<=340px){.profile-button-pair{grid-template-columns:1fr}.profile-overview{gap:var(--space-3)}.profile-avatar{width:60px;height:60px}.profile-avatar svg{width:50px;height:auto}}.detail-page{background:var(--surface-parchment);flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.detail-header{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-3);background:var(--color-walnut);flex-shrink:0;display:flex}.detail-back-btn{color:var(--color-paper);font-family:var(--font-ui);font-size:var(--font-sm);cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.detail-header-title{color:var(--color-paper);font-family:var(--font-ui);font-size:var(--font-md);font-weight:700}.detail-header-spacer{flex:1}.detail-body{min-height:0;padding:var(--space-5) var(--space-4) var(--space-8);align-items:center;gap:var(--space-5);flex-direction:column;flex:1;display:flex;overflow-y:auto}.detail-loading{font-family:var(--font-ui);font-size:var(--font-sm);color:var(--ink-muted);margin:auto}.detail-not-found{align-items:center;gap:var(--space-3);text-align:center;max-width:var(--study-width);flex-direction:column;margin:auto;display:flex}.detail-not-found-title{font-family:var(--font-ui);font-size:var(--font-lg);color:var(--ink);margin:0;font-weight:700}.detail-not-found-text{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);margin:0}.detail-not-found-btn{margin-top:var(--space-2);background:var(--color-walnut);color:var(--color-paper);border-radius:var(--radius-full);padding:var(--space-3) var(--space-6);font-family:var(--font-ui);font-size:var(--font-sm);cursor:pointer;border:none;font-weight:700}.detail-hero-section{width:100%;max-width:var(--study-width);align-items:center;gap:var(--space-2);flex-direction:column;flex-shrink:0;display:flex}.detail-band-pill{font-family:var(--font-ui);font-size:var(--font-xs);letter-spacing:.5px;padding:3px var(--space-3);border-radius:var(--radius-full);font-weight:700}.detail-pill--cream{background:var(--surface-cream);color:var(--ink-muted)}.detail-pill--birch{background:var(--surface-birch);color:var(--ink)}.detail-pill--walnut{background:var(--color-walnut);color:var(--color-paper)}.detail-hero-char{margin:var(--space-2) 0;font-family:var(--font-jp);font-weight:900;font-size:var(--font-4xl);color:var(--ink);cursor:pointer;background:0 0;border:none;padding:0;line-height:1}.detail-hero-word{margin:var(--space-2) 0;font-family:var(--font-jp);font-weight:900;font-size:var(--font-2xl);color:var(--ink);text-align:center;word-break:break-word;line-height:1.3}.detail-status-pill{font-family:var(--font-ui);font-size:var(--font-xs);padding:4px var(--space-3);border-radius:var(--radius-full);font-weight:600}.detail-section{width:100%;max-width:var(--study-width);background:var(--surface-paper);border-radius:var(--radius-lg);padding:var(--space-4);box-sizing:border-box;gap:var(--space-2);flex-direction:column;flex-shrink:0;display:flex}.detail-section-label{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.6px;color:var(--ink-muted);font-weight:700}.detail-text{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink);margin:0;line-height:1.5}.detail-text--jp{font-family:var(--font-jp)}.detail-text--muted{color:var(--ink-muted)}.detail-empty-text{font-family:var(--font-body);font-size:var(--font-sm);color:var(--ink-muted);margin:0;font-style:italic;line-height:1.5}.detail-readings-grid{width:100%;max-width:var(--study-width);gap:var(--space-2);flex-shrink:0;grid-template-columns:1fr 1fr;display:grid}.detail-reading-cell{background:var(--surface-cream);border-radius:var(--radius-md);padding:var(--space-3);cursor:pointer;border:none;flex-direction:column;align-items:center;gap:2px;display:flex}.detail-reading-cell:disabled{cursor:default;opacity:.6}.detail-reading-label{font-family:var(--font-ui);font-size:var(--font-2xs);letter-spacing:.6px;color:var(--ink-muted);font-weight:700}.detail-reading-value{font-family:var(--font-jp);font-size:var(--font-base);color:var(--ink);text-align:center}.detail-block-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.detail-block-box{background:var(--surface-cream);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);border:none;flex-direction:column;align-items:center;gap:2px;min-width:56px;display:flex}.detail-block-box--link{cursor:pointer}.detail-block-box--link:disabled{cursor:default;opacity:.6}.detail-block-char{font-family:var(--font-jp);font-size:var(--font-lg);color:var(--ink)}.detail-block-keyword{font-family:var(--font-ui);font-size:var(--font-2xs);color:var(--ink-muted);text-align:center}.detail-meta-row{width:100%;max-width:var(--study-width);gap:var(--space-2);flex-wrap:wrap;flex-shrink:0;justify-content:center;display:flex}.detail-meta-item{font-family:var(--font-body);font-size:var(--font-xs);color:var(--ink-muted);background:var(--surface-cream);padding:3px var(--space-3);border-radius:var(--radius-full)}.detail-meta-item--muted{opacity:.7;font-style:italic}.bottom-nav{background:var(--surface-paper);width:100%;padding:0 var(--safe-area-right) var(--safe-area-bottom) var(--safe-area-left);flex-shrink:0;align-items:stretch;display:flex}.nav-tab{cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;min-width:0;min-height:64px;padding:0;display:flex}.nav-icon{color:var(--ink-muted);transform-origin:50% 100%;transition:transform var(--dur-fast) var(--ease-wood);display:block}.nav-tab:active .nav-icon{transform:translateY(1px)scale(.86)}@keyframes nav-icon-hop{0%{transform:translateY(1px)scale(.86)}35%{transform:translateY(-4px)scale(1.04)}65%{transform:translateY(0)scale(1.08,.9)}to{transform:translateY(0)scale(1)}}.nav-tab--hop .nav-icon{animation:nav-icon-hop .36s var(--ease-wood)}.nav-label{font-family:var(--font-ui);font-size:var(--font-xs);color:var(--ink-muted);font-weight:600}.nav-tab-active .nav-icon{color:var(--ink-accent)}.nav-tab-active .nav-label{color:var(--ink-accent);font-weight:700}@media (prefers-reduced-motion:reduce){.nav-icon{transition:none}.nav-tab:active .nav-icon{transform:none}.nav-tab--hop .nav-icon{animation:none}}
