/* 同意欄の規約リンク。本文と同色・下線なしだと、押せることに気づけないため明示する */
.contact-form__hint a {
  color: inherit;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.contact-form__hint a:hover,
.contact-form__hint a:focus-visible {
  opacity: 0.7;
}

/* 補助欄。画面外に逃がす。display:none は使わない。
   画面幅に関係なく常に効く必要があるので、メディアクエリの外に置くこと。 */
.contact-form__aux {
  position: absolute !important;
  left: -9999px !important;
  top: auto !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
}

/* --------------------------------------------------
   File: site.responsive-subpages.css
   担当:
   - レスポンシブ上書き（主に max-width: 960px 付近）
   - サブページ共通スタイル
   - フッター / モバイル下部バー周辺
-------------------------------------------------- */

    .tt-net-no-overlay {
      animation: ttNetGlobeSlashPulse 1s ease-in-out infinite;
      transform-origin: center;
      transform-box: fill-box;
      transform: scale(1.06);
    }

    @keyframes ttNetGlobeSlashPulse {
      0%, 100% { opacity: 0.94; transform: scale(1.06); }
      16% { opacity: 1; transform: scale(1.16); }
      32% { opacity: 0.9; transform: scale(1.08); }
      48% { opacity: 1; transform: scale(1.18); }
      64% { opacity: 0.88; transform: scale(1.09); }
      82% { opacity: 0.98; transform: scale(1.14); }
    }

    @media (prefers-reduced-motion: reduce) {
      .tt-net-no-overlay {
        animation: none;
        opacity: 1;
      }
    }

    .tt-mail-icon,
    .tt-office-icon {
      animation: ttSoftIconPulse 2.6s ease-in-out infinite;
    }

    .tt-office-icon {
      animation-delay: 0.35s;
    }

    @keyframes ttSoftIconPulse {
      0%, 100% { opacity: 0.72; transform: translateY(0) rotate(0deg); }
      25% { opacity: 0.92; transform: translateY(-1px) rotate(-0.6deg); }
      50% { opacity: 1; transform: translateY(-1.8px) rotate(0.4deg); }
      75% { opacity: 0.9; transform: translateY(-0.8px) rotate(-0.3deg); }
    }

    .tt-other-dot {
      animation: ttOtherPulse 2s ease-in-out infinite;
    }

    .tt-other-dot.tt-o2 { animation-delay: 0.25s; }
    .tt-other-dot.tt-o3 { animation-delay: 0.5s; }

    @keyframes ttOtherPulse {
      0%, 100% { opacity: 0.25; transform: scale(0.9); }
      50% { opacity: 0.95; transform: scale(1); }
    }

    @media (prefers-reduced-motion: reduce) {
      .trouble-tile__viz * {
        animation: none !important;
      }
    }

    .trouble-tile:focus-visible {
      outline: 2px solid #1d1d1f;
      outline-offset: 2px;
      z-index: 1;
      position: relative;
      border-radius: var(--radius);
    }

    /* お悩み詳細モーダル */
    .trouble-modal {
      position: fixed;
      inset: 0;
      z-index: 100000;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
      box-sizing: border-box;
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      transition:
        opacity 0.38s cubic-bezier(0.25, 0.1, 0.25, 1),
        visibility 0.38s cubic-bezier(0.25, 0.1, 0.25, 1);
    }

    .trouble-modal.is-open {
      opacity: 1;
      visibility: visible;
      pointer-events: auto;
    }

    .trouble-modal-backdrop {
      position: absolute;
      inset: 0;
      margin: 0;
      padding: 0;
      border: none;
      width: 100%;
      height: 100%;
      background: rgba(0, 0, 0, 0);
      cursor: pointer;
      transition: background 0.38s cubic-bezier(0.25, 0.1, 0.25, 1);
      -webkit-tap-highlight-color: transparent;
    }

    .trouble-modal.is-open .trouble-modal-backdrop {
      background: rgba(0, 0, 0, 0.6);
    }

    .trouble-modal-panel {
      position: relative;
      z-index: 1;
      width: min(100%, var(--site-inner-800));
      max-height: min(88dvh, var(--site-inner-1720));
      display: flex;
      flex-direction: column;
      background: #fff;
      color: #262626;
      border-radius: var(--radius);
      box-shadow: var(--shadow-header);
      overflow: hidden;
      opacity: 0;
      transform: translateY(18px);
      transition:
        opacity 0.38s cubic-bezier(0.25, 0.1, 0.25, 1),
        transform 0.38s cubic-bezier(0.25, 0.1, 0.25, 1);
    }

    .trouble-modal.is-open .trouble-modal-panel {
      opacity: 1;
      transform: translateY(0);
    }

    .trouble-modal-header {
      flex-shrink: 0;
      display: flex;
      align-items: center;
      min-height: 48px;
      padding: 8px 8px 8px 4px;
      border-bottom: 1px solid rgba(0, 0, 0, 0.08);
      background: #fff;
    }

    .trouble-modal-back {
      display: inline-flex;
      align-items: center;
      gap: 2px;
      margin: 0;
      padding: 10px 12px;
      font: inherit;
      font-size: 1rem;
      font-weight: 500;
      letter-spacing: 0.02em;
      color: #262626;
      background: transparent;
      border: none;
      border-radius: var(--radius);
      cursor: pointer;
      transition: background 0.2s ease;
      -webkit-tap-highlight-color: transparent;
    }

    .trouble-modal-back:hover {
      background: rgba(0, 0, 0, 0.05);
    }

    .trouble-modal-back:focus-visible {
      outline: 2px solid #1d1d1f;
      outline-offset: 2px;
    }

    .trouble-modal-back-chevron {
      font-size: 1.35rem;
      font-weight: 400;
      line-height: 1;
      margin-right: 2px;
      opacity: 0.85;
    }

    .trouble-modal-scroll {
      flex: 1;
      min-height: 0;
      overflow: auto;
      padding: 32px 36px 40px;
      -webkit-overflow-scrolling: touch;
    }

    .trouble-modal .troubles-detail-layout {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 32px 40px;
      align-items: start;
    }

    .trouble-modal .troubles-detail-layout--text-only {
      grid-template-columns: 1fr;
    }

    .trouble-modal .troubles-detail-text {
      min-width: 0;
    }

    .trouble-modal .troubles-detail-title {
      margin: 0 0 24px;
      font-size: 1.25rem;
      font-weight: 700;
      text-align: left;
      letter-spacing: 0.02em;
      color: #262626;
    }

    .trouble-modal .troubles-detail-list {
      margin: 0;
      padding: 0;
    }

    .trouble-modal .troubles-detail-item {
      margin: 0 0 22px;
    }

    .trouble-modal .troubles-detail-item:last-child {
      margin-bottom: 0;
    }

    .trouble-modal .troubles-detail-item dt {
      margin: 0 0 8px;
      font-size: 0.8125rem;
      font-weight: 700;
      letter-spacing: 0.02em;
      color: #6e6e73;
    }

    .trouble-modal .troubles-detail-item dd {
      margin: 0;
      font-size: 0.9375rem;
      line-height: 1.65;
      letter-spacing: 0.02em;
      color: #262626;
      white-space: pre-line;
    }

    .trouble-modal .troubles-detail-visual {
      min-width: 0;
    }

    .trouble-modal .troubles-detail-placeholder {
      width: 100%;
      min-height: min(40vw, var(--site-inner-440));
      aspect-ratio: 1 / 1;
      max-height: var(--site-inner-720);
      margin: 0 auto;
      background: #ffffff;
      border-radius: var(--radius-photo);
      border: 1px solid rgba(0, 0, 0, 0.08);
    }

    .trouble-modal .troubles-detail-photos {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 24px;
      width: 100%;
      min-width: 0;
    }

    .trouble-modal .troubles-detail-photos--single {
      grid-template-columns: 1fr;
    }

    .trouble-modal .troubles-detail-photos[hidden] {
      display: none;
    }

    .trouble-modal .troubles-detail-photo {
      margin: 0;
      min-width: 0;
      border-radius: var(--radius-photo);
      border: none;
      overflow: hidden;
      background: #f5f5f7;
    }

    .trouble-modal .troubles-detail-photo img {
      display: block;
      width: 100%;
      height: auto;
      border-radius: inherit;
      object-fit: contain;
    }

    .trouble-modal .service-tile-modal__desc {
      margin: 0 0 1em;
      font-size: 0.9375rem;
      line-height: 1.75;
      letter-spacing: 0.02em;
      color: #262626;
    }

    .trouble-modal .service-tile-modal__desc:last-child {
      margin-bottom: 0;
    }

    .trouble-modal .service-tile-modal__desc + .troubles-detail-list {
      margin-top: 22px;
    }

    @media (prefers-reduced-motion: reduce) {
      .trouble-modal,
      .trouble-modal-backdrop,
      .trouble-modal-panel {
        transition-duration: 0.01ms !important;
      }

      .trouble-modal.is-open .trouble-modal-panel {
        transform: none;
      }
    }

    @media (max-width: 1200px) {
      body.page-index .hero-features {
        --hero-stage-inset-x: clamp(10px, 3vw, 16px);
        padding-block: clamp(27px, 5.3vw, 37px);
      }

      body.page-index .hero-features .container {
        width: min(
          calc(100% - 2 * var(--hero-stage-inset-x)),
          var(--hero-feature-max)
        );
        max-width: min(
          calc(100% - 2 * var(--hero-stage-inset-x)),
          var(--hero-feature-max)
        );
      }

      .hero-feature-tiles {
        --hero-feature-tiles-gap: clamp(11px, 1.67vw, 16px);
        grid-template-columns: repeat(2, var(--hero-feature-tile-max));
        justify-content: center;
        gap: var(--hero-feature-tiles-gap);
        width: min(
          100%,
          calc(2 * var(--hero-feature-tile-max) + var(--hero-feature-tiles-gap))
        );
        max-width: min(
          100%,
          calc(2 * var(--hero-feature-tile-max) + var(--hero-feature-tiles-gap))
        );
        margin-inline: auto;
      }

      .hero-feature-tile {
        width: var(--hero-feature-tile-max);
        max-width: 100%;
        justify-self: center;
        display: grid;
        grid-template-columns: none;
        grid-template-rows: 1fr 1fr;
        aspect-ratio: 1 / 1.7;
        min-height: 0;
        align-items: stretch;
      }

      @media (max-width: 640px) {
        .hero-feature-tiles {
          grid-template-columns: minmax(0, 1fr);
          gap: clamp(9px, 2.3vw, 13px);
          width: 100%;
          max-width: 100%;
        }

        .hero-feature-tile {
          width: 100%;
          max-width: none;
          justify-self: stretch;
          grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
          grid-template-rows: none;
          aspect-ratio: auto;
          min-height: max(50cqw, 16.5rem);
        }

        .hero-feature-tile__media {
          width: 100%;
          max-width: none;
          height: 100%;
          min-height: 0;
          align-self: stretch;
          padding: 6px;
        }

        .hero-feature-tile:nth-child(4) .hero-feature-tile__media img {
          object-position: right center;
        }

        .hero-feature-tile__body {
          flex: 1 1 auto;
          min-width: 0;
          padding: 9px;
          gap: 7px;
        }

        .hero-feature-tile__heading,
        .hero-feature-tile__heading-line:not(.hero-feature-tile__heading-line--sub) {
          font-size: 1.02rem;
        }

        .hero-feature-tile__eyebrow {
          font-size: 0.72rem;
        }

        .hero-feature-tile__desc {
          font-size: 0.72rem;
          gap: 7px;
        }

        .hero-feature-tile__btn {
          font-size: 0.78rem;
        }

        .hero-feature-tile__btn-icon {
          width: 16px;
          height: 16px;
        }
      }
    }

    @media (max-width: 960px) {
      body.page-index .hero-stage {
        --hero-stage-inset-x: clamp(
          calc(10px * var(--site-scale)),
          calc(3vw * var(--site-scale)),
          calc(16px * var(--site-scale))
        );
      }

      .hero {
        --hero-scale: 0.48;
        --hero-font-scale: 0.88;
        --hero-visual-scale: 1.04;
        --hero-min-height: clamp(
          calc(220px * var(--hero-visual-scale) * var(--site-scale)),
          calc(36vh * var(--hero-visual-scale)),
          calc(420px * var(--hero-visual-scale) * var(--site-scale))
        );
        --hero-strip-offset: clamp(
          calc(10px * var(--hero-scale)),
          calc(2.5vw * var(--hero-scale)),
          calc(20px * var(--hero-scale))
        );
        padding: var(--hero-strip-offset) 0;
        min-height: var(--hero-min-height);
      }

      .hero-text-strip {
        width: 100%;
        max-width: 100%;
      }

      /* 見出し・リード：帯の左端をヒーロー左端に揃える */
      .hero-text-strip .container {
        max-width: 100%;
        width: 100%;
        margin-inline: 0;
        padding-left: 0;
        padding-right: 0;
        --hero-inner-pad-x: clamp(
          calc(14px * var(--hero-scale, 0.52)),
          calc(3.2vw * var(--hero-scale, 0.52)),
          calc(20px * var(--hero-scale, 0.52))
        );
        --hero-inner-pad-y: calc(14px * var(--hero-scale, 0.52));
      }

      .hero-text-strip .hero-inner {
        padding: 0;
        max-width: 100%;
        width: 100%;
        margin-left: 0;
        margin-right: 0;
        margin-bottom: calc(0.35rem * var(--hero-scale, 0.52));
        transform: none;
        border-radius: 0;
        background-color: transparent;
      }

      .hero-text-strip .hero-title-box {
        display: block;
        width: fit-content;
        max-width: 100%;
        margin: 0;
      }

      .hero-text-strip .hero-title-row {
        gap: 0.35rem;
        margin: 0;
      }

      .hero-tagline {
        padding-top: calc(9px * var(--hero-scale, 0.48));
        padding-bottom: calc(9px * var(--hero-scale, 0.48));
        font-size: calc(0.9375rem * 1.3 * var(--hero-font-scale, 0.88));
        line-height: 1.38;
        white-space: normal;
        text-wrap: balance;
      }

      .hero-text-strip .hero-lead-box {
        max-width: 100%;
        width: fit-content;
        gap: calc(0.32em * var(--hero-scale, 0.52));
      }

      .hero-text-strip #hero-title {
        max-width: 100%;
        white-space: normal;
        text-wrap: balance;
        line-height: 1.28;
      }

      /* テキストボックス：帯の余白は .hero-text-strip、背景は .hero-inner */
      .hero-text-strip {
        margin-top: 0;
        --hero-text-strip-pad-y: clamp(
          calc(14px * var(--hero-scale, 0.52)),
          calc(3vw * var(--hero-scale, 0.52)),
          calc(22px * var(--hero-scale, 0.52))
        );
        padding-top: var(--hero-text-strip-pad-y);
        padding-bottom: var(--hero-text-strip-pad-y);
        margin-bottom: clamp(
          calc(6px * var(--hero-scale, 0.52)),
          calc(1.5vw * var(--hero-scale, 0.52)),
          calc(12px * var(--hero-scale, 0.52))
        );
      }

      .hero h1 {
        font-size: clamp(
          calc(1.755rem * var(--hero-font-scale, 0.88)),
          calc(5.46vw * var(--hero-font-scale, 0.88)),
          calc(2.6rem * var(--hero-font-scale, 0.88))
        );
        line-height: 1.26;
      }

      .hero-lead {
        font-size: calc(0.9375rem * 1.3 * var(--hero-font-scale, 0.88));
        line-height: 1.4;
      }

      .common-consult__panel {
        width: 100%;
        padding: 0;
      }

      .common-consult__heading {
        margin-bottom: clamp(10px, 3vw, 14px);
        font-size: clamp(1.05rem, 4.8vw, 1.35rem);
      }

      .common-consult-carousel {
        --common-consult-card-scale: 0.5;
        --common-consult-nav-size: 38px;
        --common-consult-slide-width: min(100%, 76vw);
        --common-consult-slide-height: 600px;
        --common-consult-media-height: 310px;
      }

      .common-consult-carousel__viewport {
        perspective: clamp(700px, 140vw, 1000px);
        padding-top: clamp(18px, 4vw, 28px);
        padding-bottom: clamp(48px, 10vw, 72px);
      }

      .common-consult-slide {
        flex-basis: var(--common-consult-slide-width);
        width: var(--common-consult-slide-width);
        grid-template-columns: 1fr;
        grid-template-areas:
          "eyebrow"
          "list"
          "media"
          "title"
          "lead";
        grid-template-rows: auto auto var(--common-consult-media-height) auto minmax(0, 1fr);
        align-items: start;
        gap: clamp(8px, 2.4vw, 12px);
        padding: clamp(8px, 2.4vw, 10px);
      }

      .common-consult-slide__media {
        grid-area: media;
        grid-column: auto;
        grid-row: auto;
      }

      .common-consult-slide__body {
        display: contents;
      }

      .common-consult-slide__list-zone {
        display: contents;
      }

      .common-consult-slide__title-zone {
        display: contents;
      }

      .common-consult-slide__eyebrow {
        grid-area: eyebrow;
        width: 100%;
        text-align: center;
      }

      .common-consult-slide__list {
        grid-area: list;
        margin-bottom: 0;
        font-size: clamp(0.875rem, 3.8vw, 0.9375rem);
        width: auto;
        max-width: 100%;
        margin-inline: auto;
        align-items: stretch;
      }

      .common-consult-slide__lead,
      .common-consult-slide__list li {
        text-align: left;
      }

      .common-consult-slide__list li {
        padding-left: 1em;
      }

      .common-consult-slide__list li::before {
        position: absolute;
        left: 0;
        top: 0;
      }

      .common-consult-slide__ba--single {
        display: grid;
        align-items: stretch;
        justify-content: stretch;
      }

      .common-consult-slide__ba--single .common-consult-slide__ba-item {
        grid-row: auto;
        align-self: auto;
        height: auto;
        min-height: 0;
        max-height: none;
      }

      .common-consult-slide__ba--single .common-consult-slide__photo {
        aspect-ratio: 4 / 3;
        height: auto;
      }

      .common-consult-slide__media {
        grid-area: media;
      }

      .common-consult-slide__title {
        grid-area: title;
        margin-top: 0;
        text-align: center;
      }

      .common-consult-slide__lead {
        grid-area: lead;
        margin-top: 0;
      }

      .common-consult-slide[data-offset="-1"] {
        transform: rotateY(16deg) scale(0.9) translateZ(-28px);
      }

      .common-consult-slide[data-offset="1"] {
        transform: rotateY(-16deg) scale(0.9) translateZ(-28px);
      }

      .common-consult-slide.is-common-consult-slide-active {
        transform: rotateY(0deg) scale(1) translateZ(32px);
      }

      .common-consult-slide__ba {
        --ba-photo-width: min(100%, clamp(200px, 52vw, 240px));
        --ba-overlap: clamp(-60px, -16vw, -46px);
        max-width: min(100%, clamp(220px, 60vw, 280px));
        margin-inline: auto;
        padding-inline: clamp(6px, 2vw, 12px);
        grid-template-rows: auto auto;
        gap: 0;
      }

      .common-consult-slide__ba-item {
        height: auto;
      }

      .common-consult-slide__ba-item--after {
        margin-top: var(--ba-overlap);
      }

      .common-consult-slide__ba--single .common-consult-slide__ba-item {
        grid-row: auto;
        height: auto;
      }

      .common-consult-slide__photo {
        aspect-ratio: 4 / 3;
        height: auto;
      }

      .common-consult-slide__ba-item--before {
        justify-self: start;
        transform: translateX(clamp(-6px, -2vw, -12px));
      }

      .common-consult-slide__ba-item--after {
        justify-self: end;
        transform: translateX(clamp(10px, 3vw, 20px));
      }

      .common-consult-slide__ba--single .common-consult-slide__ba-item {
        position: relative;
        top: auto;
        left: auto;
        transform: none;
        margin: 0;
        justify-self: center;
      }

      .common-consult-slide__title {
        font-size: clamp(1rem, 4.6vw, 1.15rem);
      }

      .common-consult-slide__lead,
      .common-consult-slide__list li {
        font-size: clamp(0.875rem, 3.8vw, 0.9375rem);
      }

      .common-consult-slide__lead {
        -webkit-line-clamp: 5;
        height: auto;
      }

      .troubles-heading-block {
        gap: clamp(12px, 3vw, 16px);
        padding: clamp(12px, 3.5vw, 16px) clamp(12px, 3.5vw, 18px)
          clamp(16px, 4vw, 24px);
        border-radius: var(--radius);
      }

      .troubles-heading-row {
        justify-content: center;
      }

      .service-flow-promo__grid {
        grid-template-columns: 1fr;
        gap: 14px;
      }

      .service-flow-promo__panel {
        padding: clamp(16px, 4vw, 22px) clamp(14px, 3.5vw, 18px);
      }

      .price-menu-cta__actions {
        gap: 12px;
        max-width: min(100%, 360px);
      }

      .price-menu-cta__btn {
        width: 100%;
        max-width: none;
      }

      .price-menu-cta__badge {
        font-size: 0.98rem;
        transform: translate(10%, -34%);
      }

      .faq__heading {
        margin-bottom: 20px;
      }

      .faq__inner {
        width: 100%;
        max-width: 100%;
      }

      .faq-item {
        margin-bottom: 20px;
      }

      .faq-q-card,
      .faq-a-card {
        padding: 14px 16px;
      }

      .faq-q-text {
        white-space: normal;
        flex: 1 1 auto;
      }

      .faq-toggle-icon {
        margin-left: auto;
      }

      .trouble-modal {
        padding: max(8px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));
      }

      .trouble-modal-panel {
        max-height: min(88dvh, 100%);
      }

      .trouble-modal-scroll {
        padding: 28px 32px 36px;
      }

      .trouble-modal .troubles-detail-title {
        margin-bottom: 24px;
        font-size: 1.125rem;
      }

      .trouble-modal .troubles-detail-item {
        margin-bottom: 24px;
      }

      .trouble-modal .troubles-detail-placeholder {
        min-height: 192px;
        max-height: min(400px, 55vw);
      }

      .trouble-modal .troubles-detail-layout {
        grid-template-columns: 1fr;
        gap: 32px;
      }

      .trouble-modal .troubles-detail-photos {
        grid-template-columns: 1fr;
      }

    }

    @media (min-width: 961px) {
      .troubles-heading-block {
        gap: 18px;
        padding-top: 17px;
        padding-bottom: clamp(22px, 2.8vw, 30px);
      }

      .trouble-modal-panel {
        width: min(100%, var(--site-inner-720));
      }

      .trouble-modal-scroll {
        padding: 36px 40px 48px;
      }

      .trouble-modal .troubles-detail-layout {
        gap: 28px 36px;
      }

      .trouble-modal .troubles-detail-placeholder {
        min-height: 320px;
        max-height: min(480px, 62dvh);
      }
    }

    /* サブページ共通 */
    .page-sub .subpage-main {
      padding: clamp(40px, 6vw, 72px) 0 clamp(56px, 8vw, 96px);
      background: var(--bg);
    }

    .subpage-hero {
      max-width: var(--site-inner-720);
      margin: 0 auto;
    }

    .subpage-title {
      margin: 0 0 clamp(12px, 2vw, 18px);
      font-size: clamp(1.35rem, 3.2vw, 1.85rem);
      font-weight: 700;
      line-height: 1.35;
      letter-spacing: 0.02em;
      color: #262626;
    }

    .subpage-lead {
      margin: 0 0 clamp(28px, 4vw, 40px);
      font-size: clamp(0.9375rem, 2vw, 1.0625rem);
      line-height: 1.8;
      color: #4a4a50;
    }

    .contact-line-promo {
      max-width: min(100%, var(--site-inner-720));
      margin: 0 auto clamp(20px, 3vw, 28px);
      padding: clamp(16px, 3vw, 22px);
      box-sizing: border-box;
      display: grid;
      gap: 14px;
      justify-items: center;
      text-align: center;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      background: #ffffff;
      box-shadow: var(--shadow-header);
    }

    .contact-line-promo__text {
      margin: 0;
      font-size: clamp(0.9rem, 2vw, 1rem);
      font-weight: 700;
      line-height: 1.7;
      color: #262626;
    }

    .contact-line-promo__btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      width: 100%;
      max-width: 320px;
      min-height: 48px;
      padding: 10px 18px;
      box-sizing: border-box;
      font-size: 0.9375rem;
      font-weight: 700;
      letter-spacing: 0.02em;
      text-decoration: none;
      color: #ffffff;
      background: #06c755;
      border: 1px solid #06c755;
      border-radius: var(--radius-button);
    }

    .contact-line-promo__btn img {
      width: 28px;
      height: 28px;
      object-fit: contain;
    }

    .contact-form {
      max-width: min(100%, var(--site-inner-720));
      margin: 0 auto;
      display: grid;
      gap: clamp(18px, 2.6vw, 24px);
      padding: clamp(18px, 3.2vw, 32px);
      box-sizing: border-box;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      background: #ffffff;
      box-shadow: var(--shadow-header);
    }

    .contact-form__field {
      margin: 0;
      padding: 0;
      border: 0;
      display: grid;
      gap: 8px;
    }

    .contact-form__field label,
    .contact-form__field legend,
    .contact-form__label {
      font-size: 0.9rem;
      font-weight: 700;
      line-height: 1.4;
      color: #262626;
    }

    .contact-form__req,
    .contact-form__opt {
      margin-left: 0.35em;
      font-size: 0.75em;
      font-weight: 700;
      letter-spacing: 0.04em;
    }

    .contact-form__req {
      color: #8a3a3a;
    }

    .contact-form__opt {
      color: #676970;
      font-weight: 500;
    }

    .contact-form__field input[type="text"],
    .contact-form__field input[type="email"],
    .contact-form__field input[type="tel"],
    .contact-form__field textarea {
      width: 100%;
      max-width: 100%;
      box-sizing: border-box;
      margin: 0;
      padding: 12px 14px;
      font: inherit;
      font-size: 1rem;
      line-height: 1.5;
      color: #262626;
      background: #ffffff;
      border: 1px solid var(--line);
      border-radius: var(--radius);
    }

    .contact-form__field textarea {
      min-height: 10em;
      resize: vertical;
    }

    .contact-form__field input:focus-visible,
    .contact-form__field textarea:focus-visible {
      outline: 2px solid #1d1d1f;
      outline-offset: 2px;
    }

    .contact-form__field--error input {
      border-color: #8a3a3a;
    }

    .contact-form__hint {
      margin: 0;
      font-size: 0.8125rem;
      line-height: 1.6;
      color: #676970;
    }

    .contact-form__file-input {
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
      border: 0;
    }

    .contact-form__file-btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      min-height: 48px;
      padding: 10px 16px;
      box-sizing: border-box;
      font-size: 0.9375rem;
      font-weight: 700;
      letter-spacing: 0.04em;
      color: #262626;
      background: #ffffff;
      border: 1px solid #1d1d1f;
      border-radius: var(--radius-button);
      cursor: pointer;
    }

    .contact-form__file-btn:hover,
    .contact-form__file-btn:focus-visible {
      background: #f7f7f8;
    }

    .contact-form__file-input:focus-visible + .contact-form__file-btn {
      outline: 2px solid #1d1d1f;
      outline-offset: 2px;
    }

    .contact-form__file-list {
      list-style: none;
      margin: 0;
      padding: 0;
      display: grid;
      gap: 8px;
    }

    .contact-form__file-list:empty {
      display: none;
    }

    .contact-form__file-item {
      display: grid;
      grid-template-columns: 48px minmax(0, 1fr) auto;
      align-items: center;
      gap: 10px;
      padding: 8px 10px;
      background: #fafafa;
      border: 1px solid var(--line);
      border-radius: var(--radius);
    }

    .contact-form__file-thumb {
      width: 48px;
      height: 48px;
      object-fit: cover;
      border-radius: 6px;
      background: #ececef;
    }

    .contact-form__file-name {
      min-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      font-size: 0.8125rem;
      font-weight: 500;
      line-height: 1.4;
      color: #424248;
    }

    .contact-form__file-remove {
      margin: 0;
      padding: 8px 10px;
      font: inherit;
      font-size: 0.8125rem;
      font-weight: 700;
      color: #4a4a50;
      background: #ffffff;
      border: 1px solid var(--line);
      border-radius: var(--radius-button);
      cursor: pointer;
    }

    .contact-form__file-btn[aria-disabled="true"] {
      cursor: default;
      color: #676970;
      background: #f7f7f8;
      border-color: var(--line);
    }

    .contact-form__photo-status {
      margin: 0;
      min-height: 1.5em;
      font-size: 0.8125rem;
      line-height: 1.5;
      color: #4a4a50;
    }

    .contact-form__error {
      margin: 0;
      min-height: 1.5em;
      font-size: 0.8125rem;
      font-weight: 700;
      line-height: 1.5;
      color: #8a3a3a;
      visibility: hidden;
    }

    .contact-form__error.is-visible {
      visibility: visible;
    }

    .contact-form__options--stack {
      display: grid;
      gap: 8px;
    }

    .contact-form__options--pair {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;
    }

    .contact-form__choice {
      display: flex;
      align-items: flex-start;
      gap: 10px;
      margin: 0;
      padding: 12px 14px;
      font-size: 0.9375rem;
      font-weight: 500;
      line-height: 1.5;
      color: #424248;
      background: #fafafa;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      cursor: pointer;
    }

    .contact-form__choice--btn {
      position: relative;
      align-items: center;
      justify-content: center;
      min-height: 52px;
      font-weight: 700;
      letter-spacing: 0.04em;
    }

    .contact-form__choice--btn input {
      position: absolute;
      inset: 0;
      margin: 0;
      width: 100%;
      height: 100%;
      opacity: 0;
      cursor: pointer;
    }

    .contact-form__choice:has(input:checked) {
      background: #f3f6fb;
      border-color: #1d1d1f;
    }

    .contact-form__choice input {
      margin-top: 0.2em;
      flex-shrink: 0;
    }

    .contact-form__agree {
      display: flex;
      align-items: flex-start;
      gap: 8px;
      font-size: 0.875rem;
      line-height: 1.65;
      color: #4a4a50;
    }

    .contact-form__agree input {
      margin-top: 0.3em;
    }

    .contact-form__status {
      margin: 0;
      min-height: 1.4em;
      font-size: 0.875rem;
      line-height: 1.6;
      color: #8a3a3a;
    }

    .contact-form__status.is-success {
      font-size: 1rem;
      font-weight: 700;
      color: #2f7a4d;
    }

    .contact-form__submit {
      width: 100%;
      min-height: 56px;
      padding: 14px 22px;
      font: inherit;
      font-size: 1.0625rem;
      font-weight: 700;
      letter-spacing: 0.06em;
      color: #ffffff;
      background: #1d1d1f;
      border: 1px solid #1d1d1f;
      border-radius: var(--radius-button);
      cursor: pointer;
    }

    .contact-form__submit:hover,
    .contact-form__submit:focus-visible {
      filter: brightness(1.08);
    }

    .contact-form__submit:focus-visible {
      outline: 2px solid #1d1d1f;
      outline-offset: 2px;
    }

    .services-page-categories {
      margin-top: clamp(16px, 2.8vw, 24px);
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: clamp(8px, 1.6vw, 12px);
      align-items: stretch;
    }

    .services-page-categories__btn {
      min-height: 44px;
      padding: 8px 10px;
      border: 1px solid var(--theme-sage-dark);
      border-radius: var(--radius-button);
      background: #ffffff;
      color: #262626;
      font-family: inherit;
      font-size: clamp(0.78rem, 1.4vw, 0.9rem);
      font-weight: 700;
      line-height: 1.2;
      letter-spacing: 0.01em;
      text-align: center;
      box-shadow: none;
      transition: box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
      cursor: pointer;
    }

    .services-page-categories__btn.is-active {
      background: color-mix(in srgb, var(--theme-sage-dark) 18%, #ffffff);
      border-color: var(--theme-sage-dark);
      box-shadow: none;
    }

    /* menu.html 専用：フルブリードで横はみ出しするがページ全体の横スクロールは出さない */
    html:has(body.page-menu-pricing),
    body.page-menu-pricing {
      overflow-x: clip;
      max-width: 100%;
    }

    .services-showcase {
      margin-top: clamp(28px, 5vw, 48px);
      width: 100vw;
      max-width: none;
      margin-left: calc(50% - 50vw);
      margin-right: calc(50% - 50vw);
      display: grid;
      gap: clamp(26px, 4.4vw, 40px);
    }

    .menu-pricing-notes {
      max-width: min(100%, var(--site-inner-820));
      margin: clamp(36px, 5vw, 52px) auto 0;
      display: grid;
      gap: clamp(16px, 2.4vw, 22px);
    }

    .menu-pricing-notes .menu-pricing-policy {
      max-width: none;
      margin: 0;
    }

    .menu-pricing-policy {
      max-width: min(100%, var(--site-inner-820));
      margin: clamp(36px, 5vw, 52px) auto 0;
      padding: clamp(18px, 3vw, 24px) clamp(16px, 3vw, 28px);
      box-sizing: border-box;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      background: #ffffff;
      box-shadow: var(--shadow-header);
    }

    .menu-pricing-policy__heading {
      margin: 0 0 clamp(10px, 1.8vw, 14px);
      font-size: clamp(1rem, 2.2vw, 1.125rem);
      font-weight: 700;
      line-height: 1.4;
      letter-spacing: 0.02em;
      color: #262626;
    }

    .menu-pricing-policy__text {
      margin: 0;
      font-size: clamp(0.9375rem, 1.9vw, 1.02rem);
      line-height: 1.85;
      color: #4a4a50;
    }

    .menu-pricing-policy__text + .menu-pricing-policy__text {
      margin-top: 0.85em;
    }

    /* menu.html：パネル全体は軽いスライドのみ（写真は別でゆっくりフェード） */
    @keyframes servicePanelFadeIn {
      from {
        transform: translateY(10px);
      }
      to {
        transform: translateY(0);
      }
    }

    @keyframes serviceMenuBoardFadeIn {
      from {
        opacity: 0;
      }
      to {
        opacity: 1;
      }
    }

    @keyframes serviceMenuPhotoFadeIn {
      from {
        opacity: 0;
      }
      to {
        opacity: 1;
      }
    }

    @keyframes serviceMenuPhotoFadeInMobile {
      from {
        opacity: 0;
      }
      to {
        opacity: 0.8;
      }
    }

    .service-block {
      position: relative;
      min-height: clamp(228px, 30vw, 310px);
      display: none;
      align-items: center;
      justify-content: center;
      padding: clamp(12px, 1.8vw, 18px) 0;
      background: #f7f7f8;
      overflow: visible;
    }

    .service-block.is-active {
      display: flex;
      animation: servicePanelFadeIn 0.45s ease-out;
    }

    .service-block.is-active .service-block__board {
      animation: serviceMenuBoardFadeIn 0.55s ease-out both;
    }

    .service-block.is-active .service-block__visual {
      animation: serviceMenuPhotoFadeIn 1.15s ease-out 0.18s both;
    }

    .service-block__board {
      position: relative;
      z-index: 2;
      width: clamp(368px, 48vw, 540px);
      margin: 0 auto;
      min-height: clamp(460px, 52vw, 680px);
      background: #ffffff;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      box-shadow: var(--shadow-header);
      padding: clamp(14px, 2.2vw, 22px);
      display: grid;
      gap: 10px;
      align-content: start;
    }

    .service-block__board--price-table {
      width: clamp(560px, 72vw, 880px);
      min-height: 0;
    }

    .service-price-table-wrap {
      width: 100%;
      overflow-x: auto;
    }

    .service-price-table {
      width: 100%;
      border-collapse: collapse;
      table-layout: auto;
    }

    .service-price-table th,
    .service-price-table td {
      margin: 0;
      padding: 7px 8px;
      border-bottom: 1px dashed rgba(0, 0, 0, 0.14);
      vertical-align: baseline;
    }

    .service-price-table thead th {
      font-size: clamp(0.8rem, 1.5vw, 0.9rem);
      font-weight: 700;
      line-height: 1.4;
      color: #262626;
      text-align: right;
      white-space: nowrap;
      border-bottom: 1px solid var(--line);
    }

    .service-price-table thead th:first-child,
    .service-price-table tbody th {
      text-align: left;
    }

    .service-price-table tbody th {
      font-size: clamp(0.8125rem, 1.55vw, 0.9rem);
      font-weight: 500;
      line-height: 1.45;
      color: #424248;
    }

    .service-price-table td {
      font-size: clamp(0.8125rem, 1.55vw, 0.9375rem);
      font-weight: 700;
      line-height: 1.4;
      color: #262626;
      text-align: right;
      white-space: nowrap;
    }

    .service-price-table tbody tr:last-child th,
    .service-price-table tbody tr:last-child td {
      border-bottom: none;
      padding-bottom: 0;
    }

    .service-price-table-note {
      margin: 8px 2px 0;
      font-size: clamp(0.75rem, 1.4vw, 0.8125rem);
      font-weight: 500;
      line-height: 1.55;
      color: #676970;
    }

    .service-price-acc {
      display: none;
    }

    .service-block__title {
      margin: 0;
      font-size: clamp(1.05rem, 2vw, 1.2rem);
      font-weight: 700;
      line-height: 1.35;
      color: #262626;
    }

    .service-block__title-hint {
      display: none;
    }

    .service-block__price-list {
      margin: 0;
      display: grid;
      gap: 8px;
    }

    .service-block__price-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 8px 12px;
      align-items: baseline;
      padding-bottom: 6px;
      border-bottom: 1px dashed rgba(0, 0, 0, 0.14);
    }

    .service-block__price-row:last-child {
      border-bottom: none;
      padding-bottom: 0;
    }

    .service-block__price-row dt,
    .service-block__price-row dd {
      margin: 0;
    }

    .service-block__price-row dt {
      font-size: clamp(0.875rem, 1.65vw, 0.9375rem);
      line-height: 1.55;
      color: #424248;
    }

    .service-block__price-row dd {
      font-size: clamp(0.92rem, 1.75vw, 1.02rem);
      font-weight: 700;
      line-height: 1.4;
      color: #262626;
      white-space: nowrap;
    }

    .service-block__price-row--setup-note dd {
      white-space: normal;
      text-align: right;
    }

    .service-block__visual {
      position: absolute;
      top: 0;
      bottom: 0;
      z-index: 1;
      margin: 0;
      /* 左右座標で領域を作り、端から中央まで必ず伸ばす */
      left: auto;
      right: auto;
      width: auto;
      min-height: 100%;
      overflow: hidden;
      box-shadow: var(--shadow-header);
    }

    .service-block__visual img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      transform: scale(1.34);
      display: block;
    }

    .service-block--image-right .service-block__visual {
      left: 44%;
      right: calc(50% - 50vw - 64px);
      transform: none;
    }

    .service-block--image-right .service-block__visual img {
      object-position: right center;
      transform-origin: right center;
    }

    .service-block--image-left .service-block__visual {
      right: 44%;
      left: calc(50% - 50vw - 64px);
      transform: none;
    }

    .service-block--image-left .service-block__visual img {
      object-position: left center;
      transform-origin: left center;
    }

    /* 左上を見せたい写真（Mac など）— object-fit: cover の基準点 */
    .service-block--image-left .service-block__visual--focus-top-left img {
      object-position: left top;
      transform-origin: left top;
    }

    .service-block--tiles {
      min-height: clamp(360px, 40vw, 480px);
      padding: clamp(20px, 3.2vw, 32px) 0;
    }

    .service-block--tiles .service-block__visual,
    .service-block--full-bg .service-block__visual {
      left: 0;
      right: 0;
    }

    .service-block--tiles .service-block__visual img {
      object-position: left top;
      transform-origin: left top;
    }

    .service-block--full-bg .service-block__visual img {
      object-position: center;
      transform-origin: center;
    }

    .service-block--tiles.is-active .service-block__tiles-wrap {
      animation: serviceMenuBoardFadeIn 0.55s ease-out both;
    }

    .service-block__tiles-wrap {
      position: relative;
      z-index: 2;
      width: min(calc(100% - 2 * var(--header-pad-x)), var(--site-content-max));
      margin: 0 auto;
      display: grid;
      gap: clamp(12px, 2vw, 16px);
    }

    .service-block__title-card {
      width: fit-content;
      max-width: 100%;
      margin: 0;
      padding: clamp(10px, 1.6vw, 14px) clamp(14px, 2.2vw, 20px);
      background: #ffffff;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      box-shadow: var(--shadow-header);
    }

    .service-tiles {
      margin: 0;
      padding: 0;
      list-style: none;
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: clamp(10px, 1.8vw, 16px);
      align-items: stretch;
      max-width: 100%;
    }

    .service-tiles > li {
      min-width: 0;
      display: flex;
      justify-content: center;
    }

    .service-tile {
      display: grid;
      place-items: center;
      width: 100%;
      aspect-ratio: 1 / 1;
      height: auto;
      align-self: start;
      margin: 0;
      padding: clamp(16px, 2.2vw, 22px) clamp(12px, 1.8vw, 16px);
      appearance: none;
      -webkit-appearance: none;
      font: inherit;
      color: inherit;
      background: #ffffff;
      border: 1px solid var(--theme-sage-dark);
      border-radius: var(--radius-button);
      box-shadow: none;
      text-align: center;
      cursor: pointer;
      transition: box-shadow 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
    }

    .service-tile:not(.service-tile--soon):hover,
    .service-tile:not(.service-tile--soon):focus-visible {
      box-shadow: none;
      border-color: var(--theme-sage-dark);
      background: color-mix(in srgb, var(--theme-sage-dark) 10%, #ffffff);
    }

    .service-tile:not(.service-tile--soon):focus-visible {
      outline: 2px solid #1d1d1f;
      outline-offset: 2px;
    }

    .service-tile--has-photo {
      position: relative;
      overflow: hidden;
      background: #e8e8ed;
    }

    .service-tile__photo {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center;
      pointer-events: none;
    }

    .service-tile__photo--top {
      object-position: top center;
    }

    .service-tile--has-photo .service-tile__title {
      position: relative;
      z-index: 1;
      padding: 0.35em 0.55em;
      background: rgba(255, 255, 255, 0.88);
      border: 1px solid var(--theme-sage-dark);
      border-radius: var(--radius-button);
    }

    .service-tile__title {
      margin: 0;
      font-size: clamp(0.92rem, 1.7vw, 1.05rem);
      font-weight: 700;
      line-height: 1.4;
      letter-spacing: 0.02em;
      color: #262626;
    }

    .service-tile--soon {
      background: #f3f3f5;
      border-style: dashed;
      box-shadow: none;
      cursor: default;
    }

    .service-tile--soon .service-tile__title {
      color: #676970;
    }

    @media (prefers-reduced-motion: reduce) {
      .service-block.is-active {
        animation: none;
      }

      .service-block.is-active .service-block__board,
      .service-block.is-active .service-block__visual,
      .service-block--tiles.is-active .service-block__tiles-wrap {
        animation: none;
        opacity: 1;
      }
    }

    @media (prefers-reduced-motion: reduce) and (max-width: 960px) {
      .service-block.is-active .service-block__visual {
        opacity: 0.8;
      }
    }

    .subpage-foot-nav {
      margin-top: clamp(36px, 6vw, 52px);
      padding-top: 24px;
      border-top: 1px solid var(--line);
      font-size: 0.9rem;
    }

    .subpage-foot-nav a {
      text-decoration: underline;
      text-underline-offset: 3px;
    }

    .shipping-check-card {
      border: 1px solid var(--line);
      border-radius: var(--radius);
      background: #ffffff;
      box-shadow: var(--shadow-header);
      padding: clamp(16px, 2.4vw, 22px);
    }

    .shipping-check-list {
      margin: 0;
      padding: 0;
      list-style: none;
      display: grid;
      gap: 10px;
    }

    .shipping-check-list__item {
      position: relative;
      padding-left: 1.25em;
      font-size: clamp(0.9rem, 1.7vw, 0.98rem);
      line-height: 1.7;
      color: #4a4a50;
    }

    .shipping-check-list__item::before {
      content: "・";
      position: absolute;
      left: 0;
      top: 0;
      color: #0d6ebd;
      font-weight: 700;
    }

    .site-footer {
      padding: clamp(28px, 4.5vw, 44px) 0 max(28px, env(safe-area-inset-bottom));
      background: var(--footer-bg);
      color: var(--footer-text);
    }

    .site-footer__inner {
      display: grid;
      gap: clamp(20px, 3.2vw, 28px);
    }

    .site-footer__top {
      position: relative;
      display: grid;
      grid-template-columns: 1fr 1fr;
      align-items: start;
      column-gap: clamp(16px, 3vw, 32px);
      row-gap: 12px;
    }

    .site-footer__top::before {
      content: "";
      position: absolute;
      top: 0;
      bottom: 0;
      left: 50%;
      width: 1px;
      background: var(--footer-line);
      transform: translateX(-50%);
      pointer-events: none;
    }

    .site-footer__name {
      margin: 0 0 8px;
      font-size: clamp(1rem, 2.2vw, 1.125rem);
      font-weight: 700;
      letter-spacing: 0.03em;
      color: var(--footer-text);
    }

    .site-footer__name-en {
      margin-left: 0.45em;
      font-size: 0.82em;
      font-weight: 600;
      letter-spacing: 0.04em;
      color: var(--footer-text-muted);
    }

    .site-footer__meta {
      margin: 0 0 0.2em;
      font-size: 0.875rem;
      line-height: 1.7;
      color: var(--footer-text-muted);
    }

    .site-footer__meta:last-child {
      margin-bottom: 0;
    }

    .site-footer__sitemap {
      padding: 0;
      border-top: none;
      justify-self: start;
    }

    .site-footer__sitemap-list {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 6px;
      margin: 0;
      padding: 0;
      list-style: none;
    }

    .site-footer__sitemap a {
      color: var(--footer-text);
      font-size: 0.875rem;
      font-weight: 600;
      letter-spacing: 0.02em;
      text-decoration: none;
    }

    .site-footer__sitemap a:hover,
    .site-footer__legal a:hover {
      text-decoration: underline;
    }

    .site-footer a:focus-visible {
      outline: 2px solid var(--footer-text);
      outline-offset: 2px;
    }

    .site-footer__legal {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      align-items: center;
      gap: 6px 8px;
      padding-top: 4px;
      border-top: 1px solid var(--footer-line);
      font-size: 0.8125rem;
      line-height: 1.6;
    }

    .site-footer__legal a {
      color: var(--footer-text-muted);
      text-decoration: none;
    }

    .site-footer__legal-sep {
      color: var(--footer-text-faint);
    }

    .site-footer__copy {
      margin: 0;
      font-size: 0.8125rem;
      color: var(--footer-text-faint);
      line-height: 1.6;
      letter-spacing: 0.02em;
      text-align: center;
    }

    .legal-doc {
      max-width: 42rem;
      margin: 0 auto;
      padding-bottom: 12px;
    }

    .legal-doc__note {
      margin: 0 0 1.5rem;
      padding: 12px 14px;
      background: #f5f5f7;
      border-radius: var(--radius-button);
      font-size: 0.875rem;
      line-height: 1.7;
      color: #444444;
    }

    .legal-doc h2 {
      margin: 1.75rem 0 0.6rem;
      font-size: 1rem;
      font-weight: 700;
      letter-spacing: 0.04em;
      color: #262626;
    }

    .legal-doc p,
    .legal-doc li {
      margin: 0 0 0.85rem;
      font-size: 0.9375rem;
      line-height: 1.85;
      color: #333333;
    }

    .legal-doc ul {
      margin: 0 0 1rem;
      padding-left: 1.2em;
    }

    .legal-doc dl {
      margin: 0;
    }

    .legal-doc dt {
      margin: 1.15rem 0 0.25rem;
      font-size: 0.8125rem;
      font-weight: 700;
      letter-spacing: 0.06em;
      color: #6e6e73;
    }

    .legal-doc dd {
      margin: 0;
      font-size: 0.9375rem;
      line-height: 1.8;
      color: #333333;
    }

    .legal-doc dd ul {
      margin: 0.35em 0 0;
    }

    .legal-doc a,
    .faq-a-text a {
      color: #262626;
      text-decoration: underline;
      text-underline-offset: 0.18em;
    }

.mobile-action-bar {
  display: none; /* デフォルトは非表示（PC） */
}

@media (max-width: 960px) {
      .services-page-categories {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .service-block,
      .service-block--image-left {
        min-height: clamp(260px, 62vw, 420px);
        padding: 0;
      }

      .service-block--tiles {
        min-height: 0;
        padding: clamp(16px, 4vw, 24px) 0;
      }

      .service-block.is-active {
        display: block;
      }

      .service-block--tiles.is-active {
        display: flex;
      }

      .service-tiles {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-items: stretch;
        gap: 12px;
        max-width: min(100%, 420px);
        margin-inline: auto;
      }

      .service-block.is-active .service-block__visual {
        animation-name: serviceMenuPhotoFadeInMobile;
      }

      .service-block__visual {
        position: absolute;
        inset: 0;
        left: 0;
        right: 0;
        width: 100%;
        min-height: 100%;
        transform: none;
        opacity: 0.8;
        box-shadow: none;
      }

      .service-block--image-right .service-block__visual,
      .service-block--image-left .service-block__visual {
        left: 0;
        right: 0;
        transform: none;
      }

      .service-block__visual img {
        transform: scale(1.08);
        object-position: center;
        transform-origin: center;
      }

      .service-block__visual--focus-top-left img {
        object-position: left top;
        transform-origin: left top;
      }

      .service-block__board {
        width: min(100% - calc(24px * var(--site-scale)), var(--site-inner-560));
        min-height: clamp(330px, 68vw, 480px);
        margin: clamp(12px, 3vw, 16px) auto;
        background: rgba(255, 255, 255, 0.94);
      }

      .service-block__board--price-table {
        width: min(100% - calc(24px * var(--site-scale)), var(--site-content-max));
        min-height: 0;
      }

      .service-block__board--price-table:has(.service-price-acc) .service-price-table-wrap {
        display: none;
      }

      .service-price-acc {
        display: grid;
      }

      .service-block__title-hint {
        display: inline;
        margin-left: 0.35em;
        font-size: 0.78em;
        font-weight: 500;
        letter-spacing: 0.02em;
        color: #676970;
      }

      .service-price-acc__item {
        border-bottom: 1px dashed rgba(0, 0, 0, 0.14);
      }

      .service-price-acc__item:last-child {
        border-bottom: none;
      }

      .service-price-acc__summary {
        position: relative;
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 6px 10px;
        align-items: start;
        padding: 12px 26px 12px 2px;
        cursor: pointer;
        list-style: none;
      }

      .service-price-acc__summary::-webkit-details-marker {
        display: none;
      }

      .service-price-acc__summary::after {
        content: "";
        position: absolute;
        top: 1.05em;
        right: 4px;
        width: 7px;
        height: 7px;
        border-right: 1.5px solid #676970;
        border-bottom: 1.5px solid #676970;
        transform: rotate(45deg);
        pointer-events: none;
      }

      .service-price-acc__item[open] .service-price-acc__summary::after {
        top: 1.2em;
        transform: rotate(225deg);
      }

      .service-price-acc__summary:focus-visible {
        outline: 2px solid #1d1d1f;
        outline-offset: 2px;
        border-radius: 4px;
      }

      .service-price-acc__name {
        font-size: 0.875rem;
        font-weight: 500;
        line-height: 1.45;
        color: #424248;
      }

      .service-price-acc__total {
        font-size: 0.875rem;
        font-weight: 700;
        line-height: 1.4;
        color: #262626;
        text-align: right;
      }

      .service-price-acc__detail {
        margin: 0;
        padding: 0 26px 12px 2px;
        display: grid;
        gap: 6px;
      }

      .service-price-acc__row {
        display: grid;
        grid-template-columns: 4.5em minmax(0, 1fr);
        gap: 8px 12px;
        align-items: baseline;
      }

      .service-price-acc__row dt {
        margin: 0;
        font-size: 0.75rem;
        font-weight: 500;
        line-height: 1.45;
        color: #676970;
      }

      .service-price-acc__row dd {
        margin: 0;
        font-size: 0.8125rem;
        font-weight: 700;
        line-height: 1.4;
        color: #262626;
        text-align: right;
      }
  /* 余白はフッター側で確保するため body には足さない */
  body {
    padding-bottom: 0;
  }
}

/* LINE / フォーム固定バー：ヘッダーが MENU になる幅（1200px以下）で出す */
@media (max-width: 1200px) {
  .mobile-action-bar {
    display: block;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 1000;
    box-sizing: border-box;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-top: none;
    padding: 0 max(12px, env(safe-area-inset-right))
      calc(12px + env(safe-area-inset-bottom))
      max(12px, env(safe-area-inset-left));
    box-shadow: none;
    pointer-events: none;
  }

  .mobile-action-bar__inner {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 10px;
    width: 100%;
    max-width: min(100%, var(--site-content-max));
    margin-inline: auto;
    border: none;
    border-radius: 0;
    box-shadow: none;
    overflow: visible;
    background: transparent;
    pointer-events: auto;
  }

  .mobile-action-bar__btn {
    flex: 1;
    min-width: 0;
    min-height: 52px;
    height: auto;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: clamp(6px, 2vw, 10px);
    padding: 10px clamp(10px, 3vw, 14px);
    border: none;
    border-radius: var(--radius-button);
    font-size: clamp(0.8125rem, 3vw, 0.875rem);
    font-weight: 700;
    text-decoration: none;
    color: #ffffff;
    box-shadow: var(--shadow-header);
    transition:
      background-color 0.2s ease,
      filter 0.2s ease,
      box-shadow 0.2s ease,
      transform 0.15s ease;
  }

  .mobile-action-bar__icon {
    flex-shrink: 0;
    width: clamp(28px, 8vw, 32px);
    height: clamp(28px, 8vw, 32px);
    object-fit: contain;
  }

  .mobile-action-bar__label {
    min-width: 0;
    text-align: center;
    line-height: 1.3;
    letter-spacing: 0.02em;
  }

  .mobile-action-bar__btn--line {
    background: var(--line-cta);
  }

  .mobile-action-bar__btn--form {
    background: #ffffff;
    color: #262626;
    border: 1px solid var(--line);
  }

  .mobile-action-bar__btn:active {
    transform: translateY(1px);
  }

  .mobile-action-bar__btn:focus-visible {
    outline: 2px solid #1d1d1f;
    outline-offset: 2px;
    z-index: 1;
  }

  .site-footer {
    padding-bottom: calc(76px + env(safe-area-inset-bottom));
  }

  body {
    padding-bottom: 0;
  }
}

