@charset "UTF-8";

/*
Theme Name: Cocoon Child
Template: cocoon-master
Description: Cocoon child theme.
*/

/* ============================================================================
   恋愛相談メディア（site: renai）Cocoon子テーマ 追加CSS
   ----------------------------------------------------------------------------
   作成：2026-07-28
   改訂：2026-07-28 v2（トーン改訂＝丸ゴシック・角丸・生成り地。西森さん決定）
   適用先：WordPress 管理画面 > 外観 > カスタマイズ > 追加CSS
          （**このファイルがローカルの正**。管理画面側で直接編集したら必ずここへ書き戻す）

   **MMA Watch（kakutogi）の深紅デザインは持ち込まない。**
   読者層も、記事を読む状況も違う。あちらは「試合を楽しみに来た人」、こちらは
   「困っていて判断したい人」。強い色・煽る動きは、この読者には邪魔になる。

   設計の方針（依頼書§6 Phase 2）：
     - 落ち着き／判断のしやすさ／信頼感を優先する
     - 過度なピンク・ハート・スピリチュアル装飾・不安をあおる画像は使わない
     - モバイルファースト。本文16px以上、十分なコントラスト
     - 比較表はスマホで横スクロールできる
     - CTAは本文より目立ちすぎない
     - 広告表示とCTA近傍の注意書きが読みやすい

   命名規則：このサイト固有のクラスは `ren-` 接頭辞
   （`engine\blogmedia\relationship_render.py` が出力するクラス名と1対1で対応する）。
   MMA Watch側の `mmaw-` とは別系統で、混ざらない。

   ---------------------------------------------------------------------------
   v2で変えたこと（2026-07-28・西森さん指示「枠と書式が女性向けじゃない」）
   ---------------------------------------------------------------------------
   硬さの原因は色ではなく形だった。直角・罫線主体・等幅の日付・詰まった余白は、
   業務資料の型であってこの読者の画面ではない。次の6点を変えた。

     1. 角丸 6px → 16/18px（カード・枠）と999px（ラベル・ボタン）
     2. 区切りを罫線から**淡い面**へ。線を減らして余白で分ける
     3. 見出しの装飾：h2の下線 → 左の丸い縦線
     4. 見出し・ラベルだけ**丸ゴシック**（本文は従来どおりゴシック）
     5. 地の色を白 → 生成り #FAF7F2（冷たさの主因はここだった）
     6. 日付から等幅フォントをやめ、所要時間・公開日は表示しない

   **配色は「T1（生成り＋セージ）」、書体と形は「T3（丸ゴシック）」の組み合わせ。**
   混ぜたときにコントラストが3箇所AA未満になったため、次の2段構えにしてある。
   ここを崩すと夜間の可読性が落ちるので、値を変えるときは必ず再計測すること。

     --ren-accent-soft (#5E9187) … **面・ドット・飾り罫だけ**（白地に3.6:1＝図形の基準3.0は満たすが本文には足りない）
     --ren-accent      (#3D6B62) … **文字・リンク・白抜きの地**（白地に6.0:1）

   コントラスト実測（WCAG 2.1 相対輝度式・ライト）：
     ink #2C2A26 / 白 …………… 14.3:1
     muted #6F6A63 / 生成り ……… 5.0:1（日付もこの色。小さい文字ほど濃くする）
     accent #3D6B62 / 白 ………… 6.0:1
     accent / ペール #E8F0ED …… 5.2:1
     safety-ink / 砂 #F6F1E8 …… 7.1:1
     disclosure-ink / #F1EDE6 … 6.4:1
   ダーク側も同じ用途区分で全項目4.5:1以上を確認済み（面のみ3.0基準）。
   ============================================================================ */

/* 丸ゴシック。**見出しとラベルだけ**に使う（本文は端末標準のゴシックのまま）。
   日本語Webフォントは重いので、太さは700の1ウェイトだけ読む。Google Fontsの
   CSS2 APIは日本語をunicode-rangeで分割配信するので、実際に使う字だけが落ちてくる。
   `display=swap` を付けてあるため、読み込み前・失敗時は標準ゴシックで表示される
   （形と色は変わらないのでレイアウトは崩れない）。

   **より速くしたいときは** この@importを消し、Cocoon設定→アクセス解析・認証→
   「ヘッド用コード」に次の2行を入れる（@importはCSSの読み込みが終わるまで
   フォント取得が始まらないぶん遅い）。
     <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@700&display=swap">
   ---------------------------------------------------------------------------
   @importはCSSの先頭でなければ無効になる。この位置を動かさないこと。 */
@import url("https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@700&display=swap");

:root {
  /* ライト固定。端末がダークでも暗転させない＝フォーム部品・スクロールバーの色と、
     ブラウザ側の自動ダーク変換を止める（2026-07-28）。 */
  color-scheme: light;

  /* --- 配色（ライト） -------------------------------------------------------
     基調はセージ（青緑を少し明るく柔らげたもの）。落ち着きと「相談」の連想を
     持ちつつ、占い専業サイトに多い紫・ピンク・金の系統から離れる。彩度は意図的に低い。
     地を白ではなく生成りにしているのは、白＋寒色だと事務的に寄りすぎるため。 */
  --ren-ink: #2c2a26;           /* 本文 */
  --ren-muted: #6f6a63;         /* 補足・キャプション・日付 */
  --ren-accent: #3d6b62;        /* 文字・リンク・白抜きの地（6.0:1） */
  --ren-accent-soft: #5e9187;   /* 面・ドット・飾り罫（3.6:1／図形専用） */
  --ren-accent-dark: #2f5b54;   /* ホバー */
  --ren-accent-weak: #e8f0ed;   /* ラベル地・表のヘッダ背景など */
  --ren-page: #faf7f2;          /* ページ背景（生成り） */
  --ren-surface: #ffffff;       /* カード・表の地 */
  --ren-border: #efe9e0;

  /* 安全案内。**赤は使わない**——危険を伝える枠が赤いと、読んだ人の不安を増やす。
     視認はできるが刺激しない、砂色にする。 */
  --ren-safety-bg: #f6f1e8;
  --ren-safety-border: #e2d6bc;
  --ren-safety-ink: #5f4f2e;

  /* 広告表示。**目立たせすぎない**が、読み飛ばせない濃さにする。 */
  --ren-disclosure-bg: #f1ede6;
  --ren-disclosure-ink: #5a544d;

  /* 広告バッジ（一覧カード用） */
  --ren-ad-bg: #f7f0e0;
  --ren-ad-ink: #7a6428;

  /* --- 形 ------------------------------------------------------------------
     角丸は3段だけ。増やすと統一感が消える。 */
  --ren-radius: 16px;      /* カード・枠 */
  --ren-radius-lg: 18px;   /* ピラー枠・物差し枠 */
  --ren-radius-sm: 10px;   /* 小さい注記 */
  --ren-radius-pill: 999px;/* ラベル・ボタン */
  --ren-gap: 1.15rem;

  /* --- 書体 ----------------------------------------------------------------
     明朝は暗い画面・小さい級数で線が飛ぶため使わない。
     游ゴシックのウェイト崩れを避けて Noto/ヒラギノを先に置く。 */
  --ren-font-round: "Zen Maru Gothic", "Hiragino Maru Gothic ProN", "Hiragino Sans", "Noto Sans JP", "Meiryo", sans-serif;
  --ren-font-body: "Hiragino Sans", "Noto Sans JP", "Yu Gothic", "Meiryo", sans-serif;

  /* --- 装飾（ハーブ）--------------------------------------------------------
     2026-07-28 西森さん指示「文字や記事の邪魔にならない、かわいい装飾。ハーブのイメージ」。

     **画像ファイルは使わず、SVGをCSSに直接埋め込む。** 理由が3つある。
       1. 追加のHTTPリクエストが0（深夜のモバイル回線で開く読者が主）
       2. `mask-image` で塗るので、**色がテーマに追従する**（ダークでも自動で合う）
       3. 記事側のHTMLを一切変えずに足せる（レンダラの改修が要らない）

     置く場所は**余白だけ**。本文の背後・行間には置かない。不透明度も落としてある。
     読む邪魔をしないことが条件なので、増やしたくなっても本文まわりには広げないこと。 */

  /* 葉1枚（見出しのマーカー） */
  --ren-leaf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.5 3.5c-7 0-12 1.6-14.6 4.6C3.6 10.7 3 14 4.4 17.2l-2 2.6a1 1 0 0 0 1.5 1.2l2.1-2.4c3.2 1.4 6.6.8 9-1.7 2.9-2.9 4.4-7.6 5.5-13.4z'/%3E%3Cpath d='M6 18C8.5 13 12.5 9.5 18 7' fill='none' stroke='%23fff' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E");

  /* 小枝（枠の隅・区切り） */
  --ren-sprig: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 32'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.4' stroke-linecap='round'%3E%3Cpath d='M4 28C14 26 24 20 32 10'/%3E%3Cpath d='M12 24c-1-3 0-6 2-7 1 3 .6 5.6-2 7z'/%3E%3Cpath d='M12 24c3 .6 5.6-.4 7-2.6-3-1-5.6-.4-7 2.6z'/%3E%3Cpath d='M21 17c-1-3 0-6 2-7 1 3 .6 5.6-2 7z'/%3E%3Cpath d='M21 17c3 .6 5.6-.4 7-2.6-3-1-5.6-.4-7 2.6z'/%3E%3Cpath d='M29 9c-.6-2.6.4-5 2.4-6 .8 2.6.2 4.8-2.4 6z'/%3E%3C/g%3E%3C/svg%3E");

  /* ページ背景に敷くハーブのタイル（180×180で繰り返す）。
     **地の色との差をぎりぎりまで詰めてある**（#faf7f2 に対して #e9e3d6）。
     模様として認識できるが、文字の可読性には影響しない濃さ。
     色をSVGに直接書いているのは、背景全面にmaskを掛けると描画が重くなるため。
     ダーク用は下の @media で別のURLに差し替える。 */
  --ren-bg-pattern: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cg fill='none' stroke='%23e9e3d6' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M20 52c10-2 20-8 27-17'/%3E%3Cpath d='M27 47c-1-3 0-6 2-7 1 3 .6 5.6-2 7z'/%3E%3Cpath d='M27 47c3 .6 5.6-.4 7-2.6-3-1-5.6-.4-7 2.6z'/%3E%3Cpath d='M36 38c-1-3 0-6 2-7 1 3 .6 5.6-2 7z'/%3E%3Cpath d='M118 138c10-2 20-8 27-17'/%3E%3Cpath d='M125 133c-1-3 0-6 2-7 1 3 .6 5.6-2 7z'/%3E%3Cpath d='M125 133c3 .6 5.6-.4 7-2.6-3-1-5.6-.4-7 2.6z'/%3E%3Cpath d='M134 124c-1-3 0-6 2-7 1 3 .6 5.6-2 7z'/%3E%3Cpath d='M143 30c-4 4-6 8-6 12a6 6 0 0 0 12 0c0-4-2-8-6-12z'/%3E%3Cpath d='M40 122c-4 4-6 8-6 12a6 6 0 0 0 12 0c0-4-2-8-6-12z'/%3E%3C/g%3E%3C/svg%3E");

  /* PCの左右の余白に置く大きな枝（コンテンツの外側なので、少し濃くてよい） */
  --ren-bough: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 320'%3E%3Cg fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M60 312C52 250 54 180 70 120 78 88 92 56 110 30'/%3E%3Cpath d='M62 260c-8-10-8-22-2-30 8 8 10 20 2 30z'/%3E%3Cpath d='M62 260c10 2 20-2 25-11-10-4-20-2-25 11z'/%3E%3Cpath d='M66 210c-8-10-8-22-2-30 8 8 10 20 2 30z'/%3E%3Cpath d='M66 210c10 2 20-2 25-11-10-4-20-2-25 11z'/%3E%3Cpath d='M74 160c-8-10-8-22-2-30 8 8 10 20 2 30z'/%3E%3Cpath d='M74 160c10 2 20-2 25-11-10-4-20-2-25 11z'/%3E%3Cpath d='M86 108c-6-10-5-21 1-28 7 8 8 19-1 28z'/%3E%3Cpath d='M86 108c10 1 19-3 23-12-10-3-19 0-23 12z'/%3E%3C/g%3E%3C/svg%3E");
}

/* --- ダークモードは使わない（2026-07-28 西森さん判断）-----------------------
   端末のダークモードに追従して暗転させていたが、**スマホ実機で色味が不自然になった**。
   子テーマの変数が効く範囲（本文・カード）だけが暗転し、Cocoonが持つヘッダー・
   キャッチフレーズ・一部の枠は白のまま残るため、上下でちぐはぐな画面になる。
   このサイトは生成り＋セージの明るい配色が前提なので、**ライト固定**にする。
   ライト固定の宣言（`color-scheme: light`）は :root に置いてある。
   復活させるなら、Cocoon側のヘッダー・フッターまで含めて配色を作り直すこと。
   （旧ダーク変数は git 履歴に残っている）
   --------------------------------------------------------------------------- */

/* ---------------------------------------------------------------------------
   1. 本文の基本
   モバイルファースト。既定を16pxではなく17pxにしているのは、この読者が
   「夜に、スマホで、集中しづらい状態で」読む前提があるため。
   --------------------------------------------------------------------------- */
/* **`body.body` を併記する理由**（2026-07-28に本番で実測して判明）
   Cocoonは `<body class="... body public-page">` と、**bodyにクラス`body`も付ける**。
   そして親テーマが `.body { font-size: 16px }`（480px以下）／`18px`（PC）を持っている。
   クラスセレクタ（詳細度0,1,0）は要素セレクタ`body`（0,0,1）より強いので、
   `body { font-size: 17px }` だけでは**どの画面幅でも負けて効かなかった**
   （実測：スマホ16px・PC18px。v1から効いていなかった）。
   `body.body`（0,1,1）で上書きする。要素側の`body`も残してあるのは、
   Cocoonがクラスを外した場合でも指定が生きるようにするため。 */
body,
body.body {
  color: var(--ren-ink);
  /* ページの地に、ハーブのタイルを敷く（2026-07-28 v2.2）。
     **記事本文は白い面（.main）の上に載る**ので、模様が文字にかかることはない。
     模様が出るのは、余白＝ヘッダー・カードの隙間・サイドバー・フッターだけ。 */
  background-color: var(--ren-page);
  background-image: var(--ren-bg-pattern);
  background-repeat: repeat;
  background-attachment: fixed;   /* スクロールで模様が流れない＝落ち着いて見える */
  font-size: 17px;
  line-height: 1.9;
  letter-spacing: 0.02em;
  font-family: var(--ren-font-body);
}

/* 段落の行間。bodyの1.9が継承されず親テーマの1.8になっていた（実測）ので明示する。
   夜に読む前提なので、ここは詰めない。 */
.entry-content p {
  margin: 0 0 1.4em;
  line-height: 1.9;
}

/* 読み幅。1行が長いと目が戻れなくなるので、PCでも広げすぎない。 */
.entry-content {
  max-width: 44em;
}

/* PCでも17pxのまま（親テーマは18pxにする）。1行が長くなりすぎないようにするため。 */
@media screen and (min-width: 768px) {
  body,
  body.body { font-size: 17px; }
}

/* 記事本体の面。生成りの地に白い紙を1枚置く形にして、本文の領域を分かりやすくする。 */
.main {
  background: var(--ren-surface);
  border-radius: var(--ren-radius-lg);
  border: 1px solid var(--ren-border);
}

/* ---------------------------------------------------------------------------
   2. 見出し
   v2：h2の下線（横罫）をやめ、**左の丸い縦線**にした。線が横に伸びないぶん
   紙面感が消える。区切りとしての効きは同じ。ここがセージ（面用）の主な出番。
   --------------------------------------------------------------------------- */
.entry-content h2 {
  font-family: var(--ren-font-round);
  font-size: 1.32em;
  line-height: 1.6;
  margin: 2.6em 0 1em;
  padding: 0;
  border-bottom: none;
  background: none;
  color: var(--ren-ink);
  display: flex;
  align-items: center;
  gap: 0.45em;
}

/* v2.1：丸い縦線 → **葉のマーカー**。
   見出しの左に1枚だけ。文字と重ならない位置で、字面より少し小さくする。 */
.entry-content h2::before {
  content: "";
  flex: none;
  width: 1.05em;
  height: 1.05em;
  background: var(--ren-accent-soft);
  -webkit-mask-image: var(--ren-leaf);
  mask-image: var(--ren-leaf);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-position: center;
  mask-position: center;
  transform: translateY(0.05em);
}

/* mask未対応ブラウザでは葉が出ず、四角い塗りが残ってしまう。
   その場合だけ従来の丸い縦線に戻す（見た目が壊れるより地味なほうがいい）。 */
@supports not ((-webkit-mask-image: none) or (mask-image: none)) {
  .entry-content h2::before {
    width: 5px;
    height: 1.15em;
    border-radius: var(--ren-radius-pill);
  }
}

.entry-content h3 {
  font-family: var(--ren-font-round);
  font-size: 1.12em;
  line-height: 1.65;
  margin: 2em 0 0.8em;
  padding-left: 0;
  border-left: none;
  background: none;
  color: var(--ren-accent);
}

.entry-title,
.article-header h1 {
  font-family: var(--ren-font-round);
  font-size: 1.5em;
  line-height: 1.6;
}

@media screen and (min-width: 768px) {
  .entry-title, .article-header h1 { font-size: 1.75em; }
}

/* ---------------------------------------------------------------------------
   3. 広告表示（ren-disclosure）
   景品表示法の表示。記事1本につき冒頭1箇所のみ（2026-08-10：西森さん指示で
   「一番最初か最後に1個だけ目立たないように小さく」へ統一。地色の帯（箱）をやめ、
   本文から浮かない控えめな注記にする。同日Codex監査指摘①＝#999は白系背景で
   コントラスト不足（実測約2.73〜2.67:1）のため14px・#6F6A63へ修正
   （--ren-surface #FFFFFF比 約5.36:1・--ren-page #FAF7F2比 約5.02:1でAA基準を満たす）。
   --------------------------------------------------------------------------- */
.ren-disclosure {
  margin: 0 0 1em;
  font-size: 14px;
  color: #6F6A63;
  line-height: 1.8;
}

/* ---------------------------------------------------------------------------
   4. 比較表（ren-table / ren-table-wrap）
   **横スクロールできること**が要件（320px幅で本文まで横に流れない）。
   `overflow-x: auto` は包み側だけに付け、`table` には `min-width` を与える。
   --------------------------------------------------------------------------- */
.ren-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: 0 0 0.6em;
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius);
  background: var(--ren-surface);
}

/* キーボード操作でも横スクロールできるようフォーカスを見せる（role="region" + tabindex） */
.ren-table-wrap:focus-visible {
  outline: 2px solid var(--ren-accent);
  outline-offset: 2px;
}

.ren-table {
  width: 100%;
  min-width: 640px;   /* これ未満に潰すとセルが縦積みになって読めない */
  border-collapse: collapse;
  font-size: 0.92em;
  line-height: 1.7;
  background: var(--ren-surface);
}

.ren-table th,
.ren-table td {
  padding: 0.75em 0.9em;
  border-bottom: 1px solid var(--ren-border);
  text-align: left;
  vertical-align: top;
  white-space: normal;
}

.ren-table thead th {
  font-family: var(--ren-font-round);
  background: var(--ren-accent-weak);
  color: var(--ren-accent);
  font-weight: 700;
  white-space: nowrap;
  position: sticky;
  top: 0;
}

/* 1列目（サービス名）は横スクロール中も残す＝どの行を見ているか見失わない */
.ren-table tbody td:first-child {
  font-weight: 600;
}

.ren-table tbody tr:last-child td {
  border-bottom: none;
}

.ren-table-note {
  margin: 0 0 1.8em;
  color: var(--ren-muted);
  font-size: 0.82em;
  line-height: 1.8;
}

/* 比較対象が1件しかないときの見せ方（2026-07-29）。1行だけの表は「比較した結果これしか
   ない」と読めるので、表ではなくそのサービスの要点として出す（`_render_single_service_facts`）。
   スマホでは横に並べず、項目名の下に値を置く。 */
.ren-facts {
  margin: 0 0 1em;
  padding: 1em 1.1em;
  background: var(--ren-page);
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius);
  line-height: 1.85;
}
.ren-facts dt {
  color: var(--ren-muted);
  font-size: 0.85em;
}
.ren-facts dd {
  margin: 0 0 0.9em;
}
.ren-facts dd:last-child {
  margin-bottom: 0;
}
@media (min-width: 600px) {
  .ren-facts {
    display: grid;
    grid-template-columns: 8.5em 1fr;
    column-gap: 1em;
    row-gap: 0.5em;
  }
  .ren-facts dt { font-size: 0.9em; }
  .ren-facts dd { margin: 0; }
}

/* 適合判定のラベル。**色だけで意味を伝えない**（文字でも「向いている／向かない」と出る）。 */
.ren-fit {
  display: inline-block;
  padding: 0.15em 0.7em;
  border-radius: var(--ren-radius-pill);
  font-size: 0.9em;
  white-space: nowrap;
  border: 1px solid transparent;
}
.ren-fit--good        { background: var(--ren-accent-weak); color: var(--ren-accent); font-weight: 600; }
.ren-fit--conditional { background: var(--ren-page); color: var(--ren-ink); border-color: var(--ren-border); }
.ren-fit--not_suitable{ background: var(--ren-page); color: var(--ren-muted); border-color: var(--ren-border); }

/* ---------------------------------------------------------------------------
   5. 安全案内（ren-safety）
   高リスクの文脈で商用CTAの代わりに出る枠。**このサイトで一番大事な要素**なので、
   本文より少しだけ強い。ただし赤・警告アイコン・点滅は使わない。
   v2：左の太罫をやめ、砂色の面だけで持たせる（枠線を足すと注意喚起が強くなりすぎる）。
   --------------------------------------------------------------------------- */
.ren-safety {
  margin: 1.8em 0;
  padding: 1.2em 1.25em;
  background: var(--ren-safety-bg);
  border: none;
  border-radius: var(--ren-radius-lg);
  color: var(--ren-safety-ink);
  font-size: 0.96em;
  line-height: 1.9;
}

.ren-safety p { margin: 0 0 0.7em; }
.ren-safety p:last-child { margin-bottom: 0; }
.ren-safety strong { color: var(--ren-safety-ink); }

/* 電話番号は端末で押せるように大きめ・折り返さない */
.ren-safety a[href^="tel:"] {
  white-space: nowrap;
  font-weight: 700;
  color: var(--ren-safety-ink);
}

/* ---------------------------------------------------------------------------
   5-2. 相談先の振り分け（ren-router）※v2で新規
   `relationship_render.py` が出す3つの形のうち、**2つがCSS未定義のまま**だった
   （2026-07-28に発見）。素の`<div>`で出ていたので、地も余白も付いていない。
     - .ren-router--support … affiliate_allowed が false のとき（＝商用CTAを出さない
       高リスク文脈）に出る枠。**安全案内と同じ重みの要素**なので同じ体裁にする。
     - .ren-router（div） …… 判断材料が足りないときの但し書き。
     - table.ren-router …… 適合表。こちらは .ren-table 側のスタイルが当たっている。
   --------------------------------------------------------------------------- */
div.ren-router {
  margin: 1.8em 0;
  padding: 1.2em 1.25em;
  background: var(--ren-page);
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius-lg);
  font-size: 0.94em;
  line-height: 1.9;
  color: var(--ren-muted);
}
div.ren-router p { margin: 0 0 0.7em; }
div.ren-router p:last-child { margin-bottom: 0; }

/* 高リスク文脈の枠は安全案内と同じ砂色。**ここだけは読み飛ばされたくない**ので、
   本文と同じ濃さの文字にする（muted へ落とさない）。 */
div.ren-router--support {
  background: var(--ren-safety-bg);
  border: none;
  color: var(--ren-safety-ink);
  font-size: 0.96em;
}
div.ren-router--support p:first-child {
  font-family: var(--ren-font-round);
  font-weight: 700;
}

/* ---------------------------------------------------------------------------
   6. CTA（ren-cta）
   **本文より目立ちすぎない**のが要件。ボタンの塗りは使わず、枠線＋控えめな地色。
   幅も画面いっぱいにしない（full width の塗りボタンは「押させる」圧が出る）。

   v2でも**この判断は変えていない**。形だけピル型に合わせた。
   マイクロコピー2原則（摩擦の先回り解消・メリット変換）は文言側の話なので、
   ここでは「注記を置く場所」を確保するだけにしてある（.ren-cta__note）。
   --------------------------------------------------------------------------- */
/* CTA直前の確認事項（料金条件・無料条件・利用検証状態・確認日）。
   ブランド設計§6が「CTA直前に必ず出す」と決めている5項目。**CTAより先に読ませたい**ので、
   ボタンより上に、ボタンと同じくらいの視認性で置く（小さくして読み飛ばさせない）。 */
.ren-cta__conditions {
  margin: 1.8em 0 0.6em;
  padding: 1em 1.1em;
  background: var(--ren-page);
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius);
  font-size: 0.9em;
  line-height: 1.85;
}
.ren-cta__conditions p {
  margin: 0 0 0.5em;
}
.ren-cta__conditions ul {
  margin: 0;
  padding-left: 1.2em;
}
.ren-cta__conditions li {
  margin-bottom: 0.35em;
}
.ren-cta__conditions li:last-child {
  margin-bottom: 0;
}
/* 要点リストの出所ラベル（2026-07-29）。以前は各行の末尾に「（広告主の説明）」が付いていた
   ＝毎行に出て「自分では推せない商品」に読めた。ブロック単位で1回だけ、サービス名の隣に
   小さく置く（読者が要点より先に読むものではないが、出所は辿れる状態を保つ）。 */
.ren-cta__source {
  display: block;
  margin-top: 0.2em;
  color: var(--ren-muted);
  font-size: 0.85em;
  font-weight: 400;
  line-height: 1.7;
}

.ren-cta {
  margin: 0.6em 0 0.4em;
}

.ren-cta__link {
  display: inline-block;
  max-width: 100%;
  /* padding・borderを幅に含める。320pxで `width: 100%` にしたとき（下の@media）、
     content-boxのままだと padding+border の分だけ画面外へはみ出す
     （2026-07-28の表示検証で実際に3px溢れた）。 */
  box-sizing: border-box;
  padding: 0.85em 1.6em;
  border: 1.5px solid var(--ren-accent);
  border-radius: var(--ren-radius-pill);
  /* 2026-08-09：白抜き（白地に緑文字）から**塗り**へ。西森さん「こっちの2ブログは
     アフィリエイトの押下意欲が全体的に湧かない」。同日に電話占い系の競合を実測したところ、
     oteranavi は緑の塗り・幅560px・太字700 で、当サイトだけが枠線ボタンだった。
     `--ren-accent` は白との対比が 6.04:1（hover の `--ren-accent-dark` は 7.65:1）で、
     どちらもWCAG AAの4.5:1を満たす＝**白抜きの地**として設計時から想定されている色。 */
  background: var(--ren-accent);
  color: var(--ren-surface);
  font-family: var(--ren-font-round);
  font-size: 0.98em;
  font-weight: 700;
  text-decoration: none;
  line-height: 1.5;
  transition: background-color 0.15s ease;
}

.ren-cta__link:hover,
.ren-cta__link:focus {
  background: var(--ren-accent-dark);
  border-color: var(--ren-accent-dark);
  color: var(--ren-surface);
  text-decoration: none;
}

.ren-cta__link:focus-visible {
  outline: 2px solid var(--ren-accent);
  outline-offset: 3px;
}

/* ボタンの下に置く1行（「会員登録なしで、料金と対応時間だけ確認できます」等）。
   **摩擦の先回り**を書く場所。文言は記事側だが、枠は必ずここに出る。 */
.ren-cta__note {
  margin: 0 0 1.6em;
  color: var(--ren-muted);
  font-size: 0.84em;
  line-height: 1.8;
}

/* ---------------------------------------------------------------------------
   7. 予算・時間の注記（ren-budget）
   CTAの近傍に必ず出る。CTAより弱く、しかし読み飛ばされない位置づけ。
   --------------------------------------------------------------------------- */
.ren-budget {
  margin: 0 0 2em;
  padding: 1em 1.1em;
  background: var(--ren-page);
  border: 1px dashed var(--ren-border);
  border-radius: var(--ren-radius);
  color: var(--ren-muted);
  font-size: 0.9em;
  line-height: 1.85;
}
.ren-budget p { margin: 0; }

/* ---------------------------------------------------------------------------
   8. 初回特典・出典・調査日
   --------------------------------------------------------------------------- */
.ren-benefit {
  margin: 0 0 1.8em;
  padding-left: 1.2em;
}
.ren-benefit li { margin-bottom: 0.8em; line-height: 1.85; }

.ren-meta {
  margin: 0 0 1.8em;
  padding: 0.9em 1.1em;
  background: var(--ren-page);
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius);
  font-size: 0.88em;
  color: var(--ren-muted);
}
.ren-meta p { margin: 0 0 0.35em; }
.ren-meta p:last-child { margin-bottom: 0; }

.ren-sources {
  margin: 0 0 1.8em;
  padding-left: 1.4em;
  font-size: 0.88em;
  color: var(--ren-muted);
  line-height: 1.85;
}
.ren-sources li { margin-bottom: 0.5em; }
.ren-sources a { color: var(--ren-accent); }

/* ---------------------------------------------------------------------------
   8-2. 物差し枠（ren-scale）※v2で新規・**レンダラ未対応**
   心理学（投資モデル／スターンバーグの3要素／認知行動療法の整理法）を
   「読者が自分の状況を言語化する物差し」として出す枠。差別化の芯にあたる部品。

   **設計上の制約をCSSで担保している**：
     - チェックは押せそうに見えるが、**結果を判定しない**（スコアも診断名も出さない）。
       出した瞬間に「相手の気持ちの断定」になり prohibited_claims に触れる。
     - 枠の最後に必ず注記（.ren-scale__after）が入る。書き手が忘れても枠が要求する形。
     - 出所（.ren-scale__src）は枠の上に常設。俗説を書かない方針を見た目でも示す。

   これを使うには `relationship_render.py` に出力を足す必要がある（未実装）。
   足すまでこのブロックは無害に眠る。
   --------------------------------------------------------------------------- */
.ren-scale {
  margin: 1.8em 0;
  padding: 1.15em 1.2em 1.1em;
  background: var(--ren-accent-weak);
  border-radius: var(--ren-radius-lg);
}
.ren-scale__title {
  font-family: var(--ren-font-round);
  font-size: 1em;
  font-weight: 700;
  color: var(--ren-accent);
  margin: 0 0 0.25em;
}
.ren-scale__src {
  margin: 0 0 0.9em;
  font-size: 0.8em;
  color: var(--ren-muted);
  line-height: 1.7;
}
.ren-scale__items {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.5em;
}
.ren-scale__items li {
  position: relative;
  margin: 0;
  padding: 0.7em 0.85em 0.7em 2.3em;
  background: var(--ren-surface);
  border-radius: 12px;
  font-size: 0.9em;
  line-height: 1.85;
}
.ren-scale__items li::before {
  content: "";
  position: absolute;
  left: 0.85em;
  top: 1.05em;
  width: 13px;
  height: 13px;
  border-radius: 4px;
  border: 1.5px solid var(--ren-accent-soft);
  background: var(--ren-surface);
}
.ren-scale__after {
  margin: 0.9em 0 0;
  font-size: 0.84em;
  line-height: 1.85;
  color: var(--ren-ink);
}

/* ---------------------------------------------------------------------------
   9. 空ブロックの畳み込み
   CTAが0件・関連記事が0件のとき、レンダラは目印のdivだけを返す（render.py の
   EMPTY_BLOCK_HTML）。見出しごと消して、空欄が残らないようにする。
   **提携前は必ずここが効く**（CTA 0件が通常状態のため）。
   --------------------------------------------------------------------------- */
.mmaw-empty { display: none; }
.entry-content h2:has(+ .mmaw-empty),
.entry-content h2:has(+ p + .mmaw-empty) { display: none; }

/* ---------------------------------------------------------------------------
   10. 内部リンク・パンくず・フッター
   --------------------------------------------------------------------------- */
.mmaw-related,
.ren-related {
  margin: 0 0 1.8em;
  padding-left: 1.2em;
}
.mmaw-related li,
.ren-related li { margin-bottom: 0.5em; }

.entry-content a {
  color: var(--ren-accent);
  text-underline-offset: 0.2em;
}
.entry-content a:hover { color: var(--ren-accent-dark); }

/* 【2026-08-10 修正】**CTAボタンの文字が本番で見えていなかった。**
   上の `.entry-content a`（詳細度0-1-1）が `.ren-cta__link`（0-1-0）に勝ち、しかも
   記述順も後ろなので、ボタンの `color: var(--ren-surface)` が `--ren-accent` に
   上書きされていた。ボタンの背景も `--ren-accent` なので、**文字色と背景が同色**になり、
   緑の角丸に何も書かれていない状態で本番に出ていた（西森さんのスクリーンショットで発覚）。
   2026-08-09にCTAを白抜きから塗りへ変えたときの見落とし——白抜き時代は文字色が
   `--ren-accent` で正しかったため、競合しても症状が出ていなかった。
   詳細度（0-2-1）と記述順の両方で勝たせる。 */
.entry-content a.ren-cta__link,
.entry-content a.ren-cta__link:hover,
.entry-content a.ren-cta__link:focus {
  color: var(--ren-surface);
}

/* パンくずは**ピラー⇄クラスターの階層を読者に見せる唯一の常設要素**（新設計）。
   末尾の関連記事だけに頼らないための導線なので、小さくしすぎない。 */
.breadcrumb {
  font-size: 0.85em;
  color: var(--ren-muted);
  line-height: 1.8;
}
.breadcrumb a { color: var(--ren-accent); }

/* ---------------------------------------------------------------------------
   11. 320px幅での破綻防止
   最小想定端末。ここで本文・表・CTAが画面外へはみ出さないことを確認する
   （`design\renai\_preview\` を320pxで開いて目視）。
   --------------------------------------------------------------------------- */
@media screen and (max-width: 359px) {
  body,
  body.body { font-size: 16px; }          /* 要件の下限。これ未満にはしない */
  .entry-content h2 { font-size: 1.2em; }
  .ren-cta__link { width: 100%; text-align: center; padding: 0.8em 0.8em; }
  .ren-safety, .ren-budget, div.ren-router { padding: 0.95em 0.9em; }
  .ren-scale { padding: 1em 0.9em; }
  .ren-table { font-size: 0.88em; }
}

/* 本文・画像・埋め込みが横に溢れない（表は包み側だけがスクロールする） */
.entry-content img,
.entry-content iframe { max-width: 100%; height: auto; }
.entry-content { overflow-wrap: anywhere; }

/* ---------------------------------------------------------------------------
   12. 記事一覧のカード（Cocoon）※v2で新規／**v2.1でサムネ表示に変更**
   2026-07-28 西森さん指示「記事を見る前にサムネ画像が表示されるようにしてほしい」。
   （v2では非表示にしていた。判断が変わったので出す方へ戻す）

   **サムネは左、テキストと同じくらいの大きさで置く**（2026-07-28 v2.2 西森さん指示。
   v2.1では上に全幅で置いていたが「画像がばかでかい」ため小さくした）。
   幅104px（PCは128px）・4:3。1画面あたりの記事数を確保するのが狙い。

   横長1200×630を4:3に収めるので左右が少し切られる。中央基準でクロップするため、
   **アイキャッチは中央に主題を置く**とサムネでの見え方が安定する。

   Cocoonの実マークアップ（MMA Watch側で突合済み）：
     <a class="entry-card-wrap a-wrap"><article class="entry-card e-card">
       <figure class="entry-card-thumb card-thumb e-card-thumb">…
       <div class="entry-card-content">…
   --------------------------------------------------------------------------- */
/* サムネ左・本文右の横並び。Cocoonのカードタイプ設定に依存しないよう明示する。
   `align-items: stretch` にしているのは、**サムネの高さをテキスト側に合わせる**ため。
   固定比率で置くと、テキストが2〜3行のときにサムネの上下だけ余白が余って見える
   （2026-07-28の実機で発生）。 */
.entry-card-wrap .entry-card,
.entry-card-wrap .e-card {
  display: flex;
  align-items: stretch;
  gap: 0.75em;   /* スマホでテキストの幅を稼ぐため0.9em→0.75em（2026-07-28） */
}

/* **`!important` を付けている理由**（2026-07-28の実機で確認）
   Cocoonは横型カードを「サムネを左に絶対配置し、本文に `margin-left: 330px` を空ける」
   という組み方で作っており、`.entry-card-thumb { width: 320px }` とセットで効いている。
   こちらはflexで組み替えるので、その2つが残っていると
     - サムネが指定幅にならない
     - テキストがカードの右端へ押し出される（実測：サムネ右端から344px空く）
   という壊れ方をする。詳細度を上げるだけでは競合が読みにくいため、
   **この2プロパティに限って**強制する。他の箇所では使わないこと。 */
/* **枠の比率は元画像（1200×630）に合わせる。**
   カードの高さに合わせて縦に伸ばすと、横長の絵が左右から切られて
   文字が読めなくなる（2026-07-28の実機で発生）。絵を切らないことを優先し、
   高さはテキスト側に合わせず、上下中央に置く。 */
.entry-card-wrap .entry-card .entry-card-thumb,
.entry-card-wrap .e-card .entry-card-thumb {
  display: block;
  float: none;
  flex: none;
  width: 116px !important;   /* 130px→116px（2026-07-28）。テキスト側を約20px広げる */
  max-width: 116px !important;
  margin: 0;
  border-radius: 10px;
  overflow: hidden;
  align-self: center;             /* 上下中央＝画像の上下の余白が対称になる */
  aspect-ratio: 1200 / 630;       /* 元画像と同じ比率。ここで切り取りが起きない */
  min-height: 0;
  background: var(--ren-accent-weak);
}

/* タブレット（768〜1023px）。**PCと同じくgridで組む。**
   ここをflexのままにすると、`aspect-ratio`のせいで幅指定が効かずスマホと同じ116pxに
   なる（2026-07-29に実測して判明。旧`width: 190px !important`は無視されていた）。 */
@media screen and (min-width: 768px) and (max-width: 1023px) {
  .entry-card-wrap .entry-card,
  .entry-card-wrap .e-card {
    display: grid;
    grid-template-columns: 190px 1fr;
    gap: 1em;
    align-items: center;
  }
  .entry-card-wrap .entry-card .entry-card-thumb,
  .entry-card-wrap .e-card .entry-card-thumb {
    width: auto !important;
    max-width: none !important;
    height: auto !important;
    aspect-ratio: 1200 / 630;
  }
}

/* テキスト側。min-width:0 がないと、長いタイトルでflexが破綻して横に溢れる。 */
.entry-card-wrap .entry-card .entry-card-content,
.entry-card-wrap .e-card .entry-card-content {
  flex: 1 1 auto;
  min-width: 0;
  width: auto !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.entry-card-thumb img,
.entry-card-thumb .card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 0;
}

/* アイキャッチ未設定の記事には、Cocoonが `no-image` の代替画像を出す。
   それは紙面に合わないので、その場合だけ枠ごと畳んでテキストのカードにする。 */
.entry-card-thumb:has(.no-image) { display: none; }

/* Cocoonはサムネの左上に**黒いカテゴリラベル**（.cat-label）を重ねる。
   小さいサムネの上に載ると絵を隠すうえ、色もこの配色に合わない（実機で「未分類」の
   黒箱が画像を潰していた）。ここでは消して、カテゴリはテキスト側の
   `.entry-category`（ピル型・ペール緑）だけで見せる。 */
.entry-card-thumb .cat-label,
.card-thumb .cat-label,
.entry-card-thumb .entry-category { display: none; }

/* カードの余白と角丸（2026-07-28 実機で詰めた）。
   スマホでは padding 1em＋角丸16px だと、枠が主張するわりに中身の入る幅が足りず、
   タイトルが4行に折り返していた。**枠を細く・角を小さく・中身を広く**にする。 */
.entry-card-wrap {
  display: block;
  background: var(--ren-surface);
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius-sm);
  padding: 0.8em 0.85em 0.7em;
  margin-bottom: 0.6em;
  transition: border-color 0.15s ease;
}
@media screen and (min-width: 768px) {
  /* PCは横幅に余裕があるので、従来どおりゆったり見せる */
  .entry-card-wrap {
    border-radius: var(--ren-radius);
    padding: 0.95em 1em 0.85em;
  }
}
.entry-card-wrap:hover {
  background: var(--ren-surface);
  border-color: var(--ren-accent-soft);
}
.entry-card-wrap:focus-visible {
  outline: 2px solid var(--ren-accent);
  outline-offset: 2px;
}

/* 一覧のタイトルは**3行で切る**（2026-07-28 実機で修正）。
   スマホでタイトルが4行に折り返し、テキスト側だけが縦に伸びてサムネとの釣り合いが
   崩れていた（西森さん指摘「画像と文字と枠のバランスが悪い」）。
   行間も本文ほど空けない——一覧の見出しは読み流す対象で、1.75だと間延びする。 */
.entry-card-title {
  font-family: var(--ren-font-round);
  font-size: 0.95em;
  line-height: 1.55;
  font-weight: 700;
  color: var(--ren-ink);
  margin: 0 0 0.4em;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}

/* 抜粋は「この記事が想定している読者」の1行として使う（記事側の書き出しと同じ文字列）。
   2行で切る。3行以上出すと、どの記事も同じ長さに見えて選べなくなる。 */
.entry-card-snippet {
  font-size: 0.8em;
  line-height: 1.8;
  color: var(--ren-muted);
  margin: 0 0 0.5em;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
/* Cocoonがスマホで抜粋を消す指定（.no-sp-snippet .entry-card-snippet）に負けないよう
   詳細度を合わせる。MMA Watch側で同じ問題が起きている（適用メモ⓪-1-2）。 */
.no-sp-snippet .entry-card-snippet { display: -webkit-box; }

/* カテゴリ＝クラスター名。ピル型のラベルにして、束の切り替わりを見せる。 */
.entry-card-categorys .entry-category,
.entry-category {
  font-family: var(--ren-font-round);
  display: inline-block;
  background: var(--ren-accent-weak);
  color: var(--ren-accent);
  font-size: 0.72em;
  font-weight: 700;
  padding: 0.25em 0.9em;
  border-radius: var(--ren-radius-pill);
  border: none;
  margin-bottom: 0.5em;
}

/* ---------------------------------------------------------------------------
   13. 日付の扱い（2026-07-28 西森さん決定）
   - **所要時間（約7分）は出さない**……文字数からの機械計算で、出所として弱いため
   - **公開日は出さない**……確認日と2つ並ぶと、どちらを見ればいいか分からなくなる
   - **確認日は残す**……「確認した日を書いています」がこのサイトの芯（プロフィール文）

   Cocoonが出す投稿日・更新日はここで畳む。確認日は記事本文の `.ren-meta` に出る。
   ※一覧カードにも確認日を出すには生成側の対応が要る（下の「未対応」を参照）。
   --------------------------------------------------------------------------- */
.entry-card-meta .post-date,
.entry-card-meta .post-update,
.entry-card-info .post-date,
.entry-card-info .post-update,
.entry-card-wrap .date-tags {
  display: none;
}

/* 記事ページ側も同様（本文の .ren-meta にある確認日だけを見せる） */
.article .post-date,
.article .post-update,
.date-tags .post-date,
.date-tags .post-update {
  display: none;
}

/* ---------------------------------------------------------------------------
   14. トップページのパーツ ※HTMLの生成は未実装
   トップは `_ルール\トップページ構成.md` の並び（悩みへの共感 → 悩みから探す →
   今の状態から探す → 無料・身近な相談 → 利用前の確認 → サービス情報 → 方針）で組む。
   ピラー記事（who-to-consult）は**他のカードと同じ見た目にしない**——「まず読む記事」
   であることが階層の説明になるため。

   下のクラスは、生成側（build_home.py 相当）が対応したときに効く。
   **現状の build_home.py は SITE_ID = "kakutogi" を直に持っており、renai では使えない**
   （2026-07-28に確認。--site 引数はあるが、モジュール定数の ARTICLES_DIR が
   kakutogi 固定のまま）。トップを組むときはここから直すこと。
   --------------------------------------------------------------------------- */
.ren-pillar {
  background: var(--ren-surface);
  border: 2px solid var(--ren-accent-weak);
  border-radius: var(--ren-radius-lg);
  padding: 1.1em 1.1em 1em;
  margin: 0 0 1.6em;
}
.ren-pillar__label {
  display: inline-block;
  font-family: var(--ren-font-round);
  font-size: 0.72em;
  font-weight: 700;
  color: var(--ren-surface);
  background: var(--ren-accent);
  padding: 0.25em 0.9em;
  border-radius: var(--ren-radius-pill);
  margin: 0 0 0.7em;
}
.ren-pillar__title {
  font-family: var(--ren-font-round);
  font-size: 1.05em;
  line-height: 1.7;
  font-weight: 700;
  margin: 0 0 0.5em;
}
.ren-pillar__desc {
  margin: 0 0 0.7em;
  font-size: 0.85em;
  line-height: 1.9;
  color: var(--ren-muted);
}

/* クラスター見出し。左のドットだけ明度を3段に振る。**色だけに意味を持たせない**
   （束の名前が文字で出るので、色覚特性や暗所でも情報は落ちない）。 */
.ren-cluster__name {
  font-family: var(--ren-font-round);
  display: flex;
  align-items: center;
  gap: 0.6em;
  font-size: 0.85em;
  font-weight: 700;
  color: var(--ren-accent);
  background: var(--ren-accent-weak);
  border-radius: var(--ren-radius-pill);
  padding: 0.45em 1em;
  margin: 0 0 0.7em;
}
.ren-cluster__name::before {
  content: "";
  flex: none;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--ren-accent);
}
.ren-cluster--2 .ren-cluster__name::before { background: var(--ren-accent-soft); }
.ren-cluster--3 .ren-cluster__name::before { background: #8ab0a6; }
.ren-cluster__count {
  margin-left: auto;
  font-weight: 400;
  font-size: 0.85em;
}

/* 無料窓口の枠。**砂色はここと安全案内だけに使う**——色に意味を持たせるなら、
   その色を他で使わないほうが強い（＝砂色＝お金がかからない選択肢／安全側）。 */
.ren-free {
  background: var(--ren-safety-bg);
  color: var(--ren-safety-ink);
  border-radius: var(--ren-radius-lg);
  padding: 1.1em 1.15em;
  margin: 0 0 1.6em;
}
.ren-free__title {
  font-family: var(--ren-font-round);
  font-size: 0.95em;
  font-weight: 700;
  margin: 0 0 0.5em;
}
.ren-free p { margin: 0; font-size: 0.86em; line-height: 1.9; }

/* 広告を含む記事のバッジ。目立たせないが、読み飛ばせない濃さ。 */
.ren-ad-badge {
  display: inline-block;
  font-size: 0.68em;
  color: var(--ren-ad-ink);
  background: var(--ren-ad-bg);
  padding: 0.2em 0.8em;
  border-radius: var(--ren-radius-pill);
}

/* ---------------------------------------------------------------------------
   14-2. ハーブの装飾（2026-07-28 v2.1）
   **本文の邪魔をしないことが条件。** 守っているルールは3つ。
     - 置くのは「枠の余白」だけ。文字の背後・行間には置かない
     - 不透明度は0.2〜0.35。地の色に沈む濃さにする
     - `pointer-events: none` で操作の邪魔もしない
   増やしたくなったときも、本文（.entry-content p）まわりには広げないこと。
   --------------------------------------------------------------------------- */

/* PCの左右の余白に、大きな枝を1本ずつ。
   **コンテンツの外側にしか出さない。** 画面が1180px以上あるときだけ表示し、
   それ未満（＝余白が足りない幅）では出さない。position:fixed なので
   スクロールしても動かず、背景の一部として静かに存在する。 */
@media screen and (min-width: 1180px) {
  body::before,
  body::after {
    content: "";
    position: fixed;
    top: 12vh;
    width: 120px;
    height: 320px;
    z-index: 0;
    pointer-events: none;
    opacity: 0.14;
    background: var(--ren-accent-soft);
    -webkit-mask-image: var(--ren-bough);
    mask-image: var(--ren-bough);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-size: contain;
  }
  body::before { left: 12px; }
  body::after { right: 12px; transform: scaleX(-1); }

  /* 枝より前面にコンテンツを置く（Cocoonのラッパー） */
  #container,
  .wrap,
  #header-container { position: relative; z-index: 1; }
}

/* 枠の右上に小枝を1本。安全案内・無料窓口・ピラーの3つだけに付ける
   （どれも「囲みの中で完結する」ブロックなので、隅に余白がある）。 */
.ren-safety,
.ren-free,
.ren-pillar {
  position: relative;
  overflow: hidden;   /* 小枝が枠からはみ出さない */
}

.ren-safety::after,
.ren-free::after,
.ren-pillar::after {
  content: "";
  position: absolute;
  top: 0.5em;
  right: 0.6em;
  width: 54px;
  height: 36px;
  pointer-events: none;
  background: currentColor;
  opacity: 0.22;
  -webkit-mask-image: var(--ren-sprig);
  mask-image: var(--ren-sprig);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  transform: scaleX(-1);   /* 枝先を内側へ向ける */
}

/* ピラーだけは文字色が本文色なので、枝はセージにする（濃くなりすぎるため） */
.ren-pillar::after {
  background: var(--ren-accent-soft);
  opacity: 0.3;
}

/* 記事中の区切り線。ただの罫線を、中央に小枝を置いた区切りにする。
   `hr` は記事末の出所注記の前などに入る。**本文の途中には増やさない**。 */
.entry-content hr {
  border: none;
  height: 1px;
  background: var(--ren-border);
  margin: 2.6em 0;
  position: relative;
  overflow: visible;
}
.entry-content hr::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 46px;
  height: 30px;
  transform: translate(-50%, -50%);
  background: var(--ren-page);   /* 罫線を隠して、その上に枝を置く */
  pointer-events: none;
  -webkit-mask-image: none;
  mask-image: none;
}
.entry-content hr::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 42px;
  height: 28px;
  transform: translate(-50%, -50%);
  z-index: 1;
  background: var(--ren-accent-soft);
  opacity: 0.55;
  pointer-events: none;
  -webkit-mask-image: var(--ren-sprig);
  mask-image: var(--ren-sprig);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-position: center;
  mask-position: center;
}

/* 記事本文の面（.main）は白なので、hrの中央マスクも白に合わせる */
.main .entry-content hr::after { background: var(--ren-surface); }

/* mask未対応なら装飾は出さない（四角い塗りが残るのを避ける） */
@supports not ((-webkit-mask-image: none) or (mask-image: none)) {
  .ren-safety::after,
  .ren-free::after,
  .ren-pillar::after,
  .entry-content hr::before,
  .entry-content hr::after { display: none; }
}

/* ---------------------------------------------------------------------------
   15. 操作の配慮
   --------------------------------------------------------------------------- */
a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--ren-accent);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}


/* ---------------------------------------------------------------------------
   ヘッダーのロゴ（2026-07-29）
   ----------------------------------------------------------------------------
   本×電球×ハートのロゴ（`design
enairand-proposals\c-deep-diveook-bulb-heart\`）を
   ヘッダーへ出す。**Cocoon設定の「ヘッダーロゴ」はREST APIに出ておらずスクリプトから
   設定できない**ため、サイト名のテキストをCSSで画像に差し替えている。

   文字（`恋の相談先ガイド`）は**消さずに画面外へ送る**。読み上げと検索エンジンには
   テキストとして残す必要があるため（画像だけにするとサイト名が機械に伝わらない）。

   画像は 960×180。幅は画面に合わせて詰め、比率は `aspect-ratio` で保つ
   （高さを固定すると、狭い画面で左右に余白が出て中央がずれる）。
   --------------------------------------------------------------------------- */
/* **セレクタを`.logo-header .site-name .site-name-text`（詳細度0,3,0）にしている理由**
   `.logo-header .site-name-text` では、Cocoonが持つ下マージン（実測67.5px）に負けて
   ヘッダーが197pxまで伸びた（2026-07-29 実測）。ロゴの下に見えない余白が積まれる。 */
/* **サイズは高さで決める。** 幅で指定すると、画像の縦横比が変わったときに
   ヘッダーの高さが勝手に伸びる（2026-07-29、ロゴ画像の余白を削ったときに発生）。
   ロゴは横に伸びても許容できるが、縦に伸びると記事に着くまでのスクロールが増える。 */
.logo-header .site-name .site-name-text {
  display: block;
  height: 56px;
  aspect-ratio: 662 / 169;   /* 余白を削った実画像の比率 */
  width: auto;
  max-width: 72vw;
  margin: 0 auto;
  text-indent: -9999px;
  white-space: nowrap;
  overflow: hidden;
  background: url("https://koi-soudansaki.jp/wp-content/uploads/2026/07/logo-book-bulb-heart-v2.png") no-repeat center / contain;
}

/* ロゴにしたぶん、ヘッダーの上下を詰める（Cocoon既定は 20px / 30px）。
   **スマホのヘッダーは画面の1/4を超えさせない**——記事に着くまでのスクロールが増え、
   夜に短時間で読む読者には邪魔になる。 */
/* ヘッダーの上下は**極限まで詰める**（2026-07-29 西森さん指摘）。
   Cocoon既定は 20px/30px。スマホで記事に着くまでのスクロールを減らすため、
   ロゴの上下は6px/8pxまで落とす。ロゴ自体は56pxに拡大しているので、
   詰めても窮屈には見えない。 */
.header-in h1.logo,
.header-in .logo-header {
  padding: 6px 0 8px;
  margin: 0;
}
/* キャッチフレーズの余白も詰める（ロゴの上に載る1行） */
.tagline {
  margin: 2px 0 0 !important;
  padding: 0 12px !important;
  font-size: 12px;
}


/* ---------------------------------------------------------------------------
   PC（1024px以上）の一覧まわり（2026-07-29）
   ----------------------------------------------------------------------------
   西森さん指摘「トップの表示バランス。小さい気がする」。実測すると**PCでもサムネが
   116px**しかなかった（カード幅828pxに対して14%）。文字も小さい（タイトル16px）。

   原因は横並びをflexで組んでいたこと。figureに`aspect-ratio`があると
   **高さから幅が逆算され、`width` は `!important` でも効かない**
   （既存のPC指定 190px も無視されていた。2026-07-29に実測して判明）。

   **PCだけgridに切り替える。** 列幅で決まるので逆算が起きない。
   スマホ（1023px以下）はflexのまま＝実機で調整した見え方を変えない。
   --------------------------------------------------------------------------- */
@media screen and (min-width: 1024px) {
  .entry-card-wrap .entry-card,
  .entry-card-wrap .e-card {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 1.1em;
    align-items: center;
  }
  .entry-card-wrap .entry-card .entry-card-thumb,
  .entry-card-wrap .e-card .entry-card-thumb {
    width: auto !important;
    max-width: none !important;
    height: auto !important;
    aspect-ratio: 1200 / 630;
  }

  /* 読む距離が違うので、一覧の文字もPCでは上げる */
  .entry-card-title { font-size: 1.15em; line-height: 1.6; }
  .entry-card-snippet { font-size: 0.92em; }
  .entry-card-wrap { padding: 1.1em 1.2em 1em; }

  /* ロゴ。**画面が広いほど大きくする**（2026-07-29 西森さん指摘「ロゴが小さい」）。
     ヘッダーはサイトの看板なので、幅が増えたぶんはロゴに回す。 */
  .logo-header .site-name .site-name-text { height: 72px; }
}


/* ---------------------------------------------------------------------------
   広い画面（1700px以上）でサイト幅を広げる（2026-07-29）
   ----------------------------------------------------------------------------
   西森さん指摘「小さい」。実測すると1920pxの画面で**サイト幅は1256px**しかなく、
   左右332pxずつ＝**画面の35%を余白に捨てていた**。個々の要素を大きくするより、
   使っていない幅を使うほうが効く。
   1700px未満は従来どおり（ノートPCの1440px前後では1256pxがちょうどよい）。
   **記事本文だけは行長を制限する**——日本語は1行45文字を超えると目が戻れなくなる。
   --------------------------------------------------------------------------- */
@media screen and (min-width: 1700px) {
  /* **サイト幅は`width`で上書きする。**
     Cocoon親テーマは `.wrap { width: 1256px }` `.main { width: 860px }` と、
     `max-width` ではなく **width** で幅を決めている（2026-07-29にサーバーの
     `cocoon-master/style.css:673,687` を読んで確認）。
     最初 `max-width` を上書きして効かず、mainだけが広がってサイドバーが下へ落ちた。
     **外枠（.wrap）と中身（.main）は必ずセットで広げること。**
     sidebarは376pxのまま＝広げた分はすべて本文側に回す。 */
  .wrap { width: 1600px; }
  .main { width: 1180px; }

  /* サイト幅1600pxに合わせてロゴも上げる */
  .logo-header .site-name .site-name-text { height: 88px; }

  .entry-card-wrap .entry-card,
  .entry-card-wrap .e-card { grid-template-columns: 320px 1fr; }
  .entry-card-title { font-size: 1.25em; }

  .single .entry-content { max-width: 900px; }
}

/* ---------------------------------------------------------------------------
   一覧カードのサムネと、カテゴリラベルの位置（2026-07-29 西森さん指摘）
   ---------------------------------------------------------------------------
   - サムネは**画像全体を見せる**（`cover`で切り取らない）。記事の絵は文字入りの
     アイキャッチが多く、切ると文字が欠ける。空いた分は地色で埋める。
   - カテゴリラベルは**サムネの外**、カード下の区切り線の上に左寄せで置く。
     サムネに重ねると絵が隠れる（実測：112×63のサムネに78×19のラベル）。
   --------------------------------------------------------------------------- */
.entry-card-thumb img,
.entry-card-thumb .card-thumb img {
  object-fit: contain !important;
  background: var(--ren-accent-weak);
}
.entry-card-wrap { position: relative; padding-bottom: 2.1em; }
.entry-card-thumb .cat-label,
.card-thumb .cat-label,
.entry-card .cat-label {
  position: absolute !important;
  left: 0.85em !important;
  bottom: 0.6em !important;
  top: auto !important;
  right: auto !important;
  display: inline-block !important;
  font-size: 11px !important;
  line-height: 1.6 !important;
  padding: 1px 8px !important;
  border-radius: 999px;
  z-index: 2;
}

/* ---------------------------------------------------------------------------
   ヘッダーの余白を極限まで詰める（2026-07-29 西森さん指摘）
   ---------------------------------------------------------------------------
   ロゴ56px＋上下14pxで70pxのはずが、h1が135pxあった（実測）。差の65pxは
   Cocoonがロゴのリンク（.site-name）に持たせている行間とマージン。
   **見えない余白なので全部落とす。** ロゴ画像は`display:block`で高さが決まるので、
   行間を1にしても表示は変わらない。
   --------------------------------------------------------------------------- */
.logo-header .site-name,
.logo-header .site-name-text-link,
.header-in .logo a {
  display: block;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  font-size: 0 !important;   /* テキストの行ボックスを消す（画像・背景は影響を受けない） */
}
.logo-header { line-height: 1 !important; }

/* ---------------------------------------------------------------------------
   カード下段：カテゴリラベル（左）と日付（右）を同じ高さに揃える
   ---------------------------------------------------------------------------
   2026-07-29 西森さん指摘。ラベルがまだ画像に重なっていた原因は、
   **サムネ（figure）自身が `position: relative` を持っていた**こと。
   絶対配置の基準がカードではなくサムネになるので、どこへ動かしても枠の中に留まる。
   → サムネを `static` に戻し、基準をカード（`.entry-card-wrap`）へ移す。

   ラベルと日付は**同じ `bottom` ・同じ文字サイズ**に置く。左右に離れて並ぶ2つが
   高さ違い・大きさ違いだと、視線が2回止まる。
   --------------------------------------------------------------------------- */
.entry-card-wrap .entry-card-thumb,
.entry-card-wrap .card-thumb { position: static !important; }

.entry-card-wrap { position: relative !important; padding-bottom: 2.6em !important; }

.entry-card-wrap .cat-label {
  position: absolute !important;
  left: 0.9em !important;
  bottom: 0.75em !important;
  top: auto !important;
  right: auto !important;
  font-size: 11px !important;
  line-height: 1.6 !important;
  padding: 1px 8px !important;
  z-index: 2;
}

/* 日付。既定はカード内の右端に流し込まれていて、ラベルより13px上にあった（実測）。 */
.entry-card-wrap .entry-card-info,
.entry-card-wrap .e-card-info {
  position: absolute !important;
  right: 0.9em !important;
  bottom: 0.75em !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: 11px !important;
  line-height: 1.6 !important;
}
.entry-card-wrap .entry-card-info .post-date,
.entry-card-wrap .entry-card-info .entry-date { font-size: 11px !important; }

/* カテゴリラベルは**一覧に出さない**（2026-07-29 西森さん判断「見にくい」）。
   分類はWordPress側に持っているので、カテゴリページ・記事ページから辿れる。
   一覧の小さなカードでは、絵とタイトルの邪魔になるほうが損。
   ラベルの分の余白も返す（日付だけなら下は詰められる）。 */
.entry-card-wrap .cat-label,
.entry-card-thumb .cat-label,
.card-thumb .cat-label { display: none !important; }
.entry-card-wrap { padding-bottom: 1.9em !important; }


/* ============================================================================
   物販カード（AUTO:product_card・2026-07-29）
   ----------------------------------------------------------------------------
   レンダラ（enginelogmedia
ender.py）はサイト共通で `.mmaw-*` のクラス名を出すため、
   恋の相談先ガイド側では **クラス名はそのまま・配色だけ --ren-* トークンに読み替える**。
   画像は128px固定（楽天ウェブサービス規約 第10条(7)＝商品情報の改変禁止のため
   `?_ex=` を書き換えない）。器を128pxに合わせ、拡大せず余白で見せる。
   ========================================================================== */
.entry-content .mmaw-product{
  margin: 1.6em 0;
  padding: 1.1em;
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius);
  background: var(--ren-surface);
}
.mmaw-product__rakuten{ display: flex; gap: 1em; align-items: flex-start; }
.mmaw-product__thumb{ flex: 0 0 128px; line-height: 0; }
.mmaw-product__thumb img{
  width: 128px; height: 128px;
  object-fit: contain;
  background: #fff;
  border: 1px solid var(--ren-border);
  border-radius: var(--ren-radius-sm);
}
.mmaw-product__body{ flex: 1 1 auto; min-width: 0; }
.entry-content .mmaw-product__name{
  margin: 0 0 .4em;
  font-size: 15px; font-weight: 700; line-height: 1.6;
  color: var(--ren-ink);
}
.entry-content .mmaw-product__meta,
.entry-content .mmaw-product__review{
  margin: 0 0 .35em;
  font-size: 13px;
  color: var(--ren-muted);
  font-variant-numeric: tabular-nums;
}
/* ボタンは共通の器に等幅で並べる（1つでも2つでも左端が揃い、商品名の行数で動かない） */
.mmaw-product__actions{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: .7em;
  margin-top: 1em;
  padding-top: 1em;
  border-top: 1px solid var(--ren-border);
}
.entry-content .mmaw-product__btn{
  display: block; margin: 0;
  padding: 12px 16px;
  border-radius: var(--ren-radius-sm);
  font-size: 14px; font-weight: 700; text-align: center;
  text-decoration: none;
  background: var(--ren-accent);
  border: 1px solid var(--ren-accent);
  color: #fff !important;
}
.entry-content .mmaw-product__btn:hover{ background: var(--ren-accent-dark); }
/* Amazonは楽天データの外側。想起色オレンジ（ロゴ画像は使わない＝商標ガイドライン第4条） */
.entry-content .mmaw-product__btn.is-amazon{
  background: #FF9900;
  border-color: #FF9900;
  color: #0F1111 !important;
}
/* ステマ表示は renai の広告表示（.ren-disclosure）と同じ見え方に寄せる。
   2026-08-10：Codex監査指摘①＝#999はコントラスト不足のため14px・#6F6A63へ修正 */
.entry-content .mmaw-disclosure{
  margin: .6em 0 1em;
  color: #6F6A63;
  font-size: 14px;
}
/* 楽天のクレジット表示（規約 第13条）。控えめだが消さない */
.entry-content .mmaw-credit{
  margin: .6em 0 1.4em;
  font-size: 12px;
  color: var(--ren-muted);
}
@media screen and (max-width: 480px){
  .mmaw-product__rakuten{ gap: .7em; }
  .mmaw-product__thumb{ flex-basis: 96px; }
  .mmaw-product__thumb img{ width: 96px; height: 96px; }
  .mmaw-product__actions{ grid-template-columns: 1fr; }
}
