@charset "utf-8";
.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);
}

/* =====================
  下層 共通ヒーロー
===================== */
.p-sub-hero {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: clamp(220px, 24.6vw, 354px);
  background-size: cover;
  background-position: center;
}
.p-sub-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.15);
}
.p-sub-hero__inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #fff;
}
.p-sub-hero__en {
  font-family: "EB Garamond", serif;
  line-height: 1;
  letter-spacing: 0.03em;
  font-size: clamp(2.2rem, var(--px-32), 3.2rem);
  margin-bottom: clamp(8px, var(--px-14), 14px);
}
.p-sub-hero__ja {
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.06em;
  font-size: clamp(2.4rem, var(--px-36), 3.6rem);
}

/* =====================
  施工事例（OUR WORKS）
===================== */
.p-works-list {
  background-size: cover;
  background-position: center;
  padding-block: clamp(60px, 9.03vw, 130px);
}
.p-works-list__inner {
  padding-inline: 5.55%;
}
.p-works-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(10px, var(--px-13), 13px);
}
.p-works-card__fig {
  margin: 0;
  aspect-ratio: 310 / 241;
  overflow: hidden;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
}
.p-works-card__fig img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media screen and (max-width: 820px) {
  .p-works-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media screen and (max-width: 680px) {
  .p-works-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }
}

/* =====================
  会社概要（COMPANY）
===================== */
.p-company-sec {
  background-size: cover;
  background-position: center;
  padding-block: clamp(60px, 6.94vw, 100px);
}
.p-company-sec__inner {
  padding-inline: 5.55%;
}
.p-company-map {
  width: 100%;
  aspect-ratio: 1280 / 490;
  background: #e9e9e9;
}
.p-company-map iframe,
.p-company-map img {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: cover;
}
.p-company-sec .c-deftable {
  margin-bottom: clamp(40px, var(--px-80), 80px);
}
@media screen and (max-width: 680px) {
  .p-company-map {
    aspect-ratio: 4 / 3;
  }
}

/* =====================
  定義テーブル c-deftable（会社概要・求人で再利用）
===================== */
.c-deftable {
  width: 100%;
  max-width: 1044px;
  margin-inline: auto;
}
.c-deftable__row {
  display: flex;
}
.c-deftable__row + .c-deftable__row {
  margin-top: clamp(8px, var(--px-16), 16px);
}
.c-deftable__th,
.c-deftable__td {
  min-height: clamp(48px, var(--px-58), 58px);
  letter-spacing: 0.03em;
  font-size: clamp(1.4rem, var(--px-20), 2rem);
}
.c-deftable__th {
  flex: 0 0 clamp(120px, var(--px-220), 220px);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px;
  background: #000080;
  color: #fff;
}
.is-req {
  color: #ffe204;
}
.c-deftable__td {
  flex: 1;
  display: flex;
  align-items: center;
  padding: 10px 20px;
  background: #fff;
  color: #000080;
  border: 1px solid #000080;
  word-break: break-word;
}
.c-deftable .is-req {
  color: #ffe204;
  font-size: 0.8em;
}
@media screen and (max-width: 680px) {
  .c-deftable__row {
    flex-direction: column;
  }
  .c-deftable__th {
    flex: none;
    width: 100%;
    justify-content: flex-start;
    min-height: 0;
  }
}

/* =====================
  見出し c-sec-head（英字＋和文＋左右の罫線）
===================== */
.c-sec-head {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(16px, var(--px-24), 24px);
}
.c-sec-head::before,
.c-sec-head::after {
  content: "";
  flex: none;
  width: clamp(40px, 5.28vw, 76px);
  height: 1px;
  background: #000080; /* デフォルト：紺の罫線 */
}
.c-sec-head__body {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.c-sec-head__en {
  font-family: "EB Garamond", serif;
  color: #000080; /* デフォルト：紺 */
  line-height: 1;
  letter-spacing: 0.03em;
  font-size: clamp(1.8rem, var(--px-24), 2.4rem);
}
.c-sec-head__ja {
  margin-top: 0.4em;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.06em;
  font-size: clamp(2rem, var(--px-32), 3.2rem);
}
/* ネイビー等の暗い背景に載せる場合 */
.c-sec-head--onnavy .c-sec-head__en {
  color: #ffe204;
}
.c-sec-head--onnavy .c-sec-head__ja {
  color: #fff;
}
.c-sec-head--onnavy::before,
.c-sec-head--onnavy::after {
  background: #fff;
}

/* =====================
  見出し c-sec-title（和文中央＋下線）
===================== */
.c-sec-title {
  text-align: center;
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: 0.06em;
  font-size: clamp(2.4rem, var(--px-36), 3.6rem);
}
.c-sec-title::after {
  content: "";
  display: block;
  width: clamp(40px, 4.3vw, 62px);
  height: 4px;
  background: #000080;
  margin: clamp(12px, var(--px-24), 24px) auto 0;
}

/* =====================
  求人募集（RECRUIT）
===================== */
.p-recruit-intro {
  background-size: cover;
  background-position: center;
  padding-block: clamp(50px, var(--px-80), 80px);
  overflow: hidden;
}
.p-recruit-intro__inner {
  position: relative;
}
/* ネイビーのパネル＝レイアウトの基準。画像より一回り大きい（左端まで裁ち落とし） */
.p-recruit-intro__panel {
  width: 70%; /* 1009 / 1440 */
  min-height: clamp(
    420px,
    47.2vw,
    679px
  ); /* 679 / 1440。画像(≈40vw)より必ず大きく */
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: clamp(24px, var(--px-40), 40px);
  padding: clamp(40px, var(--px-70), 70px) clamp(120px, 12vw, 172px)
    clamp(40px, var(--px-70), 70px) 5.55%;
  background: #000080;
  color: #fff;
}
.p-recruit-intro__text {
  line-height: 2.2;
  letter-spacing: 0.03em;
  font-size: clamp(1.4rem, var(--px-20), 2rem);
}
/* 画像はパネル右端に重ねて、右へはみ出す（上下はネイビーが見える＝画像より小さい） */
.p-recruit-intro__img {
  position: absolute;
  top: 50%;
  right: 5.55%;
  transform: translateY(-50%);
  width: 31.5%; /* 453 / 1440 */
  aspect-ratio: 453 / 576;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
}
.p-recruit-intro__img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.p-recruit-block {
  padding-block: clamp(40px, var(--px-70), 70px);
}
.p-recruit-block__inner {
  padding-inline: 5.55%;
}
.p-recruit-block .c-sec-title {
  margin-bottom: clamp(30px, var(--px-50), 50px);
}
.p-recruit-lead {
  letter-spacing: 0.03em;
  font-size: clamp(1.4rem, var(--px-20), 2rem);
  margin-bottom: clamp(20px, var(--px-40), 40px);
}
.p-recruit-tellead {
  letter-spacing: 0.03em;
  font-size: clamp(1.4rem, var(--px-20), 2rem);
  margin-bottom: clamp(14px, var(--px-20), 20px);
}
.p-recruit-block .c-telbox {
  margin-bottom: clamp(30px, var(--px-50), 50px);
}
.p-recruit-formwrap {
  max-width: 1044px;
  margin-inline: auto;
}

/* --- CF7 応募フォーム --- */
.p-recruit-form .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}
.p-recruit-form .c-deftable__td input[type="text"],
.p-recruit-form .c-deftable__td input[type="tel"],
.p-recruit-form .c-deftable__td input[type="email"],
.p-recruit-form .c-deftable__td textarea {
  width: 100%;
  padding: 0.6em 0.8em;
  background: #f3f3f3;
  border: none;
  color: #000080;
  font-family: inherit;
  font-size: max(16px, 1rem);
}
.p-recruit-form .c-deftable__td textarea {
  min-height: clamp(120px, var(--px-160), 160px);
  resize: vertical;
}
.p-recruit-form .c-deftable__td input:focus-visible,
.p-recruit-form .c-deftable__td textarea:focus-visible {
  outline: 2px solid #000080;
}
.p-recruit-form .wpcf7-radio {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(12px, var(--px-30), 30px);
}
.p-recruit-form .wpcf7-list-item {
  margin: 0;
}
.p-recruit-form .wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #000080;
  cursor: pointer;
}
.p-recruit-form input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  flex: none;
  position: relative;
  width: 25px;
  height: 25px;
  border: 2px solid #000080;
  border-radius: 50%;
  cursor: pointer;
}
.p-recruit-form input[type="radio"]:checked::after {
  content: "";
  position: absolute;
  inset: 5px;
  background: #000080;
  border-radius: 50%;
}
.p-recruit-form__submit {
  text-align: center;
  margin-top: clamp(30px, var(--px-50), 50px);
}
.p-recruit-form input[type="submit"],
.p-recruit-form .wpcf7-submit {
  width: clamp(180px, var(--px-220), 220px);
  min-height: clamp(52px, var(--px-64), 64px);
  background: #000080;
  color: #fff;
  border: none;
  cursor: pointer;
  letter-spacing: 0.06em;
  font-family: inherit;
  font-size: clamp(1.6rem, var(--px-20), 2rem);
}
.p-recruit-form input[type="submit"]:hover,
.p-recruit-form .wpcf7-submit:hover {
  opacity: 0.85;
}
@media screen and (max-width: 680px) {
  .p-recruit-intro__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  .p-recruit-intro__panel {
    width: 100%;
    min-height: 0;
    padding: clamp(32px, 8vw, 48px) 6%;
  }
  .p-recruit-intro__img {
    position: static;
    transform: none;
    width: 72%;
    margin-top: -3%;
  }
}

/* =====================
  リード紹介 c-lead（漆喰パネル＋大見出し＋右にはみ出す画像）
  ※ SERVICE の Group 18 / トップの CONCEPT で再利用
===================== */
.c-lead {
  position: relative;
  margin-bottom: clamp(
    110px,
    13vw,
    190px
  ); /* 画像が下へはみ出す分＋次要素との余白 */
}
.c-lead__panel {
  width: 84.2%; /* 1213 / 1440。左端まで裁ち落とし */
  min-height: clamp(340px, 41.4vw, 596px); /* 596 / 1440 */
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-block: clamp(40px, var(--px-60), 60px);
  padding-left: 12.15%; /* 175 / 1440 */
  padding-right: 5.55%;
  background-size: cover;
  background-position: center;
}
.c-lead__panel-index {
  background-image: url("../img/bg-shikkui.jpg");
}
.c-lead__body {
  max-width: 43.5vw; /* 627 / 1440。画像に潜り込ませない */
}
.c-lead__en {
  display: block;
  margin-bottom: clamp(20px, var(--px-40), 40px);
  font-family: "EB Garamond", serif;
  color: #000080;
  line-height: 1;
  letter-spacing: 0.03em;
  font-size: clamp(3rem, var(--px-48), 4.8rem);
}
.c-lead__text {
  line-height: 2;
  letter-spacing: 0.03em;
  font-size: clamp(1.4rem, var(--px-20), 2rem);
}
.c-lead__img {
  position: absolute;
  right: 0; /* 右端まで裁ち落とし */
  bottom: -6.3vw; /* 91 / 1440。パネル下へはみ出す */
  width: 38.5%; /* 554 / 1440 */
  aspect-ratio: 554 / 530;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
}
.c-lead__img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* =====================
  業務内容（SERVICE）3項目
===================== */
.p-service-list {
  display: flex;
  flex-direction: column;
  gap: clamp(40px, var(--px-80), 80px);
  padding-inline: 8%; /* 115 / 1440 */
  padding-bottom: clamp(50px, var(--px-100), 100px);
}
.p-service-item {
  scroll-margin-top: clamp(
    70px,
    8vw,
    110px
  ); /* アンカー着地時に固定ヘッダーへ隠れない余白 */
}
.p-service-item__inner {
  display: flex;
  align-items: flex-start;
  gap: clamp(24px, var(--px-60), 60px);
}
.p-service-item__body {
  flex: 1 1 auto;
}
.p-service-item__title {
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: 0.06em;
  font-size: clamp(2.2rem, var(--px-36), 3.6rem);
}
.p-service-item__title::after {
  content: "";
  display: block;
  width: clamp(40px, 4.3vw, 62px);
  height: 4px;
  margin-top: clamp(12px, var(--px-20), 20px);
  background: #000080;
}
.p-service-item__text {
  margin-top: clamp(16px, var(--px-30), 30px);
  line-height: 2;
  letter-spacing: 0.03em;
  font-size: clamp(1.4rem, var(--px-20), 2rem);
}
.p-service-item__img {
  flex: 0 0 45.2%; /* 547 / 1210 */
  aspect-ratio: 547 / 412;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
}
.p-service-item__img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media screen and (max-width: 680px) {
  /* 見出し c-sec-head：SPは英字24px・和文16px・罫線56px */
  .c-sec-head__en {
    font-size: 2.4rem;
  }
  .c-sec-head__ja {
    font-size: 1.6rem;
  }
  .c-sec-head::before,
  .c-sec-head::after {
    width: clamp(40px, 15vw, 56px);
  }
  /* リード：パネル全幅、画像はテキストの下に中央配置 */
  .c-lead {
    margin-bottom: clamp(40px, 12vw, 80px);
  }
  .c-lead__panel {
    width: 100%;
    min-height: 0;
    padding: clamp(32px, 8vw, 48px) 6%;
  }
  .c-lead__panel-index {
    background-image: none;
  }
  .c-lead-index {
    background-image: url("../img/bg-shikkui.jpg");
    background-repeat: no-repeat;
    background-size: cover;
  }
  .c-lead-index.c-lead {
    padding-bottom: clamp(40px, 12vw, 80px);
    margin: 0;
  }
  .c-lead__body {
    max-width: none;
  }
  .c-lead__en {
    font-size: clamp(3rem, 9.6vw, 3.6rem); /* 36px */
  }
  .c-lead__img {
    position: static;
    bottom: auto;
    width: 74%;
    margin: clamp(16px, 4vw, 24px) auto 0;
  }
  .p-service-item__inner {
    flex-direction: column;
    gap: clamp(16px, 5vw, 24px);
  }
  .p-service-item__img {
    flex: none;
    width: 100%;
  }
}
