/* ============================================================
   style-eiken.css — 株式会社栄建工業 統合スタイルシート
   ============================================================
   CSS 読み込み構成（functions.php enqueue 順）
   ------------------------------------------------------------
   【フロントエンド】
     1. normalize.css        ← ブラウザリセット
     2. Google Fonts         ← Noto Sans JP
     3. Font Awesome         ← アイコンフォント
     4. GLightbox            ← ギャラリー
     5. variables.css        ← :root 変数（priority: 5 で最優先）
     6. splide.min.css       ← スライダー（トップページのみ）
     7. style-eiken.css      ← このファイル（上記すべてに依存）
     8. style-front.css      ← トップページ専用CSS（is_front_page() 時のみ）
        style-{slug}.css     ← その他ページ別CSS（存在する場合のみ自動読み込み）

   【管理画面】
     1. variables.css        ← :root 変数（eiken-variables-admin）
     2. Font Awesome         ← アイコン（font-awesome-admin）
     3. admin.css            ← 管理画面専用スタイル

   ※ variables.css は css/ フォルダで単独管理。
      フロント・管理画面の両方から参照される。
      変数を変更する場合は variables.css のみ編集すること。
   ------------------------------------------------------------
   目次 / TABLE OF CONTENTS
   ------------------------------------------------------------
   [1]  CSS変数（:root）                    ← 色・サイズ・スペース等
   [2]  Reset & Base                        ← html/body/リスト/リンク
   [3]  Inner（コンテナ）
   [4]  Utility Classes                     ← .fs-* .text-* .sp-only 等
   [5]  Reveal Animation                    ← スクロール表示
   [6]  Buttons                             ← .btn .btn-primary .btn-outline
   ---- 共通コンポーネント ----------------------------------------
   [7]  Section Common                      ← .section 見出し・STEP見出し
   [8]  News List                           ← .section-news-list（トップ/一覧共通）
   [9]  Card Common                         ← .card-grid .card .card__*
   [10] 事業リンクカード                    ← .card--link .card__overlay
   [11] サポート実績マーキー               ← .support-marquee
   [12] CTA（採用・お問い合わせ）          ← .cta-split .cta-box
   [13] Footer                              ← .site-footer .footer-*
   [14] Page Hero                           ← 下層ページヒーロー .page-hero
   ---- ヘッダー ------------------------------------------------
   [15] Header                              ← .site-header .header-inner
   [16] Global Nav                          ← .gnav .gnav-submenu
   [17] Mega Menu                           ← .gnav-megamenu
   [18] Hamburger & Drawer                  ← .gnav-hamburger .gnav-accordion
   ---- 下層ページ共通 ------------------------------------------
   [19] Service Side Nav                    ← 固定サイドナビ（事業4ページ）
   [20] GLightbox                           ← ポップアップギャラリー上書き
   ---- ページ別CSS（slug に応じて自動読み込み）-----------------
        style-front.css                     ← front（トップページ専用）
        style-service.css                   ← service（実績グリッド）
        style-news.css                      ← news 一覧・記事詳細
        style-company.css                   ← company 会社概要
        style-recruit.css                   ← recruit 採用
        style-contact.css                   ← contact お問い合わせ
        style-privacy.css                   ← privacy プライバシーポリシー
        style-404.css                       ← 404 エラーページ
   ============================================================ */

/* ============================================================
   [1] CSS変数 — css/variables.css で定義・管理
        フロント: eiken-variables / 管理画面: eiken-variables-admin
   ============================================================ */

/* ============================================================
   [2][3] Reset & Base / Inner — 株式会社栄建工業
   ------------------------------------------------------------
   記載順
   1. Variables
   2. Reset & Base
   3. Inner
   4. Utility Classes
   5. Reveal Animation
   6. Buttons
   ============================================================ */

/* ========== Reset & Base ========== */
*, *::before, *::after {
  box-sizing: border-box;
}
html {
  font-size: 18px;
  scroll-behavior: smooth;
  scrollbar-gutter: stable;

  &.page-loader-active {
    overflow: hidden;

    & body {
      overflow: hidden;
    }
  }
}
body {
  margin: 0;
  font-family: "Noto Sans JP", "ヒラギノ角ゴ ProN", "Hiragino Kaku Gothic ProN", sans-serif;
  color: var(--c-base);
  background-color: var(--c-white);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  line-height: var(--lh-body);
  text-align: justify;
}
ul, ol {
  list-style: none;
  margin: 0;
  padding: 0;
}
img {
  max-width: 100%;
  display: block;
}
a {
  text-decoration: none;
  color: inherit;
  transition: opacity 0.3s;

  &:hover {
    opacity: 0.75;
  }
}
h1,h2,h3,h4,h5,h6 {
  font-weight: 700;
  line-height: var(--lh-label);
  margin: 0;
}
figure {
  margin: 0;
}

/* ========== Inner ========== */
/* コンテンツ最大幅コンテナ（1160px）、PC外側に左右パディング、SPは幅95% */
.inner {
  max-width: var(--inner);
  margin: 0 auto;

  @media (max-width: 1160px) {
    padding: 0 var(--space-lg);
  }
  @media (max-width: 767px) {
    width: 95%;
    padding: 0;
  }
}

/* ============================================================
   [4] UTILITY CLASSES
   ============================================================ */
/* セクション背景を白に上書き */
.section-bg-white { background-color: var(--c-white);}
.section-pb0 { padding-bottom: 0 !important;}
.section-pt0 { padding-top: 0 !important;}
.icon-fa { display: inline-block; line-height: 1;}
.fs-base { font-size: var(--fs-18) !important;}
.fs-12 { font-size: var(--fs-12) !important;}
.fs-14 { font-size: var(--fs-14) !important;}
.fs-16 { font-size: var(--fs-16) !important;}
.fs-20 { font-size: var(--fs-20) !important;}
.fs-22 { font-size: var(--fs-22) !important;}
.fs-26 { font-size: var(--fs-26) !important;}
.fs-30 { font-size: var(--fs-30) !important;}
.fs-36 { font-size: var(--fs-36) !important;}
.fs-40 { font-size: var(--fs-40) !important;}
.fs-48 { font-size: var(--fs-48) !important;}
.fs-54 { font-size: var(--fs-54) !important;}
.fs-64 { font-size: var(--fs-64) !important;}

.text-center { text-align: center !important;}
.text-right { text-align: right;}
.text-color-white { color: var(--c-white);}
.text-color-main{ color: var(--c-main) !important;}
.text-bold {font-weight: 700 !important;}

@media (max-width: 767px) {
  .u-sp-hidden { display: none !important; }
}

/* セクションリード文：緑色・太字・中央揃え */
.lead-text {
  text-align: center;
  font-size: clamp(var(--fs-18), 2.5vw, var(--fs-22));
  font-weight: 700;
  line-height: var(--lh-wide);
  color: var(--c-text);
}
.width-lead-text {
  max-width: 50rem;
  margin: 0 auto;
}
.bottom-lead-text {
  padding-bottom: var(--space-lg);
}
/* コンテンツビルダー：sentence-start / sentence-end */
.sentence-start,
.sentence-end {
  margin-top: var(--space-lg);
  margin-bottom: var(--space-lg);
}

/* 全幅丸角画像 */
.img-full-rounded {
  width: 100%;
  border-radius: var(--space-xs);
  display: block;
}
/* Google マップ iframe（親要素の高さに追従） */
.map-iframe {
  border: 0;
  width: 100%;
  height: 100%;
  display: block;
}

/* paddingユーティリティ（一括） */
.p-ss  { padding: var(--space-ss); }
.p-xs  { padding: var(--space-xs); }
.p-sm  { padding: var(--space-sm); }
.p-md  { padding: var(--space-md); }
.p-lg  { padding: var(--space-lg); }
.p-xl  { padding: var(--space-xl); }
.p-xxl { padding: var(--space-xxl); }

/* 枠線ユーティリティ */
.box-border         { border: 1px solid var(--c-border); }

/* SP（〜767px）のみ表示 */
.sp-only {
  display: none;

  @media (max-width: 767px) {
    display: inline;
  }
}
/* SP（〜767px）のみ改行 / PC（768px〜）のみ改行
   <br> は WP が class を除去するため <span> で代用する
   例: テキスト<span class="mobile-break"></span>続き */
.mobile-break { display: none; }
.pc-break     { display: block; }
@media (max-width: 767px) {
  .mobile-break { display: block; }
  .pc-break     { display: none; }
  .pc-only      { display: none !important; }
}

/* スクリーンリーダー専用テキスト（視覚的に非表示） */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

/* 番号付き ol（base の ul,ol { list-style: none } を上書き） */
ol.ol-decimal {
  list-style: decimal;
  padding-left: 1.5em;
  margin: 0;
}
/* 箇条書き ul（base の list-style: none を上書き） */
ul.ul-normal {
  list-style: disc;
  padding-left: 1.5em;
  margin: 0;
}
:is(ol.ol-decimal, ul.ul-normal) li {
  padding-left: 0.25em;
  line-height: var(--lh-wide);
}

/* 説明リスト汎用：dt と dd を横並び（1行1組。他ページでも `<dl class="dl-row">` で利用可） */
.dl-row {
  margin: 0;
  display: grid;
  grid-template-columns: max-content 1fr;
  column-gap: var(--space-md);
  row-gap: var(--space-sm);
  align-items: start;

  & dt {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    margin: 0;
    font-weight: 700;
    line-height: var(--lh-ui);

    & .icon-fa {
      color: var(--c-main-deep);
    }

    /* `.dl-row` の dt に付けると Font Awesome を子 i なしで表示（FA6 Solid のコードポイントに合わせる） */
    &:is(.dl-ico-location, .dl-ico-phone, .dl-ico-fax, .dl-ico-clock, .dl-ico-calendar)::before {
      font-family: "Font Awesome 6 Free";
      font-weight: 900;
      font-size: var(--fs-16);
      color: var(--c-main-deep);
      line-height: 1;
      flex-shrink: 0;
    }

    &.dl-ico-location::before  { content: "\f3c5"; }
    &.dl-ico-phone::before     { content: "\f095"; }
    &.dl-ico-fax::before       { content: "\f1ac"; }
    &.dl-ico-clock::before     { content: "\f017"; }
    &.dl-ico-calendar::before  { content: "\f073"; }
  }

  & dd {
    margin: 0;
    line-height: var(--lh-ui);
  }
}

/* ============================================================
   [5] REVEAL ANIMATION
   ============================================================ */
/* スクロール表示アニメーション：JS が .is-visible を付与で発火 */
.reveal,
.reveal-left {
  opacity: 0;
  transition: opacity 0.8s cubic-bezier(0.16,1,0.3,1), transform 0.8s cubic-bezier(0.16,1,0.3,1);

  &.is-visible {
    opacity: 1;
    transform: translate(0);
  }
}
.reveal       { transform: translateY(40px); }
.reveal-left  { transform: translateX(-60px); }

/* ============================================================
   [6] BUTTONS
   ============================================================ */
/* ボタン基本スタイル（インラインフレックス・ピル型） */
.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  padding: var(--space-sm) calc(var(--space-md) * 2);
  border-radius: 100px;
  font-size: var(--fs-18);
  font-weight: 700;
  transition: opacity 0.25s;
  cursor: pointer;
  border: 2px solid transparent;
  text-decoration: none;

  & .icon-fa {
    font-size: var(--fs-16);
    transition: transform var(--transition);
  }
  &:hover .icon-fa {
    transform: translateX(3px);
  }
}
/* メインカラーボタン（緑・白文字） */
.btn-primary {
  background: var(--c-main);
  color: var(--c-white);
  border-color: var(--c-main);

  &:hover {
    background: var(--c-main-hover);
    border-color: var(--c-main-hover);
    opacity: 1;
  }
}
/* アウトラインボタン（透過背景・緑枠） */
.btn-outline {
  background: transparent;
  color: var(--c-base);
  border-color: var(--c-main);

  &:hover {
    background: var(--c-warm);
    opacity: 1;
  }
}
/* SP カード詳細ボタン：PCでは非表示 */
.btn-outline-sp {
  display: none;
}

/* ============================================================
   [7] SECTION COMMON
   ============================================================ */
/* 全セクション共通の縦余白（xl=55px） */
.section {
  padding: var(--space-xl) 0;
  position: relative;
  z-index: 5;
}
/* 背景付きセクション（余白大きめ xxl=89px） */
.section--bg { padding: var(--space-xxl) 0; }

/* .section 内の .inner を全幅にしたい時（背景だけ全幅ではなく中身も広げる） */
.section-100  {
  max-width: 100%;
}

/* 共通 .section に加えるが、縦パディングはブロック固有スタイルに任せるもの */
/* MVスライダーコンテナ（高さ 600px、Splide 制御） */
.section.page-hero,
.top-slider {
  padding: 0;
}
/* 下層ページのヒーローエリア（背景画像＋h1タイトル・最小高さ header+400px） */
.section.page-hero {
  padding-top: var(--header-h);
}
/* トップページ キャッチコピー帯（最小高さ 200px） */
.section.top-catch {
  padding-top: var(--header-h);
  padding-bottom: 0;
}

/* セクション共通見出し */
/* セクション共通見出し（英字sub + 日本語main + 下線） */
h2.section-heading {
  text-align: center;
  position: relative;
  z-index: 1;

  &.section-heading--simple {
    margin-bottom: calc(var(--space-md) + var(--space-xs));
    font-size: clamp(var(--fs-30), 4vw, var(--fs-40));
    font-weight: 700;
    color: var(--c-text);
    line-height: var(--lh-ui);

    & > span:not(.mobile-break):not(.pc-break) {
      display: block;
      font-size: var(--fs-16);
      font-weight: 700;
      color: var(--c-main);
      text-transform: uppercase;
      margin-bottom: var(--space-ss);
    }

    &.section-heading-line::after {
      content: "";
      display: block;
      width: 100px;
      height: 2px;
      background: var(--grad-main-h);
      margin: var(--space-sm) auto 0;
      border-radius: 2px;
    }
  }
}

@media (max-width: 767px) {
  :root { --header-h: 64px; }
  .section     { padding: var(--space-lg) 0; }
  .section--bg { padding: var(--space-xl) 0; }
}

/* STEP見出し共通（採用フロー詳細・会社アクセスの本社／営業所）：左緑帯＋薄緑背景 */
h3.section-flow-step-title {
  --flow-head-accent: 15px;
  position: relative;
  margin: 0;
  padding: var(--space-sm) var(--space-md);
  padding-left: calc(var(--flow-head-accent) + var(--space-md));
  font-size: var(--fs-22);
  font-weight: 700;
  line-height: 1.4;
  color: var(--c-text);
  background: var(--c-warm);
  border-radius: 0 4px 4px 0;

  &::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: var(--flow-head-accent);
    background: var(--c-main);
    border-radius: 0 3px 3px 0;
  }

  & > span {
    display: inline-block;

    & > i {
      display: none; /* アイコンはSPカード見出しのみで使う */
    }
    & > span:not([aria-hidden="true"]) {
      font-weight: 700;
      margin: 0 0.12em;
    }
    & > span[aria-hidden="true"] {
      display: inline-block;
      margin: 0 0.45em 0 0.35em;
      font-weight: 400;
      color: var(--c-text-light);
    }
  }
}

/* 本社・営業所見出し：横幅いっぱい・下にグラデ帯（背景は上方向へ淡い緑） */
.section-access {
  & .section-access-block-title {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin: 0 0 var(--space-md);
    padding: 0;
    background: none;
    border: none;
    box-shadow: none;

    &::before,
    &::after {
      content: "";
      flex: 1;
      height: 1px;
      background: var(--grad-main-h);
      opacity: 0.4;
    }
  }

  & .inner > .section-access-block-title ~ .section-access-block-title {
    margin-top: var(--space-xxl);
  }

  & .section-access-block-title__ja {
    display: flex;
    align-items: center;
    gap: 0.45em;
    font-size: var(--fs-30);
    font-weight: 700;
    color: var(--c-main);
    white-space: nowrap;
    margin-top: var(--space-md);
    margin-bottom: var(--space-sm);
    transform: translateY(-6px);

  }
}

@media (max-width: 600px) {
  h3.section-flow-step-title {
    font-size: var(--fs-18);
    padding-left: calc(var(--flow-head-accent) + var(--space-sm));
    padding-right: var(--space-sm);
  }
  .section-access .section-access-block-title__ja {
    font-size: var(--fs-22);
  }
}

/* ============================================================
   [8] 新着情報一覧 — front-page.php / home.php（ニュース一覧）共通クラス .section-news-list
   ・front-page.php … ul.section-news-list > li（リンクなしの見せ方）
   ・home.php（ニュース一覧）… div.section-news-list > a（各行が詳細ページへのリンク＋末尾矢印）
   子要素の順: time → span（カテゴリ）→ span（タイトル）→ [一覧のみ i.fa-chevron-right]
   〜767px は li / a とも同一グリッド。一覧の矢印は SP で非表示。
   data-cat="info" | "report" … 帯色・news のフィルタ用
   ============================================================ */
/* 新着情報一覧：トップ（li形式）・ニュース一覧 home.php（a形式）共通グリッド */
.section-news-list {
  max-width: 800px;
  margin: 0 auto;
  padding: 0;
  list-style: none;

  & > li,
  & > a {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    padding: var(--space-md) 0;
    border-bottom: 1px solid var(--c-border);
  }

  & > li:first-child,
  & > a:first-of-type {
    border-top: 1px solid var(--c-border);
  }

  & > li > time,
  & > a > time {
    white-space: nowrap;
    flex-shrink: 0;
    width: 5.5rem;
    font-size: var(--fs-16);
    color: var(--c-text);
    font-weight: 500;
    font-style: normal;
    font-feature-settings: "tnum" 1;
  }

  & > li > span:nth-child(2),
  & > a > :nth-child(2) {
    white-space: nowrap;
    flex-shrink: 0;
    padding: calc(var(--space-ss) - 1px) 0.5rem;
    border: 1.5px solid var(--c-main);
    border-radius: 2px;
    width: fit-content;
    text-align: center;
    font-size: var(--fs-16);
    font-weight: 500;
    color: inherit;
    background: transparent;
  }

  & > li[data-cat="report"] > span:nth-child(2),
  & > a[data-cat="report"] > :nth-child(2) {
    border-color: var(--c-accent-red);
    color: var(--c-accent-red);
  }

  & > a > .news-item-new,
  & > li > .news-item-new {
    background: transparent;
    color: #e00;
    border: 1.5px solid #e00;
    border-radius: 100vmax;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
  }

  & > a > .news-item-new:empty,
  & > li > .news-item-new:empty {
    padding: 0;
    border-width: 0;
    width: 0;
    overflow: hidden;
  }

  & > li > span:nth-child(3),
  & > a > :nth-child(3) {
    line-height: var(--lh-ui);
    flex: 1;
    min-width: 0;
  }

  & > a {
    text-decoration: none;
    color: var(--c-text);
    transition: background 0.25s ease;

    &:hover {
      background: var(--c-main-a06);
      color: var(--c-text);
    }

    &:focus-visible {
      background: var(--c-main-a06);
      color: var(--c-text);
      outline: 2px solid var(--c-main);
      outline-offset: 2px;
    }

    & > :nth-child(4) {
      flex-shrink: 0;
      color: var(--c-text-light);
      font-size: 1em;
      transition: transform 0.25s ease, color 0.25s ease;
    }

    &:hover > :nth-child(4) {
      color: var(--c-main-deep);
      transform: translateX(4px);
    }
  }

  @media (max-width: 767px) {
    & > li,
    & > a {
      display: grid;
      grid-template-columns: auto 1fr;
      grid-template-rows: auto auto;
      gap: var(--space-ss) var(--space-xs);
      align-items: start;
    }
    & > li > time,
    & > a > time {
      grid-column: 1;
      grid-row: 1;
      width: auto;
    }
    & > li > span:nth-child(2),
    & > a > :nth-child(2) {
      grid-column: 2;
      grid-row: 1;
      min-width: 0;
      font-size: var(--fs-14);
      padding: calc(var(--space-ss) - 2px) var(--space-xs);
    }
    & > li > span:nth-child(3),
    & > a > :nth-child(3) {
      grid-column: 1 / -1;
      grid-row: 2;
      font-size: var(--fs-16);
      overflow: hidden;
      word-break: break-all;
      min-width: 0;
    }
    /* 一覧ページ（a 形式）の矢印はモバイルでは不要なので隠す */
    & > a > :nth-child(4) {
      display: none;
    }
  }
}

.section-news-more {
  text-align: center;
  margin-top: var(--space-xl);
}

/* ============================================================
   [9] CARD COMMON（card-grid / card）
   ============================================================ */
/* カードグリッドコンテナ（display:grid の基底） */
.card-grid {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: calc(var(--space-md) + var(--space-xs));
}
/* 2カラムグリッド */
.card-grid--2 {
  grid-template-columns: repeat(2, 1fr);
}
/* 3カラムグリッド */
.card-grid--3 {
  grid-template-columns: repeat(3, 1fr);
}
/* 4カラムグリッド */
.card-grid--4 {
  grid-template-columns: repeat(4, 1fr);
}
/* 交互（千鳥）レイアウト（設備・工務ページ用） */
.card-grid--zigzag {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
}

@media (max-width: 900px) {
  .card-grid--3:not(.card-grid--dept) {
    grid-template-columns: 1fr;
  }
}

/* カード本体（白・丸角・シャドウ） */
.card {
  background: var(--c-white);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  list-style: none;
}
/* カードサムネイル画像 */
.card__img {
  width: 100%;
  display: block;
  object-fit: cover;
}
/* カード本文エリア（アイコン＋タイトル＋テキスト） */
.card__body {
  padding: var(--space-md) var(--space-md) var(--space-lg);
  display: flex;
  flex-direction: column;
  flex: 1;
  align-items: center;
  text-align: center;

  /* カード内アイコンのみ（gnav・CTA 等に誤って付与されないようスコープ） */
  & > .card__icon {
    width: 42px;
    height: 42px;
    background: var(--c-main);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--c-white);
    margin-top: var(--space-sm);
    margin-bottom: var(--space-sm);
    font-size: var(--fs-22);
  }
}
.card__label {
  font-size: var(--fs-12);
  text-transform: uppercase;
  color: var(--c-main-deep);
  font-weight: 700;
  margin-bottom: var(--space-sm);
  display: block;
}
/* カードタイトル */
.card__title {
  font-size: var(--fs-22);
  margin-top: var(--space-xs);
  margin-bottom: var(--space-xs);
  color: var(--c-main);
}
/* カード本文テキスト */
.card__text {
  color: var(--c-text);
  flex: 1;
  text-align: left;
  margin: var(--space-xs) 0 0;
}

/* PC：交互レイアウト（設備・工務） */
@media (min-width: 768px) {
  .card-grid--zigzag > li.card {
    display: grid;
    grid-template-columns: 380px 1fr;
    border-radius: 10px;
  }
  .card-grid--zigzag > li.card--reverse {
    grid-template-columns: 1fr 380px;
  }
  .card-grid--zigzag > li.card--reverse > .card__img {
    order: 2;
  }
  .card-grid--zigzag > li.card--reverse > .card__body {
    order: 1;
  }
  .card-grid--zigzag > li.card > .card__img {
    width: 100%;
    height: 100%;
    min-height: 300px;
  }
  .card-grid--zigzag > li.card > .card__body {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: var(--space-sm);
    row-gap: var(--space-md);
    padding: calc(var(--space-md) * 2) var(--space-xl);
    align-items: start;
    align-content: center;
    text-align: left;
    justify-content: center;
  }
  .card-grid--zigzag > li.card > .card__body > .card__icon {
    grid-column: 1;
    grid-row: 1;
    width: 52px;
    height: 52px;
    font-size: var(--fs-26);
    border-radius: 50%;
    margin-bottom: 0;
    align-self: center;
  }
  .card-grid--zigzag > li.card > .card__body > .card__title {
    grid-column: 2;
    grid-row: 1;
    font-size: var(--fs-30);
    margin-bottom: 0;
    align-self: center;
  }
  .card-grid--zigzag > li.card > .card__body > .card__text {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}
@media (max-width: 900px) {
  .card-grid--zigzag > li.card,
  .card-grid--zigzag > li.card--reverse {
    display: flex;
    flex-direction: column;
    grid-template-columns: unset;
  }
  .card-grid--zigzag > li.card--reverse > .card__img {
    order: -1;
  }
  .card-grid--zigzag > li.card--reverse > .card__body {
    order: 0;
  }
}

/* 営業所カード */
.card--office {
  border-radius: 10px;
  border: 1px solid var(--c-border);
  box-shadow: 0 2px 16px var(--c-black-a05);
}
.card__media--map {
  border-bottom: 1px solid var(--c-border);
  line-height: 0;
  min-height: 200px;

  & iframe {
    display: block;
    width: 100%;
    height: 200px;
  }
}
.card--office > .card__body {
  padding: var(--space-md);
  align-items: stretch;
  text-align: left;
}
.card--office > .card__body > .card__title {
  margin-bottom: var(--space-sm);
}

/* ============================================================
   [10] 事業リンクカード（card-grid--dept / card--link）
   ============================================================ */
.card-grid--dept {
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;

  & > li {
    display: contents;
  }
}

/* 事業リンクカード：画像ホバーでスケール＋オーバーレイ表示 */
.card--link {
  position: relative;
  display: block;
  width: 100%;
  overflow: hidden;
  cursor: pointer;
  color: inherit;
  text-decoration: none;
  box-shadow: 0 4px 20px var(--c-black-a10);
  border-radius: 0;

  & .card__img-wrap {
    display: contents;
  }

  & .card__img {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.5s ease;
  }

  &:hover .card__img {
    transform: scale(1.1);
  }

  & .card__label--dept {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    padding: calc(var(--space-md) * 1.1);
    background: transparent;
    text-align: center;
    z-index: 2;

    & > span:first-child {
      display: block;
      text-transform: uppercase;
      color: rgba(255,255,255,0.9);
      line-height: var(--lh-label);
      margin-top: 0.4em;
      margin-bottom: 0;
    }

    & > span:last-child {
      font-size: clamp(1.5rem, 4vw, var(--fs-48));
      font-weight: 700;
      letter-spacing: .1rem;
      color: var(--c-white);
      line-height: var(--lh-label);
    }
  }
}

/* PC：カード全体に薄い黒ベタ／ラベルは上1/3付近→ホバーで上端 */
@media (min-width: 768px) {
  .card--link::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--c-black-a15);
    z-index: 1;
    pointer-events: none;
    transition: opacity 0.35s ease;
  }
  .card--link:hover::before,
  .card--link:focus-visible::before {
    opacity: 0;
  }
  .card--link .card__label--dept {
    top: 33.333%;
    transform: translateY(-50%);
    transition: top 0.4s ease, transform 0.4s ease;
    background-image: none !important;
  }
  .card--link:hover .card__label--dept,
  .card--link:focus-visible .card__label--dept {
    top: 0;
    transform: translateY(0);
  }
  /* 事業カード：ホバーできることを示すアイコン（非ホバー時のみ） */
  .card-grid--dept .card--link::after {
    content: '\f067';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    position: absolute;
    bottom: var(--space-lg);
    left: 50%;
    z-index: 2;
    width: 48px;
    height: 48px;
    margin-left: -24px;
    border-radius: 50%;
    border: 1px solid var(--c-white-a40);
    background: var(--c-black-a25);
    color: var(--c-white);
    font-size: var(--fs-20);
    line-height: 46px;
    text-align: center;
    pointer-events: none;
    opacity: 0.92;
    animation: card-dept-hint-pulse 2.5s ease-in-out infinite;
    transition: opacity 0.35s ease, transform 0.35s ease;
  }
  .card-grid--dept .card--link:hover::after,
  .card-grid--dept .card--link:focus-visible::after {
    opacity: 0;
    transform: scale(0.85);
    animation: none;
  }
}
@keyframes card-dept-hint-pulse {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.35);
  }
  50% {
    box-shadow: 0 0 0 10px rgba(255, 255, 255, 0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .card-grid--dept .card--link::after {
    animation: none;
  }
}

/* 事業カードのホバーオーバーレイ（事業カラー背景・説明文） */
.card__overlay {
  position: absolute;
  inset: 0;
  background: var(--c-main);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  padding: var(--space-md);
  padding-top: calc(var(--space-xxl) + var(--space-sm) + 1.2rem);
  opacity: 0;
  transition: opacity 0.35s ease;

  & p {
    color: var(--c-white);
    margin-top: 1.2rem;
    text-align: left;
  }

  & ul {
    list-style: none;
    padding: 0.6em 0 0;
    margin: 0;
    width: 100%;
    border-top: solid 1px var(--c-white);

    & li {
      color: var(--c-white);
      font-size: var(--fs-16);
      padding-left: 1em;
      position: relative;

      &::before {
        content: "・";
        position: absolute;
        left: 0;
      }
    }
  }

  & .text-right {
    align-self: stretch;
  }
}

.card--dept-management .card__overlay {
  background: var(--c-management);
}
.card--dept-equip .card__overlay {
  background: var(--c-equip);
}
.card--dept-const .card__overlay {
  background: var(--c-const);
}
.card--link:hover .card__overlay {
  opacity: 1;
}

@media (max-width: 767px) {
  /* 横スクロールコンテナ：.inner の左右マージンを打ち消してスクリーン端まで広げる */
  .sp-slide-wrap {
    overflow-x: scroll;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-padding-left: 4vw;
    scrollbar-width: none;
    margin-left: -2.5vw;
    margin-right: -2.5vw;
    padding-left: 4vw;
    padding-right: 6vw;
    padding-bottom: 4px;
  }
  .sp-slide-wrap::-webkit-scrollbar {
    display: none;
  }
  /* sp-slide-wrap 内の ul はすべて横フレックスに切り替え */
  .sp-slide-wrap > ul {
    display: flex;
    flex-direction: row;
    grid-template-columns: unset;
    width: max-content;
    gap: 12px;
  }
  /* li：フレックス子として幅・snap を担う */
  .sp-slide-wrap > ul > li {
    display: flex;
    flex-direction: column;
    width: 82vw;
    flex-shrink: 0;
    scroll-snap-align: start;
  }
  /* 事業リンク：PC は display:contents のため li は上記 ul>li と別扱い */
  .sp-slide-wrap > .card-grid--dept > li {
    display: flex;
    flex-direction: column;
  }
  .sp-slide-wrap > .card-grid--zigzag > li.card--reverse > .card__img,
  .sp-slide-wrap > .card-grid--zigzag > li.card--reverse > .card__body {
    order: unset;
  }
  /* 横スライドカード：SP のみ本文余白を狭く */
  .sp-slide-wrap .card__body {
    padding: var(--space-sm) var(--space-md) var(--space-xl);
  }
  /* 営業所カードは地図が下にくるため下余白は小さく */
  .card--office > .card__body {
    padding-bottom: var(--space-sm);
  }
  /* 事業リンクカード：SP */
  .card--link {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: visible;
    margin-bottom: 0;
    border: none;
  }
  .card--link:hover .card__img {
    transform: none;
  }
  .card--link .card__img-wrap {
    display: block !important;
  }
  .card--link .card__img {
    display: none !important;
  }
  .card--link .card__label--dept {
    position: relative !important;
    display: block !important;
    height: 35vw;
    overflow: hidden;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center center;
    /* background-image は nth-child で設定（!important 禁止） */
  }
  /* ラベル上部グラデ：テキスト可読性 */
  .card--link .card__label--dept::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.1);
    z-index: 0;
    pointer-events: none;
  }
  .card--link .card__label--dept > span {
    position: relative;
    z-index: 1;
    color: var(--c-white);
    text-shadow: 0 1px 4px rgba(0,0,0,0.6);
  }
  .card--link .card__overlay,
  .card--dept-management .card__overlay,
  .card--dept-equip .card__overlay,
  .card--dept-const .card__overlay {
    display: flex !important;
    position: relative !important;
    inset: unset;
    opacity: 1 !important;
    background: transparent !important;
    padding: var(--space-md);
    padding-top: var(--space-md);
    justify-content: flex-start;
    flex: 1;
  }
  .card--link .card__overlay p {
    color: var(--c-base);
    margin-top: .6rem;
  }
  .card--link .card__overlay ul {
    border-top-color: var(--c-border);
  }
  .card--link .card__overlay ul li {
    color: var(--c-base);
  }
  .card--link .card__overlay .text-color-white {
    color: var(--c-base);
  }
  /* 詳細ボタン：SP のみ表示・左右中央・下揃え */
  .btn-outline-sp {
    display: inline-flex;
    align-self: center;
    margin-top: auto;
    padding-top: var(--space-sm);
    font-size: var(--fs-16);
  }
}

/* ============================================================
   [11] サポート実績マーキー
   ============================================================ */
.section-support-record {
  position: relative;
}
.section-support-slider-wrap {
  position: relative;
  overflow: hidden;
  margin: 0;
  z-index: 1;
  padding: 2rem;
}

/* サポート実績 — CSSマーキー無限スクロール */
/* サポート実績の無限横スクロールマーキーコンテナ */
.support-marquee {
  overflow: hidden;
  width: 100%;

  &:hover /* マーキーの実際にスクロールする帯（animation で動く） */
.support-marquee__track {
    animation-play-state: paused;
  }
}

.support-marquee__track {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  width: max-content;
  animation: support-marquee-scroll 28s linear infinite !important;
  will-change: transform;
}

/* 1枚のカード要素（幅 --support-thumb-w=400px） */
.support-marquee__item {
  width: var(--support-thumb-w);
  max-width: min(var(--support-thumb-w), 85vw);
  flex-shrink: 0;
  padding: 0 1px;

  & figure {
    margin: 0;
    height: 100%;

    & a {
      display: block;
      height: 100%;

      &:hover img {
        opacity: 0.8;
      }
    }

    & img {
      width: 100%;
      height: auto;
      display: block;
      object-fit: cover;
      aspect-ratio: var(--ratio-3-2);
      transition: opacity 0.25s;
    }

    &:has(.support-marquee__caption) {
      height: auto;
      display: flex;
      flex-direction: column;

      & a {
        height: auto;
      }
    }
  }
}

.support-marquee__caption {
  text-align: center;
  font-size: 0.8em;
  color: var(--c-text-light);
  margin-top: 0.4em;
}

@media (max-width: 767px) {
  .section-support-slider-wrap {
    padding-left: 0;
    padding-right: 0;
  }
  /* 画面幅いっぱいに約3枚見える */
  .support-marquee__item {
    width: 33.333vw;
    max-width: 33.333vw;
    padding: 0 1px;
    box-sizing: border-box;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .support-marquee__item {
    width: 36vw;
    max-width: 36vw;
  }
}
@keyframes support-marquee-scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .support-marquee__track { animation: none; }
}

/* ============================================================
   [12] CTA — 採用・お問い合わせ 2カラム（.cta-split / .cta-box）
   ============================================================ */
.cta-split {
  background: var(--c-main);
  padding: var(--space-xl) 0;
}
.cta-split-inner {
  max-width: var(--footer-inner);
  margin: 0 auto;
  display: flex;
  gap: var(--space-md);
  padding: 0 var(--space-md);
}
.cta-box {
  position: relative;
  flex: 1;
  height: 320px;
  overflow: hidden;
  color: var(--c-white);
  background-color: var(--c-main);
  background-image:
    linear-gradient(rgba(0,149,76,0.45), rgba(0,149,76,0.45)),
    url("../images/back_web01.png");
  background-size: auto 100%;
  background-position: left center;
  background-repeat: no-repeat;
  border: 1px solid var(--c-white);
  transition: opacity var(--transition);
  margin-bottom: 0.6rem;
}
.cta-box:hover { opacity: 0.85; }
.cta-bg {
  position: absolute;
  inset: 0;
  background-size: auto 100%;
  background-repeat: no-repeat;
  background-position: right center;
  z-index: 0;
  -webkit-mask-image: linear-gradient(to right, transparent 50%, black 70%);
  mask-image: linear-gradient(to right, transparent 40%, black 70%);
  transition: transform var(--transition);
}
.cta-box:hover .cta-bg { transform: scale(1.04); }
.cta-box-link {
  position: absolute;
  inset: 0;
  z-index: 3;
}
.cta-content {
  position: relative;
  z-index: 2;
  /* PC：上下 21px / 左右は md(21)とlg(34)の中間=27.5px */
  padding: var(--space-md) calc((var(--space-md) + var(--space-lg)) / 2);
  display: flex;
  flex-direction: column;
  height: 100%;
}
.cta-content h2 {
  font-size: var(--fs-18);
  /* タイトル下の余白：PCは現状＋0.8rem 広げる */
  margin: 0 0 calc(var(--space-xs) + 0.8rem);
  color: var(--c-white);
  font-weight: 700;
  line-height: var(--lh-ui);
}
/* 下線：横幅（コンテンツ幅）の50% */
.cta-content h2::after {
  content: "";
  display: block;
  width: 50%;
  height: 1px;
  margin-top: 6px;
  /* 右に行くほど薄くなるグラデーション */
  background: linear-gradient(to right, var(--c-white), transparent);
}
.cta-content h3 {
  font-size: var(--fs-30);
  margin: 0 0 var(--space-sm);
  line-height: var(--lh-label);
  color: var(--c-white);
  font-weight: 700;
}
.cta-content > p:not(.cta-split-action) {
  font-size: var(--fs-14);
  line-height: var(--lh-body);
  margin: 0 0 var(--space-md);
  color: var(--c-white);
}
.cta-split-action {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  margin-top: auto;
  align-self: flex-start;
  padding: 0.55em 1.2em;
  font-size: var(--fs-16);
  font-weight: 700;
  color: var(--c-main);
  background: var(--c-white);
  border-radius: var(--radius);
  transition: background var(--transition), color var(--transition);
}
.cta-box:hover .cta-split-action { background: var(--c-warm); }

@media (max-width: 860px) {
  .cta-split-inner { flex-direction: column; gap: var(--space-sm); }
  .cta-box { height: 260px; }
}
@media (max-width: 767px) {
  .cta-box { height: auto; }
  .cta-content { padding: var(--space-lg) calc((var(--space-md) + var(--space-lg)) / 2) var(--space-ss) var(--space-md); } /* SP：上34/右27.5/下4/左21 */
  .cta-content h2 { margin-top: -1rem; margin-bottom: calc(var(--space-xs) + 0.6rem); } /* SP：タイトル1rem上／下余白を現状＋0.6rem */
  .cta-content h3 { font-size: var(--fs-20); }
  .cta-hidden-sp { display: none !important; }
}

/* ============================================================
   [13] FOOTER
   ============================================================ */
/* フッター全体（薄緑背景・上部に緑ボーダー） */
.site-footer {
  background: var(--c-footer-bg);
  border-top: 3px solid var(--c-main);
  padding: var(--space-xl) 0 var(--space-md);
}

/* フッター最大幅コンテナ（1440px） */
.footer-inner {
  max-width: var(--footer-inner);
  margin: 0 auto;
  margin-bottom: var(--space-lg);
}

/* フッター上段：ロゴ情報列・営業所列・認定列の3カラムグリッド */
.footer-top {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.5fr) minmax(0, 1.3fr);
  gap: var(--space-lg);
  align-items: start;
  margin-bottom: var(--space-xl);
}

.footer-info-col,
.footer-offices-col,
.footer-cert-col {
  min-width: 0;
}

.footer-logo-wrap {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
}

.footer-logo-img {
  height: 60px;
  width: auto;
  display: block;
  flex-shrink: 0;
  align-self: center;
  margin-top: var(--space-md);
}

.footer-logo-text {
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-ss) / 2);

  & > p:first-child {
    color: var(--c-main);
    font-weight: 500;
    margin: 0;
  }
}

.footer-name {
  display: inline-flex;
  align-items: flex-end;
  gap: 0.2em;
  font-size: var(--fs-36);
  font-weight: 700;
  line-height: 1;
  margin: 0;

  & > span {
    display: inline-flex;
    flex-direction: column;
    justify-content: space-between;
    height: 2em;
    font-size: 0.5em;
    line-height: 1;
  }
}

.footer-info {
  margin-top: var(--space-xs);
  display: flex;
  flex-direction: column;
  gap: var(--space-ss);

  & li {
    display: flex;
    align-items: center;
    gap: calc(var(--space-ss) + 2px);
  }
}

.footer-info-label {
  font-weight: 700;
  flex-shrink: 0;
}

ul.footer-building-member {
  margin-top: var(--space-md);
}

ul.footer-building-member li{
  font-size: var(--fs-14);
  margin: 0;
  padding-bottom: 0;

  & a {
    text-decoration: none;
    & i { margin-left: 2px; }
    &:hover { text-decoration: underline; }
  }
}

h3.footer-info-offices-title {
  display: block;
  margin: 0;
  padding-top: 0;
  padding-bottom: var(--space-sm);
  border-bottom: solid 1px var(--c-main);
  font-size: var(--fs-22);
  font-weight: 700;
  color: var(--c-main);
}

/* 営業所：dl > div > dt（拠点名）+ dd（住所）+ dd（TEL） */
.footer-info-offices {
  list-style: none;
  padding: 0;
  margin-top: var(--space-sm);
  font-size: var(--fs-16);
  line-height: var(--lh-label);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: var(--space-md);
  row-gap: var(--space-sm);
  align-items: start;

  & > div {
    margin-top: 0;
    padding-bottom: .6rem;
  }

  & dt {
    display: flex;
    align-items: center;
    gap: 0.4em;
    font-weight: 700;
    font-size: var(--fs-18);
    color: var(--c-text);
    margin-bottom: var(--space-ss);

    &::before {
      content: "";
      display: inline-block;
      width: var(--space-xs);
      height: var(--space-xs);
      background: var(--c-main);
      flex-shrink: 0;
      align-self: center;
    }
  }

  & dd {
    margin-left: 0;
  }

  & dd:first-of-type {
    font-size: calc((var(--fs-14) + var(--fs-16)) / 2);
  }

  & dd + dd {
    margin-top: 0.35em;

    & span {
      font-weight: 700;
    }
  }
}

/* フッターナビゲーションエリア（サイトマップ） */
.footer-nav-area {
  display: flex;
  gap: var(--space-lg);
  max-width: 625px;

  & h3 {
    font-size: var(--fs-22);
    font-weight: 700;
    text-transform: uppercase;
    color: var(--c-main);
    margin-bottom: var(--space-ss);
    padding-left: 0.6rem;
    border-bottom: solid 1px var(--c-main);
  }

  & ul li {
    padding-left: 0.6rem;
  }
}

.footer-nav-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-ss) + 2px);

  & ul {
    display: flex;
    flex-direction: column;

    & li {
      padding-block: 0px;
    }
  }

  & a {
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: calc(var(--space-ss) + 2px);
    text-decoration: underline;
    text-decoration-color: transparent;
    transition: color 0.25s, text-decoration-color 0.25s;

    &::before {
      content: "";
      display: inline-block;
      width: var(--space-xs);
      height: 2px;
      background: currentColor;
      flex-shrink: 0;
    }

    &:hover {
      color: var(--c-main);
      text-decoration-color: var(--c-main);
      opacity: 1;
    } 
  }
}

/* 認証・認定（本社 TEL/FAX の直下・左揃え）
   営業所4件を2列（狭い幅では1列） */
@media (max-width: 480px) {
  .footer-info-offices {
    grid-template-columns: 1fr;
  }
}

ul.footer-cert-imgs {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: var(--space-sm);
  width: 100%;
  margin-top: 0.8rem;
  padding: 0;
  list-style: none;

  & img {
    display: block;
    height: auto;
    width: 100px;
  }

  & a:hover img {
    opacity: 1;
  }
}

/* コピーライト行 */
.footer-copy {
  text-align: center;
  font-size: var(--fs-16);
  border-top: 1px solid var(--c-border);
  padding-top: var(--space-md);
  margin: 0 var(--space-lg);
}

/* TB：3列→1列 */
@media (max-width: 900px) {
  .footer-top {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }
  .footer-nav-area {
    width: 100%;
    flex-wrap: wrap;
    justify-content: flex-start;
  }
}

/* SP：余白・ナビ2列 */
@media (max-width: 767px) {
  .footer-inner {
    padding: 0 var(--space-md);
  }
  .footer-nav-area {
    width: 100%;
    flex-wrap: wrap;
    gap: var(--space-md);
  }
  .footer-nav-col {
    flex: 1 1 calc(50% - var(--space-md));
    min-width: 120px;
    gap: 2px;
  }
  .footer-nav-area h3 {
    margin-bottom: 2px;
  }
  .footer-nav-col ul {
    gap: 0;
  }
  .footer-nav-area ul li {
    line-height: var(--lh-label);
  }
  .footer-nav-col a {
    line-height: var(--lh-label);
    padding: 0.05em 0;
  }
}

/* ============================================================
   [14] PAGE HERO — 下層ページヒーロー .page-hero
   ============================================================ */
.page-hero {
  position: relative;
  background: var(--c-white);
  overflow: hidden;
  min-height: calc(var(--header-h) + 400px);
  display: flex;
  align-items: center;

  /* 背景画像・暗幕は固定ヘッダー（--header-h）の裏に潜り込ませず、ヘッダー下から表示する。
     padding-top で確保したヘッダー分の領域には敷かない。 */
  &::before {
    content: "";
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    height: calc(100% - var(--header-h));
    background: rgba(0, 0, 0, 0.2);
    z-index: 1;
    pointer-events: none;
  }

  /* padding-top: var(--header-h) は上の .section.page-hero で指定 */
  & > img {
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    z-index: 0;
    width: 100%;
    height: calc(100% - var(--header-h));
    object-fit: cover;
    object-position: center center;
    display: block;
  }

  & h1 {
    position: relative;
    z-index: 2;
    max-width: var(--inner);
    width: 100%;
    margin: 0 auto;
    padding: calc(var(--space-md) * 2) 0;
    text-align: center;
    font-size: var(--fs-54);
    color: var(--c-white);
    letter-spacing: 0.08em;
    font-weight: 700;
    /* 暗いドロップシャドウは使わず、白の柔らかい光彩でコントラスト補助 */
    text-shadow:
      0 0 1px rgba(255,255,255,0.4);
    & > span {
      display: block;
      margin-bottom: var(--space-sm);
      font-size: var(--fs-22);
      letter-spacing: 0.28em;
      text-transform: uppercase;
      color: var(--c-white);
      font-weight: 700;
      text-shadow:
        0 0 1px rgba(255,255,255,0.9),
        0 0 12px rgba(255,255,255,0.6),
        0 0 24px rgba(255,255,255,0.25);
    }
  }

  &::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 1px;
    z-index: 3;
    background: var(--grad-main-h);
  }

  @media (max-width: 1160px) {
    & h1 {
      padding-left: var(--space-lg);
      padding-right: var(--space-lg);
    }
  }

  @media (max-width: 767px) {
    display: block;
    min-height: unset;
    overflow: hidden;

    &::before { display: none; }

    & > img {
      position: static;
      display: block;
      width: 100%;
      height: 42vw;
      object-fit: cover;
      object-position: center top;
    }

    & h1 {
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: var(--header-h) var(--space-md) 0;
      font-size: var(--fs-26);
      line-height: 1;
      text-shadow: 0 2px 6px rgba(0,0,0,0.55);
      transform: none;

      & > span { display: none; }
    }
  }
}

/* ニュース個別ヒーロー：画像なし・記事タイトル表示（緑グラデ背景） */
.page-hero--news-single {
  background: var(--grad-main-h);
  min-height: calc(var(--header-h) + 220px);

  &::before { display: none; }

  & h1 {
    font-size: var(--fs-30); /* 30px相当（28px付近のルート変数） */
    text-align: left;
  }

  @media (max-width: 767px) {
    display: flex;
    min-height: calc(var(--header-h) + 120px);

    & h1 {
      position: relative;
      inset: auto;
      padding: var(--header-h) var(--space-md) var(--space-lg);
      font-size: var(--fs-26);
      line-height: 1.4;
      text-align: left;
      text-shadow: none;
    }
  }
}

/* ============================================================
   [15][16][17][18] HEADER / グローバルナビ / メガメニュー / ドロワー
   ============================================================ */

/* 固定ヘッダー（上部固定・スクロールで高さ変化） */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--header-h);
  background: var(--c-light);
  border-bottom: 1.4px solid var(--c-main);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  z-index: 1000;
  transition: all 0.4s ease;

  /* PC幅のみ：トップのヘッダーは未スクロール時トップビジュアルを見せるため透過 */
  @media (min-width: 768px) {
    .page-home & {
      background: transparent;
    }
  }

  &.is-scrolled,
  .page-home &.is-scrolled {
    height: 92px;
    background: var(--c-light);
  }
}

/* ログイン時の WordPress 管理バー対応：
   管理バー表示中は <html> に margin-top が付き本文が下がるが、固定ヘッダーは top:0 のまま
   ＝ ヘッダー下に管理バー分の隙間が出る。ヘッダーを管理バー高さ分ずらして隙間を解消する。
   （管理バー高さ：783px以上=32px / 782px以下=46px。これは WP コア側の仕様値） */
.admin-bar .site-header {
  top: 32px;
}
@media screen and (max-width: 782px) {
  .admin-bar .site-header {
    top: 46px;
  }
}

/* メガメニューも管理バー分ずらす（ヘッダーが 32px 下がるのに合わせないと
   メガメニューがヘッダーのナビ行に被って隠れてしまうため） */
.admin-bar .gnav-item-has-megamenu .gnav-submenu.gnav-megamenu {
  top: calc(var(--header-h) + 32px - 2px);
}
@media screen and (max-width: 782px) {
  .admin-bar .gnav-item-has-megamenu .gnav-submenu.gnav-megamenu {
    top: calc(var(--header-h) + 46px - 2px);
  }
}

/* ヘッダーインナー */
.header-inner {
  max-width: var(--inner);
  margin: 0 auto;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* ロゴ */
/* ロゴリンクエリア（画像＋社名テキスト横並び） */
.site-logo {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  text-decoration: none;
  white-space: nowrap;

  &:hover .site-logo-img {
    opacity: 0.88;
  }
}

.site-logo-img {
  height: 54px;
  width: auto;
  display: block;
  flex-shrink: 0;
  transition: opacity var(--transition);

  /* SP（〜767px）：ロゴ画像は狭い画面で一段小さく */
  @media (max-width: 767px) {
    height: 30px;
  }
}

.site-logo-text {
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-ss) / 2);
  transform: translateY(-5px);
}

.logo-name {
  display: inline-flex;
  align-items: flex-end;
  gap: 0.2em;
  font-size: var(--fs-36);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.05em;
}

.logo-name-prefix {
  display: inline-flex;
  flex-direction: column;
  font-size: 0.5em;
  line-height: 1;
  justify-content: space-between;
  height: 2em;
}

.logo-catch {
  color: var(--c-main);
  font-weight: 500;
  margin-bottom: calc(var(--space-ss) + 1px);
}

/* グローバルナビ */
/* グローバルナビゲーション（PCは横並び・〜1024pxはドロワー） */
.gnav {
  margin-left: auto;

  > ul {
    display: flex;
    align-items: stretch;
    height: var(--header-h);

    .site-header.is-scrolled & {
      height: 92px;
    }

    > li {
      position: relative;
      display: flex;
      align-items: center;
      /* ヘッダー幅不足時に潰れてラベルと疑似要素▼が重ならないよう縮小しない */
      flex-shrink: 0;

      > a {
        display: flex;
        align-items: center;
        gap: var(--space-ss);
        position: relative;
        padding: 0 var(--space-sm);
        height: var(--header-h);
        line-height: var(--header-h);
        font-size: var(--fs-18);
        font-weight: 500;
        color: var(--c-text);
        transition: all 0.25s;
        white-space: nowrap;

        &::after {
          content: '';
          position: absolute;
          left: var(--space-sm);
          right: var(--space-sm);
          bottom: var(--space-sm);
          height: 3px;
          background: var(--c-main);
          opacity: 0;
          transition: opacity 0.25s;
        }

        .site-header.is-scrolled & {
          height: 92px;
          line-height: 92px;
        }

        /* 小さいPC（1025px〜1280px）：グロナビリンクの余裕 */
        @media (min-width: 1025px) and (max-width: 1280px) {
          padding: 0 var(--space-xs);
          font-size: var(--fs-18);
        }
      }

      > a:hover,
      &.is-active > a,
      &.is-open > a {
        color: var(--c-main);
        opacity: 1;
      }

      > a:hover::after,
      &.is-active > a::after,
      &.is-open > a::after {
        opacity: 1;
      }
    }
  }
}

/* 下向き chevron：HTML の <i.gnav-submenu-ico>（本文の直後＝重なりなし。疑似要素は使わない） */
.gnav-item-has-submenu {
  > a {
    flex-shrink: 0;
    gap: 0.3em;
    padding: 0 var(--space-sm);

    .gnav-submenu-ico {
      display: block;
      flex-shrink: 0;
      font-size: 0.5em;
      line-height: 1;
      align-self: center;
      transform: rotate(0deg);
      transform-origin: 50% 50%;
      transition: transform 0.25s ease, color 0.25s ease;
    }
  }

  &.is-open .gnav-submenu-ico {
    transform: rotate(180deg);
  }
}

/* サブメニュードロップダウン */
/* ドロップダウンサブメニュー（クリックで表示：.is-open） */
.gnav-submenu {
  position: absolute;
  top: calc(100% - var(--space-xs));
  left: 50%;
  transform: translateX(-50%) translateY(var(--space-xs));
  min-width: 220px;
  padding: var(--space-xs) 0;
  background: var(--c-white-a98);
  border: 1px solid var(--c-border);
  box-shadow: 0 12px 28px var(--c-black-a12);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  height: auto !important;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
  z-index: 1001;

  .gnav-item-has-submenu.is-open & {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
  }

  /* 通常ドロップダウン専用の li/a スタイル。
     メガメニュー（.gnav-megamenu）のカードには適用しない
     （display:block / height:auto / white-space:nowrap / ::before の点線が
      メガメニューカードに漏れて崩れるのを防ぐ） */
  &:not(.gnav-megamenu) li {
    display: block;

    a {
      display: block;
      padding: var(--space-xs) calc(var(--space-md) + 0.6rem);
      height: auto;
      line-height: var(--lh-ui);
      font-weight: 500;
      color: var(--c-text);
      white-space: nowrap;

      &::before {
        display: none;
      }

      &:hover {
        background: var(--c-main-a08);
        color: var(--c-main);
        opacity: 1;
      }
    }

    &.is-active > a {
      background: var(--c-main-a08);
      color: var(--c-main);
      opacity: 1;
    }

    &:first-child a {
      padding-left: var(--space-md);
    }

    &:not(:first-child) a {
      position: relative;
      padding-left: calc(var(--space-md) + 0.6rem + 1.4em + var(--space-xs) + 6px);

      &::before {
        display: block;
        content: "";
        position: absolute;
        left: calc(var(--space-md) + 0.6rem + 1.4em);
        top: 50%;
        width: var(--space-xs);
        height: 1px;
        background: currentColor;
        transform: translateY(-50%);
      }
    }
  }
}

/* ----- 事業案内メガメニュー（全ページ） ----- */
.gnav-item-has-megamenu {
  .gnav-submenu.gnav-megamenu {
    position: fixed;
    left: 0;
    right: 0;
    top: calc(var(--header-h) - 2px); /* ヘッダー下端との1〜2px隙間を詰める */
    width: auto;
    min-width: 0;
    margin-left: 0;
    padding: 0;
    transform: translateY(var(--space-xs));
    border: none;
    border-radius: 0;
    box-shadow: 0 20px 48px rgba(8, 20, 14, 0.28);
    background: #000; /* メガメニュー背景を黒に */
    z-index: 1001;
  }

  &.is-open .gnav-submenu.gnav-megamenu {
    transform: translateY(0);
  }
}

/* メガメニュー内側：横並びカード（画像左・説明右）を 3 列グリッドで配置 */
.gnav-megamenu__inner {
  list-style: none;           /* ul のマーカー・既定インデントを解除 */
  max-width: var(--inner);
  margin: 0 auto;
  padding: var(--space-lg) clamp(var(--space-md), 3vw, var(--space-xl));
  box-sizing: content-box;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));  /* 3分割 */
  gap: var(--space-md);
  min-height: 0;
}

/* グリッドアイテム（li）。カード（a）を高さいっぱいに伸ばす */
.gnav-megamenu__item {
  display: flex;
  min-width: 0;
}

/* カード外枠（リード列・事業列 共通）。白カード＋ドロップシャドウで区切る */
.gnav-megamenu__lead,
.gnav-megamenu__col {
  background: var(--c-white);          /* カード背景を白に */
  border: none;                        /* 緑枠は廃止 */
  /* 白パネル上でも上下左右すべての輪郭が出るよう、全周に広がる影＋極薄のふち */
  box-shadow: 0 0 0 1px rgba(12, 31, 20, 0.10),
              0 0 16px rgba(12, 31, 20, 0.10),
              0 8px 24px rgba(12, 31, 20, 0.16);
  border-radius: 0;           /* 角丸なし */
  overflow: hidden;
  min-width: 0;
}

/* カード内リンク：画像左・説明右の横並び。カード高さは 140px 固定 */
.gnav-megamenu__lead,
.gnav-megamenu__col-link {
  display: flex;
  flex-direction: row;
  align-items: stretch;       /* 画像・本文をカード高さいっぱいに伸ばす */
  text-decoration: none;
  text-align: left;
  width: 100%;                /* li（グリッドアイテム）内で幅いっぱいに */
  height: 140px;              /* カード高さ 140px */
  overflow: hidden;           /* はみ出しは非表示 */
  transition: opacity 0.2s ease;
}

.gnav-megamenu__lead:hover,
.gnav-megamenu__col-link:hover {
  opacity: 0.8;
}

/* サムネイル（左・140×140 枠。画像はそのまま全面表示、テキストは乗せない） */
.gnav-megamenu__thumb {
  position: relative;
  flex: 0 0 140px;
  width: 140px;
  height: 140px;
  padding: 0;                 /* 画像周囲の余白は省く（140×140 全面） */
  box-sizing: border-box;
  overflow: hidden;
  line-height: 0;
  background: transparent;
}

.gnav-megamenu__thumb img {
  width: 140px;               /* 140 × 140（枠いっぱい） */
  height: 140px;
  object-fit: cover;
  display: block;
  transition: transform 0.45s ease;
}

.gnav-megamenu__lead:hover .gnav-megamenu__thumb img,
.gnav-megamenu__col-link:hover .gnav-megamenu__thumb img {
  transform: scale(1.04);
}

/* タイトル：画像の外（テキスト欄の上段）に配置。ブランドカラーの太字見出し
   flex-shrink:0 が無いと、縦積み flex コンテナ内で説明文が長い時に
   タイトルまで一緒に圧縮されて文字が潰れる（overflow:hidden な flex アイテムは
   自動最小サイズが 0 になり、既定の flex-shrink:1 で縮んでしまうため）。
   タイトルは常に自然な高さを保ち、縮むのは説明文側だけにする。 */
.gnav-megamenu__title {
  display: block;
  width: 100%;
  flex-shrink: 0;
  font-size: var(--fs-18);    /* 18px 相当 */
  font-weight: 700;
  line-height: var(--lh-label);  /* 1.3 */
  color: var(--c-main);
  margin-bottom: var(--space-xs);
  overflow: hidden;
}

/* テキスト欄（右）：タイトル＋説明文を縦に並べる */
.gnav-megamenu__col-body,
.gnav-megamenu__lead-body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start; /* 上揃え：タイトルが上端で切れないように */
  text-align: left;
  padding: var(--space-sm);
  overflow: hidden;           /* はみ出しは非表示（超過分は下側だけカット） */
}

/* メガメニュー説明文（ACF megamenu_desc・改行可・16px 相当）
   root（--fs-18）から一段階下の --fs-16。SP と共通サイズ。
   はみ出しは非表示（オーバーフロー分は切る） */
.gnav-megamenu__desc {
  margin: 0;
  width: 100%;
  font-size: var(--fs-16);    /* 16px 相当（root から一段階下） */
  line-height: var(--lh-ui);  /* 1.6 */
  color: var(--c-text);
  text-align: left;
  overflow: hidden;           /* はみ出しは非表示 */
}

/* メガメニュー レスポンシブ */
@media (max-width: 980px) {
  .gnav-megamenu__inner {
    grid-template-columns: minmax(0, 1fr);
  }

  .gnav-item-has-megamenu {
    .gnav-submenu.gnav-megamenu {
      position: absolute;
      top: calc(100% - var(--space-xs));
      left: 50%;
      right: auto;
      transform: translateX(-50%) translateY(var(--space-xs));
      width: min(100vw - var(--space-md), var(--inner));
      max-height: calc(100vh - var(--header-h) - 24px);
      overflow-x: hidden;
      overflow-y: auto;
    }

    &.is-open .gnav-submenu.gnav-megamenu {
      transform: translateX(-50%) translateY(0);
    }
  }
}

/* ----- ハンバーガー・ドロワー補助（PC：ハンバーガー非表示／オーバーレイ・SP 用 DOM） ----- */
/* ハンバーガーボタン（〜1024pxで表示） */
.gnav-hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
  width: 44px;
  height: 44px;
  padding: 0;
  background: none;
  border: none;
  cursor: pointer;
  z-index: 1100;
  flex-shrink: 0;

  span {
    display: block;
    width: 26px;
    height: 2px;
    background: var(--c-base);
    border-radius: 2px;
    transition: transform 0.3s ease, opacity 0.3s ease;
  }

  .gnav-open & {
    span { background: var(--c-white); }
    span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
    span:nth-child(2) { opacity: 0; }
    span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
  }
}

.gnav-drawer-close-area {
  display: none;
  position: fixed;
  inset: 0;
  background: var(--c-main);
  z-index: -1;
}

/* ドロワー内アコーディオン（事業案内の子リスト） */
.gnav-accordion {
  display: none;
}

/* ドロワー上部のロゴ・社名・キャッチはドロワー（≤1024px）専用。PCのヘッダーでは非表示 */
.gnav-drawer-head {
  display: none;
}

/* 共通ブレークポイント：〜1024px ハンバーガー＋ドロワー */
@media (max-width: 1024px) {
  .header-inner {
    padding: 0 var(--space-md);
  }

  .site-logo-img {
    height: 36px;
  }

  .logo-name {
    font-size: var(--fs-26);
  }

  .logo-name-prefix {
    font-size: 0.45em;
    line-height: 1.1;
    height: 2em;
  }

  .logo-catch {
    font-size: var(--fs-12);
  }

  .gnav-hamburger {
    display: flex;
  }

  .gnav {
    position: fixed;
    top: 0;
    right: -100%;
    width: min(360px, 85vw);
    height: 100dvh;
    background: var(--c-main);
    z-index: 1050;
    overflow-y: auto;
    /* ドロワー内スクロールが背景へ連鎖しないようにする */
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    transition: right 0.38s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    padding-top: var(--header-h);
    margin-left: 0;

    > ul {
      display: flex;
      flex-direction: column;
      height: auto;
      padding: 0;

      > li {
        display: block;
        border-bottom: 1px solid var(--c-gnav-drawer-row-border);
        flex-shrink: unset;

        > a {
          display: flex;
          align-items: center;
          justify-content: flex-start;
          height: auto;
          line-height: var(--lh-ui);
          padding: var(--space-xsm) var(--space-lg) var(--space-xsm) var(--space-md);
          font-size: var(--fs-20);
          font-weight: 700;
          color: var(--c-white);

          &::after {
            display: none;
          }

          &:hover {
            color: var(--c-white);
            opacity: 0.7;
          }
        }


        &.is-active > a {
          color: var(--c-white);
          opacity: 1;
        }
      }
    }
  }

  .gnav-open {
    .gnav {
      right: 0;
    }

    .gnav-drawer-close-area {
      display: block;
    }
  }

  /* メガメニューの場合、アコーディオンメニューを非表示 */
  .gnav-item-has-megamenu .gnav-accordion {
    display: none !important;
  }

  /* メガメニューを初期状態では非表示 */
  .gnav-item-has-megamenu .gnav-megamenu {
    display: none;
  }

  /* メガメニューが展開されたら表示（.is-accordion-open が付与された時）
     .gnav-submenu 基底の visibility:hidden / opacity:0 / pointer-events:none は
     PC の .is-open でしか解除されないため、SP では明示的に解除する
     （これが無いと display:block でも中身が透明のまま見えない） */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu {
    display: block;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    position: static !important;
    transform: none !important;
    width: auto !important;
    max-height: none !important;
    overflow: visible !important;
    background: var(--c-white) !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  /* スマホ用メガメニュー内側：1列カード配置 */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__inner {
    max-width: none !important;
    grid-template-columns: minmax(0, 1fr) !important;
    padding: var(--space-md) !important;
    margin: 0 !important;
    gap: var(--space-sm) !important;
  }

  /* スマホ用メガメニューカード：画像上・テキスト下 */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__lead,
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__col-link {
    flex-direction: column !important;
    height: auto !important;
    border: none !important;
    /* PC に合わせ、上下左右すべての輪郭が出るドロップシャドウ */
    box-shadow: 0 0 0 1px rgba(12, 31, 20, 0.10),
                0 0 16px rgba(12, 31, 20, 0.10),
                0 8px 24px rgba(12, 31, 20, 0.16) !important;
    border-radius: 4px !important;
    background: var(--c-white) !important;
  }

  /* スマホ用画像：フル幅、16:9比率
     padding-top で高さを確定し img を absolute fill することで iOS Safari でも確実に表示 */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__lead-img,
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__col-img {
    flex: 0 0 auto !important;
    position: relative !important;
    width: 100% !important;
    height: 0 !important;
    padding-top: 56.25% !important;
    aspect-ratio: unset !important;
    display: block !important;
    overflow: hidden !important;
  }

  /* スマホ用テキスト本体：カード幅（2列）に合わせて余白を詰める */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__lead-body,
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__col-body {
    background: var(--c-white) !important;
    padding: var(--space-sm) !important;
    gap: var(--space-xs) !important;
  }

  /* スマホ用タイトル文字サイズ */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__lead-ja,
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__cat-ja {
    font-size: var(--fs-16) !important;
  }

  /* スマホ用：説明文（megamenu_desc）を表示。
     フォントは root（--fs-18＝18px）から一段階下の --fs-16（16px相当）。
     カードは height:auto のため全文表示（クリップしない） */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__desc {
    display: block !important;
    font-size: var(--fs-16) !important;
    line-height: var(--lh-ui) !important;
    overflow: visible !important;
  }

  /* スマホ用画像要素 */
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__lead-img img,
  .gnav-item-has-megamenu.is-accordion-open .gnav-megamenu__col-img img {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
  }

  /* ドロワー上部：ヘッダーと同じロゴ・社名・キャッチを表示（緑背景に映えるよう白パネル） */
  .gnav-drawer-head {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-md);
    background: var(--c-white);
    border-bottom: 1px solid var(--c-gnav-drawer-row-border);
    text-decoration: none;

    &:hover .gnav-drawer-logo-img {
      opacity: 0.88;
    }
  }

  .gnav-drawer-logo-img {
    height: 40px;
    width: auto;
    flex-shrink: 0;
    display: block;
  }

  .gnav-drawer-logo-text {
    display: flex;
    flex-direction: column;
    gap: calc(var(--space-ss) / 2);
    min-width: 0;
  }

  .gnav-drawer-catch {
    color: var(--c-main);
    font-weight: 500;
    font-size: var(--fs-12);
    line-height: 1.3;
  }

  .gnav-drawer-name {
    display: inline-flex;
    align-items: flex-end;
    gap: 0.2em;
    color: var(--c-text);
    font-size: var(--fs-22);
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.05em;
  }

  .gnav-drawer-name-prefix {
    display: inline-flex;
    flex-direction: column;
    justify-content: space-between;
    font-size: 0.45em;
    line-height: 1.1;
    height: 2em;
  }

  /* ドロワー：シェブロンを右端へ寄せ、タップ領域を広げて「開閉ボタン」として分離。
     テキスト部のタップはページ遷移、シェブロンのタップで子メニュー開閉。 */
  .gnav-submenu-ico {
    font-size: 0.7em !important;
    margin-left: auto;
    padding: var(--space-sm) var(--space-xs);
    cursor: pointer;
  }

  .gnav-accordion {
    display: none;
    flex-direction: column;
    background: var(--c-main);
    padding: 0;
    list-style: none;
    margin: 0;

    li {
      border-top: 1px solid var(--c-gnav-nested-border);

      a {
        display: block;
        padding: var(--space-sm) var(--space-xl);
        font-size: var(--fs-18);
        color: var(--c-white);
        font-weight: 500;

        &::before {
          content: "― ";
          color: var(--c-gnav-drawer-row-border);
          font-size: 0.7em;
        }
      }
    }
  }

  .gnav-item-has-accordion.is-accordion-open {
    .gnav-accordion {
      display: flex;
    }

    .gnav-submenu-ico {
      transform: rotate(180deg);
    }
  }
}

/* ============================================================
   [19] SERVICE SIDE NAV — 固定サイドナビ（事業4ページ共通）
   ============================================================ */
/* 事業ページ右固定サイドナビ（PC: 右端縦並び / TB非表示 / SP: 下部タブ） */
.service-side-nav {
  position: fixed;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  z-index: 950;

  & ul {
    display: flex;
    flex-direction: column;
    gap: 0;
  }

  & li {
    list-style: none;
  }

  & a {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs);
    min-width: 56px;
    min-height: 132px;
    padding: calc(var(--space-sm) + 3px) var(--space-xs);
    border-radius: 0;
    color: var(--c-white);
    font-weight: 700;
    text-align: center;
    box-shadow: 0 8px 20px var(--c-black-a16);
    transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;

    &::after {
      content: "";
      position: absolute;
      top: 0;
      right: -6px;
      width: 6px;
      height: 100%;
      background: inherit;
    }

    &:hover {
      transform: translateX(-6px);
      box-shadow: 0 12px 24px var(--c-black-a20);
      opacity: 1;
    }
  }

  & .icon-fa {
    font-size: var(--fs-20);
  }
}

/* サイドナビのラベル文字（縦書き） */
.service-side-nav-label {
  writing-mode: vertical-rl;
  text-orientation: upright;
  line-height: var(--lh-heading);
}

.service-side-nav-link--service {
  background: var(--c-main);

  &.is-active {
    background: var(--c-white);
    box-shadow: 0 12px 24px var(--c-black-a20);
    color: var(--c-main);
  }
}

.service-side-nav-link--management {
  background: var(--c-management);

  &.is-active {
    background: var(--c-white);
    box-shadow: 0 12px 24px var(--c-black-a20);
    color: var(--c-management);
  }
}

.service-side-nav-link--equip {
  background: var(--c-equip);

  &.is-active {
    background: var(--c-white);
    box-shadow: 0 12px 24px var(--c-black-a20);
    color: var(--c-equip);
  }
}

.service-side-nav-link--const {
  background: var(--c-const);

  &.is-active {
    background: var(--c-white);
    box-shadow: 0 12px 24px var(--c-black-a20);
    color: var(--c-const);
  }
}

/* TB：右固定ナビは非表示 */
@media (min-width: 768px) and (max-width: 1100px) {
  .service-side-nav {
    display: none;
  }
}

/* SP：画面最下部に固定（横並びタブ） */
@media (max-width: 767px) {
  body.page-service,
  body.page-management,
  body.page-equip,
  body.page-const {
    padding-bottom: calc(52px + env(safe-area-inset-bottom, 0px));
  }
  .service-side-nav {
    display: block;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    transform: none;
    z-index: 950;
    box-shadow: 0 -4px 20px var(--c-black-a16);
  }
  .service-side-nav ul {
    flex-direction: row;
    width: 100%;
  }
  .service-side-nav li {
    flex: 1 1 25%;
    min-width: 0;
  }
  .service-side-nav a {
    flex-direction: row;
    align-items: center;
    justify-content: center;
    min-width: 0;
    /* min-height と padding-bottom の両方に env を入れることで、中央寄せの
       基準となるコンテンツ領域（= 高さ − 上下padding）から env 項が相殺され一定になる。
       → iOS Safari でスクロール時に env() が変動してもテキストが揺れず、
         かつタブの背景色は画面下端（セーフエリア）まで届く。 */
    min-height: calc(52px + env(safe-area-inset-bottom, 0px));
    padding: var(--space-ss) 2px;
    padding-bottom: calc(var(--space-ss) + env(safe-area-inset-bottom, 0px));
    box-shadow: none;
    gap: 0.3em;
  }
  .service-side-nav a::after {
    display: none;
  }
  .service-side-nav a:hover {
    transform: none;
    box-shadow: none;
  }
  .service-side-nav-label {
    writing-mode: horizontal-tb;
    text-orientation: mixed;
    font-size: var(--fs-14);
    letter-spacing: 0;
    white-space: nowrap;
    line-height: 1;
  }
  /* スマホではアイコンを非表示にしてラベルのみ表示 */
  .service-side-nav .icon-fa {
    display: none;
  }
}

/* ============================================================
   [20] GLightbox — ポップアップギャラリー カスタマイズ
   ============================================================ */

/* オーバーレイ：ブランドカラー寄りの深い黒 */
.goverlay {
  background: rgba(5, 14, 9, 0.97) !important;
}

/* 画像：サイズ上限 + 立体的な影 + 微角丸 */
.gslide-image img {
  max-height: 82vh !important;
  max-width: 90vw !important;
  border-radius: 3px;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.5),
    0 32px 80px rgba(0, 0, 0, 0.65);
}

/* キャプション帯：画像に溶け込むグラデーション */
.gslide-description {
  background: linear-gradient(
    to top,
    rgba(0, 0, 0, 0.78) 0%,
    rgba(0, 0, 0, 0.42) 55%,
    transparent 100%
  ) !important;
  padding: 36px 24px 18px !important;
}

/* タイトルテキスト：白・Noto Sans JP・中央揃え */
.gslide-title {
  text-align: center;
  color: rgba(255, 255, 255, 0.90) !important;
  font-family: "Noto Sans JP", sans-serif !important;
  font-size: 0.88rem !important;
  font-weight: 400 !important;
  letter-spacing: 0.12em !important;
  margin-bottom: 0 !important;
  line-height: 1.6 !important;
}

/* 前後ナビボタン：円形・薄いボーダー・hover で明るく */
.gnext,
.gprev {
  width: 48px !important;
  height: 48px !important;
  border-radius: 50% !important;
  background: rgba(255, 255, 255, 0.10) !important;
  border: 1px solid rgba(255, 255, 255, 0.22) !important;
  transition: background 0.25s ease, border-color 0.25s ease !important;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
.gnext:hover,
.gprev:hover {
  background: rgba(255, 255, 255, 0.22) !important;
  border-color: rgba(255, 255, 255, 0.50) !important;
}
.gnext svg,
.gprev svg {
  width: 18px !important;
}

/* クローズボタン：円形・右上 */
.gclose {
  width: 40px !important;
  height: 40px !important;
  border-radius: 50% !important;
  background: rgba(255, 255, 255, 0.10) !important;
  border: 1px solid rgba(255, 255, 255, 0.22) !important;
  transition: background 0.25s ease !important;
  right: 18px !important;
  top: 18px !important;
  opacity: 1 !important;
}
.gclose:hover {
  background: rgba(255, 255, 255, 0.25) !important;
  opacity: 1 !important;
}
.gclose svg {
  width: 16px !important;
}
