@charset "UTF-8";

/*!
Theme Name: Cocoon Child
Description: Cocoon専用の子テーマ
Theme URI: https://wp-cocoon.com/
Author: わいひら
Author URI: https://nelog.jp/
Template:   cocoon-master
Version:    1.1.3
*/

/* ==========================================================================
   oyasma.jp 共通デザイン基盤
   - 親CSS（cocoon-style）と WPデフォルトCSS（wp-block-library / global-styles）は
     functions.php で dequeue 済み。本ファイルがサイトCSSのほぼ全てを担う。
   - クラス命名は全て "oy-" を接頭辞とする。
   - 親世代・シニア向けのため、文字は大きめ・行間広め・余白広めを基本とする。
   - 個別ページ専用CSSは原則書かず、ここで定義する共通部品の組み合わせで作る。
   ========================================================================== */

/* ==========================================================================
   1. ルート変数
   ========================================================================== */
:root {
  /* --- カラー（落ち着いたグリーンを基調） --- */
  --oy-color-primary:        #2f8c5b;   /* メイングリーン */
  --oy-color-primary-dark:   #246b46;   /* hover/active */
  --oy-color-primary-soft:   #e8f5ed;   /* 背景・チップに */
  --oy-color-accent:         #ff7a45;   /* CTAの差し色（控えめに） */
  --oy-color-accent-dark:    #e96632;

  --oy-color-text:           #2b2b2b;
  --oy-color-text-muted:     #5b5b5b;
  --oy-color-text-light:     #7a7a7a;
  --oy-color-link:           #1f6d44;
  --oy-color-link-hover:     #134a2d;

  --oy-color-bg:             #ffffff;
  --oy-color-bg-soft:        #f6f8f5;   /* 全体背景の代替 */
  --oy-color-bg-section:     #f1f7f3;   /* セクション帯 */

  --oy-color-border:         #e3e7e2;
  --oy-color-border-strong:  #c8d1c8;

  /* --- 情報ボックス系 --- */
  --oy-color-info-bg:        #e7f1fb;
  --oy-color-info-border:    #9bbfe0;
  --oy-color-info-icon:      #2a6fa9;

  --oy-color-warning-bg:     #fff7d6;
  --oy-color-warning-border: #f0c965;
  --oy-color-warning-icon:   #b78510;

  --oy-color-check-bg:       #e8f5ed;
  --oy-color-check-border:   #9bd1b1;
  --oy-color-check-icon:     #2f8c5b;

  /* --- フォントサイズ（base はやや大きめ） --- */
  --oy-fs-base:    17px;
  --oy-fs-small:   15px;
  --oy-fs-tiny:    13px;
  --oy-fs-lead:    19px;
  --oy-fs-h1:      32px;
  --oy-fs-h2:      26px;
  --oy-fs-h3:      21px;
  --oy-fs-h4:      18px;

  /* --- 行間 --- */
  --oy-lh-base:    1.9;
  --oy-lh-tight:   1.5;
  --oy-lh-heading: 1.45;

  /* --- 余白（4px刻み） --- */
  --oy-space-1:    4px;
  --oy-space-2:    8px;
  --oy-space-3:   12px;
  --oy-space-4:   16px;
  --oy-space-5:   20px;
  --oy-space-6:   24px;
  --oy-space-8:   32px;
  --oy-space-10:  40px;
  --oy-space-12:  48px;
  --oy-space-16:  64px;
  --oy-space-20:  80px;
  --oy-space-24:  96px;

  /* --- 角丸 --- */
  --oy-radius-sm:  6px;
  --oy-radius-md:  10px;
  --oy-radius-lg:  16px;
  --oy-radius-pill: 999px;

  /* --- 影 --- */
  --oy-shadow-sm: 0 1px 2px rgba(35, 60, 45, .06);
  --oy-shadow-md: 0 2px 8px rgba(35, 60, 45, .08);
  --oy-shadow-lg: 0 8px 24px rgba(35, 60, 45, .10);

  /* --- コンテナ幅 --- */
  --oy-container-max: 1080px;       /* 通常（トップ／archive／ヒーロー帯） */
  --oy-container-reading: 920px;    /* 本文用（page / single の prose）。細く感じたら 960px へ */
  --oy-container-narrow: 800px;     /* タイト箱（404のボタン群／フォーム周辺） */

  /* --- ヘッダー高さ（sticky / scroll-padding 等で参照） --- */
  --oy-header-height: 76px;

  /* --- フォントスタック --- */
  --oy-font-base: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans",
                  "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;

  /* --- transition --- */
  --oy-transition: .2s ease;
}

/* ==========================================================================
   2. ベーススタイル（reset + base）
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }

html {
  font-size: var(--oy-fs-base);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  /* スムーススクロール（CSSのみで完結。アンカーリンクで sticky header 分のオフセット込み） */
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--oy-header-height) + 12px);
}
/* 動きを抑えたい設定の人には急なジャンプにする */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
/* WordPress admin bar 表示時は scroll-padding を増やす */
body.admin-bar { /* PC: admin bar 32px */
  --oy-admin-bar-h: 32px;
}
@media screen and (max-width: 782px) {
  body.admin-bar { --oy-admin-bar-h: 46px; } /* SP: admin bar 46px */
}
body.admin-bar {
  /* html ではなく body にも反映（古い WP の挙動差を吸収） */
}
html:has(body.admin-bar) {
  scroll-padding-top: calc(var(--oy-header-height) + var(--oy-admin-bar-h, 32px) + 12px);
}

body {
  margin: 0;
  font-family: var(--oy-font-base);
  font-size: var(--oy-fs-base);
  line-height: var(--oy-lh-base);
  color: var(--oy-color-text);
  background: var(--oy-color-bg-soft);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  word-break: break-word;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 var(--oy-space-4);
  line-height: var(--oy-lh-heading);
  font-weight: 700;
  color: var(--oy-color-text);
  letter-spacing: .02em;
}

h1 { font-size: var(--oy-fs-h1); }
h2 { font-size: var(--oy-fs-h2); }
h3 { font-size: var(--oy-fs-h3); }
h4 { font-size: var(--oy-fs-h4); }

p {
  margin: 0 0 var(--oy-space-4);
}

ul, ol {
  margin: 0 0 var(--oy-space-4);
  padding-left: 1.4em;
}

li + li { margin-top: var(--oy-space-2); }

a {
  color: var(--oy-color-link);
  text-decoration: underline;
  text-underline-offset: .15em;
  transition: color var(--oy-transition);
}
a:hover, a:focus { color: var(--oy-color-link-hover); }

img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

figure { margin: 0 0 var(--oy-space-4); }

hr {
  border: 0;
  border-top: 1px solid var(--oy-color-border);
  margin: var(--oy-space-8) 0;
}

strong, b { font-weight: 700; }

small { font-size: var(--oy-fs-small); }

/* フォーカスリングは見やすく */
:focus-visible {
  outline: 3px solid rgba(47, 140, 91, .45);
  outline-offset: 2px;
}

/* ==========================================================================
   3. レイアウト
   ========================================================================== */

/* コンテナ */
.oy-container {
  width: 100%;
  max-width: var(--oy-container-max);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--oy-space-5);
  padding-right: var(--oy-space-5);
}
.oy-container.is-narrow  { max-width: var(--oy-container-narrow); }
.oy-container.is-reading { max-width: var(--oy-container-reading); }

/* セクション（縦の余白を担当） */
.oy-section {
  padding-top: var(--oy-space-16);
  padding-bottom: var(--oy-space-16);
}
.oy-section.is-soft { background: var(--oy-color-bg-section); }
.oy-section.is-white { background: var(--oy-color-bg); }

/* セクション見出し */
.oy-section-head {
  text-align: center;
  margin-bottom: var(--oy-space-10);
}
.oy-section-head .oy-eyebrow {
  display: inline-block;
  font-size: var(--oy-fs-small);
  color: var(--oy-color-primary);
  letter-spacing: .12em;
  margin-bottom: var(--oy-space-2);
}
.oy-section-head h2 {
  margin: 0 0 var(--oy-space-3);
}
.oy-section-head .oy-section-lead {
  color: var(--oy-color-text-muted);
  margin: 0;
}

/* グリッド */
.oy-grid {
  display: grid;
  gap: var(--oy-space-6);
  grid-template-columns: 1fr;
}
.oy-grid.is-2col { grid-template-columns: repeat(2, 1fr); }
.oy-grid.is-3col { grid-template-columns: repeat(3, 1fr); }
.oy-grid.is-4col { grid-template-columns: repeat(4, 1fr); }

/* グリッド（カラム数指定の独立クラス。.oy-grid と併用不要） */
.oy-grid-2,
.oy-grid-3,
.oy-grid-4 {
  display: grid;
  gap: var(--oy-space-6);
}
.oy-grid-2 { grid-template-columns: repeat(2, 1fr); }
.oy-grid-3 { grid-template-columns: repeat(3, 1fr); }
.oy-grid-4 { grid-template-columns: repeat(4, 1fr); }

/* セクションタイトル単体クラス（h2 でなく div/span に付けたいときも使える） */
.oy-section-title {
  font-size: var(--oy-fs-h2);
  font-weight: 700;
  line-height: var(--oy-lh-heading);
  margin: 0 0 var(--oy-space-3);
  color: var(--oy-color-text);
}

/* ==========================================================================
   4. ボタン
   ========================================================================== */
.oy-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6em;
  min-height: 56px;
  padding: .8em 1.6em;
  font-size: var(--oy-fs-lead);
  font-weight: 700;
  line-height: 1.3;
  text-decoration: none;
  border: 2px solid transparent;
  border-radius: var(--oy-radius-pill);
  cursor: pointer;
  transition: background var(--oy-transition), color var(--oy-transition),
              border-color var(--oy-transition), transform var(--oy-transition),
              box-shadow var(--oy-transition);
}
.oy-btn:hover { transform: translateY(-1px); }
.oy-btn:active { transform: translateY(0); }
.oy-btn .fas, .oy-btn .far, .oy-btn .fab { font-size: 1em; }

/* primary：CTA向け（差し色のオレンジ） */
.oy-btn-primary {
  background: var(--oy-color-accent);
  color: #fff;
  border-color: var(--oy-color-accent);
  box-shadow: var(--oy-shadow-sm);
}
.oy-btn-primary:hover, .oy-btn-primary:focus {
  background: var(--oy-color-accent-dark);
  border-color: var(--oy-color-accent-dark);
  color: #fff;
}

/* secondary：ナビ・補助動作向け（グリーン） */
.oy-btn-secondary {
  background: var(--oy-color-primary);
  color: #fff;
  border-color: var(--oy-color-primary);
}
.oy-btn-secondary:hover, .oy-btn-secondary:focus {
  background: var(--oy-color-primary-dark);
  border-color: var(--oy-color-primary-dark);
  color: #fff;
}

/* ghost：枠線のみ */
.oy-btn-ghost {
  background: transparent;
  color: var(--oy-color-primary);
  border-color: var(--oy-color-primary);
}
.oy-btn-ghost:hover, .oy-btn-ghost:focus {
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
}

/* サイズ */
.oy-btn.is-lg { min-height: 64px; font-size: 21px; padding: 1em 2em; }
.oy-btn.is-block { display: flex; width: 100%; }

/* ボタンを並べる汎用ラッパー（CTA下、ヒーロー、ページ末尾の導線などで使用） */
.oy-btn-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--oy-space-3);
}
.oy-btn-group.is-center { justify-content: center; }
/* 子ボタンを同幅にする（PCでは横並び同幅、SPでは flex-wrap で自然に縦積み） */
.oy-btn-group.is-equal > .oy-btn {
  flex: 1 1 240px;
  min-width: 0;
}
/* 縦積み（ヒーロー2ボタンなど）：
   inline-flex でコンテナが「最も長い子ボタンの幅」に収まり、
   align-items: stretch で他の子ボタンも同幅に伸びる → 「縦並び・同幅・コンパクト」が成立 */
.oy-btn-group.is-stacked {
  display: inline-flex;
  flex-direction: column;
  align-items: stretch;       /* 兄弟と同幅に揃える */
  gap: var(--oy-space-3);
}
/* SP は親幅いっぱいに（縦積み・幅100%）— コンテナを block レベル flex に切替 */
@media screen and (max-width: 480px) {
  .oy-btn-group.is-stacked { display: flex; }
}

/* ==========================================================================
   5. カード
   ========================================================================== */
.oy-card {
  display: block;
  background: var(--oy-color-bg);
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
  padding: var(--oy-space-6);
  box-shadow: var(--oy-shadow-sm);
  transition: box-shadow var(--oy-transition), transform var(--oy-transition),
              border-color var(--oy-transition);
}
a.oy-card { text-decoration: none; color: inherit; }
a.oy-card:hover {
  box-shadow: var(--oy-shadow-md);
  transform: translateY(-2px);
  border-color: var(--oy-color-border-strong);
}

/* カード上部の円形アイコン枠（fa-* と組み合わせて使う） */
.oy-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  margin-bottom: var(--oy-space-3);
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary);
  border-radius: var(--oy-radius-pill);
  font-size: 24px;
}
.oy-card-icon.is-warning { background: var(--oy-color-warning-bg); color: var(--oy-color-warning-icon); }
.oy-card-icon.is-info    { background: var(--oy-color-info-bg);    color: var(--oy-color-info-icon); }
.oy-card-icon.is-accent  { background: #fff0e6;                    color: var(--oy-color-accent-dark); }

.oy-card-title {
  font-size: var(--oy-fs-h4);
  font-weight: 700;
  margin: 0 0 var(--oy-space-2);
  color: var(--oy-color-text);
}
.oy-card-text {
  margin: 0;
  color: var(--oy-color-text-muted);
}
.oy-card-link {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  margin-top: var(--oy-space-3);
  font-weight: 700;
  color: var(--oy-color-primary);
  text-decoration: none;
}
.oy-card-link:hover { color: var(--oy-color-primary-dark); }

/* ナンバー付きエントリーカード（手順、特集など） */
.oy-entry-card {
  position: relative;
  background: var(--oy-color-bg);
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
  padding: var(--oy-space-8) var(--oy-space-6) var(--oy-space-6);
  box-shadow: var(--oy-shadow-sm);
}
.oy-entry-num {
  position: absolute;
  top: -16px;
  left: var(--oy-space-5);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 .6em;
  background: var(--oy-color-primary);
  color: #fff;
  font-weight: 700;
  border-radius: var(--oy-radius-pill);
  font-size: var(--oy-fs-small);
  letter-spacing: .04em;
}

/* ラベル（カード内のミニタグ） */
.oy-label {
  display: inline-block;
  padding: .25em .8em;
  font-size: var(--oy-fs-tiny);
  font-weight: 700;
  border-radius: var(--oy-radius-pill);
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
  letter-spacing: .04em;
}
.oy-label.is-iphone { background: #eef3f8; color: #2a6fa9; }
.oy-label.is-android { background: #e8f5ed; color: #2f8c5b; }
.oy-label.is-new { background: #fff0e6; color: #c2511f; }

/* ==========================================================================
   6. 導線部品（Finder, Link list, Link card）
   ========================================================================== */

/* Finder：「やりたいことから探す」用の入口ブロック */
.oy-finder {
  background: var(--oy-color-primary-soft);
  border-radius: var(--oy-radius-lg);
  padding: var(--oy-space-8);
}
.oy-finder-title {
  margin: 0 0 var(--oy-space-5);
  text-align: center;
}
.oy-finder-box {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--oy-space-4);
}
.oy-finder-box > a {
  display: flex;
  align-items: center;
  gap: var(--oy-space-3);
  padding: var(--oy-space-4) var(--oy-space-5);
  background: #fff;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
  color: var(--oy-color-text);
  text-decoration: none;
  font-weight: 700;
  transition: var(--oy-transition);
}
.oy-finder-box > a:hover {
  border-color: var(--oy-color-primary);
  box-shadow: var(--oy-shadow-sm);
  color: var(--oy-color-primary-dark);
}
.oy-finder-box > a .fas,
.oy-finder-box > a .far,
.oy-finder-box > a .fab {
  color: var(--oy-color-primary);
  font-size: 1.4em;
  flex-shrink: 0;
}

/* リンク一覧 */
.oy-link-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--oy-space-2);
}
.oy-link-list > li { margin: 0; }
.oy-link-list a {
  display: flex;
  align-items: center;
  gap: var(--oy-space-3);
  padding: var(--oy-space-3) var(--oy-space-4);
  background: #fff;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-sm);
  color: var(--oy-color-text);
  text-decoration: none;
  transition: var(--oy-transition);
}
.oy-link-list a::after {
  content: "\f054"; /* fa-chevron-right */
  font-family: "Font Awesome 5 Free";
  font-weight: 900;
  margin-left: auto;
  color: var(--oy-color-primary);
  font-size: .9em;
}
.oy-link-list a:hover {
  border-color: var(--oy-color-primary);
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
}
/* 先頭アイコン（任意） */
.oy-link-list a > .fas,
.oy-link-list a > .far,
.oy-link-list a > .fab {
  color: var(--oy-color-primary);
  width: 1.4em;
  text-align: center;
  flex-shrink: 0;
}

/* リンクカード（画像つき大きめの導線） */
.oy-link-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: var(--oy-transition);
  box-shadow: var(--oy-shadow-sm);
}
.oy-link-card:hover {
  box-shadow: var(--oy-shadow-md);
  transform: translateY(-2px);
  border-color: var(--oy-color-border-strong);
}
.oy-link-card-thumb {
  aspect-ratio: 16 / 9;
  background: var(--oy-color-bg-soft);
  overflow: hidden;
}
.oy-link-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.oy-link-card-body {
  padding: var(--oy-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--oy-space-2);
}
.oy-link-card-title {
  font-size: var(--oy-fs-h4);
  font-weight: 700;
  margin: 0;
}
.oy-link-card-text {
  margin: 0;
  color: var(--oy-color-text-muted);
}

/* ==========================================================================
   7. 記事一覧部品
   ========================================================================== */
.oy-list-card {
  display: grid;
  gap: var(--oy-space-4);
}
.oy-list-item {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: var(--oy-space-5);
  padding: var(--oy-space-4);
  background: #fff;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
  text-decoration: none;
  color: inherit;
  transition: var(--oy-transition);
}
.oy-list-item:hover {
  border-color: var(--oy-color-border-strong);
  box-shadow: var(--oy-shadow-sm);
}
.oy-list-item-thumb {
  aspect-ratio: 16 / 9;
  background: var(--oy-color-bg-soft);
  border-radius: var(--oy-radius-sm);
  overflow: hidden;
}
.oy-list-item-thumb img {
  width: 100%; height: 100%; object-fit: cover;
}
/* サムネ枠（16:9）の中で .oy-image-placeholder（既定 4:3）を使うとはみ出して
   下が切れるため、サムネ枠の中ではアスペクト比を親に揃え、装飾を簡素化 */
.oy-list-item-thumb .oy-image-placeholder {
  width: 100%;
  height: 100%;
  aspect-ratio: auto;          /* 親の 16:9 に従う */
  border: 0;                   /* 破線をやめてコンパクトに */
  border-radius: 0;            /* 親の border-radius に任せる */
  padding: var(--oy-space-3);
  font-size: var(--oy-fs-tiny);
}
.oy-list-item-thumb .oy-image-placeholder .fas,
.oy-list-item-thumb .oy-image-placeholder .far {
  font-size: 24px;             /* 小さめサムネ用 */
}
.oy-list-item-thumb .oy-image-placeholder small { display: none; }
.oy-list-title {
  font-size: var(--oy-fs-h4);
  font-weight: 700;
  margin: 0 0 var(--oy-space-2);
}
.oy-list-text {
  margin: 0;
  color: var(--oy-color-text-muted);
  font-size: var(--oy-fs-small);
}

/* ==========================================================================
   8. チップ
   ========================================================================== */
.oy-chip-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--oy-space-2);
}
.oy-chip {
  display: inline-flex;
  align-items: center;
  gap: .35em;
  padding: .4em 1em;
  font-size: var(--oy-fs-small);
  font-weight: 700;
  background: #fff;
  color: var(--oy-color-text);
  border: 1px solid var(--oy-color-border-strong);
  border-radius: var(--oy-radius-pill);
  text-decoration: none;
  transition: var(--oy-transition);
}
a.oy-chip:hover {
  background: var(--oy-color-primary-soft);
  border-color: var(--oy-color-primary);
  color: var(--oy-color-primary-dark);
}
.oy-chip.is-active {
  background: var(--oy-color-primary);
  color: #fff;
  border-color: var(--oy-color-primary);
}

/* ==========================================================================
   9. 情報ボックス（info / warning / check）
   ========================================================================== */
.oy-info-box,
.oy-warning-box,
.oy-check-box {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--oy-space-4);
  padding: var(--oy-space-5) var(--oy-space-6);
  border: 1px solid;
  border-radius: var(--oy-radius-md);
  margin: 0 0 var(--oy-space-5);
}
.oy-info-box    { background: var(--oy-color-info-bg);    border-color: var(--oy-color-info-border); }
.oy-warning-box { background: var(--oy-color-warning-bg); border-color: var(--oy-color-warning-border); }
.oy-check-box   { background: var(--oy-color-check-bg);   border-color: var(--oy-color-check-border); }

.oy-box-icon {
  display: inline-flex;
  align-items: flex-start;
  justify-content: center;
  font-size: 22px;
  line-height: 1;
  padding-top: .15em;
}
.oy-info-box    .oy-box-icon { color: var(--oy-color-info-icon); }
.oy-warning-box .oy-box-icon { color: var(--oy-color-warning-icon); }
.oy-check-box   .oy-box-icon { color: var(--oy-color-check-icon); }

.oy-box-content { min-width: 0; }
.oy-box-title {
  font-weight: 700;
  margin: 0 0 var(--oy-space-1);
  font-size: var(--oy-fs-h4);
}
.oy-box-text {
  margin: 0;
  color: var(--oy-color-text);
}
.oy-box-text + .oy-box-text { margin-top: var(--oy-space-2); }

/* ==========================================================================
   10. CTA
   ========================================================================== */
.oy-cta {
  background: linear-gradient(180deg, #f3faf5 0%, #e8f5ed 100%);
  border: 1px solid var(--oy-color-check-border);
  border-radius: var(--oy-radius-lg);
  padding: var(--oy-space-10) var(--oy-space-8);
  text-align: center;
}
.oy-cta-eyebrow {
  display: inline-block;
  font-size: var(--oy-fs-small);
  font-weight: 700;
  color: var(--oy-color-primary);
  letter-spacing: .12em;
  margin-bottom: var(--oy-space-2);
}
.oy-cta-title {
  margin: 0 0 var(--oy-space-3);
  font-size: var(--oy-fs-h2);
}
.oy-cta-text {
  margin: 0 auto var(--oy-space-6);
  max-width: 640px;
  color: var(--oy-color-text-muted);
}
.oy-cta-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--oy-space-4);
}
.oy-cta-note {
  margin: var(--oy-space-5) 0 0;
  font-size: var(--oy-fs-small);
  color: var(--oy-color-text-light);
}

/* ==========================================================================
   11. FAQ
   ========================================================================== */
.oy-faq {
  display: grid;
  gap: var(--oy-space-3);
}
.oy-faq-item {
  background: #fff;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
  padding: var(--oy-space-5) var(--oy-space-6);
}
.oy-faq-q {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--oy-space-3);
  align-items: start;
  font-size: var(--oy-fs-h4);
  font-weight: 700;
  margin: 0 0 var(--oy-space-3);
  color: var(--oy-color-text);
}
.oy-faq-q::before {
  content: "Q";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--oy-radius-pill);
  background: var(--oy-color-primary);
  color: #fff;
  font-size: 16px;
  flex-shrink: 0;
}
.oy-faq-a {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--oy-space-3);
  align-items: start;
  margin: 0;
  color: var(--oy-color-text-muted);
}
.oy-faq-a::before {
  content: "A";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--oy-radius-pill);
  background: var(--oy-color-accent);
  color: #fff;
  font-size: 16px;
  flex-shrink: 0;
}

/* ==========================================================================
   12. サイトヘッダー
   ========================================================================== */

/* スキップリンク（a11y） */
.oy-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 10000;
  padding: var(--oy-space-3) var(--oy-space-4);
  background: var(--oy-color-primary);
  color: #fff;
  text-decoration: none;
  border-radius: 0 0 var(--oy-radius-sm) 0;
}
.oy-skip-link:focus {
  left: 0;
  color: #fff;
}

.oy-site-header {
  background: rgba(255, 255, 255, .96);
  border-bottom: 1px solid var(--oy-color-border);
  position: sticky;
  top: 0;
  z-index: 100;
  transition: box-shadow var(--oy-transition), background var(--oy-transition);
  backdrop-filter: saturate(160%) blur(4px);
  -webkit-backdrop-filter: saturate(160%) blur(4px);
}
/* スクロールしたら控えめな影で「浮いている」ことを示す */
.oy-site-header.is-scrolled {
  background: #fff;
  box-shadow: var(--oy-shadow-sm);
}
/* WordPress admin bar が出ている場合、その高さ分下げる */
body.admin-bar .oy-site-header { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar .oy-site-header { top: 46px; }
}

/* === 上段：ロゴ中央 === */
.oy-site-header-top {
  padding-top: var(--oy-space-4);
  padding-bottom: var(--oy-space-3);
  transition: padding var(--oy-transition);
}
.oy-site-header-top-inner {
  display: flex;
  align-items: center;
  justify-content: center; /* PC：ロゴ中央 */
  position: relative;
  gap: var(--oy-space-3);
}

/* ブランドエリア（テキスト or ロゴ画像差し替え可） */
.oy-site-brand {
  display: inline-flex;
  flex-direction: column;
  align-items: center; /* テキストを中央揃え */
  gap: 2px;
  text-decoration: none;
  color: var(--oy-color-text);
  flex-shrink: 0;
}
.oy-site-brand:hover { color: var(--oy-color-primary-dark); }
.oy-site-brand-logo {
  display: block;
  height: 56px;     /* PC通常時：ヘッダー内で自然な存在感 */
  width: auto;
  max-width: 280px; /* 横長安全網 */
  transition: height var(--oy-transition);
}
/* スクロール後はロゴをコンパクトに（通常時より一段小さく） */
.oy-site-header.is-scrolled .oy-site-brand-logo {
  height: 40px;
}
@media screen and (max-width: 480px) {
  .oy-site-brand-logo { height: 44px; max-width: 220px; }
  .oy-site-header.is-scrolled .oy-site-brand-logo { height: 44px; /* SP: 通常時と同じ。scroll時に変化させない */ }
}
.oy-site-brand-main {
  font-size: 24px;
  font-weight: 700;
  letter-spacing: .03em;
  line-height: 1.15;
  transition: font-size var(--oy-transition);
}
.oy-site-brand-sub {
  font-size: var(--oy-fs-tiny);
  color: var(--oy-color-text-muted);
  letter-spacing: .04em;
  max-height: 24px;
  overflow: hidden;
  opacity: 1;
  transition: max-height .25s ease, opacity .2s ease;
}

/* === 下段：グローバルナビ＋右CTA === */
.oy-global-nav {
  /* PC：通常配置で「下段」として表示 */
  border-top: 1px solid var(--oy-color-border);
  background: transparent;
}
.oy-site-header-bottom-inner {
  display: flex;
  align-items: center;
  justify-content: center; /* ナビは中央 */
  gap: var(--oy-space-4);
  padding-top: var(--oy-space-2);
  padding-bottom: var(--oy-space-3);
  position: relative;
  transition: padding var(--oy-transition);
}
.oy-global-nav-list {
  list-style: none;
  margin: 0; /* ul のデフォルト余白を確実に消す */
  padding: 0;
  display: flex;
  align-items: center;
  gap: var(--oy-space-2);
  flex-wrap: wrap; /* PCでも余裕がない時は折り返し許可（最終フォールバック） */
}
.oy-global-nav-list li { margin: 0; }
.oy-global-nav-link {
  display: inline-flex;
  align-items: center;        /* 縦中央 */
  justify-content: center;
  /* 高さを CTA ボタン（44px）と揃え、フレックスで縦中央配置 */
  min-height: 44px;
  padding: 0 var(--oy-space-3);
  line-height: 1.2;
  font-size: var(--oy-fs-base);
  font-weight: 700;
  color: var(--oy-color-text);
  text-decoration: none;
  white-space: nowrap; /* メニュー名の途中改行を防ぐ */
  border-radius: var(--oy-radius-sm);
  transition: background var(--oy-transition), color var(--oy-transition),
              min-height var(--oy-transition);
}
.oy-global-nav-link:hover,
.oy-global-nav-link:focus {
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
}
/* current-menu-item / 自前 .is-active 両対応 */
.current-menu-item > .oy-global-nav-link,
.oy-global-nav-link.is-active {
  color: var(--oy-color-primary-dark);
  background: var(--oy-color-primary-soft);
}

/* ヘッダー右側のアクション群（検索ボタン／カートアイコン／無料ガイド CTA） */
.oy-header-actions {
  display: flex;
  align-items: center;
  gap: var(--oy-space-2);
  margin-left: auto;          /* 下段ナビの右端に寄せる */
  flex-shrink: 0;
}
/* アイコン単体ボタン（検索／カート） */
.oy-header-action {
  position: relative;          /* バッジ用 */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: var(--oy-radius-pill);
  color: var(--oy-color-text);
  font-size: 18px;
  text-decoration: none;
  cursor: pointer;
  transition: background var(--oy-transition), color var(--oy-transition);
}
.oy-header-action:hover,
.oy-header-action:focus-visible {
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
}
/* カートバッジ（件数）。0件時は CSS で非表示 */
.oy-header-cart-badge {
  position: absolute;
  top: 2px;
  right: 2px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--oy-color-accent);
  color: #fff;
  border-radius: var(--oy-radius-pill);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
}
.oy-header-cart-badge[data-cart-count="0"] { display: none; }

/* ヘッダーCTA（小サイズ：ナビ並び用、actions グループ内に配置） */
.oy-header-cta.oy-btn {
  min-height: 44px;
  padding: .5em 1.2em;
  font-size: var(--oy-fs-base);
  flex-shrink: 0;
  /* margin-left: auto は actions グループに移譲 */
  transition: min-height var(--oy-transition), padding var(--oy-transition), font-size var(--oy-transition);
}

/* ===== 検索ドロップダウンパネル ===== */
.oy-header-search {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 99;
  background: #fff;
  border-top: 1px solid var(--oy-color-border);
  border-bottom: 1px solid var(--oy-color-border);
  box-shadow: var(--oy-shadow-md);
  padding: var(--oy-space-4) 0;
}
.oy-header-search[hidden] { display: none; }
.oy-search-form {
  display: flex;
  gap: var(--oy-space-3);
  width: 100%;
  max-width: 720px;
  margin: 0 auto;
}
.oy-search-form-label {
  flex: 1;
  display: block;
  margin: 0;
}
.oy-search-form-label-text {
  /* visually-hidden */
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
.oy-search-form-input {
  width: 100%;
  padding: var(--oy-space-3) var(--oy-space-4);
  font-size: var(--oy-fs-base);
  font-family: inherit;
  color: var(--oy-color-text);
  background: #fff;
  border: 1px solid var(--oy-color-border-strong);
  border-radius: var(--oy-radius-md);
  -webkit-appearance: none;
  appearance: none;
}
.oy-search-form-input:focus {
  outline: none;
  border-color: var(--oy-color-primary);
  box-shadow: 0 0 0 3px rgba(47, 140, 91, .18);
}
.oy-search-form-submit {
  flex-shrink: 0;
  min-height: 48px;
  padding: .5em 1.2em;
  font-size: var(--oy-fs-base);
}

/* === スクロール後のコンパクト版（.is-scrolled） === */
.oy-site-header.is-scrolled .oy-site-header-top {
  padding-top: var(--oy-space-2);
  padding-bottom: var(--oy-space-1);
}
.oy-site-header.is-scrolled .oy-site-brand-main {
  font-size: 19px;
  letter-spacing: .02em;
}
.oy-site-header.is-scrolled .oy-site-brand-sub {
  max-height: 0;
  opacity: 0;
}
.oy-site-header.is-scrolled .oy-site-header-bottom-inner {
  padding-top: var(--oy-space-1);
  padding-bottom: var(--oy-space-2);
}
.oy-site-header.is-scrolled .oy-header-cta.oy-btn {
  min-height: 38px;
  padding: .4em 1em;
  font-size: var(--oy-fs-small);
}
.oy-site-header.is-scrolled .oy-global-nav-link {
  /* スクロール後は CTA ボタン高さ（38px）と揃える */
  min-height: 38px;
}

/* ハンバーガートグル（PCでは非表示） */
.oy-menu-toggle {
  display: none;
  align-items: center;
  gap: var(--oy-space-2);
  padding: var(--oy-space-2) var(--oy-space-3);
  background: transparent;
  border: 1px solid var(--oy-color-border-strong);
  border-radius: var(--oy-radius-sm);
  font-size: var(--oy-fs-base);
  font-weight: 700;
  color: var(--oy-color-text);
  cursor: pointer;
  transition: var(--oy-transition);
}
.oy-menu-toggle:hover {
  background: var(--oy-color-primary-soft);
  border-color: var(--oy-color-primary);
  color: var(--oy-color-primary-dark);
}
.oy-menu-toggle-icon {
  position: relative;
  display: inline-block;
  width: 1.2em;
  height: 1em;
}
.oy-menu-toggle-icon .fa-bars,
.oy-menu-toggle-icon .fa-times {
  position: absolute;
  inset: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2em;
  transition: opacity var(--oy-transition);
}
.oy-menu-toggle-icon .fa-times { opacity: 0; }
.oy-menu-toggle[aria-expanded="true"] .oy-menu-toggle-icon .fa-bars  { opacity: 0; }
.oy-menu-toggle[aria-expanded="true"] .oy-menu-toggle-icon .fa-times { opacity: 1; }

/* ==========================================================================
   13. メイン領域
   ========================================================================== */
.oy-main {
  display: block;
}

/* ==========================================================================
   14. サイトフッター
   ========================================================================== */
.oy-site-footer {
  background: var(--oy-color-bg-section);
  border-top: 1px solid var(--oy-color-border);
  color: var(--oy-color-text);
  padding: var(--oy-space-16) 0 var(--oy-space-8);
  margin-top: var(--oy-space-16);
}
.oy-site-footer a {
  color: var(--oy-color-link);
  text-decoration: none;
}
.oy-site-footer a:hover,
.oy-site-footer a:focus {
  color: var(--oy-color-link-hover);
  text-decoration: underline;
}

.oy-site-footer-inner {
  /* .oy-container と併用するため余白だけ追加で持たせる */
}

.oy-site-footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: var(--oy-space-10);
}
.oy-site-footer-col { min-width: 0; }

.oy-site-footer-brand {
  margin: 0 0 var(--oy-space-2);
  font-size: var(--oy-fs-h4);
  font-weight: 700;
  color: var(--oy-color-text);
}
.oy-site-footer-title {
  margin: 0 0 var(--oy-space-3);
  font-size: var(--oy-fs-h4);
  font-weight: 700;
  color: var(--oy-color-text);
}
.oy-site-footer-text {
  margin: 0;
  font-size: var(--oy-fs-small);
  color: var(--oy-color-text-muted);
}
.oy-site-footer-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--oy-space-2);
}
.oy-site-footer-list li { margin: 0; }
.oy-site-footer-list a,
.oy-site-footer-link {
  display: inline-block;
  padding: 4px 0;
  color: var(--oy-color-text);
}
.oy-site-footer-list a:hover,
.oy-site-footer-link:hover {
  color: var(--oy-color-primary-dark);
}

.oy-site-footer-bottom {
  margin-top: var(--oy-space-10);
  padding-top: var(--oy-space-5);
  border-top: 1px solid var(--oy-color-border);
  text-align: center;
}
.oy-site-footer-copy {
  margin: 0;
  font-size: var(--oy-fs-small);
  color: var(--oy-color-text-muted);
}

/* ==========================================================================
   13. トップ共通ヒーロー
   ========================================================================== */
.oy-hero {
  background: linear-gradient(180deg, #f1f7f3 0%, #e8f5ed 100%);
  padding: var(--oy-space-16) 0 var(--oy-space-12);
}
/* ヒーロー専用：リード文が途中改行しない幅にゆとり */
.oy-hero .oy-container { max-width: 1140px; }
.oy-hero-grid {
  display: grid;
  grid-template-columns: 1fr 560px;
  gap: var(--oy-space-10);
  align-items: stretch;
}
.oy-hero-main h1 {
  font-size: 36px;
  margin: 0 0 var(--oy-space-4);
  letter-spacing: .02em;
}
.oy-hero-lead {
  font-size: var(--oy-fs-lead);
  color: var(--oy-color-text-muted);
  margin: 0 0 var(--oy-space-6);
}
.oy-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--oy-space-3);
}
.oy-hero-note {
  margin: var(--oy-space-4) 0 0;
  font-size: var(--oy-fs-small);
  color: var(--oy-color-text-light);
}
.oy-hero-side {
  display: flex;
  align-items: center; /* 画像をヒーロー欄内で上下中央配置 */
  justify-content: center;
}
.oy-hero-side img {
  width: 100%;
  height: auto;
  /* 12:9 を厳密に維持し、cell 内では上揃え。h1上端から自然に降りる構図に */
  aspect-ratio: 12 / 9;
  max-height: none;
  object-fit: cover;
  object-position: center;
  border-radius: var(--oy-radius-lg);
  box-shadow: var(--oy-shadow-lg);
  display: block;
}
@media screen and (max-width: 1023px) {
  /* タブレット以下では縦積みになるので max-height は外して自然サイズに */
  .oy-hero-side img { max-height: none; }
}

/* 画像プレースホルダー（実画像未確定のとき差し替え位置を視覚化）
   そのまま <img> に差し替えればOK。aria-label でスクリーンリーダーにも意味を伝える。 */
.oy-image-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--oy-space-2);
  width: 100%;
  aspect-ratio: 4 / 3;
  background:
    repeating-linear-gradient(45deg,
      #f1f7f3 0 14px,
      #e8f5ed 14px 28px);
  border: 2px dashed var(--oy-color-primary);
  border-radius: var(--oy-radius-lg);
  color: var(--oy-color-primary-dark);
  font-weight: 700;
  font-size: var(--oy-fs-small);
  text-align: center;
  padding: var(--oy-space-5);
}
.oy-image-placeholder .fas,
.oy-image-placeholder .far {
  font-size: 36px;
  color: var(--oy-color-primary);
}
.oy-image-placeholder small {
  font-weight: 400;
  color: var(--oy-color-text-muted);
}

/* ==========================================================================
   固定ページ／投稿の本文（再利用前提：page.php / 将来 single.php でも使う）
   ========================================================================== */

/* ページヘッダー（タイトル領域） */
.oy-page-header {
  margin-bottom: var(--oy-space-10);
  padding-bottom: var(--oy-space-6);
  border-bottom: 1px solid var(--oy-color-border);
  text-align: center;
}
.oy-page-title {
  margin: 0;
  font-size: var(--oy-fs-h1);
  line-height: var(--oy-lh-heading);
  color: var(--oy-color-text);
  letter-spacing: .02em;
}

/* 投稿固有メタ（カテゴリ + 投稿日）— single.php の本文パネル上部で使用
   本文の冒頭にカテゴリチップ＋日付を左揃えで並べ、本文への自然な導入とする */
.oy-post-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;   /* 本文に合わせて左揃え */
  gap: var(--oy-space-3) var(--oy-space-5);
  margin: 0 0 var(--oy-space-8); /* 本文との間に十分な余白 */
  padding-bottom: var(--oy-space-5);
  border-bottom: 1px solid var(--oy-color-border);
  font-size: var(--oy-fs-small);
  color: var(--oy-color-text-muted);
}
.oy-post-meta-category {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  padding: .25em .9em;
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
  border-radius: var(--oy-radius-pill);
  font-weight: 700;
  font-size: var(--oy-fs-tiny);
  letter-spacing: .04em;
  text-decoration: none;
  transition: background var(--oy-transition), color var(--oy-transition);
}
/* hover/focus 可読化（最重要）：
   global a:hover や Cocoon 由来の任意ルール、各種コンテキスト override に
   どこからでも勝てるよう、specificity を a.body.* レベルまで引き上げ
   ＋!important を全プロパティに付与。WCAG AA コントラスト 5.8。 */
.oy-post-meta-category:hover,
.oy-post-meta-category:focus,
.oy-post-meta-category:focus-visible,
.oy-page-hero .oy-post-meta-category:hover,
.oy-page-hero .oy-post-meta-category:focus,
.oy-page-hero .oy-post-meta-category:focus-visible,
body .oy-post-meta-category:hover,
body .oy-post-meta-category:focus,
body.single a.oy-post-meta-category:hover,
body.single a.oy-post-meta-category:focus,
body.single a.oy-post-meta-category:focus-visible,
.oy-page-panel a.oy-post-meta-category:hover,
.oy-page-panel a.oy-post-meta-category:focus,
.oy-page-panel a.oy-post-meta-category:focus-visible,
/* 新 single の構造に直撃：oy-post-meta（本文上部メタ行）の中の chip */
.oy-post-meta a.oy-post-meta-category:hover,
.oy-post-meta a.oy-post-meta-category:focus,
.oy-post-meta a.oy-post-meta-category:focus-visible {
  background: var(--oy-color-primary-dark) !important;
  color: #fff !important;
  border-color: var(--oy-color-primary-dark) !important;
  text-decoration: none !important;
}
.oy-post-meta-date {
  display: inline-flex;
  align-items: center;
  gap: .4em;
}
.oy-post-meta-date .far,
.oy-post-meta-date .fas { color: var(--oy-color-text-light); }

/* 記事末尾の戻り導線 — single.php で使用 */
.oy-post-footer-nav {
  margin-top: var(--oy-space-12);
  padding-top: var(--oy-space-6);
  border-top: 1px solid var(--oy-color-border);
  text-align: center;
}

/* ==========================================================================
   ページヒーロー — 下層ページ共通の帯ヘッダー
   archive.php / search.php / 404.php / page.php / single.php で使用。
   トップページの oy-hero と同じ薄緑グラデで「サイトの続き」感を出す。
   ========================================================================== */
.oy-page-hero {
  /* 上下を対称（48px / 48px）に。h1 が帯の上に張り付かないよう中央寄りバランス */
  padding: var(--oy-space-12) 0;
  text-align: center;
  background: linear-gradient(180deg, #f1f7f3 0%, #e8f5ed 100%);
}
.oy-page-hero-eyebrow {
  display: inline-block;
  margin: 0 0 var(--oy-space-3);
  padding: .25em 1em;
  background: rgba(255, 255, 255, .7);
  color: var(--oy-color-primary);
  border-radius: var(--oy-radius-pill);
  font-size: var(--oy-fs-small);
  font-weight: 700;
  letter-spacing: .14em;
}
.oy-page-hero-title {
  /* 帯内で h1 だけが置かれるケース（page / single / archive）で上下が対称になるよう
     h1 の bottom margin はゼロに。description が続く場合は description 側で margin-top を持たせる */
  margin: 0;
  font-size: var(--oy-fs-h1);
  line-height: var(--oy-lh-heading);
  color: var(--oy-color-text);
  letter-spacing: .02em;
}
/* description が h1 の下に続く場合のみ、上にスペースを確保 */
.oy-page-hero-title + .oy-page-hero-description {
  margin-top: var(--oy-space-4);
}
.oy-page-hero-description {
  margin: 0 auto;
  max-width: 680px;
  color: var(--oy-color-text-muted);
  font-size: var(--oy-fs-base);
  line-height: var(--oy-lh-base);
}
.oy-page-hero-description p { margin: 0; }
.oy-page-hero-description p + p { margin-top: var(--oy-space-2); }
.oy-page-hero-count {
  display: inline-block;
  margin-top: var(--oy-space-3);
  padding: .2em 1em;
  background: rgba(255, 255, 255, .8);
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-pill);
  font-size: var(--oy-fs-small);
  color: var(--oy-color-text-muted);
}
.oy-page-hero-count strong {
  color: var(--oy-color-primary-dark);
  margin: 0 .15em;
}
/* （旧 single.php の hero メタ用クラスは削除済み。本文上部メタは .oy-post-meta を使う） */

/* SP：ヒーローの上下余白を圧縮 */
@media screen and (max-width: 834px) {
  .oy-page-hero { padding: var(--oy-space-8) 0 var(--oy-space-6); }
}

/* ==========================================================================
   ページパネル — page.php / single.php で本文を白いカードに収める
   外側はトップページに近い 1080px の広いシェル（薄緑）。
   その中に白パネル（角丸＋薄い枠線＋十分な padding）。
   さらにその中に oy-reading-inner で読みやすい本文幅（920px）。
   ========================================================================== */
.oy-page-panel {
  background: #fff;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-lg);
  box-shadow: var(--oy-shadow-sm);
  /* たっぷり padding でしょぼさを消す */
  padding: var(--oy-space-16) var(--oy-space-12);
}
.oy-reading-inner {
  max-width: var(--oy-container-reading);
  margin-left: auto;
  margin-right: auto;
}

/* SP のパネル padding 圧縮 */
@media screen and (max-width: 834px) {
  .oy-page-panel { padding: var(--oy-space-10) var(--oy-space-6); }
}
@media screen and (max-width: 480px) {
  .oy-page-panel {
    padding: var(--oy-space-8) var(--oy-space-4);
    border-radius: var(--oy-radius-md);
  }
}

/* ==========================================================================
   サムネ無し時のフォールバック絵（プレースホルダ感ゼロの「意図ある絵」）
   archive.php / search.php のカードで使う
   ========================================================================== */
.oy-thumb-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, #e8f5ed 0%, #c5e6d2 50%, #a9d8bb 100%);
  color: #fff;
}
.oy-thumb-fallback i {
  font-size: 42px;
  opacity: .9;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.08));
}

/* ==========================================================================
   アーカイブ／検索カード一覧（oy-link-card のグリッドで使う）
   既存 .oy-link-card / .oy-link-card-thumb / .oy-link-card-body を流用しつつ、
   メタ（カテゴリラベル＋日付）の余白を整える。
   ========================================================================== */
.oy-link-card-body .oy-label {
  align-self: flex-start;
  margin-bottom: var(--oy-space-1);
}
.oy-link-card-meta {
  margin: var(--oy-space-2) 0 0;
  padding-top: var(--oy-space-3);
  border-top: 1px solid var(--oy-color-border);
  font-size: var(--oy-fs-tiny);
  color: var(--oy-color-text-light);
}
.oy-link-card-meta time {
  display: inline-flex;
  align-items: center;
  gap: .35em;
}
/* card の本文をやや増しの行間で読みやすく */
.oy-link-card-text {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
  line-height: 1.7;
}

/* PC: 1023px 以下のタブレットで .oy-grid-3 を 2カラムに（archive を綺麗に見せる） */
@media screen and (max-width: 1023px) and (min-width: 835px) {
  .oy-grid-3 { grid-template-columns: repeat(2, 1fr); }
}

/* ==========================================================================
   アーカイブ／検索／404 共通（再利用前提：archive.php / search.php / 404.php）
   ========================================================================== */

/* アーカイブヘッダー（カテゴリ名・説明） */
.oy-archive-eyebrow {
  display: inline-block;
  margin: 0 0 var(--oy-space-2);
  font-size: var(--oy-fs-small);
  font-weight: 700;
  color: var(--oy-color-primary);
  letter-spacing: .12em;
}
.oy-archive-description {
  margin-top: var(--oy-space-4);
  color: var(--oy-color-text-muted);
  font-size: var(--oy-fs-base);
  line-height: var(--oy-lh-base);
}
.oy-archive-description p { margin: 0; }
.oy-archive-description p + p { margin-top: var(--oy-space-2); }

/* リスト項目内のボディ（archive.php / search.php） */
.oy-list-item-body {
  display: flex;
  flex-direction: column;
  gap: var(--oy-space-2);
  min-width: 0;
  justify-content: center;
}
.oy-list-item-body .oy-list-title { margin: 0; }
.oy-list-item-body .oy-label { align-self: flex-start; }
.oy-list-item-body .oy-list-text { margin: 0; }
.oy-list-meta {
  margin: var(--oy-space-1) 0 0;
  font-size: var(--oy-fs-tiny);
  color: var(--oy-color-text-light);
}
.oy-list-meta time {
  display: inline-flex;
  align-items: center;
  gap: .35em;
}

/* ==========================================================================
   WooCommerce 商品ページのヘッダーロゴ肥大化対策
   ----------------------------------------------------------------------------
   本サイトはテキストロゴ（.oy-site-brand-*）運用だが、.single-product 文脈で
   親テーマ／WooCommerce／関連プラグイン由来の CSS が画像ロゴ系クラスを
   膨張させる事象を確認したため、子テーマ側で防御。
   実セレクタは DevTools で確認推奨。下記は WooCommerce／Cocoon／一般的な
   命名（custom-logo / site-logo / header-logo）を網羅した安全網。
   親テーマ／WC プラグイン CSS を上書きするため !important が必須。
   ========================================================================== */

/* 画像ロゴ系：WooCommerce 関連ページで出現しうる全ロゴ画像クラスをサイズキャップ
   - .single-product / .woocommerce-cart / .woocommerce-checkout / .woocommerce-page を網羅
   - 当サイトの実ロゴは .oy-site-brand-logo（高さ44px）。それを基準に強制 */
body.single-product .oy-site-header img,
body.single-product .oy-site-brand-logo,
body.single-product .custom-logo,
body.single-product .custom-logo-link img,
body.single-product .site-logo img,
body.single-product .header-logo img,
body.single-product .logo-image img,
body.woocommerce-cart .oy-site-header img,
body.woocommerce-cart .oy-site-brand-logo,
body.woocommerce-cart .custom-logo,
body.woocommerce-checkout .oy-site-header img,
body.woocommerce-checkout .oy-site-brand-logo,
body.woocommerce-checkout .custom-logo,
body.woocommerce-page .oy-site-header img,
body.woocommerce-page .oy-site-brand-logo,
body.woocommerce-page .custom-logo {
  max-width: 280px !important;
  max-height: 56px !important;
  height: 56px !important;
  width: auto !important;
}

/* テキストロゴ safety net：WooCommerce 文脈で .oy-site-brand-main が
   膨張するルールがあっても基準サイズに戻す */
body.single-product .oy-site-brand-main,
body.woocommerce-cart .oy-site-brand-main,
body.woocommerce-checkout .oy-site-brand-main,
body.woocommerce-page .oy-site-brand-main {
  font-size: 24px !important;
  line-height: 1.15 !important;
}
body.single-product .oy-site-brand-sub,
body.woocommerce-cart .oy-site-brand-sub,
body.woocommerce-checkout .oy-site-brand-sub,
body.woocommerce-page .oy-site-brand-sub {
  font-size: var(--oy-fs-tiny) !important;
}

/* スクロール後コンパクト時のテキストロゴサイズも WooCommerce ページで強制 */
body.single-product .oy-site-header.is-scrolled .oy-site-brand-main,
body.woocommerce-cart .oy-site-header.is-scrolled .oy-site-brand-main,
body.woocommerce-checkout .oy-site-header.is-scrolled .oy-site-brand-main,
body.woocommerce-page .oy-site-header.is-scrolled .oy-site-brand-main {
  font-size: 19px !important;
}

/* SP 表示：ロゴをさらに小さく */
@media screen and (max-width: 480px) {
  body.single-product .oy-site-header img,
  body.single-product .oy-site-brand-logo,
  body.single-product .custom-logo,
  body.single-product .custom-logo-link img,
  body.single-product .site-logo img,
  body.single-product .header-logo img,
  body.single-product .logo-image img,
  body.woocommerce-cart .oy-site-header img,
  body.woocommerce-cart .oy-site-brand-logo,
  body.woocommerce-cart .custom-logo,
  body.woocommerce-checkout .oy-site-header img,
  body.woocommerce-checkout .oy-site-brand-logo,
  body.woocommerce-checkout .custom-logo,
  body.woocommerce-page .oy-site-header img,
  body.woocommerce-page .oy-site-brand-logo,
  body.woocommerce-page .custom-logo {
    max-width: 220px !important;
    max-height: 44px !important;
    height: 44px !important;
  }
  body.single-product .oy-site-brand-main,
  body.woocommerce-cart .oy-site-brand-main,
  body.woocommerce-checkout .oy-site-brand-main,
  body.woocommerce-page .oy-site-brand-main {
    font-size: 19px !important;
  }
}

/* ==========================================================================
   WooCommerce 商品画像（ギャラリー）の表示調整
   ----------------------------------------------------------------------------
   - 高さ固定でアスペクト比が崩れる事象を防ぐ
   - width: 100% / height: auto で画像本来の比率を維持
   - object-fit でクロップしない
   - 虫眼鏡ズームUI（.woocommerce-product-gallery__trigger）を非表示
   ========================================================================== */
.woocommerce-product-gallery,
.woocommerce-product-gallery__wrapper,
.woocommerce-product-gallery__image {
  height: auto !important;
}
.woocommerce-product-gallery__image img,
.woocommerce div.product .woocommerce-product-gallery img,
.woocommerce-product-gallery img {
  width: 100% !important;
  height: auto !important;
  max-height: none !important;
  aspect-ratio: auto !important;
  object-fit: initial !important;
  object-position: initial !important;
}
/* ズームの虫眼鏡UI（虫眼鏡アイコン）を非表示 — functions.php で
   theme_support を剥がしているので元から出ないが、念のため CSS でも閉鎖 */
.woocommerce-product-gallery__trigger {
  display: none !important;
}
/* ライトボックス無効化に伴い、ギャラリー画像をリンクとして無効化 */
.woocommerce-product-gallery__image > a {
  pointer-events: none;
  cursor: default;
}

/* 記事ゼロ件ステート */
.oy-archive-empty {
  text-align: center;
  padding: var(--oy-space-12) var(--oy-space-5);
  background: var(--oy-color-bg-section);
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
}
.oy-archive-empty-title {
  margin: 0 0 var(--oy-space-2);
  font-weight: 700;
  font-size: var(--oy-fs-h4);
}
.oy-archive-empty-text {
  margin: 0 0 var(--oy-space-5);
  color: var(--oy-color-text-muted);
}

/* ページネーション */
.oy-pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--oy-space-2);
  margin-top: var(--oy-space-12);
  padding-top: var(--oy-space-6);
  border-top: 1px solid var(--oy-color-border);
}
.oy-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35em;
  min-width: 44px;
  min-height: 44px;
  padding: 0 var(--oy-space-3);
  background: #fff;
  color: var(--oy-color-text);
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-sm);
  text-decoration: none;
  font-weight: 700;
  font-size: var(--oy-fs-base);
  transition: background var(--oy-transition), border-color var(--oy-transition), color var(--oy-transition);
}
.oy-pagination .page-numbers:hover,
.oy-pagination .page-numbers:focus-visible {
  border-color: var(--oy-color-primary);
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
}
.oy-pagination .page-numbers.current {
  background: var(--oy-color-primary);
  border-color: var(--oy-color-primary);
  color: #fff;
}
.oy-pagination .page-numbers.dots {
  border-color: transparent;
  background: transparent;
  cursor: default;
}
.oy-pagination .prev,
.oy-pagination .next { padding: 0 var(--oy-space-4); }

/* 検索フォーム */
.oy-search-form {
  display: flex;
  flex-wrap: wrap;
  gap: var(--oy-space-2);
  margin: var(--oy-space-5) auto 0;
  max-width: 560px;
}
.oy-search-form-input {
  flex: 1 1 240px;
  min-height: 48px;
  padding: 0 var(--oy-space-4);
  border: 1px solid var(--oy-color-border-strong);
  border-radius: var(--oy-radius-sm);
  font-size: var(--oy-fs-base);
  background: #fff;
  color: var(--oy-color-text);
  font-family: inherit;
}
.oy-search-form-input:focus {
  outline: none;
  border-color: var(--oy-color-primary);
  box-shadow: 0 0 0 3px rgba(47, 140, 91, .2);
}
.oy-search-form-submit.oy-btn {
  flex-shrink: 0;
  min-height: 48px;
  padding: 0 var(--oy-space-5);
  font-size: var(--oy-fs-base);
}

/* visually-hidden（スクリーンリーダー専用） */
.oy-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* 本文ラッパー（"prose"）
   WordPress 本文の <p> <h2> <h3> <ul> <ol> <blockquote> <img> <table> 等を
   読みやすく整える。base スタイルに乗せた最小限の補正のみ。*/
.oy-prose {
  font-size: var(--oy-fs-base);
  line-height: var(--oy-lh-base);
  color: var(--oy-color-text);
}
.oy-prose > * + * { margin-top: var(--oy-space-5); }
.oy-prose > h2,
.oy-prose > h3,
.oy-prose > h4 { margin-top: var(--oy-space-10); }
.oy-prose h2 {
  padding-bottom: var(--oy-space-2);
  border-bottom: 2px solid var(--oy-color-primary-soft);
}
.oy-prose h3 {
  padding-left: var(--oy-space-3);
  border-left: 4px solid var(--oy-color-primary);
}
.oy-prose ul,
.oy-prose ol { padding-left: 1.6em; }
.oy-prose li + li { margin-top: var(--oy-space-2); }

.oy-prose img,
.oy-prose figure {
  display: block;
  max-width: 100%;
  height: auto;
  border-radius: var(--oy-radius-md);
}
.oy-prose figure { margin: var(--oy-space-6) 0; }
.oy-prose figcaption {
  margin-top: var(--oy-space-2);
  font-size: var(--oy-fs-small);
  color: var(--oy-color-text-muted);
  text-align: center;
}

.oy-prose blockquote {
  margin: var(--oy-space-6) 0;
  padding: var(--oy-space-4) var(--oy-space-5);
  background: var(--oy-color-bg-section);
  border-left: 4px solid var(--oy-color-primary);
  border-radius: var(--oy-radius-sm);
  color: var(--oy-color-text-muted);
}
.oy-prose blockquote p:last-child { margin-bottom: 0; }

.oy-prose code {
  padding: .15em .4em;
  background: var(--oy-color-bg-section);
  border: 1px solid var(--oy-color-border);
  border-radius: 4px;
  font-size: .92em;
}
.oy-prose pre {
  padding: var(--oy-space-4);
  background: #2a3a31;
  color: #e8f5ed;
  border-radius: var(--oy-radius-md);
  overflow-x: auto;
  font-size: var(--oy-fs-small);
  line-height: 1.6;
}
.oy-prose pre code {
  padding: 0;
  background: transparent;
  border: 0;
  color: inherit;
}

.oy-prose table {
  width: 100%;
  border-collapse: collapse;
  margin: var(--oy-space-6) 0;
  font-size: var(--oy-fs-small);
}
.oy-prose th,
.oy-prose td {
  padding: var(--oy-space-3) var(--oy-space-4);
  border: 1px solid var(--oy-color-border);
  text-align: left;
  vertical-align: top;
}
.oy-prose th {
  background: var(--oy-color-bg-section);
  font-weight: 700;
}

.oy-prose hr {
  margin: var(--oy-space-10) 0;
  border: 0;
  border-top: 1px solid var(--oy-color-border);
}

/* 本文末尾の余白を最後の要素に持たせない */
.oy-prose > :last-child { margin-bottom: 0; }

/* ページ送り（<!--nextpage--> 利用時） */
.oy-page-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--oy-space-2);
  margin-top: var(--oy-space-10);
  padding-top: var(--oy-space-5);
  border-top: 1px solid var(--oy-color-border);
  font-size: var(--oy-fs-small);
}
.oy-page-pagination-label { color: var(--oy-color-text-muted); }
.oy-page-pagination a,
.oy-page-pagination > span:not(.oy-page-pagination-label) {
  display: inline-block;
  min-width: 36px;
  padding: 4px 10px;
  text-align: center;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-sm);
  text-decoration: none;
  color: var(--oy-color-text);
}
.oy-page-pagination a:hover {
  border-color: var(--oy-color-primary);
  background: var(--oy-color-primary-soft);
  color: var(--oy-color-primary-dark);
}

/* ヒーロー下のミニ情報パネル（iPhone/Android、料金、対応時間 等） */
.oy-mini-panel {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--oy-space-3);
  margin-top: var(--oy-space-8);
  padding: var(--oy-space-4);
  background: #fff;
  border: 1px solid var(--oy-color-border);
  border-radius: var(--oy-radius-md);
  box-shadow: var(--oy-shadow-sm);
}
.oy-mini-panel > div {
  text-align: center;
  padding: var(--oy-space-2);
}
.oy-mini-panel > div + div {
  border-left: 1px solid var(--oy-color-border);
}
.oy-mini-panel .oy-mini-label {
  display: block;
  font-size: var(--oy-fs-tiny);
  color: var(--oy-color-text-light);
  letter-spacing: .08em;
  margin-bottom: .25em;
}
.oy-mini-panel .oy-mini-value {
  display: block;
  font-size: var(--oy-fs-h4);
  font-weight: 700;
  color: var(--oy-color-text);
}

/* ==========================================================================
   14. Utility
   ========================================================================== */
.oy-text-center { text-align: center !important; }
.oy-text-left   { text-align: left   !important; }
.oy-text-right  { text-align: right  !important; }
.oy-text-muted  { color: var(--oy-color-text-muted) !important; }

.oy-mt-0  { margin-top: 0 !important; }
.oy-mt-2  { margin-top: var(--oy-space-2)  !important; }
.oy-mt-4  { margin-top: var(--oy-space-4)  !important; }
.oy-mt-6  { margin-top: var(--oy-space-6)  !important; }
.oy-mt-8  { margin-top: var(--oy-space-8)  !important; }
.oy-mt-12 { margin-top: var(--oy-space-12) !important; }

.oy-mb-0  { margin-bottom: 0 !important; }
.oy-mb-2  { margin-bottom: var(--oy-space-2)  !important; }
.oy-mb-4  { margin-bottom: var(--oy-space-4)  !important; }
.oy-mb-6  { margin-bottom: var(--oy-space-6)  !important; }
.oy-mb-8  { margin-bottom: var(--oy-space-8)  !important; }
.oy-mb-12 { margin-bottom: var(--oy-space-12) !important; }

/* PC/SP 表示切替（最低限） */
.oy-only-sp { display: none !important; }
.oy-only-pc { display: initial !important; }

/* ==========================================================================
   ページ上部へ戻るボタン（site-wide / footer.php に1つだけ出力）
   ========================================================================== */
.oy-back-to-top {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 90; /* sticky header(100) より下、本文より上 */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* アイコンのみ：完全な円形 */
  width: 56px;
  height: 56px;
  padding: 0;
  background: var(--oy-color-primary);
  color: #fff;
  border: 0;
  border-radius: 50%;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  box-shadow: var(--oy-shadow-md);
  /* 初期状態：非表示。JSで .is-visible が付くと表示 */
  opacity: 0;
  transform: translateY(8px);
  pointer-events: none;
  transition: opacity .25s ease, transform .25s ease, background var(--oy-transition);
}
.oy-back-to-top.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.oy-back-to-top:hover,
.oy-back-to-top:focus-visible {
  background: var(--oy-color-primary-dark);
  color: #fff;
}
.oy-back-to-top:active { transform: translateY(2px); }
.oy-back-to-top__icon { font-size: 1em; }
/* テキストは画面に出さず、aria-label のみで意味を伝える（visually-hidden） */
.oy-back-to-top__text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* SP では少し小さく（タップ領域は確保） */
@media screen and (max-width: 480px) {
  .oy-back-to-top {
    right: 16px;
    bottom: 16px;
    width: 48px;
    height: 48px;
    font-size: 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .oy-back-to-top { transition: opacity .2s linear; }
}

/* ==========================================================================
   レスポンシブ
   ========================================================================== */

/*1023px以下*/
@media screen and (max-width: 1023px){
  .oy-grid.is-4col,
  .oy-grid-4         { grid-template-columns: repeat(2, 1fr); }
  .oy-finder-box     { grid-template-columns: repeat(2, 1fr); }
  .oy-site-footer-grid { grid-template-columns: 1fr 1fr; }
  .oy-hero-grid      { grid-template-columns: 1fr; }
  .oy-hero-main h1   { font-size: 30px; }
}

/*834px以下：モバイルナビ展開*/
@media screen and (max-width: 834px){
  .oy-section { padding-top: var(--oy-space-12); padding-bottom: var(--oy-space-12); }
  .oy-grid.is-2col,
  .oy-grid.is-3col,
  .oy-grid.is-4col,
  .oy-grid-2,
  .oy-grid-3,
  .oy-grid-4         { grid-template-columns: 1fr; }
  .oy-finder-box     { grid-template-columns: 1fr; }
  .oy-list-item      { grid-template-columns: 120px 1fr; }
  .oy-mini-panel     { grid-template-columns: 1fr; }
  .oy-mini-panel > div + div {
    border-left: 0;
    border-top: 1px solid var(--oy-color-border);
  }

  /* ヘッダー：ハンバーガー出現＋高さ縮小（変数も同時に更新） */
  :root { --oy-header-height: 64px; }
  .oy-site-header-top { padding-top: var(--oy-space-3); padding-bottom: var(--oy-space-3); }
  .oy-site-header-top-inner { justify-content: space-between; }
  .oy-site-brand { align-items: flex-start; }
  .oy-site-brand-sub { display: none; }

  .oy-menu-toggle { display: inline-flex; flex-shrink: 0; }

  /* SP では下段ナビをドロップダウン化 */
  .oy-global-nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    border-top: 1px solid var(--oy-color-border);
    border-bottom: 1px solid var(--oy-color-border);
    box-shadow: var(--oy-shadow-md);
    /* 閉じている状態 */
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
    transition: max-height .25s ease, opacity .2s ease;
  }
  body.oy-nav-open .oy-global-nav {
    max-height: 80vh;
    overflow: auto;
    opacity: 1;
    pointer-events: auto;
  }
  .oy-site-header-bottom-inner {
    flex-direction: column;
    align-items: stretch;
    gap: var(--oy-space-2);
    padding: var(--oy-space-4) var(--oy-space-5) var(--oy-space-6);
  }
  .oy-global-nav-list {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    width: 100%;
  }
  .oy-global-nav-link {
    display: block;
    padding: var(--oy-space-3) var(--oy-space-3);
    font-size: var(--oy-fs-lead);
    border-radius: var(--oy-radius-sm);
    white-space: normal;
  }
  .oy-header-cta.oy-btn { width: 100%; min-height: 52px; margin-left: 0; }

  /* SP のスクロール後コンパクト：トップ段のロゴをさらに詰める */
  .oy-site-header.is-scrolled .oy-site-header-top { padding-top: var(--oy-space-2); padding-bottom: var(--oy-space-2); }
  .oy-site-header.is-scrolled .oy-site-brand-main { font-size: 18px; }

  /* フッター：2カラム */
  .oy-site-footer-grid { grid-template-columns: 1fr; gap: var(--oy-space-6); }
  .oy-site-footer      { padding-top: var(--oy-space-12); }
}

/*480px以下*/
@media screen and (max-width: 480px){
  :root {
    --oy-fs-h1: 26px;
    --oy-fs-h2: 22px;
    --oy-fs-h3: 19px;
  }
  .oy-container { padding-left: var(--oy-space-4); padding-right: var(--oy-space-4); }
  .oy-section   { padding-top: var(--oy-space-10); padding-bottom: var(--oy-space-10); }

  /* SPでの押しやすさ：ボタンを基本100%幅に */
  .oy-btn { width: 100%; }
  .oy-cta-actions .oy-btn { flex: 1 1 100%; }
  .oy-hero-actions .oy-btn { flex: 1 1 100%; }

  .oy-list-item        { grid-template-columns: 1fr; }
  .oy-site-footer      { padding-top: var(--oy-space-12); }

  /* ヘッダーのブランド名は少し縮める */
  .oy-site-brand-main  { font-size: 19px; }

  .oy-only-sp { display: initial !important; }
  .oy-only-pc { display: none    !important; }
}


/* === WCページのis-scrolled上書き（2026-05-06） === */
body.single-product .oy-site-header.is-scrolled .oy-site-brand-logo,
body.woocommerce-cart .oy-site-header.is-scrolled .oy-site-brand-logo,
body.woocommerce-checkout .oy-site-header.is-scrolled .oy-site-brand-logo,
body.woocommerce-account .oy-site-header.is-scrolled .oy-site-brand-logo {
  max-height: 40px !important;
  height: 40px !important;
}
@media (max-width: 834px) {
  body.single-product .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-cart .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-checkout .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-account .oy-site-header.is-scrolled .oy-site-brand-logo {
    max-height: 44px !important;
    height: 44px !important;
  }
}


/* === SP・タブレットのロゴサイズ統一（通常+scroll 同一）2026-05-06d === */
/* 元のWC防御CSSが `body.woocommerce-cart .oy-site-header img` (specificity 22) を含むため、
   こちらも img selector を含めて specificity を揃え、source order で後勝ちさせる。
   body.woocommerce-page も追加して全WCページを網羅。 */
@media (max-width: 834px) {
  .oy-site-brand-logo,
  body.single-product .oy-site-header img,
  body.single-product .oy-site-brand-logo,
  body.woocommerce-cart .oy-site-header img,
  body.woocommerce-cart .oy-site-brand-logo,
  body.woocommerce-checkout .oy-site-header img,
  body.woocommerce-checkout .oy-site-brand-logo,
  body.woocommerce-account .oy-site-header img,
  body.woocommerce-account .oy-site-brand-logo,
  body.woocommerce-page .oy-site-header img,
  body.woocommerce-page .oy-site-brand-logo,
  .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.single-product .oy-site-header.is-scrolled img,
  body.single-product .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-cart .oy-site-header.is-scrolled img,
  body.woocommerce-cart .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-checkout .oy-site-header.is-scrolled img,
  body.woocommerce-checkout .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-account .oy-site-header.is-scrolled img,
  body.woocommerce-account .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-page .oy-site-header.is-scrolled img,
  body.woocommerce-page .oy-site-header.is-scrolled .oy-site-brand-logo {
    height: 52px !important;
    max-height: 52px !important;
  }
}
@media (max-width: 480px) {
  .oy-site-brand-logo,
  body.single-product .oy-site-header img,
  body.single-product .oy-site-brand-logo,
  body.woocommerce-cart .oy-site-header img,
  body.woocommerce-cart .oy-site-brand-logo,
  body.woocommerce-checkout .oy-site-header img,
  body.woocommerce-checkout .oy-site-brand-logo,
  body.woocommerce-account .oy-site-header img,
  body.woocommerce-account .oy-site-brand-logo,
  body.woocommerce-page .oy-site-header img,
  body.woocommerce-page .oy-site-brand-logo,
  .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.single-product .oy-site-header.is-scrolled img,
  body.single-product .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-cart .oy-site-header.is-scrolled img,
  body.woocommerce-cart .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-checkout .oy-site-header.is-scrolled img,
  body.woocommerce-checkout .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-account .oy-site-header.is-scrolled img,
  body.woocommerce-account .oy-site-header.is-scrolled .oy-site-brand-logo,
  body.woocommerce-page .oy-site-header.is-scrolled img,
  body.woocommerce-page .oy-site-header.is-scrolled .oy-site-brand-logo {
    height: 42px !important;
    max-height: 42px !important;
  }
}

/* === SPハンバーガー展開時の無料ガイドCTA収め（2026-05-06b） === */
@media (max-width: 834px) {
  /* ハンバーガー展開時、CTAが幅を超えないように収める */
  #oy-global-nav .oy-header-cta {
    align-self: center;
    width: auto;
    max-width: calc(100% - 32px);
    box-sizing: border-box;
    white-space: nowrap;
  }
  .oy-site-header-bottom-inner {
    box-sizing: border-box;
    padding-left: 16px;
    padding-right: 16px;
  }
}

/* === 1023px以下：ヒーロー画像を先頭＋上余白を詰める（2026-05-06c） === */
@media (max-width: 1023px) {
  .oy-hero { padding-top: var(--oy-space-6); } /* SP: 24px。ヘッダー直下に自然に続く余白 */
  .oy-hero-grid { display: flex; flex-direction: column; gap: var(--oy-space-6); }
  .oy-hero-side { order: -1; }
  .oy-hero-side img { max-width: 100%; height: auto; aspect-ratio: 12 / 9; }
}


/* === SPハンバーガー先頭の「トップページ」リンク（2026-05-06d） === */
.oy-mobile-home-link { display: none; }
@media (max-width: 834px) {
  #oy-global-nav .oy-mobile-home-link {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 48px;
    padding: 12px 16px;
    margin: 0 0 8px;
    border-radius: 12px;
    background: var(--oy-color-bg-soft, #f1f7f3);
    color: var(--oy-color-text);
    text-decoration: none;
    font-weight: 600;
    box-sizing: border-box;
    border: 1px solid var(--oy-color-border, rgba(0,0,0,.08));
  }
  #oy-global-nav .oy-mobile-home-link:hover,
  #oy-global-nav .oy-mobile-home-link:focus {
    background: #e8f5ed;
  }
  #oy-global-nav .oy-mobile-home-link i {
    font-size: 16px;
  }
}


/* === 投稿詳細ページのアイキャッチ画像 === */
.oy-post-featured-image {
  margin: 0 0 24px;
}
.oy-post-featured-image-img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 420px;
  object-fit: cover;
  border-radius: 16px;
}
@media (max-width: 834px) {
  .oy-post-featured-image {
    margin-bottom: 20px;
  }
  .oy-post-featured-image-img {
    max-height: 320px;
    border-radius: 12px;
  }
}


/* === SP: FREE GUIDE CTA ボタン 1行表示固定 === */
@media (max-width: 480px) {
  .oy-cta .oy-btn,
  .oy-cta .oy-btn.is-lg {
    white-space: nowrap;
    font-size: 17px;
    padding: 0.7em 1.2em;
    gap: 0.5em;
    min-height: 52px;
    max-width: 100%;
    box-sizing: border-box;
    align-items: center;
    justify-content: center;
    flex-wrap: nowrap;
  }
}


/* === free-guide: 無料ガイド導入ブロック === */
.oy-free-guide-hero {
  display: grid;
  grid-template-columns: minmax(260px, 38%) minmax(0, 1fr);
  gap: 40px;
  align-items: start;
  max-width: 1040px;
  margin: 0 auto 48px;
}

.oy-free-guide-hero__image {
  text-align: center;
}

.oy-free-guide-hero__image img {
  display: inline-block;
  width: 100%;
  max-width: 360px;
  height: auto;
}

.oy-free-guide-hero__content h2 {
  margin-top: 0;
}

.oy-free-guide-hero__content ul {
  margin-left: 1.2em;
}

.oy-free-guide-form {
  width: 100%;
  max-width: 560px;
  margin-top: 16px;
}

.oy-free-guide-form .hs-form-frame,
.oy-free-guide-form iframe {
  width: 100% !important;
  max-width: 100% !important;
  display: block;
}

/* SP: 画像→説明→フォームの縦並び */
@media (max-width: 768px) {
  .oy-free-guide-hero {
    display: block;
    max-width: 100%;
    margin-bottom: 40px;
  }

  .oy-free-guide-hero__image {
    margin-bottom: 24px;
  }

  .oy-free-guide-hero__image img {
    max-width: 92%;
  }

  .oy-free-guide-form {
    max-width: 100%;
  }
}


/* === free-guide: フォームカード === */
.oy-free-guide-card {
  background: #f4f8f1;
  border: 1px solid #d7e6d2;
  border-radius: 14px;
  padding: 28px 24px;
  margin-top: 16px;
}

.oy-free-guide-card__title {
  margin-top: 0;
  margin-bottom: 8px;
}

.oy-free-guide-card__lead {
  margin-top: 0;
  margin-bottom: 16px;
}

.oy-free-guide-card .oy-free-guide-form {
  margin-top: 0;
  max-width: 100%;
}

@media (max-width: 768px) {
  .oy-free-guide-card {
    padding: 22px 18px;
    border-radius: 12px;
  }
}


/* === Gutenberg ボタンブロック（wp:button）の最低限スタイルココーン子テーマで wp-block-library が dequeue されているため提供 === */
.wp-block-button {
  display: inline-block;
  margin: 0;
}

.wp-block-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75em;
  margin: 1.5em 0;
}

.wp-block-buttons.is-content-justification-center,
.wp-block-buttons[style*="justify-content: center"],
.wp-block-buttons[style*="justify-content:center"] {
  justify-content: center;
}

.wp-block-button__link,
.wp-element-button {
  display: inline-block;
  padding: 14px 28px;
  font-weight: 700;
  color: #ffffff !important;
  background: var(--oy-color-accent, #ff7a45);
  border: 2px solid var(--oy-color-accent, #ff7a45);
  border-radius: 999px;
  text-decoration: none;
  line-height: 1.4;
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.wp-block-button__link:hover,
.wp-element-button:hover,
.wp-block-button__link:focus,
.wp-element-button:focus {
  background: var(--oy-color-accent-dark, #e96632);
  border-color: var(--oy-color-accent-dark, #e96632);
  color: #ffffff !important;
  transform: translateY(-1px);
}


/* === LP/商品ページ用: PDF商品ヒーロー (oy-free-guide-hero と同型) === */
.oy-pdf-hero {
  display: grid;
  grid-template-columns: minmax(260px, 38%) minmax(0, 1fr);
  gap: 40px;
  align-items: start;
  max-width: 1040px;
  margin: 0 auto 48px;
}

.oy-pdf-hero__image {
  text-align: center;
}

.oy-pdf-hero__image img {
  display: inline-block;
  width: 100%;
  max-width: 360px;
  height: auto;
}

.oy-pdf-hero__content > *:first-child {
  margin-top: 0;
}

.oy-pdf-hero__lead {
  font-weight: 700;
  font-size: 1.1em;
  line-height: 1.6;
  margin-top: 0;
  margin-bottom: 16px;
}

.oy-pdf-hero__list {
  margin-left: 1.2em;
}

.oy-pdf-hero__note {
  color: #666;
  font-size: 0.92em;
  margin-top: 12px;
  margin-bottom: 16px;
}

.oy-pdf-hero__cta {
  margin-top: 20px;
  margin-bottom: 0;
}

@media (max-width: 768px) {
  .oy-pdf-hero {
    display: block;
    max-width: 100%;
    margin-bottom: 40px;
  }
  .oy-pdf-hero__image {
    margin-bottom: 24px;
  }
  .oy-pdf-hero__image img {
    max-width: 92%;
  }
}


/* === 有料商品CTA: 緑ボタン (.oy-btn-paid) ===
   無料導線（オレンジ）と区別するため、商品画像のグリーンに合わせる。
   既存 .wp-block-button__link / .wp-element-button の上書きとして specificity を上げる。
*/
.wp-block-button__link.oy-btn-paid,
.wp-element-button.oy-btn-paid,
a.oy-btn-paid {
  background-color: var(--oy-color-primary, #2f8c5b) !important;
  border-color: var(--oy-color-primary, #2f8c5b) !important;
  color: #ffffff !important;
}

.wp-block-button__link.oy-btn-paid:hover,
.wp-block-button__link.oy-btn-paid:focus,
.wp-element-button.oy-btn-paid:hover,
.wp-element-button.oy-btn-paid:focus,
a.oy-btn-paid:hover,
a.oy-btn-paid:focus {
  background-color: var(--oy-color-primary-dark, #246b46) !important;
  border-color: var(--oy-color-primary-dark, #246b46) !important;
  color: #ffffff !important;
}


/* === 無料ガイド申込みカード ポリッシュ (oy-free-guide-card 詳細調整) ===
   目的: スカスカ感を減らし、見出し→説明→フォームを上品にまとめる。
   /free-guide/ の .oy-free-guide-card 配下にだけ適用する。 */

/* カード外枠を少し上品に: 角丸を整え、枠を控えめにする */
.oy-free-guide-card {
  padding: 26px 24px 22px;       /* 上下ややタイト・下を詰める */
  border-color: #cfe0c8;         /* 既存より少し明瞭で上品 */
  box-shadow: 0 2px 14px -10px rgba(46, 90, 60, 0.18);
}

/* 見出しの下、説明文の上下、フォーム上の余白を整える */
.oy-free-guide-card__title {
  margin-bottom: 10px;            /* タイトル下を少し詰める */
}

.oy-free-guide-card__lead {
  margin-bottom: 14px;            /* 説明とフォームの距離をぐっと縮める */
  line-height: 1.7;
  color: var(--oy-color-text, #2b2b2b);
}

/* HubSpot埋め込み枠の上余白を詰めて、見出し→説明→フォームを一体化 */
.oy-free-guide-card .oy-free-guide-form {
  margin-top: 0;                  /* 既存の 16px をリセット */
}

.oy-free-guide-card .hs-form-frame,
.oy-free-guide-card .oy-free-guide-form iframe {
  margin: 0 auto;                 /* iframe を中央寄せ */
  display: block;
}

/* iframe 内側のフォームとの繋がりを意識して、カード内側下にやや余白を残す */
@media (min-width: 769px) {
  .oy-free-guide-card {
    padding: 28px 28px 22px;
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
  }
}

@media (max-width: 768px) {
  .oy-free-guide-card {
    padding: 22px 18px 18px;
  }
  .oy-free-guide-card__title {
    margin-bottom: 8px;
  }
  .oy-free-guide-card__lead {
    margin-bottom: 12px;
    line-height: 1.7;
  }
}

/* ダミー目印 (重複防止用): oy-free-guide-card__refine */


/* ============================================================
   ホーム画面に追加 案内ブロック + モーダル
   ============================================================ */

/* セクションは既存 .oy-section の余白を継承。背景だけ淡いグリーンカード化 */
.oy-add-home-section {
  /* セクション自体には背景を付けず、内側のカードに付ける */
}

.oy-add-home-card {
  background: #eef7ee;
  border: 1px solid #cfe0c8;
  border-radius: 18px;
  padding: 28px 24px;
  margin: 0 auto;
  max-width: 760px;
  box-shadow: 0 2px 20px -14px rgba(46, 90, 60, 0.18);
  text-align: center;
}

.oy-add-home-eyebrow {
  display: inline-block;
  margin-bottom: 6px;
  font-size: 0.85em;
  letter-spacing: 0.08em;
  color: var(--oy-color-primary, #2f8c5b);
  font-weight: 700;
}

.oy-add-home-title {
  margin-top: 0;
  margin-bottom: 12px;
  font-size: 1.35em;
  line-height: 1.5;
}

.oy-add-home-lead {
  margin: 0 auto 20px;
  line-height: 1.8;
  color: var(--oy-color-text, #2b2b2b);
  max-width: 620px;
}

.oy-add-home-buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-bottom: 12px;
}

.oy-add-home-btn {
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 220px;
  padding: 14px 22px;
  font-size: 1em;
  font-weight: 700;
  line-height: 1.4;
  border-radius: 999px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background-color .15s ease, transform .05s ease;
  text-decoration: none;
}

.oy-add-home-btn:focus-visible {
  outline: 3px solid #ffd479;
  outline-offset: 2px;
}

.oy-add-home-btn:active {
  transform: translateY(1px);
}

.oy-add-home-btn-icon {
  font-size: 1.15em;
  line-height: 1;
}

/* iPhone ボタン: 白ベースに緑の枠 */
.oy-add-home-btn--ios {
  background: #ffffff;
  color: var(--oy-color-primary-dark, #246b46);
  border-color: var(--oy-color-primary, #2f8c5b);
}

.oy-add-home-btn--ios:hover,
.oy-add-home-btn--ios:focus {
  background: #f3faf5;
}

/* Android ボタン: 緑ベース塗り */
.oy-add-home-btn--android {
  background: var(--oy-color-primary, #2f8c5b);
  color: #ffffff;
  border-color: var(--oy-color-primary, #2f8c5b);
}

.oy-add-home-btn--android:hover,
.oy-add-home-btn--android:focus {
  background: var(--oy-color-primary-dark, #246b46);
  border-color: var(--oy-color-primary-dark, #246b46);
}

.oy-add-home-note {
  margin: 8px 0 0;
  font-size: 0.85em;
  color: #6c7a73;
  line-height: 1.6;
}

/* ============================================================
   モーダル (PWA手順案内)
   ============================================================ */

.oy-modal[hidden] {
  display: none !important;
}

.oy-modal {
  position: fixed;
  inset: 0;
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  box-sizing: border-box;
  overflow: hidden;
}

.oy-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(20, 36, 28, 0.55);
  cursor: pointer;
}

.oy-modal__dialog {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 480px;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  background: #ffffff;
  border-radius: 18px;
  padding: 28px 24px 24px;
  box-shadow: 0 30px 60px -20px rgba(0, 0, 0, 0.35);
  box-sizing: border-box;
}

.oy-modal__close {
  position: absolute;
  top: 10px;
  right: 12px;
  width: 36px;
  height: 36px;
  font-size: 1.6em;
  line-height: 1;
  background: transparent;
  border: 0;
  cursor: pointer;
  color: #555;
  border-radius: 999px;
}

.oy-modal__close:hover,
.oy-modal__close:focus {
  background: #f0f0f0;
  color: #222;
  outline: none;
}

.oy-modal__title {
  margin: 0 32px 14px 0;
  font-size: 1.2em;
  line-height: 1.5;
  color: var(--oy-color-primary-dark, #246b46);
}

.oy-modal__steps {
  margin: 0 0 16px;
  padding-left: 1.4em;
  line-height: 1.8;
}

.oy-modal__steps li {
  margin-bottom: 8px;
}

.oy-modal__note {
  margin: 0;
  padding: 12px 14px;
  background: #f7faf6;
  border-left: 3px solid var(--oy-color-primary, #2f8c5b);
  border-radius: 4px;
  font-size: 0.9em;
  line-height: 1.7;
  color: #475148;
}

/* スクロール固定 (背景) */
body.oy-modal-open {
  overflow: hidden;
}

/* ============================================================
   SP対応
   ============================================================ */

@media (max-width: 768px) {
  .oy-add-home-card {
    padding: 22px 18px;
    border-radius: 14px;
  }
  .oy-add-home-title {
    font-size: 1.15em;
  }
  .oy-add-home-lead {
    font-size: 0.96em;
    line-height: 1.75;
  }
  .oy-add-home-buttons {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .oy-add-home-btn {
    width: 100%;
    min-width: 0;
  }
  .oy-modal {
    padding: 12px;
  }
  .oy-modal__dialog {
    padding: 24px 18px 20px;
    border-radius: 14px;
  }
  .oy-modal__title {
    font-size: 1.1em;
  }
}

/* ==========================================================================
   /free-guide/ 申込みカード (.oy-free-guide-apply)
   ----------------------------------------------------------------------------
   - PC: 左に説明コピー、右にフォームカードの2カラム
   - SP: 1カラム (説明→フォームの順)
   - CF7 (id 3fbb224) の input/checkbox/submit/response output を整形
   - スコープ: .oy-free-guide-apply 配下のみ (他CF7・他お問い合わせフォーム非影響)
   ========================================================================== */
.oy-free-guide-apply {
  max-width: 920px;
  margin: 0 auto 48px;
  padding: 32px;
  background: var(--oy-color-bg-soft, #fafafa);
  border: 1px solid var(--oy-color-border, #e5e5e5);
  border-radius: 16px;
}
.oy-free-guide-apply__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 32px;
  align-items: start;
}
.oy-free-guide-apply__copy .oy-section-kicker {
  display: inline-block;
  margin: 0 0 8px;
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 700;
  color: var(--oy-color-primary, #8526ff);
  background: var(--oy-color-primary-soft, #f3eaff);
  border-radius: 999px;
  letter-spacing: 0.04em;
}
.oy-free-guide-apply__title {
  margin: 8px 0 12px;
  font-size: 22px;
  line-height: 1.5;
  font-weight: 700;
  color: var(--oy-color-text, #1e1e1e);
}
.oy-free-guide-apply__lead {
  margin: 0 0 16px;
  font-size: 15px;
  line-height: 1.8;
  color: var(--oy-color-text-muted, #555);
}
.oy-free-guide-apply__points {
  margin: 0;
  padding: 0;
  list-style: none;
}
.oy-free-guide-apply__points li {
  position: relative;
  margin: 0;
  padding: 6px 0 6px 26px;
  font-size: 14px;
  line-height: 1.7;
  color: var(--oy-color-text, #1e1e1e);
}
.oy-free-guide-apply__points li::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 14px;
  width: 14px;
  height: 8px;
  border-left: 2px solid var(--oy-color-primary, #8526ff);
  border-bottom: 2px solid var(--oy-color-primary, #8526ff);
  transform: rotate(-45deg);
}
.oy-free-guide-apply__form-card {
  background: #ffffff;
  border: 1px solid var(--oy-color-border, #e5e5e5);
  border-radius: 12px;
  padding: 24px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.oy-free-guide-apply__form-title {
  margin: 0 0 8px;
  font-size: 17px;
  font-weight: 700;
  color: var(--oy-color-text, #1e1e1e);
}
.oy-free-guide-apply__form-note {
  margin: 0 0 18px;
  font-size: 13px;
  line-height: 1.7;
  color: var(--oy-color-text-muted, #666);
}
/* CF7 内部要素を整形 (このセクション配下のみ) */
.oy-free-guide-apply .wpcf7 { margin: 0; }
.oy-free-guide-apply .wpcf7-form { display: block; }
.oy-free-guide-apply .wpcf7-form p { margin: 0 0 14px; }
.oy-free-guide-apply .wpcf7-form label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--oy-color-text, #1e1e1e);
  margin-bottom: 6px;
}
.oy-free-guide-apply .wpcf7-form input[type="text"],
.oy-free-guide-apply .wpcf7-form input[type="email"],
.oy-free-guide-apply .wpcf7-form input[type="tel"],
.oy-free-guide-apply .wpcf7-form input[type="url"],
.oy-free-guide-apply .wpcf7-form textarea {
  display: block;
  width: 100%;
  padding: 12px 14px;
  font-size: 16px;
  line-height: 1.5;
  color: var(--oy-color-text, #1e1e1e);
  background: #ffffff;
  border: 1px solid var(--oy-color-border, #d8d8d8);
  border-radius: 10px;
  box-shadow: none;
  transition: border-color 0.15s, box-shadow 0.15s;
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
}
.oy-free-guide-apply .wpcf7-form input[type="text"]:focus,
.oy-free-guide-apply .wpcf7-form input[type="email"]:focus,
.oy-free-guide-apply .wpcf7-form input[type="tel"]:focus,
.oy-free-guide-apply .wpcf7-form input[type="url"]:focus,
.oy-free-guide-apply .wpcf7-form textarea:focus {
  outline: none;
  border-color: var(--oy-color-primary, #8526ff);
  box-shadow: 0 0 0 3px rgba(133, 38, 255, 0.15);
}
/* チェックボックス (プライバシー同意) */
.oy-free-guide-apply .wpcf7-acceptance .wpcf7-list-item {
  display: block;
  margin: 0;
}
.oy-free-guide-apply .wpcf7-acceptance .wpcf7-list-item label {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 400;
  line-height: 1.7;
  color: var(--oy-color-text, #1e1e1e);
}
.oy-free-guide-apply .wpcf7-acceptance input[type="checkbox"] {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin: 2px 0 0;
  accent-color: var(--oy-color-primary, #8526ff);
}
.oy-free-guide-apply .wpcf7-acceptance .wpcf7-list-item-label {
  display: inline-block;
}
/* 送信ボタン (オレンジCTA) */
.oy-free-guide-apply .wpcf7-submit {
  display: block;
  width: 100%;
  padding: 14px 20px;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.4;
  color: #ffffff;
  background: #ff8a3d;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  letter-spacing: 0.02em;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
  transition: background 0.15s, transform 0.05s, box-shadow 0.15s;
  white-space: nowrap;
}
.oy-free-guide-apply .wpcf7-submit:hover {
  background: #ef7a2d;
  box-shadow: 0 2px 6px rgba(255, 138, 61, 0.35);
}
.oy-free-guide-apply .wpcf7-submit:active { transform: translateY(1px); }
.oy-free-guide-apply .wpcf7-submit:disabled,
.oy-free-guide-apply .wpcf7-submit[disabled] {
  opacity: 0.6;
  cursor: not-allowed;
}
/* バリデーション / メッセージ */
.oy-free-guide-apply .wpcf7-not-valid-tip {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  color: #d93636;
}
.oy-free-guide-apply .wpcf7-form input.wpcf7-not-valid {
  border-color: #d93636;
}
.oy-free-guide-apply .wpcf7-response-output {
  margin: 16px 0 0;
  padding: 12px 14px;
  font-size: 13px;
  line-height: 1.6;
  border: 1px solid;
  border-radius: 8px;
  background: #ffffff;
}
.oy-free-guide-apply .wpcf7-form.sent .wpcf7-response-output {
  border-color: #2e8b57;
  color: #1f6a40;
  background: #eaf6ef;
}
.oy-free-guide-apply .wpcf7-form.invalid .wpcf7-response-output,
.oy-free-guide-apply .wpcf7-form.failed .wpcf7-response-output {
  border-color: #d93636;
  color: #a82626;
  background: #fdebea;
}
.oy-free-guide-apply .wpcf7-spinner {
  margin: 0 0 0 10px;
  vertical-align: middle;
}
/* SP (768px 以下): 1カラム化 */
@media (max-width: 768px) {
  .oy-free-guide-apply {
    padding: 20px 16px;
    margin: 0 12px 40px;
    border-radius: 14px;
  }
  .oy-free-guide-apply__inner {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
  .oy-free-guide-apply__title { font-size: 19px; }
  .oy-free-guide-apply__form-card { padding: 20px 16px; }
  .oy-free-guide-apply__form-title { font-size: 16px; }
  .oy-free-guide-apply .wpcf7-submit { font-size: 15px; padding: 13px 16px; }
}


/* ============================================================
   Fix: prevent featured image cropping on single posts
   Added 2026-05-18
   Reason: .oy-post-featured-image-img sets max-height + object-fit:cover
   which clips taller eyecatch illustrations (e.g. 1024x683 LINE article)
   on article body. Scope limited to .single-post so static pages keep
   their original framing behavior.
   ============================================================ */
.single-post .oy-post-featured-image-img {
  max-height: none;
  object-fit: contain;
  object-position: center center;
  height: auto;
  width: 100%;
}

@media (max-width: 834px) {
  .single-post .oy-post-featured-image-img {
    max-height: none;
  }
}
