:root{--paper:#f6f8f6;--sheet:#fff;--ink:#1d2321;--muted:#5e6b66;--grid:#d9a7a0;--cinnabar:#c23b22;--rad:#1f7a6d;--ok:#2f7d3b;--line:#dfe5e2;--soft:#eef2f0;--display:"Spectral",Georgia,serif;--body:"Golos Text",system-ui,sans-serif;--pin:"Noto Sans","Golos Text",system-ui,sans-serif;--han:"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#141816;--sheet:#1c211f;--ink:#e9eeeb;--muted:#9aa7a1;--grid:#6e3a33;--cinnabar:#ef6a4f;--rad:#52b8a8;--ok:#6cc27a;--line:#2c3330;--soft:#232a27;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#141816;--sheet:#1c211f;--ink:#e9eeeb;--muted:#9aa7a1;--grid:#6e3a33;--cinnabar:#ef6a4f;--rad:#52b8a8;--ok:#6cc27a;--line:#2c3330;--soft:#232a27;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.5}.wrap{max-width:1080px;margin:0 auto;padding-block:24px 64px;padding-inline:16px}header h1{font-family:var(--display);text-wrap:balance;margin:0 0 6px;font-size:clamp(28px,6vw,44px);font-weight:700;line-height:1.1}header h1 span{color:var(--cinnabar)}header p{color:var(--muted);max-width:62ch;margin:0}.tones{flex-wrap:wrap;gap:8px;margin:18px 0 8px;display:flex}.tone{background:var(--sheet);border:1px solid var(--line);border-radius:8px;align-items:baseline;gap:8px;padding:6px 10px;font-size:13px;display:flex}.tone b{font-family:var(--pin);color:var(--cinnabar);font-size:17px;font-weight:500}.bar{flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 20px;display:flex}.btn{font:inherit;border:1px solid var(--line);background:var(--sheet);color:var(--ink);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:500;display:inline-flex}.btn:hover{border-color:var(--cinnabar)}.btn.primary{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff}.btn:focus-visible,.cell:focus-visible{outline:2px solid var(--cinnabar);outline-offset:2px}.btn svg{fill:currentColor;width:16px;height:16px}h2{font-family:var(--display);margin:28px 0 12px;font-size:20px;font-weight:700}.grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;display:grid}.card{background:var(--sheet);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:10px;min-width:0;padding:14px;display:flex}.card.sub{background:var(--soft)}.top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.no{font-family:var(--display);color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.chars{flex-wrap:wrap;gap:6px;display:flex}.cell{cursor:pointer;border:1px solid var(--grid);background:var(--sheet);width:84px;height:84px;padding:0;position:relative}.cell svg.g{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.cell .w{position:absolute;inset:0}.pin{font-family:var(--pin);color:var(--cinnabar);font-size:20px;font-weight:500}.rd{color:var(--muted);font-size:14px}.rd b{color:var(--ink);font-weight:600}.mean{font-size:15px}.acts{gap:6px;margin-top:auto;display:flex}.note{color:var(--muted);max-width:70ch;margin-top:28px;font-size:13px}.dlg{flex-direction:column;gap:10px;display:flex}.line{background:var(--sheet);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:8px;min-width:0;padding:12px 14px;display:flex}.who{color:var(--cinnabar);letter-spacing:.02em;font-size:13px;font-weight:600}.who span{color:var(--muted);font-weight:400}.lchars{flex-wrap:wrap;align-items:flex-end;gap:4px;display:flex}.lchars .cell{width:48px;height:48px}.punct{width:18px;color:var(--muted);font-size:26px;line-height:48px}.tr{font-size:15px}.cmt{background:var(--soft);border-radius:10px;flex-direction:column;gap:8px;max-width:72ch;padding:14px;display:flex}.cmt p{margin:0}.cmt .zh{font-size:20px}.tabs{top:env(safe-area-inset-top,0px);z-index:5;background:var(--paper);border-bottom:1px solid var(--line);gap:4px;margin-top:14px;padding-block:10px;display:flex;position:sticky}.tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 12px;font-size:14px;font-weight:600}.tab[aria-selected=true]{background:var(--sheet);color:var(--ink);box-shadow:inset 0 -2px 0 var(--cinnabar)}.tab:focus-visible{outline:2px solid var(--cinnabar)}.legend{color:var(--muted);margin-top:8px;font-size:13px}.legend b{color:var(--rad)}.comps{flex-direction:column;gap:6px;display:flex}.comp{background:var(--soft);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.comp .gl{text-align:center;flex:none;width:36px;font-size:26px}.comp .gl.k{color:var(--rad)}.comp .tag{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px;font-weight:600}.comp .tag.k{color:var(--rad)}.mnem{border-left:3px solid var(--rad);padding-left:10px;font-size:14px}.stage{flex-direction:column;gap:14px;max-width:560px;margin:20px auto 0;display:flex}.seg{flex-wrap:wrap;gap:6px;display:flex}.seg .btn[aria-pressed=true]{border-color:var(--cinnabar);color:var(--cinnabar)}.fc{background:var(--sheet);border:1px solid var(--line);text-align:center;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:280px;padding:24px 18px;display:flex}.fc .q{text-wrap:balance;font-size:24px;font-weight:600}.fc .qz{font-size:64px;line-height:1.1}.fc .chars{justify-content:center}.row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.row .btn{flex:140px;justify-content:center;padding:12px}.btn.good{background:var(--ok);border-color:var(--ok);color:#fff}.stat{color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;font-size:13px}.slots{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.slot{flex-direction:column;align-items:center;gap:2px;width:56px;display:flex}.slot .box{border:1px dashed var(--grid);width:56px;height:56px;color:var(--muted);justify-content:center;align-items:center;font-size:30px;display:flex}.slot.cur .box{border:2px solid var(--cinnabar)}.slot small{font-variant-numeric:tabular-nums;color:var(--muted);font-size:11px}.slot small.ok{color:var(--ok)}.slot small.bad{color:var(--cinnabar)}.pad{border:1.5px solid var(--grid);background:var(--sheet);touch-action:none;flex:none;align-self:center;width:min(300px,80vw);height:min(300px,80vw);position:relative;overflow:hidden}.pad svg.g{width:100%;height:100%;position:absolute;inset:0}.pad .w{position:absolute;inset:0}.tabs{scrollbar-width:none;overflow-x:auto}.tab{white-space:nowrap}.cell .txt{font-family:var(--han);color:var(--ink);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.qz{font-family:var(--han)}.qz small{color:var(--rad);margin-left:.3em;font-size:.45em}.kbar{flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0 12px;display:flex}.kgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.tile{font:inherit;color:var(--ink);text-align:left;background:var(--sheet);border:1px solid var(--line);cursor:pointer;border-radius:10px;flex-direction:column;gap:2px;min-width:0;padding:10px 12px;display:flex}.tile:hover{border-color:var(--rad)}.tile:focus-visible{outline:2px solid var(--cinnabar);outline-offset:2px}.tile .tn{color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.04em;font-size:11px}.tile .tg{font-family:var(--han);flex-wrap:wrap;align-items:baseline;gap:8px;font-size:34px;line-height:1.15;display:flex}.tile .tg small{color:var(--rad);font-size:18px}.tile .tp{color:var(--cinnabar);font-family:var(--pin);font-size:14px;font-weight:500}.tile .tm{color:var(--muted);font-size:13px;line-height:1.35}.tile .tm b{font-family:var(--han);color:var(--ink);font-size:15px;font-weight:400}.explain{flex-direction:column;gap:12px;max-width:72ch;margin-top:20px;display:flex}.explain p{margin:0}.explain ul{flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.explain h3{font-family:var(--display);margin:6px 0 0;font-size:18px}.eqs{flex-wrap:wrap;gap:10px;display:flex}.eq{background:var(--sheet);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;display:flex}.eq .gl{font-family:var(--han);font-size:34px;line-height:1}.eq .gl.k{color:var(--rad)}.eq .gl.z{color:var(--cinnabar)}.eq .op{color:var(--muted);font-size:20px}.eq .lb{color:var(--muted);max-width:9em;font-size:12px;line-height:1.2}.hz{font-family:var(--han)}.chip{background:var(--soft);border-radius:6px;align-items:baseline;gap:4px;margin:2px 2px 0 0;padding:2px 8px;font-size:13px;display:inline-flex}.chip b{font-family:var(--han);color:var(--ink);font-size:18px;font-weight:400}.exl{flex-direction:column;gap:6px;display:flex}.exr{background:var(--soft);text-align:left;border-radius:8px;align-items:center;gap:10px;padding:6px 10px;display:flex}.exr .pin{font-size:16px}.stage>.seg .btn{padding:6px 10px;font-size:13px}.wex{background:var(--soft);text-align:left;border-radius:8px;flex-direction:column;gap:2px;padding:8px 10px;font-size:14px;display:flex}.wex .hz{font-size:17px}.wex .py{font-family:var(--pin);color:var(--cinnabar);font-size:13px}.wnt{color:var(--muted);text-align:left;font-size:13px}[hidden]{display:none!important}.scrim{z-index:10;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.panel{background:var(--sheet);width:100%;max-width:720px;max-height:92%;padding:18px 16px calc(20px + env(safe-area-inset-bottom,0px));border-radius:14px 14px 0 0;flex-direction:column;gap:14px;display:flex;overflow:auto}.ph{justify-content:space-between;align-items:center;gap:10px;display:flex}.ph h3{font-family:var(--display);margin:0;font-size:22px}.big{border:1.5px solid var(--grid);flex:none;align-self:center;width:min(260px,70vw);height:min(260px,70vw);min-height:min(260px,70vw);position:relative;overflow:hidden}.panel>*{flex-shrink:0}.cell{flex-shrink:0;overflow:hidden}.big svg.g{width:100%;height:100%;position:absolute;inset:0}.big .w{position:absolute;inset:0}.fan{flex-wrap:wrap;gap:6px;display:flex}.fan figure{flex-direction:column;align-items:center;gap:2px;margin:0;display:flex}.fan svg{border:1px solid var(--grid);background:var(--sheet);width:56px;height:56px}.fan figcaption{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.hint{color:var(--muted);text-align:center;min-height:1.4em;font-size:13px}.toast{left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--paper);z-index:20;border-radius:8px;max-width:90%;padding:8px 14px;font-size:13px;position:fixed;transform:translate(-50%)}@media (width<=420px){.cell{width:72px;height:72px}.grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{-webkit-tap-highlight-color:transparent;min-height:100dvh}.screen{max-width:720px;padding:calc(16px + env(safe-area-inset-top,0px)) 16px calc(88px + env(safe-area-inset-bottom,0px));margin:0 auto}.screen h1{font-family:var(--display);margin:0 0 6px;font-size:28px;font-weight:700;line-height:1.15}.screen h1 span{color:var(--cinnabar)}.sub{color:var(--muted);margin:0;font-size:14px}.nav{z-index:8;background:var(--sheet);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav a{color:var(--muted);border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 0;font-size:11px;font-weight:600;text-decoration:none;display:flex}.nav a svg{fill:none;stroke:currentColor;stroke-width:1.8px;width:22px;height:22px}.nav a[aria-current=page]{color:var(--cinnabar)}.login{flex-direction:column;justify-content:center;gap:14px;max-width:380px;min-height:100dvh;margin:0 auto;padding:24px 16px;display:flex}.login h1{font-family:var(--display);margin:0;font-size:44px}.login h1 span{color:var(--cinnabar);font-family:var(--han)}.field{font:inherit;border:1px solid var(--line);background:var(--sheet);color:var(--ink);border-radius:10px;width:100%;padding:12px 14px;font-size:17px}.field:focus{outline:2px solid var(--cinnabar);outline-offset:1px}.btn.wide{justify-content:center;width:100%;padding:13px;font-size:16px}.err{color:var(--cinnabar);min-height:1.4em;margin:0;font-size:14px}.hero{background:var(--cinnabar);color:#fff;border-radius:16px;flex-direction:column;gap:4px;margin-top:16px;padding:18px;display:flex}.hero b{font-family:var(--display);font-size:38px;line-height:1}.hero span{opacity:.92;font-size:14px}.hero .go{color:var(--cinnabar);font:inherit;cursor:pointer;background:#fff;border:0;border-radius:10px;margin-top:10px;padding:12px;font-size:16px;font-weight:700}.hero.done{background:var(--sheet);color:var(--ink);border:1px solid var(--line)}.lbl{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 0 8px;font-size:11px}.rowlink{background:var(--sheet);border:1px solid var(--line);color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;width:100%;margin-bottom:8px;padding:12px 14px;text-decoration:none;display:flex}.rowlink small{color:var(--muted);font-size:13px;display:block}.rowlink .hz{font-size:16px}.rowlink:after{content:"›";color:var(--muted);font-size:20px}.progress{background:var(--soft);border-radius:3px;height:6px;margin-top:6px;overflow:hidden}.progress i{background:var(--ok);height:100%;display:block}.center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:50vh;display:flex}.gbtns{grid-template-columns:repeat(4,1fr);gap:6px;width:100%;display:grid}.gbtns .btn{color:#fff;border:0;flex-direction:column;justify-content:center;gap:0;padding:10px 4px;font-weight:600}.gbtns .btn small{opacity:.9;font-size:11px;font-weight:400}.g1{background:var(--cinnabar)!important}.g2{background:#c98a1b!important}.g3{background:var(--ok)!important}.g4{background:var(--rad)!important}.gbtns.two{grid-template-columns:1fr 1fr}a.btn{text-decoration:none}.chk-row{background:var(--sheet);border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:center;gap:12px;margin-bottom:6px;padding:12px 14px;display:flex}.chk-row input{width:20px;height:20px;accent-color:var(--cinnabar);flex:none}.chk-row span{flex:1}.chk-row small{color:var(--muted)}.btn.disabled{opacity:.45;pointer-events:none}.btn[disabled]{opacity:.45}.moved{background:var(--cinnabar);color:#fff;text-align:center;padding:10px 16px;font-size:14px;text-decoration:none;display:block}.moved b{font-weight:700}
