:root{
  --bg:#faf6f0; --card:#ffffff; --ink:#2a211b; --mute:#6f6258; --line:#e6dccf;
  --root:#7a3b1d; --rootbg:#f6e3d6; --suf:#1f5f6b; --sufbg:#dcefee;
  --encl:#5b4a8b; --enclbg:#e9e4f6; --accent:#c4572a; --focus:#c4572a;
}
@media (prefers-color-scheme: dark){
  :root{--bg:#191512; --card:#231e1a; --ink:#f1e9df; --mute:#b3a596; --line:#3a312a;
  --root:#f0a477; --rootbg:#40271a; --suf:#7fd0d6; --sufbg:#173539;
  --encl:#bfaef0; --enclbg:#2c2542; --accent:#f08a5b; --focus:#f08a5b;}
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
button{font:inherit;color:inherit;cursor:pointer}
button:focus-visible,input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 8px;max-width:760px;margin:0 auto}
.logo{font-weight:700;font-size:1.35rem;color:var(--root);letter-spacing:.01em}
.logo b{color:var(--suf);font-weight:700}
.sub{display:block;color:var(--mute);font-size:.88rem}
.pill{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 14px;font-size:.9rem;white-space:nowrap}
.tabs{display:flex;gap:4px;max-width:760px;margin:0 auto;padding:0 16px;border-bottom:1px solid var(--line)}
.tab{border:0;background:none;padding:10px 12px;color:var(--mute);border-bottom:3px solid transparent}
.tab.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
main{max-width:760px;margin:0 auto;padding:16px}
.view{display:none}.view.on{display:block}
.search{display:flex;gap:8px;margin-bottom:12px}
.search input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);font-size:1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:12px}
.words{display:flex;flex-wrap:wrap;gap:10px 8px;margin:4px 0 12px}
.word{border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:6px 8px;font-size:1.25rem;line-height:1.2;display:inline-flex;align-items:baseline}
.word.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}
.word.playing{background:var(--rootbg)}
.m-root{color:var(--root);font-weight:600}
.m-suf{color:var(--suf)}
.m-encl{color:var(--encl)}
.m-sep{color:var(--mute);opacity:.6;margin:0 1px}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.play{border:0;background:var(--accent);color:#fff;border-radius:999px;padding:8px 16px;font-weight:600}
.play[disabled]{opacity:.45;cursor:not-allowed}
.meta{color:var(--mute);font-size:.85rem}
.detail h3{margin:0 0 4px;font-size:1.3rem}
.parts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.part{border-radius:10px;padding:8px 10px;min-width:84px}
.part .f{font-weight:700;font-size:1.05rem}
.part .g{font-size:.86rem}
.part .t{font-size:.7rem;letter-spacing:.04em;opacity:.75;text-transform:uppercase}
.part.root{background:var(--rootbg);color:var(--root)}
.part.suf{background:var(--sufbg);color:var(--suf);cursor:pointer;border:0;text-align:left}
.part.encl{background:var(--enclbg);color:var(--encl);cursor:pointer;border:0;text-align:left}
.results{display:flex;flex-direction:column;gap:6px}
.res{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:10px 12px;text-align:left;font-size:1.02rem}
.res mark{background:var(--sufbg);color:var(--suf);border-radius:4px;padding:0 2px}
.suflist{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.sufbtn{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:6px 10px;text-align:left}
.sufbtn b{color:var(--suf)}
.sufbtn.encl b{color:var(--encl)}
.sufbtn small{display:block;color:var(--mute);font-size:.75rem}
.sufbtn.on{border-color:var(--accent)}
.hint{color:var(--mute);margin:0 0 10px}
.prose p{margin:.4em 0 .8em}
.foot{max-width:760px;margin:0 auto;padding:8px 16px 24px;color:var(--mute);font-size:.8rem}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.8rem;color:var(--mute);margin-top:6px}
.legend span::before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.legend .lr::before{background:var(--root)}.legend .ls::before{background:var(--suf)}.legend .le::before{background:var(--encl)}
.sufhead{margin:0 0 4px;font-size:1.2rem}
#sufres:not(:empty){margin-bottom:16px}
.loading{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.45}}
@media (prefers-reduced-motion: reduce){.loading{animation:none;opacity:.6}}
