:root{--paper: #f4efe4;--card: #fffdf8;--ink: #1f2622;--ink-soft: #5b625d;--line: #ddd4c2;--accent: #2f5d50;--accent-ink: #ffffff;--accent-soft: #e2ece6;--ok: #2f6b3f;--ok-soft: #e3f0e4;--ng: #a8432e;--ng-soft: #f6e3dd;--warn-soft: #f7edd2;--serif: "Iowan Old Style", "Palatino", "Georgia", "Hiragino Mincho ProN", "Yu Mincho", serif;--sans: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Segoe UI", sans-serif;--radius: 14px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #121614;--card: #1b211e;--ink: #ece7dc;--ink-soft: #a9ada8;--line: #313a35;--accent: #7fb59f;--accent-ink: #0f1311;--accent-soft: #23312b;--ok: #8bc79a;--ok-soft: #1f3125;--ng: #e7957f;--ng-soft: #3a2420;--warn-soft: #3a3320;color-scheme:dark}}:root[data-theme=dark]{--paper: #121614;--card: #1b211e;--ink: #ece7dc;--ink-soft: #a9ada8;--line: #313a35;--accent: #7fb59f;--accent-ink: #0f1311;--accent-soft: #23312b;--ok: #8bc79a;--ok-soft: #1f3125;--ng: #e7957f;--ng-soft: #3a2420;--warn-soft: #3a3320;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;min-height:100dvh;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overflow-wrap:anywhere}#root{max-width:560px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 8px) calc(env(safe-area-inset-right) + 16px) calc(env(safe-area-inset-bottom) + 32px) calc(env(safe-area-inset-left) + 16px)}a{color:var(--accent)}h1,h2,h3{line-height:1.3}h2{font-size:1.1rem;margin:0 0 8px}h3{font-size:.95rem;margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sci{font-family:var(--serif);font-style:italic;letter-spacing:.01em}.loading{padding:40px 0;text-align:center;color:var(--ink-soft)}.lead{color:var(--ink-soft);font-size:.92rem;margin:8px 0}.note{color:var(--ink-soft);font-size:.85rem}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;margin:0 -16px 8px;padding:calc(env(safe-area-inset-top) + 4px) 8px 4px;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.topbar h1{flex:1;font-size:1rem;margin:0;text-align:center}.topbar .back{width:44px;height:44px;display:grid;place-items:center;font-size:2rem;line-height:1;text-decoration:none}.topbar-spacer{width:44px}.card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin:12px 0;color:inherit;text-decoration:none}.card.warn{background:var(--warn-soft)}.card.center{text-align:center}.row{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}button,.button{font:inherit;min-height:48px;padding:10px 18px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}button:disabled{opacity:.55;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600;width:100%;margin:12px 0}button.ghost{background:transparent}button.danger{color:var(--ng);border-color:var(--ng)}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 60%,transparent);outline-offset:2px}.badge{display:inline-block;font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-style:normal;font-family:var(--sans);white-space:nowrap}.badge-outline{background:transparent;border:1px solid var(--line);color:var(--ink-soft)}.progress{height:6px;background:var(--line);border-radius:999px;overflow:hidden;margin:4px 0 12px}.progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.hero{padding:28px 4px 8px}.hero-kicker{font-family:var(--serif);font-style:italic;color:var(--accent);margin:0;font-size:.95rem}.hero h1{font-size:1.9rem;margin:2px 0 4px;letter-spacing:.04em}.hero-sub{margin:0;color:var(--ink-soft)}.due{display:flex;align-items:baseline;gap:8px}.due b{font-size:2rem;font-family:var(--serif);margin-left:auto}.due .unit{color:var(--ink-soft)}.resume{display:flex;justify-content:space-between;align-items:center;border-color:var(--accent);background:var(--accent-soft)}.menu{display:grid;gap:10px;margin-top:12px}.menu-item{display:flex;flex-direction:column;padding:14px 16px;border-radius:var(--radius);background:var(--card);border:1px solid var(--line);color:inherit;text-decoration:none;min-height:64px}.menu-item.primary-item{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.menu-title{font-weight:700;font-size:1.05rem}.menu-sub{font-size:.85rem;opacity:.8}.q-kind{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0}.q-prompt{font-weight:600;margin:8px 0 4px}.q-name{font-size:1.7rem;margin:4px 0 12px;line-height:1.25}.options{display:grid;gap:10px}.option{justify-content:flex-start;text-align:left;gap:12px;min-height:56px;padding:12px 14px;width:100%}.option-key{flex:none;width:28px;height:28px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font-size:.8rem;color:var(--ink-soft)}.option.is-correct{background:var(--ok-soft);border-color:var(--ok);opacity:1}.option.is-correct .option-key{background:var(--ok);border-color:var(--ok);color:var(--card)}.option.is-wrong{background:var(--ng-soft);border-color:var(--ng);opacity:1}.option.is-muted{opacity:.5}.q-tools{margin-top:14px;display:grid;gap:8px}.toggle{display:flex;align-items:center;gap:10px;min-height:44px;font-size:.92rem}.toggle input{width:22px;height:22px;accent-color:var(--accent)}.hint{background:var(--warn-soft);border-radius:10px;padding:10px 12px;margin:0}.explanation{margin-top:16px;border-top:2px solid var(--line);padding-top:12px}.verdict{font-size:1.25rem;font-weight:700;margin:0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.explanation.ok .verdict{color:var(--ok)}.explanation.ng .verdict{color:var(--ng)}.answer-line{font-weight:600;margin:4px 0}.explain-text{margin:8px 0}.next{position:sticky;bottom:calc(env(safe-area-inset-bottom) + 8px);box-shadow:0 4px 16px #00000026}.taxon-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin:12px 0}.taxon-card section{border-top:1px dashed var(--line);padding-top:10px;margin-top:10px}.taxon-ja{margin:0;font-size:.85rem;color:var(--ink-soft)}.taxon-sci{margin:0;font-size:1.35rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.taxon-sci .dim{opacity:.45}.taxon-sci .hl{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 50%,transparent);text-underline-offset:4px}.authority{font-size:.8rem;color:var(--ink-soft)}.segments{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}.seg{display:flex;flex-direction:column;padding:6px 10px;border-radius:10px;background:var(--accent-soft);color:var(--ink);text-decoration:none;min-width:64px}.seg-plain{background:transparent;border:1px dashed var(--line)}.seg-text{font-family:var(--serif);font-style:italic;font-size:1.05rem}.seg-gloss{font-size:.85rem;font-weight:600}.seg-root{font-size:.72rem;color:var(--ink-soft)}.meaning{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;margin:8px 0}.meaning dt{color:var(--ink-soft);font-size:.85rem}.meaning dd{margin:0;font-weight:600}.context{font-size:.92rem;margin:6px 0}.related{font-size:.9rem}.verify{font-size:.78rem;color:var(--ink-soft);margin:6px 0 0}.sources{margin-top:10px;font-size:.85rem}.sources summary{cursor:pointer;min-height:36px;display:flex;align-items:center;color:var(--accent)}.sources ul{padding-left:18px;margin:4px 0}.sources li{margin-bottom:8px}.src-meta,.src-note{display:block;color:var(--ink-soft);font-size:.78rem}.root-note{font-size:.88rem;color:var(--ink-soft)}.lesson-list{list-style:none;padding:0;display:grid;gap:8px}.lesson-item{width:100%;justify-content:flex-start;text-align:left;gap:12px}.lesson-no{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:.85rem}.lesson-list .done .lesson-no{background:var(--accent);color:var(--accent-ink)}.lesson-list .next .lesson-item{border-color:var(--accent)}.lesson-body{display:flex;flex-direction:column;flex:1;min-width:0}.lesson-title{font-weight:600}.lesson-roots{font-family:var(--serif);font-style:italic;font-size:.85rem;color:var(--ink-soft)}.lesson-state{font-size:.8rem;color:var(--accent)}.lesson-heading{font-size:1.4rem;margin:8px 0}.root-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin:10px 0;list-style:none}.root-form{font-family:var(--serif);font-style:italic;font-size:1.25rem;margin:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.root-lang{font-family:var(--sans);font-style:normal;font-size:.8rem;color:var(--ink-soft)}.root-meaning{font-size:1.2rem;font-weight:700;margin:4px 0}.example{border-top:1px dashed var(--line);margin-top:8px;padding-top:6px}.example p{margin:0;font-size:.9rem}.summary-roots{padding-left:18px}.root-list{padding:0}.score{font-family:var(--serif);font-size:3rem;margin:0}.score span{font-size:1.4rem;color:var(--ink-soft)}.miss-list{padding-left:18px}.miss-answer{display:block;color:var(--ink-soft);font-size:.9rem}.search{width:100%;font:inherit;font-size:16px;min-height:48px;padding:10px 14px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink)}.zukan-list{list-style:none;padding:0;display:grid;gap:8px}.zukan-item{width:100%;justify-content:space-between;text-align:left;gap:8px}.zukan-names{display:flex;flex-direction:column;min-width:0}.zukan-ja{font-size:.8rem;color:var(--ink-soft)}.status{flex:none;font-size:.75rem;padding:2px 8px;border-radius:999px;border:1px solid var(--line)}.status-mastered{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.status-learning{background:var(--accent-soft);color:var(--accent)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column}.stat b{font-family:var(--serif);font-size:1.8rem}.stat span{font-size:.8rem;color:var(--ink-soft)}.plain{padding-left:18px;font-size:.9rem}@media(max-width:360px){.q-name{font-size:1.45rem}.hero h1{font-size:1.6rem}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
