/*
Theme Name: Original Clover
Theme URI: https://example.com/
Author: Your Name
Author URI: https://example.com/
Description: Original Clover オリジナルテーマ
Version: 1.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: original-clover
Tags: custom-theme
*/
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

ul,
li {
  list-style: none;
}
a {
  text-decoration: none;
  color: inherit;
}
img {
  max-width: 100%;
  display: block;
}

input,
select,
textarea {
  /* ここを16px未満にすると、iPhoneで入力時に勝手にズームされてしまうため維持する */
  font-size: 16px !important;
  transform: scale(
    0.875
  ); /* 裏技：視覚的に14pxに見せるならscaleを使う手もあるが非推奨 */
}

:root {
  /* =========================================
     Fluid Typography Variables (Modern Scale)
     基準: 1rem = 16px

     - トークンは「用途」ではなく「スケール」を基本に（再利用性が高い）
     - Utopia / Modern fluid type の考え方に寄せて、本文(=base)を中心に段階を作る
     - 既存の --font-size-xx を使っている箇所は下で互換マッピング
  ========================================= */

  /* ビューポート域（必要なら調整） */
  --fluid-min: 375;
  --fluid-max: 1200;

  /* 流体補間（px→rem計算を避け、calc + vw で素直に扱う） */
  --fluid-bp: clamp(
    0px,
    (100vw - (var(--fluid-min) * 1px)) / (var(--fluid-max) - var(--fluid-min)),
    1px
  );

  /* Type scale (t-shirt sizes)
     min: 375px / max: 1200px を想定
     - base は 14→16
     - lg/xl は見出し用に少し抑制
  */
  --fs-0: clamp(0.75rem, 0.73rem + 0.1vw, 0.8125rem); /* 12→13 */
  --fs-1: clamp(0.875rem, 0.83rem + 0.25vw, 1rem); /* 14→16 */
  --fs-2: clamp(1rem, 0.95rem + 0.35vw, 1.125rem); /* 16→18 */
  --fs-3: clamp(1.125rem, 1rem + 0.6vw, 1.5rem); /* 18→24 */
  --fs-4: clamp(1.25rem, 1.05rem + 1vw, 2rem); /* 20→32 */
  --fs-5: clamp(1.5rem, 1.1rem + 1.5vw, 2.25rem); /* 24→36 */

  /* 既存互換（このプロジェクトでの用途に合わせてマッピング） */
  --font-size-sm: var(--fs-0);
  --font-size-base: var(--fs-1);
  --font-size-lg: var(--fs-3);
  --font-size-xl: var(--fs-5);
}

:root {
  /* =========================
     Base Colors
     - 信頼感のあるニュートラルダーク
     - 既存の #363a40 を基準に、わずかに深みを追加
  ========================= */
  --color-base-dark: #363a40; /* メインダーク背景（基準色は維持） */
  --color-base-dark-soft: #474d56; /* ダーク内カード・レイヤー（コントラストを上げて明るめに） */

  /* =========================
     Light Background Colors
     - スタイリッシュさ（クールグレー）＋親しみ（わずかに暖色）
  ========================= */
  --color-bg-light: #f8f9fb; /* 基本の明るめ背景（より明るくクリーンに） */
  --color-bg-light-warm: #eef0f4; /* スタイリッシュな明るめ背景（クールグレー寄りで落ち着いた印象） */

  /* =========================
     Text Colors
     - 明背景上: 読みやすい濃いグレー（完全な黒は避ける）
     - 暗背景上: 白ベタではなくほんのり冷たいオフホワイトで上品に
  ========================= */
  --color-text-dark: #1f2933; /* 明るめ背景上のテキスト（可読性を上げる） */
  --color-text-light: #e5e7eb; /* ダーク背景上の本文・補足（現状より少し明るく） */

  /* =========================
     Accent / CTA Colors
     - 現状維持
  ========================= */
  --color-accent-primary: #e85b4f;
  --color-accent-primary-hover: #d44c42;

  /* =========================
     Border / Divider
     - 明背景で沈まない、少しだけコントラストのある境界
  ========================= */
  --color-border-default: #d1d7de;
}

.strong {
  font-size: 1.5em;
}

.small {
  font-size: 0.75em;
}

body {
  font-family: "Noto Sans JP", "Helvetica Neue", Arial, "Liberation Sans",
    "Segoe UI", sans-serif;
  background-color: var(--color-bg-light);
  color: var(--color-text-dark);
  letter-spacing: 0.05em;
  line-height: 1.6;
  overflow-x: hidden;
  font-size: var(--font-size-base);
  font-weight: 400;
  font-feature-settings: "palt";
  overflow-y: scroll;
  background-color: var(--color-bg-light);
  transition: background-color 0.6s ease-out;
}

body.bg-dark {
  background-color: var(--color-base-dark);
}

h1 {
  font-size: var(--fs-5);
}
h2 {
  font-size: var(--fs-3);
}
h3 {
  font-size: var(--fs-2);
}

.flex {
  display: flex;
}

.flex-column {
  display: flex;
  flex-direction: column;
}

/* ===================================================================
     共通コンポーネント
  =================================================================== */

/* カードコンポーネント - 共通装飾スタイル */
.card-component {
  border-radius: 1.5em;
  border: 1px solid var(--color-border-default);
  background-color: var(--color-bg-light-warm);
  padding: 1.5em 1em;
  box-shadow: 0 0 2em var(--color-bg-light-warm);
}

/* ============================================================= 
背景
=============================================================*/
/* 背景全体のコンテナ */
.drive-flow-bg {
  position: fixed;
  inset: 0;
  z-index: -10;
  overflow: hidden;
  /* background-color: #f2f3f5; */
}

/* ラインのコンテナ */
.flow-container {
  position: absolute;
  inset: 0;
  opacity: 0.15;
}

/* アニメーションするラインの共通設定 */
.flow-line {
  position: absolute;
  height: 1px;
  background-color: var(--color-base-dark);
  left: -50%;
  filter: blur(0.5px);
  animation: flow-horizontal linear infinite;
}

/* グラデーションなどの装飾 */
.flow-overlay {
  position: absolute;
  inset: 0;
  /* background: linear-gradient(
    to top right,
    #f2f3f5,
    transparent,
    rgba(255, 255, 255, 0.3)
  ); */
}
.flow-fade-left {
  position: absolute;
  inset: y 0;
  left: 0;
  width: 8rem;
  /* background: linear-gradient(to right, #f2f3f5, transparent); */
}
.flow-fade-right {
  position: absolute;
  inset: y 0;
  right: 0;
  width: 8rem;
  /* background: linear-gradient(to left, #f2f3f5, transparent); */
}

/* アニメーション本体 */
@keyframes flow-horizontal {
  0% {
    transform: translateX(0) scaleX(0.5);
    opacity: 0;
  }
  10% {
    opacity: 0.8;
  }
  90% {
    opacity: 0.8;
  }
  100% {
    transform: translateX(600%) scaleX(1.5);
    opacity: 0;
  }
}

/* =======================================================
   header
======================================================= */

header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  max-width: 100vw;
  height: auto;
  z-index: 999;
  pointer-events: none; /* ヘッダー全体はクリックを透過 */
}

header .logo {
  position: fixed;
  top: 0.75rem;
  left: 0.5rem;
  width: auto;
  height: 2.5em;
  z-index: 999;
  font-family: "Noto Serif JP", serif;
  pointer-events: auto; /* ロゴはクリック可能 */
}

header .logo h1 {
  font-size: var(--font-size-base);
  height: 100%;
}

header .logo h1 a {
  display: flex;
  align-items: center;
  gap: 0.5em;
  height: 100%;
}

header .logo h1 a span {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

header .logo h1 a span.header-logo {
  aspect-ratio: 1 / 1;
}

header .logo h1 a span img {
  object-fit: contain;
  width: 100%;
  height: 100%;
}

.menu-btn {
  position: fixed;
  top: 0.75rem;
  right: 0.5rem;
  z-index: 999;
  border: none;
  cursor: pointer;
  transition: all 0.3s;
  width: fit-content;
  aspect-ratio: 1 / 1;
  pointer-events: auto; /* メニューボタンはクリック可能 */
}

.menu-btn__img {
  position: absolute;
  top: 0;
  right: 0;
  height: 3rem;
  width: 3rem;
  background-color: var(--color-bg-light);
  border-radius: 50%;
  border: 1px solid var(--color-base-dark);
  transform: rotate(0deg) scale(1);
  transition: all 0.3s;
}

.menu-btn__img:hover {
  transform: rotate(180deg) scale(1.2);
}

/* --- ナビゲーション本体 (gnav) --- */
.gnav {
  position: fixed;
  top: 0;
  left: 0;
  width: 30dvw; 
  height: 100dvh;
  min-width: 400px;
  max-width: 100%;;
  background-color: var(--color-bg-light-warm);
  z-index: 99;
  /* アニメーションの肝：最初は左に隠しておく */
  transform: translateX(-100%);
  opacity: 0;
  transition: all 0.4s ease-in-out; /* 0.4秒かけて滑らかに変化 */
  pointer-events: auto; /* ナビゲーションはクリック可能 */
}

/* メニューの中身 */
.gnav__wrap {
  display: flex;
  flex-direction: column;
  height: 100%;
  max-width: 100dvw;
  padding: 2rem .75rem;
  overflow-y: auto;
  justify-content: end;
}

.gnav__wrap .gnav__list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  flex-grow: 1;
  justify-content: center;
}

.gnav__item a {
  position: relative;
  display: block;
  padding: .25rem 0 .5rem;
  color: var(--color-text-dark);
  text-decoration: none;
  font-size: var(--font-size-sm);
  transition: color 0.3s;
}

.gnav__item a::after {
  content: "";
  position: absolute;
  bottom: 0.5em;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--color-text-dark);
  transition: width 0.3s;
}

.gnav__item a:hover::after {
  width: 60%;
}

/* モバイルメニューSNSリンク */
.gnav-social {
  padding-top: 0.5rem;
  border-top: 1px solid var(--color-border-default);
}

.gnav-social-title {
  font-size: var(--fs-1);
  font-weight: 600;
  margin-bottom: .5rem;
  color: var(--color-text-dark);
}

.gnav-social-links {
  display: flex;
  gap: 1rem;
}

.gnav-social-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background-color: var(--color-base-dark-soft);
  color: var(--color-text-light);
  transition: all 0.3s ease;
}

.gnav-social-link:hover {
  transform: translateY(-3px) scale(1.05);
  background-color: color-mix(in srgb, var(--color-base-dark-soft), white 15%);
  box-shadow: 0 8px 20px rgba(71, 77, 86, 0.4);
}

.gnav-social-link svg {
  width: 28px;
  height: 28px;
  transition: transform 0.3s ease;
}

.gnav-social-link:hover svg {
  transform: scale(1.1);
}

/* メニュー内お問い合わせセクション */
.menu-contact {
  margin-top: auto;
  padding-top: .75rem;
}

.menu-contact .contact-content-wrapper {
  margin: 0;
}

.menu-contact .contact-content {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.menu-contact .contact-content .contact-btn {
  display: flex;
  gap: 0.75rem;
  align-items: end;
}

.menu-contact .contact-content .contact-btn .form-btn {
  height: fit-content;
  flex: 1;
  margin-bottom: 0;
}

.menu-contact .contact-content .contact-btn .form-btn a {
  padding: .5rem .75rem;
  font-size: var(--fs-0);
  color: var(--color-text-light);
  text-align: center;
}

.menu-contact .contact-content .contact-btn .g-nav-menu-tel {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  flex: 1;
}

.menu-contact .contact-content .contact-btn .g-nav-menu-tel p {
  font-size: var(--fs-0);
}

.menu-contact .contact-content .contact-btn .g-nav-menu-tel p a {
  padding: .5rem .75rem;
  font-size: var(--fs-0);
  text-align: center;
}

.menu-contact .contact-coppy {
  gap: 0;
  text-align: center;
}

.menu-contact .contact-coppy h3 {
  font-size: var(--fs-2);
  margin-bottom: 0;
  color: var(--color-text-dark);
  font-weight: 700;
  line-height: 1.4;
}

.menu-contact .contact-btn {
  width: 100%;
  gap: 1rem;
}

.menu-contact .form-btn {
  margin-bottom: 1rem;
  background: var(--color-accent-primary);
  border-radius: 0.5rem;
  transition: all 0.3s ease;
}

.menu-contact .form-btn:hover {
  background: color-mix(in srgb, var(--color-accent-primary), black 10%);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(71, 77, 86, 0.2);
}

.menu-contact .form-btn a {
  font-size: var(--fs-1);
  padding: 0.85rem 1.25rem;
  font-weight: 600;
  display: block;
}

.menu-contact .contact-btn > p:not(.form-btn) {
  font-size: var(--fs-0);
  text-align: center;
  line-height: 1.6;
  color: var(--color-text-dark);
}

.menu-contact .contact-btn .strong {
  font-weight: 700;
  color: var(--color-accent-primary);
  font-size: 1.1em;
}

.menu-contact .tel-number {
  font-size: var(--fs-2);
  font-weight: 700;
  color: var(--color-accent-primary);
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1.25rem;
  background: var(--color-bg-light);
  border-radius: 0.5rem;
  border: 2px solid var(--color-accent-primary);
  transition: all 0.3s ease;
  margin-top: 0.5rem;
}

.menu-contact .tel-number:hover {
  background: var(--color-accent-primary);
  color: var(--color-bg-light);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(71, 77, 86, 0.2);
}

.menu-contact .tel-number svg {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

/* gnav専用カードスタイル */
.gnav-contact-card {
  max-width: 100% !important;
  margin: 0 !important;
}

.gnav-contact-card .contact-coppy h3 br {
  display: block;
}

/* --- アクティブ状態(JSで付与) --- */
.gnav.open {
  transform: translateX(0); /* 元の位置に戻る */
  opacity: 1; /* 不透明にする */
}

/* --- 背景マスク --- */
.mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  z-index: 9;

  /* 最初は隠す */
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s;
}

/* マスクのアクティブ状態 */
.mask.open {
  opacity: 1;
  visibility: visible;
}

/* ===================================================================
      top-s-title-area
  =================================================================== */

.s-title-area {
  width: fit-content;
  display: flex;
  flex-direction: column;
  gap: 0.25em;
  margin-bottom: 2em;
}

.s-title-area span {
  display: block;
  text-align: right;
}

.s-title-area .t-exp {
  font-size: 0.5em;
  font-weight: 400;
}

/* ===================================================================
      section fv
  =================================================================== */
section.h-section.top-fv {
  width: 100dvw;
  height: 100dvh;
}

section.h-section.top-fv .h-section__inner {
  background: url("../img/top-fv-sumple-02.webp") no-repeat center center/cover;
  width: 100dvw;
  height: 100dvh;
  position: relative;
  top: 0;
  left: 0;
}

section.h-section.top-fv .h-section__inner .site-coppy {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  background: linear-gradient(to bottom, #f2f3f5, transparent);
}

section.h-section.top-fv .h-section__inner .site-coppy h1 {
  font-size: var(--fs-5);
  padding: 2em 1em 0;
  width: 100vw;
}

/* ===================================================================
      top-service
  =================================================================== */

.service-list-wrapper.flex {
  flex: 1;
  gap: 25vw;
}

/* モバイル時は縦並びに変更 */
@media screen and (max-width: 768px) {
  .service-list-wrapper.flex {
    flex-direction: column;
    gap: 2rem;
  }

  .service-list.flex-column {
    padding-left: 1rem;
    border-left: 2px solid var(--color-base-dark-soft);
}
}

.service-list.flex-column {
  flex: 1;
  max-width: 100vw;
  justify-content: space-between;
  gap: 1.5rem;
}

.service-list-title {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.service-list-title h3 {
  font-weight: 400;
  width: fit-content;
  border-bottom: 1px solid var(--color-base-dark-soft);
}

.service-list-solution {
  font-size: var(--fs-4);
  line-height: 1.6;
  font-weight: 600;
}

.more-btn {
  font-size: var(--fs-0);
  width: fit-content;
  margin-top: 1rem;
}

.more-btn a {
  padding: 0.5em 2em;
  border-radius: 6px;
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: linear-gradient(
    90deg,
    var(--color-base-dark-soft) 0%,
    color-mix(in srgb, var(--color-base-dark-soft), white 15%) 25%,
    var(--color-base-dark-soft) 50%,
    color-mix(in srgb, var(--color-base-dark-soft), white 15%) 75%,
    var(--color-base-dark-soft) 100%
  );
  background-size: 200% 100%;
  color: var(--color-text-light);
  border: none;
  box-shadow: 4px 4px 12px rgba(0, 0, 0, 0.3),
    -2px -2px 8px rgba(255, 255, 255, 0.1),
    inset 1px 1px 3px rgba(255, 255, 255, 0.2),
    inset -1px -1px 3px rgba(0, 0, 0, 0.2);
  transition: all 0.4s ease;
}

.more-btn a:hover {
  background-position: 100% 0;
  color: var(--color-text-light);
  box-shadow: 6px 6px 16px rgba(0, 0, 0, 0.4),
    -3px -3px 10px rgba(255, 255, 255, 0.15);
  transform: scale(1.05);
}

.service-list-txt-area {
  display: flex;
  flex-direction: column;
  gap: 1em;
  padding-top: 0.75em;
  padding-bottom: 2rem;
  border-top: 1px solid var(--color-base-dark-soft);
}

.service-list-solution-txt {
  font-size: var(--fs-2);
}

/* ===================================================================
      top-why
  =================================================================== */
section.top-why {
  color: var(--color-text-light);
}

.why-list-wrapper.flex {
  flex: 1;
  gap: 25vw;
}

/* モバイル時は縦並びに変更 */
@media screen and (max-width: 768px) {
  .why-list-wrapper.flex {
    flex-direction: column;
    gap: 5rem;
  }
  
  /* top-fv以外のh-sectionにpaddingを付与 */
  .h-section:not(.top-fv) {
    padding: 4rem 1rem;
  }
}

.why-list.flex-column {
  flex: 1;
  width: 440px;
  max-width: 100%;
  padding: 0.5em 2rem 2rem;
  gap: .5rem;
  color: var(--color-text-dark);
  position: relative;
}

.why-title {
  position: relative;
}

/* パララックス装飾コンテナ */
.why-parallax-container {
  position: absolute;
  inset: 0;
  overflow: visible;
  pointer-events: none;
  z-index: -1;
  opacity: 0;
  transition: opacity 0.8s ease-in-out;
}

/* 可視時にふわっと表示 */
.why-parallax-container.is-visible {
  opacity: 1;
}

/* パララックス装飾要素（車のスピード感演出）*/
.why-parallax-shape {
  position: absolute;
  background: var(--color-base-dark-soft);
  border-radius: 1em;
  opacity: 0.6;
  will-change: transform;
  box-shadow: 0 0 2em var(--color-base-dark-soft);
  /* スピード感を出すためのブラー効果 */
  transition: filter 0.3s ease-out;
}

/* PC: 水平移動中のモーションブラー風 */
@media (min-width: 769px) {
  .why-parallax-shape {
    /* 軽い水平ブラー効果でスピード感 */
    filter: blur(0.5px);
  }
  
  .why-parallax-shape:nth-child(odd) {
    /* 奇数番目はより流線形に */
    border-radius: 2em 0.5em 2em 0.5em;
  }
  
  .why-parallax-shape:nth-child(even) {
    /* 偶数番目は逆方向の流線形 */
    border-radius: 0.5em 2em 0.5em 2em;
  }
}

/* SP: 垂直移動 */
@media (max-width: 768px) {
  .why-parallax-shape {
    filter: blur(0.3px);
  }
}

.why-list h3 {
  font-size: var(--fs-4);
}

.why-list-txt {
  line-height: 2;
}

/* ===================================================================
      top-news
  =================================================================== */

.news-content {
  width: 100%;
  height: 100%;
  min-height: 50vh;
  max-height: 100%;
}

.news-content-wrapper {
  flex: 1;
}

.news-tab-wrapper .news-tab-list {
  display: flex;
  gap: 1em;
  overflow-x: auto;
  padding: 1em 0;
  cursor: pointer;
}

.news-tab {
  transition: 0.3s;
  position: relative;
}

.news-tab.active {
  font-weight: 600;
}

.news-tab::after {
  content: "";
  position: absolute;
  height: 1px;
  width: 0%;
  bottom: 0;
  left: 0;
  background-color: var(--color-text-dark);
  transition: 0.3s;
}

.news-tab.active::after {
  width: 100%;
}

.news-item-area {
  display: flex;
  flex-direction: column;
  gap: 1.5em;
}

.news-item {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5em;
  align-items: center;
  padding-bottom: 0.5rem;
  border-bottom: dotted 1px var(--color-text-dark);
}

.news-item .news-cat {
  font-size: var(--fs-0);
  padding: 0.25em 0.5em;
  background-color: var(--color-base-dark-soft);
  color: var(--color-text-light);
  border-radius: 4px;
}

.news-item .news-date {
  font-size: var(--fs-0);
}

.news-item .news-title {
  width: 100%;
  display: flex;
  justify-content: space-between;
}

/* ===================================================================
      contact
  =================================================================== */

.contact-content-wrapper {
  max-width: 100vw;
  flex: 1;
}

.contact-content-wrapper .contact-content {
  display: flex;
  flex-direction: column;
  gap: 2.5em;
  flex: 1;
  width: 100%;
  max-width: 95vw;
  margin: 0 auto;
  height: 100%;
}

.contact-coppy {
  display: flex;
  flex-direction: column;
  gap: 1.25em;
}

.contact-coppy p {
  line-height: 1.8;
}

.contact-content-wrapper .contact-content .contact-coppy h3 {
  font-weight: 600;
  font-size: var(--fs-3);
}

.contact-content-wrapper .contact-content .contact-btn {
  width: 80%;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
}

.contact-content-wrapper .contact-content .contact-btn p {
  width: 100%;
}

.contact-content-wrapper .contact-content .contact-btn .form-btn {
  background-color: var(--color-accent-primary);
  border-radius: 0.5rem;
  color: var(--color-text-light);
  letter-spacing: 0.075em;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  margin-bottom: 2em;
}

.contact-content-wrapper .contact-content .contact-btn .form-btn a {
  padding: 1.25em;
  display: block;
  width: 100%;
  text-align: center;
  color: var(--color-bg-light);
}

.contact-content-wrapper .contact-content .contact-btn p span {
  font-weight: 700;
  color: var(--color-accent-primary);
}

.contact-content-wrapper .contact-content .contact-btn p .tel-number {
  font-size: var(--fs-4);
  padding: 0.75rem;
  font-weight: 600;
  text-align: center;
  letter-spacing: 0.075em;
  display: block;
  width: 100%;
  color: var(--color-accent-primary);
  display: flex;
  align-items: center;
  gap: 0.5em;
}

.contact-phone-box > p:last-child {
  font-size: var(--fs-0);
  color: var(--color-text-dark);
  opacity: 0.7;
}

/* Contact SNS Section (お問い合わせページのSNSリンク) */
.contact-sns-section {
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 2px solid var(--color-border-default);
}

.contact-sns-title {
  font-size: var(--fs-2);
  font-weight: 600;
  margin-bottom: 1.5rem;
  color: var(--color-text-dark);
}

.contact-sns-links {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-width: 400px;
  margin: 0 auto;
}

@media (min-width: 600px) {
  .contact-sns-links {
    flex-direction: row;
    max-width: 100%;
    justify-content: center;
  }
  
  .contact-sns-link {
    flex: 1;
    max-width: 300px;
  }
}

.contact-sns-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  padding: 1rem 1.5rem;
  border-radius: 0.5rem;
  font-weight: 600;
  font-size: var(--fs-1);
  color: white;
  transition: all 0.3s ease;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.contact-sns-link:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
}

.contact-sns-line {
  background: linear-gradient(135deg, #06C755 0%, #00B900 100%);
}

.contact-sns-line:hover {
  background: linear-gradient(135deg, #00B900 0%, #009900 100%);
}

.contact-sns-instagram {
  background: linear-gradient(135deg, #833AB4 0%, #FD1D1D 50%, #F77737 100%);
}

.contact-sns-instagram:hover {
  background: linear-gradient(135deg, #6B2A95 0%, #E51818 50%, #D66630 100%);
}

.contact-sns-link svg {
  flex-shrink: 0;
}

.contact-sns-link span {
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* ===================================================================
      footer
  =================================================================== */
.top-footer {
  width: 100vw;
  height: 100vh;
  padding-bottom: 0 !important;
}

.footer {
  justify-content: space-between;
  height: 100%;
  padding-bottom: 0 !important;
}

.f-nav__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-template-rows: repeat(4, auto);
  gap: 0.75rem;
}

.f-nav__item {
  text-align: center;
}

.f-nav__item a {
  display: block;
  padding: 0.5rem 1.5rem;
  font-size: var(--fs-1);
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: linear-gradient(
    90deg,
    var(--color-base-dark-soft) 0%,
    color-mix(in srgb, var(--color-base-dark-soft), white 15%) 25%,
    var(--color-base-dark-soft) 50%,
    color-mix(in srgb, var(--color-base-dark-soft), white 15%) 75%,
    var(--color-base-dark-soft) 100%
  );
  background-size: 200% 100%;
  color: var(--color-text-light);
  border-radius: 6px;
  border: none;
  box-shadow: 4px 4px 12px rgba(0, 0, 0, 0.3),
    -2px -2px 8px rgba(255, 255, 255, 0.1),
    inset 1px 1px 3px rgba(255, 255, 255, 0.2),
    inset -1px -1px 3px rgba(0, 0, 0, 0.2);
  transition: all 0.4s ease;
}

.f-nav__item a:hover {
  background-position: 100% 0;
  color: var(--color-text-light);
  box-shadow: 6px 6px 16px rgba(0, 0, 0, 0.4),
    -3px -3px 10px rgba(255, 255, 255, 0.15);
  transform: scale(1.05);
}

.footer-about-wrapper {
  display: flex;
  gap: 1rem;
  justify-content: center;
  align-items: center;
}

.footer-about {
  font-size: var(--fs-0);
  display: flex;
  gap: 1rem;
  align-items: center;
}

.footer-about-txt,
.footer-map {
  flex: 1;
}

.footer-about-heading {
  font-weight: 600;
}

.footer-about-heading + p {
  margin-bottom: 0.75em;
}

.footer-about .footer-map {
  aspect-ratio: 4 / 3;
  border-radius: 0.5rem;
  overflow: hidden;
}

.footer-about .footer-map iframe {
  width: 100%;
  height: 100%;
  aspect-ratio: 4 / 3;
  border: none;
}

.footer-coppy {
  text-align: center;
}

/* Footer Social Links (SNS) */
.footer-social {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.footer-social-links {
  display: flex;
  gap: 1rem;
  margin-top: 0.5rem;
}

.footer-social-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background-color: var(--color-base-dark-soft);
  color: var(--color-text-light);
  transition: all 0.3s ease;
}

.footer-social-link:hover {
  transform: translateY(-3px) scale(1.05);
  background-color: color-mix(in srgb, var(--color-base-dark-soft), white 15%);
  box-shadow: 0 8px 20px rgba(71, 77, 86, 0.4);
}

.footer-social-link svg {
  width: 28px;
  height: 28px;
  transition: transform 0.3s ease;
}

.footer-social-link:hover svg {
  transform: scale(1.1);
}

/* ===================================================================
    page footer
  =================================================================== */
footer.footer {
  width: 100vw;
  height: 100vh;
  padding: 3rem 0.5rem 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

@media (min-width: 769px) {
  section.h-section.top-fv {
    width: 100vw;
  }

  section.h-section.top-fv .h-section__inner {
    background: url("../img/top-fv-sumple-02.webp") no-repeat center
      center/cover;
    width: 100vw;
  }

  .service-list.flex-column {
    flex: 1;
    max-width: 50vw;
  }

  .contact-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }

  .contact-content-wrapper .contact-content {
    flex-direction: row;
    gap: 2.5em;
    flex: 0;
    width: 80vw;
    height: fit-content;
    padding: 2.5em 2em;
  }
  .contact-coppy {
    flex: 1;
  }
  .contact-content-wrapper .contact-content .contact-btn {
    width: 35%;
  }

  .f-nav__list {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, auto);
    gap: 1.25rem;
    width: 100%;
    margin: 0 auto;
  }

  .footer-about {
    width: 80vw;
    font-size: var(--fs-1);
  }

  footer.footer {
    width: 80%;
    margin: 0 auto;
    padding: 10rem 0.5rem 0;
    display: flex;
  }

  .horizontal-root {
    position: relative;
    width: 100%;
  }

  .horizontal-viewport {
    height: 100vh;
    overflow: hidden;
    width: 100%;
  }

  .horizontal-root {
    position: relative;
    width: 100%;
  }

  .horizontal-viewport {
    height: 100vh;
    overflow: hidden;
    width: 100%;
  }

  .horizontal-track {
    display: flex;
    flex-direction: row;
    height: 100%;
    width: auto;
    will-change: transform;
  }

  .h-section {
    min-width: 100vw;
    width: auto; /* コンテンツの幅に応じて可変 */
    height: 100vh;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .h-section__inner {
    width: 100%;
    max-width: none; /* 最大幅の制限を解除 */
    height: 100%;
    padding: 4rem 10dvw;
    margin: 0 auto;
  }

  /* 各セクション固有のスタイル */
  
  /* トップFVセクション - 標準幅 */
  .h-section.top-fv .h-section__inner {
    max-width: 100vw;
  }

  /* サービスセクション - コンテンツに応じて広げる */
  .h-section.top-service .h-section__inner {
    max-width: none;
    width: max-content;
    min-width: 100%;
  }

  /* サービスリストを横並びにして幅を広げる */
  .h-section.top-service .service-list-wrapper {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 25vw;
    width: max-content;
  }

  .h-section.top-service .service-list {
    min-width: 400px;
    max-width: 500px;
  }

  /* WHYセクション - コンテンツに応じて広げる */
  .h-section.top-why .h-section__inner {
    max-width: none;
    width: max-content;
    min-width: 100%;
  }

  .h-section.top-why .why-list-wrapper {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 25vw;
    width: max-content;
  }

  .h-section.top-why .why-list {
    min-width: 400px;
    max-width: 500px;
  }

  /* CONTACTセクション - 標準幅 */
  .h-section.top-contact .h-section__inner {
    max-width: 100vw;
  }

  /* NEWSセクション - 標準幅 */
  .h-section.top-news .h-section__inner {
    max-width: 100vw;
  }

  /* FOOTERセクション - 標準幅 */
  .h-section.top-footer .h-section__inner {
    max-width: 100vw;
  }
}

/* ============================================================
   既存のスタイル
============================================================ */

/* ======================================================================================== */
/* ======================================================================================== */
/* ======================================================================================== */
/* ======================================================================================== */
/* ======================================================================================== */
/* ======================================================================================== */
/* ======================================================================================== */
/* ======================================================================================== */

/* -------------------------------------------
   Base Layout & Colors (下層ページ共通)
   - トップページとトンマナを統一 (CSS変数を活用)
   ------------------------------------------- */
.sub-page-main {
  width: 100%;
  overflow-x: hidden;
  /* トップページと統一: CSS変数を使用 */
  background-color: var(--color-bg-light);
  color: var(--color-text-dark);
  /* トップページと同じフォントファミリー */
  font-family: "Noto Sans JP", "Helvetica Neue", Arial, "Liberation Sans",
    "Segoe UI", sans-serif;
  line-height: 1.8;
  font-feature-settings: "palt";
  letter-spacing: 0.05em;

  /* ヘッダーがfixedの場合、コンテンツが被らないように余白を確保 */
  padding-top: 80px;
}

/* スマホでのヘッダー余白調整 */
@media (max-width: 768px) {
  .sub-page-main {
    padding-top: 60px;
  }
}

/* 共通コンテナ: 固定幅を使わず、最大幅と%で制御 */
.sub-container {
  width: 100%;
  max-width: 1000px;
  position: relative;
  z-index: 10;
  margin: 0 auto;
}

/* リンクホバーエフェクト */
.sub-page-main a {
  color: var(--color-text-dark);
  transition: opacity 0.3s ease;
  text-decoration: none;
}
.sub-page-main a:hover {
  opacity: 0.7;
}

/* -------------------------------------------
   Page Header (メインビジュアル)
   ------------------------------------------- */
.page-header {
  width: 100%;
  max-width: 100vw;
  height: 100vh;
  min-height: 300px;
  background-size: cover;
  background-position: center;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: start;
  justify-content: center;
  padding: 1rem 4rem;
}

.page-title {
  position: relative;
  color: var(--color-text-dark);
  /* font-size: clamp(1.5rem, 4vw, 3rem); */
  font-weight: 400;
  font-size: var(--font-size-sm);
  text-align: center;
  letter-spacing: 0.1em;
  z-index: 1;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
  margin-bottom: 1em;
  padding-bottom: 0.25em;
  border-bottom: 1px solid rgba(54, 58, 64, 0.5);
}

.page-title span {
  display: inline-block;
  opacity: 0.9;
  letter-spacing: 0.05em;
  font-family: "Inter", sans-serif; /* 英語フォントがあれば */
}

/* ページ導入文 */
.page-intro {
  max-width: 800px;
  font-size: var(--fs-1);
  font-weight: 500;
  line-height: 2;
  position: relative;
  z-index: 1;
}

.page-intro span {
  display: block;
  font-size: var(--fs-4);
  font-weight: 900;
  letter-spacing: 0.1em;
}

/* -------------------------------------------
   Sections & Typography
   ------------------------------------------- */
.sub-section {
  width: 95%;
  padding: 0.75rem;
  margin: 0 auto 4em;
  border-radius: 24px;
  /* 上下の余白を画面幅に応じて可変に */
  padding: clamp(3rem, 6vw, 6rem) 1.5em;
  background-color: transparent; /* トップページの背景を活かす */
}

/* 偶数番目のセクションに軽い白の半透明背景でリズムを作る */
.sub-section:nth-of-type(even) {
  background-color: var(--color-bg-light-warm);
}

/* 明示的に背景色を変えたいセクション用 */
.sub-section.sub-section-alt {
  background-color: var(--color-bg-light);
}

.sub-section-title {
  font-size: clamp(1.5rem, 3vw, 2.2rem);
  color: var(--color-text-dark);
  /* text-align: center; */
  margin-bottom: clamp(2rem, 4vw, 3rem);
  font-weight: 700;
  position: relative;
  letter-spacing: 0.05em;
}

/* タイトル下のクローバーアイコン装飾 */
.sub-section-title::after {
  content: "";
  display: block;
  font-size: 1rem;
  margin-top: 0.8rem;
  color: var(--color-base-dark); /* アクセントカラー */
}

/* セクション導入文 */
.sub-section-lead {
  text-align: center;
  margin-bottom: 2rem;
}

/* 代表者署名 */
.ceo-signature {
  text-align: right;
  font-weight: bold;
  margin-top: 1rem;
}

/* アクセスマップ */
.access-map-wrapper {
  width: 100%;
  height: 400px;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

.access-map-wrapper iframe {
  width: 100%;
  height: 100%;
  border: 0;
}

/* 汎用リスト（ディスク付き） */
.sub-list-disc {
  list-style: disc;
  margin: 2rem auto;
  max-width: 600px;
  padding-left: 1.5rem;
}

/* 小見出し (H3) */
.sub-h3 {
  font-size: clamp(1.1rem, 1.8vw, 1.4rem);
  font-weight: 700;
  margin-bottom: 1rem;
  border-left: 5px solid var(--color-base-dark); /* 左側にライン */
  padding-left: 1rem;
  line-height: 1.5;
  color: var(--color-text-dark);
}

.sub-h3 span.exp {
  font-size: var(--font-size-sm);
  display: block;
  font-weight: 400;
}

/* -------------------------------------------
   Components
   ------------------------------------------- */

/* 2カラムレイアウト (画像 + テキスト) */
.col-2 {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(2rem, 4vw, 4rem);
  align-items: center;
}

/* 子要素は400pxを基準に伸縮。400px以下になると縦並びになる */
.col-2 > * {
  flex: 1 1 400px;
}

/* 逆配置用クラス (PCで画像を右、テキストを左などにしたい場合) */
.col-2.reverse {
  flex-direction: row-reverse;
}

.col-2 .txt-box {
  font-size: var(--font-size-base);
  line-height: 1.8;
  display: flex;
  flex-direction: column;
  gap: 2em;
}

.col-2 .txt-box .txt-box-item p {
  line-height: 2;
}

.col-2 .img-box {
  background-color: var(--color-base-dark);
  border-radius: 1rem;
}

/* 画像スタイル */
.col-2 .img-box img {
  width: 100%;
  height: auto;
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06); /* ふんわりした柔らかい影 */
}

/* Flow List (ご利用の流れ) */
.flow-list {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  counter-reset: flow-counter; /* 番号カウント開始 */
}

.flow-item {
  background: var(--color-bg-light-warm); /* トップページと統一 */
  padding: 2rem;
  border-radius: 12px;
  border: 1px solid var(--color-border-default);
  position: relative;
  padding-left: 4.5rem; /* 番号表示エリア確保 */
  backdrop-filter: blur(5px); /* ぼかし効果で背景をほんのり見せる */
}

/* 自動連番 (STEP 1, 2...) */
.flow-item::before {
  counter-increment: flow-counter;
  content: counter(flow-counter);
  position: absolute;
  top: 2rem;
  left: 1.5rem;
  width: 2rem;
  height: 2rem;
  background: var(--color-base-dark);
  color: var(--color-text-light);
  border-radius: 50%;
  text-align: center;
  line-height: 2rem;
  font-weight: bold;
  font-family: "Inter", sans-serif;
  box-shadow: 0 2px 5px rgba(54, 58, 64, 0.25);
}

.flow-title {
  font-weight: 700;
  font-size: 1.1rem;
  margin-bottom: 0.5rem;
  color: var(--color-base-dark);
}

/* FAQ List (よくある質問) */
.faq-list {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.faq-item {
  border: 1px solid var(--color-border-default);
  border-radius: 8px;
  background: var(--color-bg-light);
  overflow: hidden;
  backdrop-filter: blur(5px);
}

.faq-q {
  padding: 1.25rem 1.5rem;
  background: var(--color-bg-light-warm);
  font-weight: 700;
  color: var(--color-base-dark);
  position: relative;
  display: flex;
  align-items: flex-start;
}

.faq-q::before {
  content: "Q.";
  margin-right: 0.75rem;
  color: var(--color-base-dark);
  font-weight: 900;
}

.faq-a {
  padding: 1.5rem;
  border-top: 1px solid var(--color-border-default);
  background: var(--color-bg-light);
  display: flex;
  align-items: flex-start;
}

.faq-a::before {
  content: "A.";
  margin-right: 0.75rem;
  color: var(--color-text-dark);
  font-weight: 900;
}

/* Company Table (会社概要テーブル) */
.company-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--color-bg-light);
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.03);
  backdrop-filter: blur(5px);
}

.company-table th,
.company-table td {
  padding: 1.2rem 1.5rem;
  border-bottom: 1px solid var(--color-border-default);
  text-align: left;
}

.company-table th {
  width: 30%;
  background-color: var(--color-bg-light-warm);
  font-weight: 700;
  color: var(--color-text-dark);
  white-space: nowrap; /* 見出しは改行させない */
}

/* Contact Wrapper (お問い合わせフォーム囲み) */
.contact-wrapper {
  padding: clamp(1.5rem, 5vw, 3rem);
  border-radius: 0.5rem;
  border: 1px solid var(--color-border-default);
}

/* Contact Phone Box (電話連絡ボックス) */
.contact-phone-box {
  text-align: center;
  margin-bottom: 0;
  padding: clamp(1.5rem, 5vw, 2.5rem);
  border-radius: 0.5rem;
  border: 1px solid var(--color-border-default);
}

.contact-phone-box .sub-section-title {
  font-size: var(--fs-3);
  margin-bottom: 0.5rem;
}

.contact-phone-desc {
  margin-bottom: 1rem;
  color: var(--color-text-dark);
}

.contact-phone-number {
  font-size: var(--fs-5);
  color: var(--color-accent-primary);
  font-weight: bold;
  display: block;
  line-height: 1;
  margin: 1rem 0;
}

.contact-phone-number:hover {
  opacity: 0.8;
}

.contact-phone-box > p:last-child {
  font-size: var(--fs-0);
  color: var(--color-text-dark);
  opacity: 0.7;
}

/* Contact Form Intro (フォーム説明テキスト) */
.contact-form-intro {
  text-align: center;
  color: var(--color-text-dark);
  margin-bottom: 1.5rem;
  line-height: 1.8;
  font-size: var(--fs-1);
}

.contact-wrapper .sub-section-title {
  text-align: center;
  margin-bottom: 1.5rem;
}

/* Contact CTA (共通パーツ用) */
.contact-cta-btn {
  display: inline-block;
  background: var(--color-base-dark);
  color: var(--color-text-light);
  padding: 1rem 3rem;
  border-radius: 0.5rem;
  font-weight: bold;
  font-size: 1.1rem;
  transition: background 0.2s, opacity 0.2s;
}
.contact-cta-btn:hover {
  background: var(--color-base-dark-soft);
}

/* ============================================================
   Contact Form 7 Custom Styles (Modern & Stylish)
   ============================================================ */

/* フォーム全体のラッパー */
.cf7-wrap.car-form {
  max-width: 840px;
  margin: 0 auto;
  padding: 1rem 0;
}

/* 各入力グループの余白 */
.cf7-group {
  margin-bottom: 2.5rem;
}

/* ラベルとタイトルのスタイル */
.cf7-group label,
.cf7-title {
  display: block;
  font-size: 1rem;
  font-weight: 700;
  color: #363a40; /* ベースダーク */
  margin-bottom: 0.8rem;
  letter-spacing: 0.05em;
  display: flex;
  align-items: center;
}

/* ---------------------------------------------------------
   必須バッジの制御
   HTML側で class="cf7-group required" と書いた場所だけに表示
   --------------------------------------------------------- */
.cf7-group.required label::after,
.cf7-group.required .cf7-title::after {
  content: "必須";
  display: inline-block;
  background-color: #a93226; /* ヴィンテージレッド */
  color: #fff;
  font-size: 0.7rem;
  padding: 2px 6px;
  border-radius: 4px;
  margin-left: 0.8em;
  font-weight: normal;
  line-height: 1.2;
}

/* 【追加修正】ラジオボタンの個別の選択肢（カード）には「必須」を出さない */
.cf7-group.required .cf7-radio-card label::after {
  content: none;
  display: none;
}

/* -------------------------------------------
   お問い合わせ項目（ラジオボタン）のカード化
   ------------------------------------------- */
/* CF7が出力するリスト構造のスタイルリセット */
.cf7-radio-card .wpcf7-list-item {
  display: inline-block;
  margin: 0 0.5rem 0.5rem 0;
  width: calc(50% - 0.5rem); /* スマホ：2列 */
  box-sizing: border-box;
}

/* PC：4列表示 */
@media (min-width: 768px) {
  .cf7-radio-card .wpcf7-list-item {
    width: calc(25% - 0.5rem);
  }
}

/* ラベル（クリック領域） */
.cf7-radio-card label {
  cursor: pointer;
  display: block;
  width: 100%;
  margin: 0;
}

/* 元のラジオボタンを非表示 */
.cf7-radio-card input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

/* カードの見た目（通常時） */
.cf7-radio-card .wpcf7-list-item-label {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 54px; /* 高さ統一 */
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 8px;
  font-size: 0.9rem;
  color: #666;
  font-weight: bold;
  transition: all 0.2s ease;
  text-align: center;
}

/* カードの見た目（選択時・ホバー時） */
.cf7-radio-card input[type="radio"]:checked + .wpcf7-list-item-label {
  background-color: #363a40; /* 選択時はダークグレー */
  color: #fff;
  border-color: #363a40;
  box-shadow: 0 4px 10px rgba(54, 58, 64, 0.3);
  transform: translateY(-2px);
}

.cf7-radio-card .wpcf7-list-item-label:hover {
  border-color: #363a40;
  color: #363a40;
}

/* -------------------------------------------
   テキスト入力エリア（Input / Textarea）
   ------------------------------------------- */
.cf7-input,
.cf7-textarea {
  width: 100%;
  padding: 1rem 1.2rem;
  background-color: #fff; /* 背景白 */
  border: 1px solid #e5e5e5;
  border-radius: 8px; /* 角丸 */
  font-size: 1rem;
  color: #333;
  transition: all 0.3s ease;
  appearance: none; /* iOSのリセット */
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.02); /* ほんのり影 */
}

/* テキストエリアの高さ */
.cf7-textarea {
  height: 240px;
  resize: vertical;
  line-height: 1.6;
}

/* 入力フォーカス時 */
.cf7-input:focus,
.cf7-textarea:focus {
  border-color: #a0a0a0; /* Metallic Silver */
  background-color: #fff;
  outline: none;
  box-shadow: 0 0 0 3px rgba(160, 160, 160, 0.25); /* シルバーのふんわりグロー */
}

/* プレースホルダーの色 */
.cf7-input::placeholder,
.cf7-textarea::placeholder {
  color: #ccc;
}

/* -------------------------------------------
   送信ボタン
   ------------------------------------------- */
.cf7-submit {
  text-align: center;
  margin-top: 4rem;
}

.cf7-submit input[type="submit"] {
  display: inline-block;
  background-color: #363a40; /* ベースダーク */
  color: #fff;
  font-weight: bold;
  font-size: 1.1rem;
  padding: 1.2rem 5rem; /* 横長に大きく */
  border: none;
  border-radius: 50px; /* 完全な丸み */
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
  -webkit-appearance: none;
}

/* ホバー時 */
.cf7-submit input[type="submit"]:hover {
  background: linear-gradient(
    135deg,
    #6b6b6b 0%,
    #8b8b8b 50%,
    #a0a0a0 100%
  ); /* Metallic Gradient */
  transform: translateY(-3px);
  box-shadow: 0 10px 25px rgba(100, 100, 100, 0.4);
}

/* スピナー（送信中のくるくる）位置調整 */
.wpcf7-spinner {
  position: absolute;
  margin-top: 15px;
}

/* -------------------------------------------
   Responsive Adjustments (スマホ用調整)
   ------------------------------------------- */
@media (max-width: 768px) {
  /* 2カラムを1カラムに */
  .col-2 {
    flex-direction: column;
  }
  /* 逆配置もスマホでは上から順に直す */
  .col-2.reverse {
    flex-direction: column;
  }

  /* 会社概要テーブルをブロック表示に（縦積み） */
  .company-table th,
  .company-table td {
    display: block;
    width: 100%;
    border: none;
  }
  .company-table th {
    background: transparent;
    color: var(--color-base-dark);
    padding-bottom: 0.2rem;
    padding-top: 1.5rem;
  }
  .company-table tr:first-child th {
    padding-top: 1rem;
  }
  .company-table td {
    padding-top: 0;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--color-border-default);
  }

  /* 流れの番号位置微調整 */
  .flow-item {
    padding-left: 1.5rem;
    padding-top: 3.5rem; /* 番号の下にテキストが来るように */
  }
  .flow-item::before {
    top: 1rem;
    left: 1rem;
  }

  /* コンタクトフォーム用レスポンシブ調整 */
  .contact-wrapper {
    padding: 1rem 0.75rem;
    border-radius: 0.375rem;
  }

  .contact-phone-box {
    padding: 1rem 0.75rem;
    border-radius: 0.375rem;
  }

  .contact-phone-number {
    font-size: var(--fs-4);
  }

  .contact-form-intro {
    font-size: var(--fs-0);
    margin-bottom: 1rem;
  }

  /* セクションのパディングを縮小 */
  .sub-section {
    padding: clamp(1.5rem, 4vw, 3rem) 0.75rem;
    width: 100%;
    border-radius: 0;
    margin-bottom: 2rem;
  }
}

/* =========================================
   Page Load Animation (Fade In/Out)
   ページロードアニメーション（フェードイン/フェードアウト）
========================================= */

/* ページ全体のラッパー（フェード用） */
.page-transition-wrapper {
  opacity: 0;
  transition: opacity 0.6s ease-in-out;
}

/* ページ読み込み完了時 */
.page-transition-wrapper.is-loaded {
  opacity: 1;
}

/* ページ遷移開始時（フェードアウト） */
.page-transition-wrapper.is-leaving {
  opacity: 0;
}

/* ローディングオーバーレイ（オプション：読み込み中に表示） */
.page-loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.95);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  opacity: 1;
  transition: opacity 0.4s ease-in-out, visibility 0.4s ease-in-out;
  pointer-events: none;
}

.page-loader.is-hidden {
  opacity: 0;
  visibility: hidden;
}

/* ローディングスピナー（オプション） */
.page-loader__spinner {
  width: 50px;
  height: 50px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid #333;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* =========================================
   Front Page Initial Load Animation
   フロントページ専用 初回ロードアニメーション
========================================= */

/* 初回ロードアニメーション全体のコンテナ */
.front-page-loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 100000;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
}

.front-page-loader.is-complete {
  opacity: 0;
  visibility: hidden;
}

/* 背景画像（top-load.webp） */
.front-page-loader__bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url('../img/top-load.webp');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  z-index: 1;
}

/* ロゴのラッパー */
.front-page-loader__logo-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
}

/* ロゴ本体 */
.front-page-loader__logo {
  width: 500px;
  height: auto;
  opacity: 1;
  transform: scale(1);
  animation: front-logo-animation 1.9s ease-in-out forwards;
}

.front-page-loader__logo svg {
  width: 100%;
  height: auto;
  display: block;
}

/* ロゴのアニメーション */
@keyframes front-logo-animation {
  0% {
    opacity: 1;
    transform: scale(1);
  }
  52.63% {
    /* 1秒 / 1.9秒 = 52.63% で固定開始 */
    opacity: 1;
    transform: scale(1);
  }
  84.21% {
    /* 1.6秒 / 1.9秒 = 84.21% で拡大完了 */
    opacity: 1;
    transform: scale(10);
  }
  100% {
    opacity: 1;
    transform: scale(10);
  }
}

/* ホワイトアウトオーバーレイ */
.front-page-loader__whiteout {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #ffffff;
  opacity: 0;
  z-index: 3;
  animation: front-whiteout-animation 2.2s ease-in-out forwards;
  pointer-events: none;
}

/* ホワイトアウトのアニメーション */
@keyframes front-whiteout-animation {
  0% {
    opacity: 0;
  }
  59.09% {
    /* 1.3秒 / 2.2秒 = 59.09% でホワイトアウト開始 */
    opacity: 0;
  }
  72.73% {
    /* 1.6秒 / 2.2秒 = 72.73% でホワイトアウト完了 */
    opacity: 1;
  }
  100% {
    opacity: 1;
  }
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .front-page-loader__logo {
    width: 350px;
  }
}

@media (max-width: 480px) {
  .front-page-loader__logo {
    width: 250px;
  }
}

/* ===================================================================
   Single News Post Style (single-news.php)
   - スタイリッシュでシンプルな記事表示
   - 他ページとのトーンを踏襲
   =================================================================== */

/* 投稿記事全体のコンテナ */
.sub-page-main article {
  max-width: 800px;
  margin: 0 auto;
  padding: 2rem 1.5rem 4rem;
}

/* 記事タイトル */
.sub-page-main .page-title {
  font-size: clamp(1.5rem, 4vw, 2.5rem);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-text-dark);
  margin-bottom: 1.5rem;
  padding-bottom: 0.75rem;
  border-bottom: 2px solid var(--color-border-default);
  text-shadow: none;
  text-align: left;
}

/* 投稿メタ情報 */
.post-meta {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 3rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--color-border-default);
  color: var(--color-text-dark);
  opacity: 0.7;
  font-size: var(--fs-0);
}

.post-meta .post-date {
  display: inline-block;
}

/* 投稿本文コンテンツ */
.post-content {
  font-size: var(--fs-1);
  line-height: 2;
  color: var(--color-text-dark);
  letter-spacing: 0.05em;
}

/* 段落 */
.post-content p {
  margin-bottom: 1.5em;
  line-height: 2;
}

/* 見出し h2 */
.post-content h2 {
  font-size: clamp(1.3rem, 2.5vw, 1.8rem);
  font-weight: 700;
  color: var(--color-text-dark);
  margin: 3rem 0 1.5rem;
  padding-left: 1rem;
  border-left: 5px solid var(--color-accent-primary);
  line-height: 1.5;
}

/* 見出し h3 */
.post-content h3 {
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  font-weight: 600;
  color: var(--color-text-dark);
  margin: 2.5rem 0 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border-default);
  line-height: 1.5;
}

/* 見出し h4 */
.post-content h4 {
  font-size: var(--fs-2);
  font-weight: 600;
  color: var(--color-text-dark);
  margin: 2rem 0 1rem;
  line-height: 1.5;
}

/* 強調テキスト */
.post-content strong {
  font-weight: 700;
  color: var(--color-accent-primary);
  background: linear-gradient(transparent 60%, rgba(232, 91, 79, 0.2) 60%);
  padding: 0 0.2em;
}

/* リスト */
.post-content ul,
.post-content ol {
  margin: 2rem 0 2rem 1.5rem;
  padding-left: 1rem;
}

.post-content ul {
  list-style: disc;
}

.post-content ul li {
  margin-bottom: 1rem;
  padding-left: 0.5rem;
  line-height: 1.8;
}

.post-content ol {
  list-style: decimal;
}

.post-content ol li {
  margin-bottom: 1rem;
  padding-left: 0.5rem;
  line-height: 1.8;
}

/* 引用 */
.post-content blockquote {
  margin: 2rem 0;
  padding: 1.5rem 1.5rem 1.5rem 2rem;
  background-color: var(--color-bg-light-warm);
  border-left: 4px solid var(--color-accent-primary);
  border-radius: 8px;
  font-style: italic;
  color: var(--color-text-dark);
  opacity: 0.9;
}

.post-content blockquote p:last-child {
  margin-bottom: 0;
}

/* コード */
.post-content code {
  background-color: var(--color-bg-light-warm);
  padding: 0.2em 0.5em;
  border-radius: 4px;
  font-family: "Courier New", monospace;
  font-size: 0.9em;
  color: var(--color-accent-primary);
}

.post-content pre {
  background-color: var(--color-base-dark);
  color: var(--color-text-light);
  padding: 1.5rem;
  border-radius: 8px;
  overflow-x: auto;
  margin: 2rem 0;
  line-height: 1.6;
}

.post-content pre code {
  background: none;
  padding: 0;
  color: var(--color-text-light);
  font-size: 0.9rem;
}

/* 画像 */
.post-content img {
  max-width: 100%;
  height: auto;
  border-radius: 12px;
  margin: 2rem auto;
  display: block;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

/* リンク */
.post-content a {
  color: var(--color-accent-primary);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: opacity 0.3s ease;
}

.post-content a:hover {
  opacity: 0.7;
}

/* 区切り線 */
.post-content hr {
  border: none;
  border-top: 1px solid var(--color-border-default);
  margin: 3rem 0;
}

/* テーブル */
.post-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 2rem 0;
  font-size: var(--fs-0);
}

.post-content table th,
.post-content table td {
  padding: 1rem;
  border: 1px solid var(--color-border-default);
  text-align: left;
}

.post-content table th {
  background-color: var(--color-bg-light-warm);
  font-weight: 600;
}

.post-content table tr:nth-child(even) {
  background-color: var(--color-bg-light);
}

/* フッター(一覧に戻るリンク) */
.post-footer {
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 1px solid var(--color-border-default);
  text-align: center;
}

.post-footer .back-to-archive {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1.5rem;
  background-color: var(--color-bg-light-warm);
  color: var(--color-text-dark);
  border: 1px solid var(--color-border-default);
  border-radius: 8px;
  font-size: var(--fs-1);
  transition: all 0.3s ease;
  text-decoration: none;
}

.post-footer .back-to-archive:hover {
  background-color: var(--color-base-dark);
  color: var(--color-text-light);
  border-color: var(--color-base-dark);
  transform: translateX(-4px);
  opacity: 1;
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .sub-page-main article {
    padding: 1.5rem 1rem 3rem;
  }

  .post-content {
    font-size: var(--fs-0);
  }

  .post-content h2 {
    margin: 2.5rem 0 1rem;
    padding-left: 0.75rem;
    border-left-width: 4px;
  }

  .post-content h3 {
    margin: 2rem 0 0.75rem;
  }

  .post-content ul,
  .post-content ol {
    margin: 1.5rem 0 1.5rem 1rem;
    padding-left: 0.5rem;
  }

  .post-content blockquote {
    padding: 1rem 1rem 1rem 1.5rem;
    margin: 1.5rem 0;
  }

  .post-content table {
    font-size: 0.8rem;
  }

  .post-content table th,
  .post-content table td {
    padding: 0.5rem;
  }
}

@media (max-width: 480px) {
  .sub-page-main .page-title {
    font-size: 1.3rem;
  }

  .post-meta {
    font-size: 0.75rem;
    margin-bottom: 2rem;
  }

  .post-footer .back-to-archive {
    padding: 0.6rem 1.2rem;
    font-size: var(--fs-0);
  }
}
