  
  :root {
    --accent: #3E4F63;
    --accent-soft: #7A8A9C;
    --font-display: "Hiragino Mincho ProN", "YuMincho", "Yu Mincho", "Noto Serif JP", serif;
    --font-body: "Hiragino Kaku Gothic ProN", "Yu Gothic", "Noto Sans JP", system-ui, sans-serif;
    --font-mono: ui-monospace, "SF Mono", "Menlo", "Consolas", monospace;

    /* メディアUIの土台色（テーマの紙色ではなく、清潔な白/薄グレーで王道の見た目に） */
    --bg: #f3f4f6;
    --card: #ffffff;
    --ink: #191b20;
    --ink-soft: #5b6472;
    --ink-faint: #6b7280;   /* 旧#949aa6はコントラスト不足(WCAG不合格)。日付/メタ/開示を読める濃さへ */
    --line: #e7e9ee;
    --radius: 12px;
    --shadow: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.10);
    --shadow-lg: 0 8px 24px rgba(16,24,40,.12);

    /* デザインシステム（docs/MATOME_DESIGN_SYSTEM.md）: モジュラー型スケール 16×1.25ⁿ */
    --fs-xs: 12px; --fs-sm: 13px; --fs-base: 14px; --fs-md: 16px;
    --fs-lg: 20px; --fs-xl: 25px; --fs-2xl: 31px;
    /* 8ptグリッド余白 */
    --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px;
    --sp-5: 24px; --sp-6: 32px; --sp-7: 48px; --sp-8: 64px;
    --leading-body: 1.8;   /* 本文行間 */
    --measure: 38em;       /* 本文行長（45〜75字） */

    /* read モード（記事＝読むページ）のトークン。config/site_themes.yaml の reading 由来
       （docs/ARTICLE_UNIT_QUESTION_DRIVEN §4。browse とモードを分ける）。 */
    --read-fs: 17px;
    --read-leading: 1.85;
    --read-measure: 36em;
  }

  * { box-sizing: border-box; }
  body {
    margin: 0; background: var(--bg); color: var(--ink);
    font-family: var(--font-body);
    -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
    line-height: 1.6;
  }
  a { color: inherit; text-decoration: none; }
  a:focus-visible, button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
  img { max-width: 100%; }

  /* ===== ヘッダー ===== */
  header.masthead {
    background: var(--card); border-bottom: 1px solid var(--line);
    position: sticky; top: 0; z-index: 20;
  }
  header.masthead::before { content: ""; display: block; height: 4px; background: var(--accent); }
  .masthead-inner {
    max-width: 1080px; margin: 0 auto; padding: 16px 24px;
    display: flex; flex-direction: column; gap: 4px;
  }
  /* ヘッダー上段: ワードマーク（左）＋検索（右）を横並びに（検索をヘッダーへ） */
  .masthead-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
  .masthead .site-search { position: relative; margin: 0; flex: 0 1 300px; min-width: 160px; }
  .masthead .site-search input[type="search"] {
    width: 100%; padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px;
    background: var(--bg); color: var(--ink); font-size: 14px;
  }
  .masthead .site-search input[type="search"]:focus { outline: none; border-color: var(--accent); }
  .wordmark-row { display: flex; align-items: center; gap: 12px; }
  .wordmark {
    font-family: var(--font-display); font-size: 26px; line-height: 1.1;
    margin: 0; font-weight: 700; letter-spacing: -.01em; color: var(--ink);
  }
  .wordmark-link { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; }
  /* Prism ロゴマーク（プリズム分光）。線は currentColor＝テーマ追従、分光色は固定 */
  .brand-mark { width: 34px; height: 30px; flex-shrink: 0; color: var(--ink); }
  /* ロゴガイドラインのショーケース */
  .logo-showcase {
    display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-6) var(--sp-5);
    background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
    margin-bottom: var(--sp-5);
  }
  .brand-mark.logo-lg { width: 92px; height: 80px; }
  .logo-lg-text { font-size: 40px; }
  /* 静的ページの表（特定商取引法など） */
  main .body table { width: 100%; border-collapse: collapse; margin: var(--sp-3) 0; font-size: var(--fs-sm); }
  main .body th, main .body td { border: 1px solid var(--line); padding: var(--sp-2) var(--sp-3); text-align: left; vertical-align: top; }
  main .body th { background: var(--bg); white-space: nowrap; width: 12em; color: var(--ink-soft); }
  .masthead .tagline {
    font-size: 13px; line-height: 1.6; color: var(--ink-soft); margin: 0; max-width: 60em;
  }
  .motif { flex-shrink: 0; margin-left: 4px; }
  .footer-motif { opacity: .7; margin-bottom: 4px; }

  /* ===== レイアウト ===== */
  .page { max-width: 1080px; margin: 0 auto; padding: 0 24px; }
  main { padding: 24px 0 64px; }
  .site-search { margin: 22px 0 24px; }

  /* ===== カテゴリのクイックナビ（色分けチップ） ===== */
  .cat-nav { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 24px; }
  .cat-chip {
    font-size: 12.5px; font-weight: 600; padding: 6px 13px; border-radius: 999px;
    color: var(--cat, var(--accent)); background: color-mix(in srgb, var(--cat, var(--accent)) 12%, #fff);
    border: 1px solid color-mix(in srgb, var(--cat, var(--accent)) 24%, #fff);
    white-space: nowrap;
  }
  .cat-chip:hover { background: color-mix(in srgb, var(--cat, var(--accent)) 20%, #fff); }

  /* ===== トップページ: 注目（lead） ===== */
  .lead { margin: 0 0 var(--sp-5); }
  .lead-card {
    display: grid; grid-template-columns: 1fr; background: var(--card);
    border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow);
    overflow: hidden; transition: box-shadow .16s ease, transform .16s ease;
  }
  .lead-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
  @media (min-width: 720px) { .lead-card { grid-template-columns: 44% 1fr; } }
  .lead-thumb {
    display: block; aspect-ratio: 16 / 9; overflow: hidden;
    background: linear-gradient(135deg, color-mix(in srgb, var(--cat) 90%, #000) 0%,
                var(--cat) 55%, color-mix(in srgb, var(--cat) 70%, #fff) 100%);
  }
  .lead-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .lead-body { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-5); }
  .lead-badge {
    align-self: flex-start; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .08em;
    color: #fff; background: var(--ink); padding: 2px 10px; border-radius: 4px;
  }
  .lead-title {
    font-family: var(--font-display); font-size: var(--fs-xl); line-height: 1.4; font-weight: 700;
    color: var(--ink);
  }
  .lead-card:hover .lead-title { color: var(--accent); }
  .lead-dek {
    font-size: var(--fs-base); line-height: 1.7; color: var(--ink-soft);
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  }

  /* ===== トップページ: 話題別ブロック（密度の主役） ===== */
  .topic-grid {
    display: grid; gap: var(--sp-4); margin-bottom: var(--sp-5);
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  }
  .topic-block {
    background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
    padding: var(--sp-4); display: flex; flex-direction: column;
  }
  .topic-head {
    display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2);
    margin: 0 0 var(--sp-3); font-size: var(--fs-md); font-weight: 700;
    border-left: 4px solid var(--cat, var(--accent)); padding-left: var(--sp-3);
  }
  .topic-head a { color: var(--ink); }
  .topic-head a:hover { color: var(--accent); }
  .topic-count { font-size: var(--fs-xs); color: var(--ink-faint); font-weight: 600; }
  .mini-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-3); }
  .mini-list > li > a { display: flex; gap: var(--sp-3); align-items: flex-start; }
  .mini-thumb {
    flex: none; width: 64px; height: 48px; border-radius: 6px; overflow: hidden;
    background: linear-gradient(135deg, var(--cat) 0%, color-mix(in srgb, var(--cat) 70%, #fff) 100%);
  }
  .mini-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .mini-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .mini-title {
    font-size: var(--fs-sm); font-weight: 600; line-height: 1.5; color: var(--ink);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  .mini-list > li > a:hover .mini-title { color: var(--accent); }
  .mini-meta { font-size: var(--fs-xs); color: var(--ink-faint); }
  .topic-more {
    margin-top: var(--sp-3); font-size: var(--fs-xs); font-weight: 700; color: var(--accent);
  }

  /* ===== トップページ: 新着 / 出典が多い記事 ===== */
  .home-section {
    background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
    padding: var(--sp-4) var(--sp-5); margin-bottom: var(--sp-5);
  }
  .home-head {
    margin: 0 0 var(--sp-3); font-size: var(--fs-md); font-weight: 700; color: var(--ink);
    display: flex; align-items: baseline; gap: var(--sp-2); flex-wrap: wrap;
  }
  .home-note { font-size: var(--fs-xs); color: var(--ink-faint); font-weight: 400; }
  .latest-list { list-style: none; margin: 0; padding: 0; }
  .latest-list > li { border-bottom: 1px solid var(--line); }
  .latest-list > li:last-child { border-bottom: none; }
  .latest-list > li > a {
    display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0;
  }
  .latest-cat {
    flex: none; font-size: var(--fs-xs); font-weight: 700; color: #fff;
    background: var(--cat, var(--accent)); padding: 1px 8px; border-radius: 4px;
  }
  .latest-title {
    flex: 1; font-size: var(--fs-sm); color: var(--ink); overflow: hidden;
    text-overflow: ellipsis; white-space: nowrap;
  }
  .latest-list > li > a:hover .latest-title { color: var(--accent); }
  .latest-date { flex: none; font-size: var(--fs-xs); color: var(--ink-faint); }
  .sourced-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2); }
  .sourced-list > li > a { display: flex; align-items: center; gap: var(--sp-3); }
  .sourced-count {
    flex: none; width: 30px; height: 30px; border-radius: 50%; display: flex;
    align-items: center; justify-content: center; font-size: var(--fs-xs); font-weight: 700;
    color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, #fff);
    border: 1px solid color-mix(in srgb, var(--accent) 26%, #fff);
  }
  .sourced-title { font-size: var(--fs-sm); color: var(--ink); }
  .sourced-list > li > a:hover .sourced-title { color: var(--accent); }

  /* ===== カードグリッド ===== */
  .card-grid {
    list-style: none; margin: 0; padding: 0;
    display: grid; gap: 20px;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  }
  .card {
    background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
    box-shadow: var(--shadow); overflow: hidden;
    transition: transform .16s ease, box-shadow .16s ease;
  }
  .card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); }
  .card-link { display: flex; flex-direction: column; height: 100%; }

  .card-thumb {
    position: relative; aspect-ratio: 16 / 9; overflow: hidden;
    background:
      linear-gradient(135deg,
        color-mix(in srgb, var(--cat) 90%, #000) 0%,
        var(--cat) 55%,
        color-mix(in srgb, var(--cat) 70%, #fff) 100%);
    display: flex; align-items: center; justify-content: center;
  }
  .card-thumb-img { width: 100%; height: 100%; object-fit: cover; }
  .card-thumb-ph {
    color: #fff; font-weight: 700; font-size: 20px; letter-spacing: .02em;
    padding: 0 16px; text-align: center; text-shadow: 0 1px 3px rgba(0,0,0,.22);
    opacity: .96;
  }
  .card-thumb::after {   /* 右下の淡い装飾（のっぺり回避） */
    content: ""; position: absolute; right: -30px; bottom: -30px; width: 96px; height: 96px;
    border-radius: 50%; background: rgba(255,255,255,.12);
  }

  .card-body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
  .card-cat {
    align-self: flex-start; font-size: 11.5px; font-weight: 700; color: #fff;
    background: var(--cat, var(--accent)); padding: 2px 9px; border-radius: 4px;
  }
  .card-title {
    font-family: var(--font-display); font-size: 16.5px; line-height: 1.5; margin: 0;
    font-weight: 700; color: var(--ink);
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  }
  .card:hover .card-title { color: var(--accent); }
  .card-dek {
    margin: 0; font-size: 13px; line-height: 1.65; color: var(--ink-soft);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  .card-meta {
    margin-top: auto; font-size: 11.5px; color: var(--ink-faint);
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding-top: 4px;
  }
  .card-meta .dot { color: var(--line); }

  /* ===== 記事ページ ===== */
  article { max-width: 720px; margin: 0 auto; background: var(--card);
    border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow);
    padding: 30px 30px 36px; }

  /* --- read モード（記事は「読む」ためのページ。browse のメディア装飾を引き算する。
     docs/ARTICLE_UNIT_QUESTION_DRIVEN §4。トークンは config/site_themes.yaml の reading） --- */

  article.read-mode {
    max-width: 760px; border: none; box-shadow: none; border-radius: 0;
    padding: var(--sp-6) var(--sp-5) var(--sp-8);
  }
  /* ヒーローの負マージンは read モードのパディングに合わせる（既定30pxのままだと端がずれる） */
  article.read-mode .article-hero,
  article.read-mode figure.article-hero--photo {
    margin: calc(-1 * var(--sp-6)) calc(-1 * var(--sp-5)) var(--sp-5);
    border-radius: 0;
  }

  article.read-mode .body {
    font-size: var(--read-fs); line-height: var(--read-leading); max-width: var(--read-measure);
    text-align: left;   /* 両端揃えにしない（日本語の可読性・調査(C)） */
  }
  article.read-mode .body > p:first-of-type { font-size: calc(var(--read-fs) + 1px); }

  /* リッチ要素は本文に従属させる: 淡色・小さめ・枠を弱め、本文の流れを分断しない */
  article.read-mode .inline-block,
  article.read-mode section.richdoc-services,
  article.read-mode section.richdoc-videos,
  article.read-mode section.richdoc-timeline,
  article.read-mode section.richdoc-venue,
  article.read-mode section.recommend,
  article.read-mode details.glossary {
    max-width: var(--read-measure); background: transparent;
    border: none; border-left: 2px solid var(--line); border-radius: 0;
    padding: var(--sp-2) 0 var(--sp-2) var(--sp-4); box-shadow: none;
  }
  article.read-mode section.richdoc-services h2,
  article.read-mode section.richdoc-videos h2,
  article.read-mode section.richdoc-timeline h2,
  article.read-mode section.richdoc-venue h2,
  article.read-mode section.recommend h2 {
    font-size: var(--fs-xs); letter-spacing: .08em; color: var(--ink-faint);
  }
  article.read-mode .service-card,
  article.read-mode .video-card,
  article.read-mode .recommend-card { background: transparent; }

  .breadcrumb {
    max-width: 720px; margin: 0 auto 14px; font-size: 12px; color: var(--ink-faint);
    display: flex; flex-wrap: wrap; gap: 6px; padding: 0 4px;
  }
  .breadcrumb a:hover { color: var(--accent); }
  .breadcrumb .sep { color: var(--line); }

  .article-hero {
    margin: -30px -30px 20px; border-radius: var(--radius) var(--radius) 0 0; overflow: hidden;
    aspect-ratio: 5 / 2; background: var(--bg);   /* カバーSVG(2.5:1)と一致＝見切れない */
  }
  .article-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
  /* 実写真ヒーロー: 帰属キャプションぶん figure の高さを自然に伸ばす（aspect-ratio 固定を外す） */
  figure.article-hero--photo { aspect-ratio: auto; margin: -30px -30px 20px; }
  figure.article-hero--photo img { aspect-ratio: 5 / 2; }
  .hero-credit {
    font-size: var(--fs-xs); color: var(--ink-soft); padding: 4px 10px; text-align: right;
    background: var(--card);
  }
  .hero-credit a { color: var(--ink-soft); text-decoration: underline; }
  .article-cat {
    display: inline-block; font-size: 12px; font-weight: 700; color: #fff;
    background: var(--cat, var(--accent)); padding: 4px 12px; border-radius: 5px; margin-bottom: 12px;
  }
  h1.article-title {
    font-family: var(--font-display); font-size: 28px; line-height: 1.4; font-weight: 700;
    margin: 0 0 12px; color: var(--ink); letter-spacing: -.005em;
  }
  .entry-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    font-size: 12.5px; color: var(--ink-faint); margin-bottom: 8px; }
  .entry-meta .sep { color: var(--line); }

  .share-links { display: flex; gap: 8px; margin: 16px 0 4px; }
  .share-link {
    font-size: 12.5px; padding: 7px 14px; border: 1px solid var(--line); border-radius: 6px;
    color: var(--ink-soft); background: #fff;
  }
  .share-link:hover { background: var(--bg); color: var(--ink); border-color: var(--accent); }

  .evidence-note {
    font-size: 12.5px; line-height: 1.7; color: var(--ink-soft);
    margin: 14px 0 0; padding: 10px 14px; background: var(--bg); border-radius: 8px;
    border-left: 3px solid var(--accent-soft);
  }

  /* 記事本文（長文の読みやすさ優先: 本文17px・段落リズム・行長38em） */
  article .body { font-size: 17px; line-height: var(--leading-body); color: #22252c;
    max-width: var(--measure); margin-top: var(--sp-5); }
  article .body p { margin: 0 0 var(--sp-4); }
  article .body > p:first-of-type { font-size: 18px; color: var(--ink); }
  article .body h2 {
    font-family: var(--font-display); font-size: 21px; line-height: 1.45; font-weight: 700;
    margin: 34px 0 12px; padding-bottom: 8px; border-bottom: 2px solid var(--line);
  }
  article .body h3 { font-family: var(--font-display); font-size: 17px; margin: 24px 0 8px; font-weight: 700; }
  article .body a { color: var(--accent); text-decoration: underline; text-decoration-color: var(--accent-soft); }
  article .body a:hover { text-decoration-color: var(--accent); }
  article .body strong { color: var(--ink); font-weight: 700; }
  article .body img { display: block; margin: 18px auto; border-radius: 8px; }
  article .body ul, article .body ol { padding-left: 1.4em; }
  article .body li { margin: 6px 0; }
  article .body hr { border: none; border-top: 1px solid var(--line); margin: 28px 0; }
  article .body code {
    font-family: var(--font-mono); font-size: .88em; background: var(--bg);
    padding: 2px 6px; border-radius: 4px;
  }
  article .body blockquote {
    margin: 18px 0; padding: 10px 16px; border-left: 4px solid var(--accent-soft);
    background: var(--bg); border-radius: 0 8px 8px 0; color: var(--ink-soft);
  }

  /* 注記/コールアウトボックス（admonition: !!! note/tip/warning/danger "見出し"） */
  article .body .admonition {
    margin: 18px 0; padding: 12px 16px 12px 44px; border-radius: 8px; position: relative;
    background: var(--bg); border: 1px solid var(--line); border-left: 4px solid var(--accent);
    font-size: var(--fs-base);
  }
  article .body .admonition::before {
    content: "i"; position: absolute; left: 14px; top: 13px; width: 20px; height: 20px;
    border-radius: 50%; background: var(--accent); color: #fff; font-weight: 700;
    font-size: 13px; display: flex; align-items: center; justify-content: center; font-style: italic;
  }
  article .body .admonition.warning { border-left-color: #d97706; }
  article .body .admonition.warning::before { content: "!"; background: #d97706; font-style: normal; }
  article .body .admonition.danger { border-left-color: #dc2626; }
  article .body .admonition.danger::before { content: "!"; background: #dc2626; font-style: normal; }
  article .body .admonition.tip { border-left-color: #059669; }
  article .body .admonition.tip::before { content: "\2713"; background: #059669; font-style: normal; }
  article .body .admonition-title { font-weight: 700; margin: 0 0 4px; color: var(--ink); }
  article .body .admonition > p:last-child { margin-bottom: 0; }

  /* 定義リスト（def_list: 用語\n: 説明） */
  article .body dl { margin: 18px 0; }
  article .body dt { font-weight: 700; color: var(--ink); margin-top: 12px; }
  article .body dd { margin: 4px 0 0 16px; color: var(--ink-soft); }

  /* 「要点」セクションを目立たせる（冒頭のTL;DR） */
  article .body h2:first-of-type + ul, article .body h2 + ul.tldr {
    background: color-mix(in srgb, var(--accent) 6%, #fff);
    border: 1px solid color-mix(in srgb, var(--accent) 18%, #fff);
    border-radius: 10px; padding: 14px 16px 14px 34px;
  }

  /* 比較表（価格・ベンチマーク等）を読みやすく。
     【2026-08-02 修正】以前は table 自身に `display:block; overflow-x:auto; width:100%`
     を掛けていた。この形では**表は親幅を超えられない**ので、列が増えたり中身が長く
     なっても横スクロールにならず、列を潰す方向にしか動かない（＝崩れる）。
     表は素の table に戻し、**外側の容器がスクロールする**形にする。 */
  article .body .table-wrap {
    overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 20px 0;
    border: 1px solid var(--line); border-radius: 8px;
  }
  article .body table {
    border-collapse: collapse; margin: 0; font-size: 14.5px;
    width: auto; min-width: 100%;      /* 内容ぶんの幅を持てる。足りなければ広がる */
  }
  article .body thead th {
    background: var(--accent); color: #fff; text-align: left; font-weight: 700;
    white-space: nowrap;
  }
  article .body th, article .body td {
    padding: 10px 14px; border-bottom: 1px solid var(--line); vertical-align: top;
  }
  /* 1列に詰め込みすぎない。長い記述はここで折り返し、列は潰さない */
  article .body td { min-width: 6em; max-width: 22em; overflow-wrap: anywhere; }
  article .body tbody tr:nth-child(even) td { background: var(--bg); }

  /* 狭い画面では、列の多い表を**行ごとのカード**に切り替える（横スクロールでは読めない）。
     列名は site_builder / presentation_renderer が data-label として各セルに写している。 */
  @media (max-width: 640px) {
    article .body .table-wrap.cols-many { border: 0; overflow-x: visible; }
    article .body .cols-many table { min-width: 0; width: 100%; }
    article .body .cols-many thead { position: absolute; width: 1px; height: 1px;
      overflow: hidden; clip: rect(0 0 0 0); }
    article .body .cols-many tbody tr {
      display: block; border: 1px solid var(--line); border-radius: 8px;
      padding: 6px 10px; margin-bottom: 10px;
    }
    article .body .cols-many tbody td {
      display: grid; grid-template-columns: 8em 1fr; gap: 8px;
      padding: 6px 0; border-bottom: 1px dashed var(--line);
      max-width: none; min-width: 0; background: none !important;
    }
    article .body .cols-many tbody tr td:last-child { border-bottom: 0; }
    article .body .cols-many tbody td::before {
      content: attr(data-label); color: var(--muted); font-size: .82em; font-weight: 600;
    }
    article .body .cols-many tbody td[data-label=""]::before { content: none; }
  }

  .video-embed { position: relative; width: 100%; aspect-ratio: 16 / 9; margin: 18px 0; border-radius: 8px; overflow: hidden; }
  .video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

  /* 出典セクション */
  section.source-list, section.related-list {
    max-width: 720px; margin: 32px auto 0;
  }
  section.source-list { background: var(--card); border: 1px solid var(--line);
    border-radius: var(--radius); padding: 20px 24px; }
  section.source-list h2, section.related-list h2 {
    font-size: 13px; font-weight: 700; letter-spacing: .04em; color: var(--ink-soft);
    text-transform: uppercase; margin: 0 0 12px;
  }
  section.source-list ul { list-style: none; margin: 0; padding: 0; }
  section.source-list li { padding: 10px 0; border-bottom: 1px solid var(--line); }
  section.source-list li:last-child { border-bottom: none; }
  .src-row { display: flex; flex-direction: column; gap: 3px; }
  .src-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; font-size: 13.5px; }
  .src-head a { color: var(--accent); word-break: break-word; }
  .stamp {
    font-family: var(--font-mono); font-size: 10.5px; font-weight: 700; flex-shrink: 0;
    padding: 1px 6px; border-radius: 4px; background: var(--bg); color: var(--ink-soft);
  }
  .stamp--high { background: color-mix(in srgb, var(--accent) 14%, #fff); color: var(--accent); }
  .stamp--ugc { color: var(--ink-faint); }
  .src-date { font-size: 11.5px; color: var(--ink-faint); }

  /* 統合おすすめ商品（記事末・横スクロール。レジストリ＋PA-APIを1ブロックへ畳む）。
     開示はフッターで1回だけ。見出し横の PR ラベルで広告と分かるが、売り込み感は控えめに。 */
  section.offers {
    max-width: var(--measure); margin: var(--sp-6) auto 0; background: var(--card);
    border: 1px solid var(--line); border-radius: var(--radius); padding: var(--sp-4) var(--sp-5);
  }
  section.offers h2 {
    font-size: var(--fs-sm); font-weight: 700; letter-spacing: .04em; color: var(--ink-soft);
    margin: 0 0 var(--sp-3); display: flex; align-items: center; gap: var(--sp-2);
  }
  .pr-badge {
    font-size: 10.5px; font-weight: 700; letter-spacing: .06em; color: var(--ink-faint);
    background: var(--bg); border: 1px solid var(--line); border-radius: 4px; padding: 1px 6px;
  }
  .offers-slider {
    list-style: none; margin: 0; padding: 0 0 var(--sp-2); display: flex; gap: var(--sp-3);
    overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
  }
  .offers-slider > li { scroll-snap-align: start; flex: 0 0 200px; }
  .offer-card {
    display: flex; flex-direction: column; gap: 6px; height: 100%; padding: var(--sp-3);
    border: 1px solid var(--line); border-radius: 10px; background: #fff;
  }
  .offer-card:hover { border-color: var(--accent); background: var(--bg); }
  .offer-thumb { width: 100%; height: 120px; object-fit: contain; }
  .offer-thumb-ph {
    display: flex; align-items: center; justify-content: center; color: var(--ink-faint);
    background: var(--bg); border-radius: 6px; font-size: var(--fs-sm);
  }
  .offer-title {
    font-weight: 700; font-size: var(--fs-sm); line-height: 1.4; color: var(--ink);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  .offer-price { font-size: var(--fs-sm); color: #b12704; font-weight: 700; }
  .offer-why {
    font-size: var(--fs-xs); color: var(--ink-soft); line-height: 1.5;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  }
  .offer-cta { margin-top: auto; font-size: var(--fs-xs); color: var(--accent); font-weight: 700; }

  /* リッチドキュメント: AWSサービスカード・チップ */
  section.richdoc-services, section.richdoc-videos, section.richdoc-venue {
    max-width: var(--measure); margin: var(--sp-6) auto 0; background: var(--card);
    border: 1px solid var(--line); border-radius: var(--radius); padding: var(--sp-4) var(--sp-5);
  }
  section.richdoc-services h2, section.richdoc-videos h2, section.richdoc-venue h2 {
    font-size: var(--fs-sm); font-weight: 700; letter-spacing: .04em; color: var(--ink-soft);
    margin: 0 0 var(--sp-3);
  }
  .service-chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-bottom: var(--sp-3); }
  .service-chip {
    font-size: var(--fs-xs); font-weight: 600; color: #232f3e;
    background: color-mix(in srgb, #ff9900 22%, #fff); border: 1px solid color-mix(in srgb, #ff9900 40%, #fff);
    padding: 3px 10px; border-radius: 999px;
  }
  .service-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2);
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
  .service-card {
    display: flex; flex-direction: column; gap: 3px; padding: var(--sp-3) var(--sp-4);
    border: 1px solid var(--line); border-left: 3px solid #ff9900; border-radius: 8px; background: #fff;
  }
  .service-card:hover { background: var(--bg); }
  .service-name { font-weight: 700; font-size: var(--fs-base); color: #232f3e; }
  .service-desc { font-size: var(--fs-xs); color: var(--ink-soft); line-height: 1.5; }
  .service-cta { font-size: var(--fs-xs); color: var(--accent); font-weight: 700; }

  /* 関連動画: 実際のYouTube動画カード（サムネ＋タイトル＋チャンネル） */
  .video-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2); }
  .video-card {
    display: flex; gap: var(--sp-3); align-items: center; padding: var(--sp-2);
    border: 1px solid var(--line); border-radius: 8px; background: #fff;
  }
  .video-card:hover { border-color: #ff0000; background: var(--bg); }
  .video-thumb { width: 120px; height: 68px; object-fit: cover; border-radius: 6px; flex: none; }
  .video-meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .video-title {
    font-weight: 600; color: var(--ink); font-size: var(--fs-sm); line-height: 1.4;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  .video-desc {
    font-size: var(--fs-xs); color: var(--ink-soft); line-height: 1.5;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  .video-channel { font-size: var(--fs-xs); color: var(--ink-soft); }

  /* 会場地図（幕張メッセ等。ビルド時に取得した静的地図画像＋周辺情報） */
  .venue-card { display: grid; gap: var(--sp-3); grid-template-columns: 1fr; }
  @media (min-width: 640px) { .venue-card { grid-template-columns: 300px 1fr; align-items: start; } }
  .venue-map { display: block; border-radius: 8px; overflow: hidden; border: 1px solid var(--line); }
  .venue-map img { display: block; width: 100%; height: auto; }
  .venue-info { display: flex; flex-direction: column; gap: 4px; }
  .venue-name { font-weight: 700; font-size: var(--fs-lg); margin: 0; }
  .venue-address, .venue-access { margin: 0; font-size: var(--fs-sm); color: var(--ink-soft); }
  .venue-cta { margin-top: var(--sp-2); font-weight: 700; color: var(--accent); font-size: var(--fs-sm); }

  /* キーワード解説（読む前後に開ける折りたたみ。用語を平易に＋出典リンク） */
  details.glossary {
    max-width: var(--measure); margin: var(--sp-4) auto 0; background: var(--card);
    border: 1px solid var(--line); border-radius: var(--radius); padding: var(--sp-3) var(--sp-4);
  }
  details.glossary > summary {
    cursor: pointer; font-weight: 700; font-size: var(--fs-sm); color: var(--ink-soft);
    list-style: none;
  }
  details.glossary > summary::-webkit-details-marker { display: none; }
  details.glossary[open] > summary { margin-bottom: var(--sp-2); }
  details.glossary dl { margin: 0; }
  details.glossary dt { font-weight: 700; font-size: var(--fs-base); color: var(--ink); margin-top: var(--sp-2); }
  details.glossary dd {
    margin: 2px 0 0; font-size: var(--fs-sm); color: var(--ink-soft); line-height: 1.7;
  }
  .glossary-src { margin-left: 6px; font-size: var(--fs-xs); color: var(--accent); font-weight: 700; white-space: nowrap; }

  /* 章の合間に差し込むリッチ要素（末尾一括でなく本文中に分散）。邪魔にならない余白で区切る */
  .inline-block { margin: var(--sp-5) 0 !important; }
  /* サービス相関図（サービスカード直下に置く mermaid 図） */
  .service-diagram { margin-top: var(--sp-4); }
  .service-diagram h3 { font-size: var(--fs-sm); color: var(--ink-soft); margin: 0 0 var(--sp-2); }
  .service-diagram .mermaid, .service-diagram pre { overflow-x: auto; }

  /* タイムライン（できごとの流れ。本文の日付から自動生成） */
  section.richdoc-timeline {
    max-width: var(--measure); margin: var(--sp-6) auto 0; background: var(--card);
    border: 1px solid var(--line); border-radius: var(--radius); padding: var(--sp-4) var(--sp-5);
  }
  section.richdoc-timeline h2 {
    font-size: var(--fs-sm); font-weight: 700; letter-spacing: .04em; color: var(--ink-soft);
    margin: 0 0 var(--sp-3);
  }
  ol.timeline { list-style: none; margin: 0; padding: 0 0 0 var(--sp-4); border-left: 2px solid var(--line); }
  ol.timeline li { position: relative; padding: 0 0 var(--sp-4) var(--sp-3); }
  ol.timeline li::before {
    content: ""; position: absolute; left: calc(-1 * var(--sp-4) - 5px); top: 4px;
    width: 10px; height: 10px; border-radius: 50%; background: var(--accent);
  }
  ol.timeline li:last-child { padding-bottom: 0; }
  .tl-date { display: block; font-weight: 700; font-size: var(--fs-sm); color: var(--ink); }
  .tl-text { display: block; font-size: var(--fs-sm); color: var(--ink-soft); line-height: 1.6; }

  /* mermaid 図（レンダリング後） */
  article .body .mermaid, article .body pre.mermaid {
    background: var(--bg); border: 1px solid var(--line); border-radius: 8px;
    padding: var(--sp-4); margin: var(--sp-4) 0; text-align: center; overflow-x: auto;
  }
  article .body pre.mermaid:not([data-processed]) { color: var(--ink-faint); font-size: var(--fs-xs); }

  section.related-list h2 { padding: 0 4px; }
  .store-map-image { display: block; max-width: 100%; border-radius: 8px; margin-top: 8px; border: 1px solid var(--line); }

  /* 検索 */
  .site-search { position: relative; margin: 0 0 24px; }
  .site-search input[type="search"] {
    width: 100%; padding: 12px 16px; font-size: 15px; font-family: var(--font-body);
    background: var(--card); color: var(--ink); border: 1px solid var(--line);
    border-radius: 999px; box-shadow: var(--shadow);
  }
  .site-search input[type="search"]:focus { outline: none; border-color: var(--accent); }
  .site-search-results {
    position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 6px);
    list-style: none; margin: 0; padding: 6px; background: var(--card);
    border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow-lg);
    max-height: 360px; overflow-y: auto;
  }
  .site-search-results li a { display: block; padding: 9px 12px; border-radius: 8px; font-size: 14px; }
  .site-search-results li a:hover { background: var(--bg); }
  .site-search-results .search-empty { padding: 10px 12px; font-size: 13px; color: var(--ink-faint); }
  .search-noscript { font-size: 13px; color: var(--ink-soft); }

  /* タグ一覧 */
  .tag-heading { font-size: 13px; font-weight: 700; color: var(--ink); margin: 28px 0 12px; }
  .tag-heading a { color: var(--accent); }
  .tag-list-link {
    display: flex; justify-content: space-between; align-items: center; padding: 14px 16px;
    background: var(--card); border: 1px solid var(--line); border-radius: 10px; margin-bottom: 10px;
    box-shadow: var(--shadow);
  }
  .tag-list-link:hover { border-color: var(--accent); }
  .tag-list-name { font-weight: 700; font-size: 15px; }
  .tag-list-count { font-size: 12.5px; color: var(--ink-faint); }

  .empty-state { text-align: center; color: var(--ink-faint); padding: 60px 20px; }
  .index-more { margin-top: 28px; text-align: center; }
  .index-more a { color: var(--accent); font-weight: 600; }
  .pagination {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    margin-top: 28px; font-size: 13px; color: var(--ink-soft);
  }
  .pagination a { color: var(--accent); font-weight: 600; }
  .pagination-status { color: var(--ink-faint); }

  /* フッター */
  footer {
    background: var(--card); border-top: 1px solid var(--line); margin-top: 40px;
    padding: 28px 24px; font-size: 12.5px; color: var(--ink-faint);
  }
  footer .footer-inner { max-width: 1080px; margin: 0 auto; display: flex;
    flex-direction: column; gap: 14px; }
  footer nav { display: flex; gap: 18px; flex-wrap: wrap; }
  footer nav a:hover { color: var(--accent); }
  footer .footer-row { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
  /* サイト全体のアフィリエイト開示（法令の"広告と分かる"を満たす最小の1回。本文では繰り返さない） */
  .footer-disclosure { margin: 0; font-size: 12px; color: var(--ink-faint); }

  @media (max-width: 600px) {
    article { border-radius: 0; padding: 22px 18px 28px; }
    h1.article-title { font-size: 23px; }
    main { padding: 20px 16px 48px; }
    /* スマホ: 本文16px・記事末リッチブロックの左右余白を詰めて窮屈さ/横はみ出しを防ぐ */
    article .body { font-size: 16px; }
    section.offers, section.source-list, section.related-list,
    section.richdoc-services, section.richdoc-videos, section.richdoc-venue,
    section.richdoc-timeline, details.glossary { padding-left: var(--sp-4); padding-right: var(--sp-4); }
  }
  @media (prefers-reduced-motion: reduce) { * { transition: none !important; } }


/* 記事一覧カード（2026-08-01）。1タグ1記事の実データでは話題別ブロックが二重表示に
   なるだけだったので、**1本の読みやすい一覧**に畳んだ。タイトル（＝読者の問い）を主役に、
   要約・出典数・読了時間を添える。 */
.article-cards { list-style: none; margin: 0; padding: 0;
  display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.article-card { border: 1px solid var(--line); border-radius: 12px; overflow: hidden;
  background: var(--card); transition: border-color .15s ease, transform .15s ease; }
.article-card:hover { border-color: var(--cat, var(--accent)); transform: translateY(-1px); }
.article-card > a { display: grid; gap: 6px; padding: 14px 16px 14px 18px; text-decoration: none;
  color: inherit; position: relative; }
.article-card > a::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0;
  width: 4px; background: var(--cat, var(--accent)); }
.ac-title { font-size: 1.02rem; font-weight: 700; line-height: 1.45; color: var(--fg); }
.ac-dek { font-size: .86rem; line-height: 1.6; color: var(--muted);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ac-meta { font-size: .78rem; color: var(--muted); display: flex; gap: 6px; align-items: center;
  flex-wrap: wrap; }
.ac-date { font-variant-numeric: tabular-nums; }
@media (max-width: 640px) { .article-cards { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------------------
   部品方式（presentation_renderer）の描画。2026-08-02 まで**CSSが1行も無かった**
   ——部品は出ていたのに素のHTMLとして並んでいた。
   --------------------------------------------------------------------------- */
.blk { margin: 22px 0; }

/* 地図: 画像の上に透明なアンカーを重ねて、番号を押せるようにする。
   位置は % 指定なので、画像が縮んでもピンが一緒に縮む（スマホでもずれない）。 */
.map-frame { position: relative; display: inline-block; max-width: 100%; line-height: 0; }
.map-frame img { display: block; max-width: 100%; height: auto; border-radius: 8px;
  border: 1px solid var(--line); }
.map-frame .pin { position: absolute; transform: translate(-50%, -100%);
  width: 34px; height: 40px; margin-top: 4px; text-decoration: none; }
.map-frame .pin .pin-label,
.map-frame .pin .pin-name { position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; }   /* 番号は地図画像側に描かれている */
.map-frame .pin:hover, .map-frame .pin:focus-visible { outline: 3px solid var(--accent);
  outline-offset: 2px; border-radius: 50%; }
/* 【2026-08-02 利用者「図に1〜6すべてが表示されていない」】
   同じ座標の店は1つのマーカーにまとめている（位置をずらすと嘘になる）。
   Static Map のラベルは1文字なので画像には代表番号しか描けず、まとめた分
   （例: 3・4・5 の 4 と 5）がどこにも出ずカードと照合できなかった。
   画像に描けない番号は、**上に載せる HTML** で見せる。位置は動かさない。 */
.map-frame .pin--merged { width: auto; height: auto; }
.map-frame .pin-badge { display: inline-flex; gap: 5px; white-space: nowrap;
  transform: translate(14px, -30px); font-size: .74rem; font-weight: 700;
  color: #fff; background: var(--accent); border: 1px solid #fff;
  border-radius: 999px; padding: 1px 8px; line-height: 1.6;
  box-shadow: 0 1px 3px rgba(16,24,40,.35); }
.map-frame .pin-badge a { color: #fff; }
.map-frame .pin-badge a:hover, .map-frame .pin-badge a:focus-visible {
  text-decoration: underline; }
.map-note { font-size: .82rem; margin-top: 6px; }

/* 店カード */
.store-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.store { border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px;
  background: var(--card, transparent); scroll-margin-top: 80px; }
.store h3 { font-size: 1rem; margin: 0 0 6px; display: flex; align-items: center; gap: 8px; }
.store .no { display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%; background: var(--accent); color: #fff;
  font-size: .78rem; font-variant-numeric: tabular-nums; flex: none; }
.store .logo { max-height: 34px; max-width: 120px; margin-bottom: 8px; object-fit: contain; }
.store .addr, .store .hours, .store .muted { font-size: .84rem; color: var(--muted); margin: 1px 0; }

/* 【2026-08-02 利用者「店舗のCardが見にくい」】カードの全要素が同じ大きさ・同じグレーで、
   読者が判断に使う値（距離・所要時間・営業時間）が住所や特徴に埋もれていた。
   **ラベルは小さく、値は大きく**して、目で拾える段差を作る。 */
.store .keyfacts { display: flex; flex-wrap: wrap; gap: 6px 20px; margin: 10px 0 2px;
  padding: 8px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.store .keyfacts > div { display: flex; flex-direction: column; min-width: 0; }
.store .keyfacts dt { font-size: .68rem; color: var(--ink-faint); letter-spacing: .02em; }
.store .keyfacts dd { margin: 0; font-size: .92rem; font-weight: 600; color: var(--ink);
  font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
/* 住所と営業時間も1行ずつ使う必要は無い（横に流す）。区切りが無いと1つの文字列に
   見えるので中点を挟む。 */
.store .addr { display: inline; }
.store .hours { display: inline; }
.store .hours::before { content: "・"; color: var(--line); margin: 0 6px; }
.store .links { margin-top: 8px; display: flex; gap: 10px; flex-wrap: wrap; font-size: .84rem; }
.store .links .sns::before { content: "↗ "; }
.store:target { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent); }

/* 店の特徴（ブランド／商品／サービス／スタッフ／設備／決済）。
   【2026-08-02 利用者「ラベル崩して表示すれば縦が大きくならない」】
   以前は「ラベル列＋値のチップ」の2列だった。チップは1つずつが余白を持つ箱なので、
   語の数だけ高さが増える。ラベルを行頭に流し込む形にすると1特徴＝1行で収まり、
   折りたたんで隠す必要が無くなった（隠さない方が読者には良い）。 */
/* 【2026-08-02 利用者「公式オンラインストア、ギフトカード等を横並びにすればコンパクト」】
   1特徴＝1行にすると、値が1〜2個しかない項目（サービス・決済方法）が行を丸ごと使う。
   横に流して**短い項目どうしが同じ行に乗る**ようにすると、4項目が2行程度に収まる。
   長い項目（取扱商品）は自然に折り返して1行を占める——詰め方を項目ごとに決めない。 */
.facets { list-style: none; margin: 10px 0 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 4px 16px; }
.facets li { font-size: .84rem; line-height: 1.6; color: var(--ink-soft);
  overflow-wrap: anywhere; }
.facets .fl { display: inline-block; font-size: .72rem; font-weight: 700; color: var(--accent);
  background: color-mix(in srgb, var(--accent) 10%, #fff);
  border-radius: 4px; padding: 0 6px; margin-right: 6px; vertical-align: 1px; }
.facets .more { color: var(--ink-faint); font-size: .78rem; margin-left: 4px; }

/* 「どういう人ならどこへ」の分岐図（2026-08-02 利用者「図で表現できた方がいい」）。
   散文の分岐を、条件→行き先の1対1で見せる。mermaid のようなコード記法の図は使わない
   （利用者「一般人が見るのに向いてないかも」）——素のHTMLとCSSだけで描く。 */
.decisions .decision-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.decisions .decision-list li { display: grid; grid-template-columns: 1fr auto auto;
  align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--card); }
.decisions .cond { font-size: .92rem; }
.decisions .arrow { color: var(--ink-faint); }
.decisions .dest { display: inline-flex; align-items: center; gap: 6px; font-size: .9rem;
  font-weight: 600; color: var(--accent); }
.decisions .dest .no { display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%; background: var(--accent); color: #fff;
  font-size: .74rem; font-variant-numeric: tabular-nums; }
@media (max-width: 520px) {
  .decisions .decision-list li { grid-template-columns: 1fr; gap: 4px; }
  .decisions .arrow { display: none; }
}

/* 取扱情報の出所（チェーン共通か店舗固有か）。書かないと「この店にこれがある」と
   読まれる（2026-08-02 利用者「本当？店によって、違うでしょ」）。 */
.store .facets-src { font-size: .74rem; color: var(--ink-faint); margin: 6px 0 0; }