@charset "utf-8";

/* =========================================================
   Spacing utilities
========================================================= */
.u-pb10 {
  padding-bottom: 10px;
}
.u-pb15 {
  padding-bottom: 15px;
}
.u-pb20 {
  padding-bottom: clamp(10px, var(--px-20), 20px);
}
.u-pb30 {
  padding-bottom: clamp(15px, var(--px-30), 30px);
}
.u-pb40 {
  padding-bottom: clamp(20px, var(--px-40), 40px);
}
.u-pb50 {
  padding-bottom: clamp(25px, var(--px-50), 50px);
}
.u-pb60 {
  padding-bottom: clamp(30px, var(--px-60), 60px);
}
.u-pb70 {
  padding-bottom: clamp(30px, var(--px-70), 70px);
}
.u-pb80 {
  padding-bottom: clamp(40px, var(--px-80), 80px);
}
.u-pb90 {
  padding-bottom: clamp(40px, var(--px-90), 90px);
}
.u-pb100 {
  padding-bottom: clamp(50px, var(--px-100), 100px);
}
.u-pb120 {
  padding-bottom: clamp(50px, var(--px-120), 120px);
}
.u-mb10 {
  margin-bottom: 10px;
}
.u-mb15 {
  margin-bottom: 15px;
}
.u-mb20 {
  margin-bottom: clamp(10px, var(--px-20), 20px);
}
.u-mb30 {
  margin-bottom: clamp(15px, var(--px-30), 30px);
}
.u-mb40 {
  margin-bottom: clamp(20px, var(--px-40), 40px);
}
.u-mb50 {
  margin-bottom: clamp(25px, var(--px-50), 50px);
}
.u-mb60 {
  margin-bottom: clamp(30px, var(--px-60), 60px);
}
.u-mb70 {
  margin-bottom: clamp(30px, var(--px-70), 70px);
}
.u-mb80 {
  margin-bottom: clamp(40px, var(--px-80), 80px);
}
.u-mb90 {
  margin-bottom: clamp(40px, var(--px-90), 90px);
}
.u-mb100 {
  margin-bottom: clamp(50px, var(--px-100), 100px);
}
.u-mb120 {
  margin-bottom: clamp(50px, var(--px-120), 120px);
}

/* =========================================================
   c-sec-title — セクション見出し
   和文（前面・小）に欧文（背面・大 / --c-en）を負マージンで重ねる。
   --center は和欧を中央でスタック（CONTACTバナー用）。
========================================================= */
.c-sec-title {
  display: inline-flex;
  align-items: flex-start;
  font-family: var(--f-mincho);
  font-weight: 400;
  line-height: 1.3;
  white-space: nowrap;
}
.c-sec-title__ja {
  position: relative;
  z-index: 2;
  margin-right: max(-92px, -6.3889vw);
  font-size: clamp(22px, 2.5vw, 36px);
  letter-spacing: 0.06em;
}
.c-sec-title__en {
  position: relative;
  z-index: 1;
  color: var(--c-en);
  font-size: clamp(40px, 4.4444vw, 64px);
  letter-spacing: 0.06em;
}
.c-sec-title--center {
  display: grid;
  justify-content: center;
  place-items: center;
}
.c-sec-title--center .c-sec-title__ja,
.c-sec-title--center .c-sec-title__en {
  grid-area: 1 / 1;
  margin-right: 0;
}

/* =========================================================
   c-btn — 矢印つきボタン
========================================================= */
.c-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(12px, 1.3889vw, 20px);
  width: clamp(220px, 18.4722vw, 266px);
  min-height: clamp(56px, 5.0694vw, 73px);
  padding: 10px clamp(14px, 1.25vw, 18px);
  color: #fff;
  /* ホバーは「左から明るいネイビーがワイプして入る」。
     背景を2倍幅のグラデーションにして background-position だけ動かすので、
     再レイアウトも再ペイントの負荷もほぼ無い。
     擬似要素を使わないので <a> でも <input type="submit"> でも同じ書き方ができる。 */
  background-color: var(--c-navy);
  background-image: linear-gradient(
    to right,
    var(--c-navy-hover) 0 50%,
    var(--c-navy) 50% 100%
  );
  background-size: 200% 100%;
  background-position: 100% 0;
  transition:
    background-position 0.45s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow 0.3s ease;
}
/* common.css の a:hover{opacity:.6} を打ち消す（クラス2つで詳細度が勝つ） */
.c-btn:hover,
.c-btn:focus-visible {
  opacity: 1;
  background-position: 0 0;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.28);
}
.c-btn:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}
.c-btn:hover .c-btn__arrow,
.c-btn:focus-visible .c-btn__arrow {
  transform: translateX(6px);
}
.c-btn__label {
  font-family: var(--f-mincho);
  font-size: clamp(14px, 1.0417vw, 15px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.c-btn__arrow {
  flex-shrink: 0;
  width: clamp(32px, 3.125vw, 45px);
  height: auto;
  transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
}

/* =========================================================
   c-tel — 電話番号ボタン（ヘッダー / フッター）
========================================================= */
.c-tel {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  gap: 5px;
  padding: 10px;
  color: #fff;
  background-color: var(--c-tel);
  background-image: linear-gradient(
    to right,
    var(--c-tel-hover) 0 50%,
    var(--c-tel) 50% 100%
  );
  background-size: 200% 100%;
  background-position: 100% 0;
  transition: background-position 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.c-tel:hover,
.c-tel:focus-visible {
  opacity: 1;
  background-position: 0 0;
}
.c-tel:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}
.c-tel__icon {
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.c-tel:hover .c-tel__icon,
.c-tel:focus-visible .c-tel__icon {
  transform: scale(1.12);
}
.c-tel__icon {
  flex-shrink: 0;
  width: clamp(20px, 1.6667vw, 24px);
  height: clamp(20px, 1.6667vw, 24px);
}
.c-tel__num {
  font-weight: 700;
  font-size: clamp(16px, 1.3889vw, 20px);
  letter-spacing: 0.09em;
  line-height: 1.4;
  white-space: nowrap;
}

/* =========================================================
   c-news-item — 新着情報の1行（TOP / 新着情報ページ共通）
   日付枠の罫は currentColor なので、暗い背景でも白パネル上でも成立する。
========================================================= */
.c-news-item__link {
  display: flex;
  align-items: center;
  gap: clamp(12px, var(--px-26), 26px);
  width: fit-content;
}
.c-news-item__date {
  flex-shrink: 0;
  padding: 10px;
  border: 1px solid currentColor;
  font-size: clamp(13px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.4;
  white-space: nowrap;
}
.c-news-item__text {
  font-size: clamp(14px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.6;
  /* 下線は擬似要素ではなく背景グラデーションで引く。
     こうすると background-size だけで伸縮でき、文字が折り返しても破綻しない。 */
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 1px;
  transition: background-size 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.c-news-item__date {
  transition:
    background-color 0.35s ease,
    border-color 0.35s ease;
}
.c-news-item__link:hover .c-news-item__text,
.c-news-item__link:focus-visible .c-news-item__text {
  background-size: 100% 1px;
}
/* 日付枠は currentColor を薄く敷く。暗い背景でも白パネル上でも自動で馴染む。 */
.c-news-item__link:hover .c-news-item__date,
.c-news-item__link:focus-visible .c-news-item__date {
  background-color: color-mix(in srgb, currentColor 14%, transparent);
}
/* 一覧ページの行（上下に余白を持つ） */
.c-news-item--row {
  padding-block: clamp(10px, 1.25vw, 18px);
}

/* =========================================================
   c-service-card — 業務内容カード（TOP）
========================================================= */
.c-service-card {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: clamp(20px, 4.7917vw, 69px);
  width: min(75.625vw, 1500px);
  padding: clamp(16px, var(--px-20), 20px) clamp(16px, var(--px-40), 40px);
  background: var(--c-navy);
  filter: drop-shadow(0 0 6px rgba(0, 0, 0, 0.34));
}
.c-service-card + .c-service-card {
  margin-top: clamp(16px, var(--px-25), 25px);
}
.c-service-card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: clamp(12px, 1.1111vw, 16px);
}
.c-service-card__title {
  position: relative;
  width: fit-content;
  padding-bottom: clamp(8px, 0.6944vw, 10px);
  font-family: var(--f-mincho);
  font-weight: 400;
  font-size: clamp(18px, 1.6667vw, 24px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
/* 見出し下の短いアクセント罫（Figma: 幅50px） */
.c-service-card__title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: clamp(36px, 3.4722vw, 50px);
  height: 1px;
  background: #fff;
}
.c-service-card__figure {
  flex-shrink: 0;
  width: clamp(140px, 18.9583vw, 273px);
}
.c-service-card__figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 273 / 185;
  object-fit: cover;
}

/* =========================================================
   c-marquee — CSSのみの自動ループ
   トラックに同じ並びを2セット入れ、半分ぶん（+ gapの半分）流す。
========================================================= */
.c-marquee {
  width: 100%;
  overflow: hidden;
}
.c-marquee__track {
  display: flex;
  align-items: center;
  gap: clamp(6px, 0.6944vw, 10px);
  width: max-content;
  animation: c-marquee-scroll 45s linear infinite;
}
@keyframes c-marquee-scroll {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(calc(-50% - clamp(3px, 0.3472vw, 5px)));
  }
}
.c-marquee:hover .c-marquee__track {
  animation-play-state: paused;
}
.c-marquee__item {
  flex: 0 0 auto;
  width: clamp(180px, 22.0139vw, 317px);
}
.c-marquee__item a {
  display: block;
  overflow: hidden;
}
.c-marquee__item img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 317 / 227;
  object-fit: cover;
  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
.c-marquee__item a:hover img,
.c-marquee__item a:focus-visible img {
  transform: scale(1.06);
}
@media (prefers-reduced-motion: reduce) {
  .c-marquee__track {
    animation: none;
  }
}

/* =========================================================
   下層共通 — MV / ページタイトル / 白パネル
========================================================= */
.p-sub {
  padding-bottom: clamp(40px, 5.3472vw, 77px);
}
.p-sub-mv {
  position: relative;
}
.p-sub-mv__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1440 / 352;
  object-fit: cover;
}
/* MV全体を白でぼかす（Figma: rgba(255,255,255,.54) のオーバーレイ） */
.p-sub-mv::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.54);
}

/* MVの下端にまたがる紺色のピル。フローのまま負マージンで持ち上げる。 */
.c-page-title {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  min-width: clamp(190px, 17.9167vw, 258px);
  min-height: clamp(44px, 3.8194vw, 55px);
  margin-inline: auto;
  margin-top: max(-28px, -1.9444vw);
  padding: 10px clamp(16px, 1.6667vw, 24px);
  border-radius: 40px;
  background: var(--c-navy);
  /* js-split は各文字を translateY(20px) の位置から立ち上げる。
     はみ出しをピル形状で切り、「中から文字が起き上がる」見え方にする。 */
  overflow: hidden;
  font-family: var(--f-mincho);
  font-weight: 500;
  font-size: clamp(18px, 1.6667vw, 24px);
  letter-spacing: 0.09em;
  line-height: 1.4;
  text-align: center;
}

.l-panel {
  width: min(88.8889vw, 1280px);
  margin-inline: auto;
  margin-top: clamp(24px, 3.4028vw, 49px);
  padding: clamp(28px, 4.7917vw, 69px) clamp(16px, 2.2222vw, 32px)
    clamp(30px, 5.0694vw, 73px);
  background: var(--c-panel);
  color: var(--c-ink);
}
.l-panel a {
  color: inherit;
}
/* パネル内でもボタンは白抜きのまま（.l-panel a に負けないよう詳細度を上げる） */
.l-panel .c-btn {
  color: #fff;
}
/* パネルのあとに次のセクション見出しが続く場合 */
.l-panel + .c-page-title {
  margin-top: clamp(50px, 10.9028vw, 157px);
}

/* =========================================================
   事業内容
========================================================= */
.c-service-detail {
  display: flex;
  align-items: center;
}
.c-service-detail + .c-service-detail {
  margin-top: clamp(16px, 1.8056vw, 26px);
}
/* 画像を本文カラムの右端に重ねる（Figma: -154px） */
.c-service-detail__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: clamp(12px, 1.4583vw, 21px);
  margin-right: max(-154px, -10.6944vw);
}
.c-service-detail__head {
  display: flex;
  align-items: center;
  gap: clamp(12px, 2.0139vw, 29px);
}
.c-service-detail__title {
  display: flex;
  align-items: center;
  justify-content: center;
  /* Figmaの箱幅は298pxだが「増築・リフォーム」が1pxだけ入りきらず折り返すため、
     固定幅ではなく min-width にして文言が伸びても折れないようにする。 */
  min-width: clamp(160px, 20.6944vw, 298px);
  white-space: nowrap;
  min-height: clamp(52px, 5.6944vw, 82px);
  padding: 10px;
  border-bottom: 1px solid var(--c-ink);
  font-family: var(--f-mincho);
  font-weight: 500;
  font-size: clamp(20px, 2.2222vw, 32px);
  letter-spacing: 0.09em;
  line-height: 1.4;
}
.c-service-detail__num {
  font-weight: 700;
  font-size: clamp(13px, 1.3889vw, 20px);
  color: var(--c-gray-light);
  letter-spacing: 0.09em;
  line-height: 1.4;
  white-space: nowrap;
}
.c-service-detail__lead {
  font-family: var(--f-mincho);
  font-size: clamp(17px, 1.6667vw, 24px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.c-service-detail__text {
  max-width: 83.2%;
  font-size: clamp(14px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.c-service-detail__figure {
  position: relative;
  flex-shrink: 0;
  width: clamp(150px, 26.1806vw, 377px);
}
.c-service-detail__figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 377 / 235;
  object-fit: cover;
}

.p-service-area {
  width: min(100%, 826px);
  margin-inline: auto;
}
.p-service-area__title {
  margin-bottom: 10px;
  font-family: var(--f-mincho);
  font-weight: 400;
  font-size: clamp(17px, 1.6667vw, 24px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.p-service-area__text {
  font-size: clamp(14px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.p-service-area__figure {
  width: min(100%, 613px);
  margin-inline: auto;
  margin-top: clamp(30px, 7.1528vw, 103px);
}
.p-service-area__figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 613 / 700;
  object-fit: contain;
}

/* =========================================================
   会社案内
========================================================= */
/* 代表挨拶は白パネルに載らず、暗い背景の上に直接置く */
.p-company__greeting {
  width: min(88.8889vw, 1280px);
  margin-inline: auto;
  margin-top: clamp(24px, 3.3333vw, 48px);
  font-size: clamp(14px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.p-company__greeting + .c-page-title {
  margin-top: clamp(40px, 5.5556vw, 80px);
}

.c-info-table {
  width: min(100%, 811px);
  margin-inline: auto;
}
.c-info-table__row {
  display: flex;
  align-items: stretch;
}
.c-info-table__row + .c-info-table__row {
  margin-top: 12px;
}
.c-info-table__label,
.c-info-table__value {
  display: flex;
  align-items: center;
  min-height: clamp(48px, 4.8611vw, 70px);
  padding: 10px clamp(12px, 1.25vw, 18px);
  font-weight: 500;
  font-size: clamp(14px, 1.3889vw, 20px);
  letter-spacing: 0.09em;
  line-height: 1.6;
}
.c-info-table__label {
  flex-shrink: 0;
  width: clamp(96px, 17.2222vw, 248px);
  border-bottom: 2px solid var(--c-navy);
}
.c-info-table__value {
  flex: 1;
  border-bottom: 2px solid var(--c-gray-light);
}

/* =========================================================
   新着情報
========================================================= */
.p-news__list {
  width: min(100%, 1191px);
  margin-inline: auto;
}
.p-news__empty,
.p-works__empty {
  text-align: center;
}

/* =========================================================
   施工実績
========================================================= */
.p-works__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(24px, 2.7778vw, 40px) clamp(20px, 6.3194vw, 91px);
  width: min(100%, 1001px);
  margin-inline: auto;
}
.c-works-card__link {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.c-works-card__figure {
  overflow: hidden;
}
.c-works-card__figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 455 / 306;
  object-fit: cover;
  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
.c-works-card__title {
  font-size: clamp(15px, 1.3889vw, 20px);
  letter-spacing: 0.06em;
  line-height: 1.8;
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 1px;
  transition: background-size 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.c-works-card__link:hover .c-works-card__figure img,
.c-works-card__link:focus-visible .c-works-card__figure img {
  transform: scale(1.06);
}
.c-works-card__link:hover .c-works-card__title,
.c-works-card__link:focus-visible .c-works-card__title {
  background-size: 100% 1px;
}

.p-works-single__title {
  margin-bottom: clamp(20px, var(--px-30), 30px);
  font-family: var(--f-mincho);
  font-weight: 500;
  font-size: clamp(20px, 2.2222vw, 32px);
  letter-spacing: 0.06em;
  line-height: 1.6;
}
.c-beforeafter {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(16px, 2.7778vw, 40px);
}
.c-beforeafter__item {
  margin: 0;
}
.c-beforeafter__item img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 455 / 306;
  object-fit: contain;
}
.c-beforeafter__cap {
  margin-top: 8px;
  font-weight: 700;
  font-size: clamp(13px, 1.1111vw, 16px);
  letter-spacing: 0.09em;
  text-align: center;
}
.p-works-single__body {
  margin-top: clamp(24px, var(--px-40), 40px);
}
.p-works-single__back,
.p-single__back,
.p-404__back {
  display: flex;
  justify-content: center;
  margin-top: clamp(30px, var(--px-60), 60px);
}

/* =========================================================
   新着情報 詳細
========================================================= */
.p-single__head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: clamp(12px, 1.3889vw, 20px);
  margin-bottom: clamp(20px, var(--px-30), 30px);
}
.p-single__thumb {
  margin-bottom: clamp(20px, var(--px-30), 30px);
}
.p-single__thumb img {
  display: block;
  width: 100%;
  height: auto;
}
.p-single__body {
  max-width: 950px;
  width: 100%;
  margin-inline: auto;
}
.p-single__body p {
  margin-bottom: 1em;
}
.p-single__body img {
  height: auto;
}

/* =========================================================
   お問い合わせ（Contact Form 7）
========================================================= */
.p-contact__lead {
  width: min(100%, 880px);
  margin-inline: auto;
  margin-bottom: clamp(24px, var(--px-40), 40px);
  font-size: clamp(14px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.8;
  text-align: center;
}
/* Figmaのラベル枠は134pxだが、テキストは枠からはみ出す前提で置かれている。
   CSSでその幅を切ると「お名／前」のように折り返すので、
   ラベル列は実際に必要な幅（必須バッジ + 余白 + 最長ラベル）を確保する。
   ラベル220 + 余白19 + 入力785 = 1024（Figmaの入力欄と同寸）。 */
.c-form {
  width: min(100%, 1024px);
  margin-inline: auto;
}
.c-form__row {
  display: flex;
  align-items: center;
  gap: clamp(12px, 1.3194vw, 19px);
  padding-block: clamp(14px, 1.8056vw, 26px);
  border-bottom: 1px solid var(--c-border);
}
.c-form__label {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  gap: clamp(8px, 0.9028vw, 13px);
  width: clamp(175px, 15.2778vw, 220px);
}
.c-form__req {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: clamp(52px, 4.9306vw, 71px);
  min-height: clamp(26px, 2.2222vw, 32px);
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--c-navy);
  color: #fff;
  font-weight: 500;
  font-size: clamp(12px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.c-form__name {
  white-space: nowrap;
  font-weight: 500;
  font-size: clamp(13px, 1.1111vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.8;
}
.c-form__field {
  flex: 1;
  min-width: 0;
}
.c-form__field input[type="text"],
.c-form__field input[type="tel"],
.c-form__field input[type="email"],
.c-form__field textarea {
  width: 100%;
  padding: 10px clamp(10px, 1.1111vw, 16px);
  border: 0;
  background: var(--c-input);
  color: var(--c-ink);
  font-family: var(--f-gothic);
  font-size: clamp(14px, 1.1111vw, 16px);
  line-height: 1.8;
}
.c-form__field input[type="text"],
.c-form__field input[type="tel"],
.c-form__field input[type="email"] {
  min-height: clamp(40px, 3.0556vw, 44px);
}
.c-form__field textarea {
  min-height: clamp(160px, 19.0278vw, 274px);
  resize: vertical;
}
.c-form__field input:focus-visible,
.c-form__field textarea:focus-visible {
  outline: 2px solid var(--c-navy);
  outline-offset: 1px;
}
.c-form__btn {
  display: flex;
  justify-content: center;
  margin-top: clamp(30px, 4.3056vw, 62px);
}
.c-form__submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: clamp(200px, 17.9167vw, 258px);
  min-height: clamp(44px, 3.4028vw, 49px);
  padding: 10px 24px;
  border: 0;
  border-radius: 999px;
  color: #fff;
  font-family: var(--f-gothic);
  font-weight: 500;
  font-size: clamp(16px, 1.3889vw, 20px);
  letter-spacing: 0.09em;
  line-height: 1.4;
  cursor: pointer;
  /* c-btn と同じワイプ。input なので擬似要素が使えず、この手法が効く。 */
  background-color: var(--c-navy);
  background-image: linear-gradient(
    to right,
    var(--c-navy-hover) 0 50%,
    var(--c-navy) 50% 100%
  );
  background-size: 200% 100%;
  background-position: 100% 0;
  transition:
    background-position 0.45s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow 0.3s ease,
    transform 0.3s ease;
}
.c-form__submit:hover,
.c-form__submit:focus-visible {
  background-position: 0 0;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(35, 44, 61, 0.3);
}
.c-form__submit:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(35, 44, 61, 0.25);
}
/* CF7 のバリデーション表示 */
.wpcf7-not-valid-tip {
  margin-top: 6px;
  color: #c00;
  font-size: clamp(12px, 0.9722vw, 14px);
}
.wpcf7-response-output {
  margin: clamp(16px, var(--px-24), 24px) 0 0 !important;
  padding: 12px 16px !important;
  font-size: clamp(13px, 1.0417vw, 15px);
}

/* =========================================================
   テキストリンク（会社概要の電話番号 / 記事本文など）
   コンポーネント化されていない素のリンクはここで面倒を見る。
========================================================= */
.c-info-table__value a {
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 100% 1px;
  transition: background-size 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.c-info-table__value a:hover,
.c-info-table__value a:focus-visible {
  background-size: 0% 1px;
}
.p-single__body a,
.p-works-single__body a {
  text-decoration: underline;
  text-underline-offset: 0.25em;
  text-decoration-thickness: 1px;
  transition: text-decoration-thickness 0.2s ease;
}
.p-single__body a:hover,
.p-works-single__body a:hover {
  text-decoration-thickness: 2px;
}

/* =========================================================
   404
========================================================= */
.p-404__body {
  text-align: center;
}

/* =========================================================
   ページネーション（白パネル上）
========================================================= */
.l-panel .pagination-area {
  margin-top: clamp(30px, var(--px-60), 60px);
}
.l-panel .nav-links,
.l-panel .page-numbers {
  justify-content: center;
}
.l-panel .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  min-height: 40px;
  padding: 0 10px;
  border: 1px solid var(--c-gray-light);
  font-size: clamp(13px, 1.0417vw, 15px);
  line-height: 1;
}
.l-panel .page-numbers.current {
  background: var(--c-navy);
  border-color: var(--c-navy);
  color: #fff;
}
.l-panel a.page-numbers {
  transition:
    background-color 0.3s ease,
    border-color 0.3s ease,
    color 0.3s ease;
}
.l-panel a.page-numbers:hover,
.l-panel a.page-numbers:focus-visible {
  background-color: var(--c-navy);
  border-color: var(--c-navy);
  color: #fff;
}
.l-panel .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
}

/* =========================================================
   SP
========================================================= */
@media screen and (max-width: 680px) {
  .c-news-item__link {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .c-service-card {
    flex-direction: column;
    align-items: flex-start;
    gap: clamp(16px, 6.6667vw, 25px);
    width: 100%;
    padding: 20px clamp(16px, 5.3333vw, 20px);
  }
  .c-service-card__figure {
    width: 100%;
  }
  .c-marquee__item {
    width: 44.3733vw;
  }

  /* --- 下層 --- */
  .p-sub-mv__img {
    aspect-ratio: 375 / 200;
  }
  .l-panel {
    width: min(91.4667vw, 1280px);
    padding: clamp(24px, 6.4vw, 32px) clamp(14px, 4.2667vw, 20px);
  }

  /* 事業内容：画像は本文の下に回す（重ねを解除） */
  .c-service-detail {
    flex-direction: column;
    align-items: stretch;
  }
  .c-service-detail__body {
    margin-right: 0;
  }
  .c-service-detail__head {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  .c-service-detail__title {
    justify-content: flex-start;
    min-width: 0;
    width: 100%;
    white-space: normal;
  }
  .c-service-detail__text {
    max-width: 100%;
  }
  .c-service-detail__figure {
    width: 100%;
    margin-top: 16px;
  }
  .p-service-area__figure {
    margin-top: clamp(24px, 8vw, 40px);
  }

  /* 会社概要：ラベルと値を縦積みに */
  .c-info-table__row {
    flex-direction: column;
  }
  .c-info-table__label {
    width: 100%;
    min-height: 0;
  }
  .c-info-table__value {
    min-height: 0;
  }

  /* 施工実績：1列 */
  .p-works__list {
    grid-template-columns: 1fr;
  }
  .c-beforeafter {
    grid-template-columns: 1fr;
  }

  /* フォーム：ラベルの上に入力欄を積む */
  .c-form__row {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .c-form__label {
    width: 100%;
  }
}
