/* ==========================================================================
   promise.css — 私たちの約束 (/promise/) ページ固有スタイル
   前提: sub-page.css 読み込み済み
   ========================================================================== */

/* --------------------------------------------------------------------------
   ヒーロー — PC（/price/ FV構造と同一型）
   -------------------------------------------------------------------------- */
.sub-promise-hero {
  position: relative;
  background-color: var(--c3-bg);
  z-index: 1;
  padding-top: var(--c3-header-h);
  display: grid;
  grid-template-columns: 5fr 3fr; /* 62.5% 左列 / 37.5% 右列 */
  align-items: stretch;
}

.sub-promise-hero__main {
  padding: 96px 48px 80px;
}

.sub-promise-hero__eyebrow {
  margin: 0;
  font-family: var(--c3-font-en), 'Noto Sans JP', sans-serif;
  font-size: 11px;
  letter-spacing: .26em;
  color: var(--c3-text-muted);
  word-break: keep-all;
}

.sub-promise-hero__h1 {
  margin: 30px 0 0;
  font-family: var(--c3-font-serif);
  font-weight: 600;
  font-size: clamp(28px, 3.2vw, 42px);
  line-height: 1.5;
  letter-spacing: .04em;
  word-break: auto-phrase;
}

/* PC: 強制改行なし（自然に折り返す） */
.sub-promise-hero__h1-br {
  display: none;
}

.sub-promise-hero__accent {
  width: 32px;
  height: 2px;
  background: var(--c3-vermilion);
  margin: 30px 0 0;
}

.sub-promise-hero__lead {
  margin: 30px 0 0;
  max-width: 620px;
  font-size: 15px;
  line-height: 2.2;
  letter-spacing: .04em;
  color: var(--c3-text-body);
}

.sub-promise-hero__side {
  border-left: 1px solid var(--c3-rule);
  position: relative;
  min-height: 555px; /* 焼き込み寸法(449:555)を床として保証 */
}

/* 列いっぱいに cover 充填 / overflow: visible でスタンプのはみ出しを許容 */
.sub-promise-hero__video-wrap {
  position: absolute;
  inset: 0;
  overflow: visible;
}

.sub-promise-hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

/* PC: 動画右下はみ出し配置（/price/ の「明」と同じ座り） */
.sub-promise-hero__stamp-wrap {
  position: absolute;
  bottom: -20px;
  right: -20px;
  z-index: 2;
}

.sub-promise-hero__stamp-wrap .sub-stamp {
  background-color: var(--c3-bg);
}

/* SP動画ユニット・SP専用リード — PC非表示 */
.sub-promise-hero__sp-unit,
.sub-promise-hero__sp-video,
.sub-promise-hero__sp-lead { display: none; }

/* FV動画左上 鉤括弧: 暗いビジュアルのため紙白へオーバーライド */
.sub-promise-hero .sub-fv-tl-corner { border-color: var(--c3-bg); }

/* --------------------------------------------------------------------------
   約束リストセクション
   -------------------------------------------------------------------------- */
.sub-promise-list-sec {
  padding-bottom: 0;
}

.sub-promise-list-sec__header {
  max-width: 1200px;
  margin: 0 auto;
  padding: 48px 48px 0;
}

.sub-promise-list {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0; /* 帯をmax-width端に揃える。水平paddingは__innerへ移動 */
}

/* 各約束アイテム */
.sub-promise-item__inner {
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: 0 64px;
  padding: 48px 48px; /* 上下・左右均等 */
  align-items: start;
}

/* --------------------------------------------------------------------------
   約束アイテム — ホバー薄グレー地（/price/ 料金行と同一文法）
   PCのみ・タッチデバイス無効
   -------------------------------------------------------------------------- */
@media (hover: hover) and (pointer: fine) {
  .sub-promise-item {
    transition: background-color .25s ease;
  }
  .sub-promise-item:hover {
    background-color: var(--c3-hover-bg);
  }
}

.sub-promise-item__head {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.sub-promise-item__num {
  font-family: var(--c3-font-en), 'Noto Sans JP', sans-serif;
  font-size: 11px;
  letter-spacing: .2em;
  color: var(--c3-text-muted);
  font-variant-numeric: tabular-nums;
}

.sub-promise-item__title {
  font-family: var(--c3-font-serif);
  font-size: clamp(17px, 1.8vw, 22px);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: .04em;
  color: var(--c3-ink);
  margin: 0;
  word-break: keep-all;
  text-wrap: pretty;
}

.sub-promise-item__body {
  display: flex;
  align-items: flex-start;
}

.sub-promise-item__body p {
  font-size: clamp(14px, 1.25vw, 15px);
  line-height: 2.2;
  letter-spacing: .04em;
  color: var(--c3-text-body);
  margin: 0;
  text-wrap: pretty;
}

/* 締めの言葉 */
.sub-promise-closing {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0; /* ルール線は外に移動済み。水平paddingは__innerへ */
}

.sub-promise-closing__inner {
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: 0 64px;
  align-items: start;
  padding: 64px 48px 80px;
}

.sub-promise-closing__heading {
  font-family: var(--c3-font-serif);
  font-size: clamp(17px, 1.8vw, 22px); /* 各約束タイトルと同格（dc.html準拠） */
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: .04em;
  color: var(--c3-ink);
  margin: 0;
  word-break: keep-all;
  text-wrap: pretty;
}

.sub-promise-closing__body {
  font-size: clamp(14px, 1.25vw, 15px);
  line-height: 2.2;
  letter-spacing: .04em;
  color: var(--c3-text-body);
  margin: 0;
  padding-top: 6px;
  text-wrap: pretty;
}

/* --------------------------------------------------------------------------
   reduced-motion: FV動画停止
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .sub-promise-hero__video,
  .sub-promise-hero__sp-video { animation: none; }
}

/* --------------------------------------------------------------------------
   レスポンシブ — SP（767px以下）
   -------------------------------------------------------------------------- */
@media (max-width: 767px) {

  /* ─ ヒーロー SP ─ */
  .sub-promise-hero {
    display: block;
    padding-top: var(--c3-header-h);
  }

  .sub-promise-hero__main {
    padding: 56px 24px 12px;
    position: relative;
    z-index: 1;
  }

  .sub-promise-hero__h1 {
    font-size: 30px;
    word-break: auto-phrase;
  }

  .sub-promise-hero__h1-br {
    display: inline;
  }

  /* SP: リード文・動画列(PC右側)は非表示（朱線__accentは表示維持） */
  .sub-promise-hero__lead,
  .sub-promise-hero__side { display: none; }

  /* ─ SP FVユニット ─ */
  .sub-promise-hero__sp-unit {
    display: block;
    position: relative;
    z-index: 0;
    margin-top: -68px; /* H1右脇への食い込み（/price/ SP準拠） */
  }

  .sub-promise-hero__sp-videobox {
    position: relative;
    margin: 0 16px 56px;
  }

  .sub-promise-hero__sp-video-inner {
    clip-path: polygon(0 40%, 100% 0, 100% 100%, 0 100%);
    overflow: hidden;
  }

  .sub-promise-hero__sp-video {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    object-position: center center;
  }

  .sub-promise-hero__sp-stamp-wrap {
    display: block;
    position: absolute;
    bottom: -20px;
    right: 0;
    z-index: 2;
  }

  .sub-promise-hero__sp-stamp-wrap .sub-stamp {
    background-color: var(--c3-bg);
  }

  /* SP専用リード（動画の下） */
  .sub-promise-hero__sp-lead {
    display: block;
    padding: 40px 24px 56px;
    font-size: 14px;
    line-height: 2.2;
    letter-spacing: .04em;
    color: var(--c3-text-body);
  }

  /* ─ 約束リスト SP ─ */
  .sub-promise-list-sec__header {
    padding: 40px 20px 0;
  }

  .sub-promise-list {
    padding: 0;
  }

  .sub-promise-item__inner {
    grid-template-columns: 1fr;
    gap: 0;
    padding: 32px 20px;
  }

  .sub-promise-item__head {
    flex-direction: row;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 14px;
  }

  .sub-promise-item__title {
    font-size: 16px;
    line-height: 1.55;
    min-width: 0;
  }

  .sub-promise-item__body {
    display: block;
    padding: 0 4px;
  }

  .sub-promise-item__body p {
    font-size: 14px;
    line-height: 2.2;
    text-wrap: wrap;
  }

  /* ─ 締めの言葉 SP ─ */
  .sub-promise-closing__inner {
    grid-template-columns: 1fr;
    gap: 20px;
    padding: 48px 20px 64px;
  }

  .sub-promise-closing__heading {
    font-size: clamp(20px, 6vw, 28px);
  }

  .sub-promise-closing__heading br {
    display: none;
  }

  .sub-promise-closing__body {
    font-size: 14px;
    padding: 0 4px;
    text-wrap: wrap;
  }
}
