/* =========================================================
   リハビリ健康相談所 — WordPress 追加CSS
   静的サイトの assets/css/style.css を、すべて .style 配下に
   スコープしたものです。各ページ最上位のグループブロックに
   className "style" を付けてあります。

   ※ 変更は原則このファイルだけで完結します。
      セレクタの先頭に必ず .style が付いている点にご注意ください。
   ========================================================= */
/* =========================================================
   リハビリ健康相談所 — 共通スタイル
   design.md のルールに準拠（配色 / タイポ / 余白 / A11y）
   ========================================================= */

/* ---------- 1. デザイントークン ---------- */
:root{
  --brand: #2B5C87;
  --brand-hover: #234C6F;
  --dark: #1C3E5A;
  --accent: #2F6FA3;
  --bg: #FFFFFF;
  --bg-alt: #F3F6FA;
  --text: #222222;
  --muted: #5C6673;
  --line: #DCE3EC;
  --danger: #B3261E;

  --wrap: 1200px;
  --prose: 800px;

  --space-section: clamp(56px, 8vw, 104px);
  --space-block: clamp(24px, 4vw, 40px);

  --radius: 3px;
  --header-h: 72px;

  /* Cocoon 既定（テーマの style.css）と同じ並びに揃えている。
     ヘッダー・メニューは Cocoon 側、本文はこの変数で決まるため、
     片方だけ変えると字面がずれる。変更するときは両方そろえること。
     Web フォントは読み込まない方針（表示速度優先）。 */
  --font: "Yu Gothic Medium", YuGothic, "Yu Gothic", Meiryo,
          "Hiragino Kaku Gothic ProN", "Hiragino Sans", sans-serif;
}

/* ---------- 2. リセット / ベース ---------- */
/* .style そのものと、その中のすべての要素。
   ※以前 ".style*"（スペースなし）と書いていたが、これは CSS として不正で、
     セレクタ一覧に1つでも不正なものがあるとルール全体が無効になる。
     Cocoon 側の指定に助けられて見た目は保たれていたが、2026-09-06 に修正した。 */
.style, .style *, .style *::before, .style *::after { box-sizing: border-box; }

.style {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 16px);
  -webkit-text-size-adjust: 100%;
}
@media (prefers-reduced-motion: reduce){
  .style { scroll-behavior: auto; }
  .style *, .style*, .style *::before, .style*::before, .style *::after, .style*::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

.style {
  margin: 0;
  font-family: var(--font);
  font-size: 18px;
  line-height: 1.8;
  color: var(--text);
  background: var(--bg);
  overflow-wrap: anywhere;
  line-break: strict;
}

.style img, .style svg { max-width: 100%; }
.style img { height: auto; display: block; }

.style h1, .style h2, .style h3, .style h4 { line-height: 1.45; margin: 0 0 .6em; font-weight: 700; }
.style p { margin: 0 0 1.2em; }
.style p:last-child { margin-bottom: 0; }
.style ul, .style ol { margin: 0 0 1.2em; padding-left: 1.4em; }

.style a { color: var(--brand); }
.style a:hover { color: var(--accent); }

/* フォーカスは常に見えるようにする（design.md 8章） */
.style :focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
  border-radius: 2px;
}

/* ---------- 3. ユーティリティ ---------- */
.style .wrap { width: min(100% - 40px, var(--wrap)); margin-inline: auto; }
@media (max-width: 600px){ .style .wrap { width: calc(100% - 32px); } }

.style .prose { max-width: var(--prose); }

.style .section { padding-block: var(--space-section); }
.style .section--alt { background: var(--bg-alt); }

.style .visually-hidden {
  position: absolute !important; width: 1px; height: 1px;
  margin: -1px; padding: 0; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}

.style .skip-link {
  position: absolute; left: 8px; top: -60px; z-index: 200;
  background: var(--dark); color: #fff; padding: 10px 16px;
  text-decoration: none; transition: top .15s;
}
.style .skip-link:focus { top: 8px; color: #fff; }

/* ---------- 4. 見出し ---------- */
.style .section-head { margin-bottom: var(--space-block); }
.style .section-title {
  font-size: clamp(22px, 3.4vw, 34px);
  color: var(--brand);
  margin: 0 0 .4em;
  padding-left: 14px;
  border-left: 5px solid var(--brand);
}
.style .section-lead { color: var(--muted); max-width: var(--prose); margin: 0; }

/* 小見出し。Cocoon の既定は h3 に border-left:7px を付けるが
   padding-left が 0 のため、線と文字が密着して詰まって見える。
   線の太さと余白を .section-title（5px + 14px）にそろえ、
   色もグレーからブランドカラーに変えて、同じサイトの見出しに見えるようにした。
   （2026-09-08） */
.style .h3 {
  font-size: clamp(18px, 2.2vw, 22px);
  border-left: 5px solid var(--brand);
  padding-left: 14px;
  color: var(--brand);
}

/* ---------- 5. ボタン ---------- */
.style .btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: .5em;
  min-height: 48px; padding: 12px 24px;
  font-size: 18px; font-weight: 700; font-family: inherit;
  border-radius: var(--radius);
  border: 2px solid var(--brand);
  background: var(--brand); color: #fff;
  text-decoration: none; cursor: pointer;
  transition: background-color .15s, border-color .15s, color .15s;
}
.style .btn:hover { background: var(--brand-hover); border-color: var(--brand-hover); color: #fff; }
.style .btn[disabled] {
  background: #78828F; border-color: #78828F; color: #fff;
  cursor: not-allowed;
}
.style .btn--ghost { background: #fff; color: var(--brand); }
.style .btn--ghost:hover { background: var(--bg-alt); color: var(--brand-hover); }
.style .btn--lg { min-height: 56px; padding: 14px 32px; font-size: 17px; }
.style .btn__arrow { font-weight: 400; }

/* テキストリンク（色だけに頼らない） */
.style .link-arrow {
  display: inline-flex; align-items: center; gap: .35em;
  font-weight: 700; text-decoration: underline;
  text-underline-offset: 3px;
  min-height: 44px;
}

/* ---------- 6. 画像プレースホルダ ---------- */
/* 画像未投入でも比率が保たれ、「何の画像か」が読める枠 */
.style .ph {
  position: relative;
  display: block;
  margin: 0;
  overflow: hidden;
  background: var(--bg-alt);
  border: 1px dashed #B4C2D3;
  border-radius: var(--radius);
}
.style .ph::before {
  content: "";
  display: block;
  padding-top: var(--ph-ratio, 56.25%);
}
.style .ph--16x9 { --ph-ratio: 56.25%; }
.style .ph--4x3 { --ph-ratio: 75%; }
.style .ph--21x9 { --ph-ratio: 42.85%; }
.style .ph--1x1 { --ph-ratio: 100%; }

.style .ph > img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: 2;
}
.style .ph > img.is-missing { display: none; }

.style .ph__label {
  position: absolute; inset: 0; z-index: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px; padding: 12px;
  text-align: center;
  font-size: 16px; line-height: 1.6; color: var(--muted);
}
.style .ph__label b {
  display: block; font-size: 16px; color: var(--brand);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  overflow-wrap: anywhere;
}
.style .ph__label i { font-style: normal; font-size: 15px; }
.style .ph__icon { width: 26px; height: 26px; color: #8393A8; }
/* 画像が入ったらラベルは消す */
.style .ph.is-loaded .ph__label { display: none; }
.style .ph.is-loaded { border-style: solid; border-color: transparent; }

/* ---------- 7. ヘッダー（仮） ---------- */
.style .site-header {
  position: sticky; top: 0; z-index: 100;
  background: #fff;
  border-bottom: 1px solid var(--line);
}
.style .site-header__util {
  background: var(--bg-alt);
  border-bottom: 1px solid var(--line);
  font-size: 16px;
}
.style .site-header__util .wrap {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; min-height: 34px;
}
.style .site-header__util p { margin: 0; color: var(--muted); }
.style .util-nav { display: flex; gap: 16px; list-style: none; margin: 0; padding: 0; }
.style .util-nav a { color: var(--muted); text-decoration: none; }
.style .util-nav a:hover { text-decoration: underline; }
@media (max-width: 620px){ .style .site-header__util p { display: none; } }

.style .site-header__bar {
  position: relative;
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; min-height: var(--header-h);
}
.style .brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: inherit; }
.style .brand__mark {
  width: 40px; height: 40px; flex: none;
  display: grid; place-items: center;
  background: var(--brand); color: #fff; border-radius: 50%;
}
.style .brand__mark svg { width: 22px; height: 22px; }
.style .brand__name { font-size: 19px; font-weight: 700; color: var(--brand); line-height: 1.3; }
.style .brand__note { display: block; font-size: 14px; font-weight: 400; color: var(--muted); }

.style .nav-toggle {
  display: none;
  align-items: center; gap: 8px;
  min-height: 44px; min-width: 44px; padding: 8px 12px;
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
  font-family: inherit; font-size: 15px; font-weight: 700; color: var(--brand); cursor: pointer;
}
.style .nav-toggle__bars { display: block; width: 20px; height: 2px; background: currentColor; position: relative; }
.style .nav-toggle__bars::before, .style .nav-toggle__bars::after {
  content: ""; position: absolute; left: 0; width: 20px; height: 2px; background: currentColor;
}
.style .nav-toggle__bars::before { top: -6px; }
.style .nav-toggle__bars::after { top: 6px; }
.style .nav-toggle[aria-expanded="true"] .nav-toggle__bars { background: transparent; }
.style .nav-toggle[aria-expanded="true"] .nav-toggle__bars::before { top: 0; transform: rotate(45deg); }
.style .nav-toggle[aria-expanded="true"] .nav-toggle__bars::after { top: 0; transform: rotate(-45deg); }

.style .gnav ul { display: flex; list-style: none; margin: 0; padding: 0; }
.style .gnav a {
  display: flex; align-items: center;
  min-height: 44px; padding: 8px 10px;
  font-size: 17px; font-weight: 700; color: var(--text); text-decoration: none;
  border-bottom: 3px solid transparent;
}
.style .gnav a:hover { color: var(--brand); border-bottom-color: var(--accent); }
.style .gnav a[aria-current="page"] { color: var(--brand); border-bottom-color: var(--brand); }
@media (max-width: 1240px){
  .style .nav-toggle { display: inline-flex; }
  .style .gnav {
    display: none;
    position: absolute; left: 0; right: 0; top: 100%;
    background: #fff; border-top: 1px solid var(--line);
    border-bottom: 3px solid var(--brand);
    box-shadow: 0 8px 20px rgba(0,0,0,.08);
    max-height: 70vh; overflow-y: auto;
  }
  .style .gnav.is-open { display: block; }
  .style .gnav ul { display: block; }
  .style .gnav li { border-bottom: 1px solid var(--line); }
  .style .gnav a { padding: 14px 20px; border-bottom: none; }
}

/* ---------- 8. ヒーロー ---------- */
.style .hero { position: relative; background: var(--dark); overflow: hidden; }

/* 写真は全面に敷かず、専用の枠に入れる。
   全面（横長）に敷くと横方向に切る余地がなく、二人を左へ寄せられないため。
   枠を縦長にすることで横方向にトリミングでき、かつ縦は一切切れないので
   人物の頭から脚まで見切れない。
   スマホ・タブレットは写真を上、文字を下に積む。枠の比率は
   「縦が切れない下限（1 ÷ 1.79 ≒ 56%）」より少しだけ縦長にしている。 */
.style .hero__media {
  position: relative; z-index: 0;
  width: min(100%, 720px); margin-inline: auto;
  border: none; border-radius: 0;
  --ph-ratio: 57%;
}
/* 切り取り位置。写真ごとに構図が違うため、img 側で
   style="--pos:50% 20%; --pos-pc:30% center" のように個別に上書きできる。
   （page-health-qa.jpg などと同じ考え方。引き継ぎメモ 5-3） */
.style .hero__media img { object-position: var(--pos, 50% center); }

/* ヒーローのスライドショー（2026-09-06）
   .ph > img が position:absolute; inset:0 で重なる作りをそのまま使い、
   opacity だけで切り替える。JS が動いたときだけ is-slideshow が付くので、
   JS 無効・読み込み前は1枚目がそのまま見える（最後の1枚が勝たない）。 */
.style .hero__media.is-slideshow img {
  opacity: 0;
  transition: opacity 1.2s ease;
}
.style .hero__media.is-slideshow img.is-active { opacity: 1; z-index: 3; }
@media (prefers-reduced-motion: reduce){
  .style .hero__media.is-slideshow img { transition: none; }
}

/* オーバーレイに隠れないよう、ラベルは右下に浮かせて前面に出す */
.style .hero__media .ph__label, .style .pagehead__media .ph__label {
  z-index: 5;
  inset: auto 16px 12px auto;
  align-items: flex-end; justify-content: flex-end;
  padding: 8px 12px; text-align: right;
  background: rgba(20, 44, 66, .55);
  border: 1px dashed rgba(255,255,255,.45);
  border-radius: var(--radius);
  color: #DCE8F4;
}
.style .hero__media .ph__label b, .style .pagehead__media .ph__label b { color: #9DC2E4; }
.style .hero__media .ph__icon, .style .pagehead__media .ph__icon { display: none; }
/* 写真の上に文字を置くための十分な暗さのオーバーレイ（design.md 3章）
   hero.jpg は人物が画面左・右側が空きスペースという構図のため、
   スマホでは上を暗く、PC では右を暗くして、人物に暗幕がかからないようにする。 */
/* 写真の上に文字を置かなくなったので暗幕は不要（コントラストも確実になる） */
.style .hero__overlay { display: none; }
.style .hero__inner { position: relative; z-index: 4; padding-block: clamp(28px, 6vw, 88px); }
.style .hero__body { max-width: 660px; color: #fff; }

/* PC は写真を左、文字を右に並べる */
@media (min-width: 1100px){
  .style .hero__media {
    position: absolute; top: 0; bottom: 0;
    left: max(20px, calc(50% - 600px));
    width: min(624px, calc((100% - 40px) * .56));
    margin-inline: 0;
    --ph-ratio: 0;
  }
  .style .hero__media::before { content: none; }
  .style .hero__media img { object-position: var(--pos-pc, var(--pos, 27% center)); }
  .style .hero__body {
    max-width: none;
    width: calc(44% - 40px);
    margin-left: auto;
  }
}
.style .hero__eyebrow {
  display: inline-block; margin-bottom: 16px; padding: 4px 12px;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.45);
  border-radius: 999px; font-size: 16px; font-weight: 700;
}
/* 見出しは2行（句読点を含めて各12文字）で収まる大きさに上限を設けている。
   上限を上げると3行に折り返して間延びするので注意。 */
.style .hero__title {
  font-size: clamp(23px, 7.2vw, 40px);
  line-height: 1.45;
  margin: 0 0 24px; color: #fff;
}
/* PC は文字の段が狭くなるので、幅に合わせて少し控えめにする。
   ※このブロックは必ず上の .hero__title より後に置くこと（後勝ちのため） */
@media (min-width: 1100px){
  .style .hero__title { font-size: clamp(29px, 3vw, 40px); }
}
.style .hero__lead { font-size: clamp(17px, 1.8vw, 19px); margin-bottom: 28px; color: #E8EFF7; }
.style .hero__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.style .hero__actions .btn--ghost { background: #fff; border-color: #fff; }
.style .hero__note { margin-top: 20px; font-size: 16px; color: #CFDDEC; }

/* ---------- 9. ページヘッダー帯（下層ページ） ---------- */
.style .pagehead { position: relative; background: var(--dark); overflow: hidden; }
.style .pagehead__media { position: absolute; inset: 0; border: none; border-radius: 0; }
.style .pagehead__media::before { content: none; }
/* page-health-qa.jpg は人物の顔が画像の上寄り（縦13〜35%）にあるため、
   中央で切り出すと顔が切れる。切り出し位置を上へずらして顔を必ず入れる。
   ※スマホでは縦のトリミングが起きないので、この指定は効かない（＝影響なし）。 */
.style .pagehead__media img[src$="page-health-qa.jpg"] { object-position: 50% 15%; }
/* page-mypage.jpg も人物の顔が上寄り（縦13〜40%）にあるため同様に上へずらす */
.style .pagehead__media img[src$="page-mypage.jpg"] { object-position: 50% 15%; }
.style .pagehead__overlay {
  position: absolute; inset: 0; z-index: 3;
  background: linear-gradient(90deg, rgba(20,44,66,.92) 0%, rgba(20,44,66,.74) 60%, rgba(20,44,66,.5) 100%);
}
.style .pagehead__inner { position: relative; z-index: 4; padding-block: clamp(36px, 6vw, 76px); color: #fff; }
/* 質問ページでは <h1> ではなく <p> に付く。h1,h2,h3,h4 のルール（60行目）が効かないため、
   行送りと太さをここで明示する。指定しないと帯が16px高くなり、文字も細くなる。 */
.style .pagehead__title {
  font-size: clamp(26px, 4.6vw, 46px); line-height: 1.45; font-weight: 700;
  margin: 0 0 12px; color: #fff;
}
.style .pagehead__lead {
  min-height: 3.6em;
}

/* 右下のプレースホルダラベルが本文と重ならないよう余白を足す（画像投入後は元に戻る） */
@media (max-width: 780px){
  .style .pagehead__inner { padding-bottom: 84px; }
  .style .ph.is-loaded ~ .pagehead__inner { padding-bottom: clamp(36px, 6vw, 76px); }
}

/* パンくず */
.style .breadcrumb { background: var(--bg-alt); border-bottom: 1px solid var(--line); font-size: 16px; }
.style .breadcrumb ol {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  list-style: none; margin: 0; padding: 10px 0; color: var(--muted);
}
.style .breadcrumb li + li::before { content: "›"; margin-right: 8px; color: var(--muted); }
.style .breadcrumb a { color: var(--brand); }

/* ---------- 10. カード ---------- */
.style .cards { display: grid; gap: 24px; grid-template-columns: repeat(3, 1fr); }
.style .cards--2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 900px){ .style .cards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px){ .style .cards, .style .cards--2 { grid-template-columns: 1fr; gap: 20px; } }

.style .card {
  display: flex; flex-direction: column;
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
  overflow: hidden;
  transition: border-color .15s, box-shadow .15s;
}
.style .card:hover { border-color: var(--accent); box-shadow: 0 4px 14px rgba(0,0,0,.08); }
.style .card .ph { border: none; border-bottom: 1px dashed #B4C2D3; border-radius: 0; }
.style .card__body { padding: 20px; display: flex; flex-direction: column; flex: 1; }
.style .card__cat {
  display: inline-flex; align-self: flex-start; margin-bottom: 10px;
  padding: 2px 10px; font-size: 15px; font-weight: 700;
  color: var(--brand); background: var(--bg-alt); border: 1px solid var(--line);
  border-radius: 999px;
}
/* カードの見出し。Cocoon は h3 に四方の枠線と左7pxの線を付けるが、
   これはカードの中のタイトルであってセクションの見出しではない。
   カード自体に枠があるので、中の見出しにも枠が付くと二重になる。
   （2026-09-08。商品カード13件とトップの入口カードが該当していた） */
.style .card__title {
  font-size: clamp(18px, 2vw, 22px);
  margin: 0 0 10px;
  border: 0;
  padding: 0;
  background: none;
}
.style .card__title a { color: var(--text); text-decoration: none; }
.style .card:hover .card__title a { color: var(--brand); text-decoration: underline; }
.style .card__text { font-size: 17px; color: var(--muted); margin: 0 0 16px; }
.style .card__foot { margin-top: auto; }

/* ---------- 11. カテゴリ（アイコン一覧） ---------- */
.style .cat-grid {
  display: grid; gap: 12px; list-style: none; margin: 0; padding: 0;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
}
.style .cat-grid a {
  display: flex; align-items: center; gap: 12px;
  height: 100%; min-height: 66px; padding: 12px 14px;
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
  color: var(--text); text-decoration: none; font-weight: 700; font-size: 17px;
  transition: border-color .15s, background-color .15s;
}
.style .cat-grid a:hover { border-color: var(--brand); background: var(--bg-alt); color: var(--brand); }
.style .cat-grid .cat-icon { flex: none; color: var(--brand); }
.style .cat-grid .cat-arrow { margin-left: auto; color: var(--brand); font-weight: 400; }

.style .cat-icon { width: 38px; height: 38px; }
.style .cat-icon svg { width: 100%; height: 100%; display: block; }

/* ---------- 12. Q&A 検索 / 一覧 ---------- */
.style .qa-tools {
  background: var(--bg-alt); border: 1px solid var(--line); border-radius: var(--radius);
  padding: clamp(16px, 3vw, 28px);
}
.style .qa-search { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.style .qa-search__field { flex: 1 1 280px; }
.style .qa-search input[type="search"] {
  width: 100%; min-height: 50px; padding: 10px 14px;
  font-size: 18px; font-family: inherit; color: var(--text);
  background: #fff; border: 1px solid #8894A6; border-radius: var(--radius);
}
.style .qa-search input[type="search"]::placeholder { color: #6E7783; }

.style .field-label { display: block; font-weight: 700; margin-bottom: 8px; font-size: 17px; }

.style .chips { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.style .chip {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 44px; padding: 8px 16px;
  font-family: inherit; font-size: 17px; font-weight: 700;
  color: var(--brand); background: #fff;
  border: 1px solid var(--line); border-radius: 999px; cursor: pointer;
  transition: background-color .15s, color .15s, border-color .15s;
}
.style .chip:hover { border-color: var(--brand); background: #EDF2F9; }
.style .chip[aria-pressed="true"] {
  background: var(--brand); border-color: var(--brand); color: #fff;
}
/* 色だけに頼らないよう、選択中はチェック記号を出す */
.style .chip[aria-pressed="true"]::before { content: "✓"; font-size: 16px; }

.style .qa-status {
  margin: 32px 0 8px; font-size: 17px; color: var(--muted);
  padding-bottom: 12px; border-bottom: 2px solid var(--brand);
}
.style .qa-status strong { color: var(--text); font-size: 17px; }

.style .qa-list { list-style: none; margin: 0; padding: 0; }
.style .qa-list > li { border-bottom: 1px solid var(--line); }

.style .qa-item summary {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 18px 8px; cursor: pointer; list-style: none;
  font-weight: 700; font-size: clamp(17px, 2vw, 19px); line-height: 1.6;
}
.style .qa-item summary::-webkit-details-marker { display: none; }
.style .qa-item summary:hover { color: var(--brand); background: var(--bg-alt); }
.style .qa-item .qa-q {
  flex: none; width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--brand); color: #fff; font-size: 17px;
}
.style .qa-item summary .qa-mark { margin-left: auto; flex: none; color: var(--brand); font-size: 20px; line-height: 1; }
.style .qa-item[open] summary .qa-mark { transform: rotate(45deg); }

/* 投稿された長文の質問。一覧では2行に省略し、開くと全文を表示する */
.style .qa-item--long summary .qa-text { flex: 1 1 auto; min-width: 0; }
.style .qa-item--long:not([open]) summary .qa-text {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}
.style .qa-item--long[open] summary { align-items: flex-start; }
.style .qa-item--long[open] summary .qa-text { font-weight: 400; }

/* 相談日・相談者。回答（.qa-answer）は未ログインだと隠れるため、その外に置く */
/* padding-left は summary の 8px + Qの丸 30px + gap 12px = 50px に合わせる */
.style .qa-asked {
  display: flex; flex-wrap: wrap; gap: 2px 18px;
  margin: 0; padding: 0 8px 16px 50px;
  font-size: 16px; color: var(--muted);
}

.style .qa-answer { display: flex; gap: 12px; padding: 0 8px 24px 8px; }
.style .qa-answer .qa-a {
  flex: none; width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center;
  background: #fff; color: var(--brand); border: 1px solid var(--brand); font-size: 17px;
}
/* Q&Aの回答はこのサイトで最も読まれる文章。高齢の方の閲覧を想定して
   本文（16px）より大きくし、行送りも広めに取る。
   1行の長さは --prose（800px）で抑えているので、18pxでも1行あたり
   40字程度に収まり長くなりすぎない。 */
.style .qa-answer__body {
  flex: 1; max-width: var(--prose);
  font-size: 19px; line-height: 1.95;
}
.style .qa-meta {
  display: flex; flex-wrap: wrap; gap: 12px; align-items: center;
  margin-top: 14px; font-size: 16px; color: var(--muted);
}
.style .qa-meta .tag {
  padding: 2px 10px; background: var(--bg-alt);
  border: 1px solid var(--line); border-radius: 999px; color: var(--brand); font-weight: 700;
}
.style .qa-empty {
  padding: 40px 20px; text-align: center; color: var(--muted);
  background: var(--bg-alt); border: 1px dashed #B4C2D3; border-radius: var(--radius);
}

/* ---------- 13. 注意書き / 補足ボックス ---------- */
.style .notice {
  border: 1px solid var(--line); border-left: 5px solid var(--brand);
  background: var(--bg-alt); border-radius: var(--radius);
  padding: clamp(16px, 3vw, 24px);
}
.style .notice__title {
  display: flex; align-items: center; gap: 8px;
  font-size: 17px; margin: 0 0 10px; color: var(--brand);
}
.style .notice__title svg { width: 22px; height: 22px; flex: none; }
.style .notice p, .style .notice li { font-size: 17px; }
.style .notice ul { margin-bottom: 0; }
.style .notice--warn { border-left-color: var(--danger); }
.style .notice--warn .notice__title { color: var(--danger); }

.style .inline-note { font-size: 16px; color: var(--muted); }

/* ---------- 14. CTA バンド ---------- */
.style .cta-band { background: var(--brand); color: #fff; }
.style .cta-band .wrap {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 24px; padding-block: clamp(32px, 5vw, 56px);
}
.style .cta-band__title { font-size: clamp(20px, 3vw, 30px); margin: 0 0 8px; color: #fff; }
.style .cta-band__text { margin: 0; color: #DCE8F4; font-size: 17px; }
.style .cta-band .btn { background: #fff; color: var(--brand); border-color: #fff; }
.style .cta-band .btn:hover { background: var(--bg-alt); color: var(--brand-hover); border-color: var(--bg-alt); }

/* ---------- 15. フォーム ---------- */
.style .form { max-width: var(--prose); }
.style .form__group { margin-bottom: 32px; }
.style .form__label {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-weight: 700; font-size: 18px; margin-bottom: 8px;
}
.style .badge {
  font-size: 15px; font-weight: 700; padding: 2px 8px; border-radius: 3px;
  border: 1px solid; line-height: 1.7;
}
.style .badge--req { color: #fff; background: var(--danger); border-color: var(--danger); }
.style .badge--opt { color: var(--muted); background: #fff; border-color: var(--line); }

.style .form__help { font-size: 17px; color: var(--muted); margin: 0 0 10px; }

.style .form input[type="text"], .style .form input[type="email"], .style .form input[type="tel"], .style .form select, .style .form textarea {
  width: 100%; padding: 12px 14px;
  font-family: inherit; font-size: 18px; line-height: 1.7; color: var(--text);
  background: #fff; border: 1px solid #8894A6; border-radius: var(--radius);
}
.style .form input:focus, .style .form select:focus, .style .form textarea:focus { border-color: var(--brand); }
.style .form input, .style .form select { min-height: 50px; }
.style .form textarea { min-height: 200px; resize: vertical; }
.style .form select {
  appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--brand) 50%),
                    linear-gradient(135deg, var(--brand) 50%, transparent 50%);
  background-position: calc(100% - 22px) 22px, calc(100% - 16px) 22px;
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
  padding-right: 44px;
}

.style .counter { display: flex; justify-content: flex-end; gap: 6px; font-size: 16px; color: var(--muted); margin-top: 6px; }
.style .counter.is-limit strong { color: var(--danger); }
.style .counter strong { font-size: 17px; color: var(--text); }

.style .checks { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.style .check {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 14px 16px; background: var(--bg-alt);
  border: 1px solid var(--line); border-radius: var(--radius);
  font-size: 17px; cursor: pointer;
}
.style .check:hover { border-color: var(--brand); }
.style .check input[type="checkbox"] {
  flex: none; width: 22px; height: 22px; margin: 3px 0 0; accent-color: var(--brand); cursor: pointer;
}
.style .check span { flex: 1; }

.style .form__submit { margin-top: 8px; }
.style .form__hint { margin-top: 12px; font-size: 17px; color: var(--muted); }
.style .form__hint.is-ready { color: var(--brand); font-weight: 700; }

.style fieldset { border: 0; margin: 0; padding: 0; }
.style legend { padding: 0; font-weight: 700; font-size: 18px; margin-bottom: 8px; }

/* お問い合わせフォーム（Contact Form 7）の幅。
   CF7 が出力する .wpcf7 は、このサイトの .form の外にあるため
   15章のフォーム幅（--prose）が効かず、そのままだと入力欄だけが
   .wrap いっぱい（1200px）まで広がり、上の注意書き（.prose = 800px）と
   横幅がずれる。ここでそろえている。
   ※ フォームを広げるのではなく注意書きに合わせているのは、
     1200px の入力欄は横に長すぎて書きにくいため。 */
.style .wpcf7 { max-width: var(--prose); }

/* 送信完了パネル */
.style .done {
  max-width: var(--prose);
  border: 2px solid var(--brand); border-radius: var(--radius);
  background: var(--bg-alt); padding: clamp(24px, 5vw, 48px); text-align: center;
}
.style .done__icon {
  width: 64px; height: 64px; margin: 0 auto 20px;
  display: grid; place-items: center; border-radius: 50%;
  background: var(--brand); color: #fff;
}
.style .done__icon svg { width: 34px; height: 34px; }
.style .done__title { font-size: clamp(20px, 3vw, 28px); color: var(--brand); margin: 0 0 14px; }
.style .done__actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 24px; }

/* ---------- 16. サイト運営ページ ---------- */
.style .toc {
  background: var(--bg-alt); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 20px 24px; max-width: var(--prose);
}
.style .toc h2 { font-size: 18px; margin: 0 0 10px; color: var(--brand); }
.style .toc ul { margin: 0; padding-left: 1.2em; }
.style .toc li { margin-bottom: 4px; }

.style .profile { display: grid; grid-template-columns: 220px 1fr; gap: 32px; align-items: start; }
@media (max-width: 620px){ .style .profile { grid-template-columns: 1fr; gap: 20px; } .style .profile__photo { max-width: 240px; } }

.style .def-list { margin: 0; }
.style .def-list div {
  display: grid; grid-template-columns: 180px 1fr; gap: 16px;
  padding: 14px 0; border-bottom: 1px solid var(--line);
}
.style .def-list dt { font-weight: 700; color: var(--brand); }
.style .def-list dd { margin: 0; }
@media (max-width: 620px){
  .style .def-list div { grid-template-columns: 1fr; gap: 4px; }
}

.style .policy h3 { margin-top: 2em; font-size: clamp(18px, 2.2vw, 21px); color: var(--brand); }
.style .policy h3:first-child { margin-top: 0; }

/* 未確定コンテンツの目印 */
.style .tbd {
  display: inline-block; margin-left: 6px; padding: 1px 8px;
  font-size: 14px; font-weight: 700; color: #7a5000;
  background: #FFF4DB; border: 1px solid #E8C87A; border-radius: 3px;
  vertical-align: middle;
}

/* ---------- 17. フッター（仮） ---------- */
.style .site-footer { background: var(--dark); color: #D8E2EE; }
.style .site-footer a { color: #fff; }
.style .site-footer__main {
  display: grid; gap: 32px; grid-template-columns: 1.2fr 1.1fr 1fr;
  padding-block: clamp(40px, 6vw, 64px);
  align-items: start;
}
@media (max-width: 860px){ .style .site-footer__main { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px){ .style .site-footer__main { grid-template-columns: 1fr; gap: 24px; } }

.style .site-footer h2 { font-size: 17px; color: #fff; margin: 0 0 14px; }
.style .site-footer p { font-size: 17px; margin: 0 0 10px; color: #CBD9E8; }
.style .site-footer ul { list-style: none; margin: 0; padding: 0; }
/* サイトマップは8項目あり、1列だと他の列より200px以上高くなって余白が目立つ。
   4行×2列にして、隣の「このサイトについて」（4項目）と高さを揃える。 */
.style .site-footer__sitemap {
  display: grid; grid-auto-flow: column; grid-template-rows: repeat(4, auto);
  column-gap: 24px;
}
/* 561〜620px は2列レイアウトでサイトマップ列が狭くなるため1列に戻す */
@media (max-width: 620px){
  .style .site-footer__sitemap { grid-auto-flow: row; grid-template-rows: none; }
}
/* 560px 以下はフッター自体が1列＝サイトマップが全幅を使えるので、また2列に戻す */
@media (max-width: 560px){
  .style .site-footer__sitemap { grid-auto-flow: column; grid-template-rows: repeat(4, auto); column-gap: 16px; }
}
.style .site-footer li { border-bottom: 1px solid rgba(255,255,255,.14); }
.style .site-footer li a {
  display: flex; align-items: center; min-height: 44px;
  font-size: 17px; text-decoration: none;
}
.style .site-footer li a:hover { text-decoration: underline; }
.style .site-footer__brand { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.style .site-footer__brand .brand__mark { background: #fff; color: var(--dark); }
.style .site-footer__brand .brand__name { color: #fff; }
.style .site-footer__brand .brand__note { color: #BCCBDC; }
.style .site-footer__bottom {
  border-top: 1px solid rgba(255,255,255,.18);
  font-size: 16px; color: #BCCBDC;
}
.style .site-footer__bottom .wrap {
  display: flex; flex-wrap: wrap; gap: 8px 20px; justify-content: space-between;
  padding-block: 18px;
}
.style .site-footer__bottom p { margin: 0; font-size: 16px; color: #BCCBDC; }

/* 仮であることを示す帯 */
.style .provisional {
  background: #FFF4DB; border-bottom: 1px solid #E8C87A;
  color: #6b4700; font-size: 15px;
}
.style .provisional .wrap { padding-block: 6px; }
.style .provisional p { margin: 0; }

/* =========================================================
   18. 会員機能（ログイン / 無料会員登録 / マイページ）
   ※ 静的サイトではデモ動作。WordPress 化時に実認証へ差し替え。
   ========================================================= */

/* ---------- ヘッダーの会員エリア ---------- */
.style .auth-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.style .auth-bar__name { font-size: 16px; font-weight: 700; color: var(--brand); }
.style .auth-btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 36px; padding: 4px 14px;
  font-family: inherit; font-size: 15px; font-weight: 700;
  color: var(--brand); background: #fff;
  border: 1px solid var(--brand); border-radius: 999px;
  text-decoration: none; cursor: pointer; white-space: nowrap;
}
.style .auth-btn:hover { background: var(--bg-alt); color: var(--brand-hover); }
.style .auth-btn--primary { background: var(--brand); color: #fff; }
.style .auth-btn--primary:hover { background: var(--brand-hover); color: #fff; }
@media (max-width: 620px){
  .style .site-header__util .wrap { flex-wrap: wrap; justify-content: flex-start; padding-block: 6px; }
  .style .auth-btn { min-height: 44px; font-size: 16px; padding: 6px 16px; }
}

/* ---------- ログイン / 登録ダイアログ ---------- */
.style .authdlg {
  width: min(92vw, 520px);
  max-height: 88vh;
  padding: 0; border: none; border-radius: 6px;
  color: var(--text); background: #fff;
  box-shadow: 0 24px 60px rgba(14, 32, 48, .32);
}
.style .authdlg::backdrop { background: rgba(14, 32, 48, .62); }
/* <dialog> 非対応ブラウザ向けフォールバック */
.style .authdlg.is-fallback {
  position: fixed; z-index: 300; top: 50%; left: 50%;
  transform: translate(-50%, -50%); overflow: auto;
}
.style .authdlg__inner { position: relative; padding: clamp(24px, 5vw, 36px); }
.style .authdlg__close {
  position: absolute; top: 8px; right: 8px;
  width: 44px; height: 44px; display: grid; place-items: center;
  background: none; border: none; border-radius: 50%;
  color: var(--muted); cursor: pointer;
}
.style .authdlg__close:hover { background: var(--bg-alt); color: var(--brand); }
.style .authdlg__close svg { width: 20px; height: 20px; }

.style .authdlg__reason {
  margin: 0 0 16px; padding: 10px 14px;
  font-size: 17px; font-weight: 700; color: var(--brand);
  background: var(--bg-alt); border-left: 4px solid var(--brand);
  border-radius: var(--radius);
}
.style .authdlg__title { font-size: clamp(19px, 2.6vw, 23px); color: var(--brand); margin: 0 0 10px; padding-right: 40px; }
.style .authdlg__lead { font-size: 17px; color: var(--muted); margin: 0 0 20px; }

.style .authdlg__tabs { display: flex; gap: 4px; border-bottom: 2px solid var(--line); margin-bottom: 24px; }
.style .authdlg__tab {
  flex: 1; min-height: 46px; padding: 8px 10px;
  font-family: inherit; font-size: 17px; font-weight: 700;
  color: var(--muted); background: none;
  border: none; border-bottom: 3px solid transparent;
  margin-bottom: -2px; cursor: pointer;
}
.style .authdlg__tab:hover { color: var(--brand); }
.style .authdlg__tab[aria-selected="true"] { color: var(--brand); border-bottom-color: var(--brand); }

.style .authdlg__panel .form__group { margin-bottom: 20px; }
.style .authdlg__panel input[type="text"], .style .authdlg__panel input[type="email"], .style .authdlg__panel input[type="password"] {
  width: 100%; min-height: 50px; padding: 12px 14px;
  font-family: inherit; font-size: 18px; color: var(--text);
  background: #fff; border: 1px solid #8894A6; border-radius: var(--radius);
}
.style .authdlg__panel input:focus { border-color: var(--brand); }
.style .authdlg__panel .checks { margin-bottom: 20px; }
.style .authdlg__submit { width: 100%; }

.style .authdlg__switch { margin: 16px 0 0; font-size: 17px; text-align: center; color: var(--muted); }
.style .linklike {
  font-family: inherit; font-size: inherit; font-weight: 700;
  color: var(--brand); background: none; border: none; padding: 0;
  text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
}
.style .linklike:hover { color: var(--accent); }

.style .authdlg__demo {
  margin: 24px 0 0; padding-top: 16px; border-top: 1px solid var(--line);
  font-size: 15px; line-height: 1.7; color: var(--muted);
}

/* ---------- 会員限定ページの案内（ゲート） ---------- */
.style .gate {
  max-width: var(--prose);
  padding: clamp(28px, 5vw, 48px);
  text-align: center;
  background: var(--bg-alt);
  border: 2px solid var(--brand); border-radius: var(--radius);
}
.style .gate__icon {
  width: 64px; height: 64px; margin: 0 auto 20px;
  display: grid; place-items: center; border-radius: 50%;
  background: var(--brand); color: #fff;
}
.style .gate__icon svg { width: 32px; height: 32px; }
.style .gate__title { font-size: clamp(20px, 3vw, 26px); color: var(--brand); margin: 0 0 14px; }
.style .gate__actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 24px; }

/* 回答だけを会員限定にするパネル（質問は誰でも全文読める） */
.style .qa-answer[hidden] { display: none; }

.style .qa-answer-gate {
  display: flex; gap: 12px;
  padding: 0 8px 24px 8px;
}
.style .qa-answer-gate[hidden] { display: none; }
.style .qa-answer-gate .qa-a {
  flex: none; width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center;
  background: #fff; color: var(--brand); border: 1px solid var(--brand); font-size: 17px;
}
.style .qa-answer-gate__body {
  flex: 1; max-width: var(--prose);
  padding: 20px 24px;
  background: var(--bg-alt);
  border: 1px solid var(--line); border-left: 5px solid var(--brand);
  border-radius: var(--radius);
}
.style .qa-answer-gate__title {
  margin: 0 0 8px; font-size: 18px; font-weight: 700; color: var(--brand);
}
.style .qa-answer-gate__body p { font-size: 17px; }
.style .qa-answer-gate__actions {
  display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0 0;
}
.style .qa-answer-gate__actions .btn { min-height: 44px; padding: 10px 18px; font-size: 17px; }

/* ---------- 写真を使わないページヘッダー（現在は未使用。将来のページ用に残す） ---------- */
.style .pagehead--plain {
  background: linear-gradient(135deg, var(--dark) 0%, var(--brand) 100%);
}
@media (max-width: 780px){
  .style .pagehead--plain .pagehead__inner { padding-bottom: clamp(36px, 6vw, 76px); }
}

/* ---------- マイページ ---------- */
.style .mypage-hello { font-size: 17px; margin: 0 0 24px; }
.style .mypage-hello strong { color: var(--brand); }

.style .myq {
  padding: 24px 0;
  border-bottom: 1px solid var(--line);
}
.style .myq:first-child { border-top: 1px solid var(--line); }
.style .myq__meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  margin: 0 0 12px; font-size: 16px; color: var(--muted);
}
.style .myq__q {
  display: flex; align-items: flex-start; gap: 12px;
  font-size: clamp(17px, 2vw, 19px); margin: 0 0 16px;
}
.style .myq__a { display: flex; gap: 12px; }
/* マイページに出る自分の質問への回答も同じ大きさに揃える */
.style .myq__abody { flex: 1; max-width: var(--prose); font-size: 19px; line-height: 1.95; }
.style .myq__pending {
  margin: 0; padding: 14px 18px;
  font-size: 17px; color: var(--muted);
  background: var(--bg-alt); border: 1px dashed #B4C2D3; border-radius: var(--radius);
}

.style .status {
  padding: 2px 12px; border-radius: 999px;
  font-size: 15px; font-weight: 700; border: 1px solid;
}
.style .status--done { color: #fff; background: var(--brand); border-color: var(--brand); }
.style .status--open { color: #7a5000; background: #FFF4DB; border-color: #E8C87A; }

/* ---------- 一覧の質問リンク（質問ページへ移動する） ---------- */
.style .qa-link {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 18px 8px; color: inherit; text-decoration: none;
  font-size: clamp(17px, 2vw, 19px); line-height: 1.6;
}
.style .qa-link:hover { color: var(--brand); background: var(--bg-alt); }
.style .qa-link__body { flex: 1 1 auto; min-width: 0; }
.style .qa-link__text { display: block; font-weight: 700; }
/* 長文の質問は、一覧ページのHTML側で100字に切ってある（.qa-link--long）。
   以前はここで2行に省略していたが、画面幅で切れる量が変わり
   スマホでは約40字しか出なかったため、CSSでの省略はやめた。
   短くしたい場合は、文字数を切る側（一覧ページのHTML）で調整すること。 */
.style .qa-link__meta {
  display: flex; flex-wrap: wrap; gap: 2px 18px;
  margin-top: 8px; font-size: 16px; font-weight: 400; color: var(--muted);
}
.style .qa-link__arrow { flex: none; margin-left: auto; color: var(--brand); font-size: 19px; line-height: 1.6; }

/* ---------- 質問ページ ---------- */
.style .qa-asked--page { padding: 0 0 20px; }
.style .qa-single .qa-answer { padding: 0 0 8px; }

/* 質問は帯に入れず本文の見出しにする。長文の投稿（300字）もそのまま全文を出す */
.style .qa-question { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 16px; }
.style .qa-question .qa-q { margin-top: 2px; }
.style .qa-question__body {
  margin: 0; max-width: var(--prose);
  font-size: clamp(19px, 2.4vw, 24px); line-height: 1.7; color: var(--text);
}

.style .qa-nav { margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--line); }
.style .qa-nav__label { margin: 0 0 12px; font-weight: 700; color: var(--brand); }
.style .qa-nav__list { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 10px; }
.style .qa-nav__list li { font-size: 17px; }
.style .qa-nav__current { color: var(--muted); }
.style .qa-nav__current::before { content: "▸ "; }
.style .qa-nav__back { margin: 0; }

/* =========================================================
   19. リハビリ・運動用品（Amazonアフィリエイト）
   ========================================================= */

/* ---------- PR・アフィリエイト開示 ---------- */
/* Amazonアソシエイト規約と景品表示法（ステマ規制）で表示が必要 */
.style .pr-notice {
  padding: 20px 24px;
  background: #FFF9EC;
  border: 1px solid #E8C87A;
  border-radius: var(--radius);
}
.style .pr-notice__label {
  display: flex; align-items: center; gap: 10px;
  margin: 0 0 10px; font-weight: 700; color: #6b4700;
}
.style .pr-badge {
  flex: none;
  padding: 2px 12px;
  font-size: 15px; font-weight: 700; letter-spacing: .08em;
  color: #fff; background: #8a5b00;
  border-radius: 3px;
}
.style .pr-notice p { font-size: 17px; margin: 0 0 8px; }
.style .pr-notice p:last-child { margin-bottom: 0; }

/* ---------- 商品一覧 ---------- */
.style .products {
  display: grid; gap: 24px;
  grid-template-columns: repeat(4, 1fr);
  list-style: none; margin: 0; padding: 0;
}
@media (max-width: 1100px){ .style .products { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 820px){ .style .products { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px){ .style .products { grid-template-columns: 1fr; gap: 20px; } }

.style .product { height: 100%; }
.style .product .card__body { padding: 18px; }
.style .product .card__title { font-size: 17px; margin-bottom: 8px; }
.style .product .card__text { font-size: 17px; margin-bottom: 14px; }

/* 商品画像の枠。Amazonの公式画像に差し替える前提のプレースホルダ */
.style .product__media {
  border-bottom: 1px dashed #B4C2D3;
  border-radius: 0;
}
.style .product__media .ph__label b { font-size: 15px; font-family: inherit; }

/* 商品画像は切り取らずに全体を見せる。
   .ph の既定は object-fit:cover だが、楽天の商品画像は正方形とは限らない
   （1件目の杖は 195×240）。正方形の枠に cover で入れると上下が切れて、
   商品そのものや、画像内の説明の一部が欠ける。
   contain にすると余白が出るので、背景は白で埋めている。 */
.style .product__media img { object-fit: contain; background: #fff; }

.style .product__price {
  margin: auto 0 14px;
  font-size: 17px; color: var(--muted);
}
.style .product__price strong { font-size: 19px; color: var(--text); }

/* カードごとに説明文の長さが違っても、価格とボタンの位置をそろえる。
   .product__price に margin-top:auto があるので、余った高さはすべて
   説明文の下に入る。.card__foot（10章）は既定で margin-top:auto を
   持っているが、両方が auto だと余白が2か所に分かれて位置がずれるため、
   商品カードの中だけ auto を打ち消している。 */
.style .product .card__foot { margin-top: 0; }

/* 商品カードの購入ボタン。2026-09-06 に Amazon から楽天アフィリエイトへ変更。
   色はサイトのブランドカラーのまま。楽天の赤にすると、
   ページの中でここだけが浮き、広告色が強くなりすぎるため。
   .btn--amazon は静的サイト時代の名残。使っていないが、
   古いページを貼り直したときに崩れないよう残してある。 */
.style .btn--rakuten,
.style .btn--amazon {
  width: 100%;
  min-height: 46px; padding: 10px 18px; font-size: 17px;
}
/* =========================================================
   WordPress ブロック向けの上書き
   （静的サイトには無かった、ブロックエディタ固有の調整）
   ========================================================= */

/* 帯はカバーブロックで作っている。core の .wp-block-cover は min-height:430px を
   持っているため、静的サイトと同じ高さ（内側の padding で決まる）にならない。
   高さは .pagehead__inner の padding-block とリード文の min-height で出す。 */
.style .pagehead.wp-block-cover { min-height: 0; padding: 0; }
.style .pagehead .wp-block-cover__inner-container { width: 100%; max-width: none; }

/* 画像を背景として敷く役割はカバーブロックが持つので、旧 .pagehead__media は使わない */
.style .pagehead__inner { width: 100%; }

/* ---------------------------------------------------------
   ブロック化にともなう構造の違いを吸収する
   静的サイトでは <section> の中に <div class="wrap"> を置いていたが、
   ブロック版では section 相当のグループ直下に見出し・段落が並ぶ。
   そのため .wrap を前提にしていたレイアウトをグループ自身に持たせる。
   --------------------------------------------------------- */

/* 標準のボタンブロックを、静的サイトの .btn と同じ見た目にする */
.style .wp-block-button__link {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  min-height: 56px; padding: 14px 32px;
  font-size: 17px; font-weight: 700; font-family: inherit;
  border-radius: var(--radius);
  border: 2px solid var(--brand);
  background: var(--brand); color: #fff;
  text-decoration: none;
}
.style .wp-block-button__link:hover {
  background: var(--brand-hover); border-color: var(--brand-hover); color: #fff;
}
.style .is-style-outline > .wp-block-button__link {
  background: #fff; color: var(--brand);
}
.style .is-style-outline > .wp-block-button__link:hover {
  background: var(--bg-alt); color: var(--brand-hover);
}

/* 質問投稿への誘導帯。見出し＋説明を左、ボタンを右に置く */
.style .cta-band {
  display: grid; grid-template-columns: 1fr auto;
  align-items: center; gap: 8px 24px;
  padding: clamp(32px, 5vw, 56px) clamp(20px, 4vw, 40px);
}
.style .cta-band__title { grid-column: 1; }
.style .cta-band__text  { grid-column: 1; }
.style .cta-band .wp-block-buttons { grid-column: 2; grid-row: 1 / span 2; margin: 0; }
/* 青地の上なのでボタンは白抜きにする */
.style .cta-band .wp-block-button__link {
  background: #fff; color: var(--brand); border-color: #fff;
}
.style .cta-band .wp-block-button__link:hover {
  background: var(--bg-alt); color: var(--brand-hover); border-color: var(--bg-alt);
}
@media (max-width: 720px) {
  .style .cta-band { grid-template-columns: 1fr; }
  .style .cta-band .wp-block-buttons { grid-column: 1; grid-row: auto; margin-top: 8px; }
}

/* Cocoon は .article h2 に灰色の背景と padding 25px を付ける（テーマの style.css）。
   静的サイトの見出しは背景を持たない設計なので、.style の中では打ち消す。
   .section-title の左の青いバーなど、こちらで指定した装飾はそのまま残る。 */
.style h1, .style h2, .style h3, .style h4, .style h5, .style h6 {
  background: none; background-color: transparent;
  padding: 0; border-radius: 0;
}
/* 打ち消したあとで、こちらの装飾を改めて当て直す */
.style .section-title { padding-left: 14px; }
.style .cta-band__title { padding: 0; }

/* ---- お知らせ（トップの新着一覧） --------------------------------------
   投稿のうち「お知らせ」カテゴリーだけを、クエリループブロックで表示する。
   ここで指定しているのはブロックが出力するクラス
   （.wp-block-post-template / .wp-block-post / .wp-block-post-date /
     .wp-block-post-title）なので、ブロック側の設定を変えても崩れない。
   逆に、クエリループの中の「投稿テンプレート」の中身を
   日付・タイトル以外に差し替えると、この指定は当たらなくなる。 */
.style .news .wp-block-post-template {
  list-style: none;
  margin: 0; padding: 0;
  border-top: 1px solid var(--line);
}
.style .news .wp-block-post {
  display: grid;
  grid-template-columns: 10em 1fr;
  gap: 4px 20px;
  align-items: baseline;
  margin: 0; padding: 16px 4px;
  border-bottom: 1px solid var(--line);
}
.style .news .wp-block-post-date {
  margin: 0;
  font-size: 16px; color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.style .news .wp-block-post-title {
  margin: 0;
  font-size: 18px; line-height: 1.6; font-weight: 600;
  /* Cocoon は h3 に border-left:7px を付ける。ここは見出しではなく
     一覧の中のリンクで、行ごとに下線で区切ってあるため、
     縦線が加わると区切りが二重になって見づらい。消しておく。
     （2026-09-08。同じ理由でサイト運営ページの .h3 は逆に余白を足した） */
  border-left: 0;
  padding-left: 0;
}
.style .news .wp-block-post-title a {
  color: var(--text); text-decoration: none;
}
.style .news .wp-block-post-title a:hover,
.style .news .wp-block-post-title a:focus-visible {
  color: var(--brand); text-decoration: underline;
}
/* 記事が1件も無いときの文言 */
.style .news .wp-block-query-no-results p {
  margin: 0; padding: 20px 4px;
  color: var(--muted);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
/* メディアクエリは必ず基本ルールより後ろに置くこと（design 5-4 参照）。
   600px 未満では日付の10em分が本文を圧迫するため、縦に積む。 */
@media (max-width: 600px) {
  .style .news .wp-block-post {
    grid-template-columns: 1fr;
    gap: 2px;
  }
  .style .news .wp-block-post-title { font-size: 17px; }
}

/* ---- 投稿ページの本文位置 ------------------------------------------------
   Cocoon は投稿ページで、記事タイトル・カテゴリー・関連記事を本文カラムの
   左端から出す。一方 .wrap は 1200px で中央寄せするため、本文だけが内側に
   ずれて見える（1600px 幅で 98px、375px 幅で 16px）。
   投稿では中央寄せと左右の余白をやめ、Cocoon のカラムに左を揃える。
   固定ページはページ全体が .wrap で組まれており中央寄せが正しいので、
   body.single に限定していること。この限定を外さないこと。 */
body.single .style .wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: 0;
}

/* ---- マイページ：投稿した質問の一覧 --------------------------------------
   [rhs_my_questions] が出力する一覧。
   1行目に状態バッジ・日付・カテゴリ、2行目に質問、3行目に短い説明。 */
.style .myq {
  list-style: none;
  margin: 0; padding: 0;
  border-top: 1px solid var(--line);
}
.style .myq__item {
  margin: 0; padding: 20px 4px;
  border-bottom: 1px solid var(--line);
}
.style .myq__meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px;
  margin: 0 0 8px;
  font-size: 16px; color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.style .myq__state {
  display: inline-block;
  padding: 2px 10px; border: 1px solid; border-radius: 999px;
  font-size: 14px; font-weight: 700; line-height: 1.7;
}
/* 状態バッジは4種類。「塗り／枠線」と「青／グレー」の2軸で分けている。
     塗り   … 結果が確定したもの（公開中・回答なし）
     枠線   … まだ結果が出ていない、またはサイトに出さないもの（準備中・見送り）
     青     … 公開されている、または公開に向かっているもの
     グレー … 公開されないもの
   一覧で縦に並ぶとラベルの文字は読み飛ばされるため、
   色と塗りだけでも見分けがつくようにしている。
   見送りは枠線を破線にして、色以外の手がかりも持たせた。
   ★4つともここでまとめて定義すること。19章に分けて書くと後勝ちで事故る。 */
.style .myq__state--open   { color: #fff; background: var(--brand); border-color: var(--brand); }
.style .myq__state--none   { color: #fff; background: var(--muted); border-color: var(--muted); }
.style .myq__state--wait   { color: var(--brand); background: #fff; border-color: var(--brand); }
.style .myq__state--hidden { color: var(--muted); background: #fff; border-color: var(--muted); border-style: dashed; }
.style .myq__title {
  margin: 0;
  font-size: 18px; line-height: 1.7; font-weight: 600; color: var(--text);
}
.style .myq__title a { color: var(--text); text-decoration: none; }
.style .myq__title a:hover,
.style .myq__title a:focus-visible { color: var(--brand); text-decoration: underline; }
/* マイページに出す質問の抜粋。Q&A一覧の .qa-link__excerpt と同じ見た目にそろえている */
.style .myq__excerpt {
  margin: 6px 0 0;
  font-size: 16px; line-height: 1.75; color: var(--muted);
}
.style .myq__note { margin: 6px 0 0; font-size: 16px; color: var(--muted); }

/* ---- 会員登録フォームの入力欄ごとの注意書き ------------------------------
   WP-Members のフォームに、functions.php の rhs_wpmem_field_help が
   入力欄の直下へ差し込む。ページ上部の枠より小さくして、
   入力の邪魔にならない大きさにしている。 */
.style .wpmem-help {
  margin: 6px 0 0;
  font-size: 15px;
  line-height: 1.7;
  color: var(--muted);
}
.style .wpmem-help strong { color: var(--text); }

/* ---- よくある質問の目印 ---------------------------------------------------
   運営が用意した質問（100件）は、実際の相談ではないため相談日・相談者名を
   持たない。代わりにこの目印を出す。判定は本文に qa-asked--faq が
   あるかどうか（functions.php の rhs_qa_item_data）。 */
.style .qa-asked--faq { display: block; padding-bottom: 20px; }
.style .qa-asked--faq span,
.style .qa-link__meta .qa-badge {
  display: inline-block;
  padding: 1px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  font-size: 14px;
  line-height: 1.9;
  color: var(--muted);
}

/* ---- Q&A一覧のページ送り --------------------------------------------------
   20件ずつ表示する。部品は app.js の initQaFilter が作って差し込むため、
   ページのHTMLには存在しない。1ページに収まるときは hidden で丸ごと隠れる。 */
.style .qa-pager {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 12px 16px;
  margin-top: 32px; padding-top: 24px;
  border-top: 1px solid var(--line);
}
.style .qa-pager[hidden] { display: none; }
.style .qa-pager__btn {
  flex: 0 0 auto;
  min-height: 44px;              /* 指で押せる大きさを確保する */
  padding: 10px 20px;
  border: 1px solid var(--brand); border-radius: var(--radius);
  background: #fff; color: var(--brand);
  font-size: 17px; font-weight: 700; font-family: inherit;
  cursor: pointer;
}
.style .qa-pager__btn:hover:not(:disabled) { background: var(--bg-alt); }
.style .qa-pager__btn:disabled {
  border-color: var(--line); color: var(--muted);
  cursor: default; opacity: .6;
}
.style .qa-pager__stat {
  flex: 1 1 auto; margin: 0;
  text-align: center; font-size: 16px; color: var(--muted);
  font-variant-numeric: tabular-nums;
}
/* メディアクエリは基本ルールより後ろに置くこと（design 5-4 参照）。
   狭い画面では件数表示を上に出し、ボタンを左右に並べる。 */
@media (max-width: 520px) {
  .style .qa-pager { justify-content: space-between; }
  .style .qa-pager__stat { order: -1; flex: 1 0 100%; text-align: left; }
  .style .qa-pager__btn { padding: 10px 14px; font-size: 16px; }
}

/* チップはリンクになった（サーバー側で絞り込むため）。
   ボタンだったころの見た目を保ちつつ、選択中は aria-current で示す。 */
.style a.chip { text-decoration: none; }
.style .chip[aria-current] {
  background: var(--brand); border-color: var(--brand); color: #fff;
}
.style .chip[aria-current]::before { content: "✓"; font-size: 14px; }
/* ページ送りも <a> と <span>。行き止まり側は span で出す */
.style .qa-pager__btn { display: inline-block; text-decoration: none; text-align: center; }
.style .qa-pager__btn.is-off {
  border-color: var(--line); color: var(--muted); opacity: .6; cursor: default;
}

/* 一覧の項目は「タイトル＋質問の冒頭100字」の2段。
   タイトルを太字で強く、抜粋は細く小さくして、視線がまずタイトルに行くようにする。
   .qa-link--long は、一覧が質問文だけを出していたころの名残で、いまは使っていない。 */
.style .qa-link__excerpt {
  display: block;
  margin-top: 6px;
  font-size: 16px; font-weight: 400; line-height: 1.75;
  color: var(--muted);
}

/* ---- 文字を大きくする（高齢の利用者を想定） --------------------------------
   本文18px・補助14〜16pxで組んでいたが、高齢の方には補助文字が小さい。
   読む量が多いところを中心に、下限を16pxに引き上げる。
   フッターや帯など、幅が決まっていて折り返しが起きる箇所は触っていない。 */

/* 本文。回答を読む場所なので、ここが一番効く */
.style { font-size: 19px; }

/* Q&A一覧 */
.style .qa-link { font-size: clamp(19px, 2.2vw, 21px); }   /* タイトル */
.style .qa-link__excerpt { font-size: 18px; }              /* 質問の抜粋 */
.style .qa-link__meta { font-size: 17px; }                 /* 相談日・相談者 */
.style .qa-link__meta .qa-badge,
.style .qa-asked--faq span { font-size: 16px; }            /* 「よくある質問」 */
.style .qa-pager__stat { font-size: 17px; }
.style .qa-status { font-size: 18px; }

/* 質問ページ */
.style .qa-question__body { font-size: clamp(21px, 2.6vw, 26px); }
.style .qa-asked { font-size: 17px; }
.style .qa-meta { font-size: 17px; }

/* フォームまわり。入力の説明は読み飛ばされやすいので上げる */
.style .form__help { font-size: 18px; }
.style .wpmem-help { font-size: 17px; }
.style .counter { font-size: 17px; }
.style .form__hint { font-size: 18px; }
.style .inline-note { font-size: 17px; }

/* マイページ */
.style .myq__meta { font-size: 17px; }
.style .myq__title { font-size: 19px; }
.style .myq__excerpt { font-size: 18px; }
.style .myq__note { font-size: 17px; }

/* パンくず・お知らせ */
.style .breadcrumb { font-size: 17px; }
.style .news__date { font-size: 17px; }
.style .news__title { font-size: 19px; }

/* ---- お気に入り（会員限定） ------------------------------------------------
   記事の末尾に the_content で差し込まれる（functions.php の
   rhs_append_favorite_box）。フォーム送信で動くのでJavaScriptは不要。 */
.style .fav {
  margin-top: 40px; padding: 24px;
  border: 1px solid var(--line); border-radius: var(--radius);
  background: var(--bg-alt);
}
.style .fav__lead { margin: 0 0 8px; font-size: 18px; }
.style .fav__note { margin: 0 0 16px; font-size: 17px; color: var(--muted); }
.style .fav__actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }
.style .fav__done {
  margin: 0 0 16px; padding: 10px 14px;
  border-left: 4px solid var(--brand); background: #fff;
  font-size: 17px;
}
.style .fav__btn {
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 52px;              /* 指で押しやすい大きさ。高齢の利用者を想定 */
  padding: 12px 24px;
  border: 1px solid var(--brand); border-radius: var(--radius);
  background: #fff; color: var(--brand);
  font-family: inherit; font-size: 18px; font-weight: 700;
  cursor: pointer;
}
.style .fav__btn:hover { background: #EDF2F9; }
.style .fav__star { font-size: 22px; line-height: 1; }
/* 登録済みは塗りつぶし。星の形だけでなく色と文言でも分かるようにしている */
.style .fav__btn.is-on {
  background: var(--brand); border-color: var(--brand); color: #fff;
}
.style .fav__btn.is-on:hover { background: var(--brand-hover); }

/* ---------- 18. ログイン / 会員登録フォーム（WP-Members） ---------- */
/* WP-Members が出力する素の HTML を、15章のフォームと同じ見た目にそろえる。
   プラグイン側の出力構造（更新で変わったらここを疑うこと）：

     #wpmem_login / #wpmem_reg
       form.form > fieldset > legend
         label[for]           （登録側は class="text"、必須は中に span.req）
         div.div_text > input （class は textbox / username / password）
         p.wpmem-help         （説明文。登録側だけ）
         div.button_div       （ログイン側は「保存する」チェックも同じ箱の中）
           input.buttons      （送信ボタン）
         div.link-text > span.link-text-forgot / .link-text-register
         div.req-text

   入力欄の枠線・文字サイズは 15章の .style .form input[...] が既に効いている。
   ここで足しているのは、並び・余白・見出し・ボタン・リンクだけ。
   フォームは .style の中にあるので、テーマ側（style.css）ではなくここに書く。 */

.style #wpmem_login,
.style #wpmem_reg { max-width: 560px; margin-inline: auto; }

.style #wpmem_login .form,
.style #wpmem_reg .form {
  max-width: none;
  padding: clamp(24px, 5vw, 36px);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
}

/* legend は幅を持たないので block にしてから下線を引く */
.style #wpmem_login legend,
.style #wpmem_reg legend {
  display: block; width: 100%;
  margin-bottom: 24px; padding-bottom: 14px;
  border-bottom: 2px solid var(--line);
  font-size: clamp(19px, 2.6vw, 23px); color: var(--brand);
}

.style #wpmem_login label,
.style #wpmem_reg label {
  display: block;
  margin: 24px 0 8px;
  font-weight: 700; font-size: 18px;
}
.style #wpmem_login legend + label,
.style #wpmem_reg legend + label { margin-top: 0; }

/* 必須の印。下の .req-text（「* 必須項目」）と合わせて意味が通る */
.style #wpmem_login .req,
.style #wpmem_reg .req {
  margin-left: 4px; color: var(--danger); font-weight: 700;
}

.style #wpmem_login .div_text,
.style #wpmem_reg .div_text { margin: 0; }

/* 入力欄。15章の .style .form input[type="text"] は、このページでは
   Cocoon 側のルールに負けて 16px・高さ50px になってしまう。
   password と email は勝つため、そのままだと欄の高さがそろわない。
   ID を含むこのルールで、4つの欄すべてを 15章の意図どおり 18px にそろえる。 */
.style #wpmem_login .form input[type="text"],
.style #wpmem_login .form input[type="password"],
.style #wpmem_reg .form input[type="text"],
.style #wpmem_reg .form input[type="password"],
.style #wpmem_reg .form input[type="email"] {
  width: 100%; padding: 12px 14px; min-height: 50px;
  font-family: inherit; font-size: 18px; line-height: 1.7; color: var(--text);
  background: #fff; border: 1px solid #8894A6; border-radius: var(--radius);
}

.style #wpmem_reg .wpmem-help {
  margin: 8px 0 0;
  font-size: 17px; line-height: 1.8; color: var(--muted);
}

/* 送信ボタンの行。ログイン側はチェックボックスと同じ箱に入っているため、
   折り返しを使ってボタンだけを次の行の全幅に落としている */
.style #wpmem_login .button_div,
.style #wpmem_reg .button_div {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin-top: 32px;
}
.style #wpmem_login .buttons,
.style #wpmem_reg .buttons {
  flex: 1 0 100%;
  min-height: 56px; padding: 14px 24px;
  font-family: inherit; font-size: 18px; font-weight: 700;
  color: #fff; background: var(--brand);
  border: 2px solid var(--brand); border-radius: var(--radius);
  cursor: pointer;
  transition: background-color .15s, border-color .15s;
}
.style #wpmem_login .buttons:hover,
.style #wpmem_reg .buttons:hover {
  background: var(--brand-hover); border-color: var(--brand-hover);
}
.style #wpmem_login #rememberme {
  width: 22px; height: 22px; min-height: 0; margin: 0;
  accent-color: var(--brand); cursor: pointer;
}
.style #wpmem_login .button_div label[for="rememberme"] {
  display: inline; margin: 0; font-size: 17px; font-weight: 400;
}

.style #wpmem_login .link-text,
.style #wpmem_reg .link-text {
  margin-top: 16px;
  font-size: 17px; color: var(--muted); text-align: center;
}
.style #wpmem_login .link-text a,
.style #wpmem_reg .link-text a {
  font-weight: 700; text-decoration: underline; text-underline-offset: 3px;
}
.style #wpmem_reg .req-text {
  margin-top: 20px; font-size: 16px; color: var(--muted);
}

/* ログイン失敗・登録完了などの通知。13章の .notice と同じ見た目にそろえる。

   ★width: auto を必ず書くこと。
     WP-Members のCSS（plugins/wp-members/assets/css/forms/generic-no-float.min.css）に
       #wpmem_login,#wpmem_msg,#wpmem_reg,.wpmem_msg { width:75% }
     という指定があり、書かないと下のフォームより4分の1狭い箱になる
     （560px の枠の中で 420px）。max-width だけでは打ち消せない。
     2026-09-09：登録完了の文が「ログインして／ください。」と
     変な位置で折り返していたのはこれが原因。 */
.style .wpmem_msg {
  width: auto;
  max-width: 560px; margin: 0 auto 24px;
  padding: 16px 20px;
  background: var(--bg-alt);
  border: 1px solid var(--line); border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  font-size: 17px; line-height: 1.9;
}
.style .wpmem_msg.err { border-left-color: var(--danger); }

/* ログインと会員登録のタブ（functions.php の rhs_auth_panel）。
   静的サイトのモーダル（.authdlg__tabs）と同じ見た目。

   ★タブは JS が動いてから出す。
     .is-ready は app.js の initAuthTabs が付ける。
     付く前は「タブ非表示・2つのフォームが縦に並ぶ」状態で、
     JS が無効な人でもどちらのフォームも使える。
     ここを display:flex の決め打ちにすると、JS 無効時に
     押しても何も起きないタブが出てしまう。 */
.style .authtabs { max-width: 560px; margin-inline: auto; }

.style .authtabs__tabs { display: none; }
.style .authtabs.is-ready .authtabs__tabs {
  display: flex; gap: 4px;
  margin-bottom: 24px;
  border-bottom: 2px solid var(--line);
}
.style .authtabs__tab {
  flex: 1;
  min-height: 48px; padding: 10px 12px;
  margin-bottom: -2px;            /* 選択中の線を .authtabs__tabs の線に重ねる */
  background: none; border: 0;
  border-bottom: 3px solid transparent;
  font-family: inherit; font-size: 17px; font-weight: 700; line-height: 1.5;
  color: var(--muted); cursor: pointer;
}
.style .authtabs__tab:hover { color: var(--brand); }
.style .authtabs__tab[aria-selected="true"] { color: var(--brand); border-bottom-color: var(--brand); }

.style .authtabs__panel[hidden] { display: none; }
/* JS 無効で2つとも見えているときだけ、間に余白を入れる */
.style .authtabs__panel + .authtabs__panel { margin-top: 24px; }

/* タブが出ているときは、フォーム側の見出しと
   「はじめての方はこちら 新規ユーザー登録」を隠す。タブと重複するため。
   パネルはタブから aria-labelledby でラベルを受けているので、
   legend を消しても読み上げでは名前が付く。 */
/* legend を消すルールには ID を含めること。
   18章の .style #wpmem_login legend が display:block を持っているため、
   ID の無いセレクタでは負けて見出しが二重に出る。 */
.style .authtabs.is-ready #wpmem_login legend,
.style .authtabs.is-ready #wpmem_reg legend { display: none; }
.style .authtabs.is-ready .link-text-register { display: none; }
.style .authtabs.is-ready .link-text:has(.link-text-register) { display: none; }

/* ログイン失敗・登録エラーの知らせ。
   ページを読み込み直して戻ってくるので、これが無いと
   「押したのに何も起きない」ように見える。
   role="alert" は functions.php の rhs_auth_message が付けている。 */
.style .authtabs__msg { max-width: 560px; margin: 0 auto 24px; }
.style .authtabs__msg .wpmem_msg { max-width: none; margin: 0; }
.style .authtabs__msg--err .wpmem_msg {
  background: #FBF1F0;
  border-color: #E4C4C1; border-left-color: var(--danger);
}
.style .authtabs__msg--err .wpmem_msg strong { color: var(--danger); }

/* 会員限定ページで出る「このページは会員限定です」の知らせ */
.style #wpmem_restricted_msg {
  max-width: 560px; margin: 0 auto 24px;
  padding: 16px 20px;
  background: var(--bg-alt);
  border: 1px solid var(--line); border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  font-size: 17px; line-height: 1.9;
}

/* プロフィール編集ページの入口メニュー（2026-09-09）
   [wpmem_profile] は、行き先を選ぶ2つのリンク（登録情報の変更／
   パスワードを変更）を、class の無い素の <ul> で出す。
   そのままだと点付きの箇条書きが白紙に浮いて見えるため、
   下のフォーム（560pxの白いカード）と幅をそろえた選択肢の並びにする。

   ★body.page-id-368 で絞ってあること。
     ほかのページにも .section .wrap の中に ul があるため
     （マイページの .myq など）、絞らないと巻き添えになる。
     固定ページを作り直すと ID が変わるので、そのときはここも直す。 */
body.page-id-368 .style .section .wrap ul {
  list-style: none;
  max-width: 560px; margin: 0 auto; padding: 0;
  display: grid; gap: 12px;
}
body.page-id-368 .style .section .wrap ul li { margin: 0; }
body.page-id-368 .style .section .wrap ul li a {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  min-height: 56px;                      /* 指で押しやすい大きさ */
  padding: 14px 20px;
  background: #fff;
  border: 1px solid var(--line); border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  color: var(--text); font-size: 18px; font-weight: 700;
  text-decoration: none;
}
body.page-id-368 .style .section .wrap ul li a::after {
  content: "→"; color: var(--brand); font-weight: 400;
}
body.page-id-368 .style .section .wrap ul li a:hover,
body.page-id-368 .style .section .wrap ul li a:focus-visible {
  background: var(--bg-alt); border-color: var(--brand);
}

/* ---------- 19. 回答をお断りする表示 ---------- */
/* functions.php の [rhs_declined] が出力するブロック。
   回答欄の中に入るので、通常の回答と見分けがつくよう背景と左線で差をつける。 */
.style .qa-declined {
  margin: 0 0 24px;
  padding: 20px 24px;
  background: var(--bg-alt);
  border: 1px solid var(--line);
  border-left: 4px solid var(--muted);
  border-radius: var(--radius);
}
.style .qa-declined__title {
  display: flex; align-items: center; gap: 10px;
  margin: 0 0 12px;
  font-size: 19px; font-weight: 700; color: var(--text);
}
.style .qa-declined__title svg { width: 22px; height: 22px; flex: none; color: var(--muted); }
.style .qa-declined p { margin: 0 0 12px; font-size: 18px; line-height: 1.9; }
.style .qa-declined p:last-child { margin-bottom: 0; }
.style .qa-declined__note { font-size: 17px; color: var(--muted); }

/* 種類によって色は変えない。赤い警告表示は 2026-09-06 にやめた。
   「すぐ受診すべき」と強調するのは緊急性を判断していることになり、
   理学療法士の範囲を超えるため（functions.php の rhs_declined_types 参照）。
   お断りは危険を知らせるものではなく、答えられないと伝えるもの。 */

/* マイページの状態バッジ（4種類）は、まとめて .myq__state のすぐ下に置いてある。
   ここに書き足すと後勝ちで上書きしてしまうので、追加はあちらへ。 */

/* ---- Q&A記事：タイトルを出し、質問と回答を見分けやすくする（2026-09-10） ----
   これまでは Cocoon のタイトルを隠し、質問文だけを大きな見出しにしていた
   （タイトルは冒頭30字の要約で内容が重なるため。style.css の旧コメント参照）。
   利用者の指示で、記事ページでもタイトルを出す形に変更した。

   タイトルが見出しの役目を持つので、
   ・質問文は本文寄りの大きさに下げ、囲みで「ここが質問」と分かるようにする
   ・質問と回答が地続きに見えていたので、間を32pxあける
   タイトルそのものの見た目は style.css 側（テーマの領域のため）。
   --------------------------------------------------------------------------- */
.style .qa-question__body {
  padding: 20px 24px;
  background: var(--bg-alt);
  border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  font-size: clamp(18px, 1.6vw, 21px);
  line-height: 1.8;
}
.style .qa-answer__body { margin-top: 32px; }

/* ---- 見出しと箇条書きの間隔（2026-09-11） ----------------------------------
   はじめはマイページだけを page-id で絞って直したが、同じ詰まりが
   お問い合わせ・退会について・プライバシーポリシーでも起きていたため、
   利用者の判断で全ページ共通の指定にまとめた。
   --------------------------------------------------------------------------- */

/* 見出しが前のブロックに接していたので、上に余白を入れる。
   ページごとにばらついていたのを 48px に統一した（2026-09-11 実測）。

     プライバシーポリシー  23px（13見出し）
     お問い合わせ          0px / 23px
     退会について          0px
     マイページ            0px
     サイト運営            72px  ← .section-head の中にあるため対象外。すでに十分
     一覧・商品・質問投稿   該当する見出しなし

   0px になるのは、見出しの直前が wp:html ブロック（注意書きやフォーム）のとき。
   段落のあとは 23px 空くので、差が出ていた。
   ★トップは .section-head の中に見出しがあるため、この指定は当たらない。 */
.style .section .wrap > .section-title { margin-top: 48px; }
.style .section .wrap > .section-title:first-child { margin-top: 0; }

/* マイページ「その他」のリンク。ボタンをやめてリンクだけにした（2026-09-11） */
.style .mypage-links { margin: 0 0 12px; }

/* 注意書きの箇条書き。項目同士が3pxしか空いておらず、
   いくつ書いても1つの塊に見えて読みにくかった（2026-09-11 実測）。
   サイト運営・お問い合わせ・退会について・商品ページの4か所に効く。 */
.style .notice li { margin-bottom: 14px; }
.style .notice li:last-child { margin-bottom: 0; }

/* ---- フォームのその場メッセージ（2026-09-11） -------------------------------
   app.js が、送信を止めたときにフォームの先頭へ差し込む。
     .pwdmsg  … パスワード変更（initPwdChangeCheck）
     .formmsg … 登録情報の編集（initProfileCheck）
   18章のログイン失敗の知らせ（.authtabs__msg--err）と同じ見た目にそろえてある。 */
.style .pwdmsg,
.style .formmsg {
  margin: 0 0 16px;
  padding: 12px 16px;
  background: #FBF1F0;
  border: 1px solid #E4C4C1; border-left: 4px solid var(--danger);
  border-radius: var(--radius);
  font-size: 16px; line-height: 1.8; color: var(--text);
}
.style .pwdmsg[hidden],
.style .formmsg[hidden] { display: none; }

/* ---- スマホ表示の調整（2026-09-09） ---------------------------------------
   375px 幅のブラウザで実測して決めている。PCの見え方は変えず、600px以下だけを詰める。

   ★このブロックはファイルの最後に置くこと（後勝ちのため・design 5-4）。
   ★帯（.pagehead）の文字は触っていない。7ページで高さをそろえてあるため（5-2）。
     .pagehead__lead は .style の文字サイズを継承するので、全ページ同じだけ縮む。
   ★2026-09-04 に「16px未満を作らない」方針で文字を大きくしたが、スマホでは
     本文19pxで1行16文字しか入らず読みにくかった。利用者の判断で、
     スマホだけ本文16px・補助14pxまで下げている。PCは19pxのまま。
     方針を見直すときは、PC側（上の「文字を大きくする」）と両方を見ること。

   実測（375px幅・プライバシーポリシー）
     本文        19px / 16文字/行  →  16px / 19文字/行
     本文の上    68px              →  40px
     本文の下    166px             →  48px
     ページ全体  7188px            →  5207px
   --------------------------------------------------------------------------- */
@media (max-width: 600px) {
  :root { --space-section: 14px; --space-block: 12px; }

  /* 本文 */
  .style { font-size: 16px; line-height: 1.7; }
  .style .wrap { width: calc(100% - 20px); }
  .style p { margin-bottom: 1em; }
  .style .section-lead { font-size: 16px; }
  .style .breadcrumb { font-size: 14px; }
  .style .section-title { font-size: 19px; padding-left: 10px; }

  /* ヒーロー。27px だと「リハビリや運動の悩みを、」（12文字＝324px）が
     311px に収まらず、「を、」だけが次の行に落ちて4行になっていた。
     6vw（375pxで22.5px）なら 12文字＝270px で、<br> で分けた2行に収まる。 */
  .style .hero__title { font-size: clamp(20px, 6vw, 27px); }
  .style .hero__lead { font-size: 15px; }
  .style .hero__note { font-size: 14px; }

  /* Q&A一覧。1行12文字しか入っていなかった。
     Qの丸と矢印に取られる幅も詰めて、本文に回している。 */
  .style .qa-link { font-size: 17px; padding: 12px 4px; gap: 8px; }
  .style .qa-link__excerpt { font-size: 15px; }
  .style .qa-link__meta { font-size: 14px; }
  .style .qa-status { font-size: 15px; }
  .style .qa-question__body { font-size: 19px; padding: 14px 16px; }

  /* 検索欄とカテゴリのチップ。ここだけで468pxあり、
     スマホでは1件目のQ&Aが画面1枚半ぶん下にあった。
     ★入力欄は16px未満にしないこと。iOS が自動で拡大してしまう。 */
  .style .qa-tools { padding: 10px; }
  .style .qa-tools .field-label { font-size: 14px; }
  .style .qa-tools legend { font-size: 15px; }
  .style .qa-tools input[type="text"],
  .style .qa-tools input[type="search"] { font-size: 16px; min-height: 44px; }
  .style .qa-search .btn { min-height: 44px; font-size: 15px; }
  /* チップは15px・高さ44pxで、10個で226pxの塊になっていた。
     タップ領域は38px確保している（WCAG 2.2 AA の24pxは満たす）。 */
  .style .chips { gap: 6px; }
  .style .chip { font-size: 13px; padding: 4px 9px; min-height: 38px; }

  /* カテゴリの折りたたみ（app.js の initQaCatToggle が組み立てる）。
     14個のチップで196pxの塊になり、1件目の質問が下に押し出されていた。
     ★JavaScript が動かないときはボタンが作られず、
       チップは今までどおり全部見える（.chips[hidden] が付かないため）。
     ★見出しはボタンに移すので legend は読み上げ用に残して見た目だけ隠す。 */
  .style .qa-tools fieldset.is-collapsible > legend {
    position: absolute; width: 1px; height: 1px;
    margin: -1px; padding: 0; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; border: 0;
  }
  .style .chips[hidden] { display: none; }
  .style .cats-toggle {
    display: flex; align-items: center; gap: 8px; width: 100%;
    min-height: 44px; padding: 8px 12px;
    background: #fff;
    border: 1px solid var(--line); border-radius: var(--radius);
    color: var(--brand); font-family: inherit; font-size: 15px; font-weight: 700;
    text-align: left; cursor: pointer;
  }
  /* いま絞り込んでいるカテゴリ名。開かなくても分かるように右端に出す */
  .style .cats-toggle__cur { margin-left: auto; color: var(--text); font-weight: 400; }
  .style .cats-toggle::after {
    content: "▼"; flex: none; font-size: 11px; color: var(--brand);
    transition: transform .15s;
  }
  .style .cats-toggle[aria-expanded="true"]::after { transform: rotate(180deg); }
  .style .cats-toggle[aria-expanded="true"] { margin-bottom: 8px; }

  /* トップの「目的から探す」カテゴリ一覧（2026-09-09）
     1列で1項目66px。リハビリ9個で747px、健康4個で326px、合わせて1073pxあり、
     スマホでは延々とスクロールする帯になっていた。
     2列にして、アイコンと文字を小さくし、右端の矢印を省く。
     ★2列でも「変形性膝関節症」（7文字）が折り返さないことを実測で確認済み。
       文字を15px以上に戻すとはみ出すので注意。
     ★タップ領域は48pxを確保している。 */
  .style .cat-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .style .cat-grid a { min-height: 48px; padding: 8px 10px; gap: 6px; font-size: 14px; }
  .style .cat-icon { width: 24px; height: 24px; }
  .style .cat-grid .cat-arrow { display: none; }

  /* ログイン・会員登録フォームの幅（2026-09-09）
     WP-Members のCSSが #wpmem_login / #wpmem_reg にも width:75% を当てており
     （通知の箱と同じ原因）、323pxの枠の中で242pxしか使えていなかった。
     入力欄も188pxまで縮み、「ユーザー名またはメールアドレス」が2行に折り返していた。
     ★max-width だけでは打ち消せない。width:auto を書くこと。 */
  .style #wpmem_login,
  .style #wpmem_reg { width: auto; }
  .style #wpmem_login .form,
  .style #wpmem_reg .form { padding: 16px; }
  /* タブの「すでに登録がお済みの方」（11文字）が3行になっていた。
     13px で1行に収まる。ここを14px以上に戻すと折り返す。 */
  .style .authtabs__tab { font-size: 13px; padding: 10px 4px; }

  /* 商品ページの広告表記 */
  .style .pr-notice { font-size: 16px; padding: 14px; }
}