:root{--ground:#fff;--chrome:#f4f2ec;--surface:#f7f5f0;--raised:#fff;--active:#e8e5dc;--border:#eaeaea;--rule:#efede7;--control:#d9d9d6;--text:#1f201d;--muted:#636361;--accent:#1b6e66;--accent-pale:#dcebe8;--positive:#2e7d32;--negative:#b42318;--warning:#92400e;--pill-positive-bg:#dcfae5;--pill-positive-ink:#04250e;--pill-negative-bg:#fdecea;--pill-negative-ink:#7a1d14;--pill-warning-bg:#fffbeb;--pill-warning-ink:#92400e;--pill-neutral-bg:#eeece6;--pill-neutral-ink:#3d3d3a;--radius-card:22px;--radius-control:999px;--gap:16px;--pad:20px;--control-height:38px;--sans:"Instrument Sans", "Klee One", system-ui, sans-serif;--serif:"Instrument Serif", Georgia, serif;--jp:"Klee One", "Hiragino Mincho ProN", "Yu Mincho", serif;--ease:cubic-bezier(.22, 1, .36, 1);--primary:#1f201d;--primary-ink:#fff;--primary-hover:#3a3b37;--on-accent:#fff;--hover:#00000009;--edge-hover:#cfccc2;--input-bg:#fff;--paper:#fff;--paper-line:#c9b9a6;--paper-guide:#e2d6c8;--paper-ghost:#d7cfc3;--lv1:#f6d9d5;--lv2:#cfe3df;--lv3:#8fbcb5;--lv4:var(--accent);--lv4-ink:#fff;--grid-line:#ecebe6;--axis:#c9c7c0;--bar-past:#9cc6bf;--explain:#3d3d3a;--dialog-shadow:0 18px 50px #0000002e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#1a1a18;--chrome:#121211;--surface:#22221f;--raised:#2a2a27;--active:#34342f;--border:#2c2c29;--rule:#34342f;--control:#4a4a45;--text:#ecebe6;--muted:#a8a7a0;--accent:#5cbcae;--accent-pale:#1d3a36;--positive:#6fcf7a;--negative:#f08a7d;--warning:#e5b45a;--pill-positive-bg:#173322;--pill-positive-ink:#9be3a8;--pill-negative-bg:#3a1d19;--pill-negative-ink:#f6b0a6;--pill-warning-bg:#33290f;--pill-warning-ink:#ecc77a;--pill-neutral-bg:#31312d;--pill-neutral-ink:#dcdbd5;--primary:#ecebe6;--primary-ink:#141413;--primary-hover:#d2d1cb;--on-accent:#0f1f1d;--hover:#ffffff0d;--edge-hover:#58584f;--input-bg:#1f1f1d;--paper:#22221f;--paper-line:#6b6152;--paper-guide:#3f3b35;--paper-ghost:#4d4941;--lv1:#4d2b27;--lv2:#24413c;--lv3:#2f6a61;--lv4:#5cbcae;--lv4-ink:#0f1f1d;--grid-line:#2e2e2b;--axis:#4a4a45;--bar-past:#2f6a61;--explain:#cfcec8;--dialog-shadow:0 18px 50px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--ground:#1a1a18;--chrome:#121211;--surface:#22221f;--raised:#2a2a27;--active:#34342f;--border:#2c2c29;--rule:#34342f;--control:#4a4a45;--text:#ecebe6;--muted:#a8a7a0;--accent:#5cbcae;--accent-pale:#1d3a36;--positive:#6fcf7a;--negative:#f08a7d;--warning:#e5b45a;--pill-positive-bg:#173322;--pill-positive-ink:#9be3a8;--pill-negative-bg:#3a1d19;--pill-negative-ink:#f6b0a6;--pill-warning-bg:#33290f;--pill-warning-ink:#ecc77a;--pill-neutral-bg:#31312d;--pill-neutral-ink:#dcdbd5;--primary:#ecebe6;--primary-ink:#141413;--primary-hover:#d2d1cb;--on-accent:#0f1f1d;--hover:#ffffff0d;--edge-hover:#58584f;--input-bg:#1f1f1d;--paper:#22221f;--paper-line:#6b6152;--paper-guide:#3f3b35;--paper-ghost:#4d4941;--lv1:#4d2b27;--lv2:#24413c;--lv3:#2f6a61;--lv4:#5cbcae;--lv4-ink:#0f1f1d;--grid-line:#2e2e2b;--axis:#4a4a45;--bar-past:#2f6a61;--explain:#cfcec8;--dialog-shadow:0 18px 50px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--chrome);color:var(--text);font:14px/1.5 var(--sans);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,ul,ol,figure{margin:0}ul[class],ol[class]{padding:0;list-style:none}img,svg,canvas{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.num,table,.kpi-value,.timer{font-variant-numeric:tabular-nums}.jp{font-family:var(--jp)}.muted{color:var(--muted)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{grid-template-columns:224px minmax(0,1fr);min-height:100svh;display:grid}.sidebar{flex-direction:column;gap:2px;height:100svh;padding:16px 12px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:4px 10px 20px;font-size:15px;font-weight:600;display:flex}.brand img{width:24px;height:24px}.nav a,.nav button{height:34px;color:var(--muted);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;width:100%;padding:0 12px;transition:background-color .15s,color .15s;display:flex}.nav a:hover,.nav button:hover{color:var(--text);background:var(--hover)}.nav a[aria-current=page]{background:var(--active);color:var(--text)}.nav-group{color:var(--muted);margin-top:18px;padding:0 12px 6px;font-size:12px}.nav-foot{margin-top:auto}.nav:not(.nav-foot){min-height:0;overflow-y:auto}.nav .glyph{width:22px;font-family:var(--jp);text-align:center;color:var(--muted);transition:color .15s, transform .2s var(--ease);flex:none;margin-right:10px;font-size:15px}.nav a:hover .glyph{transform:translateY(-1px)}.nav a[aria-current=page] .glyph{color:var(--accent)}.nav .lock{width:14px;height:14px;color:var(--muted);margin-left:auto}.nav-section{margin-top:14px}.nav .nav-head{height:28px;color:var(--muted);justify-content:space-between;font-size:12px}.nav .nav-head svg{width:12px;height:12px;transition:transform .2s var(--ease)}.nav .nav-head[aria-expanded=false] svg{transform:rotate(-90deg)}.nav-items{animation:nav-open .22s var(--ease);gap:2px;display:grid}@keyframes nav-open{0%{opacity:0;transform:translateY(-4px)}}.nav a.nav-live{background:var(--accent-pale);height:auto;min-height:48px;color:var(--text);margin-bottom:10px;padding:8px 12px}.nav a.nav-live .glyph{color:var(--accent);font-size:10px;animation:1.6s ease-in-out infinite pulse}.nav-label{min-width:0;line-height:1.3;display:grid}.nav-sub{color:var(--muted);font-size:12px}@keyframes pulse{50%{opacity:.35}}.nav-foot{border-top:1px solid var(--rule);gap:2px;padding-top:12px;display:grid}.nav .nav-icon{width:22px;color:var(--muted);flex:none;place-items:center;margin-right:10px;display:grid}.nav .nav-icon svg{width:16px;height:16px}.nav button:hover .nav-icon{color:var(--text)}.switch{background:var(--control);border-radius:999px;width:30px;height:18px;margin-left:auto;transition:background-color .2s;position:relative}.switch span{background:var(--raised);width:14px;height:14px;transition:transform .2s var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}.theme-switch[aria-checked=true] .switch{background:var(--accent)}.theme-switch[aria-checked=true] .switch span{transform:translate(12px)}.nav .account{height:auto;min-height:48px;margin:4px 0;padding:6px 12px}.account{color:var(--text);align-items:center;display:flex}div.account{padding:6px 12px}.account-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.account .nav-sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.account .nav-label{flex:1}.nav-chevron{width:14px;color:var(--muted);transition:transform .15s var(--ease);flex:none}.nav-chevron svg{width:14px;height:14px}.nav a.account:hover .nav-chevron{color:var(--text);transform:translate(2px)}.nav button.logout:hover,.nav button.logout:hover .nav-icon{color:var(--negative)}.avatar{background:var(--accent-pale);width:30px;height:30px;color:var(--accent);border-radius:50%;flex:none;place-items:center;margin:0 10px 0 -4px;font-size:13px;font-weight:600;display:grid}@media (prefers-reduced-motion:reduce){.nav-items,.nav a.nav-live .glyph{animation:none}}.sheet{background:var(--ground);border:1px solid var(--border);border-radius:16px;min-width:0;margin:8px 8px 8px 0}.topbar{display:none}.page{max-width:1132px;margin:0 auto;padding:56px 16px 64px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:32px;display:flex}.page-head h1{letter-spacing:-.01em;font-size:28px;font-weight:600;line-height:1.15}.page-head p{color:var(--muted);max-width:640px;margin-top:6px;font-size:15px}.greeting{font-family:var(--serif);letter-spacing:-.01em;font-size:48px;font-weight:400;line-height:1.05}.greeting-line{color:var(--muted);margin-top:10px;font-size:16px}.grid{gap:var(--gap);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.s3{grid-column:span 3}.s4{grid-column:span 4}.s5{grid-column:span 5}.s6{grid-column:span 6}.s7{grid-column:span 7}.s8{grid-column:span 8}.s9{grid-column:span 9}.s12{grid-column:span 12}.grid+.grid,.grid+.panel,.panel+.grid,.panel+.panel{margin-top:var(--gap)}.grid>.panel{margin-top:0}.align-start{align-items:start}.panel{background:var(--surface);border-radius:var(--radius-card);padding:var(--pad);min-width:0}.panel.white{background:var(--raised);border:1px solid var(--border)}.panel-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.panel-head h2{font-size:14px;font-weight:600}.panel-head .aside{color:var(--muted);font-size:13px}.panel-head a.aside:hover{color:var(--text)}.tile{background:var(--surface);border-radius:var(--radius-card);flex-direction:column;min-height:128px;padding:16px 18px;display:flex}.tile .label{color:var(--muted);font-size:13px}.tile .kpi-value{margin-top:8px;font-size:32px;font-weight:400;line-height:1.1}.tile .kpi-value small{color:var(--muted);margin-left:4px;font-size:15px}.tile .caption{color:var(--muted);margin-top:auto;font-size:13px}.btn{height:var(--control-height);border-radius:var(--radius-control);border:1px solid var(--control);background:var(--raised);cursor:pointer;white-space:nowrap;transition:transform .12s var(--ease), background-color .15s, border-color .15s;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:500;display:inline-flex}.btn:hover{border-color:var(--edge-hover)}.btn:active{transform:scale(.97)}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn.primary:hover{background:var(--primary-hover)}.btn.accent{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{color:var(--text);background:var(--hover)}.btn.danger{color:var(--negative)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn.sm{height:32px;padding:0 14px;font-size:13px}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}label.field{gap:8px;font-weight:500;display:grid}.input,select.input{border:1px solid var(--control);background:var(--input-bg);border-radius:10px;width:100%;height:40px;padding:0 14px}.input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:#0000}.field-note{color:var(--muted);font-size:13px;font-weight:400}.form{gap:16px;display:grid}.error-text{color:var(--negative);font-size:14px}.pill{white-space:nowrap;background:var(--pill-neutral-bg);height:22px;color:var(--pill-neutral-ink);border-radius:999px;flex:none;align-items:center;padding:0 9px;font-size:12px;font-weight:500;display:inline-flex}.pill.pos{background:var(--pill-positive-bg);color:var(--pill-positive-ink)}.pill.neg{background:var(--pill-negative-bg);color:var(--pill-negative-ink)}.pill.warn{background:var(--pill-warning-bg);color:var(--pill-warning-ink)}.rows{gap:8px;display:grid}.rowcard{background:var(--raised);border:1px solid var(--rule);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;min-height:63px;padding:10px 16px;transition:border-color .15s;display:flex}a.rowcard:hover{border-color:var(--edge-hover)}.rowcard .title{font-weight:500}.rowcard .sub{color:var(--muted);font-size:13px}.rowcard .end{text-align:right;flex:none;align-items:center;gap:10px;display:flex}table.data{border-collapse:collapse;width:100%}table.data th{text-align:left;color:var(--muted);padding:8px 10px;font-size:12px;font-weight:400}table.data td{border-top:1px solid var(--rule);vertical-align:middle;padding:10px}table.data .r{text-align:right}.table-wrap{overflow-x:auto}.kanamap{direction:rtl;grid-template-rows:repeat(5,auto);grid-template-columns:repeat(11,minmax(0,1fr));grid-auto-flow:column;gap:4px;display:grid}.kanamap .cell{aspect-ratio:1;background:var(--raised);font-family:var(--jp);direction:ltr;border-radius:8px;place-items:center;font-size:19px;display:grid;position:relative}.kanamap .cell.empty{visibility:hidden}.kanamap .cell[data-level="1"]{background:var(--lv1)}.kanamap .cell[data-level="2"]{background:var(--lv2)}.kanamap .cell[data-level="3"]{background:var(--lv3)}.kanamap .cell[data-level="4"]{background:var(--lv4);color:var(--lv4-ink)}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:12px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.charboard{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px;display:grid}.charcell{background:var(--raised);border:1px solid var(--rule);cursor:pointer;transition:border-color .15s, transform .12s var(--ease);border-radius:14px;place-items:center;gap:2px;padding:12px 4px 10px;display:grid}.charcell:hover{border-color:var(--edge-hover)}.charcell:active{transform:scale(.97)}.charcell[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.charcell .c{font-family:var(--jp);font-size:30px;line-height:1.1}.charcell .r{color:var(--muted);font-size:12px}.charcell .r.jp{color:var(--text);font-size:13px}.reading-list{gap:10px;margin:0 0 14px;display:grid}.readings dt{color:var(--muted);margin-bottom:4px;font-size:12px}.readings dd{flex-wrap:wrap;gap:6px;margin:0;display:flex}.reading{background:var(--raised);border:1px solid var(--rule);border-radius:999px;align-items:center;gap:6px;padding:2px 4px 2px 10px;display:inline-flex}.reading .jp{font-size:16px}.reading .say{width:28px;height:28px}.charcell .acc{background:var(--rule);border-radius:2px;width:28px;height:3px;overflow:hidden}.charcell .acc span{background:var(--accent);height:100%;display:block}.genko{aspect-ratio:1;background:var(--paper);border:1.5px solid var(--paper-line);touch-action:none;border-radius:4px;width:100%;max-width:280px;position:relative}.genko:before,.genko:after{content:"";pointer-events:none;position:absolute}.genko:before{border-left:1px dashed var(--paper-guide);top:6%;bottom:6%;left:50%}.genko:after{border-top:1px dashed var(--paper-guide);top:50%;left:6%;right:6%}.genko canvas{color:var(--text)}.genko canvas,.genko svg{width:100%;height:100%;position:absolute;inset:0}.genko-row{flex-wrap:wrap;gap:12px;display:flex}.genko-unit{gap:8px;width:min(280px,100%);display:grid}.genko-tools{gap:4px;display:flex}.char-side .char-panel{max-height:calc(100dvh - 48px);position:sticky;top:24px;overflow:auto}.char-panel .panel-head{align-items:center}.char-panel .close{background:var(--hover);width:36px;height:36px;color:var(--text);cursor:pointer;border:0;border-radius:999px;flex:none;place-items:center;margin-left:auto;display:grid}.char-panel .close svg{width:16px;height:16px}.trace{border-top:1px solid var(--rule);margin-top:20px;padding-top:16px}.trace h3{font-size:14px;font-weight:600}.trace-result{gap:8px;margin-top:12px;font-size:14px;list-style:none;display:grid}.trace-result .pill{margin-right:6px}.char-dialog .trace .genko-row,.char-dialog .trace .row-actions{justify-content:center}.char-dialog{overscroll-behavior:contain;width:min(440px,100vw - 24px);max-width:none;max-height:calc(100dvh - 24px);padding:0;overflow:auto}.char-dialog .char-panel{background:var(--raised)}.char-panel .genko.order{max-width:190px;margin:0 auto}.runner{max-width:820px;margin:0 auto;padding:32px 16px 64px}.runner-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.runner-head h1{font-size:18px;font-weight:600}.timer{text-align:right;min-width:80px;font-size:22px}.timer.low{color:var(--negative)}.qnav{flex-wrap:wrap;gap:6px;margin:0 0 20px;display:flex}.qnav button{border:1px solid var(--rule);background:var(--raised);cursor:pointer;border-radius:10px;width:34px;height:34px;font-size:13px}.qnav button[data-answered=true]{background:var(--accent-pale);border-color:var(--accent-pale)}.qnav button[aria-current=true]{border-color:var(--text)}.question{background:var(--surface);border-radius:var(--radius-card);animation:q-in .25s var(--ease);padding:28px}@keyframes q-in{0%{opacity:0;transform:translate(12px)}}.progress{background:var(--rule);border-radius:2px;height:4px;margin:0 0 16px;overflow:hidden}.progress span{background:var(--accent);height:100%;transition:width .35s var(--ease);display:block}.keys-hint{margin-top:12px;font-size:13px}@media (hover:none){.keys-hint{display:none}}@media (prefers-reduced-motion:reduce){.question{animation:none}}.prompt{font-size:20px;line-height:1.6}.prompt.big{font-family:var(--jp);font-size:56px;line-height:1.2}.prompt ruby rt,.md ruby rt,.check-jp ruby rt,.words ruby rt,.rowcard .sample rt{color:var(--muted);letter-spacing:0;font-size:.5em;line-height:1.1}.md ruby,.check-jp ruby,.words ruby{ruby-align:center}.hint{color:var(--muted);margin-top:8px;font-size:15px}.context{background:var(--raised);border:1px solid var(--rule);border-radius:14px;margin-bottom:20px;padding:18px 20px;font-size:17px;line-height:1.9}.context blockquote{border-left:3px solid var(--rule);margin:10px 0 0;padding-left:14px}.qimage{border:1px solid var(--rule);background:#fff;border-radius:12px;margin:0 0 20px;overflow:hidden}.qimage img{object-fit:contain;width:100%;max-height:420px}.choices{gap:8px;margin-top:24px;display:grid}.choice{border:1px solid var(--rule);background:var(--raised);cursor:pointer;text-align:left;min-height:56px;transition:border-color .15s, transform .12s var(--ease);border-radius:14px;align-items:center;gap:14px;padding:10px 16px;font-size:17px;display:flex}.choice:hover{border-color:var(--edge-hover)}.choice:active{transform:scale(.99)}.choice[aria-checked=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.choice .key{background:var(--surface);width:26px;height:26px;color:var(--muted);border-radius:50%;flex:none;place-items:center;font-size:13px;display:grid}.choice[aria-checked=true] .key{background:var(--accent);color:var(--on-accent)}.choice .txt{font-family:var(--sans)}.runner-foot{flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:20px;display:flex}.audio{align-items:center;gap:12px;margin-bottom:20px;display:flex}.exam-sheet{gap:36px;scroll-margin-top:72px;display:grid}.sheet-part{font-family:var(--jp);color:var(--muted);margin-bottom:10px;font-size:14px}.sheet-title{font-family:var(--jp);font-size:18px;font-weight:600;line-height:1.75}.sheet-title span{margin-right:.4em}.sheet-gloss{color:var(--muted);margin-top:8px;font-size:14px}.sheet-q{gap:14px;scroll-margin-top:72px;display:grid}.exam-sheet .context,.exam-sheet .qimage,.exam-sheet .audio{margin-bottom:0}.sheet-prompt{align-items:baseline;gap:14px;display:flex}.sheet-q .prompt{font-size:19px}.sheet-ban{font-family:var(--jp);font-size:22px;font-weight:600;transition:color .15s}.sheet-q[data-active] .sheet-ban{color:var(--accent)}.qno,.blank-no{border:1.5px solid var(--text);font-family:var(--sans);border-radius:4px;place-items:center;font-weight:600;display:inline-grid}.qno{flex:none;min-width:32px;height:32px;padding:0 6px;font-size:15px;transition:background .15s,color .15s}.sheet-q[data-active] .qno{background:var(--text);color:var(--ground)}.blank-no{min-width:2.4em;margin:0 .25em;padding:0 .4em;line-height:1.5}.sheet-choices{gap:8px;display:grid}.sheet-choices.short{grid-template-columns:repeat(var(--n,4), minmax(0, 1fr))}.sheet-choices.mid{grid-template-columns:repeat(2,minmax(0,1fr))}.sheet-choices.short.marks{grid-template-columns:repeat(var(--n), minmax(0, 1fr))}@media (width<=640px){.sheet-choices.short{grid-template-columns:repeat(min(var(--n,4), 2), minmax(0, 1fr))}.sheet-choices.mid{grid-template-columns:none}}.review{gap:var(--gap);display:grid}.review-item{background:var(--surface);border-radius:var(--radius-card);padding:22px}.review-item .prompt{font-size:18px}.answer-line{flex-wrap:wrap;align-items:baseline;gap:10px;margin-top:10px;display:flex}.answer-line .k{color:var(--muted);min-width:104px;font-size:13px}.answer-line .v{font-family:var(--sans);font-size:17px}.answer-line .v.wrong{color:var(--negative)}.explain{border-top:1px solid var(--rule);color:var(--explain);white-space:pre-line;margin-top:14px;padding-top:14px}.script{font-family:var(--jp);white-space:pre-line;background:var(--raised);border:1px solid var(--rule);border-radius:12px;margin-top:12px;padding:14px 16px}.drawpair{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.drawpair figure{width:150px}.drawpair figcaption{color:var(--muted);margin-top:6px;font-size:12px}.reader{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:40px;display:grid}.reader aside{gap:var(--gap);display:grid;position:sticky;top:24px}.md{max-width:700px;font-size:16px;line-height:1.75}.md h3{margin:32px 0 10px;font-size:20px;font-weight:600;line-height:1.3}.md h4{margin:24px 0 8px;font-size:16px;font-weight:600}.md p{margin:0 0 14px}.md strong{font-weight:600}.md :lang(ja),.md strong{font-family:var(--sans)}.md table{border-collapse:collapse;width:100%;margin:12px 0 20px;font-size:15px}.md th{text-align:left;color:var(--muted);padding:6px 10px;font-size:13px;font-weight:400}.md td{border-top:1px solid var(--rule);padding:8px 10px}.md a{color:var(--accent)}.md ul,.md ol{margin:0 0 14px;padding-left:20px}.md h3{scroll-margin-top:72px}.md blockquote{background:var(--accent-pale);border-radius:14px;margin:18px 0;padding:14px 18px}.md blockquote p:last-child{margin:0}.md em{font-style:italic}.pola{background:var(--surface);border-radius:16px;margin:16px 0 20px;padding:16px 18px}.pola-label{color:var(--muted);font-size:12px;margin:0 0 8px!important}.pola ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.pola li{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 16px;display:flex}.formula{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tok{background:var(--raised);border:1px solid var(--rule);border-radius:8px;align-items:center;min-height:30px;padding:0 10px;font-size:15px;line-height:1.3;display:inline-flex}.tok.jp{font-family:var(--jp);background:var(--accent-pale);color:var(--accent);border-color:#0000;font-size:17px}.tok.gap{color:var(--muted);border-style:dashed}.plus,.pola-note{color:var(--muted);font-size:13px}.examples{gap:8px;margin:12px 0 24px;display:grid}.ex{background:var(--raised);border:1px solid var(--rule);border-radius:16px;margin:0;padding:14px 16px;transition:border-color .15s}.ex:hover{border-color:var(--edge-hover)}.ex-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ex-jp{font-family:var(--jp);font-size:21px;line-height:1.5;margin:0!important}.say{background:var(--surface);width:34px;height:34px;color:var(--muted);cursor:pointer;transition:color .15s, background-color .15s, transform .12s var(--ease);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.say svg{width:16px;height:16px}.say:hover{color:var(--accent);background:var(--accent-pale)}.say:active{transform:scale(.92)}.ex-more{text-align:left;cursor:default;background:0 0;border:0;gap:2px;width:100%;margin-top:4px;padding:0;line-height:1.5;display:grid}.ex-ro{color:var(--muted);font-size:14px}.ex-id{font-size:15px}.ex-tap{color:var(--accent);font-size:13px;display:none}.hide-ro .ex-more[aria-expanded=false] .ex-ro,.hide-id .ex-more[aria-expanded=false] .ex-id{filter:blur(6px);opacity:.5;-webkit-user-select:none;user-select:none}.hide-ro .ex-more,.hide-id .ex-more{cursor:pointer}.hide-ro .ex-more[aria-expanded=false] .ex-tap,.hide-id .ex-more[aria-expanded=false] .ex-tap{display:block}.ex-more .ex-ro,.ex-more .ex-id{transition:filter .25s var(--ease), opacity .25s}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;font-size:13px;display:flex}.toolbar.sticky{z-index:5;background:var(--ground);padding:10px 0;position:sticky;top:0}.chip{border:1px solid var(--control);background:var(--raised);cursor:pointer;border-radius:999px;height:32px;padding:0 14px;font-size:13px;transition:background-color .15s,border-color .15s,color .15s}.chip:hover{border-color:var(--edge-hover)}.chip[aria-pressed=true]{background:var(--text);border-color:var(--text);color:var(--ground)}.toc{gap:2px;padding:4px 0;display:grid}.toc-title{color:var(--muted);padding:0 12px 6px;font-size:12px}.toc a{color:var(--muted);border-left:2px solid #0000;border-radius:10px;padding:6px 12px;font-size:14px;line-height:1.35;transition:color .15s,background-color .15s}.toc a:hover{color:var(--text);background:var(--hover)}.toc a[aria-current=location]{color:var(--text);background:var(--active)}.check{border-radius:var(--radius-card);background:var(--surface);max-width:700px;margin-top:40px;padding:24px}.check .say{background:var(--raised)}.check h2{font-size:16px;font-weight:600}.check-jp{font-family:var(--jp);font-size:26px;line-height:1.5}.check .choices{margin-top:16px}.check-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.check-score{margin:8px 0 4px;font-size:22px}.check-score .num{font-size:32px}.choice[data-state=right]{border-color:var(--positive);box-shadow:inset 0 0 0 1px var(--positive);background:var(--pill-positive-bg);color:var(--pill-positive-ink)}.choice[data-state=wrong]{border-color:var(--negative);box-shadow:inset 0 0 0 1px var(--negative);background:var(--pill-negative-bg);color:var(--pill-negative-ink);animation:.3s shake}.choice:disabled{cursor:default}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.chapter{margin-bottom:40px;scroll-margin-top:24px}.chapter-jump{flex-wrap:wrap;gap:6px;margin:-12px 0 32px;display:flex}.chapter-jump a{background:var(--surface);height:32px;color:var(--muted);border-radius:999px;align-items:center;padding:0 14px;font-size:13px;transition:color .15s,background-color .15s;display:inline-flex}.chapter-jump a:hover{color:var(--text);background:var(--active)}.chapter-progress{align-items:center;gap:10px;display:inline-flex}.meter{background:var(--rule);border-radius:3px;width:80px;height:6px;display:block;overflow:hidden}.meter span{background:var(--accent);height:100%;transition:width .4s var(--ease);border-radius:3px;display:block}.rowcard.lesson{justify-content:flex-start}.rowcard.lesson .end{margin-left:auto}.rowcard:hover .pola-mark{background:var(--accent);color:var(--on-accent)}.pola-mark{background:var(--accent-pale);min-width:44px;height:44px;color:var(--accent);white-space:nowrap;border-radius:12px;flex:none;place-items:center;padding:0 8px;font-size:17px;transition:background-color .15s,color .15s;display:grid}.pola-mark.big{border-radius:18px;min-width:72px;height:72px;padding:0 14px;font-size:28px}.rowcard .sample{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:2px 0;font-size:15px;display:block;overflow:hidden}.lesson-head{justify-content:flex-start;align-items:center;gap:18px}.crumb{font-size:13px;margin:0 0 4px!important}.crumb a{color:var(--muted)}.crumb a:hover{color:var(--text)}table.words td{height:56px}table.words td.jp{white-space:nowrap}.reveal{border:1px dashed var(--control);height:28px;color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;padding:0 12px;font-size:13px}.reveal:hover{border-style:solid}.flash{gap:14px;max-width:560px;display:grid}.flash .meter{width:100%}.flash-meta{color:var(--muted);justify-content:space-between;font-size:13px;display:flex}.flashcard{cursor:pointer;perspective:1200px;background:0 0;border:0;height:300px;padding:0;position:relative}.flashcard .face{border-radius:var(--radius-card);background:var(--surface);backface-visibility:hidden;transition:transform .5s var(--ease);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex;position:absolute;inset:0}.flashcard .back{background:var(--accent-pale);transform:rotateY(180deg)}.flashcard[data-flip=true] .front{transform:rotateY(-180deg)}.flashcard[data-flip=true] .back{transform:rotateY(0)}.flashcard .big{font-size:64px;line-height:1.15}.flashcard .back .big{font-size:40px}.flashcard .kana{color:var(--muted);font-size:20px}.flashcard .ro{color:var(--muted);font-size:15px}.flashcard .arti{font-size:22px;font-weight:500}.flash-actions{justify-content:center;align-items:center;gap:8px;display:flex}.flash-keys{text-align:center;font-size:13px}.flash-done{border-radius:var(--radius-card);background:var(--surface);max-width:560px;padding:24px}@media (prefers-reduced-motion:reduce){.flashcard .face{transition:none}.choice[data-state=wrong]{animation:none}}.chart text{fill:var(--muted);font-size:12px;font-family:var(--sans)}.chart .grid-line{stroke:var(--grid-line)}.chart .base{stroke:var(--axis)}.chart .ref{stroke:var(--text);stroke-dasharray:3 3}.chart .bar{fill:var(--accent)}.chart .bar.past{fill:var(--bar-past)}.barlist{gap:12px;display:grid}.barlist .l{justify-content:space-between;font-size:13px;display:flex}.barlist .t{background:var(--rule);border-radius:3px;height:6px;margin-top:6px;overflow:hidden}.barlist .t span{background:var(--text);border-radius:3px;height:100%;display:block}.notice{background:var(--surface);border-radius:var(--radius-card);max-width:640px;padding:28px}.notice h2{margin-bottom:8px;font-size:20px;font-weight:600}.notice p{color:var(--muted);margin-bottom:18px;font-size:15px}dialog{background:var(--raised);max-width:420px;color:var(--text);box-shadow:var(--dialog-shadow);border:0;border-radius:18px;padding:24px}dialog::backdrop{background:#14141259}dialog h2{margin-bottom:8px;font-size:18px;font-weight:600}dialog p{color:var(--muted);margin-bottom:18px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:24px;display:flex;overflow-x:auto}.tabs a,.tabs button{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 12px}.tabs [aria-current=page],.tabs [aria-selected=true]{color:var(--text);border-bottom-color:var(--text)}.entry{background:var(--chrome);grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);min-height:100svh;display:grid}.entry-art{flex-direction:column;justify-content:space-between;gap:32px;padding:48px;display:flex}.entry-art h1{font-family:var(--serif);letter-spacing:-.01em;font-size:64px;font-weight:400;line-height:1}.entry-art .lead{max-width:460px;margin-top:14px;font-size:18px}.entry-sheet{border:1.5px solid var(--paper-line);background:var(--paper);grid-template-columns:repeat(5,minmax(0,1fr));gap:0;max-width:640px;display:grid}.entry-sheet span{aspect-ratio:1;font-family:var(--jp);border-right:1px solid var(--paper-guide);border-bottom:1px solid var(--paper-guide);place-items:center;font-size:clamp(36px,5vw,64px);display:grid;position:relative}.entry-sheet span:nth-child(5n){border-right:0}.entry-sheet span:nth-last-child(-n+5){border-bottom:0}.entry-sheet span.ghost{color:var(--paper-ghost)}.entry-points{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;max-width:760px;display:grid}.entry-points h2{margin-bottom:4px;font-size:15px;font-weight:600}.entry-points p{color:var(--muted);font-size:14px}.theme-corner{position:absolute;top:16px;right:16px}.entry-form{background:var(--ground);border:1px solid var(--border);border-radius:16px;place-items:center;margin:8px;padding:32px;display:grid;position:relative}.entry-form .form{width:100%;max-width:360px}.entry-form h2{margin-bottom:4px;font-size:24px;font-weight:600}.google-btn{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;justify-content:center;min-height:40px;display:flex}.or-divider{color:var(--muted);align-items:center;gap:12px;font-size:13px;display:flex}.or-divider:before,.or-divider:after{content:"";border-top:1px solid var(--border);flex:1}.loading{color:var(--muted);padding:40px 0}@media (width<=960px){.s3{grid-column:span 6}.s4,.s5,.s6,.s7,.s8,.s9,.stack{grid-column:span 12}.reader{grid-template-columns:minmax(0,1fr)}.reader aside{position:static}.char-side{display:none}.entry{grid-template-columns:minmax(0,1fr);row-gap:24px;padding:32px 0}.entry-art{display:contents}.entry-art>*{margin-inline:16px}.entry-form{order:1;margin:0 8px}.entry-sheet{order:2}.entry-points{order:3;grid-template-columns:minmax(0,1fr);gap:16px}}@media (width<=760px){.app{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr)}.sidebar{z-index:20;background:var(--chrome);width:100%;height:auto;padding-top:60px;display:none;position:fixed;inset:0}.app.nav-open .sidebar{display:flex}.sidebar>.brand{display:none}.sheet{border:0;border-radius:0;margin:0}.topbar{background:var(--chrome);z-index:30;justify-content:space-between;align-items:center;height:48px;padding:0 12px 0 16px;display:flex;position:sticky;top:0}.topbar .brand{padding:0}.page{padding:28px 16px 48px}.greeting{font-size:30px}.entry-art h1{font-size:44px}.question{padding:20px}.prompt.big{font-size:44px}.kanamap .cell{border-radius:6px;font-size:15px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}@keyframes draw{to{stroke-dashoffset:0}}polyline.draw{stroke-dasharray:1;stroke-dashoffset:1px;animation:draw .5s var(--ease) forwards}
