@font-face{font-family:Noto Sans JP Subset;src:url(/fonts/noto-sans-jp-subset.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--paper: oklch(.985 .006 85);--paper-raised: oklch(1 0 0);--paper-sunken: oklch(.955 .008 85);--wash: oklch(.93 .012 85);--ink: oklch(.24 .018 250);--ink-muted: oklch(.45 .01 265);--ink-faint: oklch(.6 .01 265);--line: oklch(.88 .008 265);--line-strong: oklch(.82 .01 265);--accent: oklch(.45 .12 258);--accent-soft: oklch(.955 .025 258);--accent-ink: oklch(.99 0 0);--ok: oklch(.5 .055 158);--ok-soft: oklch(.95 .03 158);--bad: oklch(.49 .17 27);--bad-soft: oklch(.95 .035 27);--warn: oklch(.55 .13 68);--warn-soft: oklch(.95 .04 68);--script-hiragana: oklch(.45 .12 258);--script-katakana: oklch(.47 .14 55);--shadow: oklch(.2 .02 265 / .16);--font-ui: "Lexend", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-jp: "Noto Sans JP Subset", "Zen Kaku Gothic New", "Hiragino Sans", "Noto Sans JP", "Yu Gothic", ui-sans-serif, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--r-sm: 8px;--r-btn: 12px;--r-md: 14px;--r-lg: 18px;--r-full: 999px;--tap: 44px;--page-max: 32rem}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: oklch(.17 .015 260);--paper-raised: oklch(.21 .016 260);--paper-sunken: oklch(.14 .014 260);--wash: oklch(.25 .016 260);--ink: oklch(.95 .008 85);--ink-muted: oklch(.72 .01 265);--ink-faint: oklch(.58 .012 265);--line: oklch(.32 .014 260);--line-strong: oklch(.42 .016 260);--accent: oklch(.72 .13 258);--accent-soft: oklch(.28 .05 258);--accent-ink: oklch(.16 .02 260);--ok: oklch(.72 .11 158);--ok-soft: oklch(.26 .04 158);--bad: oklch(.68 .17 27);--bad-soft: oklch(.27 .06 27);--warn: oklch(.78 .12 68);--warn-soft: oklch(.28 .05 68);--script-hiragana: oklch(.72 .13 258);--script-katakana: oklch(.78 .12 55);--shadow: oklch(0 0 0 / .5)}}:root[data-theme=dark]{--paper: oklch(.17 .015 260);--paper-raised: oklch(.21 .016 260);--paper-sunken: oklch(.14 .014 260);--wash: oklch(.25 .016 260);--ink: oklch(.95 .008 85);--ink-muted: oklch(.72 .01 265);--ink-faint: oklch(.58 .012 265);--line: oklch(.32 .014 260);--line-strong: oklch(.42 .016 260);--accent: oklch(.72 .13 258);--accent-soft: oklch(.28 .05 258);--accent-ink: oklch(.16 .02 260);--ok: oklch(.72 .11 158);--ok-soft: oklch(.26 .04 158);--bad: oklch(.68 .17 27);--bad-soft: oklch(.27 .06 27);--warn: oklch(.78 .12 68);--warn-soft: oklch(.28 .05 68);--script-hiragana: oklch(.72 .13 258);--script-katakana: oklch(.78 .12 55);--shadow: oklch(0 0 0 / .5)}:root{--m-fur: oklch(.52 .09 128);--m-fur-deep: oklch(.4 .08 128);--m-glow: oklch(.56 .14 130);--m-rot: oklch(.45 .08 30);--m-teal: oklch(.47 .05 195);--m-gold: oklch(.56 .1 80);--m-plum: oklch(.42 .08 330);--m-ash: oklch(.45 .02 300);--m-ash-deep: oklch(.36 .02 300);--m-outline: oklch(.19 .02 300);--m-bone: oklch(.92 .02 85);--m-mouth: oklch(.23 .03 300);--m-tongue: oklch(.63 .11 15);--m-skin: oklch(.84 .06 65);--m-pants: oklch(.38 .04 290);--m-wood: oklch(.52 .06 70);--m-stone: oklch(.68 .03 295);--m-card: oklch(.74 .07 80);--m-card-2: oklch(.63 .07 78);--m-dung: oklch(.43 .06 60);--m-pink: oklch(.8 .1 350);--m-fox: oklch(.63 .12 50);--m-fox-2: oklch(.5 .11 45);--m-board: oklch(.35 .04 155);--m-eye: var(--m-glow);--m-cloth: var(--m-teal);--m-surface: var(--paper-raised);--m-stage: var(--paper-sunken);--m-line: var(--line-strong)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--m-fur: oklch(.77 .14 125);--m-fur-deep: oklch(.63 .13 125);--m-glow: oklch(.93 .2 125);--m-rot: oklch(.7 .09 30);--m-teal: oklch(.78 .07 195);--m-gold: oklch(.8 .12 85);--m-plum: oklch(.75 .08 330);--m-ash: oklch(.72 .02 300);--m-ash-deep: oklch(.58 .02 300);--m-card: oklch(.7 .07 80);--m-card-2: oklch(.58 .07 78);--m-stone: oklch(.62 .03 295)}}:root[data-theme=dark]{--m-fur: oklch(.77 .14 125);--m-fur-deep: oklch(.63 .13 125);--m-glow: oklch(.93 .2 125);--m-rot: oklch(.7 .09 30);--m-teal: oklch(.78 .07 195);--m-gold: oklch(.8 .12 85);--m-plum: oklch(.75 .08 330);--m-ash: oklch(.72 .02 300);--m-ash-deep: oklch(.58 .02 300);--m-card: oklch(.7 .07 80);--m-card-2: oklch(.58 .07 78);--m-stone: oklch(.62 .03 295)}.mascot__art{display:block;width:100%;height:100%;overflow:visible;transform-origin:50% 100%;animation:mascot-breathe 3.8s ease-in-out infinite}.mascot[data-genus="2"] .mascot__art{animation-play-state:paused}@keyframes mascot-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-2.5%) scale(.985,1.03)}}.nyanbie{display:block;overflow:visible}.nyanbie--full{overflow:visible}.nyanbie--head{overflow:hidden}.nyanbie-tap{display:block;padding:0;border:0;background:none;color:inherit;cursor:pointer;min-width:var(--tap);min-height:var(--tap);border-radius:var(--r-md)}.nyanbie-tap:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.nyanbie *{transform-box:fill-box}.nyanbie__rig{transform-origin:50% 100%}.nyanbie__body{transform-origin:50% 100%;animation:nyanbie-breathe 3.2s ease-in-out infinite}.nyanbie--head .nyanbie__body,.nyanbie--head .nyanbie__head{animation-play-state:paused}.nyanbie--head .nyanbie__body>*:not(.nyanbie__head){display:none}.nyanbie__head{transform-origin:50% 88%;animation:nyanbie-look 7.4s ease-in-out infinite}.nyanbie__tail{transform-origin:100% 100%;animation:nyanbie-sway 3.4s ease-in-out infinite}.nyanbie__ear{transform-origin:50% 100%;animation:nyanbie-flick 4.6s ease-in-out infinite}.nyanbie__eye{transform-origin:50% 50%;animation:nyanbie-blink 5.2s ease-in-out infinite}@keyframes nyanbie-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes nyanbie-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(.975,1.04)}}@keyframes nyanbie-look{0%,18%,44%,to{transform:rotate(0) translate(0)}26%,34%{transform:rotate(-3.5deg) translate(-3px)}58%,68%{transform:rotate(3deg) translate(3px)}}@keyframes nyanbie-sway{0%,to{transform:rotate(0)}50%{transform:rotate(9deg)}}@keyframes nyanbie-flick{0%,86%,to{transform:scaleY(1) skew(0)}90%{transform:scaleY(.9) skew(-9deg)}94%{transform:scaleY(1) skew(0)}}@keyframes nyanbie-blink{0%,93%,to{transform:scaleY(1)}96%{transform:scaleY(.08)}}.nyanbie--idle .nyanbie__rig{animation:nyanbie-wiggle .6s ease-in-out}.nyanbie--correct .nyanbie__rig,.nyanbie--streak-3 .nyanbie__rig{animation:nyanbie-hop .7s cubic-bezier(.3,1.3,.5,1)}.nyanbie--streak-7 .nyanbie__rig,.nyanbie--perfect-lesson .nyanbie__rig{animation:nyanbie-bounce .95s ease-in-out}.nyanbie--streak-7 .nyanbie__body,.nyanbie--perfect-lesson .nyanbie__body{animation-duration:1.6s}.nyanbie--first-mistake .nyanbie__rig,.nyanbie--careless-slip .nyanbie__rig{animation:nyanbie-recoil .6s ease-out}.nyanbie--repeat-mistake .nyanbie__rig{animation:nyanbie-slump .9s ease-out forwards}.nyanbie--repeat-mistake .nyanbie__body{animation-duration:4.4s}.nyanbie--timer-low .nyanbie__rig{animation:nyanbie-jitter .35s ease-in-out infinite}.nyanbie--session-start .nyanbie__rig{animation:nyanbie-rise .8s ease-out}.nyanbie--session-end .nyanbie__rig{animation:nyanbie-sink .9s ease-in forwards}.nyanbie--offline .nyanbie__rig{animation:nyanbie-flicker 3.2s steps(1,end) infinite}.nyanbie--offline .nyanbie__body,.nyanbie--offline .nyanbie__head,.nyanbie--offline .nyanbie__tail,.nyanbie--offline .nyanbie__ear{animation-play-state:paused}.nyanbie--streak-7,.nyanbie--perfect-lesson{filter:drop-shadow(0 0 10px var(--m-gold))}.nyanbie--first-mistake .nyan-ear,.mascot__art[data-mood=first-mistake] .nyan-ear{visibility:hidden}.stage__cast{transform-origin:50% 100%;display:block}.stage__cast--idle{animation:nyanbie-wiggle .6s ease-in-out}.stage__cast--correct,.stage__cast--streak-3{animation:nyanbie-hop .7s cubic-bezier(.3,1.3,.5,1)}.stage__cast--first-mistake,.stage__cast--careless-slip{animation:nyanbie-recoil .6s ease-out}.stage__cast--repeat-mistake{animation:nyanbie-slump .9s ease-out forwards}.nyanbie__sparkles{transform-origin:50% 50%;animation:nyanbie-pop .9s ease-out,nyanbie-twinkle 1s ease-in-out .9s infinite alternate}.nyanbie__drool{transform-origin:50% 0;animation:nyanbie-drip 1.3s ease-in infinite}@keyframes nyanbie-wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-5deg) scaleY(.97)}60%{transform:rotate(4deg)}}@keyframes nyanbie-hop{0%{transform:translateY(0) scale(1)}18%{transform:translateY(5px) scale(1.08,.9)}50%{transform:translateY(-24px) scale(.94,1.08)}76%{transform:translateY(0) scale(1.07,.92)}to{transform:translateY(0) scale(1)}}@keyframes nyanbie-bounce{0%{transform:translateY(0) rotate(0)}20%{transform:translateY(-28px) rotate(-9deg)}40%{transform:translateY(0) rotate(0) scale(1.07,.9)}60%{transform:translateY(-18px) rotate(9deg)}80%{transform:translateY(0) scale(1.04,.94)}to{transform:translateY(0)}}@keyframes nyanbie-recoil{0%{transform:translate(0)}15%{transform:translate(-8px) rotate(-3deg)}30%{transform:translate(7px) rotate(3deg)}45%{transform:translate(-5px)}60%{transform:translate(4px)}75%{transform:translate(-2px)}to{transform:translate(0)}}@keyframes nyanbie-slump{0%{transform:translateY(0) scaleY(1)}40%{transform:translateY(6px) scaleY(.94)}to{transform:translateY(3px) scaleY(.97)}}@keyframes nyanbie-jitter{0%,to{transform:translate(0)}25%{transform:translate(-2px) rotate(-1deg)}75%{transform:translate(2px) rotate(1deg)}}@keyframes nyanbie-rise{0%{transform:translateY(34px)}to{transform:translateY(0)}}@keyframes nyanbie-sink{0%{transform:translateY(0)}to{transform:translateY(26px)}}@keyframes nyanbie-flicker{0%,92%,to{opacity:1}94%{opacity:.45}96%{opacity:1}98%{opacity:.7}}@keyframes nyanbie-pop{0%{transform:scale(.2);opacity:0}30%{transform:scale(1.35);opacity:1}to{transform:scale(1);opacity:1}}@keyframes nyanbie-twinkle{0%{opacity:.5}to{opacity:1}}@keyframes nyanbie-drip{0%{transform:translateY(0) scaleY(.6);opacity:.9}70%{transform:translateY(10px) scaleY(1.1);opacity:.7}to{transform:translateY(16px) scaleY(1.2);opacity:0}}*,*:before,*:after{box-sizing:border-box}html{height:100%}body,#root{min-height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:none}#root{display:flex;flex-direction:column}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer;touch-action:manipulation}button:disabled{cursor:not-allowed}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}.jp{font-family:var(--font-jp);font-feature-settings:"palt" 0}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.page{flex:1;width:100%;max-width:var(--page-max);margin-inline:auto;padding-inline:20px;padding-block:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-bottom));display:flex;flex-direction:column;min-height:0}.page--center{justify-content:center;align-items:center;text-align:center;gap:24px}.stack{display:flex;flex-direction:column;gap:12px}.spacer{flex:1;min-height:12px}.title{font-size:1.6rem;font-weight:600;letter-spacing:-.02em;line-height:1.2}.subtitle{color:var(--ink-muted);font-size:.95rem}.eyebrow{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.btn{min-height:var(--tap);padding:12px 20px;border-radius:var(--r-btn);font-weight:600;font-size:1rem;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .08s ease,background .15s ease,border-color .15s ease}.btn:active:not(:disabled){transform:scale(.97)}.btn--primary{background:var(--accent);color:var(--accent-ink)}.btn--ghost{background:transparent;color:var(--ink-muted);border:1.5px solid var(--line)}.btn--quiet{background:transparent;color:var(--ink-muted);font-weight:500;text-decoration:underline;text-underline-offset:3px;padding:8px 12px}.btn--block{width:100%}.btn:disabled{opacity:.45}.card{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px var(--shadow)}.choice{min-height:64px;padding:14px 18px;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--paper-raised);display:flex;align-items:center;justify-content:center;gap:10px;font-size:1.15rem;font-weight:500;transition:border-color .12s ease,background .12s ease,transform .08s ease}.choice:active:not(:disabled){transform:scale(.98)}.choice[data-state=correct]{border-color:var(--ok);background:var(--ok-soft);color:var(--ok)}.choice[data-state=wrong]{border-color:var(--bad);background:var(--bad-soft);color:var(--bad)}.choice[data-state=muted]{opacity:.4}.option{width:100%;min-height:var(--tap);text-align:left;padding:16px 18px;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--paper-raised);display:flex;flex-direction:column;gap:2px;transition:border-color .12s ease,background .12s ease}.option[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.option__label{font-weight:600}.option__hint{font-size:.85rem;color:var(--ink-muted)}.mode-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mode{min-height:78px;padding:12px 8px;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--paper-raised);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;transition:border-color .12s ease,background .12s ease,transform .08s ease}.mode:active:not(:disabled){transform:scale(.98)}.mode[data-accent=true]{border-color:var(--accent);background:var(--accent-soft)}.mode:disabled{opacity:.45}.mode__name{font-weight:600;font-size:1rem}.mode__detail{font-size:.75rem;color:var(--ink-muted);line-height:1.25}.field{width:100%;min-height:var(--tap);padding:12px 14px;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--paper-raised);color:var(--ink);font:inherit}.field:focus-visible{border-color:var(--accent);outline:none}.grade{min-height:62px;padding:10px 4px;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--paper-raised);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:transform .08s ease,border-color .12s ease,background .12s ease}.grade:active:not(:disabled){transform:scale(.96)}.grade__label{font-size:.92rem;font-weight:600}.grade__interval{font-size:.72rem;color:var(--ink-faint)}.grade[data-tone=bad]{border-color:color-mix(in oklab,var(--bad) 45%,var(--line));color:var(--bad)}.grade[data-tone=warn]{border-color:color-mix(in oklab,var(--ink-faint) 55%,var(--line))}.grade[data-tone=ok]{border-color:color-mix(in oklab,var(--ok) 45%,var(--line));color:var(--ok)}.grade[data-tone=easy]{border-color:color-mix(in oklab,var(--accent) 45%,var(--line));color:var(--accent)}.bar{height:6px;border-radius:var(--r-full);background:var(--wash);overflow:hidden}.bar__fill{height:100%;background:var(--accent);border-radius:var(--r-full);transition:width .25s ease}.banner{padding:10px 16px;border-radius:var(--r-md);background:var(--wash);color:var(--ink-muted);font-size:.85rem;display:flex;align-items:center;justify-content:center;gap:8px}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-full);background:var(--wash);color:var(--ink-muted);font-size:.78rem;font-weight:600}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.sheet{display:none;background:#fff;color:#111;padding:16mm}.sheet__title{font-size:14pt;font-weight:600;margin-bottom:8mm}.sheet__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(18mm,1fr));gap:3mm}.sheet__cell{border:.3mm solid #bbb;border-radius:1.5mm;padding:2mm 1mm;text-align:center;break-inside:avoid}.sheet__glyph{display:block;font-size:15pt;line-height:1.2}.sheet__romaji{display:block;font-size:7pt;color:#666}.sheet__strokes{display:flex;flex-direction:column;gap:2mm}.sheet__strokeRow{display:flex;align-items:center;gap:2mm;break-inside:avoid}.sheet__strokeModel{width:18mm;text-align:center;flex:0 0 auto}.sheet__practiceBox{flex:1 1 0;aspect-ratio:1;max-width:18mm;border:.3mm dashed #bbb;border-radius:1.5mm}.sheet__list{columns:2;column-gap:10mm;list-style:none;padding:0;margin:0;font-size:10pt;line-height:1.9}.sheet__list li{break-inside:avoid}.sheet__note{display:block;font-size:7.5pt;color:#666;line-height:1.3}@media print{.print-hide,.banner{display:none!important}body{background:#fff}.sheet{display:block;padding:0}@page{margin:12mm}}:root[data-still=true] *,:root[data-still=true] *:before,:root[data-still=true] *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;padding:6px 10px;background:color-mix(in oklab,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.topbar--minimal{justify-content:space-between}.topbar__brand{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:var(--r-md);background:none;border:none}.topbar__title{font-size:.9rem;font-weight:600;color:var(--ink-muted)}.topbar__title--brand{color:var(--ink)}.topbar__icon{min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;border-radius:var(--r-md);border:none;background:none;color:var(--ink-muted)}.topbar__icon:active:not(:disabled){background:var(--wash)}.topbar__icon--ghost{pointer-events:none}.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:20;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:4px 4px calc(4px + env(safe-area-inset-bottom,0px));background:color-mix(in oklab,var(--paper) 96%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);margin-inline:auto;max-width:100%}.bottomnav__inner{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;width:100%;max-width:var(--page-max);margin-inline:auto}.bottomnav__spacer{height:calc(60px + env(safe-area-inset-bottom,0px));flex:0 0 auto}.bottomnav__tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;padding:4px 2px;border:none;background:none;color:var(--ink-faint);border-radius:var(--r-md)}.bottomnav__tab[aria-current=page]{color:var(--accent)}.bottomnav__icon{font-size:1.15rem;line-height:1}.bottomnav__label{font-size:.68rem;font-weight:600;letter-spacing:.01em}.bottomnav__badge{position:absolute;top:2px;right:50%;transform:translate(18px);min-width:17px;padding:1px 4px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:.62rem;font-weight:700;line-height:1.35}@media print{.topbar,.bottomnav{display:none!important}}.kanatable__scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-inline:-4px;padding-inline:4px}.kanatable{border-collapse:separate;border-spacing:3px;margin-inline:auto}.kanatable__caption{caption-side:bottom;margin-top:10px;font-size:.78rem;color:var(--ink-muted);text-align:center;line-height:1.4}.kanatable__head{font-size:.72rem;font-weight:600;color:var(--ink-faint);text-align:center;padding:2px 4px;min-width:22px}.kanatable__corner{width:22px}.kanatable__cell{padding:0;border-radius:var(--r-sm);background:var(--paper-raised);border:1px solid var(--line)}.kanatable__cell--empty{background:transparent;border-color:transparent}.kanatable__cell[data-met=false]{opacity:.38}.kanatable__button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:44px;min-height:44px;padding:4px 2px;width:100%;background:none;border:none}.kanatable__glyph{font-size:1.25rem;line-height:1.1}.kanatable__romaji{font-size:.62rem;color:var(--ink-faint)}.kanatable__row[data-highlight=true] .kanatable__cell{border-color:var(--accent);background:var(--accent-soft)}.kanatable__row[data-highlight=true] .kanatable__cell:first-of-type{box-shadow:-2px 0 0 var(--accent)}.kanatable__row[data-highlight=true] .kanatable__cell:last-of-type{box-shadow:2px 0 0 var(--accent)}.kanatable__row[data-highlight=true] .kanatable__head{color:var(--accent);font-weight:700}.kanatable__row[data-highlight=true] .kanatable__cell[data-met=false]{opacity:.6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.context{padding:20px 18px;border-left:3px solid var(--accent)}.context[data-kind=gotcha]{border-left-color:var(--warn)}.context[data-kind=culture]{border-left-color:var(--ok)}.context__kind{font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.context[data-kind=gotcha] .context__kind{color:var(--warn)}.context[data-kind=culture] .context__kind{color:var(--ok)}.context__title{font-size:1.2rem;font-weight:600;line-height:1.3;letter-spacing:-.01em}.context__body{font-size:.95rem;line-height:1.6;color:var(--ink-muted)}.context__chars{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;font-size:2rem;line-height:1.2;padding:6px 0}.mnemonicq__panel{padding:18px}.mnemonicq__draft{margin:0;padding:14px 16px;border-left:3px solid var(--accent);background:var(--wash);border-radius:var(--r-md);font-size:1.05rem;line-height:1.55;color:var(--ink)}.mnemonicq__failures{margin:0;padding-left:20px;display:grid;gap:4px;font-size:.85rem;color:var(--ink-muted)}.mnemonicq__reason{display:flex;align-items:center;justify-content:flex-start;gap:10px;min-height:var(--tap);padding:8px 12px;border-radius:var(--r-md);border:1.5px solid transparent;font-size:.95rem}.mnemonicq__reason:hover{background:var(--wash)}.mnemonicq__reason:focus-within{border-color:var(--accent)}.mnemonicq__actions{display:flex;flex-wrap:wrap;gap:10px}.banner--ok{background:var(--ok-soft);color:var(--ok)}.banner--warn{background:var(--bad-soft);color:var(--bad)}.page :is(button,a[href],input,textarea,select,[tabindex]:not([tabindex="-1"])){scroll-margin-block-end:calc(72px + env(safe-area-inset-bottom,0px))}.matching{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}.matching__column{display:grid;gap:8px}.matching__item{height:64px;font-size:1.05rem;width:100%}.matching__item[data-state=correct]{opacity:.75}.matching__item:disabled{cursor:default}.choice[data-state=selected]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.matching .jp{font-size:1.6rem;line-height:1.2}.fillblank__sentence{margin:0;padding:18px 16px;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);font-size:1.5rem;line-height:1.9;text-align:center;word-break:break-all}.fillblank__gap{display:inline-block;min-width:2.2ch;margin:0 2px;padding:0 6px;border-bottom:3px solid var(--accent);color:var(--accent)}.fillblank__gap[data-state=correct]{border-color:var(--ok);color:var(--ok)}.fillblank__gap[data-state=wrong]{border-color:var(--bad);color:var(--bad)}.builder__line{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:74px;padding:12px;border:2px dashed var(--line);border-radius:var(--r-lg);background:var(--paper-raised)}.builder__placeholder{color:var(--ink-muted);font-size:.9rem}.builder__tray{display:flex;flex-wrap:wrap;gap:8px}.builder__tile{min-height:48px;padding:8px 14px;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--paper-raised);color:var(--ink);font-size:1.25rem;transition:transform .08s ease,border-color .12s ease}.builder__tile:active:not(:disabled){transform:scale(.96)}.builder__tile[data-state=correct]{border-color:var(--ok);background:var(--ok-soft);color:var(--ok)}.builder__tile[data-state=wrong]{border-color:var(--bad);background:var(--bad-soft);color:var(--bad)}.builder__compare{display:grid;gap:4px;padding:14px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper-raised);font-size:1.15rem}.builder__compare-label{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted)}.builder__compare-label+.jp{margin-bottom:8px}.builder__compare-answer{color:var(--ok)}.react{display:flex;align-items:center;gap:12px;border-radius:14px;padding:10px 14px 10px 8px;overflow:visible}.react--ok{background:#ecf4ec;border:1px solid #b9d7be}.react--no{background:#fbedea;border:1px solid #e0b6ac}.react>.nyanbie{align-self:flex-end;margin-bottom:-14px}.react-txt{font-size:.92rem;line-height:1.35;color:var(--ink)}.react-txt b{display:block;font-size:1.02rem}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .react--ok{background:#24301f;border-color:#40613f}:root:not([data-theme=light]) .react--no{background:#33211d;border-color:#6b3c33}}:root[data-theme=dark] .react--ok{background:#24301f;border-color:#40613f}:root[data-theme=dark] .react--no{background:#33211d;border-color:#6b3c33}.scene{width:100%;align-self:stretch;text-align:left;position:relative;background:linear-gradient(180deg,#f0eadf,#e6dfd2);border-bottom:1px solid rgba(0,0,0,.09);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:14px 14px 0;overflow:hidden}.scene-stage{position:relative}.scene-stage:after{content:"";position:absolute;inset:auto 0 0 0;height:22px;background:repeating-linear-gradient(90deg,transparent 0 13px,rgba(31,23,40,.16) 13px 15px);opacity:.5}.scene-row{display:flex;align-items:flex-end;gap:12px;position:relative;z-index:1}.scene-row>svg{max-width:50%;height:auto}.scene-copy{flex:1;min-width:0;padding-bottom:30px}.scene h3{font-size:1.28rem;line-height:1.15;margin:0 0 3px}.scene .bar{background:#1f172824}:root[data-theme=dark] .scene .bar{background:#f2ecdd29}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .scene .bar{background:#f2ecdd29}}.scene-below{position:relative;z-index:1;padding:6px 0 14px;text-align:left}.ground{position:absolute;left:0;right:0;bottom:18px;height:1px;background:#1f172838}.scene--stage{border-radius:var(--r-lg);border-bottom:0;padding:12px 14px;margin-bottom:12px}.scene--stage .scene-row{align-items:flex-end;gap:8px}.stage__q{flex:1;min-width:0;padding-bottom:28px;display:flex;flex-direction:column;gap:6px}.stage__top{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:24px}.stage__aside{display:inline-flex;align-items:center}.stage__prompt{margin:0;font-size:.95rem;color:var(--ink-muted);line-height:1.3}.stage__focus{font-size:3.4rem;line-height:1.1;font-weight:600;overflow-wrap:anywhere}.stage__focus--text{font-size:1.35rem;line-height:1.3}.stage__focus--text.jp{word-break:keep-all;overflow-wrap:normal}.stage__q:has(.stage__focus--text)+.stage__tap{max-width:34%}.stage__focus--pair{display:flex;gap:22px;align-items:baseline;flex-wrap:wrap}.stage__sub{font-size:1.15rem;font-weight:600;color:var(--ink-muted);margin-top:-2px}.stage__say{display:inline-flex;align-items:center;gap:12px;max-width:100%;padding:0;margin:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}.stage__say .stage__focus{min-width:0}.stage__say--text{flex-direction:column-reverse;align-items:flex-start;gap:8px;max-width:min(100%,15rem)}.stage__say:focus-visible{outline:none}.stage__say:focus-visible .stage__icon{outline:2px solid var(--accent);outline-offset:3px}.stage__say__icon{flex:0 0 auto;width:36px;height:36px}.stage__say:active .stage__icon{transform:scale(.94)}.stage__icon[data-silent]{color:var(--ink-muted);border-style:dashed}.stage__icon{width:40px;height:40px;border-radius:50%;border:1px solid rgba(31,23,40,.22);background:#ffffff8c;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}.stage__icon[data-playing]{color:var(--accent);border-color:var(--accent)}.stage__icon:focus-visible{outline:2px solid var(--accent);outline-offset:3px}:root[data-theme=dark] .stage__icon{border-color:#f2ecdd47;background:#00000038}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .stage__icon{border-color:#f2ecdd47;background:#00000038}}.stage__tap{flex:0 0 auto;max-width:42%;margin:0 0 6px;padding:0;border:0;background:none;color:inherit;cursor:pointer;border-radius:var(--r-md);line-height:0}.stage__tap:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.stage__tap>svg,.stage__tap .mascot,.stage__tap .stage__cast{max-width:100%;height:auto}.stage__bar{position:relative;z-index:1;margin-top:10px}.page>.scene--stage:first-child{margin-top:0}.react--quiet{padding-left:14px}.flicktype__typed{text-align:center;font-size:2.6rem;line-height:1.2;min-height:3.2rem;margin:10px 0 12px;letter-spacing:.08em}.flicktype__typed[data-state=correct]{color:var(--ok)}.flicktype__typed[data-state=wrong]{color:var(--bad, #b3261e)}.typerun{display:flex;flex-wrap:wrap;justify-content:center;align-content:flex-start;gap:2px 4px;padding:18px 6px;max-height:9.5rem;overflow:hidden}.typerun__kana{font-size:1.9rem;line-height:1.45;padding:0 3px;border-radius:6px;color:var(--ink-faint)}.typerun__kana[data-status=right]{color:var(--ok)}.typerun__kana[data-status=wrong]{color:var(--bad);text-decoration:line-through}.typerun__kana[data-status=current]{color:var(--accent-ink);background:var(--accent)}.flicktype__typed[data-state=long]{color:var(--warn)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .scene{background:linear-gradient(180deg,#2a2340,#221b35)}:root:not([data-theme=light]) .scene-stage:after{background:repeating-linear-gradient(90deg,transparent 0 13px,rgba(242,236,221,.14) 13px 15px)}:root:not([data-theme=light]) .ground{background:#f2ecdd33}}:root[data-theme=dark] .scene{background:linear-gradient(180deg,#2a2340,#221b35)}:root[data-theme=dark] .scene-stage:after{background:repeating-linear-gradient(90deg,transparent 0 13px,rgba(242,236,221,.14) 13px 15px)}:root[data-theme=dark] .ground{background:#f2ecdd33}.bar--claw{position:relative;overflow:visible}.bar--claw .bar__fill{background:linear-gradient(90deg,var(--m-fur, #5f7a34),var(--m-fur-deep, #425420))}.bar--claw:after{content:"";position:absolute;left:var(--at, 0%);top:-5px;width:16px;height:17px;background:linear-gradient(var(--m-outline, #1f1728),var(--m-outline, #1f1728)) 2px 0 / 2.5px 100% no-repeat,linear-gradient(var(--m-outline, #1f1728),var(--m-outline, #1f1728)) 7px 1px / 2.5px 92% no-repeat,linear-gradient(var(--m-outline, #1f1728),var(--m-outline, #1f1728)) 12px 3px / 2.5px 82% no-repeat;transform:rotate(9deg);opacity:.75;pointer-events:none}.bar--claw[data-at="0"]:after{display:none}.card--torn{clip-path:polygon(0 0,calc(100% - 34px) 0,calc(100% - 26px) 7px,calc(100% - 17px) 3px,calc(100% - 9px) 11px,100% 16px,100% 100%,0 100%);position:relative}.reteach-action{position:sticky;bottom:0;z-index:1;padding-top:10px;padding-bottom:6px;background:linear-gradient(to bottom,transparent,var(--paper) 22%)}.card--torn:after{content:"";position:absolute;pointer-events:none;left:calc(100% - 34px);top:0;width:38px;height:16px;transform:rotate(25deg);transform-origin:0 0;background-repeat:no-repeat;background-size:11px 11px;background-position:4px 3px,4px 3px,14px 3px,14px 3px,24px 3px,24px 3px;background-image:linear-gradient(45deg,transparent 44%,var(--m-outline, #1f1728) 44%,var(--m-outline, #1f1728) 56%,transparent 56%),linear-gradient(135deg,transparent 44%,var(--m-outline, #1f1728) 44%,var(--m-outline, #1f1728) 56%,transparent 56%),linear-gradient(45deg,transparent 44%,var(--m-outline, #1f1728) 44%,var(--m-outline, #1f1728) 56%,transparent 56%),linear-gradient(135deg,transparent 44%,var(--m-outline, #1f1728) 44%,var(--m-outline, #1f1728) 56%,transparent 56%),linear-gradient(45deg,transparent 44%,var(--m-outline, #1f1728) 44%,var(--m-outline, #1f1728) 56%,transparent 56%),linear-gradient(135deg,transparent 44%,var(--m-outline, #1f1728) 44%,var(--m-outline, #1f1728) 56%,transparent 56%);opacity:.7}.mnemonic{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 18px;display:flex;flex-direction:column;gap:12px;text-align:left}.mnemonic__head{display:flex;gap:16px;align-items:flex-start}.mnemonic__glyph{position:relative;flex:0 0 auto;width:88px;height:88px;display:grid;place-items:center;font-size:3.4rem;line-height:1;border-radius:var(--r-md);background:var(--wash);overflow:hidden}.mnemonic__glyph>span{position:relative}.mnemonic__art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;opacity:.22;pointer-events:none}.mnemonic__side{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:8px}.mnemonic__eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.mnemonic__gloss{margin:2px 0 0;font-size:.82rem;line-height:1.35;color:var(--ink-muted)}.mnemonic__parts{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.mnemonic__part{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 6px;border-radius:var(--r-full);background:var(--wash);color:var(--ink-muted);font-size:.8rem}.mnemonic__part .jp{font-size:1rem;color:var(--ink)}.mnemonic__listen{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:.82rem}.mnemonic__listen[data-playing]{color:var(--accent)}.mnemonic__story{margin:0;font-size:1rem;line-height:1.5}.mnemonic__keyword{font-weight:800;color:var(--ink)}.mnemonic__reading,.mnemonic__katakana{margin:0;font-size:.88rem;color:var(--ink-muted)}.mnemonic__reading:before{content:"Reading · ";color:var(--ink-faint);font-weight:700;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.mnemonic__katakana:before{content:"Katakana · ";color:var(--ink-faint);font-weight:700;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.mnemonicq__structure{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;font-size:.88rem}.mnemonicq__structure dt{color:var(--ink-faint);font-weight:700;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;align-self:baseline}.mnemonicq__structure dd{margin:0}.script-pair{display:flex;justify-content:center;align-items:flex-start;gap:32px}.script-pair__item{display:flex;flex-direction:column;align-items:center;gap:7px}.script-pair__glyph{font-size:2.2rem;font-weight:600;line-height:1.15;border-bottom:3px solid transparent;padding-bottom:2px}.script-pair__caption{font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint)}.script-pair__item[data-script=hiragana] .script-pair__glyph{color:var(--script-hiragana)}.script-pair__item[data-script=katakana] .script-pair__glyph{color:var(--script-katakana)}.script-pair__item[data-script=both] .script-pair__glyph{color:var(--ink)}.script-pair__item[data-reviewed=true] .script-pair__glyph{border-bottom-color:currentColor}.script-pair__item[data-reviewed=true] .script-pair__caption{color:currentColor;font-weight:600}.script-pair__item[data-reviewed=true][data-script=hiragana]{color:var(--script-hiragana)}.script-pair__item[data-reviewed=true][data-script=katakana]{color:var(--script-katakana)}.script-pair__item[data-script=both] .script-pair__glyph{border-bottom-color:transparent}.flick{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px;background:var(--paper-sunken);border-radius:14px;touch-action:none;-webkit-user-select:none;user-select:none}.flick__key{position:relative;aspect-ratio:1 / .78;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;background:var(--paper-raised);color:var(--ink);font-size:1.35rem;cursor:pointer;transition:background .12s ease,border-color .12s ease}.flick__key[data-state=ghost]{border-style:dashed;background:transparent;color:var(--ink-muted);cursor:default}.flick__key[data-state=active]{background:var(--accent-soft);border-color:var(--accent);z-index:2}.flick__key--util{font-size:1rem}.flick__face{pointer-events:none;line-height:1}.flick__key[data-state=live] .flick__mark{color:var(--ink-faint)}.flick__key[data-state=live] .flick__mark[data-on]{color:var(--ink)}.flick__hint{position:absolute;bottom:4px;right:6px;font-size:.85rem;line-height:1;color:var(--accent);pointer-events:none}.flick__hint-arrow{font-size:.7em;opacity:.75;padding:0 1px}.flick__petal{position:absolute;display:flex;align-items:center;justify-content:center;top:17%;right:17%;bottom:17%;left:17%;border-radius:8px;background:var(--paper-raised);border:1px solid var(--accent);color:var(--ink);font-size:1.15rem;pointer-events:none}.flick__petal[data-dir=up]{transform:translateY(-105%)}.flick__petal[data-dir=down]{transform:translateY(105%)}.flick__petal[data-dir=left]{transform:translate(-100%)}.flick__petal[data-dir=right]{transform:translate(100%)}.flick__key[data-col="0"] .flick__petal[data-dir=left]{transform:translate(-62%)}.flick__key[data-col="2"] .flick__petal[data-dir=right]{transform:translate(62%)}.flick__petal[data-aimed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.listen__speaker{width:104px;height:104px;border-radius:50%;border:1px solid var(--line);background:var(--paper-raised);font-size:2.6rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s ease,transform .12s ease}.listen__speaker:active{transform:scale(.96)}.listen__speaker[data-playing]{background:var(--accent-soft);border-color:var(--accent)}.listen__reveal{display:block;margin:12px auto 0;font-size:.85rem}[data-still] .listen__speaker{transition-duration:.01ms}body.study-fixed{height:100dvh;overflow:hidden}body.study-fixed>div{height:100%;min-height:0}body.study-fixed .page{padding-block:8px 0}.teach{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px}.teach>.scene--stage{flex:0 0 auto}.teach__pane{flex:1 1 0;min-height:0;background:var(--paper-raised);border:1px solid var(--line);border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:12px;overflow:hidden}.teach__pane p{margin:0;font-size:.98rem;line-height:1.5}.teach__actions{flex:0 0 auto;min-height:72px;display:flex;gap:10px;align-items:center;padding-top:12px;padding-bottom:max(8px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}.seg{flex:0 0 auto;display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--wash);height:44px}.seg__tab{flex:1;display:flex;align-items:center;justify-content:center;border:none;border-radius:9px;background:transparent;font:inherit;font-size:.9rem;font-weight:600;color:var(--ink-muted);cursor:pointer;min-height:36px}.seg__tab[aria-selected=true]{background:var(--paper-raised);color:var(--ink);box-shadow:0 1px 2px var(--shadow)}.seg--small{height:36px;padding:3px;min-width:112px;max-width:150px}.seg--small .seg__tab{font-size:.95rem;min-height:30px}.teach__story{display:grid;grid-template-columns:52px 1fr;gap:10px 12px;align-items:start}.teach__story .teach__glyph{font-size:2.2rem;line-height:1;font-weight:500}.teach__parts{display:flex;gap:8px;flex-wrap:wrap}.teach__part{display:inline-flex;align-items:baseline;gap:6px;padding:4px 10px;border-radius:999px;background:var(--wash);font-size:.82rem;font-weight:600;color:var(--ink-muted)}.teach__part .jp{font-size:1.05rem;color:var(--ink)}.teach__lbl{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-weight:600}.teach__ex{margin-top:auto;padding-top:12px;border-top:1px dashed var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:.95rem;color:var(--ink-muted)}.teach__ex .jp{color:var(--ink);font-size:1.1rem}.teach__rows{display:flex;flex-direction:column;gap:10px}.teach__rrow{display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:baseline;font-size:1rem}.teach__rrow .jp{font-size:1.25rem}.teach__note{color:var(--ink-muted);font-size:.88rem;margin-top:auto}@media (max-width: 360px){.seg__tab{font-size:.82rem}}.strokes__boxes--compact{flex:1 1 0;min-height:0;align-items:center}.strokes__boxes--compact svg{height:100%;width:auto;max-height:100%;max-width:100%}.teach__pane .stack:has(.strokes__boxes--compact){flex:1 1 0;min-height:0;width:100%}.choices{margin-top:auto}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#12161f6b;z-index:5;border:none;padding:0}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:6;max-height:72dvh;background:var(--paper-raised);border-radius:22px 22px 0 0;padding:10px 20px max(20px,env(safe-area-inset-bottom));box-shadow:0 -12px 40px -10px #0006;display:flex;flex-direction:column;gap:12px}.sheet__grab{width:42px;height:5px;border-radius:99px;background:var(--line-strong);margin:0 auto 4px;flex:0 0 auto}.sheet .teach__pane{flex:1 1 auto;min-height:120px;border:none;padding:0;background:transparent}.sheet__react{flex:0 0 auto;display:flex;flex-direction:column;gap:2px;border-radius:14px;padding:10px 14px;font-size:.95rem;background:var(--bad-soft);border:1px solid color-mix(in oklab,var(--bad) 40%,transparent);position:relative;overflow:hidden}.sheet__react:after{content:"";position:absolute;top:0;right:0;width:22px;height:22px;background:linear-gradient(225deg,var(--paper-raised) 50%,transparent 50%)}.sheet__both{flex:0 0 auto;display:flex;justify-content:center;gap:34px;padding:4px 0}.sheet__both .sheet__g{display:flex;flex-direction:column;align-items:center;gap:2px}.sheet__both .jp{font-size:2.6rem;line-height:1;font-weight:500}.sheet__both .sheet__g[data-missed=true] .jp{color:var(--bad)}.sheet__action{flex:0 0 auto}.stage__glyph{display:inline-flex;flex-direction:column;align-items:center;gap:2px}.stage__glyph small{font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-weight:600;font-family:var(--font-ui)}.carousel{display:flex;gap:10px;overflow-x:auto;margin-inline:-20px;padding-inline:20px;padding-block:2px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}.carousel::-webkit-scrollbar{display:none}.gcard{flex:0 0 150px;scroll-snap-align:start;background:var(--paper-raised);border:1px solid var(--line);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:6px;text-align:left;font:inherit;color:inherit;cursor:pointer}.gcard[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.gcard__name{font-weight:700;font-size:.98rem}.gcard__detail{font-size:.8rem;color:var(--ink-muted)}.ring{width:44px;height:44px;border-radius:50%;background:conic-gradient(var(--accent) var(--at, 0%),var(--wash) 0);display:flex;align-items:center;justify-content:center;flex:0 0 auto}.ring i{width:32px;height:32px;border-radius:50%;background:var(--paper-raised);display:flex;align-items:center;justify-content:center;font-style:normal;font-size:.64rem;font-weight:700;font-family:var(--font-mono, ui-monospace, monospace);font-variant-numeric:tabular-nums}.lrow{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--paper-raised);width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer}.lrow__n{flex:0 0 auto;font-size:.72rem;font-weight:700;color:var(--ink-faint);font-variant-numeric:tabular-nums;min-width:1.5em}.lrow__what{flex:1;min-width:0;font-size:1.05rem;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lrow__st{flex:0 0 auto;font-size:.74rem;color:var(--ink-muted);font-variant-numeric:tabular-nums}.lrow__st[data-done=true]{color:var(--ok)}
