/* =============================================
   Table of Contents
   ─────────────────────────────────────────────
   1.  CSS Variables (Design Tokens)
   2.  Reset & Base
   3.  Typography
   4.  Layout
       4-1. Container
       4-2. Header / Global Navigation
       4-3. Footer
   5.  Components
       5-1. Logo
       5-2. Global Navigation (c-gnav)
       5-3. Buttons (c-btn)
       5-4. Labels (c-label)
       5-5. Icon Circle (c-icon-circle)
       5-6. Method Card (c-method-card)
   6.  Page Sections
       6-1. Hero (p-hero)
       6-2. Concept (p-concept)
       6-3. Methods (p-methods)
       6-4. About (p-about)
       6-5. News (p-news)
       6-6. CTA – Recruit / Contact (p-cta)
   7.  Media Queries
       7-1. Tablet  (max-width: 991px)
       7-2. Mobile  (max-width: 767px)
   ============================================= */


/* =============================================
   1. CSS Variables (Design Tokens)
   ============================================= */
:root {
  /* --- Colors --- */
  --color-primary: #E8C000;
  /* ゴールドイエロー：メインアクセント */
  --color-primary-hover: #CCA800;
  /* ホバー時の濃いゴールド */
  --color-dark: #1C2437;
  /* ダークネイビー：ベース濃色 */
  --color-dark-alt: #2A3655;
  /* やや明るいネイビー */
  --color-text: #333333;
  /* 本文テキスト */
  --color-text-sub: #555555;
  /* サブテキスト */
  --color-text-light: #888888;
  /* 薄めのテキスト（日付など） */
  --color-bg-white: #ffffff;
  --color-bg-light: #F5F5F5;
  /* セクション背景（薄グレー） */
  --color-border: #E0E0E0;
  /* ボーダー・区切り線 */

  /* --- Typography --- */
  --font-ja: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Meiryo', sans-serif;
  --font-en: 'Montserrat', 'Arial', sans-serif;

  /* --- Spacing --- */
  --spacing-xs: 8px;
  --spacing-sm: 16px;
  --spacing-md: 24px;
  --spacing-lg: 40px;
  --spacing-xl: clamp(60px, 8vw, 100px);
  /* セクション上下余白 */
  --spacing-xxl: clamp(80px, 10vw, 140px);
  /* ヒーロー等の大きな余白 */

  /* --- Container --- */
  --container-max: 1200px;
  --container-narrow: 920px;
  --container-pad: clamp(20px, 4vw, 40px);

  /* --- Header --- */
  --header-height: 72px;

  /* --- Transitions --- */
  --transition-base: 0.25s ease;
}


/* =============================================
   2. Reset & Base
   ============================================= */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  font-size: 16px;
}

body {
  font-family: var(--font-ja);
  color: var(--color-text);
  background-color: var(--color-bg-white);
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}

ul,
ol {
  list-style: none;
}

address {
  font-style: normal;
}

.sp-only {
  display: none;
}


/* =============================================
   3. Typography
   ============================================= */
h1, h2, h3, h4, h5, h6 {
  line-height: 1.4;
  font-weight: 700;
}


/* =============================================
   4-1. Layout – Container
   ============================================= */
.l-container {
  width: 100%;
  max-width: calc(var(--container-max) + var(--container-pad) * 2);
  margin-inline: auto;
  padding-inline: var(--container-pad);
}

/* 本文・説明文が中心のエリア用（狭めコンテナ） */
.l-container--narrow {
  max-width: calc(var(--container-narrow) + var(--container-pad) * 2);
}


/* =============================================
   4-2. Layout – Header / Global Navigation
   ============================================= */
.l-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--header-height);
  background-color: var(--color-bg-white);
  z-index: 100;
  transition: box-shadow var(--transition-base);
}

/* スクロール時にシャドウを追加（JS で .is-scrolled クラス付与） */
.l-header.is-scrolled {
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
}

.l-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
}

.l-header__logo {
  flex-shrink: 0;
}

.l-header__nav {
  display: flex;
  align-items: center;
  gap: var(--spacing-lg);
}

.l-header__contact {
  margin-left: var(--spacing-sm);
}

.l-header__mobile-message,
.l-header__mobile-contact {
  display: none;
}

/* ハンバーガーボタン（PCでは非表示） */
.l-header__hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
}

.l-header__hamburger-bar {
  display: block;
  width: 100%;
  height: 2px;
  background-color: var(--color-dark);
  border-radius: 2px;
  transition: transform var(--transition-base), opacity var(--transition-base);
  transform-origin: center;
}

/* ハンバーガーが開いた状態 */
.l-header__hamburger.is-open .l-header__hamburger-bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.l-header__hamburger.is-open .l-header__hamburger-bar:nth-child(2) {
  opacity: 0;
}

.l-header__hamburger.is-open .l-header__hamburger-bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* ヘッダーの高さ分、main に上マージンを確保 */
body {
  padding-top: var(--header-height);
}


/* =============================================
   4-3. Layout – Footer
   ============================================= */
.l-footer {
  background-color: var(--color-dark);
  color: var(--color-bg-white);
}

.l-footer__main {
  padding-top: clamp(40px, 6vw, 72px);
  padding-bottom: clamp(20px, 3vw, 36px);
}

.l-footer__inner {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--spacing-lg);
}

.l-footer__logo {
  display: inline-block;
  margin-bottom: var(--spacing-md);
}

.l-footer__address {
  font-size: clamp(0.75rem, 1.2vw, 0.875rem);
  line-height: 1.8;
  color: rgba(255, 255, 255, 0.75);
}

.l-footer__address p+p {
  margin-top: 4px;
}

.l-footer__address a {
  color: inherit;
  transition: color var(--transition-base);
}

.l-footer__address a:hover {
  color: var(--color-primary);
}

.l-footer__company {
  margin-bottom: 4px;
  font-weight: 700;
  color: var(--color-bg-white);
}

.l-footer__nav-block {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 28px;
}

.l-footer__nav-list {
  display: flex;
  align-items: center;
  gap: clamp(22px, 3vw, 40px);
  text-align: right;
}

.l-footer__nav-list a {
  font-size: clamp(0.8125rem, 1.1vw, 0.875rem);
  color: rgba(255, 255, 255, 0.8);
  transition: color var(--transition-base);
}

.l-footer__nav-list a:hover {
  color: var(--color-primary);
}

.l-footer__nav-block .c-btn {
  gap: 12px;
  min-height: 40px;
  padding: 0 10px 0 20px;
  border-width: 0;
  border-radius: 10px;
  font-size: 0.8125rem;
}

.l-footer__nav-block .c-btn::after {
  content: '';
  display: block;
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  background-color: var(--color-dark);
  background-image: url("data:image/svg+xml,%3Csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M3%206H9M6.75%203.75L9%206L6.75%208.25'%20stroke='white'%20stroke-width='1.4'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 12px 12px;
}

/* フッター下部（コピーライト） */
.l-footer__bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding-block: var(--spacing-sm);
}

.l-footer__bottom-inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--spacing-sm);
}

.l-footer__copyright {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.5);
}

.l-footer__privacy {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.6);
  transition: color var(--transition-base);
}

.l-footer__privacy:hover {
  color: var(--color-primary);
}


/* =============================================
   5-1. Components – Logo
   ============================================= */
.c-logo__img {
  display: block;
  width: 160px;
  height: auto;
}


/* =============================================
   5-2. Components – Global Navigation (c-gnav)
   ============================================= */
.c-gnav {
  display: flex;
  align-items: center;
  gap: clamp(16px, 2.5vw, 32px);
}

.c-gnav__link {
  font-size: clamp(0.8125rem, 1.2vw, 0.9375rem);
  font-weight: 500;
  color: var(--color-dark);
  position: relative;
  padding-bottom: 2px;
  white-space: nowrap;
  transition: color var(--transition-base);
}

/* ホバー時に下線アニメーション */
.c-gnav__link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--color-primary);
  transition: width var(--transition-base);
}

.c-gnav__link:hover {
  color: var(--color-primary);
}

.c-gnav__link:hover::after {
  width: 100%;
}


/* =============================================
   5-3. Components – Buttons (c-btn)
   ============================================= */
.c-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 28px;
  border-radius: 100px;
  /* pill shape */
  font-family: var(--font-ja);
  font-size: clamp(0.8125rem, 1.2vw, 0.9375rem);
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
  border: 2px solid transparent;
  transition:
    background-color var(--transition-base),
    color var(--transition-base),
    border-color var(--transition-base);
}

/* Yellow filled：ダーク背景上のCTA */
.c-btn--primary {
  background-color: var(--color-primary);
  color: var(--color-dark);
  border-color: var(--color-primary);
}

.c-btn--primary:hover {
  background-color: var(--color-primary-hover);
  border-color: var(--color-primary-hover);
}

/* Dark navy filled：明るい背景上のCTA */
.c-btn--dark {
  background-color: var(--color-dark);
  color: var(--color-bg-white);
  border-color: var(--color-dark);
}

.c-btn--dark:hover {
  background-color: var(--color-dark-alt);
  border-color: var(--color-dark-alt);
}

/* Outline：明るい背景上のサブCTA */
.c-btn--outline {
  background-color: transparent;
  color: var(--color-dark);
  border-color: var(--color-dark);
}

.c-btn--outline:hover {
  background-color: var(--color-dark);
  color: var(--color-bg-white);
}


/* =============================================
   5-4. Components – Labels (c-label)
   ============================================= */
/* セクション上部の小さな英語ラベル */
.c-label {
  display: inline-block;
  font-family: var(--font-en);
  font-size: clamp(0.6875rem, 1vw, 0.8125rem);
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--color-primary);
  text-transform: uppercase;
  margin-bottom: 10px;
}

/* ダーク背景上で使う場合 */
.c-label--light {
  color: rgba(255, 255, 255, 0.6);
}


/* =============================================
   5-5. Components – Icon Circle (c-icon-circle)
   ============================================= */
/* 小サイズ：ニュースリストの矢印アイコン */
.c-icon-circle {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1.5px solid currentColor;
  color: var(--color-dark);
  position: relative;
  transition: background-color var(--transition-base), color var(--transition-base);
}

/* 小サイズの「＋」記号（before/after で十字を作る） */
.c-icon-circle::before {
  content: '';
  position: absolute;
  width: 10px;
  height: 1.5px;
  background-color: currentColor;
}

.c-icon-circle::after {
  content: '';
  position: absolute;
  width: 1.5px;
  height: 10px;
  background-color: currentColor;
}

/* 大サイズ：CTA（採用情報・お問い合わせ）の矢印ボタン */
.c-icon-circle--lg {
  width: 52px;
  height: 52px;
  border-color: rgba(255, 255, 255, 0.8);
  color: var(--color-bg-white);
  border-width: 1.5px;
}

/* 矢印（>）スタイルに上書き */
.c-icon-circle--arrow::before {
  width: 8px;
  height: 8px;
  background: none;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(45deg) translateX(-2px);
}

.c-icon-circle--arrow::after {
  content: none;
}


/* =============================================
   5-6. Components – Method Card (c-method-card)
   ============================================= */
.c-method-card {
  background-color: var(--color-bg-white);
  border-radius: 15px;
  overflow: hidden;
}

.c-method-card__img-wrap {
  aspect-ratio: 4 / 3;
  border-radius: 15px 15px 0 0;
  overflow: hidden;
  background-color: var(--color-bg-light);
}

.c-method-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 15px 15px 0 0;
  transition: transform 0.4s ease;
}

.c-method-card:hover .c-method-card__img {
  transform: scale(1.04);
}

.c-method-card__body {
  padding: 20px;
  border-radius: 0 0 15px 15px;
  background-color: var(--color-bg-white);
}

.c-method-card__title {
  font-size: clamp(0.9375rem, 1.5vw, 1.0625rem);
  font-weight: 700;
  margin-bottom: 10px;
  color: var(--color-dark);
  line-height: 1.5;
}

.c-method-card__text {
  font-size: clamp(0.8125rem, 1.2vw, 0.875rem);
  color: var(--color-text-sub);
  line-height: 1.8;
}


/* =============================================
   6-1. Page Section – Hero (p-hero)
   ============================================= */
.p-hero {
  position: relative;
  min-height: clamp(480px, 80vh, 800px);
  display: flex;
  align-items: flex-end;
  /* テキストを下寄せ */
  overflow: hidden;
}

.p-hero__bg {
  position: absolute;
  inset: 0;
  background-color: var(--color-dark);
  /* 画像読み込み前のフォールバック */
}

.p-hero__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* グラジェントオーバーレイ */
.p-hero__overlay {
  display: none;
}

.p-hero__content {
  position: relative;
  padding-bottom: clamp(48px, 7vw, 88px);
  z-index: 1;
}

.p-hero__title {
  font-size: clamp(1.75rem, 4.5vw, 3.125rem);
  font-weight: 700;
  color: var(--color-bg-white);
  line-height: 1.4;
  letter-spacing: 0.04em;
  margin-bottom: 20px;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.35);
}

.p-hero__subtitle {
  font-size: clamp(0.875rem, 1.5vw, 1rem);
  color: rgba(255, 255, 255, 0.85);
  letter-spacing: 0.04em;
  font-weight: 700;
}


/* =============================================
   6-2. Page Section – Concept (p-concept)
   ============================================= */
.p-concept {
  position: relative;
  padding-block: var(--spacing-xl);
  overflow: hidden;
}

/* 大きな装飾テキスト（ウォーターマーク） */
.p-concept__watermark {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  transform: translateY(-50%);
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  z-index: 0;
}

.p-concept__watermark-track {
  display: flex;
  width: max-content;
  animation: concept-marquee 35s linear infinite;
}

.p-concept__watermark-text {
  flex: 0 0 auto;
  padding-right: 0.35em;
  font-family: var(--font-en);
  font-size: clamp(4rem, 10vw, 9rem);
  font-weight: 700;
  color: rgba(0, 0, 0, 0.04);
  white-space: nowrap;
  line-height: 1;
  letter-spacing: -0.02em;
}

@keyframes concept-marquee {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-50%);
  }
}

.p-concept__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 88px);
  align-items: center;
  position: relative;
  /* ウォーターマークより前面に */
  z-index: 1;
}

.p-concept__body {
  /* 左カラム */
}

.p-concept .c-label {
  color: #C9AA00;
  letter-spacing: 0.16em;
}

.p-concept__title {
  font-size: clamp(1.375rem, 2.8vw, 2rem);
  color: var(--color-dark);
  margin-bottom: var(--spacing-md);
  line-height: 1.45;
}

.p-concept__lead {
  font-size: clamp(1rem, 1.8vw, 1.25rem);
  font-weight: 700;
  color: var(--color-dark);
  line-height: 1.7;
  margin-bottom: var(--spacing-md);
}

.p-concept__text {
  font-size: clamp(0.875rem, 1.3vw, 0.9375rem);
  color: var(--color-text-sub);
  line-height: 1.8;
  margin-bottom: 0;
}

.p-concept__text p+p {
  margin-top: var(--spacing-sm);
}

.p-concept__image {
  border-radius: 15px;
  overflow: hidden;
}

.p-concept__img {
  width: 100%;
  height: clamp(300px, 40vw, 520px);
  object-fit: cover;
  border-radius: 15px;
  background-color: var(--color-bg-light);
}


/* =============================================
   6-3. Page Section – Methods (p-methods)
   ============================================= */
.p-methods {
  padding-block: var(--spacing-xl);
  background-color: var(--color-bg-light);
}

.p-methods__header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--spacing-md);
  margin-bottom: clamp(32px, 4vw, 52px);
}

.p-methods__heading-group {
  display: flex;
  flex-direction: column;
}

.p-methods__title {
  font-size: clamp(1.375rem, 2.5vw, 1.875rem);
  color: var(--color-dark);
  margin-top: 4px;
}

/* 3カラムグリッド */
.p-methods__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 3vw, 40px);
}


/* =============================================
   6-4. Page Section – About (p-about)
   ============================================= */
.p-about {
  position: relative;
  padding-block: var(--spacing-xl);
  background-color: var(--color-dark);
  background-image: url("../images/about-img.jpg");
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  color: var(--color-bg-white);
  overflow: hidden;
}

.p-about::before {
  content: '';
  position: absolute;
  inset: 0;
  background-color: rgba(15, 28, 47, 0.82);
  pointer-events: none;
}

.p-about__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 88px);
  align-items: center;
  position: relative;
  z-index: 1;
}

.p-about__body {
  /* 左カラム */
}

.p-about__heading {
  font-size: clamp(1.5rem, 2.8vw, 2.25rem);
  color: var(--color-bg-white);
  margin-bottom: var(--spacing-md);
  line-height: 1.4;
}

.p-about__title {
  font-size: clamp(1.375rem, 2.8vw, 2rem);
  color: var(--color-bg-white);
  margin-bottom: var(--spacing-md);
  line-height: 1.5;
}

.p-about__text {
  font-size: clamp(0.875rem, 1.3vw, 0.9375rem);
  color: rgba(255, 255, 255, 0.75);
  line-height: 1.8;
  margin-bottom: var(--spacing-lg);
}

.p-about__image {
  border-radius: 15px;
  overflow: hidden;
}

.p-about__img {
  width: 100%;
  height: clamp(280px, 38vw, 480px);
  object-fit: cover;
  border-radius: 15px;
  background-color: var(--color-dark-alt);
}


/* =============================================
   6-5. Page Section – News (p-news)
   ============================================= */
.p-news {
  padding-block: var(--spacing-xl);
}

.p-news__inner {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: flex-start;
}

.p-news__aside {
  /* 左カラム */
  position: sticky;
  top: calc(var(--header-height) + 24px);
}

.p-news__title {
  font-size: clamp(1.375rem, 2.5vw, 1.875rem);
  color: var(--color-dark);
  margin-bottom: var(--spacing-lg);
}

.p-news__list {
  border-top: 1px solid rgba(28, 36, 55, 0.14);
}

.p-news__item {
  border-bottom: 1px solid rgba(28, 36, 55, 0.14);
}

.p-news__link {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  column-gap: var(--spacing-md);
  row-gap: 6px;
  padding: 24px 0;
  text-decoration: none;
  transition: background-color var(--transition-base), padding-left var(--transition-base);
}

.p-news__link:hover {
  background-color: transparent;
  padding-left: 6px;
}

.p-news__link:hover .p-news__text {
  color: var(--color-primary);
}

.p-news__link:hover .c-icon-circle {
  background-color: var(--color-primary);
}

.p-news__date {
  grid-column: 1;
  grid-row: 1;
  font-family: var(--font-en);
  font-size: clamp(0.75rem, 1vw, 0.8125rem);
  color: #006FD6;
  letter-spacing: 0.05em;
  line-height: 1.4;
}

.p-news__text {
  grid-column: 1;
  grid-row: 2;
  font-size: clamp(0.9375rem, 1.4vw, 1rem);
  font-weight: 500;
  color: var(--color-text);
  transition: color var(--transition-base);
  line-height: 1.6;
}

.p-news .c-icon-circle {
  grid-column: 2;
  grid-row: 1 / 3;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  aspect-ratio: 1 / 1;
  border: 0;
  border-radius: 50%;
  background-color: var(--color-dark);
  background-image: url("data:image/svg+xml,%3Csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M3%206H9M6.75%203.75L9%206L6.75%208.25'%20stroke='white'%20stroke-width='1.4'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
  transition:
    background-color var(--transition-base),
    opacity var(--transition-base);
}

.p-news .c-icon-circle::before {
  content: none;
}

.p-news .c-icon-circle::after {
  content: none;
}


/* =============================================
   6-6. Page Section – CTA / Recruit & Contact (p-cta)
   ============================================= */
.p-cta__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
}

.p-cta__item:only-child {
  grid-column: 1 / -1;
}

.p-cta__item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-height: clamp(240px, 30vw, 380px);
  padding: clamp(40px, 6vw, 88px);
  overflow: hidden;
  text-decoration: none;
}

.p-cta__bg-wrap {
  position: absolute;
  inset: 0;
  background-color: var(--color-dark);
  /* 画像フォールバック */
}

.p-cta__bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}

.p-cta__item:hover .p-cta__bg-img {
  transform: scale(1.05);
}

.p-cta__overlay {
  position: absolute;
  inset: 0;
  background-color: rgba(15, 20, 38, 0.55);
  transition: background-color var(--transition-base);
}

.p-cta__item:hover .p-cta__overlay {
  background-color: rgba(15, 20, 38, 0.40);
}

.p-cta__content {
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  color: var(--color-bg-white);
  text-align: left;
}

.p-cta__en {
  font-family: var(--font-en);
  font-size: clamp(1.75rem, 3.5vw, 2.75rem);
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 1.1;
}

.p-cta__ja {
  font-size: clamp(0.875rem, 1.5vw, 1rem);
  font-weight: 500;
  margin-bottom: 0;
}

.p-cta .c-icon-circle--arrow {
  position: absolute;
  right: clamp(32px, 5vw, 72px);
  bottom: clamp(32px, 5vw, 72px);
  z-index: 2;
  width: 58px;
  height: 58px;
  aspect-ratio: 1 / 1;
  border: 1.5px solid var(--color-bg-white);
  background-color: var(--color-bg-white);
  color: var(--color-dark);
  transition:
    background-color var(--transition-base),
    border-color var(--transition-base),
    color var(--transition-base);
}

.p-cta .c-icon-circle--arrow::before {
  content: '';
  width: 18px;
  height: 18px;
  background: url("data:image/svg+xml,%3Csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M4.5%209H13.5M10.125%205.625L13.5%209L10.125%2012.375'%20stroke='%231C2437'%20stroke-width='2.1'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  border: 0;
  transform: none;
}

.p-cta__item:hover .c-icon-circle--arrow,
.p-cta__item:focus-visible .c-icon-circle--arrow {
  background-color: transparent;
  border-color: var(--color-bg-white);
  color: var(--color-bg-white);
}

.p-cta__item:hover .c-icon-circle--arrow::before,
.p-cta__item:focus-visible .c-icon-circle--arrow::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M4.5%209H13.5M10.125%205.625L13.5%209L10.125%2012.375'%20stroke='white'%20stroke-width='2.1'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E");
}


/* =============================================
   7. Media Queries
   ============================================= */

/* ─────────────────────────────────────────────
   PC Header  992px〜
   ───────────────────────────────────────────── */
@media (min-width: 992px) {
  body {
    padding-top: 0;
  }

  .l-header {
    position: relative;
    height: 0;
    background-color: transparent;
  }

  .l-header.is-scrolled {
    box-shadow: none;
  }

  .l-header__inner {
    align-items: flex-start;
    max-width: none;
    height: 98px;
    padding-top: 12px;
    padding-right: 12px;
    padding-left: 20px;
  }

  .l-header__logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 248px;
    height: 86px;
    margin-top: -12px;
    margin-left: -20px;
    background-color: var(--color-bg-white);
  }

  .l-header__logo .c-logo__img {
    width: 128px;
    height: auto;
  }

  .l-header__nav {
    height: 58px;
    gap: 28px;
    padding: 9px 10px 9px 30px;
    background-color: var(--color-bg-white);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(28, 36, 55, 0.08);
  }

  .c-gnav {
    gap: 28px;
  }

  .c-gnav__link {
    font-size: 0.8125rem;
    letter-spacing: 0.01em;
  }

  .l-header__contact {
    gap: 12px;
    min-height: 40px;
    margin-left: 0;
    padding: 0 10px 0 20px;
    border-width: 0;
    border-radius: 10px;
    font-size: 0.8125rem;
  }

  .l-header__contact::after {
    content: '';
    display: block;
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    background-color: var(--color-dark);
    background-image: url("data:image/svg+xml,%3Csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M3%206H9M6.75%203.75L9%206L6.75%208.25'%20stroke='white'%20stroke-width='1.4'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 12px 12px;
  }
}

/* ─────────────────────────────────────────────
   7-1. Tablet  768px〜991px
   ───────────────────────────────────────────── */
@media (max-width: 991px) {

  /* Concept: 2カラム → 縦積み */
  .p-concept__inner {
    grid-template-columns: 1fr;
  }

  .p-concept__image {
    order: -1;
    /* 画像を上に */
  }

  .p-concept__img {
    height: clamp(240px, 45vw, 380px);
  }

  /* Methods: 3カラム → 2カラム */
  .p-methods__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  /* About: 2カラム → 縦積み */
  .p-about__inner {
    grid-template-columns: 1fr;
  }

  .p-about__image {
    order: -1;
  }

  .p-about__img {
    height: 280px;
  }

  /* News: グリッド → 縦積み */
  .p-news__inner {
    grid-template-columns: 1fr;
  }

  .p-news__aside {
    position: static;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }

  .p-news__title {
    margin-bottom: var(--spacing-md);
  }

  /* Footer */
  .l-footer__inner {
    flex-direction: column;
    gap: var(--spacing-lg);
  }

  .l-footer__nav-block {
    align-items: flex-start;
  }
}


/* ─────────────────────────────────────────────
   7-2. Mobile  〜767px
   ───────────────────────────────────────────── */
@media (max-width: 767px) {

  /* ヘッダー：ハンバーガーメニュー化 */
  .l-header__hamburger {
    display: flex;
  }

  .l-header__nav {
    /* モバイルメニュー：画面上部からスライドダウン */
    position: fixed;
    top: var(--header-height);
    left: 0;
    width: 100%;
    height: calc(100vh - var(--header-height));
    background-color: var(--color-bg-white);
    flex-direction: column;
    justify-content: center;
    gap: var(--spacing-lg);
    padding: var(--spacing-xl) var(--spacing-md);
    transform: translateY(-100%);
    opacity: 0;
    pointer-events: none;
    transition:
      transform 0.35s ease,
      opacity 0.35s ease;
    z-index: 99;
    overflow-y: auto;
  }

  /* JS で .is-open クラスが付与される */
  .l-header__nav.is-open {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }

  .c-gnav {
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-md);
  }

  .c-gnav__link {
    font-size: 1.125rem;
  }

  .l-header__contact {
    margin-left: 0;
  }

  /* Hero */
  .p-hero {
    min-height: 360px;
  }

  .p-hero__content {
    padding-bottom: 40px;
  }

  .p-hero__title {
    font-size: clamp(1.95rem, 8vw, 2.25rem);
    line-height: 1.35;
  }

  .p-hero__catch-line {
    white-space: nowrap;
  }

  .p-hero__subtitle {
    font-size: clamp(0.875rem, 3.7vw, 1rem);
    line-height: 1.75;
  }

  .p-hero__subtitle-line {
    white-space: nowrap;
  }

  .sp-only {
    display: block;
  }

  /* Concept */
  .p-concept__watermark-text {
    font-size: clamp(2.5rem, 10vw, 5rem);
  }

  /* Methods: 2カラム → 1カラム */
  .p-methods__grid {
    grid-template-columns: 1fr;
  }

  .p-methods__header {
    flex-direction: column;
    align-items: flex-start;
  }

  /* About */
  .p-about__img {
    height: 220px;
  }

  /* News */
  .p-news__link {
    column-gap: 12px;
    row-gap: 6px;
  }

  .p-news__date {
    width: auto;
  }

  .p-news__text {
    width: auto;
  }

  /* CTA: 2カラム → 縦積み */
  .p-cta__inner {
    grid-template-columns: 1fr;
  }

  .p-cta__item {
    min-height: 220px;
    padding: 32px 28px;
  }

  .p-cta .c-icon-circle--arrow {
    right: 28px;
    bottom: 28px;
    width: 48px;
    height: 48px;
  }

  /* Footer */
  .l-footer {
    text-align: center;
  }

  .l-footer__inner,
  .l-footer__info,
  .l-footer__address,
  .l-footer__nav-block,
  .l-footer__bottom-inner,
  .l-footer__copyright {
    text-align: center;
  }

  .l-footer__inner,
  .l-footer__nav-block {
    align-items: center;
  }

  .l-footer__nav-block {
    gap: 0;
  }

  .l-footer__nav-list {
    display: none;
  }

  .l-footer__bottom-inner {
    flex-direction: column;
    align-items: center;
    gap: 8px;
  }

  .l-footer__logo,
  .l-footer__logo .c-logo__img {
    margin-right: auto;
    margin-left: auto;
  }
}


/* ─────────────────────────────────────────────
   Reduced Motion
   ───────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .p-concept__watermark-track {
    animation: none;
    transform: translateX(0);
  }
}


/* =============================================
   Company Page
   ============================================= */
.p-company-hero {
  position: relative;
  min-height: clamp(340px, 34vw, 480px);
  display: flex;
  align-items: center;
  overflow: hidden;
  background-color: var(--color-dark);
}

.p-company-hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.p-company-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to right,
      rgba(10, 15, 28, 0.48) 0%,
      rgba(10, 15, 28, 0.22) 60%,
      rgba(10, 15, 28, 0.05) 100%);
}

.p-company-hero__content {
  position: relative;
  z-index: 1;
  padding-top: var(--header-height);
  color: var(--color-bg-white);
}

.p-company-hero__en {
  font-family: var(--font-en);
  font-size: clamp(2.5rem, 5.6vw, 4rem);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: 0.02em;
  margin-bottom: 10px;
}

.p-company-hero__title {
  font-size: clamp(1.25rem, 2.2vw, 1.75rem);
  color: var(--color-bg-white);
}

.p-company-breadcrumb {
  padding-block: 18px;
}

.p-company-breadcrumb__inner {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.75rem;
  color: var(--color-dark);
}

.p-company-breadcrumb__home {
  display: inline-block;
  width: 14px;
  height: 14px;
  background-color: var(--color-dark);
  clip-path: polygon(50% 0, 100% 42%, 100% 100%, 62% 100%, 62% 64%, 38% 64%, 38% 100%, 0 100%, 0 42%);
}

.p-company-breadcrumb__current::before {
  content: '-';
  margin-right: 8px;
  color: rgba(28, 36, 55, 0.45);
}

.p-company-message,
.p-company-profile {
  padding-block: clamp(56px, 8vw, 96px);
}

.p-company-section-heading {
  margin-bottom: clamp(28px, 4vw, 44px);
}

.p-company-section-heading__en {
  display: block;
  font-family: var(--font-en);
  font-size: clamp(0.8125rem, 1.1vw, 0.9375rem);
  font-weight: 700;
  color: #0068D8;
  margin-bottom: 8px;
}

.p-company-section-heading__ja {
  font-size: clamp(2rem, 4vw, 3rem);
  color: var(--color-dark);
  line-height: 1.25;
}

.p-company-message__main-image {
  margin-bottom: clamp(36px, 5vw, 64px);
}

.p-company-message__main-image img,
.p-company-message__sub-image img {
  width: 100%;
  display: block;
  object-fit: cover;
}

.p-company-message__main-image img {
  height: auto;
  object-fit: contain;
}

.p-company-message__content {
  display: grid;
  grid-template-columns: minmax(240px, 360px) 1fr;
  gap: clamp(40px, 7vw, 92px);
  align-items: center;
}

.p-company-message__sub-image img {
  aspect-ratio: 1 / 1;
  object-position: center top;
}

.p-company-message__text {
  color: var(--color-text);
  font-size: clamp(0.875rem, 1.2vw, 0.9375rem);
  line-height: 1.8;
}

.p-company-message__text p+p {
  margin-top: 1em;
}

.p-company-message__name {
  margin-top: var(--spacing-md);
  text-align: right;
  font-weight: 500;
}

.p-company-values {
  padding-block: clamp(56px, 8vw, 96px);
  background-color: var(--color-bg-light);
}

.p-company-values__heading {
  margin-bottom: clamp(28px, 4vw, 44px);
}

.p-company-values__en {
  display: block;
  font-family: var(--font-en);
  font-size: clamp(0.8125rem, 1.1vw, 0.9375rem);
  font-weight: 700;
  color: #0068D8;
  margin-bottom: 8px;
}

.p-company-values__title {
  font-size: clamp(2rem, 4vw, 3rem);
  color: var(--color-dark);
  line-height: 1.25;
  white-space: nowrap;
}

.p-company-values__inner {
  display: grid;
  grid-template-columns: minmax(280px, 0.72fr) minmax(420px, 1.28fr);
  gap: clamp(40px, 7vw, 88px);
  align-items: center;
}

.p-company-values__list {
  color: var(--color-dark);
  font-size: clamp(0.875rem, 1.2vw, 0.9375rem);
  line-height: 1.8;
}

.p-company-values__lead {
  margin-top: var(--spacing-md);
  color: var(--color-dark);
  font-weight: 700;
}

.p-company-values__figure {
  margin: 0;
}

.p-company-values__figure img {
  display: block;
  width: 100%;
  max-width: 620px;
  height: auto;
  margin-left: auto;
}

.p-company-values__note {
  margin-top: clamp(28px, 4vw, 44px);
  color: var(--color-text-sub);
  font-size: 0.8125rem;
  line-height: 1.8;
}

.p-company-profile__table {
  border-top: 1px solid var(--color-border);
}

.p-company-profile__row {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: var(--spacing-md);
  padding: 22px 0;
  border-bottom: 1px solid var(--color-border);
}

.p-company-profile__row dt {
  color: var(--color-dark);
  font-weight: 700;
}

.p-company-profile__row dd {
  color: var(--color-text);
  line-height: 1.8;
}

.p-company-profile__row a {
  color: inherit;
  transition: color var(--transition-base);
}

.p-company-profile__row a:hover {
  color: var(--color-primary);
}

.p-company-profile__map {
  margin-top: 18px;
  width: 100%;
  aspect-ratio: 890 / 380;
  overflow: hidden;
}

.p-company-profile__map iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

@media (max-width: 991px) {

  .p-company-message__content,
  .p-company-values__inner {
    grid-template-columns: 1fr;
  }

  .p-company-values__figure img {
    margin-inline: auto;
  }

  .p-company-message__sub-image {
    max-width: 360px;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .p-company-message__sub-image {
    display: none;
  }
}

@media (max-width: 767px) {
  .p-company-hero {
    min-height: 260px;
  }

  .p-company-hero__content {
    padding-top: calc(var(--header-height) + 32px);
  }

  .p-company-breadcrumb {
    padding-block: 14px;
  }

  .p-company-message,
  .p-company-values,
  .p-company-profile {
    padding-block: 56px;
  }

  .p-company-message__main-image img {
    height: auto;
    aspect-ratio: auto;
  }

  .p-company-message__text {
    order: 1;
  }

  .p-company-message__sub-image {
    order: 2;
    max-width: 100%;
  }

  .p-company-message__sub-image img {
    width: 100%;
    height: auto;
  }

  .p-company-profile__map {
    aspect-ratio: 16 / 9;
  }

  .p-company-values__title {
    white-space: normal;
  }

  .p-company-profile__row {
    grid-template-columns: 1fr;
    gap: 8px;
  }
}

/* =============================
   Recruit Page
   ============================= */
.p-recruit-hero {
  position: relative;
  min-height: 486px;
  overflow: hidden;
  color: var(--color-bg-white);
}

.p-recruit-hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.p-recruit-hero__overlay {
  position: absolute;
  inset: 0;
  background: rgba(25, 34, 55, 0.28);
}

.p-recruit-hero__content {
  position: relative;
  z-index: 1;
  min-height: 486px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: var(--header-height);
}

.p-recruit-hero__en {
  font-family: var(--font-en);
  font-size: clamp(3rem, 6vw, 4.375rem);
  font-weight: 700;
  line-height: 1;
  margin-bottom: 18px;
}

.p-recruit-hero__title {
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  line-height: 1.35;
}

.p-recruit-breadcrumb {
  padding-block: 18px;
  background-color: var(--color-bg-white);
}

.p-recruit-breadcrumb__inner {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--color-dark);
  font-size: 0.75rem;
  font-weight: 700;
}

.p-recruit-breadcrumb__home {
  position: relative;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.p-recruit-breadcrumb__home::before {
  content: '';
  position: absolute;
  inset: 0;
  background-color: var(--color-dark);
  clip-path: polygon(50% 0, 100% 42%, 100% 100%, 62% 100%, 62% 64%, 38% 64%, 38% 100%, 0 100%, 0 42%);
}

.p-recruit-breadcrumb__current::before {
  content: '-';
  margin-right: 8px;
  color: rgba(28, 36, 55, 0.45);
}

.p-recruit-jobs,
.p-recruit-flow,
.p-recruit-apply {
  padding-block: clamp(64px, 8vw, 104px);
}

.p-recruit-flow {
  padding-top: clamp(72px, 10vw, 128px);
}

.p-recruit-section-heading {
  margin-bottom: clamp(17px, 2.5vw, 28px);
}

.p-recruit-section-heading--large {
  margin-bottom: clamp(24px, 3vw, 40px);
}

.p-recruit-section-heading__en {
  display: block;
  font-family: var(--font-en);
  font-size: clamp(1rem, 1.4vw, 1.125rem);
  font-weight: 700;
  color: #0068D8;
  line-height: 1.2;
  margin-bottom: 12px;
}

.p-recruit-section-heading__ja {
  font-size: clamp(2rem, 4vw, 3rem);
  color: var(--color-dark);
  line-height: 1.25;
}

.p-recruit-jobs__list {
  display: grid;
  gap: clamp(56px, 7vw, 80px);
}

.recruit-job__title {
  color: var(--color-dark);
  font-size: clamp(1.5rem, 2.4vw, 1.875rem);
  line-height: 1.5;
  margin-bottom: 24px;
}

.recruit-job__rows {
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.recruit-job__row {
  display: grid;
  grid-template-columns: minmax(150px, 220px) 1fr;
  gap: clamp(28px, 5vw, 72px);
  padding: 24px 28px;
}

.recruit-job__row+.recruit-job__row {
  border-top: 1px solid var(--color-border);
}

.recruit-job__term {
  color: var(--color-dark);
  font-weight: 700;
  line-height: 1.7;
}

.recruit-job__term::before {
  content: '【';
}

.recruit-job__term::after {
  content: '】';
}

.recruit-job__desc {
  color: var(--color-text);
  font-size: 0.9375rem;
  line-height: 1.8;
}

.recruit-job__desc p+p {
  margin-top: 0.2em;
}

.recruit-job__desc ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.recruit-job__desc li::before {
  content: '・';
}

.p-recruit-flow__list {
  display: grid;
  gap: 68px;
  width: 80%;
  max-width: 784px;
  margin-inline: auto;
  counter-reset: flow;
}

.p-recruit-flow__item {
  position: relative;
  display: grid;
  grid-template-columns: 157px 1fr 144px;
  align-items: center;
  min-height: 125px;
  border: 2.5px solid var(--color-dark);
  border-radius: 999px;
  color: var(--color-dark);
  background-color: var(--color-bg-white);
}

.p-recruit-flow__item:not(:last-child)::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: -52px;
  width: 34px;
  height: 34px;
  background: url("data:image/svg+xml,%3Csvg%20width='34'%20height='34'%20viewBox='0%200%2034%2034'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M17%205V28M8.5%2019.5L17%2028L25.5%2019.5'%20stroke='%231C2437'%20stroke-width='3.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  transform: translateX(-50%);
}

.p-recruit-flow__step {
  width: 157px;
  height: 157px;
  margin-left: -2.5px;
  display: flex;
  align-items: center;
  justify-content: center;
  align-self: center;
  border-radius: 50%;
  background-color: var(--color-dark);
  color: var(--color-bg-white);
  font-family: var(--font-en);
  font-size: 1.8rem;
  line-height: 1;
}

.p-recruit-flow__body {
  padding-inline: clamp(22px, 3.2vw, 43px);
}

.p-recruit-flow__title {
  font-size: clamp(1.6rem, 3.2vw, 2.4rem);
  line-height: 1.25;
  margin-bottom: 10px;
}

.p-recruit-flow__text {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.8;
}

.p-recruit-flow__icon {
  justify-self: center;
  height: 66px;
}

.p-recruit-flow__icon img {
  display: block;
  width: auto;
  height: 100%;
  max-width: 120px;
  object-fit: contain;
}

.p-recruit-apply {
  padding-top: clamp(48px, 7vw, 92px);
}

.p-recruit-apply__lead {
  color: var(--color-dark);
  font-weight: 700;
  line-height: 1.8;
  margin-bottom: clamp(24px, 3.5vw, 39px);
}

.p-recruit-apply__cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  align-items: stretch;
}

.p-recruit-apply__card {
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 176px;
  padding-inline: clamp(20px, 4vw, 44px);
}

.p-recruit-apply__card--mail {
  border-left: 1px solid var(--color-border);
}

.p-recruit-apply__title {
  color: var(--color-dark);
  font-size: clamp(1.125rem, 1.8vw, 1.375rem);
  line-height: 1.5;
  margin-bottom: 26px;
}

.p-recruit-apply__tel {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  color: var(--color-dark);
  font-family: var(--font-en);
  font-size: clamp(2.25rem, 3.8vw, 2.875rem);
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}

.p-recruit-apply__tel-icon {
  display: block;
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  object-fit: contain;
}

.p-recruit-apply__time {
  margin-top: 18px;
  color: var(--color-dark);
  font-size: 0.8125rem;
  font-weight: 700;
}

.p-recruit-apply__button {
  display: flex;
  align-items: center;
  min-height: 88px;
  width: 100%;
  gap: 20px;
  padding: 18px 28px 18px 34px;
  border-radius: 999px;
  background-color: #1F78D8;
  color: var(--color-bg-white);
  font-size: 1.125rem;
  font-weight: 700;
  white-space: nowrap;
  transition: background-color var(--transition-base), transform var(--transition-base);
}

.p-recruit-apply__button:hover {
  background-color: var(--color-dark);
  transform: translateY(-2px);
}

.p-recruit-apply__mail-icon {
  display: block;
  width: 44px;
  height: 34px;
  flex: 0 0 44px;
  object-fit: contain;
}

.p-recruit-apply__button-icon {
  position: relative;
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  margin-left: auto;
  border-radius: 50%;
  background-color: var(--color-bg-white);
}

.p-recruit-apply__button-icon::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 8px;
  height: 8px;
  border-top: 3px solid #1F78D8;
  border-right: 3px solid #1F78D8;
  transform: translate(-60%, -50%) rotate(45deg);
}

@media (max-width: 991px) {
  .p-recruit-flow__list {
    width: 100%;
    max-width: 720px;
  }

  .p-recruit-flow__item {
    grid-template-columns: 150px 1fr 120px;
    min-height: 126px;
  }

  .p-recruit-flow__step {
    width: 150px;
    height: 150px;
    font-size: 1.75rem;
  }

  .p-recruit-flow__icon {
    height: 66px;
  }

  .p-recruit-apply__cards {
    grid-template-columns: 1fr;
    gap: 40px;
  }

  .p-recruit-apply__card--mail {
    border-left: 0;
    border-top: 1px solid var(--color-border);
    padding-top: 40px;
  }
}

@media (max-width: 767px) {
  .p-recruit-hero {
    min-height: 260px;
  }

  .p-recruit-hero__content {
    min-height: 260px;
    padding-top: calc(var(--header-height) + 32px);
  }

  .p-recruit-breadcrumb {
    padding-block: 14px;
  }

  .p-recruit-jobs,
  .p-recruit-flow,
  .p-recruit-apply {
    padding-block: 56px;
  }

  .p-recruit-section-heading,
  .p-recruit-apply__title,
  .p-recruit-apply__time {
    text-align: center;
  }

  .recruit-job__row {
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 20px 0;
  }

  .p-recruit-flow__list {
    gap: 54px;
  }

  .p-recruit-flow__item {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
    min-height: 0;
    padding: 30px 24px;
    border-radius: 28px;
  }

  .p-recruit-flow__item:not(:last-child)::after {
    bottom: -43px;
    width: 30px;
    height: 30px;
  }

  .p-recruit-flow__step {
    width: 104px;
    height: 104px;
    margin: -76px 0 20px;
    font-size: 1.25rem;
  }

  .p-recruit-flow__list {
    padding-top: 76px;
  }

  .p-recruit-flow__body {
    padding-inline: 0;
  }

  .p-recruit-flow__icon {
    height: 58px;
    margin-top: 20px;
  }

  .p-recruit-apply__tel {
    gap: 14px;
    font-size: clamp(2rem, 10vw, 2.75rem);
  }

  .p-recruit-apply__tel-icon {
    width: 42px;
    height: 42px;
    flex-basis: 42px;
  }

  .p-recruit-apply__button {
    min-height: 72px;
    padding-inline: 24px;
    gap: 14px;
    font-size: 1rem;
  }

  .p-recruit-apply__mail-icon {
    width: 36px;
    height: 28px;
    flex-basis: 36px;
  }
}

/* =============================
   Privacy Policy Page
   ============================= */
.p-privacy-hero {
  position: relative;
  min-height: 486px;
  overflow: hidden;
  color: var(--color-bg-white);
}

.p-privacy-hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.p-privacy-hero__overlay {
  position: absolute;
  inset: 0;
  background: rgba(24, 34, 52, 0.34);
}

.p-privacy-hero__content {
  position: relative;
  z-index: 1;
  min-height: 486px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: var(--header-height);
}

.p-privacy-hero__en {
  font-family: var(--font-en);
  font-size: clamp(3rem, 6vw, 4.375rem);
  font-weight: 700;
  line-height: 1;
  margin-bottom: 18px;
}

.p-privacy-hero__title {
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  line-height: 1.35;
}

.p-privacy-breadcrumb {
  padding-block: 18px;
  background-color: var(--color-bg-white);
}

.p-privacy-breadcrumb__inner {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--color-dark);
  font-size: 0.75rem;
  font-weight: 700;
}

.p-privacy-breadcrumb__home {
  position: relative;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.p-privacy-breadcrumb__home::before {
  content: '';
  position: absolute;
  inset: 0;
  background-color: var(--color-dark);
  clip-path: polygon(50% 0, 100% 42%, 100% 100%, 62% 100%, 62% 64%, 38% 64%, 38% 100%, 0 100%, 0 42%);
}

.p-privacy-breadcrumb__current::before {
  content: '-';
  margin-right: 8px;
  color: rgba(28, 36, 55, 0.45);
}

.privacy {
  padding-block: clamp(72px, 9vw, 112px);
}

.privacy__lead {
  color: var(--color-dark);
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  font-weight: 700;
  line-height: 1.8;
  margin-bottom: clamp(44px, 6vw, 68px);
}

.privacy__section+.privacy__section {
  margin-top: clamp(56px, 8vw, 86px);
}

.privacy__heading {
  padding: 16px 24px;
  background-color: #E6F1F9;
  color: #15304E;
  font-size: clamp(1.2rem, 1.84vw, 1.6rem);
  line-height: 1.45;
  margin-bottom: clamp(24px, 3.2vw, 36px);
}

.privacy__text {
  color: #15304E;
  font-size: clamp(0.9375rem, 1.2vw, 1rem);
  font-weight: 700;
  line-height: 1.8;
}

.privacy__text+.privacy__text {
  margin-top: 0.45em;
}

.privacy__list {
  margin-top: 0.25em;
  color: #15304E;
  font-size: clamp(0.9375rem, 1.2vw, 1rem);
  font-weight: 700;
  line-height: 1.8;
}

.privacy__list li::before {
  content: '・';
}

.privacy__contact {
  margin-top: clamp(28px, 4vw, 40px);
  color: #15304E;
  font-size: clamp(0.9375rem, 1.2vw, 1rem);
  font-weight: 700;
  line-height: 1.8;
}

.privacy__contact a {
  color: inherit;
}

@media (max-width: 767px) {
  .p-privacy-hero {
    min-height: 260px;
  }

  .p-privacy-hero__content {
    min-height: 260px;
    padding-top: calc(var(--header-height) + 32px);
  }

  .p-privacy-breadcrumb {
    padding-block: 14px;
  }

  .privacy {
    padding-block: 56px;
  }

  .privacy__heading {
    padding: 12px 16px;
  }
}

/* =============================
   News Archive Page
   ============================= */
.p-news-hero {
  position: relative;
  min-height: 486px;
  overflow: hidden;
  color: var(--color-bg-white);
}

.p-news-hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.p-news-hero__overlay {
  position: absolute;
  inset: 0;
  background: rgba(24, 34, 52, 0.28);
}

.p-news-hero__content {
  position: relative;
  z-index: 1;
  min-height: 486px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: var(--header-height);
}

.p-news-hero__en {
  font-family: var(--font-en);
  font-size: clamp(3rem, 6vw, 4.375rem);
  font-weight: 700;
  line-height: 1;
  margin-bottom: 18px;
}

.p-news-hero__title {
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  line-height: 1.35;
}

.p-news-breadcrumb {
  padding-block: 18px;
  background-color: var(--color-bg-white);
}

.p-news-breadcrumb__inner {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--color-dark);
  font-size: 0.75rem;
  font-weight: 700;
}

.p-news-breadcrumb__home {
  position: relative;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.p-news-breadcrumb__home::before {
  content: '';
  position: absolute;
  inset: 0;
  background-color: var(--color-dark);
  clip-path: polygon(50% 0, 100% 42%, 100% 100%, 62% 100%, 62% 64%, 38% 64%, 38% 100%, 0 100%, 0 42%);
}

.p-news-breadcrumb__current::before {
  content: '-';
  margin-right: 8px;
  color: rgba(28, 36, 55, 0.45);
}

.news-page {
  padding-block: clamp(82px, 9vw, 118px) clamp(110px, 12vw, 152px);
}

.news-page__inner {
  max-width: calc(1050px + var(--container-pad) * 2);
}

.news-page__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 170px;
  gap: clamp(96px, 11vw, 160px);
  align-items: start;
}

.news-page__main {
  min-width: 0;
}

.news-list {
  border-top: 1px solid rgba(28, 36, 55, 0.14);
}

.news-list__item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 44px;
  align-items: center;
  gap: 32px;
  padding: 24px 0;
  border-bottom: 1px solid rgba(28, 36, 55, 0.14);
  color: var(--color-dark);
  transition: padding-left var(--transition-base);
}

.news-list__body {
  display: block;
}

.news-list__date {
  display: block;
  font-family: var(--font-en);
  font-size: clamp(0.75rem, 1vw, 0.8125rem);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.05em;
  color: #006FD6;
  margin-bottom: 6px;
}

.news-list__title {
  display: block;
  font-size: clamp(0.9375rem, 1.4vw, 1rem);
  font-weight: 500;
  line-height: 1.6;
  color: var(--color-text);
  transition: color var(--transition-base);
}

.news-list__icon {
  width: 42px;
  height: 42px;
  aspect-ratio: 1 / 1;
  border: 0;
  background-color: var(--color-dark);
  background-image: url("data:image/svg+xml,%3Csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M3%206H9M6.75%203.75L9%206L6.75%208.25'%20stroke='white'%20stroke-width='1.4'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
  transition: background-color var(--transition-base);
}

.news-list__icon::before,
.news-list__icon::after {
  content: none;
}

.news-list__item:hover,
.news-list__item:focus-visible {
  padding-left: 6px;
}

.news-list__item:hover .news-list__title,
.news-list__item:focus-visible .news-list__title {
  color: var(--color-primary);
}

.news-list__item:hover .news-list__icon,
.news-list__item:focus-visible .news-list__icon {
  background-color: var(--color-primary);
}

.news-archive {
  padding-top: 18px;
  color: var(--color-dark);
}

.news-archive__heading {
  font-family: var(--font-en);
  font-size: clamp(2.5rem, 3.6vw, 3.25rem);
  font-weight: 700;
  line-height: 1;
  margin-bottom: 28px;
}

.news-archive__item+.news-archive__item {
  margin-top: 16px;
}

.news-archive__item a {
  color: #006FD6;
  font-family: var(--font-en);
  font-size: 1.625rem;
  font-weight: 700;
  line-height: 1.25;
  transition: color var(--transition-base);
}

.news-archive__item a:hover,
.news-archive__item a:focus-visible {
  color: var(--color-primary-hover);
}

.news-archive__empty {
  color: var(--color-text-sub);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.7;
}

.news-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  width: 100%;
  margin-top: clamp(56px, 7vw, 82px);
  color: var(--color-dark);
}

.news-pagination__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  aspect-ratio: 1 / 1;
  border: 1px solid var(--color-dark);
  border-radius: 50%;
  font-family: var(--font-en);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
  transition: background-color var(--transition-base), color var(--transition-base), border-color var(--transition-base);
}

.news-pagination__link:not(.news-pagination__link--text) {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  line-height: 1;
  text-align: center;
  text-indent: -1px;
}

.news-pagination__link--text {
  width: auto;
  height: auto;
  border: 0;
  border-radius: 0;
  padding-inline: 14px;
}

.news-pagination__link.is-current,
.news-pagination__link:not(.news-pagination__link--text):hover,
.news-pagination__link:not(.news-pagination__link--text):focus-visible {
  border-color: var(--color-dark);
  background-color: var(--color-dark);
  color: var(--color-bg-white);
}

.news-pagination__link--text:hover,
.news-pagination__link--text:focus-visible {
  color: var(--color-primary-hover);
}

@media (max-width: 991px) {
  .news-page__layout {
    grid-template-columns: 1fr;
    gap: 56px;
  }

  .news-archive {
    padding-top: 0;
  }
}

@media (max-width: 767px) {
  .p-news-hero {
    min-height: 260px;
  }

  .p-news-hero__content {
    min-height: 260px;
    padding-top: calc(var(--header-height) + 32px);
  }

  .p-news-breadcrumb {
    padding-block: 14px;
  }

  .news-page {
    padding-block: 56px 72px;
  }

  .news-list__item {
    grid-template-columns: minmax(0, 1fr) 38px;
    gap: 18px;
    padding: 20px 0;
  }

  .news-list__icon {
    width: 38px;
    height: 38px;
  }

  .news-archive__heading {
    font-size: 2.5rem;
  }

  .news-pagination {
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 48px;
  }
}

/* =============================
   News Detail Page
   ============================= */
.p-news-breadcrumb__link {
  color: inherit;
  transition: color var(--transition-base);
}

.p-news-breadcrumb__link::before {
  content: '-';
  margin-right: 8px;
  color: rgba(28, 36, 55, 0.45);
}

.p-news-breadcrumb__link:hover,
.p-news-breadcrumb__link:focus-visible {
  color: var(--color-primary-hover);
}

.news-single {
  padding-block: clamp(41px, 4.5vw, 59px) clamp(110px, 12vw, 152px);
}

.news-single__inner {
  max-width: calc(1050px + var(--container-pad) * 2);
}

.news-single__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 170px;
  gap: clamp(96px, 11vw, 160px);
  align-items: start;
}

.news-single__main {
  min-width: 0;
}

.news-single .news-archive__heading {
  font-size: clamp(2rem, 2.8vw, 2.5rem);
}

.news-single .news-archive__item a {
  font-size: clamp(1.5rem, 1.8vw, 1.625rem);
}

.news-single__date {
  display: block;
  font-family: var(--font-en);
  font-size: clamp(0.75rem, 1vw, 0.8125rem);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.05em;
  color: #006FD6;
  margin-bottom: 9px;
}

.news-single__title {
  color: var(--color-dark);
  font-size: clamp(2rem, 3.2vw, 2.625rem);
  line-height: 1.45;
  margin-bottom: clamp(22px, 2.8vw, 32px);
}

.news-single__content {
  color: var(--color-dark);
  font-size: clamp(0.9375rem, 1.2vw, 1rem);
  font-weight: 700;
  line-height: 1.8;
}

.news-single__content>*+* {
  margin-top: 0.65em;
}

.news-single__content h2,
.news-single__content h3 {
  color: var(--color-dark);
  line-height: 1.55;
  margin-top: 2.4em;
}

.news-single__content h2 {
  font-size: clamp(1.5rem, 2.2vw, 1.875rem);
}

.news-single__content h3 {
  font-size: clamp(1.25rem, 1.8vw, 1.5rem);
}

.news-single__content ul,
.news-single__content ol {
  padding-left: 1.4em;
}

.news-single__content ul {
  list-style: disc;
}

.news-single__content ol {
  list-style: decimal;
}

.news-single__content a {
  color: #006FD6;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.news-single__content blockquote {
  padding: 18px 24px;
  border-left: 4px solid var(--color-primary);
  background-color: var(--color-bg-light);
}

.news-single__content figure {
  margin-top: clamp(28px, 4vw, 40px);
}

.news-single__content img {
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.news-single-nav {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  align-items: center;
  gap: 24px;
  margin-top: clamp(48px, 6vw, 64px);
  color: var(--color-dark);
}

.news-single-nav__link {
  font-family: var(--font-en);
  font-size: clamp(1rem, 1.4vw, 1.125rem);
  font-weight: 700;
  line-height: 1.4;
  transition: color var(--transition-base);
}

.news-single-nav__link:nth-child(2) {
  text-align: center;
}

.news-single-nav__link:nth-child(3) {
  text-align: right;
}

.news-single-nav__link--back:only-child {
  grid-column: 1 / -1;
  text-align: center;
}

.news-single-nav__link:hover,
.news-single-nav__link:focus-visible {
  color: var(--color-primary-hover);
}

@media (max-width: 991px) {
  .news-single__layout {
    grid-template-columns: 1fr;
    gap: 64px;
  }
}

@media (max-width: 767px) {
  .news-single {
    padding-block: 28px 72px;
  }

  .news-single__title {
    margin-bottom: 18px;
  }

  .news-single__content {
    line-height: 1.8;
  }

  .news-single__content p br {
    display: none;
  }

  .news-single-nav {
    gap: 14px;
  }
}

/* =============================
   Contact Page
   ============================= */
.contact-hero {
  position: relative;
  min-height: 486px;
  overflow: hidden;
  color: var(--color-bg-white);
}

.contact-hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.contact-hero__overlay {
  position: absolute;
  inset: 0;
  background: rgba(24, 34, 52, 0.24);
}

.contact-hero__content {
  position: relative;
  z-index: 1;
  min-height: 486px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: var(--header-height);
}

.contact-hero__en {
  font-family: var(--font-en);
  font-size: clamp(3rem, 6vw, 4.375rem);
  font-weight: 700;
  line-height: 1;
  margin-bottom: 18px;
}

.contact-hero__title {
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  line-height: 1.35;
}

.contact-breadcrumb {
  padding-block: 18px;
  background-color: var(--color-bg-white);
}

.contact-breadcrumb__inner {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--color-dark);
  font-size: 0.75rem;
  font-weight: 700;
}

.contact-breadcrumb__home {
  position: relative;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.contact-breadcrumb__home::before {
  content: '';
  position: absolute;
  inset: 0;
  background-color: var(--color-dark);
  clip-path: polygon(50% 0, 100% 42%, 100% 100%, 62% 100%, 62% 64%, 38% 64%, 38% 100%, 0 100%, 0 42%);
}

.contact-breadcrumb__current::before {
  content: '-';
  margin-right: 8px;
  color: rgba(28, 36, 55, 0.45);
}

.contact-tel-fax,
.contact-form-section {
  color: var(--color-dark);
}

.contact-tel-fax {
  padding-block: clamp(82px, 9vw, 118px) clamp(70px, 8vw, 96px);
}

.contact-form-section {
  padding-bottom: clamp(110px, 12vw, 152px);
}

.contact-tel-fax__inner,
.contact-form-section__inner {
  max-width: calc(var(--container-max) + var(--container-pad) * 2);
}

.contact-tel-fax__heading,
.contact-form-section__heading {
  display: flex;
  align-items: center;
  min-height: 72px;
  padding: 16px 32px;
  border-radius: 8px;
  background-color: #E6F1F9;
  color: #15304E;
  font-size: clamp(1.625rem, 2.5vw, 2rem);
  line-height: 1.4;
  margin-bottom: clamp(28px, 4vw, 40px);
}

.contact-tel-fax__lead,
.contact-form-section__lead {
  color: #15304E;
  font-size: clamp(0.9375rem, 1.25vw, 1rem);
  font-weight: 700;
  line-height: 1.8;
}

.contact-tel-fax__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: clamp(44px, 6vw, 64px);
}

.contact-tel-fax__item {
  width: 100%;
  min-width: 0;
  padding: 8px clamp(40px, 6vw, 70px);
}

.contact-tel-fax__item+.contact-tel-fax__item {
  border-left: 1px solid rgba(28, 36, 55, 0.18);
}

.contact-tel-fax__title {
  color: var(--color-dark);
  font-size: clamp(1.375rem, 2vw, 1.625rem);
  line-height: 1.5;
  margin-bottom: 28px;
}

.contact-tel-fax__number {
  display: inline-flex;
  align-items: center;
  gap: 24px;
  color: var(--color-dark);
  font-family: var(--font-en);
  font-size: clamp(2.25rem, 4.4vw, 3.75rem);
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}

.contact-tel-fax__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: clamp(48px, 5vw, 62px);
  height: clamp(48px, 5vw, 62px);
  flex: 0 0 auto;
}

.contact-tel-fax__icon img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
}

.contact-tel-fax__hours {
  margin-top: 28px;
  color: var(--color-dark);
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.7;
}

.contact-form {
  margin-top: clamp(72px, 9vw, 100px);
}

.contact-form__row {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr);
  gap: 78px;
  align-items: center;
}

.contact-form__row+.contact-form__row {
  margin-top: 32px;
}

.contact-form__row--textarea {
  align-items: start;
}

.contact-form__label {
  color: #15304E;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.7;
}

.contact-form .is-required {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  min-height: 18px;
  padding: 1px 5px;
  margin-left: 8px;
  border-radius: 3px;
  background-color: #F15B54;
  color: var(--color-bg-white);
  font-size: 0.6875rem;
  line-height: 1;
}

.contact-form__field {
  min-width: 0;
}

.contact-form__input,
.contact-form__textarea {
  width: 100%;
  border: 1px solid #AFC8E0;
  border-radius: 3px;
  background-color: var(--color-bg-white);
  color: var(--color-dark);
  font-family: var(--font-ja);
  font-size: 1rem;
  line-height: 1.7;
}

.contact-form__input {
  height: 64px;
  padding: 0 20px;
}

.contact-form__textarea {
  min-height: 260px;
  padding: 18px 20px;
  resize: vertical;
}

.contact-form__input::placeholder,
.contact-form__textarea::placeholder {
  color: rgba(28, 36, 55, 0.32);
}

.contact-form__input:focus,
.contact-form__textarea:focus {
  outline: 2px solid rgba(0, 111, 214, 0.25);
  outline-offset: 2px;
}

.contact-form__privacy {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  width: fit-content;
  margin: clamp(44px, 5vw, 56px) auto 0;
  color: #15304E;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.7;
  cursor: pointer;
}

.contact-form__privacy input {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  accent-color: #006FD6;
}

.contact-form__privacy a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 0.22em;
}

.contact-form__submit-wrap {
  display: flex;
  justify-content: center;
  margin-top: clamp(44px, 5vw, 56px);
}

.contact-form__submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: min(100%, 580px);
  max-width: 580px;
  min-height: 86px;
  padding: 0 32px;
  border: 0;
  border-radius: 999px;
  background-color: #2478D8;
  color: var(--color-bg-white);
  font-family: var(--font-ja);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  cursor: pointer;
  transition: background-color var(--transition-base), transform var(--transition-base);
}

.contact-form__submit:hover,
.contact-form__submit:focus-visible {
  background-color: #165EA9;
}

/* Contact Form 7 */
.contact-form-section .wpcf7 {
  margin-top: 0;
}

.contact-form-section .wpcf7-form {
  margin: 0;
}

.contact-form-section .wpcf7 .contact-form {
  margin-top: clamp(72px, 9vw, 100px);
}

.contact-form-section .wpcf7-form p {
  margin: 0;
}

.contact-form-section .wpcf7-form p br {
  display: none;
}

.contact-form-section .wpcf7-form-control-wrap {
  display: block;
  min-width: 0;
}

.contact-form-section .wpcf7-form-control-wrap input[type="text"],
.contact-form-section .wpcf7-form-control-wrap input[type="email"],
.contact-form-section .wpcf7-form-control-wrap input[type="tel"],
.contact-form-section .wpcf7-form-control-wrap textarea {
  width: 100%;
  border: 1px solid #AFC8E0;
  border-radius: 3px;
  background-color: var(--color-bg-white);
  color: var(--color-dark);
  font-family: var(--font-ja);
  font-size: 1rem;
  line-height: 1.7;
}

.contact-form-section .wpcf7-form-control-wrap input[type="text"],
.contact-form-section .wpcf7-form-control-wrap input[type="email"],
.contact-form-section .wpcf7-form-control-wrap input[type="tel"] {
  height: 64px;
  padding: 0 20px;
}

.contact-form-section .wpcf7-form-control-wrap textarea {
  min-height: 260px;
  padding: 18px 20px;
  resize: vertical;
}

.contact-form-section .wpcf7-form-control-wrap input::placeholder,
.contact-form-section .wpcf7-form-control-wrap textarea::placeholder {
  color: rgba(28, 36, 55, 0.32);
}

.contact-form-section .wpcf7-form-control-wrap input:focus,
.contact-form-section .wpcf7-form-control-wrap textarea:focus {
  outline: 2px solid rgba(0, 111, 214, 0.25);
  outline-offset: 2px;
}

.contact-form__required,
.contact-form-section .req {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  min-height: 18px;
  padding: 1px 5px;
  margin-left: 8px;
  border-radius: 3px;
  background-color: #F15B54;
  color: var(--color-bg-white);
  font-size: 0.6875rem;
  font-weight: 700;
  line-height: 1;
  vertical-align: middle;
}

.contact-form__privacy .wpcf7-form-control-wrap,
.contact-form__privacy .wpcf7-acceptance,
.contact-form__privacy .wpcf7-list-item,
.contact-form__privacy .wpcf7-list-item label {
  display: contents;
}

.contact-form__privacy .wpcf7-list-item-label:empty {
  display: none;
}

.contact-form-section .wpcf7-acceptance input[type="checkbox"],
.contact-form-section .contact-form__privacy-check {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  accent-color: #006FD6;
}

.contact-form-section .wpcf7-list-item {
  margin: 0;
}

.contact-form-section .wpcf7-form p:has(.wpcf7-submit),
.contact-form-section .wpcf7-form p:has(.contact-form__button) {
  display: flex;
  justify-content: center;
}

.contact-form-section .wpcf7-submit,
.contact-form-section input[type="submit"].wpcf7-submit,
.contact-form-section .contact-form__button,
.contact-form-section input[type="submit"].contact-form__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: min(100%, 580px);
  max-width: 580px;
  min-height: 86px;
  padding: 0 32px;
  margin: 0 auto;
  border: 0;
  border-radius: 999px;
  appearance: none;
  aspect-ratio: auto;
  background-color: #2478D8;
  color: var(--color-bg-white);
  font-family: var(--font-ja);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  cursor: pointer;
  transition: background-color var(--transition-base), opacity var(--transition-base);
}

.contact-form-section .wpcf7-submit:hover,
.contact-form-section .wpcf7-submit:focus-visible,
.contact-form-section .contact-form__button:hover,
.contact-form-section .contact-form__button:focus-visible {
  background-color: #165EA9;
}

.contact-form-section .wpcf7-submit:disabled,
.contact-form-section input[type="submit"].wpcf7-submit:disabled,
.contact-form-section .contact-form__button:disabled,
.contact-form-section input[type="submit"].contact-form__button:disabled {
  width: min(100%, 580px);
  max-width: 580px;
  min-height: 86px;
  padding: 0 32px;
  border-radius: 999px;
  opacity: 0.65;
  cursor: not-allowed;
}

.contact-form .contact-form__submit-wrap {
  display: block;
  width: min(100%, 580px);
  min-height: 0;
  padding: 0;
  margin: 64px auto 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: center;
}

.contact-form .contact-form__submit-wrap p {
  margin: 0;
}

.contact-form .contact-form__submit-wrap .wpcf7-spinner {
  display: none;
}

.contact-form input[type="submit"].contact-form__submit,
.contact-form input[type="submit"].wpcf7-submit,
.contact-form input[type="submit"].contact-form__button {
  display: block;
  width: 100%;
  min-height: 86px;
  padding: 0 48px;
  border: 0;
  border-radius: 999px;
  appearance: none;
  aspect-ratio: auto;
  background-color: #2478D8;
  color: var(--color-bg-white);
  font-family: var(--font-ja);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  cursor: pointer;
  transition: background-color var(--transition-base), transform var(--transition-base);
}

.contact-form input[type="submit"].contact-form__submit:hover,
.contact-form input[type="submit"].wpcf7-submit:hover,
.contact-form input[type="submit"].contact-form__button:hover {
  background-color: #1d66b8;
}

.contact-form input[type="submit"].contact-form__submit:disabled,
.contact-form input[type="submit"].wpcf7-submit:disabled,
.contact-form input[type="submit"].contact-form__button:disabled {
  width: 100%;
  min-height: 86px;
  cursor: not-allowed;
  opacity: 0.6;
}

.contact-form-section .wpcf7-spinner {
  grid-column: 1 / -1;
  justify-self: center;
  margin: 12px auto 0;
}

.contact-form-section .wpcf7-not-valid-tip {
  margin-top: 8px;
  color: #F15B54;
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.6;
}

.contact-form-section .wpcf7-response-output {
  margin: 32px 0 0;
  padding: 14px 18px;
  border-radius: 3px;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.7;
}

@media (max-width: 991px) {
  .contact-tel-fax__list {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .contact-tel-fax__item {
    padding-inline: 0;
  }

  .contact-tel-fax__item+.contact-tel-fax__item {
    padding-top: 36px;
    border-top: 1px solid rgba(28, 36, 55, 0.18);
    border-left: 0;
  }

  .contact-form__row {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}

@media (max-width: 767px) {
  .contact-hero {
    min-height: 260px;
  }

  .contact-hero__content {
    min-height: 260px;
    padding-top: calc(var(--header-height) + 32px);
  }

  .contact-breadcrumb {
    padding-block: 14px;
  }

  .contact-tel-fax {
    padding-block: 56px 48px;
  }

  .contact-form-section {
    padding-bottom: 72px;
  }

  .contact-tel-fax__heading,
  .contact-form-section__heading {
    min-height: 58px;
    padding: 14px 18px;
    font-size: 1.375rem;
  }

  .contact-tel-fax__lead br,
  .contact-form-section__lead br {
    display: none;
  }

  .contact-tel-fax__number {
    gap: 16px;
    font-size: clamp(2rem, 9vw, 2.75rem);
  }

  .contact-tel-fax__icon {
    width: 44px;
    height: 44px;
  }

  .contact-form {
    margin-top: 48px;
  }

  .contact-form__row+.contact-form__row {
    margin-top: 24px;
  }

  .contact-form__input {
    height: 56px;
  }

  .contact-form__textarea {
    min-height: 210px;
  }

  .contact-form__privacy {
    align-items: flex-start;
    max-width: 100%;
    margin-top: 36px;
  }

  .contact-form__submit {
    min-height: 68px;
    padding-inline: 24px;
  }

  .contact-form-section .wpcf7 .contact-form {
    margin-top: 48px;
  }

  .contact-form-section .wpcf7-form-control-wrap input[type="text"],
  .contact-form-section .wpcf7-form-control-wrap input[type="email"],
  .contact-form-section .wpcf7-form-control-wrap input[type="tel"] {
    height: 56px;
  }

  .contact-form-section .wpcf7-form-control-wrap textarea {
    min-height: 210px;
  }

  .contact-form-section .wpcf7-submit,
  .contact-form-section input[type="submit"].wpcf7-submit,
  .contact-form-section .contact-form__button,
  .contact-form-section input[type="submit"].contact-form__button,
  .contact-form-section .wpcf7-submit:disabled,
  .contact-form-section input[type="submit"].wpcf7-submit:disabled,
  .contact-form-section .contact-form__button:disabled,
  .contact-form-section input[type="submit"].contact-form__button:disabled {
    min-height: 68px;
    padding-inline: 24px;
  }

  .contact-form .contact-form__submit-wrap {
    min-height: 0;
    padding: 0;
  }
}

/* =============================
   Mobile Modal Menu
   ============================= */
@media (max-width: 767px) {
  .l-header {
    background-color: var(--color-bg-white);
  }

  .l-header__inner {
    padding-inline: 22px;
  }

  .l-header__logo .c-logo__img {
    width: 150px;
  }

  .l-header__hamburger {
    position: relative;
    z-index: 102;
    width: 44px;
    height: 44px;
    padding: 8px;
  }

  .l-header__hamburger.is-open .l-header__hamburger-bar:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
  }

  .l-header__hamburger.is-open .l-header__hamburger-bar:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
  }

  .l-header__nav {
    top: var(--header-height);
    height: calc(100dvh - var(--header-height));
    display: flex;
    justify-content: flex-start;
    align-items: stretch;
    gap: 0;
    padding: 30px 22px 28px;
    background:
      linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(246, 248, 249, 0.98)),
      var(--color-bg-white);
    border-radius: 0;
    box-shadow: none;
    overflow-y: auto;
  }

  .l-header__nav.is-open {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }

  .l-header__nav>.l-header__contact {
    display: none;
  }

  .c-gnav {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }

  .c-gnav__item {
    position: relative;
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr) 22px;
    align-items: center;
    min-height: 96px;
    border-bottom: 1px solid rgba(28, 36, 55, 0.12);
  }

  .c-gnav__item:first-child {
    border-top: 1px solid rgba(28, 36, 55, 0.12);
  }

  .c-gnav__item::before {
    grid-column: 1;
    color: var(--color-dark);
    font-family: var(--font-en);
    font-size: 1.375rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    line-height: 1;
  }

  .c-gnav__item:nth-child(1)::before {
    content: '01';
  }

  .c-gnav__item:nth-child(2)::before {
    content: '02';
  }

  .c-gnav__item:nth-child(3)::before {
    content: '03';
  }

  .c-gnav__item:nth-child(4)::before {
    content: '04';
  }

  .c-gnav__item::after {
    content: '';
    grid-column: 3;
    justify-self: end;
    width: 12px;
    height: 12px;
    border-top: 2px solid var(--color-dark-alt);
    border-right: 2px solid var(--color-dark-alt);
    transform: rotate(45deg);
  }

  .c-gnav__link {
    grid-column: 2;
    display: block;
    padding: 0 18px;
    border-left: 1px solid rgba(28, 36, 55, 0.16);
    color: var(--color-dark);
    font-size: clamp(1.6rem, 7vw, 2rem);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: 0;
  }

  .c-gnav__link::after {
    position: static;
    display: block;
    width: auto;
    height: auto;
    margin-top: 10px;
    background: none;
    color: rgba(28, 36, 55, 0.72);
    font-family: var(--font-en);
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0.22em;
    transition: none;
  }

  .c-gnav__item:nth-child(1) .c-gnav__link::after {
    content: 'CONSTRUCTION METHODS';
  }

  .c-gnav__item:nth-child(2) .c-gnav__link::after {
    content: 'COMPANY';
  }

  .c-gnav__item:nth-child(3) .c-gnav__link::after {
    content: 'RECRUIT';
  }

  .c-gnav__item:nth-child(4) .c-gnav__link::after {
    content: 'NEWS';
  }

  .l-header__mobile-message {
    display: block;
    position: relative;
    margin-top: 44px;
    padding: 0 0 10px 24px;
    color: var(--color-dark);
  }

  .l-header__mobile-message::before {
    content: '';
    position: absolute;
    top: 0.85em;
    left: 0;
    width: 20px;
    height: 2px;
    background-color: var(--color-primary);
  }

  .l-header__mobile-copy {
    position: relative;
    z-index: 1;
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.55;
    margin-bottom: 18px;
  }

  .l-header__mobile-text {
    position: relative;
    z-index: 1;
    font-size: 0.9375rem;
    font-weight: 700;
    line-height: 2;
  }

  .l-header__mobile-contact {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
    margin-top: 34px;
    padding: 24px 22px;
    border-radius: 16px;
    background-color: var(--color-bg-white);
    box-shadow: 0 12px 32px rgba(28, 36, 55, 0.08);
  }

  .l-header__mobile-contact-title {
    color: var(--color-dark);
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.5;
    margin-bottom: 8px;
  }

  .l-header__mobile-contact-hours {
    color: var(--color-dark);
    font-size: 0.8125rem;
    font-weight: 500;
    line-height: 1.7;
    margin-bottom: 8px;
  }

  .l-header__mobile-contact-tel {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--color-dark);
    font-family: var(--font-en);
    font-size: 1.55rem;
    font-weight: 700;
    line-height: 1.2;
  }

  .l-header__mobile-contact-tel::before {
    content: '';
    width: 18px;
    height: 18px;
    background-color: currentColor;
    clip-path: polygon(19% 0, 38% 0, 49% 25%, 39% 36%, 51% 54%, 69% 66%, 80% 56%, 100% 68%, 100% 86%, 88% 100%, 66% 96%, 38% 78%, 16% 52%, 4% 24%);
  }

  .l-header__mobile-contact-btn {
    width: 100%;
    min-height: 54px;
    justify-content: center;
    margin: 0;
    border-radius: 999px;
    font-size: 1rem;
  }
}
