:root{--paper:#eef0f2;--card:#fbfcfd;--ink:#1d2433;--muted:#5f6878;--line:#d5d9e0;--guide:#c6ccd7;--indigo:#2b3f7a;--indigo-soft:#e1e6f3;--good:#2f7a52;--good-soft:#dcefe3;--bad:#b8462e;--bad-soft:#f6e1db;--shu:#c8372d;--kin:#9c6a12;--kin-soft:#f5ead2;--shadow:#141c302e;--kana:"Klee One", "Hiragino Mincho ProN", serif;--ui:"Zen Kaku Gothic New", "Hiragino Sans", system-ui, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#13171f;--card:#1c2230;--ink:#e7eaf0;--muted:#9aa3b3;--line:#2e3646;--guide:#3a4458;--indigo:#9fb3ef;--indigo-soft:#253154;--good:#7cc79c;--good-soft:#1d3528;--bad:#ec8f78;--bad-soft:#3c2420;--shu:#ef6a58;--kin:#e3b35a;--kin-soft:#3a2f17;--shadow:#00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#13171f;--card:#1c2230;--ink:#e7eaf0;--muted:#9aa3b3;--line:#2e3646;--guide:#3a4458;--indigo:#9fb3ef;--indigo-soft:#253154;--good:#7cc79c;--good-soft:#1d3528;--bad:#ec8f78;--bad-soft:#3c2420;--shu:#ef6a58;--kin:#e3b35a;--kin-soft:#3a2f17;--shadow:#00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[hidden]{display:none!important}html,body{overscroll-behavior-x:none;height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--ui);-webkit-tap-highlight-color:transparent;margin:0;font-size:15px;line-height:1.5}#root{height:100%}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation}a{color:var(--indigo)}:focus-visible{outline:2px solid var(--indigo);outline-offset:2px}p{margin:0}.app{flex-direction:column;max-width:760px;height:100%;margin:0 auto;display:flex}.screen{box-sizing:border-box;min-height:0;padding-top:max(14px, env(safe-area-inset-top,0px));padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));flex-direction:column;flex:1;gap:12px;display:flex;overflow-y:auto}.screen>*{flex-shrink:0}.screen.fill{gap:10px}.screen.fill>.stage{flex-shrink:1}.mainbar{justify-content:space-between;align-items:center;gap:10px;margin-top:-4px;display:flex}.switch2{background:var(--card);border:1px solid var(--line);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.switch2 button{color:var(--muted);background:0 0;border:0;border-radius:999px;padding:6px 16px;font-size:.9rem;font-weight:700}.switch2 button[aria-selected=true]{background:var(--indigo-soft);color:var(--indigo)}.mainbar .iconbtn{width:40px;height:40px}.titlebar{align-items:center;gap:10px;min-height:44px;display:flex}.titlebar h1{flex:1;min-width:0;margin:0;font-size:1.45rem;font-weight:700}.titlebar .tt{flex-direction:column;flex:1;min-width:0;line-height:1.2;display:flex}.titlebar .tt.center{text-align:center;align-items:center}.titlebar .tt b{font-size:1.1rem}.titlebar .tt span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.titlebar .pos{text-align:right;min-width:44px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.iconbtn{border:1px solid var(--line);background:var(--card);width:44px;height:44px;color:var(--ink);border-radius:22px;flex:none;place-items:center;padding:0;display:grid}.iconbtn svg{width:22px;height:22px}.iconbtn.plain{color:var(--muted);background:0 0;border:0}.iconbtn.plain:hover{color:var(--ink)}.label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.muted{color:var(--muted)}.small{font-size:.85rem}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.col{flex-direction:column;gap:10px;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:10px;padding:14px;display:flex}.k{font-family:var(--kana);font-weight:600}.note{color:var(--muted);font-size:.85rem}.msg{min-height:1.3em;font-weight:700}.msg.good{color:var(--good)}.msg.bad{color:var(--bad)}.callout{background:var(--indigo-soft);border-radius:12px;padding:10px 12px;font-size:.92rem}.centre{justify-content:center;display:flex}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink);text-align:center;border-radius:12px;flex:120px;padding:12px;font-weight:700}.btn.primary{background:var(--indigo);border-color:var(--indigo);color:var(--card)}.btn.good{border-color:var(--good);color:var(--good)}.btn.bad{border-color:var(--bad);color:var(--bad)}.btn.block{box-sizing:border-box;flex:auto;width:100%}.btn:disabled{opacity:.5;cursor:default}.textbtn{color:var(--muted);background:0 0;border:0;border-radius:10px;padding:8px 12px;font-size:.85rem;font-weight:700}.textbtn:hover,.textbtn:active{background:var(--line);color:var(--ink)}.seg{border:1px solid var(--line);background:var(--card);border-radius:10px;display:inline-flex;overflow:hidden}.seg.wide{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;width:100%;display:grid}.seg button{color:var(--ink);white-space:nowrap;background:0 0;border:0;min-width:0;padding:8px 10px;font-size:.9rem}.seg.wide button{padding-inline:4px}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-pressed=true]{background:var(--indigo-soft);color:var(--indigo);font-weight:700}.seg button .k{font-size:1.05rem}.seg button small{color:var(--muted);font-size:.7rem;font-weight:400;display:block}.chip{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:.9rem;display:inline-flex}.chip .k{font-size:1.05rem}.chip[aria-pressed=true]{background:var(--indigo);border-color:var(--indigo);color:var(--card)}.chip.dashed{color:var(--indigo);border-style:dashed}.chip.mini{color:var(--indigo);padding:3px 10px;font-size:.8rem}.row.quick{gap:6px}.row.quick>.muted{flex:auto}.switch{align-items:center;gap:12px;min-height:52px;display:flex}.switch+.switch{border-top:1px solid var(--line)}.switch .tx{flex-direction:column;flex:1;display:flex}.switch input{appearance:none;background:var(--line);cursor:pointer;border-radius:14px;flex:none;width:46px;height:28px;margin:0;transition:background .2s;position:relative}.switch input:after{content:"";width:22px;height:22px;box-shadow:0 1px 3px var(--shadow);background:#fff;border-radius:50%;transition:transform .2s;position:absolute;top:3px;left:3px}.switch input:checked{background:var(--indigo)}.switch input:checked:after{transform:translate(18px)}.list-link{min-height:48px;color:var(--ink);border:0;border-top:1px solid var(--line);text-align:left;background:0 0;align-items:center;width:100%;padding:0;font-weight:700;display:flex}.list-link:first-child{border-top:0}input[type=text],textarea{box-sizing:border-box;border:1px solid var(--line);background:var(--paper);width:100%;color:var(--ink);border-radius:12px;padding:10px 12px}textarea.mono{resize:vertical;min-height:80px;font:12px/1.4 ui-monospace,Menlo,Consolas,monospace}.meter{background:var(--line);border-radius:4px;height:4px;margin-top:4px;display:block;overflow:hidden}.meter i{background:var(--indigo);border-radius:4px;width:0;height:100%;transition:width .9s;display:block}.stickybar{padding:10px 4px calc(4px + env(safe-area-inset-bottom,0px));background:linear-gradient(to bottom, transparent, var(--paper) 30%);margin-inline:-4px;position:sticky;bottom:0}.rankb{font-family:var(--kana);font-weight:600}.flame path{fill:var(--line);transition:fill .3s}.flame path.on{fill:var(--kin)}.ring circle{fill:none;stroke-width:4px}.ring .bg{stroke:var(--line)}.ring .fg{stroke:var(--good);stroke-linecap:round;stroke-dasharray:1 1;transition:stroke-dashoffset .6s}.hero-today{gap:12px}.herotop{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;display:grid}.flamebox,.ringbox{cursor:pointer;align-items:center;gap:10px;min-width:0;display:flex}.flamebox svg{flex:none;width:46px;height:46px}.flamebox svg path{fill:var(--line);transition:fill .4s}.flamebox.lit svg path{fill:var(--kin)}.flamebox.lit svg{transform-origin:50% 90%;animation:2.6s ease-in-out infinite flicker}@keyframes flicker{0%,to{transform:scale(1)rotate(0)}30%{transform:scale(1.04,.97)rotate(-1.5deg)}60%{transform:scale(.98,1.03)rotate(1deg)}}.flamebox .tx,.ringbox .tx{flex-direction:column;min-width:0;line-height:1.1;display:flex}.flamebox b{font-variant-numeric:tabular-nums;font-size:2.2rem;font-weight:700;line-height:1}.flamebox.lit b{color:var(--kin)}.flamebox small,.ringbox small{color:var(--muted);white-space:nowrap;font-size:.78rem}.ringbox{justify-content:flex-end}.ringbox svg{flex:none;width:46px;height:46px}.ringbox b{white-space:nowrap;font-size:1.15rem}.streakmsg{color:var(--kin);background:var(--kin-soft);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;font-size:.85rem;font-weight:700;display:flex}.streakmsg.kept{color:var(--good);background:var(--good-soft)}.freezes{color:#5b8fd6;letter-spacing:2px;cursor:pointer}.rankrow{cursor:pointer;align-items:center;gap:10px;display:flex}.rankrow .rankb{font-size:1.25rem}.rankrow .meter{flex:1;height:6px;margin-top:0}.rankrow .meter i{background:linear-gradient(90deg, var(--indigo), var(--kin))}.rankrow small{color:var(--muted);white-space:nowrap;font-size:.8rem}.todayplan{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:12px;display:flex}.streak{color:var(--muted);cursor:pointer;align-items:center;gap:4px;font-size:.85rem;font-weight:700;display:inline-flex}.streak svg{width:18px;height:18px}.streak svg path{fill:var(--line)}.streak.on{color:var(--kin)}.streak.on svg path{fill:var(--kin)}.today .h{font-size:1.15rem}.list{background:var(--card);border:1px solid var(--line);border-radius:16px;flex-direction:column;display:flex;overflow:hidden}.lrow{min-height:60px;color:var(--ink);text-align:left;box-sizing:border-box;background:0 0;border:0;align-items:center;gap:12px;width:100%;padding:8px 10px 8px 12px;display:flex}.list>*+*{border-top:1px solid var(--line)}.list>.lpanel{border-top:0}.lrow[aria-expanded=true] .chev{color:var(--muted);transform:rotate(90deg)}.lpanel{flex-direction:column;gap:10px;padding:2px 12px 14px;animation:.2s fadein;display:flex}.duechips{flex-wrap:wrap;gap:6px;display:flex}.duechips span{box-sizing:border-box;text-align:center;background:var(--paper);min-width:34px;color:var(--ink);border-radius:8px;padding:3px 8px;font-size:.9rem;font-weight:700}.duechips span.k{padding-block:1px;font-size:1.25rem;line-height:1.35}.rowpick{gap:6px}.rowpick .chip{padding:4px 10px;font-size:.85rem}.lrow:active{background:var(--paper)}.lrow .ic{border-radius:10px;flex:none;place-items:center;width:36px;height:36px;display:grid}.lrow .ic svg{width:20px;height:20px}.lrow .ic.r{background:var(--indigo-soft);color:var(--indigo)}.lrow .ic.w{background:var(--kin-soft);color:var(--kin)}.lrow .ic.n{background:var(--good-soft);color:var(--good)}.lrow .ic.c{background:var(--paper);color:var(--muted)}.lrow .tx{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.lrow .tx b{font-weight:700}.lrow .tx small{color:var(--muted);font-size:.8rem}.lrow .tr{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.9rem}.lrow .tr .k{color:var(--ink);margin-right:2px;font-size:1.15rem}.lrow .chev{color:var(--guide);flex:none;transition:transform .2s;display:grid}.lrow .chev svg{width:18px;height:18px}.lrow:disabled{cursor:default}.lrow:disabled .ic{background:var(--paper);color:var(--guide)}.lrow:disabled .tx b{color:var(--muted)}.lrow:disabled .chev{visibility:hidden}.sheetwrap{z-index:30;background:#0d111a59;justify-content:center;align-items:flex-end;animation:.2s fadein;display:flex;position:fixed;inset:0}.sheet{box-sizing:border-box;background:var(--card);width:min(760px,100%);padding:12px 16px calc(16px + env(safe-area-inset-bottom,0px));box-shadow:0 -10px 30px var(--shadow);border-radius:18px 18px 0 0;flex-direction:column;gap:12px;animation:.22s ease-out sheetup;display:flex}.sheethead{align-items:center;gap:10px;display:flex}.sheethead .tx{flex-direction:column;flex:1;line-height:1.25;display:flex}.sheethead b{font-size:1.1rem}.sheethead span{color:var(--muted);font-size:.8rem}.rowkana{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.rowkana>span{background:var(--paper);border-radius:12px;flex-direction:column;align-items:center;min-width:0;padding:6px 8px;display:flex}.rowkana>span.new{box-shadow:inset 0 0 0 1px var(--line);background:0 0}.rowkana b{font-size:1.5rem;line-height:1.2}.rowkana small{color:var(--muted);font-size:.72rem}@keyframes sheetup{0%{opacity:0;transform:translateY(24px)}}@keyframes fadein{0%{opacity:0}}.stage{background:var(--card);border:1px solid var(--line);border-radius:18px;flex-direction:column;flex:1;gap:10px;min-height:60vh;padding:14px;display:flex}.meta{color:var(--muted);font-variant-numeric:tabular-nums;grid-template-columns:auto 1fr auto;align-items:center;gap:6px;font-size:.85rem;display:grid}.meta>*{white-space:nowrap}.meta>:last-child{text-align:right}.meta .left{align-items:center;gap:2px;display:flex}.meta .combo,.meta .seg,.meta .mid{justify-self:center}.meta .seg button{padding:5px 10px;font-size:.8rem}.combo{color:var(--kin);font-weight:700}.combo .pulse{animation:.45s pulse;display:inline-block}@keyframes pulse{50%{transform:scale(1.3)}}.quit{border:1px solid var(--line);background:var(--paper);width:38px;height:38px;color:var(--ink);border-radius:50%;justify-self:end;place-items:center;padding:0;display:grid}.quit svg{stroke-width:2.2px;width:18px;height:18px}.quit:hover,.quit:active{background:var(--line)}.bar{background:var(--line);border-radius:4px;height:4px;overflow:hidden}.bar i{background:var(--indigo);height:100%;transition:width .25s;display:block}.askbar{left:50%;bottom:calc(14px + env(safe-area-inset-bottom,0px));box-sizing:border-box;background:var(--card);border:1px solid var(--line);width:min(728px,100% - 32px);box-shadow:0 10px 30px var(--shadow);z-index:25;border-radius:16px;flex-direction:column;gap:10px;padding:14px;display:flex;position:fixed;transform:translate(-50%)}.face{-webkit-user-select:none;user-select:none;border-radius:12px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;min-height:0;transition:background .2s;display:flex;overflow:hidden}.face.flips{cursor:pointer}.face.ok{background:var(--good-soft)}.face.no{background:var(--bad-soft)}.answer{min-height:1.3em;color:var(--indigo);font-size:clamp(2rem,10vw,3.4rem);font-weight:700;line-height:1.2}.hint{color:var(--muted);text-align:center;font-size:.82rem}.scr{color:var(--indigo);white-space:nowrap;border:1.5px solid;border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:700;line-height:1}.scr.k{color:var(--shu)}.pips{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;min-height:16px;display:flex}.pips i{border:1.5px solid var(--guide);box-sizing:border-box;border-radius:50%;width:10px;height:10px;transition:background .3s,border-color .3s}.pips.r i.on{background:var(--indigo);border-color:var(--indigo)}.pips.w i.on{background:var(--kin);border-color:var(--kin)}.pips .pl{color:var(--muted);margin-left:4px;font-size:.75rem;font-weight:700}.pips .pl.up{color:var(--good)}.pips .pl.down{color:var(--bad)}.pips i.pop{animation:.6s pop}.pips i.drop{animation:.6s drop}@keyframes pop{40%{transform:scale(1.8)}}@keyframes drop{40%{transform:scale(.4)}}.controls{flex-wrap:wrap;gap:10px;display:flex}.controls .btn{flex-basis:70px;padding-inline:8px}.form{gap:10px;display:flex}.form input{flex:180px;min-width:0;padding:11px 14px;font-size:1.2rem}.form .btn{flex:none;padding-inline:22px}.choices{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}@media (max-width:520px){.choices{grid-template-columns:repeat(2,minmax(0,1fr))}}.choice{font-family:var(--kana);border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:14px;padding:8px 0;font-size:clamp(2.2rem,11vw,3.2rem);font-weight:600;line-height:1.25}.choice:disabled{opacity:1;cursor:default}.choice.right{background:var(--good-soft);border-color:var(--good);color:var(--good)}.choice.wrong{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.kind{letter-spacing:.06em;text-transform:uppercase;background:var(--indigo-soft);color:var(--indigo);border-radius:8px;padding:2px 8px;font-size:.72rem;font-weight:700}.kind.n{background:var(--kin-soft);color:var(--kin)}.tier{letter-spacing:.06em;text-transform:uppercase;background:var(--indigo-soft);color:var(--indigo);white-space:nowrap;border-radius:10px;padding:2px 9px;font-size:.7rem;font-weight:700}.tier.t0{background:var(--good-soft);color:var(--good)}.tier.t2{background:var(--kin-soft);color:var(--kin)}.prompt{--glyph:clamp(9rem, min(72vw, 40vh), 24rem);font-family:var(--kana);font-weight:600;font-size:var(--glyph);line-height:1}.prompt.two{--glyph:clamp(6rem, min(40vw, 30vh), 15rem)}.prompt.romaji{font-family:var(--ui);font-size:clamp(5rem,min(34vw,24vh),12rem);font-weight:700}.prompt.romaji.long{font-size:clamp(2.6rem,min(14vw,12vh),5rem)}.prompt.stack{place-items:center;width:100%;display:grid}.prompt.stack>*{grid-area:1/1}.prompt.stack svg{height:var(--glyph);width:auto;max-width:100%}.prompt.stack.tappable{cursor:pointer}.prompt.stack .kv,.prompt.stack .glyph{transition:opacity 1.4s ease-in-out,filter 1.4s ease-in-out}.prompt.stack .glyph{opacity:0;filter:blur(6px)}.prompt.stack.settled .kv{opacity:0;filter:blur(4px)}.prompt.stack.settled .glyph{opacity:1;filter:none}.kv{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:4.5px}.kv .ink path{stroke:var(--ink);stroke-dasharray:1.05 2;stroke-dashoffset:1.05px;animation:draw var(--d,.6s) ease-in-out both;animation-delay:var(--t)}.kv.still .ink path{stroke-dashoffset:0;animation:none}@keyframes draw{0%{stroke-dashoffset:1.05px;opacity:0}1%{opacity:1}to{stroke-dashoffset:0;opacity:1}}.prompt .backdrop rect{fill:var(--paper);stroke:var(--line);stroke-width:.6px}.prompt .backdrop path{fill:none;stroke:var(--line);stroke-width:.5px;stroke-dasharray:2 2}.prompt .overlay{z-index:2;opacity:0;pointer-events:none;transition:opacity .6s}.prompt.settled .overlay{opacity:1}.prompt.settled .overlay .em{pointer-events:auto;cursor:help}.overlay .em .hit{fill:#0000;stroke:none}.overlay .em circle:not(.hit){fill:var(--card);stroke:var(--indigo);stroke-width:.8px}.overlay .em text{font-family:var(--kana);fill:var(--indigo);text-anchor:middle;dominant-baseline:central;font-size:6.5px;font-weight:600}.overlay .em:focus-visible{outline:none}.overlay .em:focus-visible circle:not(.hit){stroke-width:1.6px}.wtop{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.wr{color:var(--indigo);font-size:clamp(2.4rem,12vw,3.8rem);font-weight:700;line-height:1}.wr.long{font-size:clamp(1.3rem,6vw,2.2rem)}.wbody{flex-direction:column;flex:1 1 0;justify-content:center;gap:10px;min-height:0;display:flex;container-type:size}.wtop{flex-wrap:nowrap;height:clamp(2.4rem,12vw,3.8rem)}.padwrap{flex:none;justify-content:center;display:flex;position:relative}.pad{width:min(100%, calc((100dvh - 400px) * var(--ar)));max-width:100%;aspect-ratio:var(--ar);background:var(--paper);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;cursor:crosshair;border-radius:14px;height:auto;display:block}@supports (width:1cqh){.pad{width:min(100cqw, calc((100cqh - clamp(2.4rem, 12vw, 3.8rem) - 130px) * var(--ar)));min-width:min(100cqw,200px)}}.pad .gridl rect{fill:none;stroke:var(--line);stroke-width:.6px}.pad .gridl path{fill:none;stroke:var(--line);stroke-width:.5px;stroke-dasharray:2 2}.pad .guide path{fill:none;stroke:var(--guide);stroke-width:4.5px;stroke-linecap:round;stroke-linejoin:round}.pad .model path{fill:none;stroke:var(--indigo);stroke-width:7px;stroke-linecap:round;stroke-linejoin:round;opacity:.22}.pad .us{fill:none;stroke:var(--ink);stroke-width:4.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.6}.pad .us.keep{opacity:.9}.pad .us.worst{stroke:var(--bad);opacity:1}.pad .us.bad{stroke:var(--bad);opacity:0;transition:opacity .9s .3s}.pad .okst,.pad .hst{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:4.5px;stroke-dasharray:1.05 2;stroke-dashoffset:1.05px}.pad .okst{stroke:var(--ink);transition:stroke .5s;animation:.25s ease-out both draw}.pad .hst{stroke:var(--indigo);opacity:.55;animation:.9s ease-in-out .15s both draw}.pad .hdot{fill:var(--indigo);opacity:.7}.pad.finished .okst,.pad.finished .us.keep{stroke:var(--good)}.pad .endm{cursor:pointer}.pad .endm circle{stroke-width:.8px;fill:var(--card)}.pad .endm text{font-family:var(--kana);text-anchor:middle;dominant-baseline:central;font-size:6px;font-weight:600}.pad .endm.ok circle{stroke:var(--good)}.pad .endm.ok text{fill:var(--good)}.pad .endm.miss circle{stroke:var(--bad)}.pad .endm.miss text{fill:var(--bad)}.pad .endm.unk circle{stroke:var(--muted)}.pad .endm.unk text{fill:var(--muted)}.sdots{pointer-events:none;gap:4px;display:flex;position:absolute;top:10px;right:12px}.sdots i{background:var(--muted);opacity:.35;border-radius:50%;width:5px;height:5px}.wmsg{text-align:center;min-height:1.5em;font-weight:700}.wmsg.bad{color:var(--bad)}.wmsg.good{color:var(--good)}.wsub{text-align:center;color:var(--muted);font-size:.82rem}.wsub:empty{display:none}.tipword{text-underline-offset:3px;cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}[data-tip]{cursor:help}.endtip{z-index:40;box-sizing:border-box;background:var(--ink);max-width:min(280px,100vw - 24px);color:var(--card);box-shadow:0 6px 20px var(--shadow);text-align:left;border-radius:10px;padding:8px 11px;font-size:.82rem;font-weight:400;line-height:1.4;position:fixed}.endtip b{font-family:var(--ui);font-size:.95rem;font-weight:700}.endtip .res{opacity:.85;margin-top:3px;display:block}.toast{left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));opacity:0;background:var(--ink);color:var(--card);box-shadow:0 8px 28px var(--shadow);z-index:20;box-sizing:border-box;text-align:center;pointer-events:none;white-space:nowrap;border-radius:999px;max-width:calc(100% - 32px);padding:10px 18px;font-weight:700;transition:opacity .3s,transform .3s;position:fixed;transform:translate(-50%,16px)}.toast.show{opacity:1;transform:translate(-50%)}.toast .k{margin-right:6px;font-size:1.25rem}.done{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding-block:8px;display:flex}.award{flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:150px;display:flex}.stamp{box-sizing:border-box;border:4px solid var(--shu);width:140px;height:140px;box-shadow:inset 0 0 0 3px var(--card), inset 0 0 0 5px var(--shu);color:var(--shu);text-align:center;font-family:var(--kana);opacity:.92;border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;font-weight:600;line-height:1.3;animation:.5s cubic-bezier(.2,1.5,.4,1) .25s both stampin;display:flex;transform:rotate(-12deg)}@keyframes popin{0%{opacity:0;transform:scale(1.6)}to{opacity:1;transform:scale(1)}}@keyframes stampin{0%{opacity:0;transform:rotate(-12deg)scale(1.6)}to{opacity:.92;transform:rotate(-12deg)scale(1)}}.hanamaru{width:150px;height:150px}.hanamaru path{fill:none;stroke:var(--shu);stroke-width:3.4px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.02 2;stroke-dashoffset:1.02px;animation:1.8s ease-in-out .25s both draw}.award-en{color:var(--muted);font-size:.85rem}.score{color:var(--indigo);font-variant-numeric:tabular-nums;font-size:2.4rem;font-weight:700;line-height:1}.uprow{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;font-size:.9rem;display:flex}.kchip{font-family:var(--kana);background:var(--indigo-soft);color:var(--indigo);border-radius:8px;padding:0 8px;font-size:1.25rem;font-weight:600;line-height:1.5}.kchip.m{background:var(--kin-soft);color:var(--kin)}.kchip.b{background:var(--shu);color:var(--card)}.kchip.x{background:var(--bad-soft);color:var(--bad)}.rankbox{box-sizing:border-box;border:1px solid var(--line);text-align:left;border-radius:12px;flex-direction:column;gap:6px;width:100%;max-width:420px;padding:12px 14px;display:flex}.rankbox .meter{height:8px}.rankbox .meter i{background:linear-gradient(90deg, var(--indigo), var(--kin))}.rankbox small{color:var(--muted);font-size:.78rem}.promo{color:var(--kin);font-weight:700}.rankbox.promoted{border-color:var(--kin)}.promobanner{background:var(--kin);color:var(--card);text-align:center;border-radius:11px 11px 0 0;margin:-12px -14px 4px;padding:8px 14px;font-weight:700;animation:.5s cubic-bezier(.2,1.5,.4,1) .3s both popin}.promobanner .rankb{font-size:1.2rem}.rankbox .gain{color:var(--good);font-weight:700}.streakup{background:var(--kin-soft);color:var(--kin);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:.95rem;display:inline-flex}.streakup svg{width:22px;height:22px}.streakup svg path{fill:var(--kin)}.streakup span{font-weight:400}.streakup.grew{animation:.5s cubic-bezier(.2,1.5,.4,1) .6s both popin}.streakup.grew svg{transform-origin:50% 90%;animation:2.6s ease-in-out infinite flicker}.endbtns{flex-direction:column;gap:10px;width:100%;margin-top:6px;display:flex}.rankcard{gap:6px}.rankline{align-items:baseline}.rankb.big{font-size:2rem;line-height:1.1}.rankcard .meter{height:6px}.trio{grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:10px 4px;display:grid}.trio>*{text-align:center;flex-direction:column;align-items:center;min-width:0;padding:2px 6px;line-height:1.25;display:flex}.trio>*+*{border-left:1px solid var(--line)}.trio b{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.05rem}.trio small{color:var(--muted);font-size:.75rem}.path{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px;margin-inline:-6px;display:grid}.path .pr{min-width:0;color:inherit;text-align:left;background:0 0;border:0;border-radius:10px;flex-direction:column;gap:3px;padding:6px;display:flex}.path .pr:active,.path .pr:hover{background:var(--paper)}.path .pr .row{flex-wrap:nowrap;gap:6px;font-size:.88rem}.path .pr .k{font-size:1.05rem}.path .pr .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.path .pr small{color:var(--muted);font-variant-numeric:tabular-nums}.path .pr.fresh .k,.path .pr.fresh .nm{color:var(--muted)}.chartsec{flex-direction:column;gap:14px;margin-top:4px;display:flex}.chartsec .seg button{padding:5px 12px}.ckey{flex-wrap:wrap;gap:6px;display:flex}.ckey>*{color:var(--muted);border:1px solid var(--line);background:var(--card);border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:.78rem;display:inline-flex}.ckey i{font-style:normal;display:inline-block}.ckey .sw{border-radius:3px;width:14px;height:4px}.ckey .sw.r{background:var(--indigo)}.ckey .sw.w{background:var(--kin)}.ckey .dot{background:var(--bad);border-radius:50%;width:7px;height:7px}.ckey .gold{border:2px solid var(--kin);box-sizing:border-box;border-radius:4px;width:11px;height:11px}.ckey .fude{font-family:var(--kana);color:var(--card);background:var(--shu);border-radius:3px;padding:0 2px;font-size:.7rem;font-weight:600;line-height:1.3}.ckey .mine{background:var(--indigo-soft);width:11px;height:11px;box-shadow:inset 0 0 0 1px var(--guide);border-radius:4px}.csum{color:var(--muted);flex-wrap:wrap;gap:2px 16px;font-size:.85rem;display:flex}.csum b{color:var(--ink);font-variant-numeric:tabular-nums}.grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:8px;display:grid}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.cell{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;flex-direction:column;align-items:center;min-width:0;padding:6px 2px 7px;display:flex;position:relative}.cell b{font-family:var(--kana);font-size:clamp(1.6rem,8vw,2.3rem);font-weight:600;line-height:1.15}.cell b.two{font-size:clamp(1.4rem,7vw,2rem)}.cell .ro{color:var(--muted);font-size:.8rem;line-height:1.3}.cell .ro.long{white-space:nowrap;font-size:.58rem;line-height:2.1}.cell.on{background:var(--indigo-soft);border-color:var(--indigo-soft)}.cell.gold{border-color:var(--kin);box-shadow:inset 0 0 0 1px var(--kin)}.cell.gap{visibility:hidden}.cell .due{background:var(--bad);border-radius:50%;width:6px;height:6px;position:absolute;top:6px;left:6px}.cell .brush{font-family:var(--kana);color:var(--card);background:var(--shu);border-radius:3px;padding:1px 2px;font-size:.62rem;font-weight:600;line-height:1;position:absolute;top:3px;right:4px}.mb{flex-direction:column;gap:2px;width:72%;margin-top:4px;display:flex}.mb i{background:var(--line);border-radius:3px;height:3px;display:block;overflow:hidden}.mb i:after{content:"";height:100%;width:var(--v);background:var(--c);border-radius:3px;display:block}.mb .r{--c:var(--indigo)}.mb .w{--c:var(--kin)}.cell.on .mb i{background:var(--card)}.charpage{padding-bottom:0}.charhero{touch-action:pan-y;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px;padding:14px 8px 12px;display:grid;position:relative}.heroin{flex-direction:column;align-items:center;gap:4px;min-width:0;display:flex}.charhero .prompt{--glyph:clamp(6.5rem, min(48vw, 30vh), 15rem)}.charhero .prompt.two{--glyph:clamp(4.5rem, min(27vw, 19vh), 9rem)}.navbtn{background:var(--indigo-soft);width:44px;height:44px;color:var(--indigo);border:0;border-radius:50%;place-items:center;padding:0;transition:transform .12s;display:grid}.navbtn svg{width:22px;height:22px}.navbtn:active{transform:scale(.92)}.charhero .vr{color:var(--indigo);margin-top:4px;font-size:clamp(1.8rem,8vw,2.6rem);font-weight:700;line-height:1.1}.seal-b{font-family:var(--kana);color:var(--card);background:var(--shu);border-radius:4px;padding:1px 4px;font-size:.8rem;font-weight:600;line-height:1.3;position:absolute;top:10px;right:12px}.vrows{flex-direction:column;gap:8px;display:flex}.vrow{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}.vrh{width:100%;color:var(--ink);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:13px 14px;display:flex}.vrn{min-width:4.6em;font-weight:700}.vrh .pips{flex-wrap:nowrap;flex:none;gap:4px;min-height:0}.vrh .pips i{width:8px;height:8px}.vrs{min-width:0;color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.82rem;overflow:hidden}.vchev{border-right:2px solid var(--indigo);border-bottom:2px solid var(--indigo);flex:none;width:8px;height:8px;margin:0 4px 4px 2px;transition:transform .28s;transform:rotate(45deg)}.vrow.open .vchev{margin:4px 4px 0 2px;transform:rotate(-135deg)}.vpad{flex-direction:column;gap:9px;padding:0 14px 14px;font-size:.86rem;display:flex}.vnext{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.info{border:1px solid var(--line);width:20px;height:20px;color:var(--indigo);border-radius:50%;place-items:center;font-size:.72rem;font-weight:700;display:inline-grid}.hist{flex-wrap:wrap;align-self:flex-start;gap:4px;display:flex}.hist i{background:var(--line);border-radius:50%;width:10px;height:10px}.hist i.g{background:var(--good)}.hist i.a{background:var(--kin)}.hist i.x{background:var(--bad)}.kbtn{font-family:var(--kana);background:var(--indigo-soft);color:var(--indigo);border:0;border-radius:7px;padding:0 7px;font-size:1.05rem;font-weight:600}.vlike{flex-direction:column;gap:6px;display:flex}.likes{flex-wrap:wrap;gap:8px;display:flex}.like{border:1px solid var(--line);background:var(--card);min-width:56px;color:var(--ink);border-radius:12px;flex-direction:column;align-items:center;padding:6px 10px;display:flex}.like b{font-family:var(--kana);font-size:1.5rem;font-weight:600;line-height:1.2}.like small{color:var(--muted);font-size:.72rem}.footbar{padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:var(--paper);gap:10px;margin:auto -16px 0;display:flex;position:sticky;bottom:0}.footbar .btn{flex:1 1 0;padding-inline:8px}.dots{justify-content:center;gap:6px;display:flex}.dots i{background:var(--line);border-radius:4px;width:8px;height:8px}.dots i.on{background:var(--indigo);width:22px}.hero{flex-direction:column;flex:1;justify-content:center;gap:14px;display:flex}.hero .big{font-family:var(--kana);color:var(--indigo);font-size:64px;font-weight:600;line-height:1}.hero h1{margin:0;font-size:28px;line-height:1.2}.hero p{color:var(--muted);margin:0;font-size:16px;line-height:1.5}.option{border:1px solid var(--line);background:var(--card);min-height:72px;color:var(--ink);text-align:left;border-radius:16px;align-items:center;gap:6px;width:100%;padding:8px 14px 8px 4px;display:flex}.option[aria-pressed=true]{background:var(--indigo-soft);border:2px solid var(--indigo)}.option .kn{font-family:var(--kana);text-align:center;width:70px;font-size:30px;font-weight:600}.option .tx{flex-direction:column;flex:1;display:flex}.app.dbg-on .screen{padding-top:max(28px, calc(env(safe-area-inset-top,0px) + 22px))}.dbgbar{top:env(safe-area-inset-top,0px);z-index:25;color:#7ee787;letter-spacing:.02em;background:#0d1117;border:1px solid #2f4a35;border-top:0;border-radius:0 0 7px 7px;padding:2px 10px 3px;font:.7rem ui-monospace,Menlo,Consolas,monospace;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #00000040}.dbgbar:before{content:"● ";color:#f2cc60}.readout{white-space:pre-wrap;color:#c9f7c9;white-space:pre-wrap;pointer-events:none;background:#0d1117db;border-radius:6px;flex:none;max-height:9.5em;margin:0;padding:5px 7px;font:.64rem/1.35 ui-monospace,Menlo,Consolas,monospace;overflow-y:auto}.readout .lg{color:#7ee787}.readout .lr{color:#ff9b85}.dbg{z-index:40;background:#0000008c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dbgin{color:#c9d1d9;width:100%;max-width:760px;max-height:85vh;padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));background:#0d1117;border-radius:16px 16px 0 0;flex-direction:column;gap:10px;font-size:.85rem;display:flex;overflow:auto}.dbgin button,.dbgin select,.dbgin input{color:#c9d1d9;background:#161b22;border:1px solid #30363d;border-radius:6px;min-height:32px;padding:5px 9px}.dbgin textarea{color:#c9d1d9;background:#161b22;border:1px solid #30363d;width:100%;min-height:70px;font-size:.7rem}.dbgin .r{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.dbgin button.x{color:#ff9b85;border-color:#6e3b30}.dbgin .out{white-space:pre-wrap;color:#8b949e;font-family:ui-monospace,Menlo,monospace}@media (max-width:380px){.stage{padding:12px}}@media (max-width:359px){.seg button .k{font-size:.95rem}.seg button{font-size:.85rem}.meta .seg button{padding:5px 7px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.kv .ink path,.pad .okst,.pad .hst,.hanamaru path{stroke-dashoffset:0}}.rankup{z-index:200;color:#f5f1e6;cursor:pointer;background:radial-gradient(at 50% 115%,#22336a 0%,#0c1226 55%,#05070f 100%);place-items:center;padding:16px;animation:.35s ease-out both ru-in;display:grid;position:fixed;inset:0;overflow:hidden}.rankup .sky{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.ru-card{text-align:center;flex-direction:column;align-items:center;gap:8px;max-width:420px;display:flex;position:relative}.ru-kicker{letter-spacing:.18em;text-transform:uppercase;color:#ffd27a;font-size:.8rem;font-weight:700;animation:.5s ease-out .1s both ru-up}.ru-rankwrap{aspect-ratio:1;place-items:center;width:min(64vw,260px);margin:4px 0;display:grid;position:relative}.ru-ring{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-100deg)}.ru-ring circle{fill:none;stroke:#ef5a46;stroke-width:6px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;filter:drop-shadow(0 0 6px #ef5a4699);animation:.8s cubic-bezier(.6,0,.3,1) .65s forwards ru-ring}.ru-rank{font-family:var(--kana);color:#fff3cf;text-shadow:0 0 18px #ffd27abf,0 0 48px #ffaa4673;font-size:clamp(4.5rem,24vw,7.5rem);font-weight:600;line-height:1;animation:.55s cubic-bezier(.2,1.4,.4,1) .2s both ru-stamp}.rankup.dan .ru-rank{color:#ffe08a;text-shadow:0 0 22px #ffd27af2,0 0 70px #ff963c99}.ru-reading{color:#d8d2c2;font-size:1.05rem;font-style:italic;animation:.5s ease-out .9s both ru-up}.ru-line{color:#e9e4d6;animation:.5s ease-out 1s both ru-up}.ru-line .rankb,.ru-next .rankb{color:#ffd27a}.ru-next{color:#b9b4a8;max-width:30ch;font-size:.9rem;animation:.5s ease-out 1.1s both ru-up}.ru-go{min-width:180px;margin-top:10px;animation:.4s ease-out both ru-up}@keyframes ru-in{0%{opacity:0}}@keyframes ru-up{0%{opacity:0;transform:translateY(10px)}}@keyframes ru-stamp{0%{opacity:0;filter:blur(8px);transform:scale(2.8)}70%{opacity:1;filter:blur()}to{transform:scale(1)}}@keyframes ru-ring{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.rankup,.ru-kicker,.ru-rank,.ru-reading,.ru-line,.ru-next,.ru-go{animation:none}.ru-ring circle{stroke-dashoffset:0;animation:none}}.stripes{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.stripe{background:var(--kin-soft);color:var(--kin);border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 6px;font-size:.85rem;font-weight:700;animation:.45s cubic-bezier(.2,1.5,.4,1) both popin;display:inline-flex}.stripe:before{content:"";background:linear-gradient(90deg, var(--shu), var(--kin));border-radius:2px;width:16px;height:6px}.gradebox{box-sizing:border-box;border:2px solid var(--line);border-radius:12px;flex-direction:column;gap:4px;width:100%;max-width:420px;padding:12px 14px;display:flex}.gradebox.pass{border-color:var(--good);background:var(--good-soft)}.gradebox.fail{border-color:var(--bad);background:var(--bad-soft)}.gradebox b{font-size:1.05rem}.rankacts{flex-wrap:wrap;gap:8px;display:flex}.rankacts .btn{flex:auto}.btn.kin{background:var(--kin);color:var(--card);border-color:var(--kin)}.rusty{color:var(--kin);font-weight:700}.parts{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.parts li{grid-template-columns:1fr auto;align-items:center;gap:2px 10px;font-size:.88rem;display:grid}.parts li .meter{grid-column:1/-1;height:4px;margin:0}.parts li.ok{color:var(--good)}.parts li small{font-variant-numeric:tabular-nums;color:var(--muted)}.rankup .ru-go{color:#1b1406;background:#ffd27a;border-color:#ffd27a}.rankblock{flex-direction:column;gap:4px;display:flex}.ranktodo{color:var(--muted);padding-left:2px;font-size:.82rem}.rankrow small .rankb{font-size:.95rem}.meter.full i{background:linear-gradient(90deg, var(--kin), var(--shu));animation:1.6s ease-in-out infinite ready}@keyframes ready{50%{filter:brightness(1.25)}}.rankup .ru-go{flex:none}.textbtn.danger{color:var(--muted);font-size:.82rem}.textbtn.danger:hover{color:var(--bad)}.grow{flex:1}.start{align-self:flex-start}.centred{text-align:center}.col.tight{gap:6px}.label.full{width:100%}.label.snug{margin-bottom:-2px}.navspace{width:44px}.btn.ink{color:var(--indigo)}.btn.filepick{text-align:center}.hidden-file{opacity:0;width:1px;height:1px;position:absolute}.card.dashed{border-style:dashed}.card.toggles{padding-block:4px}.card.links{gap:0;padding-block:0}.screen.welcome{padding-top:28px}.step-title{margin:0;font-size:26px}.note.lead{font-size:15px}.credits-head{flex-direction:column;align-items:center;gap:2px;padding-block:10px;display:flex}.credits-head b{font-size:1.3rem}.card.credits{gap:0;padding-block:4px}.credit{border-bottom:1px solid var(--line);flex-direction:column;gap:3px;padding:12px 0;display:flex}.credit:last-child{border-bottom:none}
