/*
 * ZPF共通レイアウト部品。全セレクターを .zpf-site 内へ限定。
 * 共通見出しテンプレートの構造:
 * .zpf-section > .zpf-container > .zpf-section-heading
 *   .zpf-section-heading__meta
 *     .zpf-section-heading__label / .zpf-section-heading__index
 *   .zpf-section-heading__title
 *   .zpf-section-heading__lead（ある場合は親に --with-lead を追加）
 */

/* tokens.cssが768px以上で左右余白・上下余白・見出しサイズを切り替える */
.zpf-site .zpf-container {
  width: 100%;
  max-width: var(--zpf-content-max);
  margin-inline: auto;
  padding-inline: var(--zpf-gutter);
}

.zpf-site .zpf-section {
  padding-block: var(--zpf-section-space);
}

.zpf-site .zpf-anchor {
  scroll-margin-top: var(--zpf-anchor-offset);
}

/* SectionHeading.tsxに対応する、装飾を抑えた共通見出し */
.zpf-site .zpf-section-heading__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--zpf-space-24);
  border-top: var(--zpf-border-width) solid var(--zpf-border-heading);
  padding-top: var(--zpf-section-heading-rule-padding);
  margin-bottom: var(--zpf-section-heading-label-margin);
}

.zpf-site .zpf-section-heading__label {
  margin: 0;
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-text-label);
  font-weight: var(--zpf-weight-normal);
  letter-spacing: var(--zpf-tracking-label);
  color: var(--zpf-text-label);
}

.zpf-site .zpf-section-heading__index {
  flex-shrink: 0;
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-text-label);
  font-weight: var(--zpf-weight-normal);
  font-variant-numeric: tabular-nums;
  letter-spacing: var(--zpf-tracking-index);
  color: var(--zpf-color-foreground-400);
}

.zpf-site .zpf-section-heading__title {
  margin: 0;
  font-family: var(--zpf-font-heading);
  font-size: var(--zpf-section-title-size);
  font-weight: var(--zpf-weight-bold);
  line-height: var(--zpf-section-title-line);
  letter-spacing: var(--zpf-tracking-tight);
  color: var(--zpf-text-strong);
}

.zpf-site .zpf-section-heading--with-lead .zpf-section-heading__title {
  margin-bottom: var(--zpf-section-title-margin);
}

.zpf-site .zpf-section-heading__lead {
  max-width: var(--zpf-content-max-lead);
  margin: 0;
  font-size: var(--zpf-text-lead);
  line-height: var(--zpf-line-relaxed);
  color: var(--zpf-text-description);
}

/* 汎用の濃色背景上の見出し。背景そのものは指定しない */
.zpf-site .zpf-section-heading--dark .zpf-section-heading__meta {
  border-top-color: var(--zpf-border-heading-on-dark);
}

.zpf-site .zpf-section-heading--dark .zpf-section-heading__label {
  color: oklch(var(--zpf-oklch-background-50) / 0.8);
}

.zpf-site .zpf-section-heading--dark .zpf-section-heading__index {
  color: oklch(var(--zpf-oklch-background-50) / 0.45);
}

.zpf-site .zpf-section-heading--dark .zpf-section-heading__title {
  color: var(--zpf-color-background-50);
}

.zpf-site .zpf-section-heading--dark .zpf-section-heading__lead {
  color: oklch(var(--zpf-oklch-background-50) / 0.7);
}

/* お困りごと・理由などの小さい番号。サービスの大型番号は別工程 */
.zpf-site .zpf-number {
  flex-shrink: 0;
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-text-label);
  font-weight: var(--zpf-weight-normal);
  font-variant-numeric: tabular-nums;
  letter-spacing: var(--zpf-tracking-item-number);
  color: var(--zpf-color-primary-600);
}

/* 単独の区切り線（hrにも利用可）と、部品上端の細線 */
.zpf-site .zpf-divider {
  height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-top: var(--zpf-border-width) solid var(--zpf-border-standard);
}

.zpf-site .zpf-rule-top {
  border-top: var(--zpf-border-width) solid var(--zpf-border-standard);
}

/*
 * ボタンは a / button のどちらにも適用。
 * 使用例: class="zpf-button zpf-button--primary"
 * 余白は原本の主なボタンの左右2rem・上下1rem。個別CTAは未実装。
 */
.zpf-site .zpf-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--zpf-space-8);
  max-width: 100%;
  padding: var(--zpf-space-16) var(--zpf-space-32);
  border: 0;
  border-radius: var(--zpf-radius-small);
  background: transparent;
  color: inherit;
  font-family: var(--zpf-font-body);
  font-size: var(--zpf-text-sm);
  font-weight: var(--zpf-weight-medium);
  line-height: var(--zpf-line-sm);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: color 150ms ease, background-color 150ms ease, border-color 150ms ease;
}

.zpf-site .zpf-button--primary {
  background-color: var(--zpf-action-bg);
  color: var(--zpf-action-text);
}

.zpf-site .zpf-button--secondary {
  border: var(--zpf-border-width) solid var(--zpf-color-background-300);
  color: var(--zpf-color-foreground-800);
}

.zpf-site .zpf-button:disabled,
.zpf-site .zpf-button[aria-disabled="true"] {
  opacity: 0.6;
  cursor: not-allowed;
}

/* hoverを備えた端末だけに適用。無効状態にはhover色を適用しない */
@media (hover: hover) {
  .zpf-site .zpf-button--primary:hover:not(:disabled):not([aria-disabled="true"]) {
    background-color: var(--zpf-action-bg-hover);
    color: var(--zpf-action-text);
  }

  .zpf-site .zpf-button--secondary:hover:not(:disabled):not([aria-disabled="true"]) {
    border-color: var(--zpf-color-primary-400);
    color: var(--zpf-color-primary-600);
  }
}

/* 複数のリンク・ボタンを並べる最小限の共通配置 */
.zpf-site .zpf-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--zpf-space-12);
}

@media (min-width: 640px) {
  .zpf-site .zpf-actions {
    flex-direction: row;
    align-items: center;
    flex-wrap: wrap;
  }
}

/* ユーザーが動きを抑える設定の場合、共通ボタンの色遷移を止める */
@media (prefers-reduced-motion: reduce) {
  .zpf-site .zpf-button {
    transition: none;
  }
}

/* 共通ヘッダー・ナビ・フッター。スクロール状態切替とメニュー開閉JSは未実装。 */
.zpf-site .zpf-header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 50;
  height: var(--zpf-header-height);
  border-bottom: var(--zpf-border-width) solid var(--zpf-border-color);
  background-color: var(--zpf-bg-header-scrolled);
  backdrop-filter: blur(12px);
}
/* ヒーロー移植前も可読性を維持するため通常は白背景。透明状態は次工程で制御。 */
.zpf-site .zpf-header.is-transparent {
  background-color: transparent;
  border-bottom-color: transparent;
  backdrop-filter: none;
}
.zpf-site .zpf-header--admin-toolbar { top: 32px; }
.zpf-site .zpf-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--zpf-space-12);
  height: var(--zpf-header-height);
}
.zpf-site .zpf-brand {
  display: inline-flex;
  align-items: center;
  gap: var(--zpf-space-12);
  color: var(--zpf-text-strong);
  text-decoration: none;
  flex-shrink: 0;
}
.zpf-site .zpf-brand:hover { color: var(--zpf-text-strong); }
.zpf-site .zpf-brand__mark {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--zpf-space-36);
  height: var(--zpf-space-36);
  border-radius: var(--zpf-radius-small);
  background: var(--zpf-action-bg);
  color: var(--zpf-action-text);
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-text-sm);
  font-weight: var(--zpf-weight-bold);
}
.zpf-site .zpf-brand__text { line-height: 1.25; }
.zpf-site .zpf-brand__label {
  display: block;
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-text-label-small);
  letter-spacing: var(--zpf-tracking-item-number);
  color: var(--zpf-color-primary-600);
}
.zpf-site .zpf-brand__name {
  display: block;
  font-family: var(--zpf-font-heading);
  font-size: var(--zpf-text-lead);
  font-weight: var(--zpf-weight-bold);
  letter-spacing: var(--zpf-tracking-wide);
}
.zpf-site .zpf-nav__list,
.zpf-site .zpf-footer__business-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.zpf-site .zpf-nav__item { margin: 0; padding: 0; }
.zpf-site .zpf-nav__link {
  color: var(--zpf-text-description);
  text-decoration: none;
}
.zpf-site .zpf-nav__link:hover { color: var(--zpf-color-primary-600); }
.zpf-site .zpf-nav--desktop { display: none; }
.zpf-site .zpf-nav--desktop .zpf-nav__list {
  display: flex;
  align-items: center;
  gap: var(--zpf-header-nav-gap);
}
.zpf-site .zpf-nav--desktop .zpf-nav__link {
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-header-nav-text-size);
  white-space: nowrap;
}
.zpf-site .zpf-header__actions {
  display: flex;
  align-items: center;
  gap: var(--zpf-space-12);
}
.zpf-site .zpf-header__contact {
  display: none;
  padding: var(--zpf-space-10) var(--zpf-space-20);
  font-size: var(--zpf-header-nav-text-size);
}
.zpf-site .zpf-menu-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--zpf-space-40);
  height: var(--zpf-space-40);
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--zpf-color-foreground-900);
}
.zpf-site .zpf-menu-toggle:disabled { cursor: not-allowed; }
.zpf-site .zpf-menu-toggle__lines,
.zpf-site .zpf-menu-toggle__lines::before,
.zpf-site .zpf-menu-toggle__lines::after {
  display: block;
  width: var(--zpf-space-20);
  height: var(--zpf-border-width-emphasis);
  background: currentColor;
}
.zpf-site .zpf-menu-toggle__lines { position: relative; }
.zpf-site .zpf-menu-toggle__lines::before,
.zpf-site .zpf-menu-toggle__lines::after { content: ''; position: absolute; }
.zpf-site .zpf-menu-toggle__lines::before { top: calc(-1 * var(--zpf-space-6)); }
.zpf-site .zpf-menu-toggle__lines::after { top: var(--zpf-space-6); }
.zpf-site .zpf-mobile-menu {
  padding: var(--zpf-space-16) var(--zpf-gutter);
  border-top: var(--zpf-border-width) solid var(--zpf-border-color);
  background: var(--zpf-bg-page);
  max-height: calc(100dvh - var(--zpf-header-height) - var(--zpf-space-48));
  overflow-y: auto;
}
.zpf-site .zpf-mobile-menu[hidden] { display: none; }
.zpf-site .zpf-nav--mobile .zpf-nav__link {
  display: block;
  padding-block: var(--zpf-space-12);
  border-bottom: var(--zpf-border-width) solid var(--zpf-color-background-100);
  font-size: var(--zpf-text-sm);
}
.zpf-site .zpf-mobile-menu__contact {
  display: flex;
  margin-top: var(--zpf-space-16);
  padding: var(--zpf-space-12) var(--zpf-space-20);
}
.zpf-site .zpf-footer {
  background: var(--zpf-bg-footer);
  border-top: var(--zpf-border-width) solid var(--zpf-border-color);
}
.zpf-site .zpf-footer__inner { padding-block: var(--zpf-footer-space); }
.zpf-site .zpf-footer__grid { display: grid; gap: var(--zpf-space-40); }
.zpf-site .zpf-footer .zpf-brand { margin-bottom: var(--zpf-space-16); }
.zpf-site .zpf-footer .zpf-brand__name { font-size: var(--zpf-text-base); }
.zpf-site .zpf-footer__description,
.zpf-site .zpf-footer__address,
.zpf-site .zpf-footer__business-list {
  font-size: var(--zpf-text-sm);
  color: var(--zpf-text-description);
  line-height: var(--zpf-line-relaxed);
}
.zpf-site .zpf-footer__description { margin: 0 0 var(--zpf-space-20); }
.zpf-site .zpf-footer__address { font-style: normal; }
.zpf-site .zpf-footer__break { display: none; }
.zpf-site .zpf-footer__label {
  margin: 0 0 var(--zpf-space-16);
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-text-label);
  letter-spacing: var(--zpf-tracking-index);
  color: var(--zpf-color-foreground-400);
}
.zpf-site .zpf-nav--footer .zpf-nav__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--zpf-space-10) var(--zpf-space-24);
}
.zpf-site .zpf-nav--footer .zpf-nav__link { font-size: var(--zpf-text-sm); }
.zpf-site .zpf-footer__business-list {
  display: grid;
  gap: var(--zpf-space-10);
}
.zpf-site .zpf-footer__business-list li { margin: 0; padding: 0; }
.zpf-site .zpf-footer__bottom {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  gap: var(--zpf-space-16);
  margin-top: var(--zpf-space-48);
  padding-top: var(--zpf-space-24);
  border-top: var(--zpf-border-width) solid var(--zpf-border-color);
}
.zpf-site .zpf-footer__copyright {
  margin: 0;
  font-family: var(--zpf-font-label);
  font-size: var(--zpf-text-xs);
  color: var(--zpf-text-muted);
}
.zpf-site .zpf-footer__policies {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--zpf-space-20);
  font-size: var(--zpf-text-xs);
  color: var(--zpf-text-muted);
}
.zpf-site .zpf-footer__policies a { color: inherit; text-decoration: none; }
.zpf-site .zpf-footer__policies a:hover { color: var(--zpf-color-primary-600); }
@media (min-width: 640px) {
  .zpf-site .zpf-footer__break { display: inline; }
  .zpf-site .zpf-footer__bottom { flex-direction: row; }
}
@media (min-width: 768px) {
  .zpf-site .zpf-header__contact { display: inline-flex; }
}
@media (min-width: 1024px) {
  .zpf-site .zpf-nav--desktop { display: block; }
  .zpf-site .zpf-menu-toggle,
  .zpf-site .zpf-mobile-menu { display: none; }
  .zpf-site .zpf-footer__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--zpf-space-32); }
  .zpf-site .zpf-footer__company { grid-column: span 5; }
  .zpf-site .zpf-footer__menu { grid-column: 7 / span 3; }
  .zpf-site .zpf-footer__business { grid-column: span 3; }
  .zpf-site .zpf-nav--footer .zpf-nav__list { grid-template-columns: 1fr; }
}
/* WordPress標準の管理バー寸法。管理画面CSSへの変更は行わない。 */
@media (max-width: 782px) {
  .zpf-site .zpf-header--admin-toolbar { top: 46px; }
}
@media (max-width: 600px) {
  .zpf-site .zpf-header--admin-toolbar { top: 0; }
}


/* 固定ページ共通の器。親テーマ本文パーツは呼び出さない。 */
.zpf-site .zpf-page { background: var(--zpf-bg-page); padding-top: var(--zpf-header-height); }
.zpf-site .zpf-page__container { max-width: var(--zpf-content-max-cta); padding-block: var(--zpf-section-space); }
.zpf-site .zpf-page__header { border-top: var(--zpf-border-width) solid var(--zpf-border-heading); padding-top: var(--zpf-space-24); margin-bottom: var(--zpf-space-40); }
.zpf-site .zpf-page__title { margin: 0; font-size: var(--zpf-section-title-size); line-height: var(--zpf-section-title-line); }
.zpf-site .zpf-page__featured { margin-bottom: var(--zpf-space-40); }
.zpf-site .zpf-page__featured img { margin-inline: auto; height: auto; }
.zpf-site .zpf-page__content { overflow-wrap: anywhere; }
.zpf-site .zpf-page__content > * { max-width: 100%; }
.zpf-site .zpf-page__content p { margin-bottom: var(--zpf-space-24); }
.zpf-site .zpf-page__content :is(h2, h3, h4) { margin: var(--zpf-space-40) 0 var(--zpf-space-20); }
.zpf-site .zpf-page__content h2 { font-size: var(--zpf-service-title-size); border-bottom: var(--zpf-border-width) solid var(--zpf-border-color); padding-bottom: var(--zpf-space-16); }
.zpf-site .zpf-page__content h3 { font-size: var(--zpf-text-xl); }
.zpf-site .zpf-page__content h4 { font-size: var(--zpf-text-lg); }
.zpf-site .zpf-page__content :is(ul, ol) { margin: 0 0 var(--zpf-space-24); padding-left: var(--zpf-space-24); }
.zpf-site .zpf-page__content li + li { margin-top: var(--zpf-space-8); }
.zpf-site .zpf-page__content figure { margin: 0 0 var(--zpf-space-24); }
.zpf-site .zpf-page__content img { max-width: 100%; height: auto; }
.zpf-site .zpf-page__content :is(iframe, video) { max-width: 100%; }
.zpf-site .zpf-page__content .wp-block-table { overflow-x: auto; }
.zpf-site .zpf-page__content table { width: 100%; border-collapse: collapse; }
.zpf-site .zpf-page__content :is(th, td) { padding: var(--zpf-space-12); border-bottom: var(--zpf-border-width) solid var(--zpf-border-color); text-align: left; }
.zpf-site .zpf-page__pagination { margin-top: var(--zpf-space-32); }

/* 料金固定ページ（公開サイトの post ID: 18）専用。本文HTMLは維持する。 */
body.page-id-18 .zpf-site .zpf-page__container {
  max-width: 1080px;
  padding-block: 64px 96px;
}
body.page-id-18 .zpf-site .zpf-page__header {
  margin-bottom: 40px;
  border-top-color: var(--zpf-color-primary-600);
}
body.page-id-18 .zpf-site .zpf-page__content {
  color: var(--zpf-text-body);
  line-height: 1.9;
}
body.page-id-18 .zpf-site .zpf-page__content p { margin: 0 0 24px; }
body.page-id-18 .zpf-site .zpf-page__content .zpf-label {
  display: block;
  margin: 72px 0 12px;
  color: var(--zpf-color-primary-600);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .18em;
  text-transform: uppercase;
}
body.page-id-18 .zpf-site .zpf-page__content > .zpf-label:first-child { margin-top: 0; }
body.page-id-18 .zpf-site .zpf-page__content > .zpf-label:first-child + p {
  color: var(--zpf-text-strong);
  font-size: 22px;
  font-weight: 600;
  line-height: 1.7;
  margin-bottom: 20px;
}
body.page-id-18 .zpf-site .zpf-page__content h2 {
  margin: 0 0 24px;
  padding: 0 0 20px;
  border-bottom: 1px solid var(--zpf-border-standard);
  font-size: 28px;
  line-height: 1.5;
}
body.page-id-18 .zpf-site .zpf-page__content h3 {
  margin: 56px 0 28px;
  padding: 18px 24px;
  border-left: 3px solid var(--zpf-color-primary-600);
  background: var(--zpf-bg-section-soft);
  color: var(--zpf-color-foreground-900);
  font-size: 22px;
  line-height: 1.5;
}
body.page-id-18 .zpf-site .zpf-page__content h4 {
  margin: 32px 0 16px;
  padding: 0;
  font-size: 18px;
  line-height: 1.6;
}
/* Guide: 既存の h2 + p + ul を3枚のカードにする。 */
body.page-id-18 .zpf-site .zpf-page__content > h2 + p + ul {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin: 28px 0 0;
  padding: 0;
  list-style: none;
}
body.page-id-18 .zpf-site .zpf-page__content > h2 + p + ul > li {
  margin: 0;
  padding: 24px 20px;
  border: 1px solid var(--zpf-border-standard);
  border-top: 2px solid var(--zpf-color-primary-600);
  border-radius: var(--zpf-radius-small);
  background: #fff;
  font-size: 14px;
}
body.page-id-18 .zpf-site .zpf-page__content > h2 + p + ul strong {
  display: block;
  margin-bottom: 8px;
  color: var(--zpf-text-strong);
  font-size: 17px;
}
/* 表: 左列を淡色、右の金額列を白地・青字で区別する。 */
body.page-id-18 .zpf-site .zpf-page__content .wp-block-table {
  margin: 0 0 36px;
  border: 1px solid var(--zpf-border-standard);
  border-radius: var(--zpf-radius-small);
  background: #fff;
  overflow-x: auto;
}
body.page-id-18 .zpf-site .zpf-page__content table {
  margin: 0;
  table-layout: fixed;
  border: 0;
  border-collapse: separate;
  border-spacing: 0;
  background: #fff;
}
body.page-id-18 .zpf-site .zpf-page__content :is(th, td) {
  padding: 18px 24px;
  border: 0;
  border-bottom: 1px solid var(--zpf-border-standard);
  line-height: 1.65;
  vertical-align: middle;
}
body.page-id-18 .zpf-site .zpf-page__content th {
  width: 65%;
  background: var(--zpf-bg-section-soft);
  color: var(--zpf-color-foreground-800);
  font-size: 15px;
  font-weight: 500;
}
body.page-id-18 .zpf-site .zpf-page__content td {
  background: #fff;
  color: var(--zpf-color-primary-700);
  font-size: 18px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
body.page-id-18 .zpf-site .zpf-page__content tr:last-child > :is(th, td) { border-bottom: 0; }
/* Notes: 既存の h2 直後のリストを案内ブロックにする。 */
body.page-id-18 .zpf-site .zpf-page__content > h2 + ul {
  margin: 0;
  padding: 28px 32px 28px 52px;
  border: 1px solid var(--zpf-border-standard);
  border-left: 3px solid var(--zpf-color-primary-600);
  border-radius: var(--zpf-radius-small);
  background: var(--zpf-bg-section-soft);
  font-size: 15px;
}
body.page-id-18 .zpf-site .zpf-page__content > h2 + ul li + li { margin-top: 12px; }
body.page-id-18 .zpf-site .zpf-page__content > h2 + ul li::marker { color: var(--zpf-color-primary-600); }
/* Contact: 既存のボタンを含む段落と、その直前の見出し・説明を一体化。 */
body.page-id-18 .zpf-site .zpf-page__content > .zpf-label:has(+ h2 + p + p .zpf-button) {
  margin-bottom: 0;
  padding: 32px 32px 12px;
  border-top: 1px solid var(--zpf-border-standard);
  background: var(--zpf-color-primary-50);
  text-align: center;
}
body.page-id-18 .zpf-site .zpf-page__content > h2:has(+ p + p .zpf-button) {
  margin: 0;
  padding: 0 32px 20px;
  border: 0;
  background: var(--zpf-color-primary-50);
  text-align: center;
}
body.page-id-18 .zpf-site .zpf-page__content > p:has(+ p .zpf-button),
body.page-id-18 .zpf-site .zpf-page__content > p:has(> .zpf-button) {
  margin: 0;
  padding: 0 32px 24px;
  background: var(--zpf-color-primary-50);
  text-align: center;
}
body.page-id-18 .zpf-site .zpf-page__content > p:has(> .zpf-button) { padding-bottom: 36px; }
body.page-id-18 .zpf-site .zpf-page__content .zpf-button--primary {
  min-width: 280px;
  padding: 18px 32px;
  font-size: 16px;
}
/* 今回は狭い画面での崩れ防止のみ。 */
@media (max-width: 767px) {
  body.page-id-18 .zpf-site .zpf-page__container { padding-block: 40px 64px; }
  body.page-id-18 .zpf-site .zpf-page__content > h2 + p + ul { grid-template-columns: 1fr; }
  body.page-id-18 .zpf-site .zpf-page__content h2 { font-size: 24px; }
  body.page-id-18 .zpf-site .zpf-page__content h3 { padding: 16px; font-size: 20px; }
  body.page-id-18 .zpf-site .zpf-page__content :is(th, td) { padding: 14px 12px; }
  body.page-id-18 .zpf-site .zpf-page__content th { width: 58%; font-size: 14px; }
  body.page-id-18 .zpf-site .zpf-page__content td { font-size: 16px; }
  body.page-id-18 .zpf-site .zpf-page__content .zpf-button--primary { min-width: 0; width: 100%; }
}

/* 導入事例: 本文用 .zpf-case がある固定ページだけに適用する。 */
.zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-case) {
  max-width: 1160px;
  padding-block: 64px 96px;
}
.zpf-site .zpf-page__content .zpf-case { line-height: 1.9; }
.zpf-site .zpf-page__content .zpf-case .zpf-case__inner { width: 100%; }
.zpf-site .zpf-page__content .zpf-case .zpf-label,
.zpf-site .zpf-page__content .zpf-case .zpf-case__type {
  margin: 0 0 12px;
  color: var(--zpf-color-primary-600);
  font-family: var(--zpf-font-label);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .12em;
}
.zpf-site .zpf-page__content .zpf-case .zpf-label { text-transform: uppercase; letter-spacing: .18em; }
.zpf-site .zpf-page__content .zpf-case .zpf-case__lead {
  max-width: 920px;
  margin: 0 0 20px;
  color: var(--zpf-text-strong);
  font-size: 22px;
  font-weight: 600;
  line-height: 1.7;
}
.zpf-site .zpf-page__content .zpf-case :is(.zpf-case__text, .zpf-case__description) {
  max-width: 920px;
  margin: 0;
  color: var(--zpf-text-description);
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__section,
.zpf-site .zpf-page__content .zpf-case .zpf-case__cta {
  margin-top: 80px;
  padding-top: 28px;
  border-top: 1px solid var(--zpf-border-standard);
}
.zpf-site .zpf-page__content .zpf-case h2 {
  margin: 0 0 20px;
  padding: 0;
  border: 0;
  font-size: 28px;
  line-height: 1.5;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__works-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  margin-top: 32px;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__work {
  display: flex;
  min-width: 0;
  border: 1px solid var(--zpf-border-standard);
  border-top: 2px solid var(--zpf-color-primary-600);
  border-radius: var(--zpf-radius-small);
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__work-body {
  display: flex;
  flex-direction: column;
  width: 100%;
  padding: 28px;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__work h3 {
  margin: 0 0 16px;
  padding: 0;
  font-size: 20px;
  line-height: 1.6;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__work-body > p:not(.zpf-case__type) {
  margin: 0 0 20px;
  color: var(--zpf-text-description);
  font-size: 14px;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__tags li {
  margin: 0;
  padding: 5px 9px;
  border: 1px solid var(--zpf-border-standard);
  background: var(--zpf-bg-section-soft);
  color: var(--zpf-text-description);
  font-size: 11px;
  line-height: 1.6;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__work-link {
  align-self: flex-start;
  margin-top: auto;
  color: var(--zpf-color-primary-600);
  font-size: 14px;
  font-weight: 600;
  text-underline-offset: .3em;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__category {
  margin-top: 32px;
  padding: 32px;
  border: 1px solid var(--zpf-border-standard);
  border-radius: var(--zpf-radius-small);
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__category-head {
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--zpf-border-standard);
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__category-head h3 {
  margin: 0;
  padding: 0;
  color: var(--zpf-text-strong);
  font-size: 23px;
  line-height: 1.6;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__detail {
  min-width: 0;
  padding: 24px;
  background: var(--zpf-bg-section-soft);
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__detail:last-child {
  background: var(--zpf-color-primary-50);
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__detail h4 {
  margin: 0 0 14px;
  padding: 0 0 0 12px;
  border-left: 2px solid var(--zpf-color-primary-600);
  color: var(--zpf-text-strong);
  font-size: 16px;
  line-height: 1.5;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__detail p {
  margin: 0;
  color: var(--zpf-text-description);
  font-size: 15px;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__list {
  margin: 0;
  padding-left: 20px;
  color: var(--zpf-text-description);
  font-size: 15px;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__list li + li { margin-top: 8px; }
.zpf-site .zpf-page__content .zpf-case .zpf-case__list li::marker { color: var(--zpf-color-primary-600); }
.zpf-site .zpf-page__content .zpf-case .zpf-case__message {
  padding: 32px;
  border: 1px solid var(--zpf-border-standard);
  background: var(--zpf-bg-section-soft);
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__cta {
  padding: 40px 32px;
  border: 1px solid var(--zpf-border-standard);
  background: var(--zpf-color-primary-50);
  text-align: center;
}
.zpf-site .zpf-page__content .zpf-case .zpf-case__cta-text { margin: 0 0 28px; }
.zpf-site .zpf-page__content .zpf-case .zpf-button { min-width: 280px; padding: 18px 32px; font-size: 16px; }
/* 狭い画面では列を減らして横あふれを防ぐ。詳細なスマホ調整は後工程。 */
@media (max-width: 1023px) {
  .zpf-site .zpf-page__content .zpf-case .zpf-case__works-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-case) { padding-block: 40px 64px; }
  .zpf-site .zpf-page__content .zpf-case .zpf-case__works-grid,
  .zpf-site .zpf-page__content .zpf-case .zpf-case__detail-grid { grid-template-columns: 1fr; }
  .zpf-site .zpf-page__content .zpf-case :is(.zpf-case__category, .zpf-case__work-body, .zpf-case__message, .zpf-case__cta) { padding: 24px 20px; }
  .zpf-site .zpf-page__content .zpf-case .zpf-case__section,
  .zpf-site .zpf-page__content .zpf-case .zpf-case__cta { margin-top: 48px; }
  .zpf-site .zpf-page__content .zpf-case h2 { font-size: 24px; }
  .zpf-site .zpf-page__content .zpf-case .zpf-case__lead { font-size: 19px; }
  .zpf-site .zpf-page__content .zpf-case .zpf-case__category-head h3 { font-size: 20px; }
  .zpf-site .zpf-page__content .zpf-case .zpf-button { min-width: 0; width: 100%; }
}


/* 会社概要: 固定ページ本文の .zpf-company に限定。 */
.zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-company) {
  max-width: 1120px;
  padding-block: 64px 96px;
}
.zpf-site .zpf-page__content .zpf-company { line-height: 1.9; }
.zpf-site .zpf-page__content .zpf-company .zpf-company-inner { width: 100%; }
.zpf-site .zpf-page__content .zpf-company :is(.zpf-company-hero-en, .zpf-company-heading-en, .zpf-company-link-card-en) {
  margin: 0 0 12px;
  color: var(--zpf-color-primary-600);
  font-family: var(--zpf-font-label);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-lead {
  max-width: 900px;
  margin: 0;
  color: var(--zpf-text-strong);
  font-size: 21px;
  line-height: 1.8;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-section {
  margin-top: 72px;
  padding-top: 28px;
  border-top: 1px solid var(--zpf-border-standard);
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-heading { margin-bottom: 28px; }
.zpf-site .zpf-page__content .zpf-company h2 {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 28px;
  line-height: 1.5;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-table {
  border: 1px solid var(--zpf-border-standard);
  border-radius: var(--zpf-radius-small);
  overflow: hidden;
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-row {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  margin: 0;
  border-bottom: 1px solid var(--zpf-border-standard);
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-row:last-child { border-bottom: 0; }
.zpf-site .zpf-page__content .zpf-company .zpf-company-row :is(dt, dd) {
  min-width: 0;
  margin: 0;
  padding: 24px 28px;
  font-size: 15px;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-row dt {
  border-right: 1px solid var(--zpf-border-standard);
  background: var(--zpf-bg-section-soft);
  color: var(--zpf-text-strong);
  font-weight: 600;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-row dd { color: var(--zpf-text-body); }
.zpf-site .zpf-page__content .zpf-company .zpf-company-note {
  display: block;
  margin-top: 16px;
  padding: 12px 16px;
  border-left: 2px solid var(--zpf-color-primary-600);
  background: var(--zpf-color-primary-50);
  color: var(--zpf-text-description);
  font-size: 13px;
  line-height: 1.8;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 24px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-list li {
  position: relative;
  min-width: 0;
  margin: 0;
  padding-left: 14px;
  font-size: 14px;
  line-height: 1.8;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-list li::before {
  position: absolute;
  top: .75em;
  left: 0;
  width: 4px;
  height: 4px;
  background: var(--zpf-color-primary-600);
  content: '';
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-text-block {
  padding: 36px 40px;
  border: 1px solid var(--zpf-border-standard);
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-text-block p {
  max-width: 860px;
  margin: 0 0 20px;
  color: var(--zpf-text-description);
  font-size: 16px;
  line-height: 2;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-text-block .zpf-company-signature {
  max-width: none;
  margin: 28px 0 0;
  color: var(--zpf-text-strong);
  font-weight: 600;
  text-align: right;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-philosophy {
  padding: 48px 40px;
  border-left: 3px solid var(--zpf-color-primary-600);
  background: var(--zpf-bg-section-soft);
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-philosophy p {
  margin: 0;
  color: var(--zpf-text-strong);
  font-size: 27px;
  font-weight: 600;
  line-height: 1.7;
  text-align: center;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-links {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-link-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 28px;
  border: 1px solid var(--zpf-border-standard);
  background: #fff;
  color: var(--zpf-text-body);
  text-decoration: none;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-link-card:hover { border-color: var(--zpf-color-primary-500); }
.zpf-site .zpf-page__content .zpf-company .zpf-company-link-card h3 {
  margin: 0 0 14px;
  font-size: 20px;
  line-height: 1.5;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-link-card p:not(.zpf-company-link-card-en) {
  margin: 0 0 24px;
  color: var(--zpf-text-description);
  font-size: 14px;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-link-card span {
  margin-top: auto;
  color: var(--zpf-color-primary-600);
  font-size: 14px;
  font-weight: 600;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-cta {
  margin-top: 72px;
  padding: 40px 32px;
  border: 1px solid var(--zpf-border-standard);
  background: var(--zpf-color-primary-50);
  text-align: center;
}
.zpf-site .zpf-page__content .zpf-company .zpf-company-cta h2 { margin-bottom: 20px; }
.zpf-site .zpf-page__content .zpf-company .zpf-company-cta > p:not(.zpf-company-heading-en) { margin: 0 0 28px; }
.zpf-site .zpf-page__content .zpf-company .zpf-button { min-width: 280px; padding: 18px 32px; font-size: 16px; }
/* 狭い画面の横あふれ防止。スマホの詳細調整は後工程。 */
@media (max-width: 767px) {
  .zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-company) { padding-block: 40px 64px; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-row,
  .zpf-site .zpf-page__content .zpf-company .zpf-company-list,
  .zpf-site .zpf-page__content .zpf-company .zpf-company-links { grid-template-columns: 1fr; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-row dt { border-right: 0; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-row :is(dt, dd) { padding: 16px 20px; }
  .zpf-site .zpf-page__content .zpf-company :is(.zpf-company-text-block, .zpf-company-philosophy, .zpf-company-link-card, .zpf-company-cta) { padding: 24px 20px; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-section,
  .zpf-site .zpf-page__content .zpf-company .zpf-company-cta { margin-top: 48px; }
  .zpf-site .zpf-page__content .zpf-company h2 { font-size: 24px; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-lead { font-size: 18px; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-philosophy p { font-size: 21px; }
  .zpf-site .zpf-page__content .zpf-company .zpf-button { min-width: 0; width: 100%; }
}


/* お問い合わせ: 固定ページ本文の .zpf-contact-page 内だけに適用。 */
.zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-contact-page) {
  max-width: 1200px;
  padding-block: 64px 96px;
}
.zpf-site .zpf-page__content .zpf-contact-page { line-height: 1.9; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-container { width: 100%; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-eyebrow {
  margin: 0 0 12px;
  color: var(--zpf-color-primary-600);
  font-family: var(--zpf-font-label);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-lead {
  max-width: 900px;
  margin: 0;
  color: var(--zpf-text-strong);
  font-size: 21px;
  line-height: 1.8;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-section { margin-top: 56px; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-grid {
  display: grid;
  grid-template-columns: 360px minmax(0, 1fr);
  gap: 40px;
  align-items: start;
}
.zpf-site .zpf-page__content .zpf-contact-page :is(.zpf-contact-info, .zpf-contact-form-area) { min-width: 0; }
.zpf-site .zpf-page__content .zpf-contact-page h2 {
  margin: 0 0 20px;
  padding: 0;
  border: 0;
  font-size: 26px;
  line-height: 1.6;
}
.zpf-site .zpf-page__content .zpf-contact-page :is(.zpf-contact-heading-small, .zpf-contact-form-head h2) { font-size: 21px; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-text {
  margin: 0;
  color: var(--zpf-text-description);
  font-size: 15px;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-block { margin-bottom: 32px; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-cards {
  display: grid;
  gap: 16px;
  margin-bottom: 36px;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-card {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 20px;
  border: 1px solid var(--zpf-border-standard);
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-card-icon {
  flex: 0 0 26px;
  padding-top: 2px;
  color: var(--zpf-color-primary-600);
  font-family: var(--zpf-font-label);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  letter-spacing: .08em;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-card-body { min-width: 0; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-card-body h3 {
  margin: 0 0 10px;
  padding: 0;
  font-size: 16px;
  line-height: 1.6;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-card-body p {
  margin: 0;
  color: var(--zpf-text-description);
  font-size: 14px;
  line-height: 1.8;
}
.zpf-site .zpf-page__content .zpf-contact-page :is(.zpf-contact-points, .zpf-contact-support) {
  padding: 24px;
  border-top: 1px solid var(--zpf-border-standard);
  background: var(--zpf-bg-section-soft);
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-company {
  padding-top: 24px;
  border-top: 1px solid var(--zpf-border-standard);
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-list {
  margin: 0;
  padding-left: 20px;
  color: var(--zpf-text-description);
  font-size: 14px;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-list li + li { margin-top: 8px; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-list li::marker { color: var(--zpf-color-primary-600); }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-form-card {
  padding: 28px 24px;
  border: 1px solid var(--zpf-border-standard);
  border-top: 2px solid var(--zpf-color-primary-600);
  border-radius: var(--zpf-radius-small);
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-form-head { margin-bottom: 24px; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-form-actions { margin-bottom: 28px; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-open-btn { padding: 16px 24px; font-size: 14px; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-embed-wrap {
  border: 1px solid var(--zpf-border-standard);
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-embed-wrap iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  height: 1800px;
  border: 0;
  background: #fff;
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-note {
  margin-top: 24px;
  padding: 20px;
  border-left: 2px solid var(--zpf-color-primary-600);
  background: var(--zpf-bg-section-soft);
}
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-note p {
  margin: 0;
  color: var(--zpf-text-description);
  font-size: 13px;
  line-height: 1.8;
}
/* 最低限の狭幅対応。Googleフォーム内のスタイル・送信処理は変更しない。 */
@media (max-width: 1023px) {
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-grid { grid-template-columns: 1fr; gap: 32px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-contact-page) { padding-block: 40px 64px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-cards { grid-template-columns: 1fr; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-lead { font-size: 18px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-form-card { padding: 24px 0; }
  .zpf-site .zpf-page__content .zpf-contact-page :is(.zpf-contact-form-head, .zpf-contact-form-actions, .zpf-contact-note) { margin-inline: 12px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-section { margin-top: 40px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-embed-wrap iframe { height: 2100px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-open-btn { width: 100%; }
}


/* 法務固定ページ: 本文ラッパー .zpf-legal-page 内に限定。 */
.zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-legal-page) { max-width: 980px; padding-block: 64px 96px; }
.zpf-site .zpf-page__content .zpf-legal-page { line-height: 1.95; }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-inner { width: 100%; }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-section-label { margin: 0 0 12px; color: var(--zpf-color-primary-600); font-family: var(--zpf-font-label); font-size: 12px; font-weight: 600; line-height: 1.5; letter-spacing: .18em; text-transform: uppercase; }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-hero__lead { margin: 0; color: var(--zpf-text-strong); font-size: 19px; line-height: 1.85; }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-content { margin-top: 48px; }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-block { margin-top: 36px; padding-top: 24px; border-top: 1px solid var(--zpf-border-standard); }
.zpf-site .zpf-page__content .zpf-legal-page h2 { margin: 0 0 18px; padding: 0; border: 0; color: var(--zpf-text-strong); font-size: 22px; line-height: 1.6; }
.zpf-site .zpf-page__content .zpf-legal-page p { margin: 0 0 18px; font-size: 16px; }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-block > :last-child { margin-bottom: 0; }
.zpf-site .zpf-page__content .zpf-legal-page ul { margin: 0 0 18px; padding-left: 24px; }
.zpf-site .zpf-page__content .zpf-legal-page li + li { margin-top: 8px; }
.zpf-site .zpf-page__content .zpf-legal-page li::marker { color: var(--zpf-color-primary-600); }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-cta { margin-top: 56px; padding: 32px; border: 1px solid var(--zpf-border-standard); background: var(--zpf-color-primary-50); text-align: center; }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-cta__text { margin: 0 0 24px; color: var(--zpf-text-description); }
.zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-related { margin: 24px 0 0; font-size: 14px; text-align: center; }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-policy-before { margin: 0 0 24px; padding: 16px; border-left: 2px solid var(--zpf-color-primary-600); background: var(--zpf-bg-section-soft); }
.zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-policy-before p { margin: 0; color: var(--zpf-text-description); font-size: 14px; line-height: 1.8; }
@media (max-width: 767px) {
  .zpf-site .zpf-page__container:has(> .zpf-page__article > .zpf-page__content > .zpf-legal-page) { padding-block: 40px 64px; }
  .zpf-site .zpf-page__content .zpf-legal-page h2 { font-size: 20px; }
  .zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-hero__lead { font-size: 17px; }
  .zpf-site .zpf-page__content .zpf-legal-page .zpf-legal-cta { padding: 24px 20px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-policy-before { margin-inline: 12px; }
}


/* 正式ロゴ: ヘッダー高さを維持し、画像は表示幅のみ制御する。 */
.zpf-site .zpf-brand__logo { display: block; max-width: 100%; height: auto; object-fit: contain; }
.zpf-site .zpf-header .zpf-brand__logo { width: 150px; }
.zpf-site .zpf-footer .zpf-brand__logo { width: 200px; }
@media (min-width: 768px) {
  .zpf-site .zpf-header .zpf-brand__logo { width: 190px; }
  .zpf-site .zpf-footer .zpf-brand__logo { width: 240px; }
}


/* HP仕上げ: スマホの読みやすさ・案内順を調整。PCの寸法は維持する。 */
@media (max-width: 767px) {
  .zpf-site .zpf-page__header { margin-bottom: 28px; padding-top: 20px; }
  .zpf-site .zpf-page__title { font-size: clamp(25px, 7.5vw, 30px); line-height: 1.5; }
  .zpf-site .zpf-footer__grid { gap: 32px; }
  .zpf-site .zpf-footer__policies { flex-wrap: wrap; gap: 12px 20px; }
  .zpf-site .zpf-footer__bottom { align-items: flex-start; text-align: left; }
  body.page-id-18 .zpf-site .zpf-page__content > .zpf-label:first-child + p { font-size: 18px; line-height: 1.8; }
  body.page-id-18 .zpf-site .zpf-page__content .zpf-label { margin-top: 48px; }
  body.page-id-18 .zpf-site .zpf-page__content h3 { margin-top: 40px; }
  body.page-id-18 .zpf-site .zpf-page__content h4 { font-size: 16px; }
  body.page-id-18 .zpf-site .zpf-page__content > h2 + p + ul > li { padding: 20px; }
  body.page-id-18 .zpf-site .zpf-page__content > h2 + ul { padding: 22px 20px 22px 38px; }
  body.page-id-18 .zpf-site .zpf-page__content > .zpf-label:has(+ h2 + p + p .zpf-button) { padding-inline: 20px; }
  body.page-id-18 .zpf-site .zpf-page__content > h2:has(+ p + p .zpf-button),
  body.page-id-18 .zpf-site .zpf-page__content > p:has(+ p .zpf-button),
  body.page-id-18 .zpf-site .zpf-page__content > p:has(> .zpf-button) { padding-inline: 20px; }
  .zpf-site .zpf-page__content .zpf-case .zpf-case__lead { font-size: 18px; line-height: 1.8; }
  .zpf-site .zpf-page__content .zpf-case .zpf-case__detail { padding: 20px; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-lead { line-height: 1.85; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-row dt { padding-bottom: 12px; }
  .zpf-site .zpf-page__content .zpf-company .zpf-company-list { gap: 10px; }
  /* 相談案内→安心カード→フォーム→補足情報。既存の本文・フォームは変更しない。 */
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-grid { display: flex; flex-direction: column; gap: 0; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-info { display: contents; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-info > .zpf-contact-block:first-child { order: 0; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-cards { order: 1; margin-bottom: 28px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-form-area { order: 2; width: 100%; margin-bottom: 32px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-points { order: 3; width: 100%; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-support { order: 4; width: 100%; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-company { order: 5; width: 100%; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-section { margin-top: 32px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-heading { font-size: 24px; }
  .zpf-site .zpf-hero__trust-list { gap: 12px 20px; }
}
@media (max-width: 359px) {
  .zpf-site { --zpf-gutter: 16px; }
  .zpf-site .zpf-hero__title { font-size: 34px; }
  .zpf-site .zpf-section-heading__title { font-size: 27px; }
}

/* 320px級の画面では、Googleフォームの必要幅を確保する。 */
@media (max-width: 359px) {
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-form-area { width: calc(100% + 32px); margin-inline: -16px; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-form-card { border-inline: 0; border-radius: 0; }
  .zpf-site .zpf-page__content .zpf-contact-page .zpf-contact-embed-wrap { border-inline: 0; }
}
