.hero .lead {
    font-size: 17px; color: var(--ink);
    line-height: 2.1; margin: 0;
    max-width: 520px; letter-spacing: 0.02em;
  }

.counseling { background: var(--bg); padding: var(--hero-section-gap) 80px 60px; }

.counseling .card {
    background: var(--paper);
    border: 1px solid var(--rule);
    border-top: 4px solid var(--pink-deep);
    padding: 56px 64px;
    display: grid; grid-template-columns: auto 1fr auto;
    gap: 56px; align-items: center;
  }

.counseling .badge {
    display: inline-block;
    background: var(--pink-deep); color: #fff;
    padding: 6px 18px; border-radius: 999px;
    font-size: 14px; font-weight: 500;
    letter-spacing: 0.18em; margin-bottom: 18px;
  }

.counseling .title {
    font-family: var(--font-serif);
    font-size: 30px; color: var(--ink);
    font-weight: 500; line-height: 1.4; letter-spacing: 0.04em;
  }

.counseling .duration {
    font-size: 18px; color: var(--ink);
    margin-top: 8px; letter-spacing: 0.05em;
  }

.counseling .desc {
    font-size: 16px; color: var(--ink);
    line-height: 2; letter-spacing: 0.02em;
    border-left: 1px solid var(--rule); padding-left: 48px;
  }

.counseling .price-block { text-align: right; white-space: nowrap; }

.counseling .price-block .amount {
    font-family: var(--font-serif);
    font-size: 52px; color: var(--pink-deep);
    font-weight: 500; line-height: 1; letter-spacing: 0.01em;
  }

.counseling .price-block .yen { font-size: 22px; margin-left: 2px; }

.counseling .price-block .tax {
    font-size: 12px; color: var(--ink-sub);
    margin-top: 8px; letter-spacing: 0.05em;
  }

.courses { background: var(--bg); padding: 80px 80px 100px; }

.courses .intro {
    font-size: 16px; color: var(--ink-sub);
    line-height: 2; margin: 0 0 48px;
    max-width: 780px; letter-spacing: 0.02em;
  }

/* .courses-table とそのレスポンシブ規則は common.css に集約(TOPと共有)。 */

.course-notes {
    margin-top: 48px;
    background: var(--pink-pale);
    padding: 36px 44px;
  }

.course-notes .heading {
    font-family: var(--font-serif);
    font-size: 17px; color: var(--pink-deep);
    font-weight: 500; letter-spacing: 0.15em; margin-bottom: 20px;
  }

.course-notes ul { margin: 0; padding: 0; list-style: none; }

.course-notes li {
    font-size: 15px; color: var(--ink);
    line-height: 2; padding: 6px 0 6px 24px;
    position: relative; letter-spacing: 0.02em;
  }

.course-notes li::before {
    content: ""; position: absolute;
    /* テキスト1行目の縦中央に合わせる: padding-top(6px) + 行高の半分(line-height:2 → 1em)
       − マーカー高さの半分(0.5px)。フォントが変わっても 1em 連動で追従。 */
    left: 0; top: calc(1em + 5.5px);
    width: 14px; height: 1px; background: var(--pink-deep);
  }

.course-notes .footnote {
    margin-top: 16px; padding-top: 16px;
    border-top: 1px dashed var(--pink);
    font-size: 13px; color: var(--ink-sub);
    line-height: 1.9; letter-spacing: 0.02em;
  }

.base-menu { background: var(--bg-alt); padding: 120px 80px; }

.base-menu .intro {
    font-size: 16px; color: var(--ink-sub);
    line-height: 2; margin: 0 0 48px;
    max-width: 780px; letter-spacing: 0.02em;
  }

.base-menu .grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 24px;
  }

.base-menu .card {
    background: var(--paper);
    border: 1px solid var(--rule);
    padding: 36px 36px 32px;
    display: flex; flex-direction: column;
  }

.base-menu .card-header { margin-bottom: 24px; }

.base-menu .card-title {
    font-family: var(--font-serif);
    font-size: 24px; color: var(--ink);
    font-weight: 500; letter-spacing: 0.05em; margin-bottom: 6px;
  }

.base-menu .card-sub {
    font-size: 13px; color: var(--ink-sub); letter-spacing: 0.08em;
  }

/* cells は中身ぶんの高さで固定。card 高さ揃えの余白は .foot を margin-top:auto で
   下に押すことで吸収するので、cells 内に空白が押し込まれない(値段の下の謎の余白防止)。 */
.base-menu .cells { display: flex; margin-bottom: 18px; }

.base-menu .cell {
    flex: 1;
    border: 1px solid var(--rule);
    border-left: none;
    padding: 18px 20px;
    background: var(--bg);
  }

.base-menu .cell:first-child { border-left: 1px solid var(--rule); }

.base-menu .cell-head {
    font-size: 14px; color: var(--ink);
    letter-spacing: 0.15em; margin-bottom: 10px;
  }

.base-menu .cell-value {
    font-family: var(--font-serif);
    font-size: 28px; color: var(--pink-deep);
    font-weight: 500; 
    line-height: 1; 
    letter-spacing: 0.02em;
    white-space: nowrap;
  }

.base-menu .cell-note {
    font-size: 11px; color: var(--ink-sub);
    margin-top: 8px; letter-spacing: 0.05em;
  }

.base-menu .foot {
    font-size: 13px; color: var(--ink-sub);
    line-height: 1.9; letter-spacing: 0.02em;
    margin-top: auto; /* card(flex column) の底に押す → cells 内に余白を残さない */
  }

.base-menu .foot.with-cancel { margin-bottom: 16px; }

.base-menu .cancel {
    background: var(--pink-pale);
    padding: 14px 18px;
    font-size: 12px; color: var(--ink);
    line-height: 1.9; letter-spacing: 0.02em;
  }

.base-menu .cancel-label {
    display: inline-block; color: var(--pink-deep);
    font-weight: 500; margin-right: 12px; letter-spacing: 0.1em;
  }

.base-menu .cancel-indent {
    padding-left: 88px; display: inline-block;
  }

.base-menu .general-notes {
    margin-top: 40px;
    background: var(--paper);
    border: 1px solid var(--rule);
    padding: 24px 32px;
    font-size: 14px; color: var(--ink);
    line-height: 2; letter-spacing: 0.02em;
  }

.base-menu .general-notes .row { display: block; }

.base-menu .general-notes .mark {
    color: var(--pink-deep); font-weight: 500; margin-right: 10px;
  }

.dogrun { background: var(--bg-alt); padding: 120px 80px; }

.dogrun .grid {
    display: grid; grid-template-columns: 1fr 1.2fr;
    gap: 80px; align-items: center;
  }

.dogrun .img-wrap {
    width: 100%; aspect-ratio: 5 / 4; overflow: hidden;
  }

.dogrun .img-wrap img {
    width: 100%; height: 100%; object-fit: cover;
  }

.dogrun .desc {
    font-size: 15px; color: var(--ink);
    line-height: 2; margin: 0 0 32px; letter-spacing: 0.02em;
  }

.dogrun .list { border-top: 1px solid var(--rule); }

.dogrun .item {
    display: grid; grid-template-columns: 1fr auto;
    padding: 20px 0; gap: 24px;
    border-bottom: 1px solid var(--rule);
    align-items: center;
  }

.dogrun .item-label {
    font-family: var(--font-serif);
    font-size: 20px; color: var(--ink);
    font-weight: 500; margin-bottom: 4px; letter-spacing: 0.04em;
  }

.dogrun .item-sub {
    font-size: 13px; color: var(--ink-sub); letter-spacing: 0.05em;
  }

.dogrun .item-price-block { text-align: right; }

.dogrun .item-price {
    font-family: var(--font-serif);
    font-size: 24px; color: var(--pink-deep);
    font-weight: 500; line-height: 1; letter-spacing: 0.02em;
  }

.dogrun .item-note {
    font-size: 12px; color: var(--ink-sub);
    margin-top: 6px; letter-spacing: 0.05em;
  }

.dogrun .closed-note {
    margin-top: 24px;
    font-size: 13px; color: var(--ink-sub);
    line-height: 1.9; letter-spacing: 0.02em;
  }

@media (max-width: 1199px) {
  .counseling { padding: 80px clamp(24px, 5vw, 80px) 48px; }
  .counseling .card { padding: 40px clamp(24px, 4vw, 56px); gap: 32px; }
  .counseling .desc { padding-left: 32px; }
  .counseling .price-block .amount { font-size: 44px; }
  .courses { padding: 64px clamp(24px, 5vw, 80px) 80px; }
  .base-menu { padding: 96px clamp(24px, 5vw, 80px); }
  .base-menu .grid { gap: 20px; }
  .dogrun { padding: 96px clamp(24px, 5vw, 80px); }
  .dogrun .grid { gap: 56px; }
}@media (max-width: 899px) {
  .hero .lead { font-size: 15px; line-height: 1.95; }
  .section-label h2 { font-size: 32px; }
  .counseling { padding: 60px 24px 36px; }
  .counseling .card {
      grid-template-columns: 1fr;
      padding: 32px 24px; gap: 24px;
    }
  .counseling .desc {
      border-left: none; padding-left: 0;
      border-top: 1px solid var(--rule); padding-top: 24px;
      font-size: 15px;
    }
  .counseling .price-block { text-align: left; }
  .counseling .price-block .amount { font-size: 40px; }
  .courses { padding: 48px 24px 80px; }
  .courses .intro { font-size: 15px; margin-bottom: 32px; }
  .course-notes { padding: 28px 24px; margin-top: 32px; }
  .course-notes li { font-size: 14px; }
  .base-menu { padding: 72px 24px; }
  .base-menu .grid { grid-template-columns: 1fr; gap: 18px; }
  .base-menu .card { padding: 28px 24px 24px; }
  .base-menu .card-title { font-size: 21px; }
  .base-menu .cell { padding: 14px 16px; }
  .base-menu .cell-value { font-size: 22px; }
  .base-menu .cancel-indent { padding-left: 0; }
  .base-menu .general-notes { padding: 20px 24px; font-size: 13px; }
  .dogrun { padding: 72px 24px; }
  .dogrun .grid { grid-template-columns: 1fr; gap: 36px; }
  .dogrun .item { grid-template-columns: 1fr; gap: 8px; padding: 16px 0; }
  .dogrun .item-price-block { text-align: left; }
  .dogrun .item-label { font-size: 18px; }
  .dogrun .item-price { font-size: 22px; }
}@media (max-width: 559px) {
  .hero { padding: 24px 16px 56px; } /* 上余白は page-head(トレーナー)と統一 */
  .hero .lead { font-size: 14px; }
  .section-label h2 { font-size: 26px; }
  .counseling { padding: 48px 16px 32px; }
  .counseling .card { padding: 28px 20px; }
  .counseling .title { font-size: 24px; }
  .counseling .price-block .amount { font-size: 36px; }
  .courses { padding: 40px 16px 64px; }
  .base-menu { padding: 56px 16px; }
  .base-menu .card { padding: 24px 20px 20px; }
  .dogrun { padding: 56px 16px; }
  .dogrun .grid { gap: 28px; }
}
