/**
 * Article Body（インタビュー / コラム・Tips 本文用）
 *
 * 対応マニュアル: doc/article-body-markup-guide.md
 *
 * 対象クラス:
 *   - iv-intro / iv-profile
 *   - iv-h2 / iv-h3
 *   - iv-toc（目次・ショートコード [iv_toc] で生成）
 *   - iv-qa / iv-q / iv-a
 *   - iv-quote
 *   - iv-figure / iv-figure-grid
 *   - iv-tips
 *   - u-marker / u-strong--* / u-text--* / u-note-ref
 *
 * 方針: すべて CSS 変数（--color-* / --space-* / --font-size-* / --radius-* / --shadow-*）。
 *       直値禁止（media query のブレイクポイントとアニメ keyframes のみ例外）。
 *
 * @package wakuwaku-theme
 */

/* =========================================================
 * 本文スコープ（コンテンツ内の共通変数）
 * ========================================================= */
.article-detail__content {
  --iv-body-max: 780px;
}

/* コラム・Tips は記事個別のテーマカラーを持たないため --iv-intro-color を
   サイトの「濃い青緑（--color-accent-2 / #1A6B73）」に固定する。
   明るいメインカラー（--color-main）だと本文中の文字・マーカー・見出し地が
   薄すぎて読みづらいため、本文内はより彩度の落ち着いた濃いめの青緑を採用。
   iv-h2 / iv-h3 / iv-toc / iv-quote / iv-tips / u-marker / u-strong--* など、
   本CSS内で --iv-intro-color を参照している要素はすべてこの値で描画される。
   interview 側は single-article.php で ACF intro_svg_color がインライン
   スタイルとして注入されるため本ブロックの影響は受けない。 */
.article-detail--tip {
  --iv-intro-color: var(--color-accent-2);
}

/* コラム・Tips 本文の読みやすさ向上:
   - 本文直下の <p>（.iv-* ブロックの外）は上に 20px のマージン
   - 本文直下の <h4> は上に 50px のマージン + --iv-intro-color の文字色
   直接の子セレクタに限定しているため、.iv-tips__text 内の段落や
   .iv-tips__title の h4 など、コンポーネント内部のマージンには影響しない。 */
.article-detail--tip .article-detail__content > .container > p {
  margin-top: 20px;
}
.article-detail--tip .article-detail__content > .container > h4 {
  margin-top: 50px;
  margin-bottom: var(--space-4);
  color: var(--iv-intro-color, var(--color-accent-2));
  font-size: var(--font-size-lg);
  line-height: 1.5;
}

/* =========================================================
 * 1. 導入文ブロック（Intro）
 * ========================================================= */
.iv-intro {
  position: relative;
  max-width: var(--iv-body-max);
  margin: var(--space-10) auto;
  padding: var(--space-10);
  background: linear-gradient(
    135deg,
    var(--iv-intro-color, var(--color-accent-2)) 0%,
    color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 80%, var(--color-main)) 100%
  );
  color: var(--color-text-inverse);
  border-radius: var(--radius-md);
  line-height: 1.95;
  box-shadow: var(--shadow-md);
  overflow: hidden;
  isolation: isolate;
}
.iv-intro__anim {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
  display: block;
}
.iv-intro__content {
  position: relative;
  z-index: 1;
}
.iv-intro__wave-layer {
  animation: iv-intro-wave-slide linear infinite;
  will-change: transform;
}
.iv-intro__wave-layer--back {
  fill: rgba(255, 255, 255, 0.07);
  animation-duration: 22s;
}
.iv-intro__wave-layer--front {
  fill: rgba(255, 255, 255, 0.14);
  animation-duration: 14s;
}
@keyframes iv-intro-wave-slide {
  from { transform: translateX(0); }
  to   { transform: translateX(-1200px); }
}
.iv-intro__bubble {
  animation: iv-intro-bubble-rise linear infinite;
  will-change: transform, opacity;
}
@keyframes iv-intro-bubble-rise {
  0%   { transform: translate(0, 0) scale(0.8); opacity: 0; }
  15%  { opacity: 0.7; }
  50%  { transform: translate(12px, -260px) scale(1); }
  85%  { opacity: 0.4; }
  100% { transform: translate(-8px, -480px) scale(0.9); opacity: 0; }
}
.iv-intro__bubble--a { animation-duration: 11s; animation-delay: 0s; }
.iv-intro__bubble--b { animation-duration: 14s; animation-delay: 2s; }
.iv-intro__bubble--c { animation-duration: 16s; animation-delay: 4s; }
.iv-intro__bubble--d { animation-duration: 12s; animation-delay: 1s; }
.iv-intro__bubble--e { animation-duration: 15s; animation-delay: 3s; }
.iv-intro__bubble--f { animation-duration: 13s; animation-delay: 5s; }

@media (prefers-reduced-motion: reduce) {
  .iv-intro__wave-layer,
  .iv-intro__bubble { animation: none !important; }
  .iv-intro__bubble { opacity: 0.4; }
}

.iv-intro__lead {
  margin: 0 0 var(--space-8);
  padding-bottom: var(--space-6);
  border-bottom: 1px solid color-mix(in srgb, var(--color-base-1) 25%, transparent);
  text-align: center;
  font-family: "Impact", "Arial Black", "Oswald", sans-serif;
  font-weight: var(--font-weight-bold);
  font-size: clamp(1.125rem, 1.8vw, 1.5rem);
  letter-spacing: 0.04em;
  line-height: 1.7;
  color: var(--color-text-inverse);
}
.iv-intro__p {
  margin: 0 0 var(--space-6);
  font-size: var(--font-size-base);
  line-height: 1.95;
  color: var(--color-text-inverse);
}
.iv-intro__p:last-child { margin-bottom: 0; }

/* ---- 導入文ブロック内タイムライン（iv-timeline） ---- */
.iv-intro .iv-timeline {
  margin: var(--space-6) 0 var(--space-8);
  padding: var(--space-5) var(--space-6);
  background: color-mix(in srgb, var(--color-base-1) 8%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-base-1) 20%, transparent);
  border-radius: var(--radius-sm);
  color: var(--color-text-inverse);
}
.iv-intro .iv-timeline__list {
  display: grid;
  gap: 0;
  margin: 0;
}
.iv-intro .iv-timeline__item {
  display: grid;
  grid-template-columns: 5em 1fr;
  gap: var(--space-5);
  align-items: baseline;
  padding: var(--space-3) 0;
  border-bottom: 1px dashed color-mix(in srgb, var(--color-base-1) 25%, transparent);
}
.iv-intro .iv-timeline__item:last-child { border-bottom: none; }

.iv-intro .iv-timeline__year {
  margin: 0;
  font-family: "Impact", "Arial Black", sans-serif;
  font-size: var(--font-size-base);
  letter-spacing: 0.06em;
  color: color-mix(in srgb, var(--color-base-1) 92%, transparent);
  text-align: right;
}
.iv-intro .iv-timeline__desc {
  margin: 0;
  font-size: var(--font-size-sm);
  line-height: 1.7;
  color: color-mix(in srgb, var(--color-base-1) 92%, transparent);
}

@media (max-width: 640px) {
  .iv-intro { padding: var(--space-8) var(--space-6); }

  .iv-intro .iv-timeline {
    padding: var(--space-4) var(--space-5);
  }
  .iv-intro .iv-timeline__item {
    grid-template-columns: 4em 1fr;
    gap: var(--space-4);
    padding: var(--space-2) 0;
  }
  .iv-intro .iv-timeline__year {
    font-size: var(--font-size-sm);
  }
  .iv-intro .iv-timeline__desc {
    font-size: var(--font-size-xs);
    line-height: 1.65;
  }
}

/* =========================================================
 * 2. プロフィール（Profile）
 * ========================================================= */
.iv-profile {
  max-width: var(--iv-body-max);
  margin: var(--space-10) auto;
  padding: var(--space-8);
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: var(--space-8);
  align-items: center;
  background: var(--color-base-1);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-md);
}
.iv-profile__visual {
  width: 180px;
}
.iv-profile__photo {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 50%;
  box-shadow: var(--shadow-sm);
}
.iv-profile__label {
  margin: 0 0 var(--space-2);
  font-family: "Impact", "Arial Black", sans-serif;
  letter-spacing: 0.12em;
  color: var(--iv-intro-color, var(--color-accent-2));
  font-size: var(--font-size-sm);
}
.iv-profile__name {
  margin: 0 0 var(--space-4);
  font-size: var(--font-size-xl);
  line-height: 1.4;
}
.iv-profile__meta {
  display: grid;
  gap: var(--space-2);
  margin: 0 0 var(--space-4);
}
.iv-profile__meta-row {
  display: grid;
  grid-template-columns: 6em 1fr;
  gap: var(--space-4);
}
.iv-profile__meta-row dt {
  color: var(--color-text-secondary);
  font-size: var(--font-size-sm);
}
.iv-profile__meta-row dd {
  margin: 0;
  font-size: var(--font-size-sm);
}
.iv-profile__link {
  display: inline-block;
  margin-right: var(--space-3);
  color: var(--iv-intro-color, var(--color-accent-2));
  text-decoration: underline;
}
.iv-profile__link:hover { opacity: 0.8; }
.iv-profile__bio {
  margin: 0;
  font-size: var(--font-size-base);
  line-height: 1.85;
}

@media (max-width: 640px) {
  .iv-profile {
    grid-template-columns: 1fr;
    padding: var(--space-6);
  }
  .iv-profile__visual {
    width: 120px;
    margin-inline: auto;
  }
}

/* =========================================================
 * 3. 章見出し（H2 番号付き）
 * ========================================================= */
.iv-h2 {
  margin: 130px 0 var(--space-8);
  padding-bottom: var(--space-4);
  border-bottom: 1px solid var(--color-border);
  display: flex;
  align-items: baseline;
  gap: var(--space-5);
  font-size: var(--font-size-xl);
  line-height: 1.5;
}
.iv-h2:first-child { margin-top: 0; }
.iv-h2__num {
  font-family: "Impact", "Arial Black", sans-serif;
  font-size: 2em;
  color: var(--iv-intro-color, var(--color-accent-2));
  letter-spacing: 0.05em;
  line-height: 1;
}
.iv-h2__text {
  flex: 1;
  color: var(--iv-intro-color, var(--color-accent-2));
}

@media (max-width: 640px) {
  .iv-h2 { margin-top: 80px; font-size: var(--font-size-lg); }
  .iv-h2__num { font-size: 1.6em; }
}

/* =========================================================
 * 4. 小見出し（H3）
 * ========================================================= */
.iv-h3 {
  margin: 80px 0 30px;
  padding: var(--space-4) var(--space-6);
  background: var(--iv-intro-color, var(--color-accent-2));
  border-radius: var(--radius-sm);
  font-size: var(--font-size-lg);
  line-height: 1.6;
  color: var(--color-text-inverse);
}
.iv-h3--mt30 {
  margin-top: var(--iv-h3-margin-top-tight, 1.875rem); /* 30px */
}
/* Tipsボックス内の先頭h3はデフォルトh3(80px)だと空きすぎるため詰める */
.iv-tips > .iv-h3:first-child {
  margin-top: var(--iv-h3-margin-top-tight, 1.875rem); /* 30px */
}

/* =========================================================
 * 4-2. 目次ブロック（[iv_toc] ショートコードで生成）
 *
 * CPT ごとに外観を分離する:
 *   - .iv-toc--interview : 従来仕様。--iv-intro-color を使った薄いテーマ色
 *     の地色と通常の文字色（反転なし）。装飾アニメーションは無し。
 *   - .iv-toc--tip       : 濃いテーマ色で塗りつぶし + 白抜き文字 + 脳シナプス
 *     を模した SVG アニメーション（ノード明滅 + ファイバ接続線 + シグナル
 *     パルス）。Tipsは本文冒頭の視線誘導として強いビジュアルを担保。
 *
 * 背景色はいずれも --iv-intro-color を起点にする（tip は --color-accent-2、
 * interview は ACF intro_svg_color）。
 * ========================================================= */

/* ---------- 共通（レイアウト / リスト骨格） ---------- */
.iv-toc {
  max-width: var(--iv-body-max);
  margin: 2.4em auto;
  border-radius: var(--radius-md);
}
.iv-toc__title {
  margin: 0 0 0.75em;
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-bold);
  letter-spacing: 0.08em;
}
.iv-toc__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.iv-toc__item + .iv-toc__item { margin-top: 0.9em; }
.iv-toc__link {
  display: flex;
  gap: 0.6em;
  align-items: baseline;
  text-decoration: none;
  line-height: 1.8;
  color: inherit;
}
.iv-toc__link:hover,
.iv-toc__link:focus-visible { text-decoration: underline; }
.iv-toc__num {
  flex: 0 0 auto;
  display: inline-flex;
  justify-content: center;
  min-width: 1.8em;
  font-weight: var(--font-weight-bold);
}
.iv-toc__text { flex: 1; }
.iv-toc__sublist {
  list-style: none;
  margin: 0.6em 0 0 2.4em;
  padding: 0;
}
.iv-toc__subitem + .iv-toc__subitem { margin-top: 0.6em; }
.iv-toc__sublink {
  display: inline-block;
  text-decoration: none;
  font-size: var(--font-size-sm);
  line-height: 1.8;
}
.iv-toc__sublink::before { content: "– "; margin-right: 0.1em; }
.iv-toc__sublink:hover,
.iv-toc__sublink:focus-visible { text-decoration: underline; }

/* ---------- .iv-toc--interview（従来仕様・薄色地） ---------- */
.iv-toc--interview {
  padding: var(--space-4) var(--space-5);
  background: color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 6%, var(--color-base-1));
  border: 1px solid color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 25%, transparent);
}
.iv-toc--interview .iv-toc__title { color: var(--iv-intro-color, var(--color-accent-2)); }
.iv-toc--interview .iv-toc__num   { color: var(--iv-intro-color, var(--color-accent-2)); }
.iv-toc--interview .iv-toc__link:hover,
.iv-toc--interview .iv-toc__link:focus-visible { color: var(--iv-intro-color, var(--color-accent-2)); }
.iv-toc--interview .iv-toc__sublink { color: var(--color-text-secondary); }
.iv-toc--interview .iv-toc__sublink:hover,
.iv-toc--interview .iv-toc__sublink:focus-visible { color: var(--iv-intro-color, var(--color-accent-2)); }

/* ---------- .iv-toc--tip（濃色塗り + 白抜き + SVG 装飾） ---------- */
.iv-toc--tip {
  position: relative;
  padding: var(--space-6) var(--space-8);
  background: linear-gradient(
    135deg,
    var(--iv-intro-color, var(--color-accent-2)) 0%,
    color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 80%, var(--color-main)) 100%
  );
  color: var(--color-text-inverse);
  box-shadow: var(--shadow-md);
  overflow: hidden;
  isolation: isolate;
}
.iv-toc--tip .iv-toc__title { color: var(--color-text-inverse); margin-bottom: 0.9em; }
.iv-toc--tip .iv-toc__link,
.iv-toc--tip .iv-toc__link:hover,
.iv-toc--tip .iv-toc__link:focus-visible { color: var(--color-text-inverse); }
.iv-toc--tip .iv-toc__num      { color: color-mix(in srgb, var(--color-text-inverse) 85%, transparent); }
.iv-toc--tip .iv-toc__sublink  { color: color-mix(in srgb, var(--color-text-inverse) 80%, transparent); }
.iv-toc--tip .iv-toc__sublink:hover,
.iv-toc--tip .iv-toc__sublink:focus-visible { color: var(--color-text-inverse); }

/* SVG 装飾レイヤ（脳シナプス・テクスチャ）— Tips 専用。
   「知識同士が繋がり連鎖していく」ビジュアルメタファとして:
   - .iv-toc__line  = ファイバ（軸索）。常時表示の極薄い接続線。
   - .iv-toc__node  = ノード（神経細胞体）。呼吸するように明滅。
   - .iv-toc__pulse = シグナル。ファイバ上を短い輝点が端から端へ走る。
   CSS のみで実現（stroke-dashoffset / opacity アニメーション）。
   interview 側ではショートコードが SVG 自体を出力しないため、
   これらのサブ要素 CSS は .iv-toc--tip スコープに限定する。 */
.iv-toc--tip .iv-toc__anim {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
  display: block;
}
.iv-toc--tip .iv-toc__inner {
  position: relative;
  z-index: 1;
}

.iv-toc--tip .iv-toc__line {
  fill: none;
  stroke: rgba(255, 255, 255, 0.08);
  stroke-width: 1;
  stroke-linecap: round;
}

/* ノード（神経細胞体）= 白丸の明滅。文字との視認性を優先し、
   ベースを 0.35 に落とし、明滅のピーク・ボトムも控えめに調整。
   従来は base 0.85 / peak 0.95 で「白くて目立つ点」だったため、
   見出し（目次タイトル・項番）に被って読みづらかった。 */
.iv-toc--tip .iv-toc__node {
  fill: rgba(255, 255, 255, 0.35);
  transform-box: fill-box;
  transform-origin: center;
  animation: iv-toc-node-pulse ease-in-out infinite;
  will-change: opacity, transform;
}
@keyframes iv-toc-node-pulse {
  0%, 100% { opacity: 0.18; transform: scale(0.9); }
  50%      { opacity: 0.45; transform: scale(1.15); }
}
.iv-toc--tip .iv-toc__node--a { animation-duration: 3.8s; animation-delay: 0s; }
.iv-toc--tip .iv-toc__node--b { animation-duration: 4.5s; animation-delay: 0.6s; }
.iv-toc--tip .iv-toc__node--c { animation-duration: 3.2s; animation-delay: 1.2s; }
.iv-toc--tip .iv-toc__node--d { animation-duration: 5.0s; animation-delay: 1.8s; }
.iv-toc--tip .iv-toc__node--e { animation-duration: 4.2s; animation-delay: 2.4s; }
.iv-toc--tip .iv-toc__node--f { animation-duration: 3.6s; animation-delay: 3.0s; }
.iv-toc--tip .iv-toc__node--g { animation-duration: 4.8s; animation-delay: 3.6s; }

/* シグナル（流れる輝点）。従来は stroke 0.9 + drop-shadow の白グローで
   太く・明るく視認できたが、文字レイヤと干渉して可読性を損ねていたため、
   stroke を 0.35 / 線幅を 1.1 に細めて、白グロー（drop-shadow）も除去。 */
.iv-toc--tip .iv-toc__pulse {
  fill: none;
  stroke: rgba(255, 255, 255, 0.35);
  stroke-width: 1.1;
  stroke-linecap: round;
  stroke-dasharray: 14 260;
  animation: iv-toc-synapse-signal linear infinite;
  will-change: stroke-dashoffset;
}
@keyframes iv-toc-synapse-signal {
  from { stroke-dashoffset: 0; }
  to   { stroke-dashoffset: -274; }
}
.iv-toc--tip .iv-toc__pulse--a { animation-duration: 4.2s; animation-delay: 0s; }
.iv-toc--tip .iv-toc__pulse--b { animation-duration: 5.6s; animation-delay: 0.7s; }
.iv-toc--tip .iv-toc__pulse--c { animation-duration: 3.8s; animation-delay: 1.4s; }
.iv-toc--tip .iv-toc__pulse--d { animation-duration: 6.0s; animation-delay: 2.1s; }
.iv-toc--tip .iv-toc__pulse--e { animation-duration: 4.6s; animation-delay: 2.8s; }
.iv-toc--tip .iv-toc__pulse--f { animation-duration: 5.2s; animation-delay: 3.5s; }
.iv-toc--tip .iv-toc__pulse--g { animation-duration: 4.0s; animation-delay: 4.2s; }

@media (prefers-reduced-motion: reduce) {
  .iv-toc--tip .iv-toc__node,
  .iv-toc--tip .iv-toc__pulse { animation: none !important; }
  .iv-toc--tip .iv-toc__node  { opacity: 0.3;  transform: none; }
  .iv-toc--tip .iv-toc__pulse { opacity: 0.25; stroke-dasharray: none; }
}

/* =========================================================
 * 5. QAブロック
 * ========================================================= */
.iv-qa { margin: var(--space-6) 0; }
.iv-q {
  margin: 3.6em 0 var(--space-4);
  padding: 15px var(--space-8);
  background: linear-gradient(to bottom, var(--color-surface-muted) 0%, var(--color-base-1) 100%);
  border-radius: var(--radius-sm);
  font-weight: var(--font-weight-bold);
  color: color-mix(in srgb, var(--color-text-secondary) 70%, var(--color-text-muted));
  line-height: 1.8;
}
.iv-q__mark {
  margin-right: 0.3em;
  color: color-mix(in srgb, var(--color-text-secondary) 70%, var(--color-text-muted));
  font-weight: var(--font-weight-bold);
}
.iv-a {
  margin: 0 0 var(--space-4);
  line-height: 1.95;
}

/* =========================================================
 * 6. 引用（Quote）
 * ========================================================= */
.iv-quote {
  position: relative;
  margin: var(--space-10) 0;
  padding: var(--space-8) var(--space-8) var(--space-8) var(--space-12);
  background: color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 8%, var(--color-base-1));
  border-left: 4px solid var(--iv-intro-color, var(--color-accent-2));
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  font-size: var(--font-size-lg);
  line-height: 1.95;
  color: var(--color-text-primary);
}
.iv-quote::before {
  content: "\201C";
  position: absolute;
  top: 0;
  left: var(--space-4);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 4rem;
  line-height: 1;
  color: var(--iv-intro-color, var(--color-accent-2));
  opacity: 0.35;
}
.iv-quote__hl {
  background: linear-gradient(
    transparent 60%,
    color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 30%, var(--color-base-1)) 60%
  );
}

@media (max-width: 640px) {
  .iv-quote {
    margin: var(--space-8) 0;
    padding: var(--space-6) var(--space-6) var(--space-6) var(--space-10);
    font-size: var(--font-size-base);
  }
}

/* =========================================================
 * 7. 画像・埋め込み（Figure / Figure Grid / Embed）
 *
 * PC での幅指定: <figure> に iv-figure--w{50,60,70,80,90} を付与
 *   <figure class="iv-figure iv-figure--w80">
 *     <img src="..." alt="..." loading="lazy">
 *   </figure>
 *
 * YouTube などの埋め込み: iv-figure--embed を併記（iframe の16:9固定）
 *   <figure class="iv-figure iv-figure--embed iv-figure--w80">
 *     <iframe src="https://www.youtube.com/embed/XXX" ...></iframe>
 *   </figure>
 *
 * スマホ（≤640px）は常に100%（モディファイア無効）
 * ========================================================= */
.iv-figure { margin: var(--space-8) 0; }

.iv-figure img {
  width: 100%;
  height: auto;
  display: block;
  margin: 0 auto;
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-sm);
}

/* <a> ラッパーで画像をリンク化する場合のサポート
 *   例: <figure class="iv-figure iv-figure--w80">
 *         <a href="..."><img ...></a>
 *       </figure>
 *   <a> を block 化して img の margin:auto 中央寄せを効かせる。 */
.iv-figure a {
  display: block;
  width: 100%;
  text-decoration: none;
  color: inherit;
}

/* 埋め込み（YouTube / Vimeo など） */
.iv-figure--embed iframe {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  margin: 0 auto;
  border: 0;
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-sm);
}

/* PC のみ 幅モディファイア（img / iframe 共通 / <a>ラッパー越しでも効くよう子孫セレクタ） */
@media (min-width: 641px) {
  .iv-figure.iv-figure--w50 img,
  .iv-figure.iv-figure--w50 iframe { width: 50%; }

  .iv-figure.iv-figure--w60 img,
  .iv-figure.iv-figure--w60 iframe { width: 60%; }

  .iv-figure.iv-figure--w70 img,
  .iv-figure.iv-figure--w70 iframe { width: 70%; }

  .iv-figure.iv-figure--w80 img,
  .iv-figure.iv-figure--w80 iframe { width: 80%; }

  .iv-figure.iv-figure--w90 img,
  .iv-figure.iv-figure--w90 iframe { width: 90%; }
}

.iv-figure-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  margin: var(--space-8) 0;
}
.iv-figure-grid .iv-figure { margin: 0; }

@media (max-width: 640px) {
  .iv-figure-grid { grid-template-columns: 1fr; }
  /* スマホは常に100%幅（モディファイア無効化） */
  .iv-figure img,
  .iv-figure--embed iframe { width: 100%; }
}

/* =========================================================
 * 8. Tips ボックス
 * ========================================================= */
.iv-tips {
  margin: var(--space-10) 0;
  padding: var(--space-10);
  background: color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 8%, var(--color-base-1));
  border-radius: var(--radius-md);
  border-left: 4px solid var(--iv-intro-color, var(--color-accent-2));
}
.iv-tips__head {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  margin-bottom: var(--space-5);
  padding-bottom: var(--space-4);
  border-bottom: 1px dashed var(--color-border);
}
.iv-tips__badge {
  display: inline-block;
  padding: 0.25em 0.8em;
  background: var(--iv-intro-color, var(--color-accent-2));
  color: var(--color-text-inverse);
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-bold);
  letter-spacing: 0.05em;
}
.iv-tips__title {
  margin: 0;
  font-size: var(--font-size-base);
  line-height: 1.5;
}
.iv-tips__body {
  display: grid;
  gap: var(--space-4);
}
.iv-tips--with-image .iv-tips__body {
  grid-template-columns: 200px 1fr;
  align-items: start;
}
.iv-tips__figure { margin: 0; }
.iv-tips__figure img {
  width: 100%;
  height: auto;
  border-radius: var(--radius-sm);
  display: block;
}
.iv-tips__text p {
  margin: 0 0 var(--space-3);
  line-height: 1.85;
}
.iv-tips__text p:last-child { margin-bottom: 0; }
.iv-tips__link {
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  color: var(--iv-intro-color, var(--color-accent-2));
  text-decoration: underline;
}
.iv-tips__link:hover { opacity: 0.8; }

@media (max-width: 640px) {
  .iv-tips { padding: var(--space-6); }
  .iv-tips--with-image .iv-tips__body { grid-template-columns: 1fr; }
}

/* =========================================================
 * 8-2. 本文中の箇条書き（行頭記号付き）
 *
 * base.css が `ul, ol { list-style: none; }` でサイト全体の
 * デフォルト行頭記号を消しているため、記事本文で「普通の箇条書き」
 * を出したい時だけ明示的に .iv-list を付与する。
 *
 * - 標準は disc（黒丸）
 * - 番号付きにしたい場合は <ol class="iv-list iv-list--ordered">
 * - 行間は本文の他ブロック（iv-a / iv-tips__text p）と同じ 1.85
 * - 記号色はテーマカラー（--iv-intro-color）に追従。未設定時は
 *   --color-accent-2 にフォールバック。
 * ========================================================= */
.iv-list {
  list-style: disc;
  padding-left: var(--space-6);
  margin: var(--space-6) 0;
  color: inherit;
}
.iv-list > li {
  margin-bottom: var(--space-2);
  line-height: 1.85;
}
.iv-list > li:last-child { margin-bottom: 0; }
.iv-list > li::marker {
  color: var(--iv-intro-color, var(--color-accent-2));
}

.iv-list--ordered { list-style: decimal; }
.iv-list--ordered > li::marker {
  font-weight: var(--font-weight-bold);
}

/* ネストは一段だけ circle にする（読み物用途では深いネストは想定しない） */
.iv-list .iv-list {
  margin: var(--space-2) 0 var(--space-3);
  list-style: circle;
}

/* ---- 角丸ボックス変種（.iv-list--boxed） ----
   「まとめ」「この記事のポイント」のような束ねたいリストを、
   薄いテーマカラー地の角丸四角で囲む。.iv-quote と色味を合わせる。 */
.iv-list--boxed {
  padding: var(--space-6) var(--space-6) var(--space-6) calc(var(--space-6) + var(--space-6));
  background: color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 8%, var(--color-base-1));
  border-radius: var(--radius-md);
  margin: var(--space-8) 0;
}

@media (max-width: 640px) {
  .iv-list--boxed {
    padding: var(--space-5) var(--space-5) var(--space-5) calc(var(--space-5) + var(--space-5));
  }
}

/* =========================================================
 * 8-3. アイコン＋吹き出し（Talk）
 *
 * 取材相手やキャラクターのアイコン＋セリフ吹き出しブロック。
 * .iv-qa（テキストのみの一問一答）とは別系統で、
 * ビジュアル重視のセリフ表示に使う。
 *
 * 基本構造:
 *   <div class="iv-talk">
 *     <div class="iv-talk__avatar"><img ... /></div>
 *     <div class="iv-talk__bubble"><p>...</p></div>
 *   </div>
 *
 * 修飾子:
 *   .iv-talk--right ... アバターを右側に出す（対話の切り返し演出用）
 *
 * 吹き出しの三角は ::before / ::after の2層構造で描画
 * （border 色 → 塗り色の順に重ねて境界線を出す）。
 * ========================================================= */
.iv-talk {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: var(--space-5);
  align-items: start;
  margin: var(--space-8) 0;
}
.iv-talk__avatar {
  width: 100px;
  height: 100px;
}
.iv-talk__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  display: block;
}
.iv-talk__bubble {
  position: relative;
  padding: var(--space-6) var(--space-8);
  background: var(--color-base-1);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  line-height: 1.85;
  box-shadow: var(--shadow-sm);
}
.iv-talk__bubble::before,
.iv-talk__bubble::after {
  content: "";
  position: absolute;
  top: 32px;
  width: 0;
  height: 0;
  border-style: solid;
}
.iv-talk__bubble::before {
  left: -11px;
  border-width: 8px 11px 8px 0;
  border-color: transparent var(--color-border) transparent transparent;
}
.iv-talk__bubble::after {
  left: -10px;
  border-width: 8px 11px 8px 0;
  border-color: transparent var(--color-base-1) transparent transparent;
}

.iv-talk__bubble p {
  margin: 0 0 var(--space-5);
}
.iv-talk__bubble p:last-child { margin-bottom: 0; }

/* ---- アバター右配置（.iv-talk--right） ---- */
.iv-talk--right {
  grid-template-columns: 1fr 100px;
}
.iv-talk--right .iv-talk__avatar { order: 2; }
.iv-talk--right .iv-talk__bubble { order: 1; }
.iv-talk--right .iv-talk__bubble::before {
  left: auto;
  right: -11px;
  border-width: 8px 0 8px 11px;
  border-color: transparent transparent transparent var(--color-border);
}
.iv-talk--right .iv-talk__bubble::after {
  left: auto;
  right: -10px;
  border-width: 8px 0 8px 11px;
  border-color: transparent transparent transparent var(--color-base-1);
}

@media (max-width: 640px) {
  .iv-talk {
    grid-template-columns: 64px 1fr;
    gap: var(--space-3);
  }
  .iv-talk--right {
    grid-template-columns: 1fr 64px;
  }
  .iv-talk__avatar { width: 64px; height: 64px; }
  .iv-talk__bubble {
    padding: var(--space-5) var(--space-6);
  }
  .iv-talk__bubble::before,
  .iv-talk__bubble::after {
    top: 20px;
  }
}

/* =========================================================
 * 8-4. 脚注アンカー（u-note-ref のジャンプ先）
 *
 * 本文中の <a class="u-note-ref" href="#note-1">*1</a> から
 * 参考文献ブロックの <span id="note-1"> などへジャンプしたとき、
 * 着地位置の固定ヘッダ分オフセットは html の scroll-padding-top（base.css）で共通化。
 * ここでは :target のハイライト表示のみを扱う。
 * ========================================================= */
.article-detail__content [id^="note-"]:target {
  background: color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 18%, transparent);
  border-radius: var(--radius-sm);
  padding: 0 0.2em;
}

/* =========================================================
 * 9. ユーティリティ（共通: u-*）
 * ========================================================= */
.u-marker {
  background: linear-gradient(
    transparent 60%,
    color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 12%, transparent) 60%
  );
  padding: 0 0.1em;
  font-weight: inherit;
}
/* --main / --accent / --accent-2 はいずれも記事テーマ色（--iv-intro-color）に追従。
   未設定時のフォールバックだけ用途別に変える（--main はブランド主色、--accent は濃緑、--accent-2 は青緑）。 */
.u-strong--main     { color: var(--iv-intro-color, var(--color-main-dark));    font-weight: var(--font-weight-bold); }
.u-strong--accent   { color: var(--iv-intro-color, var(--color-accent-1));     font-weight: var(--font-weight-bold); }
.u-strong--accent-2 { color: var(--iv-intro-color, var(--color-accent-2));     font-weight: var(--font-weight-bold); }
.u-strong--pink     { color: var(--color-thread-detail-best-ribbon);           font-weight: var(--font-weight-bold); }

/* クラス指定なしの素の <strong> はテーマカラー（iv-intro-color）を適用 */
.article-detail__content strong:not([class]) {
  color: var(--iv-intro-color, var(--color-accent-2));
  font-weight: var(--font-weight-bold);
}
/* 導入文ブロック内は白文字ベースなので除外（文字色は親の white を継承） */
.iv-intro strong:not([class]) { color: inherit; }
/* Tips の <strong> も基本は本文同等の扱いだが、バッジやタイトルには影響させない */

/* クラス指定なしの素の <a>（参考文献リンク・本文中のインライン参照リンク等）は
   テーマカラー（--iv-intro-color）に揃える。base.css のサイトデフォルトでは
   --color-main（明るい青緑）が当たり、Tips 本文では薄すぎて視認性が低いため。
   クラス付き <a>（.iv-toc__link / .u-note-ref / .iv-profile__link 等）は
   それぞれの色指定を維持できるよう :not([class]) で除外。
   iv-toc / iv-intro の内部はいずれも白文字ベースで、生の <a> は置かれない想定。 */
.article-detail__content a:not([class]) {
  color: var(--iv-intro-color, var(--color-accent-2));
  text-decoration: underline;
  text-underline-offset: 0.2em;
}
.article-detail__content a:not([class]):hover,
.article-detail__content a:not([class]):focus-visible {
  opacity: 0.8;
}
/* 白抜きブロック内部は親の白文字を継承させる */
.iv-intro a:not([class]),
.iv-toc a:not([class]) { color: inherit; }

.u-text--sm    { font-size: var(--font-size-sm); }
.u-text--xs    { font-size: var(--font-size-xs); }
.u-text--muted { color: var(--color-text-secondary); }

.u-note-ref {
  display: inline-block;
  font-size: 0.7em;
  vertical-align: super;
  line-height: 1;
  margin-inline: 0.15em;
  color: var(--color-accent-2);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
}

/* =========================================================
 * 本文内テーブル（デフォルト）
 * article-detail__content 配下の素の <table> に適用。
 * th（ヘッダセル / 行ヘッダ）にテーマ色の薄い網掛け。
 *
 * 列幅の方針:
 *   - table-layout: auto（ブラウザ既定）で内容量に応じて列幅を自動配分。
 *   - th に white-space: nowrap を当てないこと。当てると、行ヘッダ（左列に
 *     <th> を使うパターン）のセルが改行禁止になり、列が内容全部の幅まで
 *     引き伸ばされて、本文 td 側が極端に狭くなる。
 *   - 長い和文/URL のはみ出し対策として overflow-wrap: anywhere を付与。
 * ========================================================= */
.article-detail__content table {
  width: 100%;
  border-collapse: collapse;
  margin: var(--space-8) 0;
  font-size: var(--font-size-sm);
  line-height: 1.7;
  table-layout: auto;
}
.article-detail__content th,
.article-detail__content td {
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  vertical-align: top;
  text-align: left;
  overflow-wrap: anywhere;
}
.article-detail__content th {
  background: color-mix(in srgb, var(--iv-intro-color, var(--color-accent-2)) 10%, var(--color-base-1));
  font-weight: var(--font-weight-bold);
}

@media (max-width: 640px) {
  .article-detail__content table {
    font-size: var(--font-size-xs);
  }
  .article-detail__content th,
  .article-detail__content td {
    padding: var(--space-2) var(--space-3);
  }
}
