/*
 Theme Name:   Astra Child
 Theme URI:    https://souki.ltd/
 Description:  Astra Child Theme for 株式会社蒼希
 Author:       samidare
 Template:     astra
 Version:      1.0.0
 Text Domain:  astra-child
*/
/* ============================================================
   株式会社蒼希 グローバルCSS
   テーマ: Astra (WordPress)
   作成日: 2026-02-24
   ============================================================ */

/* ============================================================
   CSS変数定義
   ============================================================ */
:root {
  --souki-primary:     #0B2D6B;
  --souki-accent:      #1A5FCC;
  --souki-bg:          #F5F7FA;
  --souki-text:        #1A1A1A;
  --souki-white:       #FFFFFF;
  --souki-border:      #E0E4ED;
  --souki-shadow:      0 4px 16px rgba(11, 45, 107, 0.10);
  --souki-shadow-hover:0 8px 28px rgba(11, 45, 107, 0.18);
  --souki-radius:      8px;
  --souki-transition:  all 0.2s ease;
  --souki-container:   1100px;
  --souki-font:        'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Meiryo', sans-serif;
}


/* ============================================================
   1. リセット・基本設定
   ============================================================ */

/* Astra デフォルトのbody余白・フォントを上書き */
body {
  font-family: var(--souki-font) !important;
  font-size: 16px;
  line-height: 1.8;
  color: var(--souki-text);
  background-color: var(--souki-white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Astraのデフォルト余白リセット */
.ast-container,
.ast-flex-1 {
  max-width: var(--souki-container) !important;
}

/* リンクデフォルト */
a {
  color: var(--souki-accent);
  text-decoration: none;
  transition: var(--souki-transition);
}

a:hover {
  color: var(--souki-primary);
  text-decoration: none;
}

/* 画像レスポンシブ */
img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* ボックスサイジング統一 */
*,
*::before,
*::after {
  box-sizing: border-box;
}


/* ============================================================
   2. グローバルヘッダー（Astra #masthead 上書き）
   ============================================================ */

/* ヘッダー本体 */
#masthead.site-header,
.site-header {
  position: sticky !important;
  top: 0 !important;
  z-index: 1000 !important;
  background-color: var(--souki-primary) !important;
  border-bottom: none !important;
  padding: 0 !important;
  transition: box-shadow 0.3s ease !important;
}

/* スクロール後シャドウ（JSでクラス付与、またはCSS :has活用） */
#masthead.site-header.scrolled,
.site-header.scrolled {
  box-shadow: 0 2px 20px rgba(11, 45, 107, 0.35) !important;
}

/* Astra ヘッダー内部コンテナ */
#masthead .ast-container,
.site-header .ast-container {
  max-width: var(--souki-container) !important;
  padding: 0 24px !important;
}

/* ロゴエリア */
.ast-logo-container .site-title a,
.ast-logo-container .site-title,
.ast-site-identity .site-title a {
  color: var(--souki-white) !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
}

.ast-logo-container img {
  filter: brightness(0) invert(1);
}

/* Astraナビゲーション */
.ast-header-nav .menu > li > a,
.main-navigation .menu > li > a,
#site-navigation .menu > li > a {
  color: var(--souki-white) !important;
  font-size: 0.9rem !important;
  font-weight: 500 !important;
  padding: 8px 16px !important;
  letter-spacing: 0.04em !important;
  transition: var(--souki-transition) !important;
}

.ast-header-nav .menu > li > a:hover,
.ast-header-nav .menu > li.current-menu-item > a,
.main-navigation .menu > li > a:hover,
#site-navigation .menu > li > a:hover {
  color: var(--souki-accent) !important;
  background: transparent !important;
}

/* ドロップダウン */
.ast-header-nav .menu .sub-menu,
.main-navigation .menu .sub-menu {
  background-color: var(--souki-primary) !important;
  border-top: 2px solid var(--souki-accent) !important;
  box-shadow: var(--souki-shadow) !important;
}

.ast-header-nav .menu .sub-menu a,
.main-navigation .menu .sub-menu a {
  color: rgba(255, 255, 255, 0.85) !important;
  font-size: 0.875rem !important;
  padding: 10px 20px !important;
}

.ast-header-nav .menu .sub-menu a:hover,
.main-navigation .menu .sub-menu a:hover {
  color: var(--souki-white) !important;
  background-color: rgba(26, 95, 204, 0.3) !important;
}

/* モバイルハンバーガーボタン */
.ast-mobile-menu-trigger,
.menu-toggle,
button.ast-mobile-menu-buttons-fill {
  color: var(--souki-white) !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.5) !important;
  border-radius: 4px !important;
  padding: 8px 10px !important;
}

.ast-mobile-menu-trigger span,
.menu-toggle span {
  background-color: var(--souki-white) !important;
}

/* モバイルメニュー展開時 */
.ast-mobile-header-nav {
  background-color: var(--souki-primary) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.15) !important;
}

.ast-mobile-header-nav .menu > li > a {
  color: var(--souki-white) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
  padding: 14px 24px !important;
}

/* Astraのサイトヘッダーブレーク */
.ast-above-header,
.ast-below-header {
  background-color: var(--souki-primary) !important;
}


/* ============================================================
   3. ヒーローセクション（.souki-hero）
   ============================================================ */

.souki-hero {
  position: relative;
  width: 100%;
  min-height: 600px;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(155deg, #081e4a 0%, #0B2D6B 45%, #1245a8 100%);
  overflow: hidden;
}

/* グラデーション装飾（右下に薄い丸） */
.souki-hero::before {
  content: '';
  position: absolute;
  width: 600px;
  height: 600px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(26,95,204,0.18) 0%, transparent 70%);
  top: -100px;
  right: -100px;
  z-index: 1;
}

/* 左下装飾 */
.souki-hero::after {
  content: '';
  position: absolute;
  width: 400px;
  height: 400px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(26,95,204,0.12) 0%, transparent 70%);
  bottom: -80px;
  left: -80px;
  z-index: 1;
}

/* コンテンツ */
.souki-hero__inner {
  position: relative;
  z-index: 2;
  text-align: center;
  padding: 0 24px;
  max-width: 860px;
}

/* ヒーローロゴ */
.souki-hero__logo {
  width: 84px !important;
  height: 84px !important;
  object-fit: contain !important;
  margin: 0 auto 16px !important;
  display: block !important;
  filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.35));
}

/* 会社名 */
.souki-hero__company {
  font-size: 1.15rem;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.92);
  letter-spacing: 0.22em;
  margin-bottom: 20px;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.45);
}

/* キャッチコピー */
.souki-hero__title {
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 700;
  color: var(--souki-white);
  line-height: 1.3;
  letter-spacing: 0.06em;
  margin-bottom: 24px;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}

/* サブコピー */
.souki-hero__sub {
  font-size: 1.1rem;
  color: rgba(255, 255, 255, 0.88);
  line-height: 1.9;
  margin-bottom: 40px;
  letter-spacing: 0.03em;
}

/* ヒーローCTAボタン */
.souki-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background-color: var(--souki-accent);
  color: var(--souki-white) !important;
  font-size: 1rem;
  font-weight: 700;
  padding: 16px 40px;
  border-radius: 4px;
  letter-spacing: 0.08em;
  transition: var(--souki-transition);
  box-shadow: 0 4px 16px rgba(26, 95, 204, 0.4);
}

.souki-hero__cta:hover {
  background-color: #1550b0;
  color: var(--souki-white) !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(26, 95, 204, 0.5);
}


/* ============================================================
   4. セクション共通スタイル（.souki-section）
   ============================================================ */

.souki-section {
  padding: 80px 0;
  background-color: var(--souki-white);
}

.souki-section--gray {
  background-color: var(--souki-bg);
}

/* コンテナ */
.souki-section .souki-container,
.souki-container {
  max-width: var(--souki-container);
  margin: 0 auto;
  padding: 0 24px;
}

/* セクションタイトル */
.souki-section__title {
  font-size: 2rem;
  font-weight: 700;
  color: var(--souki-primary);
  border-left: 4px solid var(--souki-accent);
  padding-left: 16px;
  margin-bottom: 48px;
  line-height: 1.4;
  letter-spacing: 0.04em;
}

/* セクションリード文 */
.souki-section__lead {
  font-size: 1.05rem;
  color: #444;
  line-height: 1.9;
  margin-bottom: 40px;
  max-width: 720px;
}


/* ============================================================
   5. カードグリッド（.souki-cards）
   ============================================================ */

.souki-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

/* カード本体 */
.souki-card {
  background-color: var(--souki-white);
  border-radius: var(--souki-radius);
  padding: 32px 24px;
  box-shadow: var(--souki-shadow);
  transition: var(--souki-transition);
  border-bottom: 3px solid transparent;
}

.souki-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--souki-shadow-hover);
  border-bottom-color: var(--souki-accent);
}

/* カードアイコンエリア */
.souki-card__icon {
  width: 56px;
  height: 56px;
  background-color: rgba(26, 95, 204, 0.1);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 20px;
  color: var(--souki-accent);
  font-size: 1.5rem;
}

.souki-card__icon img,
.souki-card__icon svg {
  width: 28px;
  height: 28px;
}

/* カードタイトル */
.souki-card__title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--souki-primary);
  margin-bottom: 12px;
  letter-spacing: 0.03em;
  line-height: 1.4;
}

/* カード本文 */
.souki-card__body {
  font-size: 0.925rem;
  color: #555;
  line-height: 1.85;
}

/* タブレット: 2カラム */
@media (max-width: 768px) {
  .souki-cards {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
}

/* モバイル: 1カラム */
@media (max-width: 480px) {
  .souki-cards {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}


/* ============================================================
   6. 数字訴求セクション（.souki-numbers）
   ============================================================ */

.souki-numbers {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px;
  text-align: center;
}

.souki-number-item {
  padding: 24px 16px;
}

/* 数字 */
.souki-number-item__value {
  font-size: 3rem;
  font-weight: 900;
  color: var(--souki-accent);
  line-height: 1;
  letter-spacing: -0.02em;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 4px;
}

/* 単位 */
.souki-number-item__unit {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--souki-accent);
}

/* ラベル */
.souki-number-item__label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--souki-primary);
  margin-top: 10px;
  letter-spacing: 0.04em;
}

/* 区切り線 */
.souki-number-item + .souki-number-item {
  border-left: 1px solid var(--souki-border);
}

/* モバイル: 2カラム */
@media (max-width: 768px) {
  .souki-numbers {
    grid-template-columns: repeat(2, 1fr);
    gap: 0;
  }

  .souki-number-item + .souki-number-item {
    border-left: none;
  }

  .souki-number-item {
    border-bottom: 1px solid var(--souki-border);
  }

  .souki-number-item:nth-child(odd) {
    border-right: 1px solid var(--souki-border);
  }
}


/* ============================================================
   7. 実績カード（.souki-works）
   ============================================================ */

.souki-works {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

/* 実績カード本体 */
.souki-work-card {
  background-color: var(--souki-white);
  border-left: 4px solid var(--souki-accent);
  border-radius: 0 var(--souki-radius) var(--souki-radius) 0;
  padding: 24px 20px;
  box-shadow: var(--souki-shadow);
  transition: var(--souki-transition);
}

.souki-work-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--souki-shadow-hover);
}

/* タグバッジ */
.souki-work-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}

.souki-tag {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--souki-accent);
  background-color: rgba(26, 95, 204, 0.08);
  border: 1px solid rgba(26, 95, 204, 0.25);
  padding: 3px 10px;
  border-radius: 2px;
  letter-spacing: 0.04em;
}

.souki-tag--primary {
  color: var(--souki-white);
  background-color: var(--souki-accent);
  border-color: var(--souki-accent);
}

/* 実績タイトル */
.souki-work-card__title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--souki-primary);
  margin-bottom: 8px;
  line-height: 1.5;
}

/* 実績概要 */
.souki-work-card__desc {
  font-size: 0.875rem;
  color: #555;
  line-height: 1.75;
}

/* タブレット: 2カラム */
@media (max-width: 768px) {
  .souki-works {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* モバイル: 1カラム */
@media (max-width: 480px) {
  .souki-works {
    grid-template-columns: 1fr;
  }
}


/* ============================================================
   8. CTAバナー（.souki-cta-banner）
   ============================================================ */

.souki-cta-banner {
  background: linear-gradient(135deg, var(--souki-primary) 0%, var(--souki-accent) 100%);
  padding: 72px 24px;
  text-align: center;
}

.souki-cta-banner__inner {
  max-width: var(--souki-container);
  margin: 0 auto;
}

/* CTAバナータイトル */
.souki-cta-banner__title {
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 700;
  color: var(--souki-white);
  margin-bottom: 16px;
  letter-spacing: 0.05em;
}

/* CTAバナーサブ */
.souki-cta-banner__sub {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.85);
  margin-bottom: 36px;
  line-height: 1.8;
}

/* 電話番号 */
.souki-cta-banner__tel {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 900;
  color: var(--souki-white);
  letter-spacing: 0.08em;
  margin-bottom: 8px;
  display: block;
}

.souki-cta-banner__tel-label {
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.75);
  letter-spacing: 0.06em;
  margin-bottom: 32px;
  display: block;
}

/* CTAバナーボタン（反転デザイン） */
.souki-cta-banner__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background-color: var(--souki-white);
  color: var(--souki-primary) !important;
  font-size: 1rem;
  font-weight: 700;
  padding: 16px 40px;
  border-radius: 4px;
  letter-spacing: 0.06em;
  transition: var(--souki-transition);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}

.souki-cta-banner__btn:hover {
  background-color: #f0f4ff;
  color: var(--souki-primary) !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25);
}


/* ============================================================
   9. ボタン共通（.souki-btn）
   ============================================================ */

.souki-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: var(--souki-font);
  font-size: 0.95rem;
  font-weight: 700;
  padding: 14px 32px;
  border-radius: 4px;
  border: 2px solid transparent;
  cursor: pointer;
  letter-spacing: 0.06em;
  transition: var(--souki-transition);
  text-decoration: none;
  line-height: 1;
}

/* Primary ボタン */
.souki-btn--primary {
  background-color: var(--souki-accent);
  color: var(--souki-white) !important;
  border-color: var(--souki-accent);
}

.souki-btn--primary:hover {
  background-color: #1550b0;
  border-color: #1550b0;
  color: var(--souki-white) !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(26, 95, 204, 0.4);
}

/* Secondary ボタン（白ボーダー・白テキスト：ダーク背景上で使用） */
.souki-btn--secondary {
  background-color: transparent;
  color: var(--souki-white) !important;
  border-color: rgba(255, 255, 255, 0.7);
}

.souki-btn--secondary:hover {
  background-color: rgba(255, 255, 255, 0.12);
  border-color: var(--souki-white);
  color: var(--souki-white) !important;
  transform: translateY(-2px);
}

/* Outline ボタン（白背景上で使用） */
.souki-btn--outline {
  background-color: transparent;
  color: var(--souki-primary) !important;
  border-color: var(--souki-primary);
}

.souki-btn--outline:hover {
  background-color: var(--souki-primary);
  color: var(--souki-white) !important;
  transform: translateY(-2px);
}

/* サイズバリエーション */
.souki-btn--sm {
  font-size: 0.825rem;
  padding: 10px 22px;
}

.souki-btn--lg {
  font-size: 1.05rem;
  padding: 18px 44px;
}


/* ============================================================
   10. テーブル（.souki-table / 会社概要用）
   ============================================================ */

.souki-table {
  border-collapse: collapse;
  width: 100%;
  font-size: 0.95rem;
}

.souki-table tr {
  border-bottom: 1px solid var(--souki-border);
}

.souki-table tr:first-child {
  border-top: 1px solid var(--souki-border);
}

/* ヘッダーセル（th） */
.souki-table th {
  background-color: var(--souki-bg);
  color: var(--souki-primary);
  font-weight: 700;
  width: 30%;
  padding: 18px 20px;
  text-align: left;
  vertical-align: top;
  letter-spacing: 0.03em;
  white-space: nowrap;
}

/* データセル（td） */
.souki-table td {
  padding: 18px 20px;
  color: var(--souki-text);
  line-height: 1.75;
  vertical-align: top;
}

/* モバイル: ブロック表示 */
@media (max-width: 600px) {
  .souki-table,
  .souki-table tbody,
  .souki-table tr,
  .souki-table th,
  .souki-table td {
    display: block;
    width: 100%;
  }

  .souki-table tr {
    border-bottom: none;
    margin-bottom: 4px;
  }

  .souki-table th {
    background-color: var(--souki-bg);
    border-bottom: none;
    padding: 12px 16px 8px;
    white-space: normal;
  }

  .souki-table td {
    padding: 8px 16px 16px;
    border-bottom: 1px solid var(--souki-border);
  }
}


/* ============================================================
   11. ページヒーロー（.souki-page-hero / 内部ページ用）
   ============================================================ */

.souki-page-hero {
  height: 280px;
  background: linear-gradient(135deg, var(--souki-primary) 0%, #0d3d91 60%, var(--souki-accent) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 24px;
  position: relative;
  overflow: hidden;
}

/* 装飾パターン */
.souki-page-hero::after {
  content: '';
  position: absolute;
  right: -60px;
  bottom: -60px;
  width: 300px;
  height: 300px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.04);
  pointer-events: none;
}

.souki-page-hero__inner {
  position: relative;
  z-index: 1;
}

/* ページタイトル */
.souki-page-hero__title {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 700;
  color: var(--souki-white);
  letter-spacing: 0.08em;
  margin-bottom: 10px;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
}

/* パンくず風サブテキスト */
.souki-page-hero__breadcrumb {
  font-size: 0.825rem;
  color: rgba(255, 255, 255, 0.7);
  letter-spacing: 0.05em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.souki-page-hero__breadcrumb span::after {
  content: ' ›';
  margin-left: 8px;
  opacity: 0.6;
}

.souki-page-hero__breadcrumb span:last-child::after {
  content: '';
}

.souki-page-hero__breadcrumb a {
  color: rgba(255, 255, 255, 0.75);
}

.souki-page-hero__breadcrumb a:hover {
  color: var(--souki-white);
}


/* ============================================================
   12. フッター（.souki-footer）
   ============================================================ */

.souki-footer,
footer.site-footer {
  background-color: var(--souki-primary) !important;
  color: rgba(255, 255, 255, 0.85) !important;
  padding-top: 0 !important;
}

/* フッターメインエリア */
.souki-footer__main {
  padding: 60px 24px 40px;
  max-width: var(--souki-container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: 48px;
}

/* 会社情報エリア */
.souki-footer__company-name {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--souki-white);
  letter-spacing: 0.05em;
  margin-bottom: 16px;
}

.souki-footer__address,
.souki-footer__address p {
  font-size: 0.875rem;
  color: rgba(255, 255, 255, 0.7);
  line-height: 2;
}

/* フッターTEL */
.souki-footer__tel {
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--souki-white);
  letter-spacing: 0.05em;
  margin-top: 12px;
  display: block;
}

.souki-footer__tel-label {
  font-size: 0.725rem;
  color: rgba(255, 255, 255, 0.6);
  display: block;
  margin-top: 2px;
}

/* フッターナビ */
.souki-footer__nav-title {
  font-size: 0.8rem;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.5);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-bottom: 16px;
}

.souki-footer__nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.souki-footer__nav ul li {
  margin-bottom: 10px;
}

.souki-footer__nav ul li a {
  font-size: 0.875rem;
  color: rgba(255, 255, 255, 0.75);
  transition: var(--souki-transition);
}

.souki-footer__nav ul li a:hover {
  color: var(--souki-white);
  padding-left: 4px;
}

/* フッターボトムバー */
.souki-footer__bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding: 20px 24px;
  text-align: center;
}

.souki-footer__copyright {
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.5);
  letter-spacing: 0.04em;
}

/* Astra フッター上書き */
.footer-widget-area,
.ast-footer-overlay {
  background-color: var(--souki-primary) !important;
}

.site-footer .ast-container {
  max-width: var(--souki-container) !important;
}

/* モバイル: 縦積み */
@media (max-width: 768px) {
  .souki-footer__main {
    grid-template-columns: 1fr;
    gap: 36px;
    padding: 40px 24px 32px;
  }
}


/* ============================================================
   13. レスポンシブ対応（追加調整）
   ============================================================ */

/* タブレット: max-width 768px */
@media (max-width: 768px) {

  /* セクションパディング縮小 */
  .souki-section {
    padding: 56px 0;
  }

  /* セクションタイトル */
  .souki-section__title {
    font-size: 1.6rem;
    margin-bottom: 32px;
  }

  /* ヒーロー調整 */
  .souki-hero {
    height: auto;
    min-height: 520px;
    padding: 80px 0;
  }

  .souki-hero__sub {
    font-size: 0.975rem;
  }

  /* 数字セクション */
  .souki-number-item__value {
    font-size: 2.5rem;
  }

  /* CTAバナー */
  .souki-cta-banner {
    padding: 52px 24px;
  }
}

/* モバイル: max-width 480px */
@media (max-width: 480px) {

  /* セクションパディング */
  .souki-section {
    padding: 44px 0;
  }

  /* セクションタイトル */
  .souki-section__title {
    font-size: 1.35rem;
    margin-bottom: 24px;
  }

  /* ヒーロー */
  .souki-hero {
    min-height: 460px;
  }

  .souki-hero__title {
    font-size: clamp(1.6rem, 7vw, 2.5rem);
  }

  .souki-hero__sub {
    font-size: 0.9rem;
  }

  .souki-hero__cta {
    padding: 14px 28px;
    font-size: 0.925rem;
  }

  /* ページヒーロー */
  .souki-page-hero {
    height: 200px;
  }

  /* ボタン */
  .souki-btn {
    padding: 12px 24px;
    font-size: 0.875rem;
  }

  /* 数字 */
  .souki-number-item__value {
    font-size: 2rem;
  }

  /* フッター */
  .souki-footer__main {
    padding: 32px 16px 24px;
  }

  /* コンテナパディング */
  .souki-container,
  .souki-section .souki-container {
    padding: 0 16px;
  }
}


/* ============================================================
   ユーティリティクラス
   ============================================================ */

/* テキストカラー */
.souki-text-primary  { color: var(--souki-primary) !important; }
.souki-text-accent   { color: var(--souki-accent) !important; }
.souki-text-white    { color: var(--souki-white) !important; }

/* 背景色 */
.souki-bg-primary    { background-color: var(--souki-primary) !important; }
.souki-bg-accent     { background-color: var(--souki-accent) !important; }
.souki-bg-light      { background-color: var(--souki-bg) !important; }

/* 区切り線 */
.souki-divider {
  border: none;
  border-top: 1px solid var(--souki-border);
  margin: 40px 0;
}

.souki-divider--bold {
  border-top: 3px solid var(--souki-accent);
  width: 48px;
  margin: 16px 0 32px;
}

/* テキストセンター */
.souki-text-center { text-align: center; }

/* フレックスユーティリティ */
.souki-flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* スペーサー */
.souki-spacer-sm  { height: 24px; }
.souki-spacer-md  { height: 48px; }
.souki-spacer-lg  { height: 80px; }

/* ============================================================
   画像統一（カード・セクション内の全画像）
   ============================================================ */

/* 実績カード画像 */
.souki-work-card img,
.souki-work-card__img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  object-position: center;
  display: block;
  border-radius: var(--souki-radius) var(--souki-radius) 0 0;
}

/* サービスページ画像 */
.souki-service-img,
.souki-section img {
  width: 100%;
  height: 280px;
  object-fit: cover;
  object-position: center;
  display: block;
  border-radius: var(--souki-radius);
}

/* 設備カード画像 */
.souki-equipment-card img {
  width: 100%;
  height: 180px;
  object-fit: cover;
  object-position: center;
  display: block;
  border-radius: var(--souki-radius) var(--souki-radius) 0 0;
}

/* 汎用：全カード内img */
.souki-card img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  object-position: center;
  display: block;
  border-radius: var(--souki-radius) var(--souki-radius) 0 0;
  margin-bottom: 16px;
}

/* ============================================================
   フロントページ（HOME）固有スタイル
   ============================================================ */

/* Astra が自動挿入する「ホーム」ページタイトルを非表示 */
body.home .ast-page-title-bar,
body.home .page-header,
body.home .entry-title,
body.home h1.ast-title,
body.home .site-info .ast-header-title {
  display: none !important;
}

/* ホームページのコンテンツ上余白を詰める */
body.home .ast-container > .entry-content,
body.home .site-content .ast-container {
  padding-top: 0 !important;
  margin-top: 0 !important;
}

/* ============================================================
   Contact Form 7 スタイル
   ============================================================ */

/* フォーム全体 */
.wpcf7-form {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* label + input のセット */
.wpcf7-form label {
  display: block;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--souki-primary);
  margin-bottom: 20px;
  letter-spacing: 0.02em;
}

/* label テキスト */
.wpcf7-form label > span,
.wpcf7-form label > br {
  display: none; /* CF7 デフォルトの改行を非表示 */
}

/* テキスト・メール・電話 入力 */
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"] {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 12px 16px;
  font-size: 0.95rem;
  font-family: var(--souki-font);
  color: var(--souki-text);
  background: #fff;
  border: 1.5px solid var(--souki-border);
  border-radius: var(--souki-radius);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  outline: none;
  -webkit-appearance: none;
}

/* テキストエリア */
.wpcf7-form textarea {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 12px 16px;
  font-size: 0.95rem;
  font-family: var(--souki-font);
  color: var(--souki-text);
  background: #fff;
  border: 1.5px solid var(--souki-border);
  border-radius: var(--souki-radius);
  min-height: 140px;
  resize: vertical;
  transition: border-color 0.2s ease;
  outline: none;
}

/* フォーカス時 */
.wpcf7-form input:focus,
.wpcf7-form textarea:focus {
  border-color: var(--souki-accent);
  box-shadow: 0 0 0 3px rgba(26, 95, 204, 0.12);
}

/* 送信ボタン */
.wpcf7-form input[type="submit"],
.wpcf7-submit {
  display: block;
  width: 100%;
  margin-top: 8px;
  padding: 15px 32px;
  font-size: 1rem;
  font-weight: 700;
  font-family: var(--souki-font);
  color: #fff;
  background: var(--souki-accent);
  border: none;
  border-radius: var(--souki-radius);
  cursor: pointer;
  letter-spacing: 0.06em;
  transition: background 0.2s ease, transform 0.15s ease;
}

.wpcf7-form input[type="submit"]:hover,
.wpcf7-submit:hover {
  background: var(--souki-primary);
  transform: translateY(-1px);
}

/* バリデーションエラー */
.wpcf7-not-valid-tip {
  display: block;
  font-size: 0.78rem;
  color: #c0392b;
  margin-top: 4px;
}

.wpcf7-not-valid input,
.wpcf7-not-valid textarea {
  border-color: #c0392b !important;
}

/* 送信完了・エラーメッセージ */
.wpcf7-response-output {
  margin-top: 16px !important;
  padding: 14px 18px !important;
  border-radius: var(--souki-radius) !important;
  font-size: 0.9rem !important;
  font-weight: 600;
  border: none !important;
}

.wpcf7-mail-sent-ok {
  background: rgba(39, 174, 96, 0.1) !important;
  color: #1e8449 !important;
}

.wpcf7-mail-sent-ng,
.wpcf7-spam-blocked,
.wpcf7-aborted {
  background: rgba(192, 57, 43, 0.1) !important;
  color: #922b21 !important;
}

/* モバイル対応 */
@media (max-width: 768px) {
  .souki-contact-layout {
    grid-template-columns: 1fr !important;
  }
}
