/* theme: research-hub-dark */
/* theme: research-hub-dark
   契約 v1 が定めるもの（モジュールはこれだけに依存してよい）:
   変数 --bg --bg-soft --card --card-hover --border --text --text-dim --text-faint
        --accent --accent-soft --good --warn --bad --radius --maxw
   クラス .btn（リンクチップの下地） .tbl-wrap（表の横スクロール枠） */

:root{
  --bg:#0f1419;
  --bg-soft:#161d26;
  --card:#1b232e;
  --card-hover:#212b38;
  --border:#2a3644;
  --text:#e8edf2;
  --text-dim:#9fb0c0;
  --text-faint:#6b7a89;
  --accent:#4fb0ff;
  --accent-soft:rgba(79,176,255,.12);
  --good:#37c99b;
  --warn:#ffcc5c;
  --bad:#ff6b6b;
  --radius:14px;
  --maxw:1080px;
  /* ページ単位の色分け用。front matter の accent: a〜g で切り替える */
  --accent-a:#4f9bff;
  --accent-b:#37c99b;
  --accent-c:#ff9f43;
  --accent-d:#b48cff;
  --accent-e:#26c6da;
  --accent-f:#ffcc5c;
  --accent-g:#ff6b8b;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:"Hiragino Kaku Gothic ProN","Noto Sans JP",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  line-height:1.7;
  font-size:15.5px;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}

/* 追従ヘッダー */
header.site{
  position:sticky;top:0;z-index:50;
  background:rgba(15,20,25,.9);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
}
header.site .bar{display:flex;align-items:center;gap:18px;padding:12px 20px;max-width:var(--maxw);margin:0 auto;flex-wrap:wrap}
header.site .brand{font-weight:700;font-size:15px;color:var(--text);white-space:nowrap}
header.site .brand span{color:var(--accent)}
nav.crumbs{display:flex;gap:14px;flex-wrap:wrap;font-size:13.5px}
nav.crumbs a{color:var(--text-dim);padding:4px 0;border-bottom:2px solid transparent}
nav.crumbs a:hover,nav.crumbs a.active{color:var(--text);border-color:var(--accent);text-decoration:none}

/* ヒーロー */
.hero{padding:56px 20px 40px;max-width:var(--maxw);margin:0 auto}
.hero .tag{display:inline-block;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);padding:4px 10px;border-radius:999px;margin-bottom:16px}
.hero h1{font-size:clamp(28px,4.5vw,44px);margin:0 0 14px;line-height:1.3}
.hero p.lead{color:var(--text-dim);font-size:17px;max-width:760px;margin:0 0 6px}
.hero .updated{color:var(--text-faint);font-size:13px;margin-top:18px}

/* 本文 */
main{padding-bottom:80px;max-width:var(--maxw);margin:0 auto;padding-left:20px;padding-right:20px}
main > h2{font-size:24px;margin:38px 0 6px;padding-top:6px;display:flex;align-items:center;gap:10px}
main > h2 .num{color:var(--text-faint);font-weight:400;font-size:16px}
h3{font-size:18px;margin:28px 0 10px}
h4{font-size:15.5px;margin:18px 0 8px;color:var(--text-dim)}
p{margin:0 0 14px}
blockquote{margin:16px 0;padding:2px 16px;border-left:3px solid var(--border);color:var(--text-dim)}
code{background:var(--bg-soft);border-radius:4px;padding:.15em .35em;font-size:.92em}
pre{background:#0b0f14;border:1px solid var(--border);border-radius:10px;padding:16px;overflow:auto}
pre code{background:transparent;padding:0}
hr{border:none;border-top:1px solid var(--border);margin:40px 0}

/* 表（契約 v1: .tbl-wrap） */
table{width:100%;border-collapse:collapse;margin:14px 0;font-size:14px}
th,td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
th{color:var(--text-dim);font-weight:600;font-size:12.5px;text-transform:uppercase;letter-spacing:.03em}
tr:hover td{background:rgba(255,255,255,.02)}
.tbl-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);margin:16px 0}
.tbl-wrap table{margin:0}
.tbl-wrap th,.tbl-wrap td{white-space:normal}

/* リンクチップの下地（契約 v1: .btn） */
.btn{
  display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;
  padding:6px 11px;border-radius:8px;border:1px solid var(--border);color:var(--text);
}
.btn:hover{text-decoration:none;border-color:var(--accent)}

/* ページ単位のアクセント（front matter の accent） */
body.accent-a main > h2{color:var(--accent-a)}
body.accent-b main > h2{color:var(--accent-b)}
body.accent-c main > h2{color:var(--accent-c)}
body.accent-d main > h2{color:var(--accent-d)}
body.accent-e main > h2{color:var(--accent-e)}
body.accent-f main > h2{color:var(--accent-f)}
body.accent-g main > h2{color:var(--accent-g)}

footer{border-top:1px solid var(--border);padding:30px 20px;color:var(--text-faint);font-size:12.5px;text-align:center}
footer a{color:var(--text-faint)}

@media (max-width:640px){
  nav.crumbs{gap:10px}
  .hero{padding:36px 20px 28px}
}

