:root{
  --bg:#f2f3ee;
  --surface:#ffffff;
  --surface-2:#eceee6;
  --ink:#20281f;
  --ink-soft:#57604f;
  --rule:#d7d9cd;
  --rule-strong:#b9bcaa;
  --must:#a6392a;
  --must-soft:#f4ded9;
  --core:#a17a2e;
  --core-soft:#f1e6cd;
  --skip:#6b7280;
  --skip-soft:#e6e8e3;
  --ok:#3a7a4e;
  --ok-soft:#dcebe0;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#181c16;
    --surface:#20251d;
    --surface-2:#262b21;
    --ink:#e9ece2;
    --ink-soft:#a7ad9c;
    --rule:#343a2d;
    --rule-strong:#454c3a;
    --must:#e08464;
    --must-soft:#3a251d;
    --core:#d9b465;
    --core-soft:#33291a;
    --skip:#9aa192;
    --skip-soft:#262b21;
    --ok:#6fbf8a;
    --ok-soft:#1e3025;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:"Zen Kaku Gothic New",-apple-system,"Hiragino Sans",sans-serif;
  line-height:1.85;font-size:16px;
}
a{color:var(--must)}
.wrap{max-width:820px;margin:0 auto;padding:0 16px}

/* header */
.site-head{background:var(--surface);border-bottom:1px solid var(--rule);position:static;z-index:10}
@media(min-width:760px){.site-head{position:sticky;top:0}}
.site-head .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;padding-top:10px;padding-bottom:10px}
.brand{font-family:"Shippori Mincho",serif;font-weight:800;font-size:1.05rem;color:var(--ink);text-decoration:none;margin-right:auto}
.nav{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:.9rem}
.nav a{color:var(--ink-soft);text-decoration:none;padding:4px 0;border-bottom:2px solid transparent}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink);font-weight:700;border-bottom-color:var(--must)}

/* headings */
h1,h2,h3{font-family:"Shippori Mincho",serif;line-height:1.4}
h1{font-size:1.9rem;font-weight:800;margin:36px 0 8px}
h2{font-size:1.35rem;font-weight:800;margin:44px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--rule-strong)}
h3{font-size:1.1rem;font-weight:700;margin:0}
.lead{color:var(--ink-soft);margin:0 0 20px}
.note{font-size:.9rem;color:var(--ink-soft)}

/* tier chips */
.tier{display:inline-block;font-size:.75rem;font-weight:700;padding:1px 9px;border-radius:999px;letter-spacing:.04em;white-space:nowrap}
.tier-must{background:var(--must-soft);color:var(--must)}
.tier-core{background:var(--core-soft);color:var(--core)}
.tier-skip{background:var(--skip-soft);color:var(--skip)}

/* tier explainer cards */
.tiers{display:grid;gap:12px;margin:20px 0}
@media(min-width:700px){.tiers{grid-template-columns:repeat(3,1fr)}}
.tier-card{background:var(--surface);border:1px solid var(--rule);border-top-width:4px;border-radius:8px;padding:14px 16px}
.tier-card.must{border-top-color:var(--must)}
.tier-card.core{border-top-color:var(--core)}
.tier-card.skip{border-top-color:var(--skip);border-style:dashed;border-top-style:solid}
.tier-card h3{margin:6px 0 4px}
.tier-card p{margin:0;font-size:.92rem;color:var(--ink-soft);line-height:1.7}

/* nav cards */
.cards{display:grid;gap:12px;margin:16px 0}
@media(min-width:700px){.cards{grid-template-columns:1fr 1fr}}
.card{display:block;background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:14px 16px;color:var(--ink);text-decoration:none}
.card:hover{border-color:var(--rule-strong);background:var(--surface-2)}
.card b{display:block;font-family:"Shippori Mincho",serif;font-size:1.05rem}
.card span{font-size:.9rem;color:var(--ink-soft)}

/* filter bar */
.toolbar{position:sticky;top:var(--head-h,0px);z-index:5;background:var(--bg);padding:10px 0;margin:8px 0 0;border-bottom:1px solid var(--rule)}
.toolbar .wrap{padding:0}
.filter{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.filter button{font:inherit;font-size:.85rem;padding:4px 12px;border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink);border-radius:999px;cursor:pointer}
.filter button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.filter .prog{margin-left:auto;font-size:.85rem;color:var(--ink-soft)}
body[data-mode="must"] .item:not([data-tier="must"]){display:none}
body[data-mode="core"] .item[data-tier="skip"]{display:none}

/* items */
.item{background:var(--surface);border:1px solid var(--rule);border-left-width:5px;border-radius:8px;padding:14px 16px 12px;margin:14px 0}
.item[data-tier="must"]{border-left-color:var(--must)}
.item[data-tier="core"]{border-left-color:var(--core)}
.item[data-tier="skip"]{border-left-color:var(--skip);border-style:dashed;border-left-style:solid;background:var(--surface-2)}
.item header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:6px}
.item p{margin:6px 0}
.item ul,.item ol{margin:6px 0;padding-left:1.4em}
.item li{margin:2px 0}
.sym{font-family:"Shippori Mincho",serif;font-weight:800;font-size:1.4rem;line-height:1;min-width:1.6em;text-align:center;background:var(--surface-2);border-radius:6px;padding:4px 6px}
.ex{margin:10px 0;padding:8px 12px;background:var(--surface-2);border-radius:6px}
.item[data-tier="skip"] .ex{background:var(--bg)}
.ex .en{margin:0;font-family:Georgia,"Times New Roman",serif;font-size:1.02rem}
.ex .ja{margin:2px 0 0;font-size:.9rem;color:var(--ink-soft)}
.ex mark{background:var(--core-soft);color:inherit;padding:0 2px;border-radius:2px}
.tip{font-size:.92rem;border-left:3px solid var(--ok);background:var(--ok-soft);padding:6px 10px;border-radius:0 6px 6px 0;margin:8px 0}
.warn{font-size:.92rem;border-left:3px solid var(--must);background:var(--must-soft);padding:6px 10px;border-radius:0 6px 6px 0;margin:8px 0}
.line{font-size:.92rem;border-left:3px dashed var(--skip);background:var(--skip-soft);padding:6px 10px;border-radius:0 6px 6px 0;margin:8px 0}
.done{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:.85rem;color:var(--ink-soft);cursor:pointer}
.done input{width:18px;height:18px;accent-color:var(--ok)}
.item.is-done{opacity:.72}
.item.is-done h3{text-decoration:line-through;text-decoration-color:var(--rule-strong)}

/* tables */
table{width:100%;border-collapse:collapse;font-size:.92rem;margin:10px 0;background:var(--surface)}
th,td{border:1px solid var(--rule);padding:6px 10px;text-align:left;vertical-align:top}
th{background:var(--surface-2);font-weight:700;white-space:nowrap}
.tablewrap{overflow-x:auto}

/* steps */
.steps{counter-reset:s;list-style:none;padding:0;margin:10px 0}
.steps li{counter-increment:s;position:relative;padding:4px 0 4px 2.2em}
.steps li::before{content:counter(s);position:absolute;left:0;top:4px;width:1.6em;height:1.6em;border-radius:50%;background:var(--ink);color:var(--bg);font-size:.8rem;display:flex;align-items:center;justify-content:center}

footer{margin:56px 0 40px;padding-top:16px;border-top:1px solid var(--rule);font-size:.85rem;color:var(--ink-soft)}

/* No. 番号（JSが h3 に data-no を付ける。フィルタで数字が変わらないようにするため） */
.item h3[data-no]::before{content:"No." attr(data-no);display:inline-block;margin-right:.5em;font-family:"Zen Kaku Gothic New",sans-serif;font-size:.72rem;font-weight:700;letter-spacing:.04em;color:var(--ink-soft);border:1px solid var(--rule-strong);border-radius:4px;padding:0 5px;vertical-align:.12em}

/* 図解記法 */
.parse{margin:10px 0;padding:10px 12px;background:var(--surface-2);border-radius:6px;font-family:Georgia,"Times New Roman",serif;font-size:1.02rem;line-height:2.1}
.parse .S{border-bottom:2px solid var(--must)}
.parse .V{border-bottom:2px double var(--core)}
.parse .O,.parse .C{border-bottom:2px dotted var(--ok)}
.parse .M{color:var(--ink-soft)}
.parse .cl{color:var(--core);font-weight:700}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.85rem;color:var(--ink-soft);margin:6px 0 2px}
.legend .S{border-bottom:2px solid var(--must)}
.legend .V{border-bottom:2px double var(--core)}
.legend .O{border-bottom:2px dotted var(--ok)}

/* 着眼点 */
.focus{display:flex;gap:8px;align-items:baseline;font-size:.95rem;margin:4px 0 8px}
.focus>b{flex:none;font-size:.72rem;letter-spacing:.06em;background:var(--ink);color:var(--bg);border-radius:4px;padding:1px 7px}

/* 確認問題 */
.quiz{margin:40px 0 0}
.q{background:var(--surface);border:1px solid var(--rule);border-radius:8px;margin:10px 0;padding:0}
.q summary{cursor:pointer;padding:10px 14px;font-weight:500;list-style:none}
.q summary::-webkit-details-marker{display:none}
.q summary::before{content:"問";display:inline-block;margin-right:8px;background:var(--ink);color:var(--bg);font-size:.72rem;font-weight:700;border-radius:4px;padding:0 6px}
.q[open] summary{border-bottom:1px dashed var(--rule-strong)}
.q .ans{padding:8px 14px 12px;font-size:.95rem}
.q .ans p{margin:4px 0}
.q .ans b.a{color:var(--ok)}

/* 完了した項目を隠す */
body[data-hide-done="1"] .item.is-done{display:none}
.filter .hd{margin-left:4px}
.empty-msg{margin:16px 0;padding:14px 16px;background:var(--ok-soft);border:1px solid var(--ok);border-radius:8px;color:var(--ink)}
.empty-msg span{font-size:.9rem;color:var(--ink-soft)}

/* ヘッダーのレベルバッジ */
.lv-badge{display:flex;flex-direction:column;gap:3px;min-width:104px;padding:3px 9px;border:1px solid var(--rule-strong);border-radius:8px;background:var(--surface-2);color:var(--ink);text-decoration:none;font-size:.76rem;font-weight:700;line-height:1.25}
.lv-badge:hover{border-color:var(--ink-soft)}
.lv-bar{display:block;height:5px;background:var(--rule);border-radius:3px;overflow:hidden}
.lv-bar i{display:block;height:100%;width:0;background:var(--ok);transition:width .6s ease}

/* トースト・紙吹雪 */
.toasts{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;width:min(92vw,440px);z-index:50}
.toast{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-radius:10px;background:var(--ink);color:var(--bg);box-shadow:0 6px 20px rgba(0,0,0,.25);font-size:.92rem;animation:pop .25s ease}
.toast button{flex:none;font:inherit;font-size:.85rem;font-weight:700;padding:3px 10px;border:1px solid currentColor;border-radius:999px;background:transparent;color:inherit;cursor:pointer}
.toast.award{background:var(--core);color:#fff}
.toast.levelup{background:var(--ok);color:#fff;font-weight:700}
@keyframes pop{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:60}
.confetti i{position:absolute;top:-14px;width:8px;height:13px;border-radius:2px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(105vh) rotate(600deg);opacity:.85}}
@media (prefers-reduced-motion: reduce){.toast{animation:none}.lv-bar i{transition:none}}

/* 記録ページ */
.lvcard{display:flex;gap:16px;align-items:center;background:var(--surface);border:1px solid var(--rule);border-radius:12px;padding:16px 18px;margin:16px 0}
.lvbig{flex:none;width:84px;height:84px;border-radius:50%;background:var(--ink);color:var(--bg);display:flex;align-items:center;justify-content:center;font-family:"Shippori Mincho",serif;font-weight:800;font-size:1.5rem}
.lvbody{flex:1;min-width:0}
.lvname{margin:0 0 8px;padding:0;border:0;font-size:1.3rem}
.xpbar{height:12px;background:var(--rule);border-radius:6px;overflow:hidden}
.xpbar i{display:block;height:100%;background:linear-gradient(90deg,var(--ok),var(--core));border-radius:6px;transition:width .6s ease}
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:14px 0}
@media(min-width:700px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:10px 12px}
.stat b{display:block;font-family:"Shippori Mincho",serif;font-size:1.25rem}
.stat span{font-size:.8rem;color:var(--ink-soft)}
.pbar{display:inline-block;vertical-align:middle;width:90px;height:8px;background:var(--rule);border-radius:4px;overflow:hidden;margin-right:8px}
.pbar i{display:block;height:100%;background:var(--ok)}
.pnum{font-size:.85rem;color:var(--ink-soft);white-space:nowrap}
.ptable td{vertical-align:middle}
.trophies{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:700px){.trophies{grid-template-columns:repeat(3,1fr)}}
.trophy{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--core);border-radius:8px;padding:10px 12px}
.trophy .ticon{font-size:1.6rem;line-height:1.2}
.trophy b{font-size:.92rem}
.trophy span:last-child{font-size:.8rem;color:var(--ink-soft)}
.trophy.locked{border-color:var(--rule);border-style:dashed;background:var(--surface-2);opacity:.75}
button.danger{font:inherit;font-size:.85rem;padding:4px 12px;border:1px solid var(--must);color:var(--must);background:transparent;border-radius:999px;cursor:pointer}

/* 構文の入口ページのカード */
.pcard{display:flex;flex-direction:column;gap:4px}
.pcard-meta{font-size:.8rem}
.pcard-prog{display:block;margin-top:2px}

/* 項目へ移動 */
.item,h2,.quiz{scroll-margin-top:calc(var(--head-h,0px) + 64px)}
.item.force-show{display:block !important}
.item.flash{animation:flash 2.2s ease}
@keyframes flash{0%,60%{box-shadow:0 0 0 3px var(--core)}100%{box-shadow:0 0 0 0 transparent}}
@media (prefers-reduced-motion: reduce){.item.flash{animation:none;box-shadow:0 0 0 3px var(--core)}}

/* 目次（ページ内） */
.toc{background:var(--surface);border:1px solid var(--rule);border-radius:8px;margin:14px 0}
.toc summary{cursor:pointer;padding:10px 14px;font-weight:700}
.toc-body{padding:2px 14px 12px;border-top:1px dashed var(--rule-strong)}
.toc-h{margin:12px 0 2px;font-family:"Shippori Mincho",serif;font-weight:800;font-size:.95rem}
.toc-body ol,.tocp ol{list-style:none;margin:0;padding:0}
.toc-body li a,.tocp li a{display:block;padding:3px 0;color:var(--ink);text-decoration:none;font-size:.92rem;line-height:1.6}
.toc-body li a:hover,.tocp li a:hover{color:var(--must);text-decoration:underline}
.toc-body li .tier,.tocp li .tier{margin-right:6px;font-size:.68rem;padding:0 7px}
.toc .no,.tocp .no{font-size:.72rem;color:var(--ink-soft);margin-right:2px}
.toc-body li.done a,.tocp li.done a{color:var(--ink-soft);text-decoration:line-through;text-decoration-color:var(--rule-strong)}
.toc-body li.done a::after,.tocp li.done a::after{content:" ✓";color:var(--ok);text-decoration:none;display:inline-block}

/* 全体目次ページ */
.tocs{display:grid;gap:14px}
.tocp,.tocp-other{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:6px 16px 12px}
.tocp h2,.tocp-other h2{margin:8px 0 4px;font-size:1.1rem;border:0;padding:0;display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.tocp h2 a{color:var(--ink)}
.tocp .count{font-family:"Zen Kaku Gothic New",sans-serif;font-size:.8rem;font-weight:500;color:var(--ink-soft)}
.tocp-other ul{margin:4px 0;padding-left:1.2em}

/* 検索 */
.search-btn{font:inherit;font-size:.8rem;font-weight:700;padding:5px 12px;border:1px solid var(--rule-strong);border-radius:999px;background:var(--surface-2);color:var(--ink);cursor:pointer}
.search-btn:hover{border-color:var(--ink-soft)}
.search-modal{position:fixed;inset:0;z-index:70;background:rgba(20,24,18,.55);display:flex;justify-content:center;align-items:flex-start;padding:8vh 12px 12px}
.search-modal[hidden]{display:none}
body.search-open{overflow:hidden}
.search-box{width:min(680px,100%);max-height:82vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--rule-strong);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.35);overflow:hidden}
.search-head{display:flex;gap:8px;padding:12px;border-bottom:1px solid var(--rule)}
.search-input{flex:1;min-width:0;font:inherit;font-size:1rem;padding:9px 12px;border:1px solid var(--rule-strong);border-radius:8px;background:var(--bg);color:var(--ink)}
.search-input:focus{outline:2px solid var(--must);outline-offset:1px}
.search-close{flex:none;font:inherit;font-size:1.2rem;line-height:1;width:38px;border:1px solid var(--rule-strong);border-radius:8px;background:transparent;color:var(--ink);cursor:pointer}
.search-list{flex:1;overflow-y:auto;padding:4px 8px 8px}
.search-list ul{list-style:none;margin:0;padding:0}
.search-list li a{display:block;padding:8px 10px;border-radius:8px;color:var(--ink);text-decoration:none}
.search-list li:hover a,.search-list li.active a{background:var(--surface-2)}
.s-top{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.s-top .tier{font-size:.68rem;padding:0 7px}
.s-page{font-size:.75rem;color:var(--ink-soft);margin-left:auto}
.s-done{font-size:.7rem;color:var(--ok);border:1px solid var(--ok);border-radius:999px;padding:0 6px}
.s-snip{display:block;margin-top:2px;font-size:.82rem;color:var(--ink-soft);line-height:1.6;word-break:break-word}
.s-snip mark{background:var(--core-soft);color:var(--ink);border-radius:2px;padding:0 1px}
.s-empty,.s-count{margin:10px 8px;font-size:.88rem;color:var(--ink-soft)}
.s-empty span{font-size:.82rem}
.search-foot{margin:0;padding:8px 12px;border-top:1px solid var(--rule);font-size:.75rem;color:var(--ink-soft)}
kbd{font-family:inherit;font-size:.75em;border:1px solid var(--rule-strong);border-bottom-width:2px;border-radius:4px;padding:0 5px;margin:0 2px;background:var(--surface-2)}

/* 英語構文マップ */
.map{margin-top:44px}
.map-h{font-family:"Shippori Mincho",serif;font-size:1.05rem;margin:28px 0 8px;padding-left:10px;border-left:5px solid var(--ink)}
.mlegend{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 4px}
.mchip{display:inline-block;padding:3px 10px;margin:3px 4px 3px 0;border-radius:999px;font-size:.8rem;line-height:1.5;text-decoration:none;color:var(--ink);border:1.5px solid var(--edge,var(--rule-strong));background:var(--surface)}
.mchip.t-must{font-weight:700;border-color:var(--edge,var(--must))}
.mchip.t-core{background:transparent}
.mchip.t-skip{border-style:dashed;color:var(--ink-soft);background:transparent}
a.mchip:hover{background:var(--edge,var(--ink));color:var(--surface);border-color:var(--edge,var(--ink))}
.mchip.done{text-decoration:line-through;text-decoration-color:var(--ink-soft);opacity:.6}
.mchip.done::after{content:" ✓";color:var(--ok);display:inline-block;text-decoration:none}
.mlegend .mchip{--edge:var(--ink-soft)}
.mlegend .mchip.t-must{--edge:var(--must)}
.mlegend .mchip.t-core{--edge:var(--core)}

.mblock{--tint:hsl(var(--h) 60% 95%);--edge:hsl(var(--h) 50% 40%);--line:hsl(var(--h) 35% 78%);background:var(--tint);border:1px solid var(--line);border-top:5px solid var(--edge);border-radius:10px;padding:10px 14px 12px}
.mblock h4{margin:0 0 2px;font-family:"Shippori Mincho",serif;font-size:1.05rem;color:var(--edge)}
.mblock h4 small{font-family:"Zen Kaku Gothic New",sans-serif;font-size:.74rem;font-weight:500;color:var(--ink-soft);margin-left:8px}
.mblock h4 a{color:var(--edge);text-decoration:none}
.mblock p{margin:2px 0 6px;font-size:.84rem;color:var(--ink-soft);line-height:1.6}
.mblock .mchip{background:var(--surface)}
.mblock .mchip.t-core{background:transparent}
.mblock .mchip.t-skip{background:transparent}
.mblocks{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.mblocks.bands{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.mcats{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.mprog{float:right;font-family:"Zen Kaku Gothic New",sans-serif;font-size:.72rem;font-weight:500;color:var(--ink-soft)}

.msent{background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:14px 16px}
.msent-en{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:flex-start;margin:0 0 8px;font-family:Georgia,"Times New Roman",serif;font-size:1.05rem}
.w{display:flex;flex-direction:column;align-items:center}
.w i{font-style:normal;padding:1px 6px;border-radius:4px;background:hsl(var(--h) 60% 93%);border-bottom:3px solid hsl(var(--h) 55% 42%)}
.w em{font-style:normal;font-family:"Zen Kaku Gothic New",sans-serif;font-size:.68rem;line-height:1.3;margin-top:2px;color:hsl(var(--h) 50% 38%);text-align:center}
.msent-ja{margin:0;font-size:.9rem;color:var(--ink-soft)}
.mformula{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0}
.mformula span{padding:3px 14px;border-radius:999px;background:hsl(var(--h) 52% 42%);color:#fff;font-weight:700}
.mformula b{color:var(--ink-soft)}
.msteps{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:6px 0}
.mstep{background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:8px 12px}
.mstep b{display:block;margin-bottom:2px;font-size:.92rem}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .mblock{--tint:hsl(var(--h) 22% 19%);--edge:hsl(var(--h) 55% 68%);--line:hsl(var(--h) 25% 32%)}
  :root:not([data-theme="light"]) .w i{background:hsl(var(--h) 25% 22%);border-bottom-color:hsl(var(--h) 55% 62%)}
  :root:not([data-theme="light"]) .w em{color:hsl(var(--h) 55% 72%)}
  :root:not([data-theme="light"]) .mformula span{background:hsl(var(--h) 45% 38%)}
}
:root[data-theme="dark"] .mblock{--tint:hsl(var(--h) 22% 19%);--edge:hsl(var(--h) 55% 68%);--line:hsl(var(--h) 25% 32%)}
:root[data-theme="dark"] .w i{background:hsl(var(--h) 25% 22%);border-bottom-color:hsl(var(--h) 55% 62%)}
:root[data-theme="dark"] .w em{color:hsl(var(--h) 55% 72%)}
:root[data-theme="dark"] .mformula span{background:hsl(var(--h) 45% 38%)}

/* ---- マインドマップ ---- */
.mm-wrap{position:relative;left:50%;transform:translateX(-50%);width:min(1120px,calc(100vw - 24px));overflow:auto;background:var(--surface);border:1px solid var(--rule);border-radius:12px;margin:8px 0;-webkit-overflow-scrolling:touch}
.mm-svg{display:block;margin:0 auto;height:auto}
.mm-svg text{font-family:"Zen Kaku Gothic New",sans-serif}
.mm-group{--c:hsl(var(--h) 55% 40%);--c2:hsl(var(--h) 45% 62%);--fill:hsl(var(--h) 55% 38%)}
.mm-spoke{stroke:var(--c2);stroke-width:2.6;opacity:.85}
.mm-twig{stroke:var(--c2);stroke-width:1;opacity:.55}
.mm-leaf circle{fill:var(--c)}
.mm-leaf.t-core circle{fill:var(--surface);stroke:var(--c);stroke-width:1.7}
.mm-leaf text{font-size:11.5px;fill:var(--ink);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}
.mm-leaf.t-must text{font-weight:700}
.mm-leaf{cursor:pointer;outline:none}
.mm-leaf:hover text,.mm-leaf:focus text{fill:var(--c);text-decoration:underline}
.mm-leaf.done text{opacity:.45;text-decoration:line-through}
.mm-leaf.done circle{fill:var(--ok);stroke:var(--ok)}
.mm-branch{cursor:pointer;outline:none}
.mm-branch rect{fill:var(--fill);stroke:var(--surface);stroke-width:2}
.mm-branch text{font-size:13.5px;font-weight:800;fill:#fff}
.mm-branch:hover rect,.mm-branch:focus rect,.mm-group.active .mm-branch rect{stroke:var(--ink);stroke-width:3}
.mm-center circle{fill:var(--ink)}
.mm-center text{fill:var(--bg);font-family:"Shippori Mincho",serif !important;font-weight:800;font-size:16px}
.mm-arc{stroke:var(--rule-strong);stroke-width:1.5;stroke-dasharray:3 5;fill:none}
.mm-arc-label{font-size:13px;font-weight:700;fill:var(--ink-soft);letter-spacing:.1em}
.mm-svg.mm-focus .mm-group:not(.active){opacity:.14;transition:opacity .2s}
.mm-svg .mm-group{transition:opacity .2s}
.mkey{font-size:.85rem;margin-right:12px;white-space:nowrap}
.mkey .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px;background:var(--ink)}
.mkey .dot.core{background:var(--surface);border:2px solid var(--ink)}
.mkey .dot.done{background:var(--ok)}
.mlegend{align-items:center}
.mm-zoom{margin-left:auto;display:inline-flex;gap:4px}
.mm-zoom button{font:inherit;font-size:.82rem;padding:3px 12px;border:1px solid var(--rule-strong);border-radius:999px;background:var(--surface);color:var(--ink);cursor:pointer}
.mm-panel{margin:10px 0 4px;min-height:44px}
.mm-panel .mblock{margin:0}
.mdetail{margin:14px 0;background:var(--surface);border:1px solid var(--rule);border-radius:8px}
.mdetail summary{cursor:pointer;padding:10px 14px;font-weight:700}
.mdetail .mblocks{padding:0 12px 12px}
.mblock.mcat{--tint:var(--surface-2);--edge:var(--ink-soft);--line:var(--rule)}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .mm-group{--c:hsl(var(--h) 60% 68%);--c2:hsl(var(--h) 40% 45%);--fill:hsl(var(--h) 45% 34%)}
}
:root[data-theme="dark"] .mm-group{--c:hsl(var(--h) 60% 68%);--c2:hsl(var(--h) 40% 45%);--fill:hsl(var(--h) 45% 34%)}

/* 全体目次を折りたたみ式に */
.toc-ctl{margin:6px 0 10px}
.tocp{padding:2px 16px}
.tocp summary{cursor:pointer;display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:9px 0;font-family:"Shippori Mincho",serif;font-weight:800;font-size:1.05rem;list-style:none}
.tocp summary::-webkit-details-marker{display:none}
.tocp summary::before{content:"▸";margin-right:6px;font-size:.85em;color:var(--ink-soft)}
.tocp[open] summary::before{content:"▾"}
.tocp summary .tp-name{flex:1}
.tocp[open]{padding-bottom:12px}
.tocs{gap:8px}
