/* ============================================================
   業界ナレッジ街マップ — site.css
   設計: モバイルファースト / トークン化 / タップ領域44px /
         本文の横スクロールは表・コード単位に限定（記事全体は出さない）
   ローカル閲覧でもクラウドでも同一に動く（外部依存なし）
   ============================================================ */

:root{
  /* color — Publication（紫 #A855F7 × 紺 #0A1829・print/雑誌調） */
  --fg:#0A1829; --muted:#5b6472; --faint:#8a94a3;
  --border:#e6e0ef; --border-strong:#0A1829;       /* 強ボーダー＝紺（print の輪郭） */
  --accent:#A855F7; --accent-weak:#f3ecff; --accent-ink:#7e22ce;
  --bg:#FBFAFC; --card:#ffffff; --row-alt:#f7f3fd;
  --chip-bg:#0A1829; --chip-active-bg:var(--accent-ink); --chip-active-fg:#fff;  /* 塗りチップは AA 対応で濃紫 */
  --ok:#16A34A; --warn:#D97706; --danger:#DC2626;
  --marker:linear-gradient(transparent 58%, rgba(168,85,247,.24) 58%);
  --border-cell:#d8d1e6;     /* 表の罫線は読みやすさ優先で淡い紫グレー */
  /* spacing */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px;
  /* shape — print 調に角を落とす */
  --radius:6px; --radius-sm:4px; --radius-lg:10px;
  --tap:44px;                /* 最小タップ領域 */
  --maxw:880px;
  --shadow:0 1px 2px rgba(10,24,41,.05), 0 4px 12px rgba(10,24,41,.05);
  --shadow-hard:6px 6px 0 var(--accent);   /* Publication のハード紫オフセット影 */
  --mono:ui-monospace,"JetBrains Mono",SFMono-Regular,Menlo,"Courier New",monospace;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; color:var(--fg); background:var(--bg); line-height:1.8;
  font-size:16px; overflow-wrap:break-word;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Sans",
              "Noto Sans JP","Yu Gothic","Meiryo",sans-serif;
}
a{color:var(--accent-ink)}    /* 本文リンクは AA 対応で濃紫（#A855F7 は白地で 3.2:1 と不足のため装飾専用） */
img{max-width:100%; height:auto}

/* フォーカス可視化（キーボード操作） */
:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:4px}

/* スキップリンク（キーボード/スクリーンリーダ） */
.skip-link{
  position:absolute; left:-999px; top:0; background:var(--accent-ink); color:#fff;
  padding:8px 14px; border-radius:0 0 8px 0; z-index:100;
}
.skip-link:focus{left:0}

/* ---------- top bar ---------- */
.topbar{
  display:flex; gap:var(--sp-3); align-items:center; padding:0 var(--sp-4);
  min-height:52px; background:var(--fg); border-bottom:3px solid var(--accent);
  position:sticky; top:0; z-index:20;
}
.topbar-home{
  color:#fff; text-decoration:none; font-weight:800; white-space:nowrap; letter-spacing:.04em;
  display:inline-flex; align-items:center; min-height:var(--tap); padding:0 4px;
}
.crumbs{color:#c8d0db; font-size:14px; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.crumbs a{color:#dac8f6; text-decoration:none; display:inline-flex;
  align-items:center; min-height:var(--tap)}

/* ---------- layout ---------- */
.content{max-width:var(--maxw); margin:0 auto; padding:var(--sp-5) var(--sp-4) 64px}
.foot{color:var(--faint); font-size:12px; text-align:center; padding:20px;
  border-top:1px solid var(--border)}
.foot-disclaimer{max-width:680px; margin:0 auto 10px; line-height:1.7}
.foot-nav{display:flex; flex-wrap:wrap; gap:6px 16px; justify-content:center; margin:0 0 10px}
.foot-nav a{color:var(--faint); text-decoration:underline; text-underline-offset:2px;
  display:inline-flex; align-items:center; min-height:var(--tap)}
.foot-nav a:hover{color:var(--fg)}
.foot-site{margin:0; letter-spacing:.04em}

/* ---------- generic button / pill ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  min-height:var(--tap); padding:8px 16px; border-radius:999px;
  border:1px solid var(--border-strong); background:var(--card); color:var(--fg);
  font-size:14px; font-weight:600; text-decoration:none; cursor:pointer;
}
.btn:hover{background:var(--accent-weak)}
.btn-primary{background:var(--accent-ink); color:#fff; border-color:var(--accent-ink)}
.btn-primary:hover{background:var(--fg)}

/* ============================================================
   TOP PAGE（街マップ⇔業界一覧の二導線）
   既定（モバイル/JS無効）: 一覧を主表示・マップは隠す
   PC（>=769px・JS無効）: マップを主表示・一覧は隠す
   JS が data-view を立てた場合は両者を上書き
   ============================================================ */
.home-head h1{margin:0 0 4px; font-size:24px}
.home-head p{color:var(--muted); margin:0 0 var(--sp-4); font-size:15px}

.home-controls{display:flex; flex-wrap:wrap; gap:var(--sp-3); align-items:center;
  margin:var(--sp-3) 0}
.ind-search{flex:1 1 240px; min-width:0}
.ind-search input{
  width:100%; min-height:var(--tap); padding:10px 14px; font-size:16px;
  border:1px solid var(--border-strong); border-radius:var(--radius-sm); background:var(--card);
}
.view-toggle{display:inline-flex; border:1px solid var(--border-strong);
  border-radius:999px; overflow:hidden; background:var(--card)}
.view-toggle button{
  appearance:none; border:0; background:transparent; color:var(--muted);
  min-height:var(--tap); padding:0 16px; font-size:14px; font-weight:600; cursor:pointer;
}
.view-toggle button[aria-pressed="true"]{background:var(--accent-ink); color:#fff}

/* セクターチップ */
.sector-chips{display:flex; flex-wrap:wrap; gap:var(--sp-2); margin:var(--sp-3) 0 var(--sp-4)}
.chip{
  display:inline-flex; align-items:center; min-height:36px; padding:0 14px;
  border-radius:0; border:1px solid var(--chip-bg); background:var(--chip-bg);
  color:#fff; font-size:13px; font-weight:700; cursor:pointer; text-decoration:none;
}
.chip[aria-pressed="true"], .chip.active{background:var(--chip-active-bg); color:var(--chip-active-fg);
  border-color:var(--chip-active-bg)}

/* 業界カード一覧 */
.sector-section{margin:0 0 var(--sp-5)}
.sector-section.hidden{display:none}
.sector-head{display:flex; align-items:center; gap:var(--sp-2); margin:0 0 var(--sp-3);
  font-size:15px; font-weight:700; color:var(--accent-ink)}
.sector-head .dot{width:12px; height:12px; border-radius:3px; display:inline-block}
.card-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:var(--sp-3)}
.ind-card{
  display:flex; gap:var(--sp-3); align-items:center; min-height:var(--tap);
  padding:var(--sp-3) var(--sp-4); background:var(--card); border:2px solid var(--fg);
  border-radius:var(--radius-sm); text-decoration:none; color:var(--fg); box-shadow:none;
  transition:transform .12s ease, box-shadow .12s ease;
}
.ind-card:hover{transform:translate(-3px,-3px); box-shadow:var(--shadow-hard)}
.ind-card.dim{display:none}              /* 検索/チップで除外 */
.ind-card .icon{font-size:26px; line-height:1; flex:0 0 auto}
.ind-card .thumb{flex:0 0 auto; width:56px; height:56px; border-radius:10px; overflow:hidden;
  background:var(--chip-bg); display:flex; align-items:center; justify-content:center}
.ind-card .thumb img{width:100%; height:100%; object-fit:cover; display:block}
.ind-card .body{min-width:0; flex:1 1 auto}
.ind-card .name{font-weight:700; font-size:15px; margin:0}
.ind-card .meta{color:var(--muted); font-size:12px; margin:2px 0 0}
.ind-card .bar{height:5px; border-radius:3px; background:#eceff3; margin-top:6px; overflow:hidden}
.ind-card .bar > i{display:block; height:100%; border-radius:3px; background:var(--accent)}
.list-empty{color:var(--muted); font-size:14px; padding:var(--sp-4); text-align:center;
  display:none}

/* city map */
.map-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch;
  background:linear-gradient(#eaf4ff,#f7fbff); border:1px solid var(--border);
  border-radius:var(--radius); padding:12px; margin:var(--sp-3) 0}
.citymap{width:100%; height:auto; display:block; max-width:1280px; margin:0 auto}
.citymap .tile{cursor:pointer}
.citymap .node rect{transition:filter .12s ease}
.citymap .tile:hover .node>rect:first-of-type{filter:brightness(1.03) drop-shadow(0 4px 8px rgba(0,0,0,.18))}
.citymap .tile.dim{opacity:.16}
.citymap text{pointer-events:none}
.legend{display:flex; gap:16px; flex-wrap:wrap; color:var(--muted); font-size:12px; margin:10px 2px}

/* 二導線の表示制御 — 既定（モバイル/no-JS）は一覧主表示 */
.view-list{display:block}
.view-map{display:none}
.home[data-view="map"] .view-list{display:none}
.home[data-view="map"] .view-map{display:block}
.home[data-view="list"] .view-list{display:block}
.home[data-view="list"] .view-map{display:none}

/* ============================================================
   INDUSTRY HUB（まず読む / カテゴリ別 / 理解度チェック / 最近更新）
   ============================================================ */
.hub{counter-reset:secno}
.hub h1{font-size:30px; margin:0 0 4px; color:var(--fg); font-weight:800; letter-spacing:.01em}
.hub-meta{color:var(--muted); font-size:13px; margin:0 0 var(--sp-5);
  border-bottom:1px solid var(--border); padding-bottom:12px}
.hub-section{margin:0 0 var(--sp-6); counter-increment:secno}
.hub-section > h2{font-size:20px; margin:0 0 var(--sp-4); color:var(--fg); font-weight:800;
  border-bottom:3px solid var(--fg); padding-bottom:8px;
  display:flex; align-items:baseline; gap:10px}
.hub-section > h2::before{content:counter(secno,decimal-leading-zero);
  color:var(--accent); font-weight:800; font-size:22px; line-height:1}

/* まず読む / FP&A・投資分析（Publication: 太枠カード + ハード影 hover + 塗りタグ） */
.read-first{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:var(--sp-4)}
.read-card{display:flex; flex-direction:column; gap:2px; padding:var(--sp-5);
  background:var(--card); border:2px solid var(--fg); border-radius:var(--radius-sm);
  text-decoration:none; color:var(--fg); box-shadow:none; min-height:var(--tap);
  transition:transform .12s ease, box-shadow .12s ease}
.read-card:hover{transform:translate(-3px,-3px); box-shadow:var(--shadow-hard)}
.read-card .rc-kind{align-self:flex-start; font-size:11px; letter-spacing:.08em; font-weight:700;
  color:#fff; background:var(--accent-ink); padding:3px 9px}
.read-card .rc-title{font-size:17px; font-weight:800; margin-top:8px; line-height:1.25; color:var(--fg)}
.read-card .rc-desc{font-size:13px; color:var(--muted); margin-top:6px; line-height:1.55}
/* サブセグメント入れ子（全体 → 自動車 / 自動車部品… のツリー表現） */
.seg-groups{margin:var(--sp-4) 0 0}
.seg-group{margin:var(--sp-4) 0 0; padding-left:var(--sp-4); border-left:3px solid var(--accent)}
.seg-group-title{font-size:14px; font-weight:800; color:var(--accent-ink); margin:0 0 10px; letter-spacing:.02em}
.seg-group .read-first{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
/* まず読むの 2 件目以降（詳細版ガイド・FP&A 等）はコンパクトなリンク行 */
.read-more{list-style:none; margin:10px 0 0; padding:0; font-size:14px}
.read-more li{padding:6px 0 6px 12px; border-left:2px solid var(--border)}
.read-more a{text-decoration:none}
.read-more .r-kind{color:var(--muted); font-size:12px}
.read-more .r-desc{display:block; color:var(--muted); font-size:12px; margin-top:2px; line-height:1.45}

/* 最近更新 */
.recent-list{list-style:none; margin:0; padding:0}
.recent-list li{border-bottom:2px solid var(--border)}
.recent-list a{display:flex; gap:var(--sp-3); align-items:baseline; justify-content:space-between;
  padding:12px 4px; min-height:var(--tap); text-decoration:none; color:var(--fg); font-weight:600}
.recent-list a:hover{background:var(--accent-weak); color:var(--accent-ink)}
.recent-list .r-when{color:var(--faint); font-size:12px; white-space:nowrap; flex:0 0 auto}
.recent-list .r-kind{color:var(--muted); font-size:12px}

/* カテゴリ別グリッド（従来の kind-card を踏襲） */
.kind-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:var(--sp-4)}
.kind-card{border:2px solid var(--fg); border-radius:var(--radius-sm); background:var(--card);
  padding:var(--sp-4); box-shadow:none}
.kind-card.empty{opacity:.55; box-shadow:none}
.kind-label{font-weight:800; margin-bottom:8px; color:var(--fg);
  border-bottom:2px solid var(--border); padding-bottom:6px}
.kind-desc{color:var(--muted); font-size:12.5px; line-height:1.5; margin:0 0 8px}
.kind-card ul{margin:0; padding-left:18px}
.kind-card li{margin:6px 0; font-size:14px; font-weight:600}
.kind-card a{color:var(--accent-ink); text-decoration:none; display:inline-block; min-height:28px}
.kind-card a:hover{color:var(--accent); text-decoration:underline}
.empty-note{color:var(--muted); font-size:13px; margin:0; font-style:italic}
.hub-overview{margin-top:var(--sp-2)}
.hub-disclaimer{color:var(--faint); font-size:12px; line-height:1.7; margin:var(--sp-3) 0 0}
/* 2トラック構成（まず読む / FP&A・投資分析）の導入文・対象説明 */
.hub-lead{margin:var(--sp-3) 0 var(--sp-6); padding:16px 18px;
  background:var(--card); border:2px solid var(--fg); box-shadow:var(--shadow-hard);
  font-size:14px; line-height:1.75}
.hub-lead strong{color:var(--accent-ink); font-weight:800}
.track-target{color:var(--muted); font-size:13px; line-height:1.65; margin:-2px 0 14px}
.track-note{margin:14px 0 0; padding:10px 14px; background:var(--accent-weak);
  border-left:5px solid var(--accent); border-radius:0 var(--radius-sm) var(--radius-sm) 0;
  font-size:13px; color:var(--fg); font-weight:600}
.track-note strong{color:var(--accent-ink)}
/* FP&A・投資分析トラックは紫の左ボーダー＋タグを紺にして区別（やや専門的の合図） */
.track-fpa .read-card{border-left:6px solid var(--accent)}
.track-fpa .read-card .rc-kind{background:var(--fg)}
hr{border:none; border-top:1px solid var(--border); margin:var(--sp-5) 0}

/* knowledge index */
.kn-cat{margin:0 0 var(--sp-4)}
.kn-cat h2{font-size:16px; margin:0 0 var(--sp-2); color:var(--accent-ink)}
.kn-cat ul{margin:0; padding-left:18px}
.kn-cat li{margin:4px 0}

/* ============================================================
   REPORT PAGE（目次 / 前後移動 / 関連 / 本文）
   ============================================================ */
.report h1{font-size:24px; margin:0 0 8px; line-height:1.4}
.report-meta{color:var(--muted); font-size:13px; margin:0 0 var(--sp-5);
  border-bottom:1px solid var(--border); padding-bottom:12px;
  display:flex; flex-wrap:wrap; gap:6px; align-items:center}
/* メタ情報チップ（業界 / 種別 / 更新日） */
.meta-chip{display:inline-flex; align-items:center; padding:2px 10px; border-radius:0;
  font-size:12px; font-weight:700; line-height:1.7; white-space:nowrap}
.mc-ind{background:var(--accent-ink); color:#fff}
.mc-kind{background:var(--accent-weak); color:var(--accent-ink); border:1px solid #e0cffa}
.mc-date{background:var(--chip-bg); color:#fff}
/* タグチップ（Obsidian 風 frontmatter tags・editorial 角ゼロで統一） */
.tag-chips{display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:0 0 12px}
.tag-chip{display:inline-flex; align-items:center; padding:3px 11px; border-radius:0;
  background:var(--accent-weak); color:var(--accent-ink); border:1px solid #e0cffa;
  font-size:12px; font-weight:700; line-height:1.6; text-decoration:none; white-space:nowrap}
.tag-chip:hover{background:var(--accent-ink); color:#fff; border-color:var(--accent-ink)}
.tag-chip .tc-hash{opacity:.6; font-weight:800; margin-right:1px}
.tag-chip .tc-count{margin-left:6px; padding:0 6px; background:#fff;
  color:var(--accent-ink); font-size:11px; font-weight:800; min-width:16px; text-align:center}
.tag-chip:hover .tc-count{background:var(--accent-weak)}
.tag-chips-cloud{gap:8px; margin-top:var(--sp-3)}
.topics-tags-link{margin:var(--sp-3) 0 0}
/* 主題チップ（新タクソノミー subject/series・legacy 自由語タグと色で区別） */
.subject-chips{display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:0 0 12px}
.subject-chip{display:inline-flex; align-items:center; padding:3px 11px; border-radius:0;
  background:#eaf7ef; color:#15803d; border:1px solid #bbe6cb;
  font-size:12px; font-weight:700; line-height:1.6; text-decoration:none; white-space:nowrap}
a.subject-chip:hover{background:#16a34a; color:#fff; border-color:#16a34a}
.subject-chip-primary{background:#16a34a; color:#fff; border-color:#16a34a; font-weight:800}
a.subject-chip-primary:hover{background:#15803d; border-color:#15803d}
.subject-chip.series-chip{background:#fff7ed; color:#c2410c; border-color:#fcd9b6}
a.subject-chip.series-chip:hover{background:#ea580c; color:#fff; border-color:#ea580c}
.subject-chip.sc-geo{background:#f1f5f9; color:#475569; border-color:#dbe3ec}
.subject-chip .tc-count{margin-left:6px; padding:0 6px; background:#fff;
  color:#15803d; font-size:11px; font-weight:800; min-width:16px; text-align:center}
a.subject-chip:hover .tc-count{background:#eaf7ef}
/* 早見の項目チップ（各 ## 項目見出し直下に注入） */
.item-chips{display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:2px 0 10px}
/* 連載カード内の主題サブラベル */
.sc-subject{font-size:11px; font-weight:700; color:#15803d}
/* 関心プロファイル（簡易件数バー） */
.profile-bars{display:flex; flex-wrap:wrap; gap:8px; list-style:none; padding:0; margin:var(--sp-3) 0}
.profile-bar{display:inline-flex; align-items:center; gap:6px; padding:4px 12px;
  background:#eaf7ef; border:1px solid #bbe6cb}
.profile-bar .pb-label{font-size:13px; font-weight:700; color:#15803d}
.profile-bar .pb-count{font-size:12px; font-weight:800; color:#fff; background:#16a34a;
  padding:0 7px; min-width:18px; text-align:center}
.report h2{margin-top:var(--sp-6); font-size:21px; scroll-margin-top:60px; color:var(--fg);
  font-weight:800; border-bottom:3px solid var(--fg); border-left:none; border-radius:0;
  padding:0 0 7px; background:none; letter-spacing:.01em}
.report h3{margin-top:var(--sp-5); font-size:17px; scroll-margin-top:60px;
  color:var(--accent-ink); font-weight:800; border-left:4px solid var(--accent); padding-left:10px}
.report h4{margin-top:var(--sp-4); font-size:15px; scroll-margin-top:60px; color:var(--accent-ink)}
.report img{display:block; margin:12px 0}
.report blockquote{margin:12px 0; padding:8px 14px; border-left:4px solid var(--accent);
  color:var(--muted); background:var(--card); border-radius:0 var(--radius-sm) var(--radius-sm) 0}
/* 本文の強調はマーカー風ハイライト（表・見出し内は対象外） */
.report p strong, .report li strong{background:var(--marker); padding:0 1px}
/* 注記段落（注: / ※ 始まり。表の補足等）: 本文と区別する小さめの注記ボックス */
.report p.p-note, .hub p.p-note{
  font-size:13px; color:var(--muted); line-height:1.9;
  background:var(--row-alt); border-left:3px solid var(--border-strong);
  border-radius:0 var(--radius-sm) var(--radius-sm) 0; padding:10px 14px;
}

/* インライン code & コードブロック（pre は個別に横スクロール） */
.report code{background:var(--accent-weak); padding:1px 5px; border-radius:4px; font-size:.92em;
  overflow-wrap:break-word}
.report pre{background:#f3f5f8; padding:12px; border-radius:var(--radius-sm); font-size:13px;
  overflow-x:auto; -webkit-overflow-scrolling:touch; line-height:1.5; tab-size:2}
.report pre code{background:none; padding:0; white-space:pre}
/* 強調マーカー（==text== → <mark>）。本文の主張・要点を視覚化 */
.report mark, .hub mark{background:linear-gradient(transparent 58%, var(--accent-weak) 58%);
  color:inherit; padding:0 1px; font-weight:600; border-radius:1px}
.report mark strong, .report strong mark{font-weight:800}
.report pre, .report code, .report pre code{
  font-family:ui-monospace,"Cascadia Mono",Consolas,"BIZ UDGothic",
              "Noto Sans Mono CJK JP","Noto Sans Mono","MS Gothic",monospace;
}

/* 表は表だけが横スクロール（記事全体は横に出さない）。.hub は業界ハブ overview 内の表 */
.report table, .hub table{border-collapse:collapse; font-size:14px; margin:16px 0;
  display:block; max-width:100%; width:fit-content; overflow-x:auto; -webkit-overflow-scrolling:touch;
  font-variant-numeric:tabular-nums; border-radius:var(--radius-sm)}
.report th,.report td, .hub th,.hub td{border:1px solid var(--border-cell); padding:6px 10px;
  text-align:left; vertical-align:top;
  font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1;}
.report th, .hub th{background:#efe6fb; color:var(--accent-ink); font-size:13px;
  position:sticky; left:0}
.report th:not(:first-child), .hub th:not(:first-child){position:static}
/* ゼブラ（カード表示時は後段の上書きで無効化） */
.report tbody tr:nth-child(even) td, .hub tbody tr:nth-child(even) td{background:var(--row-alt)}
/* ▲・マイナスの数値は赤字（JS が num-neg を付与） */
.report td.num-neg, .hub td.num-neg{color:var(--danger); font-weight:600}

/* 数値比較表（scroll-table）: 横スクロール時に 1 列目を固定して比較の基準を保つ */
.report table.scroll-table tbody td:first-child,
.hub table.scroll-table tbody td:first-child{
  position:sticky; left:0; z-index:1; background:var(--card);
  box-shadow:2px 0 6px -3px rgba(16,24,40,.25);
}
.report table.scroll-table tbody tr:nth-child(even) td:first-child,
.hub table.scroll-table tbody tr:nth-child(even) td:first-child{background:var(--row-alt)}

/* カード⇔表の切替ボタン（スマホのみ表示。JS が表の直前に挿入） */
.table-mode{display:none}
@media (max-width:640px){
  .table-mode{display:flex; justify-content:flex-end; margin:14px 0 0}
  .table-mode + table{margin-top:6px}
  .table-mode button{
    appearance:none; cursor:pointer; border:1px solid var(--border-strong);
    background:var(--card); color:var(--accent-ink); font-size:12px; font-weight:700;
    padding:4px 12px; border-radius:999px; min-height:32px;
  }
  .table-mode button:active{background:var(--accent-weak)}
}

/* ページ冒頭サマリー（まず見る/次に読む — PC では1行の控えめ表示） */
.report-summary{background:var(--card); border:1px solid var(--border);
  border-left:4px solid var(--accent);
  border-radius:var(--radius); padding:10px 14px; margin:0 0 var(--sp-4); font-size:14px;
  box-shadow:var(--shadow)}
.report-summary .rs-title{margin:0 0 4px; font-weight:700; font-size:12px; color:var(--accent-ink)}
.report-summary .rs-title::before{content:"🧭 "}
.report-summary ul{list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:4px 24px}
.report-summary li{display:flex; gap:8px; min-width:0; max-width:100%}
.report-summary .rs-k{color:var(--muted); font-size:12px; font-weight:600; flex:0 0 auto;
  display:inline-flex; align-items:center}
.report-summary a{color:var(--accent-ink); text-decoration:none; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap; min-width:0}
.report-summary a:hover{text-decoration:underline}

/* 目次（ページ内） */
.report-toc{background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  padding:var(--sp-3) var(--sp-4); margin:0 0 var(--sp-5); scroll-margin-top:60px}
.report-toc summary{font-weight:700; cursor:pointer; min-height:32px; display:flex; align-items:center}
.report-toc ol{margin:var(--sp-2) 0 0; padding-left:20px}
.report-toc li{margin:3px 0; font-size:14px}
.report-toc .lvl3{margin-left:14px; list-style:circle}
.report-toc a{color:var(--accent-ink); text-decoration:none}
/* 早見ニュース: 冒頭の概要目次（常時表示・スマホでも隠さない＝report-toc と違いドロワーに集約しない） */
.ql-overview{background:var(--card); border:2px solid var(--fg); border-radius:var(--radius);
  padding:var(--sp-3) var(--sp-4); margin:0 0 var(--sp-5); box-shadow:var(--shadow-hard); scroll-margin-top:60px}
.ql-overview-label{font-family:var(--mono); text-transform:uppercase; letter-spacing:.08em;
  font-size:11px; font-weight:700; color:var(--accent-ink); margin:0 0 var(--sp-2)}
.ql-overview-list{margin:0; padding-left:22px; display:grid; gap:3px}
.ql-overview-list li{font-size:14px; line-height:1.5}
.ql-overview-list li a{color:var(--accent-ink); text-decoration:none;
  display:inline-flex; align-items:center; min-height:var(--tap)}
.ql-overview-list li a:hover{text-decoration:underline}

/* 目次ドロワー（スマホ: 下部ナビ「📑目次」で右からスライド・読書中いつでも呼び出し） */
.toc-drawer-backdrop{position:fixed; inset:0; background:rgba(16,24,40,.45);
  opacity:0; visibility:hidden; transition:opacity .2s ease; z-index:40}
.toc-drawer-backdrop.open{opacity:1; visibility:visible}
.toc-drawer{position:fixed; top:0; right:0; height:100%; width:min(84vw,330px);
  background:var(--card); box-shadow:-8px 0 24px rgba(16,24,40,.22);
  transform:translateX(105%); transition:transform .22s ease; z-index:41;
  display:flex; flex-direction:column}
.toc-drawer.open{transform:translateX(0)}
.toc-drawer-head{display:flex; align-items:center; justify-content:space-between;
  padding:14px 16px; border-bottom:1px solid var(--border); font-weight:800; font-size:15px}
.toc-drawer-close{border:none; background:none; font-size:24px; line-height:1;
  padding:2px 10px; cursor:pointer; color:var(--fg)}
.toc-drawer nav{overflow-y:auto; -webkit-overflow-scrolling:touch; padding:4px 0 28px}
.toc-drawer ol{list-style:none; margin:0; padding:0}
.toc-drawer li{margin:0}
.toc-drawer a{display:block; padding:11px 18px; text-decoration:none; color:var(--fg);
  border-bottom:1px solid var(--border); font-size:14px; line-height:1.4; min-height:var(--tap)}
.toc-drawer a:active{background:var(--accent-weak)}
.toc-drawer li.lvl3 a{padding-left:34px; color:var(--muted); font-size:13px}
.toc-drawer li.lvl4 a{padding-left:48px; color:var(--muted); font-size:12.5px}
body.toc-drawer-lock{overflow:hidden}
@media (min-width:769px){ .toc-drawer,.toc-drawer-backdrop{display:none !important} }
@media (max-width:768px){ .report-toc{display:none} }  /* スマホはドロワーに集約 */

/* 前後移動 / 関連 */
.report-foot{margin-top:var(--sp-6); border-top:1px solid var(--border); padding-top:var(--sp-4)}
.pager{display:flex; gap:var(--sp-3); flex-wrap:wrap; justify-content:space-between}
.pager a{flex:1 1 45%; min-height:var(--tap)}
.pager .pg-next{margin-left:auto; text-align:right}
.related h2{font-size:16px; margin:var(--sp-5) 0 var(--sp-2); color:var(--accent-ink)}
.related ul{margin:0; padding-left:18px}
.related li{margin:4px 0; font-size:14px}
.related a{color:var(--accent-ink); text-decoration:none}

/* callouts（従来踏襲） */
.callout{background:var(--card); border:1px solid var(--border); border-left:4px solid var(--accent);
  border-radius:var(--radius-sm); padding:10px 14px; margin:16px 0}
.callout-title{font-weight:700; margin-bottom:4px}
.callout-note,.callout-abstract{border-left-color:var(--accent)}
.callout-warning,.callout-caution{border-left-color:var(--warn)}
.callout-tip,.callout-success,.callout-hint{border-left-color:var(--ok)}
.callout-danger,.callout-error,.callout-failure{border-left-color:var(--danger)}
.callout-info,.callout-question,.callout-faq{border-left-color:var(--accent-ink)}
.callout-example{border-left-color:var(--accent-ink)}
details.callout summary{cursor:pointer; font-weight:700; outline:none; min-height:32px;
  display:flex; align-items:center}
details.callout[open] summary{margin-bottom:8px}

/* wikilinks */
a.wikilink{color:var(--accent-ink); text-decoration:none; border-bottom:1px dotted var(--accent-ink)}
a.wikilink:hover{background:var(--accent-weak)}
.wikilink-broken{color:var(--muted); border-bottom:1px dotted #ccc}

/* mermaid 図 */
pre.mermaid{background:none; border:none; text-align:center; padding:8px 0; overflow-x:auto}

/* 画像未発見プレースホルダ */
.img-missing{display:inline-block; color:var(--muted); background:#f1f3f6;
  border:1px dashed var(--border-strong); border-radius:4px; padding:2px 8px; font-size:13px}

/* 公開ビルドの未生成チャート: 図キャプションとして描画（後日 PNG 差替）。
   img-missing プレースホルダと違い欠落マーカ属性を持たないため verify/lint の hard-fail 対象外。 */
.fig-pending{display:block; color:var(--muted); background:#f7f8fa;
  border:1px dashed var(--border-strong); border-radius:6px; padding:18px 16px;
  margin:16px 0; text-align:center; font-size:13px; line-height:1.5}

/* グローバル検索（M4 で site.js が利用するオーバーレイ） */
.search-toggle{appearance:none; border:0; background:transparent; cursor:pointer;
  min-height:var(--tap); min-width:var(--tap); font-size:18px; color:#fff; margin-left:auto}
.search-overlay{position:fixed; inset:0; background:rgba(15,23,32,.45); z-index:50;
  display:none; padding:10vh var(--sp-4) var(--sp-4)}
.search-overlay.open{display:block}
.search-panel{max-width:640px; margin:0 auto; background:var(--card); border-radius:var(--radius-lg);
  box-shadow:0 20px 60px rgba(0,0,0,.3); padding:var(--sp-4); max-height:80vh; display:flex; flex-direction:column}
.search-panel input{width:100%; min-height:var(--tap); font-size:16px; padding:10px 14px;
  border:1px solid var(--border-strong); border-radius:var(--radius-sm)}
.search-results{list-style:none; margin:var(--sp-3) 0 0; padding:0; overflow-y:auto}
.search-results li{border-bottom:1px solid var(--border)}
.search-results a{display:block; padding:10px 6px; min-height:var(--tap); text-decoration:none; color:var(--fg)}
.search-results a:hover,.search-results a.active{background:var(--accent-weak)}
.search-results .sr-kind{color:var(--muted); font-size:12px}
.search-empty{display:none; color:var(--muted); padding:var(--sp-3); text-align:center}

/* ============================================================
   スマホ下部クイックナビ（JS が .ready を付けた時だけ表示・PC 非表示）
   ============================================================ */
.mobile-nav{display:none}
@media (max-width:768px){
  .mobile-nav.ready{
    display:flex; position:fixed; left:0; right:0; bottom:0; z-index:30;
    background:var(--card); border-top:1px solid var(--border);
    justify-content:space-around; gap:2px;
    padding:4px 8px calc(4px + env(safe-area-inset-bottom, 0px));
    box-shadow:0 -2px 10px rgba(16,24,40,.06);
  }
  .mobile-nav.ready button, .mobile-nav.ready a{
    appearance:none; border:0; background:none; cursor:pointer;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
    flex:1 1 0; min-width:var(--tap); min-height:var(--tap);
    color:var(--muted); font-size:11px; font-weight:600; text-decoration:none;
    border-radius:var(--radius-sm);
  }
  .mobile-nav.ready button:active, .mobile-nav.ready a:active{background:var(--accent-weak)}
  .mobile-nav .mn-icon{font-size:18px; line-height:1}
  /* 表示ルール（.mobile-nav.ready button = 0,2,1）より詳細度を上げて隠す */
  .mobile-nav.ready button.hidden, .mobile-nav.ready a.hidden{display:none}
  body.has-mobile-nav .content{padding-bottom:96px}
  body.has-mobile-nav .foot{padding-bottom:72px}
}

/* ============================================================
   表のスマホカード化（JS が mobile-card-table を付与した表のみ・≤640px）
   1行 = 1カード。td は「列見出し | 値」の2カラム grid。
   順位列(.mct-rank)は右上バッジ、主要列(.mct-title)はカード見出し。
   ============================================================ */
@media (max-width:640px){
  .report table.mobile-card-table, .hub table.mobile-card-table{
    display:block; width:100%; border:0; overflow:visible
  }
  .mobile-card-table thead{position:absolute; width:1px; height:1px; overflow:hidden;
    clip:rect(0 0 0 0); clip-path:inset(50%)}
  .mobile-card-table tbody{display:block}
  .mobile-card-table tbody tr{
    display:block; position:relative; background:var(--card);
    border:1px solid var(--border-strong); border-radius:var(--radius);
    padding:10px 12px; margin:0 0 10px; box-shadow:var(--shadow);
  }
  /* カード表示ではゼブラ背景を無効化（ゼブラ規則と同詳細度・後勝ち） */
  .mobile-card-table tbody tr:nth-child(even) td{background:none}
  .mobile-card-table tbody td{
    display:grid; grid-template-columns:minmax(6.5em,38%) 1fr; gap:8px;
    border:0; padding:3px 0; font-size:13px;
    /* md の列揃え（td の inline style text-align:right 等）はカード表示では崩れの元。
       inline style に勝つため !important で左揃えに統一する */
    text-align:left !important;
  }
  .mobile-card-table tbody td::before{
    content:attr(data-label); color:var(--muted); font-size:12px; font-weight:600;
    overflow-wrap:anywhere;
  }
  .mobile-card-table td.mct-title{
    display:block; font-weight:700; font-size:15px;
    padding:0 0 6px; margin:0 0 6px; border-bottom:1px solid var(--border);
  }
  .mobile-card-table td.mct-title::before{content:none}
  .mobile-card-table td.mct-title.mct-with-rank{padding-right:40px}
  .mobile-card-table td.mct-rank{
    display:flex; position:absolute; top:10px; right:12px; width:28px; height:28px;
    align-items:center; justify-content:center; padding:0; border-radius:50%;
    background:var(--accent-weak); color:var(--accent-ink); font-weight:700; font-size:13px;
  }
  .mobile-card-table td.mct-rank::before{content:none}
}

/* ============================================================
   レスポンシブ
   ============================================================ */
@media (max-width:520px){
  .card-grid{grid-template-columns:1fr}
  .kind-grid{grid-template-columns:1fr}
  .read-first{grid-template-columns:1fr}
  .content{padding:var(--sp-4) var(--sp-3) 48px}
  body.has-mobile-nav .content{padding-bottom:96px}
}

/* PC: マップを主表示（JS 無効時の既定）。一覧はトグルで表示。 */
@media (min-width:769px){
  .view-list{display:none}
  .view-map{display:block}
  .home:not([data-view]) .view-map{display:block}
  .home:not([data-view]) .view-list{display:none}
  /* JS が data-view を立てれば上の [data-view="..."] ルールが勝つ */
}

/* モバイル: マップを開いたとき、ノードが潰れない最小幅で横パン可能に */
@media (max-width:768px){
  .citymap{min-width:760px}
}

/* ============================================================
   2026-06-13 追加: トグル強調 / 指標グループ / 評価ヒートマップ
   （既存スタイルは変更せず追記のみ）
   ============================================================ */

/* トグル（折りたたみ callout）を「開ける」と分かるよう強調 */
details.callout:not([open]) > summary{
  color:var(--accent-ink); background:var(--accent-weak);
  border:1px solid #e0cffa; border-radius:var(--radius-sm);
  padding:8px 12px; transition:background .12s;
}
details.callout:not([open]) > summary:hover{ background:#eaddfb; }
details.callout > summary::after{
  margin-left:8px; font-size:12px; font-weight:600;
}
details.callout:not([open]) > summary::after{ content:"▼ タップで開く"; color:var(--accent-ink); }
details.callout[open] > summary::after{ content:"▲ 閉じる"; color:var(--muted); font-weight:400; }

/* 指標グループの強調ラベル（成長性 / 収益性 等） */
.metric-group{
  display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
  margin:var(--sp-6) 0 var(--sp-3); padding:9px 14px;
  border-radius:10px; border-left:5px solid var(--accent);
  background:linear-gradient(90deg, var(--accent-weak), transparent 80%);
  font-size:18px; font-weight:800; color:var(--accent-ink);
}
.metric-group .mg-sub{ font-size:12.5px; font-weight:600; color:var(--muted); }
.metric-group.is-total{ border-left-color:var(--ok);
  background:linear-gradient(90deg, #e6f6ec, transparent 80%); color:#15703b; }

/* 評価マトリクス ヒートマップ */
.eval-matrix-wrap{ overflow-x:auto; margin:var(--sp-4) 0; -webkit-overflow-scrolling:touch; }
.eval-matrix{ border-collapse:collapse; width:100%; min-width:560px; font-size:14px; }
.eval-matrix th,.eval-matrix td{ border:1px solid var(--border); padding:9px 6px; text-align:center; white-space:nowrap; }
.eval-matrix thead th{ background:var(--chip-bg); color:#fff; font-weight:700; }
.eval-matrix tbody th{ text-align:left; font-weight:700; background:var(--row-alt);
  position:sticky; left:0; z-index:1; }
.eval-matrix td.s5{ background:#1b8a4b; color:#fff; font-weight:700; }
.eval-matrix td.s4{ background:#5cb878; color:#fff; }
.eval-matrix td.s3{ background:#ffd666; color:#5b4a00; }
.eval-matrix td.s2{ background:#ffae5c; color:#5b3000; }
.eval-matrix td.s1{ background:#f08c8c; color:#fff; }
/* 白い星が淡い背景に埋もれないよう、星の外縁を黒くして輪郭を立てる */
.eval-matrix td.s5,.eval-matrix td.s4,.eval-matrix td.s1{
  -webkit-text-stroke:0.6px rgba(0,0,0,.78);
  text-shadow:0 0 1px rgba(0,0,0,.6),0 1px 1px rgba(0,0,0,.35); }
.eval-matrix tr.total-row th,.eval-matrix tr.total-row td{ border-top:2px solid var(--accent-ink); font-weight:800; }
.eval-matrix .em-cap{ font-size:12px; color:var(--muted); margin-top:6px; }

/* 記事内テーブルの1列目（社名等）: 縦伸びを防ぎ小さく折り返す。eval-matrixは除外 */
.report table:not(.eval-matrix) td:first-child,
.report table:not(.eval-matrix) th:first-child{
  white-space:normal; word-break:break-word; line-height:1.3;
}
@media (max-width:560px){
  .report table:not(.eval-matrix) td:first-child,
  .report table:not(.eval-matrix) th:first-child{
    font-size:10.5px; line-height:1.25; min-width:5em; max-width:7em;
    padding-left:6px; padding-right:6px;
  }
  .report table:not(.eval-matrix){ font-size:12px; }
}

/* --- clean-room ホーム: フィード先行 + 3入口縦積み（B3）--- */
.home-feed{margin:0 0 var(--sp-6); padding:var(--sp-4); background:var(--accent-weak);
  border:1px solid var(--border); border-radius:var(--radius-lg)}
.home-sec-head{font-size:19px; margin:0 0 var(--sp-3); padding-bottom:var(--sp-2);
  border-bottom:2px solid var(--border-strong)}
.home-sec-desc{color:var(--muted); font-size:14px; margin:0 0 var(--sp-4)}
.home-sub-head{font-size:15px; color:var(--muted); margin:var(--sp-5) 0 var(--sp-3)}
.home-entrance{margin:var(--sp-6) 0; padding-top:var(--sp-4); border-top:1px solid var(--border)}

.feed-list{list-style:none; margin:0; padding:0; display:grid; gap:var(--sp-2)}
.feed-item a{display:flex; align-items:baseline; gap:var(--sp-3); padding:var(--sp-2) var(--sp-3);
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  text-decoration:none; color:var(--fg); min-height:var(--tap)}
.feed-item a:hover{border-color:var(--accent)}
.feed-tag{flex:0 0 auto; font-size:12px; font-weight:700; padding:2px 8px;
  border-radius:var(--radius-sm); color:#fff; background:var(--chip-bg)}
.feed-tag.tag-quicklook{background:var(--accent-ink)}
.feed-tag.tag-market{background:var(--border-strong)}
.feed-title{flex:1 1 auto; font-size:15px}
.feed-date{flex:0 0 auto; color:var(--faint); font-size:12px}

.stream-card{display:flex; flex-direction:column; gap:4px; padding:var(--sp-3);
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  text-decoration:none; color:var(--fg)}
.stream-card:hover{border-color:var(--accent)}
.sc-cat{font-size:12px; font-weight:700; color:var(--accent-ink)}
.sc-title{font-size:15px; line-height:1.4}
.sc-date{font-size:12px; color:var(--faint)}

.stream-list{list-style:none; margin:0; padding:0; display:grid; gap:var(--sp-1)}
.stream-list li a{display:flex; align-items:baseline; gap:var(--sp-3); justify-content:space-between;
  padding:var(--sp-2) var(--sp-3); border-bottom:1px solid var(--border);
  text-decoration:none; color:var(--fg); min-height:var(--tap)}
.stream-list li a:hover{background:var(--row-alt)}
.sl-title{flex:1 1 auto}
.sl-date{flex:0 0 auto; color:var(--faint); font-size:12px}
.stream-empty{color:var(--muted); font-size:14px; padding:var(--sp-3);
  background:var(--row-alt); border-radius:var(--radius)}

/* 業界ハブの⑤横断掲出（決定8: industry タグ一致の昇格記事カード）*/
.cross-topics{margin:var(--sp-5) 0}
.cross-topics .home-sub-head{margin-top:0}

/* ============================================================
   Publication editorial ホーム（2026-06-17 リデザイン）
   既存トークン(--accent #A855F7 / --fg #0A1829 / --shadow-hard)を活用。
   日本語本文は JP フォント fallback、ラベルのみ --mono の小型大文字。
   ============================================================ */

/* マストヘッド（雑誌の標題） */
.home-masthead{padding:var(--sp-5) 0 var(--sp-4); margin:0 0 var(--sp-5);
  border-bottom:3px solid var(--fg)}
.eyebrow{font-family:var(--mono); text-transform:uppercase; letter-spacing:.18em;
  font-size:12px; font-weight:600; color:var(--accent-ink); margin:0 0 var(--sp-3)}
.home-title{font-size:34px; line-height:1.22; font-weight:800; letter-spacing:-.01em;
  margin:0 0 var(--sp-3); color:var(--fg)}
.home-lede{font-size:16px; color:var(--muted); margin:0; max-width:46em; line-height:1.7}

/* セクション見出しの mono キッカー */
.home-sec-head{display:flex; align-items:baseline; gap:var(--sp-3); font-size:22px}
.sec-kicker{font-family:var(--mono); text-transform:uppercase; letter-spacing:.14em;
  font-size:11px; font-weight:700; color:#fff; background:var(--accent-ink);
  padding:3px 9px; border-radius:var(--radius-sm); flex:0 0 auto; line-height:1.5}

/* 3入口ポータル */
.home-portal{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--sp-4);
  margin:0 0 var(--sp-6)}
.portal-card{display:flex; flex-direction:column; gap:var(--sp-2);
  padding:var(--sp-5) var(--sp-4); background:var(--card); border:2px solid var(--fg);
  border-radius:var(--radius); text-decoration:none; color:var(--fg);
  transition:transform .12s ease, box-shadow .12s ease}
.portal-card:hover,.portal-card:focus-visible{transform:translate(-4px,-4px);
  box-shadow:var(--shadow-hard)}
.pc-eyebrow{font-family:var(--mono); text-transform:uppercase; letter-spacing:.14em;
  font-size:11px; font-weight:700; color:var(--accent-ink)}
.pc-title{font-size:21px; font-weight:800; line-height:1.2; margin:2px 0}
.pc-desc{font-size:14px; color:var(--muted); line-height:1.6; flex:1 1 auto}
.pc-meta{font-size:12px; color:var(--faint); font-weight:600}
.pc-go{font-family:var(--mono); font-size:12px; font-weight:700; color:var(--accent-ink);
  letter-spacing:.04em; margin-top:var(--sp-1)}

/* 今日の新着フィード＝白カード＋紺枠（雑誌の目次調）*/
.home-feed{background:var(--card); border:2px solid var(--fg); border-radius:var(--radius);
  padding:var(--sp-4) var(--sp-4) var(--sp-5)}
.feed-tag{font-family:var(--mono); text-transform:uppercase; letter-spacing:.06em;
  font-size:11px}
.feed-tag.tag-deep{background:var(--accent-ink)}     /* 深堀＝紫（AA 6.6:1）*/
.feed-tag.tag-quicklook{background:var(--muted)}     /* 早見＝グレー（AA 4.9:1）*/
.feed-tag.tag-market{background:var(--fg)}           /* 市場＝紺 */
.feed-item.feed-deep .feed-title{font-weight:700}
.feed-date{font-family:var(--mono)}

/* ③市場エントランスの深堀展開 */
.market-list{display:block}
.market-item{border-bottom:1px solid var(--border)}
.market-item > a{display:flex; align-items:baseline; gap:var(--sp-3);
  justify-content:space-between; padding:var(--sp-2) var(--sp-3);
  text-decoration:none; color:var(--fg); min-height:var(--tap)}
.market-item > a:hover{background:var(--row-alt)}
.market-deep{list-style:none; margin:0 0 var(--sp-3); padding:0 var(--sp-3) 0 var(--sp-4);
  display:grid; gap:var(--sp-1); border-left:3px solid var(--accent)}
.market-deep li a{display:flex; gap:var(--sp-2); align-items:baseline; padding:6px var(--sp-2);
  text-decoration:none; color:var(--fg); border-radius:var(--radius-sm)}
.market-deep li a:hover{background:var(--accent-weak)}
.md-tag{font-family:var(--mono); text-transform:uppercase; letter-spacing:.08em;
  font-size:10px; font-weight:700; color:#fff; background:var(--accent-ink);
  padding:2px 6px; border-radius:var(--radius-sm); flex:0 0 auto}
.md-title{font-size:14px; line-height:1.5}

/* レスポンシブ / モーション */
@media (max-width:720px){
  .home-portal{grid-template-columns:1fr}
  .home-title{font-size:26px}
  .home-sec-head{font-size:19px}
}
@media (prefers-reduced-motion: reduce){
  .portal-card{transition:none}
  .portal-card:hover,.portal-card:focus-visible{transform:none}
}

/* ============================================================
   今日のトピック（ホーム / index.html）
   ============================================================ */
.home-today{
  margin:0 0 var(--sp-6); padding:var(--sp-4) var(--sp-5);
  background:var(--card); border:2px solid var(--fg);
  border-radius:var(--radius); box-shadow:var(--shadow-hard);
}
.home-today .home-sec-head{margin:0 0 var(--sp-4); border-bottom:2px solid var(--fg); padding-bottom:var(--sp-2)}
.today-sub-label{
  font-family:var(--mono); text-transform:uppercase; letter-spacing:.1em;
  font-size:11px; font-weight:700; color:var(--accent-ink);
  margin:0 0 var(--sp-2);
}
.today-date{font-weight:400; letter-spacing:0; font-style:normal; color:var(--muted)}
.today-ql-block{margin:0 0 var(--sp-4)}
.today-ql-list{
  list-style:decimal; padding-left:20px; margin:0;
  display:grid; gap:2px;
}
.today-ql-list li{font-size:14px; line-height:1.55}
.today-ql-list li a{
  color:var(--accent-ink); text-decoration:none;
  display:inline-flex; align-items:center; min-height:var(--tap);
}
.today-ql-list li a:hover{text-decoration:underline}
.today-promoted-block{margin:0 0 var(--sp-3); padding-top:var(--sp-3);
  border-top:1px solid var(--border)}
.today-promoted-list{
  list-style:none; padding:0; margin:0; display:grid; gap:var(--sp-1);
}
.today-promoted-list li a{
  display:flex; align-items:baseline; gap:var(--sp-2);
  padding:var(--sp-2) 0; text-decoration:none; color:var(--fg);
  font-weight:600; font-size:14px; min-height:var(--tap);
  border-bottom:1px solid var(--border);
}
.today-promoted-list li a:hover{color:var(--accent-ink)}
.today-cat{
  flex:0 0 auto; font-size:11px; font-weight:700; color:#fff;
  background:var(--accent-ink); padding:2px 7px; border-radius:var(--radius-sm);
  font-family:var(--mono); letter-spacing:.04em;
}
.today-more{margin:var(--sp-3) 0 0; font-size:13px; font-weight:600}
.today-more a{color:var(--accent-ink); text-decoration:none}
.today-more a:hover{text-decoration:underline}
/* 今日のトピック：きっちり抜粋（深掘り/早見/市場 各1）＋今日のニュース */
.today-picks{list-style:none; padding:0; margin:0 0 var(--sp-4); display:grid; gap:var(--sp-2)}
.today-pick{display:flex; align-items:baseline; gap:var(--sp-2);
  padding:var(--sp-2) 0; border-bottom:1px solid var(--border)}
.today-pick a{text-decoration:none; color:var(--fg); font-weight:600; font-size:15px;
  display:inline-flex; align-items:center; min-height:var(--tap); gap:var(--sp-2)}
.today-pick a:hover{color:var(--accent-ink)}
.tp-label{flex:0 0 auto; align-self:flex-start; font-family:var(--mono);
  font-size:11px; font-weight:700; letter-spacing:.06em; color:#fff;
  background:var(--accent-ink); padding:3px 8px; border-radius:var(--radius-sm);
  min-width:3.4em; text-align:center}
.tp-ql .tp-label{background:var(--accent)}
.tp-market .tp-label{background:var(--fg)}
.today-news{margin:0 0 var(--sp-2); padding-top:var(--sp-3); border-top:1px solid var(--border)}
.today-news-links{list-style:none; padding:0; margin:0; display:grid; gap:2px}
.today-news-links li a{display:inline-flex; align-items:center; gap:var(--sp-2);
  min-height:var(--tap); text-decoration:none; color:var(--accent-ink); font-size:14px; font-weight:600}
.today-news-links li a:hover{text-decoration:underline}

/* ============================================================
   topics.html — 目次ブロック / カテゴリ別昇格 / アーカイブ
   ============================================================ */
.topics-toc-block{
  background:var(--row-alt); border:2px solid var(--fg);
  border-radius:var(--radius); padding:var(--sp-4) var(--sp-5) var(--sp-3);
}
.topics-toc-block .home-sec-head{margin-bottom:var(--sp-3)}
.toc-section{margin:0 0 var(--sp-3)}
.toc-section-label{
  font-family:var(--mono); text-transform:uppercase; letter-spacing:.1em;
  font-size:11px; font-weight:700; color:var(--accent-ink); margin:0 0 var(--sp-2);
}
.toc-list{
  list-style:none; padding:0; margin:0; display:grid; gap:2px;
}
.toc-list li a{
  display:inline-flex; align-items:center; min-height:var(--tap);
  font-size:14px; color:var(--accent-ink); text-decoration:none;
  padding:2px 0;
}
.toc-list li a:hover{text-decoration:underline}
.toc-numbered{list-style:decimal; padding-left:20px}

/* カテゴリ別昇格グループ */
.promoted-cat-group{margin:0 0 var(--sp-5)}
.promoted-cat-head{
  font-size:16px; font-weight:800; color:var(--fg);
  margin:0 0 var(--sp-3); padding:var(--sp-2) var(--sp-3);
  border-left:5px solid var(--accent); background:var(--accent-weak);
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;
}

/* L2セグメント軸サブグループ（T2-4） */
.promoted-seg-group{margin:0 0 var(--sp-4)}
.promoted-seg-head{
  display:flex; align-items:baseline; gap:var(--sp-2);
  font-size:14px; font-weight:700; color:var(--fg);
  margin:0 0 var(--sp-2); padding-bottom:var(--sp-1);
  border-bottom:1px solid var(--border);
}
.seg-count{
  font-family:var(--mono); font-size:11px; font-weight:700;
  color:var(--accent-ink); background:var(--accent-weak);
  padding:1px 7px; border-radius:999px;
}
.sc-cluster{
  font-size:11px; font-weight:600; color:var(--accent-ink);
  font-family:var(--mono); letter-spacing:.02em;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}

/* ホーム新着フィード（直近3日・T2-5） */
.feed-day{margin:0 0 var(--sp-4)}
.feed-day:last-of-type{margin-bottom:var(--sp-2)}
.feed-date{
  font-family:var(--mono); font-size:12px; font-weight:700;
  letter-spacing:.08em; color:var(--fg); margin:0 0 var(--sp-1);
  display:flex; align-items:baseline; gap:var(--sp-2);
}
.feed-date-sub{font-weight:400; color:var(--muted); letter-spacing:.02em}
.feed-day .today-picks{margin-bottom:0}

/* 月別アーカイブリスト */
.archive-month-list{list-style:none; padding:0; margin:0; display:grid; gap:var(--sp-1)}
.archive-month-list li a{
  display:inline-flex; align-items:center; min-height:var(--tap);
  font-size:14px; font-weight:600; color:var(--accent-ink); text-decoration:none;
  padding:var(--sp-2) 0; border-bottom:1px solid var(--border);
}
.archive-month-list li a:hover{text-decoration:underline}

@media (max-width:720px){
  .home-today{padding:var(--sp-3)}
  .topics-toc-block{padding:var(--sp-3)}
}
