:root{
  --bg:#fbfaf7; --panel:#ffffff; --ink:#23201c; --muted:#6d675f; --line:#e6e1d8;
  --accent:#1a6fb5; --accent-soft:#eaf3fb; --mark:#f6b73c; --code-bg:#f4f1ea;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#17181b; --panel:#1e2024; --ink:#e7e4de; --muted:#9a948b; --line:#32353b;
        --accent:#6ab3f0; --accent-soft:#1d2a36; --mark:#f0b84a; --code-bg:#24262b;}
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:-apple-system,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  line-height:1.9;font-size:16px;-webkit-font-smoothing:antialiased;overflow-wrap:anywhere}
a{color:var(--accent)}
.layout{display:flex;min-height:100vh;align-items:flex-start}
/* サイドバー */
.side{width:290px;flex:0 0 290px;position:sticky;top:0;height:100vh;overflow-y:auto;
  background:var(--panel);border-right:1px solid var(--line);padding:22px 0 60px}
.brand{padding:0 20px 16px;border-bottom:1px solid var(--line);margin-bottom:12px}
.brand b{display:block;font-size:17px;letter-spacing:.02em}
.brand span{font-size:12px;color:var(--muted)}
.side nav a{display:block;padding:9px 20px;text-decoration:none;color:var(--ink);
  font-size:14px;border-left:3px solid transparent}
.side nav a:hover{background:var(--accent-soft)}
.side nav a.active{background:var(--accent-soft);border-left-color:var(--accent);font-weight:700;color:var(--accent)}
.side nav a .num{color:var(--muted);font-size:12px;margin-right:7px;font-variant-numeric:tabular-nums}
.sec-label{padding:16px 20px 6px;font-size:11px;letter-spacing:.14em;color:var(--muted)}
.side nav a.child{padding-left:38px;font-size:13.2px;color:var(--muted);background:linear-gradient(90deg,var(--line) 0 1px,transparent 1px) 22px 0/100% 100% no-repeat}
.side nav a.child.active{color:var(--accent);background-color:var(--accent-soft)}
.side nav a .caret{float:right;color:var(--muted);font-size:11px}
/* 章の進捗バー */
.chapter-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:30px 0 -14px;
  padding:11px 16px;background:var(--panel);border:1px solid var(--line);border-radius:11px}
.chapter-bar .back{font-size:13px;text-decoration:none;font-weight:700}
.chapter-bar .step{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.chapter-bar .bar{flex:1;min-width:120px;height:6px;background:var(--line);border-radius:4px;overflow:hidden}
.chapter-bar .bar i{display:block;height:100%;background:var(--accent)}
/* 章のステップ一覧 */
.steps{margin:26px 0 10px}
.steps > b{font-size:13px;color:var(--muted);letter-spacing:.06em}
.step-list{display:grid;gap:9px;margin-top:11px}
a.step-card{display:flex;align-items:center;gap:14px;padding:13px 17px;text-decoration:none;
  background:var(--panel);border:1px solid var(--line);border-radius:11px;color:var(--ink)}
a.step-card:hover{border-color:var(--accent);background:var(--accent-soft)}
a.step-card .n{flex:0 0 30px;height:30px;line-height:30px;text-align:center;border-radius:50%;
  background:var(--accent);color:#fff;font-size:13px;font-weight:700}
a.step-card .t{font-size:14.5px;font-weight:700}
/* 本文 */
main{flex:1;min-width:0;display:flex;justify-content:center;padding:0 28px 100px}
article{width:100%;min-width:0;max-width:800px;padding-top:34px}
h1{font-size:30px;line-height:1.5;margin:.2em 0 .1em;letter-spacing:.01em}
h2{font-size:22px;margin:2.4em 0 .7em;padding:.45em .7em;background:var(--accent-soft);
  border-left:5px solid var(--accent);border-radius:0 7px 7px 0}
h3{font-size:18px;margin:1.9em 0 .5em;padding-bottom:.25em;border-bottom:1px dashed var(--line)}
h4{font-size:16px;margin:1.5em 0 .4em;color:var(--accent)}
p{margin:.85em 0}
ul,ol{padding-left:1.45em;margin:.7em 0}
li{margin:.35em 0}
code{background:var(--code-bg);padding:.12em .42em;border-radius:5px;
  font-family:"SF Mono",Menlo,Consolas,monospace;font-size:.88em}
pre.code{background:var(--code-bg);padding:16px 18px;border-radius:10px;overflow-x:auto;
  border:1px solid var(--line);position:relative;line-height:1.65}
pre.code code{background:none;padding:0;font-size:13.5px}
pre.code[data-lang]:not([data-lang=""])::before{content:attr(data-lang);position:absolute;
  top:0;right:0;font-size:10.5px;color:var(--muted);background:var(--panel);
  padding:2px 9px;border-radius:0 9px 0 9px;border-left:1px solid var(--line);border-bottom:1px solid var(--line)}
blockquote{margin:1.1em 0;padding:.1em 1.1em;border-left:4px solid var(--mark);
  background:var(--panel);border-radius:0 8px 8px 0;color:var(--muted)}
.table-wrap{overflow-x:auto;margin:1.1em 0}
table{border-collapse:collapse;width:100%;font-size:14.5px;background:var(--panel)}
th,td{border:1px solid var(--line);padding:9px 12px;text-align:left;vertical-align:top}
th{background:var(--accent-soft);font-weight:700;white-space:nowrap}
hr{border:none;border-top:1px solid var(--line);margin:2.4em 0}
img{max-width:100%}
/* 目次 */
.toc{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:14px 20px;margin:26px 0 10px}
.toc b{font-size:13px;color:var(--muted);letter-spacing:.08em}
.toc ul{list-style:none;padding-left:0;margin:.5em 0 0}
.toc li{margin:.22em 0;font-size:14px}
.toc li.lv3{padding-left:1.3em;font-size:13px}
.toc a{text-decoration:none}
.toc a:hover{text-decoration:underline}
/* ページ送り */
.pager{display:flex;gap:14px;margin-top:64px;border-top:1px solid var(--line);padding-top:24px}
.pager a{flex:1;min-width:0;padding:14px 18px;border:1px solid var(--line);border-radius:11px;
  background:var(--panel);text-decoration:none;font-size:14px}
.pager a:hover{border-color:var(--accent);background:var(--accent-soft)}
.pager .lbl{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}
.pager .next{text-align:right}
label.task{display:inline-flex;align-items:flex-start;gap:.55em;cursor:pointer}
label.task input{margin-top:.45em;width:16px;height:16px;accent-color:var(--accent);flex:0 0 auto}
label.task input:checked + *, label.task input:checked ~ *{opacity:.55}
li:has(> label.task input:checked){color:var(--muted);text-decoration:line-through}
.site-foot{margin-top:52px;padding-top:20px;border-top:1px solid var(--line);
  font-size:12.5px;color:var(--muted);line-height:1.8}
.site-foot p{margin:.3em 0}
.site-foot a{color:var(--muted)}
.topbar{display:none}
@media (max-width:860px){
  .layout{flex-direction:column}
  .side{position:static;width:100%;flex:none;height:auto;border-right:none;border-bottom:1px solid var(--line)}
  .js .side nav{display:none}
  .side nav.open{display:block}
  .topbar{display:block;padding:0 20px 10px}
  .topbar button{font:inherit;font-size:14px;padding:7px 14px;border-radius:8px;
    border:1px solid var(--line);background:var(--bg);color:var(--ink)}
  main{width:100%;padding:0 16px 60px}
}
