/* ============================================================
   業界ナレッジ街マップ — 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}

/* 業界カードの実データ表示（2026-08-16 UI刷新・SVG街マップと2タブトグルは廃止）。
   財務値は全業界一律で出す/出さない（Plan §3-4: 業界ごとのばら非表示は禁止）。 */
.ind-card{align-items:flex-start}
.ind-card .name{display:block}
.ic-stats{display:flex; gap:10px; flex-wrap:wrap; font-size:12px; color:var(--muted);
  margin:2px 0 4px; font-variant-numeric:tabular-nums}
.ic-stats b{color:var(--fg); font-weight:800}
.ic-top{display:block; font-size:11.5px; color:var(--faint); margin:0 0 5px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.ic-top b{color:var(--accent-ink); font-weight:700}
.ic-bar{display:block; height:5px; background:var(--accent-weak); border-radius:3px; overflow:hidden}
.ic-bar > i{display:block; height:100%; background:var(--accent); border-radius:3px}
.ic-rep{display:inline-block; font-size:10.5px; font-weight:800; color:var(--accent-ink);
  background:var(--accent-weak); border:1px solid #e0cffa; padding:0 7px; margin-left:6px;
  vertical-align:2px; white-space:nowrap}
.ind-data-note{color:var(--faint); font-size:12px; line-height:1.7; margin:18px 0 0}

/* ============================================================
   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}
/* 業界ハブの実データ節（plans/adsense/09 S2）。値は大きく、母集団と基準日は小さく。 */
.hub-stats .kind-card{text-align:center}
.hub-stat-value{margin:4px 0 0; font-size:22px; font-weight:800; color:var(--fg);
  line-height:1.25; word-break:break-word}
.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}
/* byline（執筆・レビュー / データ基準日 / 最終確認日・2026-08-16）。
   公開ビルドの記事型ページだけに出る信頼シグナル。地の文と区別できるよう
   小さめ・ミュート色で、区切りは全角縦線ではなく span 側に余白を持たせる。 */
.byline{color:var(--muted); font-size:13px; line-height:1.8; margin:0 0 var(--sp-5)}
.byline .byline-author{font-weight:700}
.byline .byline-sep{padding:0 4px; opacity:.55}
/* メタ情報チップ（業界 / 種別 / 更新日） */
.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 auto; max-width:min(100%,640px)}  /* v2 2026-07-11: 縦長図の巨大化防止・640px上限・中央寄せ */
.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}
}

/* ============================================================
   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)}
}

/* ==========================================================================
   統合ニュース面 news.html（M2・2026-08-08 サイト再編）
   深堀/早見/市場を1面に日付順で並べ、種別タブで絞り込む。
   カードは全件サーバサイド出力で、JS は表示切替のみ（JS 無効でも全件読める）。
   ========================================================================== */

/* --- 役割定義 3カード --- */
.role-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--sp-3); margin:var(--sp-3) 0 0}
.role-card{
  background:var(--card); border:1px solid var(--border); border-left:4px solid var(--accent);
  border-radius:var(--radius); padding:var(--sp-4);
}
.role-card.role-quick{border-left-color:var(--fg)}
.role-card.role-market{border-left-color:#475569}
.role-name{margin:0 0 var(--sp-2); font-weight:800; font-size:15px;
  display:flex; align-items:center; gap:var(--sp-2)}
.role-desc{margin:0; font-size:13px; line-height:1.8; color:var(--muted)}
.role-count{margin:var(--sp-2) 0 0; font-family:var(--mono); font-size:11px; color:var(--faint)}

/* --- 種別タブ --- */
.news-kindbar{
  display:flex; gap:var(--sp-2); flex-wrap:wrap; margin:var(--sp-5) 0 var(--sp-2);
  padding-bottom:var(--sp-2); border-bottom:2px solid var(--border-strong);
}
.nkind{
  display:inline-flex; align-items:center; gap:6px; min-height:var(--tap); padding:0 16px;
  font-family:var(--mono); font-size:13px; font-weight:700; cursor:pointer;
  color:#fff; background:var(--chip-bg); border:1px solid var(--chip-bg); border-radius:var(--radius-sm);
}
.nkind[aria-pressed="true"]{background:var(--chip-active-bg); border-color:var(--chip-active-bg)}
.nkind-n{font-size:11px; opacity:.8}
.news-count{margin:0 0 var(--sp-4); font-family:var(--mono); font-size:11px; color:var(--faint)}
.news-empty{margin:var(--sp-5) 0; color:var(--faint)}

/* --- 日付見出し＋カード --- */
.nday{margin:0 0 var(--sp-5)}
.nday-head{
  display:flex; align-items:baseline; gap:var(--sp-3); margin:0 0 var(--sp-2);
  padding-bottom:6px; font-size:15px; font-weight:800; letter-spacing:.04em;
  border-bottom:2px solid var(--accent);
}
.nday-count{font-family:var(--mono); font-size:11px; font-weight:600; color:var(--faint)}
.ncard-list{list-style:none; margin:0; padding:0}
.ncard{border-bottom:1px dotted var(--border-cell)}
.ncard-link{display:block; padding:var(--sp-3) var(--sp-2); text-decoration:none; color:inherit}
.ncard-link:hover{background:var(--row-alt)}
.ncard-meta{display:flex; align-items:center; gap:var(--sp-2); flex-wrap:wrap; margin-bottom:4px}
.ncard-time{font-family:var(--mono); font-size:11px; font-weight:700; color:var(--faint)}
.ncard-kind{
  font-family:var(--mono); font-size:11px; font-weight:700; color:#fff;
  background:var(--accent-ink); padding:1px 8px; border-radius:var(--radius-sm);
}
.ncard-kind.nk-quicklook{background:var(--fg)}
.ncard-kind.nk-market{background:#475569}
.ncard-cat{
  font-size:11px; font-weight:700; color:var(--accent-ink);
  background:var(--accent-weak); border:1px solid #e0cffa; padding:0 7px; border-radius:var(--radius-sm);
}
.ncard-title{display:block; font-size:15.5px; font-weight:800; line-height:1.6}
.ncard-link:hover .ncard-title{color:var(--accent-ink)}
.ncard-lead{
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  margin-top:3px; font-size:12.5px; line-height:1.8; color:var(--muted);
}
.news-legacy{margin:var(--sp-6) 0 0; font-size:12px; color:var(--faint)}
.news-legacy a{color:var(--accent-ink)}

@media (max-width:720px){
  .role-grid{grid-template-columns:1fr; gap:var(--sp-2)}
  .news-kindbar{gap:6px}
  .nkind{padding:0 12px; font-size:12px}
  .ncard-title{font-size:14.5px}
}

/* 残置ページ（topics.html / market.html）の統合案内（M2・301 はしない＝旧 URL は無傷） */
.page-merged-note{
  margin:var(--sp-3) 0 0; padding:var(--sp-2) var(--sp-3); font-size:13px;
  background:var(--accent-weak); border-left:4px solid var(--accent); border-radius:var(--radius-sm);
}
.page-merged-note a{color:var(--accent-ink); font-weight:700}

/* ==========================================================================
   グローバルナビ 5タブ（M3・2026-08-08 サイト再編）
   topbar 内の独立要素。1行目 = ロゴ／パンくず／検索、2行目 = タブ（横スクロール可）。
   既存 .mobile-nav（下部クイック操作: 検索/目次/一覧/上へ）とは役割が重複しない。
   ========================================================================== */
.topbar{flex-wrap:wrap; row-gap:0}
.topbar-home{order:1}
.crumbs{order:2}
.search-toggle{order:2; margin-left:auto}
.global-nav{
  order:3; flex:1 1 100%; display:flex; gap:2px; min-width:0;
  overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none;
  border-top:1px solid rgba(255,255,255,.12);
}
.global-nav::-webkit-scrollbar{display:none}
.global-nav a{
  display:inline-flex; align-items:center; white-space:nowrap; text-decoration:none;
  color:#c8d0db; font-size:13px; font-weight:700; padding:0 12px; min-height:var(--tap);
  border-bottom:3px solid transparent; margin-bottom:-3px;
}
.global-nav a:hover{color:#fff}
.global-nav a.cur{color:#fff; border-bottom-color:var(--accent)}
@media (max-width:720px){
  .crumbs{display:none}            /* 狭幅ではタブを優先（パンくずは本文側の導線で代替） */
  .global-nav a{font-size:12px; padding:0 10px}
}

/* ==========================================================================
   企業バリュエーション分析 reports.html（M3・銘柄レポート横断一覧）
   ========================================================================== */
.content-wide{max-width:1100px}      /* stocks.html のダッシュボード用に本文幅を広げる */
.rep-intro{margin:var(--sp-4) 0 0; font-size:13.5px; color:var(--muted)}
.rep-intro a{color:var(--accent-ink); font-weight:700}
.rep-ctrl{display:flex; flex-wrap:wrap; gap:var(--sp-3); align-items:center;
  margin:var(--sp-4) 0 var(--sp-5); padding-bottom:var(--sp-2);
  border-bottom:2px solid var(--border-strong)}
.rep-ctrl input[type=search]{flex:1 1 240px; min-width:0; min-height:var(--tap);
  padding:8px 14px; font-size:14px; border:2px solid var(--border-strong);
  border-radius:var(--radius-sm); background:var(--card)}
.rep-count{margin:0; font-family:var(--mono); font-size:11px; color:var(--faint)}
.rep-empty{margin:var(--sp-5) 0; color:var(--faint)}
.rep-group{margin:0 0 var(--sp-5)}
.rep-group-head{display:flex; align-items:baseline; flex-wrap:wrap; gap:var(--sp-2);
  margin:0 0 var(--sp-2); padding-bottom:6px; font-size:15px; font-weight:800;
  border-bottom:2px solid var(--accent)}
.rep-group-head a{color:inherit; text-decoration:none}
.rep-group-head a:hover{color:var(--accent-ink)}
.rep-sector{font-size:11px; font-weight:600; color:var(--accent-ink);
  background:var(--accent-weak); border:1px solid #e0cffa; padding:0 7px; border-radius:var(--radius-sm)}
.rep-n{font-family:var(--mono); font-size:11px; font-weight:600; color:var(--faint); margin-left:auto}
.rep-list{list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:var(--sp-2)}
.rep-card a{display:flex; flex-direction:column; gap:2px; min-height:var(--tap);
  padding:10px 12px; text-decoration:none; color:inherit;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius)}
.rep-card a:hover{border-color:var(--accent); background:var(--row-alt)}
.rc-name{font-size:14px; font-weight:700; line-height:1.5}
.rc-meta{font-family:var(--mono); font-size:11px; color:var(--faint)}

/* ==========================================================================
   マガジン（特集号・M4・2026-08-08）
   一覧棚 magazine/index.html ／ 号トップ ／ 章ページ
   ========================================================================== */
.mag-grid{list-style:none; margin:var(--sp-3) 0 0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:var(--sp-4)}
.mag-card a{display:flex; gap:var(--sp-3); text-decoration:none; color:inherit;
  background:var(--card); border:2px solid var(--border-strong); border-radius:var(--radius);
  padding:var(--sp-3); box-shadow:var(--shadow); transition:transform .12s, box-shadow .12s}
.mag-card a:hover{transform:translate(-2px,-2px); box-shadow:var(--shadow-hard)}
.mag-cover{flex:0 0 88px; display:flex; align-items:center; justify-content:center;
  min-height:118px; background:var(--accent-weak); border:1px solid var(--border); overflow:hidden}
.mag-cover img{width:100%; height:100%; object-fit:cover}
.mag-cover-ph{font-family:var(--mono); font-size:12px; font-weight:700; color:var(--accent-ink);
  text-align:center; line-height:1.5}
.mag-body{display:flex; flex-direction:column; gap:4px; min-width:0}
.mag-no{font-family:var(--mono); font-size:11px; font-weight:700; color:var(--accent-ink);
  display:flex; gap:var(--sp-2); align-items:baseline}
.mag-date{color:var(--faint); font-weight:500}
.mag-title{font-size:15px; font-weight:800; line-height:1.55}
.mag-chapters{font-size:11.5px; color:var(--muted); line-height:1.7}
.mag-theme-list{list-style:none; margin:var(--sp-3) 0 0; padding:0; display:grid; gap:var(--sp-1)}
.mag-theme-list a{display:flex; flex-wrap:wrap; gap:var(--sp-2); align-items:baseline;
  min-height:var(--tap); padding:var(--sp-2) 0; text-decoration:none; color:inherit;
  border-bottom:1px solid var(--border)}
.mag-theme-list a:hover .mt-title{color:var(--accent-ink)}
.mt-title{font-size:14px; font-weight:700}
.mt-ind{font-size:11px; color:var(--faint); font-family:var(--mono)}

/* 号トップ・章 */
.mag-hero{padding:0 0 var(--sp-3); border-bottom:3px solid var(--border-strong); margin-bottom:var(--sp-4)}
.mag-hero-cover{display:flex; gap:var(--sp-4); align-items:flex-end}
.mag-hero-img{flex:0 0 180px; width:180px; height:240px; object-fit:cover;
  border:2px solid var(--border-strong); box-shadow:var(--shadow-hard)}
.mag-hero-text{min-width:0}
.mag-toc-front{margin:var(--sp-3) 0 0; border-top:1px dotted var(--border-cell); padding-top:var(--sp-2)}
.mag-toc-front summary{cursor:pointer; font-family:var(--mono); font-size:11px; font-weight:700;
  color:var(--accent-ink); min-height:32px; display:flex; align-items:center}
.mag-toc-front ol{margin:var(--sp-2) 0 0; padding-left:1.4em; display:grid; gap:2px; font-size:13px}
.mag-toc-front a{color:inherit; text-decoration:none}
.mag-toc-front a:hover{color:var(--accent-ink); text-decoration:underline}
.mag-hero-no{margin:0 0 4px; font-family:var(--mono); font-size:12px; font-weight:700;
  color:var(--accent-ink); display:flex; gap:var(--sp-2); align-items:baseline}
.mag-hero-no a{color:inherit}
.mag-ch-no{display:inline-block; margin-right:var(--sp-2); font-family:var(--mono);
  font-size:.62em; color:var(--accent-ink)}
.mag-toc{background:var(--card); border:1px solid var(--border); border-left:4px solid var(--accent);
  border-radius:var(--radius); padding:var(--sp-3) var(--sp-4); margin:0 0 var(--sp-5)}
.mag-toc-label{margin:0 0 var(--sp-2); font-family:var(--mono); font-size:11px;
  font-weight:700; color:var(--accent-ink)}
.mag-toc-list{margin:0; padding-left:1.2em; display:grid; gap:var(--sp-1)}
.mag-toc-list a{display:inline-flex; align-items:center; min-height:32px; font-weight:700;
  color:inherit; text-decoration:none}
.mag-toc-list a:hover{color:var(--accent-ink); text-decoration:underline}
.mtc-no{font-family:var(--mono); font-size:11px; color:var(--accent-ink); margin-right:var(--sp-2)}
.mag-chapter-rail{display:flex; flex-wrap:wrap; gap:var(--sp-2); margin:0 0 var(--sp-4);
  padding-bottom:var(--sp-2); border-bottom:1px solid var(--border);
  font-size:12px; font-family:var(--mono)}
.mag-chapter-rail a{color:var(--accent-ink); text-decoration:none;
  display:inline-flex; align-items:center; min-height:32px}
.mag-chapter-rail a:hover{text-decoration:underline}
.mcr-cur{color:var(--fg); font-weight:700; display:inline-flex; align-items:center; min-height:32px}
.mag-nav-foot{display:flex; flex-wrap:wrap; gap:var(--sp-3); align-items:center}
.mag-nav-foot p{margin:0}
@media (max-width:720px){
  .mag-grid{grid-template-columns:1fr}
  .mag-cover{flex-basis:64px; min-height:86px}
  .mag-hero-cover{gap:var(--sp-3)}
  .mag-hero-img{flex-basis:96px; width:96px; height:128px}
}

/* ==========================================================================
   トップ＝新聞一面型ブロードシート（2026-08-16 UI刷新・統合仕様 A）
   maxw 1080px / 日付バー＋マストヘッド → 前日指数ストリップ → 一面3カラム
   → DATA入口ストリップ → 01/02/03 大番号入口カード → 二重罫フッター
   Webフォントは追加しない（--mono の既存スタックで描画する）
   ========================================================================== */
.content.home-front{max-width:1080px}
main.home-front + .foot{border-top:3px double var(--fg)}

.masthead-block{text-align:center; padding-bottom:22px; border-bottom:3px solid var(--fg)}
.datebar{display:flex; justify-content:space-between; gap:8px; font-family:var(--mono);
  font-size:11px; font-weight:600; color:var(--muted); letter-spacing:.08em;
  border-bottom:2px solid var(--accent); padding-bottom:10px; margin-bottom:20px}
.datebar-domain{color:var(--accent-ink)}
.masthead-title{font-size:50px; font-weight:900; letter-spacing:.1em; margin:0 0 10px; line-height:1.15}
.masthead-lede{font-size:13.5px; color:var(--muted); margin:0; letter-spacing:.04em}

/* 前日指数ストリップ（市場ニュース Snapshot 由来・fail-soft） */
.tickerbar{display:flex; flex-wrap:wrap; gap:4px 18px; justify-content:center; align-items:baseline;
  font-family:var(--mono); font-size:11.5px; font-weight:600; color:var(--muted);
  padding:7px 0; border-bottom:1px solid var(--border-cell); margin:0 0 14px}
.tickerbar .tk b{color:var(--fg); font-weight:700; margin-right:4px}
.tickerbar .tk i{font-style:normal; font-size:10.5px}
.tickerbar .tk i.up{color:var(--ok)}
.tickerbar .tk i.dn{color:var(--danger)}
.tickerbar .tk-asof{color:var(--faint); font-size:10px; letter-spacing:.06em}

/* 一面3カラム */
.front{display:grid; grid-template-columns:1.55fr .95fr .85fr; border-bottom:1px solid var(--fg)}
.front-lead{padding:24px 28px 28px 0; border-right:1px solid var(--border-cell); min-width:0}
.front-side{padding:24px; border-right:1px solid var(--border-cell); min-width:0}
.front-board{padding:24px 0 28px 24px; min-width:0}
.front-eyebrow{font-family:var(--mono); text-transform:uppercase; font-size:11px; font-weight:700;
  letter-spacing:.2em; color:var(--accent-ink); margin:0 0 14px}
.front-tagline{margin:0 0 10px}
.tag{font-family:var(--mono); font-size:11px; font-weight:700; color:#fff;
  background:var(--accent-ink); padding:3px 9px; display:inline-block}
.tag-outline{color:var(--accent-ink); background:var(--accent-weak); border:1px solid #e0cffa; padding:2px 8px}
.lead-title{font-size:27px; font-weight:900; line-height:1.5; margin:0 0 12px; letter-spacing:-.005em}
.lead-dek{font-size:14px; color:var(--muted); margin:0 0 20px; line-height:1.9}
.front-second{border-top:1px solid var(--border-cell); padding-top:16px}
.sub-title{font-size:18px; font-weight:800; line-height:1.6; margin:0 0 8px}
.sub-dek{font-size:13px; color:var(--muted); margin:0; line-height:1.8}
.front-lead a{text-decoration:none; color:inherit}
.front-lead a:hover{color:var(--accent-ink)}
.front-thumb{display:block; margin:0 0 12px}
.front-thumb img{width:240px; max-width:100%; height:auto; border:1px solid var(--border-cell); display:block}
.front-empty{color:var(--faint); font-size:13px; margin:0}
.front-label{font-family:var(--mono); text-transform:uppercase; font-size:11px; font-weight:700;
  letter-spacing:.14em; color:#fff; background:var(--accent-ink); display:inline-block;
  padding:4px 10px; margin:0 0 12px}
.newslist{display:grid}
.newslist a{display:block; padding:10px 0; border-bottom:1px dotted var(--border-cell);
  font-size:13px; font-weight:700; text-decoration:none; color:var(--fg);
  transition:background .12s, color .12s}
.newslist a:hover{color:var(--accent-ink); background:var(--row-alt)}
.newslist-row{display:flex; justify-content:space-between; gap:8px}
.newslist-title{min-width:0}
.newslist-count{color:var(--faint); font-family:var(--mono); font-size:11px; flex:0 0 auto}
.newslist-sub{display:block; font-size:11.5px; font-weight:500; color:var(--muted);
  line-height:1.6; margin-top:2px}
.newslist-note{color:var(--faint); font-size:11px; margin:8px 0 0}
.front-more{margin:14px 0 0; font-size:12px; font-weight:700}
.front-more a{color:var(--accent-ink); font-family:var(--mono); text-decoration:none}
.front-more a:hover{text-decoration:underline}

/* DATA BOARD（右レール） */
.board-sec{margin:0 0 16px}
.board-h{font-family:var(--mono); text-transform:uppercase; font-size:10.5px; font-weight:700;
  letter-spacing:.16em; color:var(--accent-ink); margin:0 0 8px;
  border-bottom:2px solid var(--accent); padding-bottom:4px}
.board-row{display:flex; justify-content:space-between; gap:8px; padding:6px 0;
  border-bottom:1px dotted var(--border-cell); font-size:12.5px; font-weight:600}
.board-row .code{font-family:var(--mono); font-size:10.5px; color:var(--faint); margin-right:6px}
.board-row .v{font-family:var(--mono); font-size:11.5px; color:var(--muted); flex:0 0 auto}
.board-note{font-size:10.5px; color:var(--faint); margin:6px 0 0; font-family:var(--mono); line-height:1.6}
.board-cta{display:block; margin:14px 0 0; padding:10px 12px; background:var(--accent-ink);
  color:#fff; font-family:var(--mono); font-size:12px; font-weight:700; text-align:center;
  text-decoration:none; transition:background .12s}
.board-cta:hover{background:var(--fg)}

/* 銘柄データ入口ストリップ（一面の下） */
.data-strip{display:flex; align-items:center; gap:16px; margin:26px 0 0; padding:18px 22px;
  background:var(--fg); color:#fff; border:2px solid var(--fg); box-shadow:6px 6px 0 var(--accent);
  text-decoration:none; transition:transform .12s, box-shadow .12s}
.ds-kicker{font-family:var(--mono); font-size:22px; font-weight:700; color:var(--accent);
  letter-spacing:.08em; line-height:1}
.ds-body{flex:1; min-width:0}
.ds-body b{display:block; font-size:18px; font-weight:900; line-height:1.4}
.ds-sub{font-size:12.5px; color:#c8d0db; line-height:1.6}
.ds-kpis{font-family:var(--mono); font-size:12px; color:#c8d0db; white-space:nowrap}
.ds-kpis b{color:#dac8f6; font-size:16px}
.ds-cta{font-family:var(--mono); font-size:12px; font-weight:700; color:#dac8f6; white-space:nowrap}

/* 01/02/03 大番号入口カード（角丸ゼロ・紫ハードシャドウ） */
.portals{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; padding-top:26px}
.portal{display:flex; flex-direction:column; gap:8px; padding:26px 22px; background:var(--card);
  border:2px solid var(--fg); box-shadow:6px 6px 0 var(--accent); text-decoration:none;
  color:var(--fg); transition:transform .12s, box-shadow .12s}
.portal-num{font-family:var(--mono); font-size:32px; font-weight:700; color:var(--accent); line-height:1}
.portal-body{display:flex; flex-direction:column; gap:8px; flex:1}
.portal-kicker{font-family:var(--mono); text-transform:uppercase; letter-spacing:.14em;
  font-size:11px; font-weight:700; color:var(--accent-ink)}
.portal-title{font-size:21px; font-weight:900; line-height:1.25}
.portal-desc{font-size:13px; color:var(--muted); line-height:1.6; flex:1}
.portal-meta{font-size:12px; color:var(--faint); font-weight:600}
.portal-cta{font-family:var(--mono); font-size:12px; font-weight:700; color:var(--accent-ink)}
@media (hover:hover){
  .portal:hover,.data-strip:hover{transform:translate(-2px,-2px); box-shadow:8px 8px 0 var(--accent)}
}
@media (prefers-reduced-motion: reduce){
  .portal,.data-strip{transition:none}
  .portal:hover,.data-strip:hover{transform:none}
}
@media (max-width:720px){
  .datebar{font-size:9.5px; letter-spacing:.04em; padding-bottom:8px; margin-bottom:14px}
  .datebar-updated{display:none}
  .masthead-block{padding-bottom:16px}
  .masthead-title{font-size:30px; margin-bottom:6px}
  .masthead-lede{font-size:11.5px}
  .tickerbar{flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch;
    justify-content:flex-start; scrollbar-width:none}
  .tickerbar::-webkit-scrollbar{display:none}
  .tickerbar .tk{white-space:nowrap}
  .front{grid-template-columns:1fr}
  .front-lead{padding:18px 0 20px; border-right:0; border-bottom:1px solid var(--fg)}
  .front-side{padding:16px 0 18px; border-right:0; border-bottom:1px solid var(--fg)}
  .front-board{padding:16px 0 18px}
  .lead-title{font-size:19px; line-height:1.55}
  .lead-dek{font-size:12.5px; margin-bottom:14px}
  .sub-title{font-size:14.5px}
  .front-thumb img{width:100%}
  .data-strip{flex-wrap:wrap; gap:8px 14px; padding:14px 16px; box-shadow:4px 4px 0 var(--accent)}
  .ds-kpis{display:none}
  .portals{grid-template-columns:1fr; gap:14px; padding-top:20px}
  .portal{flex-direction:row; align-items:baseline; gap:14px; padding:16px 18px;
    box-shadow:4px 4px 0 var(--accent)}
  .portal-num{font-size:24px; flex:0 0 auto}
  .portal-kicker{display:none}
  .portal-title{font-size:16px}
  .portal-desc{font-size:11.5px}
}

/* ==========================================================================
   記事ページ 3カラム（2026-08-16 UI刷新・統合仕様 C・v7.1）
   1280px+ = 左目次230 + 本文760 + 右相場250 / 1100〜1279px = 左目次+本文
   〜1099px = 従来（冒頭折りたたみ目次・相場なし）＝モバイル完全無変化
   レールへの移動は site.js（matchMedia ガード）が行う。
   ========================================================================== */
.mkt-rail{display:none}
@media (min-width:1100px){
  /* スクロール余白は3カラム化する幅でだけ効かせる（〜1099px は従来どおり無変化） */
  article.report h2[id], article.report h3[id]{scroll-margin-top:76px}
  main.content.has-toc-rail{display:grid; grid-template-columns:230px minmax(0,1fr);
    gap:34px; align-items:start; justify-content:center; max-width:1140px}
  main.content.has-toc-rail > article.report{grid-column:2; grid-row:1; min-width:0}
  .toc-rail{grid-column:1; grid-row:1; position:sticky; top:72px;
    max-height:calc(100vh - 96px); overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin}
  /* 左目次: 薄字リスト（現在節のみ紫太字＋紫バー） */
  .toc-rail details.report-toc, .toc-rail nav.ql-overview{margin:0; border:0; background:transparent;
    padding:0; box-shadow:none}
  .toc-rail .report-toc summary, .toc-rail .ql-overview-label{pointer-events:none; list-style:none;
    color:#8a94a3; font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
    margin:0 0 8px; display:block; min-height:0}
  .toc-rail .report-toc summary::-webkit-details-marker{display:none}
  .toc-rail ol{list-style:none; padding-left:0; margin:0; border-left:2px solid #eceaf2; display:block}
  .toc-rail li{list-style:none; margin:0}
  .toc-rail li a{display:block; color:#98a0ad; font-size:12px; line-height:1.5; font-weight:500;
    text-decoration:none; padding:3px 0 3px 12px; border-left:2px solid transparent;
    margin-left:-2px; min-height:0}
  .toc-rail li.lvl3 a{padding-left:24px; font-size:11.5px}
  .toc-rail li a:hover{color:var(--fg)}
  .toc-rail li.on > a{color:var(--accent-ink); font-weight:800; border-left-color:var(--accent)}
}
@media (min-width:1280px){
  main.content.has-toc-rail{grid-template-columns:230px minmax(0,760px) 250px; max-width:1330px}
  .mkt-rail{display:block; grid-column:3; grid-row:1; position:sticky; top:72px}
  .mp{background:var(--card); border:1px solid var(--border); border-top:3px solid var(--fg)}
  .mp-head{display:flex; justify-content:space-between; align-items:center; padding:8px 12px;
    border-bottom:1px solid #eceaf2}
  .mp-title{background:var(--fg); color:#fff; font-size:11.5px; font-weight:800; padding:2px 10px;
    letter-spacing:.1em}
  .mp-note{color:#8a94a3; font-size:10px}
  .mp-row{padding:9px 12px 10px; border-bottom:1px dotted var(--border)}
  .mp-row:last-of-type{border-bottom:0}
  .mp-l{display:flex; justify-content:space-between; align-items:baseline; gap:6px;
    font-size:11.5px; font-weight:700; color:var(--muted)}
  .mp-chg{font-family:var(--mono); font-size:10px; font-weight:700; white-space:nowrap}
  .mp-chg.up{color:var(--ok)}
  .mp-chg.dn{color:var(--danger)}
  .mp-v{display:block; font-size:19px; font-weight:800; color:var(--fg);
    font-variant-numeric:tabular-nums; line-height:1.35}
  .mp-asof{margin:0; padding:7px 12px; color:#8a94a3; font-size:10px; border-top:1px solid #eceaf2}
}
