/* ============================================================
   グロビシア コーポレートサイト スタイルシート
   ------------------------------------------------------------
   構成（この順番で入っています）
   1. CSS変数（:root）
   2. 基本リセット・全体設定
   3. ヘッダー
   4. フッター
   5. 見出し・本文・ボタンの基本スタイル
   6. セクションの余白と明暗を交互にする背景クラス
   7. カード型レイアウト（2列・3列・4列）
   8. 比較表（スマホ対応）
   9. ステップ表示（1→2→3の流れ）
   10. FAQアコーディオン
   11. フォーム各要素
   12. モーダル（プライバシーポリシー確認用）
   13. ページトップへ戻るボタン
   14. スクロール時のふわっと表示アニメーション
   15. レスポンシブ対応（画面幅の目安：1280px / 768px / 390px）
   16. ページ専用の追加コンポーネント（打ち消し線リスト・画像枠・比較表の列強調・
       　数値グラフ・チェックリスト・強調パネル 等）
   17. 印刷時の調整

   ※フォントはGoogleFontsを使用します。HTML側の<head>に下記を
   　記載してください（デザイン確認.htmlに実装済み）。
   　<link rel="preconnect" href="https://fonts.googleapis.com">
   　<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   　<link href="https://fonts.googleapis.com/css2?family=Jost:wght@400;500;600;700&family=Noto+Sans+JP:wght@400;500;700;800&display=swap" rel="stylesheet">
   ============================================================ */


/* ============================================================
   1. CSS変数（:root）
   ============================================================ */
:root {
  /* ---- 色：先進的な青×シアンを基調 ---- */
  --color-navy-950: #071120;
  --color-navy-900: #0a1a30;
  --color-navy-800: #0f2542;
  --color-blue-600: #2f6fed;
  --color-blue-500: #3b82f6;
  --color-cyan-500: #17b8c9;
  --color-cyan-400: #22d3ee;
  --color-cyan-300: #7fe6f2;

  /* ---- 明るい背景の上で使う文字色 ---- */
  --color-ink: #14233c;
  --color-ink-soft: #33445e;
  --color-muted: #5c6c85;
  --color-muted-soft: #8493ac;

  /* ---- 明るい背景色 ---- */
  --color-bg: #ffffff;
  --color-bg-soft: #f6f9fc;
  --color-bg-soft-2: #eef3f9;
  --color-line: #e2e8f1;
  --color-line-soft: #edf2f8;

  /* ---- 暗い背景（濃紺）の上で使う文字色 ---- */
  --color-on-dark: #eaf3fb;
  --color-on-dark-muted: #9db2cc;
  --color-on-dark-line: rgba(255, 255, 255, 0.14);

  /* ---- グラデーション（ファーストビュー・CTA帯用／濃紺→青→シアンの斜めグラデーション） ---- */
  --gradient-dark: linear-gradient(135deg, #050d1a 0%, #0a1f3d 28%, #123a63 52%, #0d5570 76%, #0e6a80 100%);
  --gradient-accent: linear-gradient(90deg, var(--color-blue-500), var(--color-cyan-400));

  /* ---- 状態色 ---- */
  --color-danger: #e11d48;

  /* ---- フォント ---- */
  --font-jp: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", "Meiryo", sans-serif;
  --font-en: "Jost", var(--font-jp);

  /* ---- 文字サイズ（画面幅に応じて自動で少し変化します） ---- */
  --fs-hero: clamp(1.8rem, 1.05rem + 3.2vw, 3.1rem);
  --fs-h2: clamp(1.4rem, 1rem + 1.8vw, 2.2rem);
  --fs-h3: clamp(1.1rem, 0.95rem + 0.7vw, 1.4rem);
  --fs-lede: clamp(0.95rem, 0.85rem + 0.4vw, 1.15rem);
  --fs-body: clamp(0.92rem, 0.87rem + 0.2vw, 1rem);
  --fs-small: 0.85rem;

  /* ---- 余白 ---- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --section-py: clamp(48px, 32px + 6vw, 100px);
  --container-w: 1200px;
  --container-pad: clamp(20px, 4vw, 40px);
  --header-h: 80px;

  /* ---- 角丸・影 ---- */
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;
  --radius-pill: 999px;
  --shadow-sm: 0 2px 10px rgba(20, 34, 56, 0.07);
  --shadow-md: 0 10px 30px rgba(20, 34, 56, 0.12);
  --shadow-dark: 0 16px 50px rgba(3, 10, 20, 0.4);

  --transition-base: 0.2s ease;

  /* ---- 背景装飾の濃さ（数値だけで調整可能） ---- */
  --decor-glow-1-opacity: 0.22;
  --decor-glow-2-opacity: 0.16;
  --decor-map-opacity: 0.18;
  --decor-route-opacity: 0.55;
  --decor-city-opacity: 0.8;
  --decor-signal-opacity: 0.4;

  /* ============================================================
     ■ セクション背景色（ここを変えるだけで各セクションの背景が変わります）
     ipesim.html（IPeSIMとはページ）の各セクション専用の背景色です。
     ============================================================ */
  /* ページヘッダー（ファーストビュー）の背景（画像読み込み前・失敗時の保険用グラデーション） */
  --sec-bg-hero: var(--gradient-dark);
  /* IPeSIMとはページ：ファーストビューの背景画像
     ※IPeSIMとはページの背景画像を差し替える場合は assets/img/ip_top.png を差し替えるか、この変数を変更してください */
  --ipesim-hero-bg-image: url("../img/ip_top.png");
  /* IPeSIMとはページ：ファーストビュー背景画像の位置（PC用）。飛行機やビル群の見え方を調整したい場合はここを変更してください */
  --ipesim-hero-bg-position: center;
  /* IPeSIMとはページ：ファーストビュー背景画像の位置（スマホ用／640px以下）。飛行機やビル群が見切れる場合はここを変更してください */
  --ipesim-hero-bg-position-mobile: center;
  /* IPeSIMとはページ：ファーストビュー画像の上に重ねる濃紺の半透明オーバーレイ（文字が乗る左〜中央は濃く、写真を見せる右側は薄く）
     ※濃さを調整したい場合は rgba() の最後の数値（0〜1、大きいほど濃い）を変更してください */
  --ipesim-hero-overlay: linear-gradient(
    to right,
    rgba(7, 17, 32, 0.92) 0%,
    rgba(7, 17, 32, 0.82) 32%,
    rgba(9, 22, 40, 0.55) 58%,
    rgba(9, 22, 40, 0.28) 80%,
    rgba(9, 22, 40, 0.14) 100%
  );
  /* 「荷物ゼロ」ブロックの背景 */
  --sec-bg-baggage: var(--color-bg);
  /* IPeSIMが選ばれる理由の背景（画像読み込み前・失敗時の保険用グラデーション） */
  --sec-bg-why: var(--gradient-dark);
  /* IPeSIMが選ばれる理由：背景画像
     ※IPeSIMが選ばれる理由セクションの背景画像を差し替える場合は assets/img/why.jpg を差し替えるか、この変数を変更してください */
  --why-bg-image: url("../img/why.jpg");
  /* IPeSIMが選ばれる理由：背景画像の位置（PC用） */
  --why-bg-position: center;
  /* IPeSIMが選ばれる理由：背景画像の位置（スマホ用／640px以下） */
  --why-bg-position-mobile: center;
  /* IPeSIMが選ばれる理由：画像の上に重ねる濃紺の半透明オーバーレイ
     白いカード4枚・白文字見出しの可読性を保ちつつ、写真が背景としてはっきり見える濃さにしています
     ※濃さを調整したい場合は rgba() の最後の数値（0〜1、大きいほど濃い）を変更してください */
  --why-overlay: linear-gradient(
    180deg,
    rgba(7, 17, 32, 0.74) 0%,
    rgba(9, 22, 40, 0.7) 50%,
    rgba(7, 17, 32, 0.74) 100%
  );
  /* eSIMのメリットの背景 */
  --sec-bg-merit: var(--color-bg-soft);
  /* 海外での通信手段の比較の背景 */
  --sec-bg-compare: var(--color-bg);
  /* 費用面のメリットの背景 */
  --sec-bg-cost: var(--gradient-dark);
  /* 4ステップで簡単利用開始の背景 */
  --sec-bg-steps: var(--color-bg);
  /* 企業・従業員双方のメリットの背景 */
  --sec-bg-benefit: var(--color-bg-soft);
  /* なぜグロビシアからご購入いただくのかの背景 */
  --sec-bg-trust: var(--color-bg);
  /* よくあるご質問の背景 */
  --sec-bg-faq: var(--color-bg-soft);
  /* お問い合わせCTAの背景 */
  --sec-bg-cta: var(--gradient-dark);

  /* ---- 比較表の記号（◎○△）の色。ここを変えるだけで色分けを調整できます ---- */
  /* ◎＝シアン系の濃い色（最も優れている） */
  --cmp-mark-best: #0e8fa3;
  /* ○＝グレー寄りの落ち着いた色（普通） */
  --cmp-mark-good: #6b7a90;
  /* △＝薄いグレー（やや劣る） */
  --cmp-mark-fair: #aab2c0;

  /* ---- 「費用面のメリット」タイルの色。ここを変えるだけでタイルの見た目を調整できます ---- */
  /* タイルの背景（不透明な白いカード） */
  --cost-tile-bg: var(--color-bg);
  /* タイルの枠線（ごく薄いグレー） */
  --cost-tile-border: var(--color-line);
  /* タイル内「0円」等の大きい数値の文字色（濃いシアン〜青系） */
  --cost-value-color: #0a5f78;
  /* タイル内「初期費用」等のラベル文字色（本文用の濃いグレー） */
  --cost-label-color: var(--color-ink);

  /* ---- 「費用面のメリット」セクションの背景画像・オーバーレイ ----
     ※費用面のメリットの背景画像を差し替える場合は assets/img/cost.jpg を差し替えるか、この変数を変更してください */
  --cost-bg-image: url("../img/cost.jpg");
  /* 背景画像の位置（PC用） */
  --cost-bg-position: center;
  /* 背景画像の位置（スマホ用／640px以下）。飛行機やビル群が見切れる場合はここを変更してください */
  --cost-bg-position-mobile: center;
  /* 背景画像の上に重ねる青系の半透明オーバーレイ（左：濃紺／右：やや明るい青）。
     白いカードが文字を守るため、濃さは薄めにして写真がしっかり見えるようにしています
     ※濃さを調整したい場合は rgba() の最後の数値（0〜1、大きいほど濃い）を変更してください */
  --cost-overlay: linear-gradient(
    90deg,
    rgba(7, 17, 32, 0.6) 0%,
    rgba(13, 56, 92, 0.58) 55%,
    rgba(20, 92, 150, 0.55) 100%
  );
}


/* ============================================================
   2. 基本リセット・全体設定
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  margin: 0;
  font-family: var(--font-jp);
  font-size: var(--fs-body);
  line-height: 1.8;
  color: var(--color-ink);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
}

img, picture, svg { max-width: 100%; display: block; }

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

ul, ol { margin: 0; padding: 0; list-style: none; }

h1, h2, h3, h4, p, figure { margin: 0; }

button, input, textarea, select {
  font-family: inherit;
  font-size: inherit;
  color: inherit;
}
button { cursor: pointer; background: none; border: none; }

.container {
  max-width: var(--container-w);
  margin-inline: auto;
  padding-inline: var(--container-pad);
}

.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* 数値・英字だけ少し違う書体にしたい時に使う */
.font-en { font-family: var(--font-en); }

/* 「初期費用0円」等、途中で改行させたくない短いフレーズ用 */
.nowrap-phrase {
  display: inline-block;
  white-space: nowrap;
  font-size: clamp(0.78rem, 0.7rem + 0.5vw, 0.95rem);
}


/* ============================================================
   3. ヘッダー
   ============================================================ */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  height: var(--header-h);
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--color-line);
}

.header-inner {
  height: var(--header-h);
  display: flex;
  align-items: center;
  gap: var(--space-6);
}

.logo {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-weight: 800;
  font-size: 1.05rem;
  color: var(--color-ink);
  flex: none;
  margin-right: auto;
}
.logo .logo-mark {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: var(--gradient-dark);
  position: relative;
  flex: none;
}
.logo .logo-mark::after {
  content: "";
  position: absolute;
  inset: 8px;
  border-radius: 4px;
  background: var(--gradient-accent);
}

/* ナビゲーション（デスクトップでは横並び／820px以下は右からのスライドパネル） */
.main-nav {
  display: flex;
  align-items: center;
  gap: var(--space-6);
}
.main-nav .nav-list {
  display: flex;
  align-items: center;
  gap: var(--space-5);
}
.main-nav .nav-list a {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--color-ink-soft);
  padding: var(--space-2) 0;
  border-bottom: 2px solid transparent;
  transition: color var(--transition-base), border-color var(--transition-base);
  white-space: nowrap;
}
.main-nav .nav-list a:hover,
.main-nav .nav-list a[aria-current="page"] {
  color: var(--color-blue-600);
  border-bottom-color: var(--color-cyan-400);
}

/* ---- 電話ブロック（ヘッダー・フッター共通／将来的に画像へ差し替え可能な独立構造） ---- */
.phone-block {
  display: flex;
  flex-direction: column;
  gap: 2px;
  line-height: 1.4;
}
.phone-block .phone-number {
  font-family: var(--font-en);
  font-size: clamp(1.05rem, 0.9rem + 0.6vw, 1.35rem);
  font-weight: 700;
  color: var(--color-ink);
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.phone-block .phone-hours { font-size: 0.75rem; color: var(--color-muted); white-space: nowrap; }
.phone-block .phone-note { font-size: 0.7rem; color: var(--color-blue-600); font-weight: 700; }
.phone-block .phone-note-sub { font-size: 0.64rem; color: var(--color-muted-soft); }

.site-footer .phone-block .phone-number { color: var(--color-on-dark); }
.site-footer .phone-block .phone-hours { color: var(--color-on-dark-muted); }
.site-footer .phone-block .phone-note { color: var(--color-cyan-300); }
.site-footer .phone-block .phone-note-sub { color: var(--color-on-dark-muted); opacity: 0.75; }

/* ヘッダー内（デスクトップ／モバイルメニュー共通）は電話番号・受付時間の2行までに収める。
   「IPeSIM専用」「営業目的お断り」の注記はフッターとお問い合わせページのみに表示する。 */
.phone-block--header .phone-note,
.phone-block--header .phone-note-sub,
.phone-block--nav .phone-note,
.phone-block--nav .phone-note-sub {
  display: none;
}

/* お問い合わせページ等で使う、注記まで含めた大きめ・中央寄せの電話ブロック */
.phone-block--contact {
  align-items: center;
  text-align: center;
  gap: 6px;
}
.phone-block--contact .phone-number {
  font-size: clamp(1.4rem, 1.05rem + 1.6vw, 2.05rem);
}
.phone-block--contact .phone-hours { font-size: 0.9rem; }
.phone-block--contact .phone-note { font-size: 0.8rem; }
.phone-block--contact .phone-note-sub { font-size: 0.72rem; }

/* ヘッダー内の電話ブロックはデスクトップ幅のみ表示 */
.phone-block--header { display: flex; }

/* ハンバーガーボタン（820px以下でのみ表示） */
.hamburger {
  display: none;
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-sm);
  align-items: center;
  justify-content: center;
  gap: 5px;
  flex-direction: column;
}
.hamburger span {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--color-ink);
  border-radius: 2px;
  transition: transform var(--transition-base), opacity var(--transition-base);
}
.hamburger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.hamburger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ナビ内モバイル専用の電話ブロック（デスクトップでは非表示） */
.phone-block--nav { display: none; }

.nav-cta--header { flex: none; }
.nav-cta--mobile { display: none; }


/* ============================================================
   4. フッター
   ============================================================ */
.site-footer {
  background: var(--color-navy-950);
  color: var(--color-on-dark-muted);
  padding: var(--space-8) 0 var(--space-6);
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: var(--space-7);
  padding-bottom: var(--space-7);
  border-bottom: 1px solid var(--color-on-dark-line);
}
.footer-brand .logo { color: var(--color-on-dark); margin-right: 0; }
.footer-brand p {
  margin-top: var(--space-4);
  font-size: var(--fs-small);
  line-height: 1.9;
  max-width: 34ch;
}
.footer-heading {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--color-on-dark);
  margin-bottom: var(--space-4);
}
.footer-links li { margin-bottom: var(--space-3); }
.footer-links a {
  font-size: var(--fs-small);
  transition: color var(--transition-base);
}
.footer-links a:hover { color: var(--color-cyan-400); }

.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding-top: var(--space-6);
  font-size: 0.78rem;
  flex-wrap: wrap;
}


/* ============================================================
   5. 見出し・本文・ボタンの基本スタイル
   ============================================================ */
/* 大文字表記にしたい場合は、text-transformではなくHTML側に直接大文字で
   記載してください（「IPeSIM」等の商品名表記が誤って変換されるのを防ぐため）。 */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-en);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--color-cyan-500);
  margin-bottom: var(--space-4);
}
.eyebrow::before {
  content: "";
  width: 22px;
  height: 2px;
  background: var(--gradient-accent);
  border-radius: 2px;
}
.section-dark .eyebrow { color: var(--color-cyan-300); }

h1, .h1 {
  font-size: var(--fs-hero);
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: -0.01em;
  text-wrap: balance;
}
h2, .h2 {
  font-size: var(--fs-h2);
  font-weight: 800;
  line-height: 1.4;
  text-wrap: balance;
}
h3, .h3 {
  font-size: var(--fs-h3);
  font-weight: 700;
  line-height: 1.5;
}
.lede {
  font-size: var(--fs-lede);
  color: var(--color-muted);
  line-height: 1.9;
  max-width: 56ch;
}
.section-dark .lede { color: var(--color-on-dark-muted); }
.section-dark p { color: var(--color-on-dark-muted); }
.section-dark h1, .section-dark h2, .section-dark h3 { color: var(--color-on-dark); }

/* 見出し下のアクセント帯（白背景セクションで先進感を出す） */
.heading-accent {
  display: block;
  width: 56px;
  height: 4px;
  border-radius: 4px;
  background: var(--gradient-accent);
  margin: var(--space-4) 0 var(--space-5);
}

.section-head { margin-bottom: var(--space-7); }
.section-head.center { text-align: center; margin-inline: auto; }
.section-head.center .lede { margin-inline: auto; }

/* ---- ボタン ---- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 0.9em 1.6em;
  border-radius: var(--radius-pill);
  font-weight: 700;
  font-size: 0.95rem;
  white-space: nowrap;
  transition: transform var(--transition-base), box-shadow var(--transition-base), background var(--transition-base), color var(--transition-base), border-color var(--transition-base);
}
.btn:hover { transform: translateY(-1px); }
.btn:focus-visible { outline: 2px solid var(--color-blue-500); outline-offset: 2px; }

.btn-primary {
  background: var(--gradient-accent);
  color: #06141f;
  box-shadow: var(--shadow-md);
}
.btn-outline {
  background: transparent;
  color: var(--color-blue-600);
  border: 1.5px solid var(--color-line);
}
.btn-outline:hover { border-color: var(--color-blue-500); }
.btn-outline-light {
  background: transparent;
  color: var(--color-on-dark);
  border: 1.5px solid var(--color-on-dark-line);
}
.btn-outline-light:hover { border-color: var(--color-cyan-400); }
.btn-sm { padding: 0.6em 1.2em; font-size: 0.85rem; }
.btn-lg { padding: 1.05em 2em; font-size: 1.02rem; }
.btn-block { width: 100%; }


/* ============================================================
   6. セクションの余白と明暗を交互にする背景クラス
   ------------------------------------------------------------
   ・.section-dark   … ファーストビューやCTA帯などの主役セクション
   ・.section-light  … 白背景の本文セクション
   ・.section-soft   … ごく淡いグレーの本文セクション
   （暗い背景は全体の3〜4割程度に留め、明暗を交互に使ってください）
   ============================================================ */
.section { padding-block: var(--section-py); }

/* ---- 明るいセクション（白／淡いグレー）。単調にならないよう上下に薄いグラデーションの帯を入れる ---- */
.section-light,
.section-soft {
  position: relative;
  overflow: hidden;
  color: var(--color-ink);
}
.section-light { background: var(--color-bg); }
.section-soft { background: var(--color-bg-soft); }

.section-light::before,
.section-soft::before,
.section-light::after,
.section-soft::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 3px;
  background: var(--gradient-accent);
  pointer-events: none;
}
.section-light::before,
.section-soft::before { top: 0; opacity: 0.5; }
.section-light::after,
.section-soft::after { bottom: 0; opacity: 0.28; }

/* ---- 暗いセクション（ファーストビュー・CTA帯）。斜めグラデーション＋光＋通信網モチーフで奥行きを出す ---- */
.section-dark {
  background: var(--gradient-dark);
  color: var(--color-on-dark);
  position: relative;
  overflow: hidden;
}
/* 光が差し込むような放射状グラデーション（2箇所）。濃さは --decor-glow-*-opacity で調整可能 */
.section-dark::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(760px 420px at 85% -12%, rgba(34, 211, 238, var(--decor-glow-1-opacity)), transparent 62%);
  pointer-events: none;
}
.section-dark::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(620px 460px at 4% 112%, rgba(59, 130, 246, var(--decor-glow-2-opacity)), transparent 60%);
  pointer-events: none;
}
.section-dark .container { position: relative; z-index: 1; }

/* 海外渡航・グローバル通信を表す装飾（世界地図の点描／航路と都市の点／通信の同心円／インラインSVG）
   濃さは --decor-map-opacity / --decor-route-opacity / --decor-city-opacity / --decor-signal-opacity で調整可能 */
.bg-decor {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.bg-decor-svg { width: 100%; height: 100%; }
.bg-decor-worldmap { opacity: var(--decor-map-opacity); }
.bg-decor-routes { opacity: var(--decor-route-opacity); }
.bg-decor-cities { opacity: var(--decor-city-opacity); }
.bg-decor-signal { opacity: var(--decor-signal-opacity); }


/* ============================================================
   7. カード型レイアウト（2列・3列・4列 / レスポンシブ）
   ============================================================ */
.grid {
  display: grid;
  gap: var(--space-6);
}
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }

.card {
  background: var(--color-bg);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-md);
  padding: var(--space-6);
  box-shadow: var(--shadow-sm);
}
.section-dark .card {
  background: rgba(255, 255, 255, 0.04);
  border-color: var(--color-on-dark-line);
  box-shadow: none;
}

.card-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg-soft-2);
  color: var(--color-blue-600);
  margin-bottom: var(--space-4);
  font-family: var(--font-en);
  font-weight: 700;
}
.section-dark .card-icon {
  background: rgba(34, 211, 238, 0.12);
  color: var(--color-cyan-300);
}

.card h3 { margin-bottom: var(--space-3); }
.card p { color: var(--color-muted); font-size: var(--fs-small); line-height: 1.8; }
.section-dark .card p { color: var(--color-on-dark-muted); }

/* 短いキーワードを崩さず並べるチップ（例：初期費用0円 / 縛りなし） */
.chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}
.chip {
  display: inline-block;
  white-space: nowrap;
  font-size: clamp(0.78rem, 0.72rem + 0.4vw, 0.92rem);
  font-weight: 700;
  padding: 0.6em 1.1em;
  border-radius: var(--radius-pill);
  background: var(--color-bg-soft-2);
  color: var(--color-blue-600);
}
.chip.accent { background: rgba(23, 184, 201, 0.12); color: var(--color-cyan-500); }
.section-dark .chip { background: rgba(255, 255, 255, 0.08); color: var(--color-on-dark); }
.section-dark .chip.accent { background: rgba(34, 211, 238, 0.16); color: var(--color-cyan-300); }


/* ============================================================
   8. 比較表（スマホでは1件ずつのカード表示に変換）
   ============================================================ */
.table-compare-wrap {
  background: var(--color-bg);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.table-compare {
  width: 100%;
  border-collapse: collapse;
}
.table-compare th,
.table-compare td {
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--color-line);
  text-align: left;
  font-size: var(--fs-small);
}
/* 大文字表記は自動変換せず、HTML側の見出し文言をそのまま表示する
   （商品名「IPeSIM」等が誤って大文字化されるのを防ぐため） */
.table-compare thead th {
  background: var(--color-bg-soft);
  font-family: var(--font-en);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  color: var(--color-muted);
  font-weight: 700;
}
.table-compare tbody tr:last-child td { border-bottom: none; }
.table-compare td[data-highlight="true"] {
  color: var(--color-blue-600);
  font-weight: 700;
}

/* ---- 比較表のセル：記号＋テキストをひとまとまりにするラッパー ---- */
.cmp-cell {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
}
/* ---- 比較表の記号（◎○△）。色は :root の --cmp-mark-* で調整します ---- */
.cmp-mark {
  font-size: 1.15em;
  line-height: 1;
  flex: none;
}
.cmp-mark--best { color: var(--cmp-mark-best); }
.cmp-mark--good { color: var(--cmp-mark-good); }
.cmp-mark--fair { color: var(--cmp-mark-fair); }


/* ============================================================
   9. ステップ表示（1→2→3の流れ）
   ============================================================ */
.steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
}
.step-item { position: relative; padding-top: var(--space-2); }
.step-item:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 26px;
  left: calc(50% + 40px);
  right: calc(-50% + 40px);
  height: 2px;
  background: repeating-linear-gradient(90deg, var(--color-line) 0 8px, transparent 8px 16px);
}
.section-dark .step-item:not(:last-child)::after {
  background: repeating-linear-gradient(90deg, var(--color-on-dark-line) 0 8px, transparent 8px 16px);
}
.step-number {
  font-family: var(--font-en);
  font-size: 1.9rem;
  font-weight: 700;
  color: var(--color-blue-600);
  margin-bottom: var(--space-4);
}
.section-dark .step-number { color: var(--color-cyan-300); }
.step-item h3 { margin-bottom: var(--space-2); }
.step-item p { color: var(--color-muted); font-size: var(--fs-small); }
.section-dark .step-item p { color: var(--color-on-dark-muted); }


/* ============================================================
   10. FAQアコーディオン（<details>/<summary>を使用。JS不要）
   ============================================================ */
.faq-list { border-top: 1px solid var(--color-line); }
.faq-item { border-bottom: 1px solid var(--color-line); }
.faq-item summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-5) var(--space-1);
  font-weight: 700;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary .faq-icon {
  flex: none;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--color-bg-soft-2);
  color: var(--color-blue-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-en);
  font-size: 1.1rem;
  transition: transform var(--transition-base), background var(--transition-base), color var(--transition-base);
}
.faq-item[open] summary .faq-icon {
  background: var(--gradient-accent);
  color: #06141f;
  transform: rotate(45deg);
}
.faq-item .faq-answer {
  padding: 0 var(--space-1) var(--space-5);
  color: var(--color-muted);
  font-size: var(--fs-small);
  line-height: 1.9;
}


/* ============================================================
   11. フォーム各要素
   ============================================================ */
.form-group { margin-bottom: var(--space-5); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); }

.form-label {
  display: block;
  font-weight: 700;
  font-size: var(--fs-small);
  margin-bottom: var(--space-2);
}
.form-required {
  color: var(--color-danger);
  font-size: 0.72em;
  margin-left: 0.4em;
  font-weight: 700;
}
.form-optional {
  color: var(--color-muted);
  font-size: 0.72em;
  margin-left: 0.4em;
  font-weight: 400;
}

.form-input,
.form-textarea,
.form-select {
  width: 100%;
  padding: 0.85em 1em;
  border: 1px solid var(--color-line);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  transition: border-color var(--transition-base), box-shadow var(--transition-base);
}
.form-textarea { min-height: 140px; resize: vertical; }
.form-input:focus,
.form-textarea:focus,
.form-select:focus {
  outline: none;
  border-color: var(--color-blue-500);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}

.form-check {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: var(--fs-small);
  color: var(--color-muted);
}
.form-check input { margin-top: 0.3em; flex: none; }
.form-check a { color: var(--color-blue-600); font-weight: 700; text-decoration: underline; }

.form-note { font-size: 0.78rem; color: var(--color-muted-soft); margin-top: var(--space-2); }


/* ============================================================
   12. モーダル（プライバシーポリシー確認用／<dialog>要素を使用）
   ============================================================ */
dialog.modal {
  position: relative;
  border: none;
  border-radius: var(--radius-lg);
  padding: 0;
  width: min(560px, 92vw);
  max-height: 85vh;
  box-shadow: var(--shadow-dark);
}
dialog.modal::backdrop {
  background: rgba(7, 17, 32, 0.55);
}
.modal-inner {
  padding: var(--space-7);
  max-height: 85vh;
  overflow-y: auto;
}
.modal-close {
  position: absolute;
  top: var(--space-5);
  right: var(--space-5);
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--color-bg-soft-2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
}
.modal-inner h2 { font-size: var(--fs-h3); margin-bottom: var(--space-4); padding-right: var(--space-7); }
.modal-body { font-size: var(--fs-small); color: var(--color-muted); line-height: 1.9; max-height: 40vh; overflow-y: auto; padding-right: var(--space-3); margin-bottom: var(--space-6); }
.modal-actions { display: flex; gap: var(--space-3); justify-content: flex-end; }


/* ============================================================
   13. ページトップへ戻るボタン
   ============================================================ */
.back-to-top {
  position: fixed;
  right: var(--space-5);
  bottom: var(--space-5);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--gradient-accent);
  color: #06141f;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-md);
  opacity: 0;
  pointer-events: none;
  transform: translateY(10px);
  transition: opacity 0.25s, transform 0.25s;
  z-index: 90;
}
.back-to-top.is-visible { opacity: 1; pointer-events: auto; transform: translateY(0); }
.back-to-top:hover { transform: translateY(-2px); }


/* ============================================================
   14. スクロール時のふわっと表示アニメーション
   ------------------------------------------------------------
   JS側で画面内に入った要素に .is-visible を付与します。
   ============================================================ */
.fade-in-up {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.fade-in-up.is-visible { opacity: 1; transform: translateY(0); }

.fade-in-up.d1 { transition-delay: 0.08s; }
.fade-in-up.d2 { transition-delay: 0.16s; }
.fade-in-up.d3 { transition-delay: 0.24s; }
.fade-in-up.d4 { transition-delay: 0.32s; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .fade-in-up {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .back-to-top, .btn, .hamburger span { transition: none; }
}


/* ============================================================
   15. レスポンシブ対応
   ------------------------------------------------------------
   確認用の画面幅の目安：1280px（PC）／768px（タブレット）／390px（スマホ）
   ヘッダーは820px以下でハンバーガーメニューに切り替わります。
   ============================================================ */

/* ---- タブレット（〜1024px）：4列→2列、3列→2列 ---- */
@media (max-width: 1024px) {
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
  .grid-3 { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1.2fr 1fr 1fr; gap: var(--space-6); }
}

/* ---- ヘッダーの切り替え（820px以下：ハンバーガーメニュー） ---- */
@media (max-width: 820px) {
  .phone-block--header { display: none; }
  .hamburger { display: flex; }

  .main-nav {
    position: fixed;
    inset: var(--header-h) 0 0 0;
    background: var(--color-bg);
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: var(--space-7);
    padding: var(--space-7) var(--container-pad);
    transform: translateX(100%);
    transition: transform 0.28s ease;
    overflow-y: auto;
  }
  .main-nav.is-open { transform: translateX(0); }
  .main-nav .nav-list {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-5);
  }
  .main-nav .nav-list a { font-size: 1.05rem; }
  .phone-block--nav {
    display: flex;
    padding-top: var(--space-6);
    border-top: 1px solid var(--color-line);
  }
  .nav-cta--header { display: none; }
  .nav-cta--mobile { display: block; width: 100%; margin-top: var(--space-4); }
  .nav-cta--mobile .btn { width: 100%; }
}

/* ---- タブレット〜スマホ：見出し周りの余白調整 ---- */
@media (max-width: 768px) {
  .section-head { margin-bottom: var(--space-6); }
  .footer-grid { grid-template-columns: 1fr; gap: var(--space-6); }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
  .form-row { grid-template-columns: 1fr; }
}

/* ---- スマホ（〜640px）：カード・ステップを1列に ---- */
@media (max-width: 640px) {
  .grid-4, .grid-3, .grid-2 { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr; }
  .step-item::after { display: none; }
  h1, .h1 { letter-spacing: -0.005em; }
  .modal-inner { padding: var(--space-6); }

  /* 比較表：見出し行を外して1件ずつのカード表示に変換 */
  .table-compare thead { display: none; }
  .table-compare, .table-compare tbody, .table-compare tr, .table-compare td {
    display: block;
    width: 100%;
  }
  .table-compare tr {
    margin-bottom: var(--space-4);
    border: 1px solid var(--color-line);
    border-radius: var(--radius-md);
    overflow: hidden;
  }
  .table-compare td {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-4);
    border-bottom: 1px solid var(--color-line-soft);
  }
  .table-compare td:last-child { border-bottom: none; }
  .table-compare td::before {
    content: attr(data-label);
    font-weight: 700;
    color: var(--color-ink);
    flex: none;
  }
}


/* ============================================================
   16. ページ専用の追加コンポーネント
   ============================================================ */

/* ---- カードアイコンにインラインSVGを入れる場合のサイズ調整 ---- */
.card-icon svg { width: 22px; height: 22px; }

/* ---- カードアイコンを目立たせたい場合（円形・グラデーション背景・白抜き） ---- */
.card-icon--accent {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--color-blue-600), var(--color-cyan-400));
  color: #fff;
}
.card-icon--accent svg { width: 26px; height: 26px; }

/* ---- カードの中身を中央寄せにしたい場合 ---- */
.card--centered { text-align: center; }
.card--centered .card-icon { margin-inline: auto; }

/* ---- 濃紺の背景セクションの中でも、白いカードとして見せたい場合 ---- */
.section-dark .card--on-dark {
  background: var(--color-bg);
  border-color: var(--color-line);
  box-shadow: var(--shadow-md);
}
.section-dark .card--on-dark h3 { color: var(--color-ink); }
.section-dark .card--on-dark p { color: var(--color-muted); }

/* ---- カード左上に置く、濃紺の丸に白抜き数字のバッジ ---- */
.card-badge-num {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--color-navy-900);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 1.05rem;
  margin-bottom: var(--space-4);
}

/* ---- 暗い背景（section-dark）の上に電話ブロックを置く場合の文字色 ---- */
.section-dark .phone-block .phone-number { color: var(--color-on-dark); }
.section-dark .phone-block .phone-hours { color: var(--color-on-dark-muted); }
.section-dark .phone-block .phone-note { color: var(--color-cyan-300); }
.section-dark .phone-block .phone-note-sub { color: var(--color-on-dark-muted); opacity: 0.75; }

/* ---- 「荷物ゼロ」ブロック：左右カラムの見出しの余白を統一（高さ揃え用） ---- */
.baggage-col-head {
  margin-top: 0;
  margin-bottom: var(--space-4);
}

/* ---- 打ち消し線リスト（「不要なもの」を示す用途） ---- */
.strike-list { display: flex; flex-direction: column; }
.strike-list li {
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--color-line-soft);
  color: var(--color-muted-soft);
  text-decoration: line-through;
  text-decoration-color: var(--color-muted-soft);
}
.strike-list li:last-child { border-bottom: none; }

/* ---- 画像を入れる想定の枠（画像がない間はグラデーションで成立させる） ---- */
.media-frame {
  position: relative;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, var(--color-blue-600) 0%, var(--color-cyan-500) 100%);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  color: #fff;
  text-align: center;
  padding: var(--space-6);
}
.media-frame::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(420px 260px at 12% 8%, rgba(255, 255, 255, 0.28), transparent 60%);
  pointer-events: none;
}
.media-frame-icon { width: 60px; height: 60px; position: relative; }
.media-frame-caption { position: relative; font-weight: 700; font-size: 1rem; }

/* ---- 画像枠の細い横長バリエーション（セクション見出しの代わりに使う帯） ---- */
.media-frame--banner {
  aspect-ratio: unset;
  height: 160px;
  flex-direction: row;
  justify-content: center;
  padding: var(--space-5);
}
.media-frame--banner .media-frame-icon { width: 40px; height: 40px; }
.media-frame--banner .media-frame-caption { font-size: clamp(1rem, 0.9rem + 0.5vw, 1.2rem); }
@media (max-width: 640px) {
  .media-frame--banner { height: 132px; gap: var(--space-3); }
  .media-frame--banner .media-frame-icon { width: 32px; height: 32px; }
}

/* ---- ページヘッダー：メインコピー下の強調サブコピー ---- */
.hero-highlight {
  font-weight: 700;
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.3rem);
  color: var(--color-cyan-300);
  margin-top: var(--space-3);
}

/* ---- ページヘッダー：右下（スマホでは中央）に置く代理店バッジの行 ---- */
.hero-foot {
  display: flex;
  justify-content: flex-end;
  margin-top: var(--space-7);
}
@media (max-width: 640px) {
  .hero-foot { justify-content: center; }
}
.agency-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.75em 1.4em;
  border-radius: var(--radius-pill);
  background: linear-gradient(135deg, var(--color-blue-600), var(--color-cyan-500));
  color: #fff;
  font-weight: 700;
  font-size: 0.92rem;
  box-shadow: var(--shadow-dark);
}

/* ---- ステップカード：上部のSTEPバッジ＋所要時間の行 ---- */
.step-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.step-badge {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.03em;
  color: #fff;
  background: var(--color-navy-900);
  padding: 0.45em 0.9em;
  border-radius: var(--radius-pill);
  white-space: nowrap;
}
.step-time {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 0.8rem;
  color: var(--color-muted);
  white-space: nowrap;
}
.step-time svg { width: 14px; height: 14px; }

/* ---- ipesim.html の各セクション背景（:root の --sec-bg-* を反映） ---- */
/* ファーストビュー：写真（--ipesim-hero-bg-image）の上に半透明オーバーレイ（--ipesim-hero-overlay）を重ねて表示
   background-image は2枚重ね（1枚目=オーバーレイ／2枚目=写真）。写真が主役になるよう cover で全面に敷いています */
.sec-hero {
  background-color: var(--sec-bg-hero);
  background-image: var(--ipesim-hero-overlay), var(--ipesim-hero-bg-image);
  background-repeat: no-repeat, no-repeat;
  background-size: cover, cover;
  background-position: center, var(--ipesim-hero-bg-position);
  display: flex;
  align-items: center;
  min-height: clamp(560px, 52vw, 720px);
}
.sec-hero .container { width: 100%; }
/* 写真の上でうるさく見えないよう、世界地図・航路の背景装飾は控えめに */
.sec-hero .bg-decor { opacity: 0.25; }
@media (max-width: 640px) {
  .sec-hero {
    /* スマホでは縦長になるぶん写真が大きくトリミングされるため、飛行機とビル群が見切れにくい位置に調整 */
    background-position: center, var(--ipesim-hero-bg-position-mobile);
    min-height: clamp(580px, 130vw, 680px);
  }
}
.sec-baggage { background: var(--sec-bg-baggage); }
/* IPeSIMが選ばれる理由：写真（--why-bg-image）の上に濃いめの半透明オーバーレイ（--why-overlay）を重ねて表示
   background-image は2枚重ね（1枚目=オーバーレイ／2枚目=写真）。白いカードと白文字見出しの可読性を優先しています */
.sec-why {
  background-color: var(--sec-bg-why);
  background-image: var(--why-overlay), var(--why-bg-image);
  background-repeat: no-repeat, no-repeat;
  background-size: cover, cover;
  background-position: center, var(--why-bg-position);
}
/* 写真と二重で騒がしくならないよう、世界地図・同心円の背景装飾はかなり控えめに */
.sec-why .bg-decor { opacity: 0.1; }
@media (max-width: 640px) {
  .sec-why {
    background-position: center, var(--why-bg-position-mobile);
  }
}
.sec-merit { background: var(--sec-bg-merit); }
.sec-compare { background: var(--sec-bg-compare); }
/* 費用面のメリット：写真（--cost-bg-image）の上に薄めの半透明オーバーレイ（--cost-overlay）を重ねて表示
   background-image は2枚重ね（1枚目=オーバーレイ／2枚目=写真）。白いカードが文字を守るため、写真がはっきり見える濃さにしています */
.sec-cost {
  background-color: var(--sec-bg-cost);
  background-image: var(--cost-overlay), var(--cost-bg-image);
  background-repeat: no-repeat, no-repeat;
  background-size: cover, cover;
  background-position: center, var(--cost-bg-position);
}
/* 写真と重なって騒がしくならないよう、世界地図・同心円の背景装飾はほぼ見えない程度に */
.sec-cost .bg-decor { opacity: 0.06; }
/* 写真の上でも見出しがしっかり読めるよう、軽いドロップシャドウを追加 */
.sec-cost .section-head h2,
.sec-cost .section-head .eyebrow {
  text-shadow: 0 2px 10px rgba(3, 10, 20, 0.45);
}
/* セクション下部の案内文も、写真の上で読めるよう軽いシャドウを追加 */
.sec-cost .lede { text-shadow: 0 1px 8px rgba(3, 10, 20, 0.4); }
@media (max-width: 640px) {
  .sec-cost {
    background-position: center, var(--cost-bg-position-mobile);
  }
}
.sec-steps { background: var(--sec-bg-steps); }
.sec-benefit { background: var(--sec-bg-benefit); }
.sec-trust { background: var(--sec-bg-trust); }
.sec-faq { background: var(--sec-bg-faq); }
.sec-cta { background: var(--sec-bg-cta); }

/* ---- 費用メリット等を大きく見せるタイル（.grid .grid-4 の中で使用／写真背景の上に白いカードとして表示） ---- */
/* グリッドの初期値により、4つのタイルは自動的に高さが揃います */
.benefit-tile {
  background: var(--cost-tile-bg);
  border: 1px solid var(--cost-tile-border);
  border-radius: var(--radius-lg);
  padding: var(--space-6) var(--space-4);
  text-align: center;
  box-shadow: var(--shadow-md);
  transition: transform var(--transition-base), box-shadow var(--transition-base);
}
.benefit-tile:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 44px rgba(20, 34, 56, 0.22);
}
.benefit-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto var(--space-4);
  border-radius: 50%;
  background: linear-gradient(135deg, var(--color-blue-600), var(--color-cyan-400));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}
.benefit-icon svg { width: 28px; height: 28px; }
.benefit-label {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--cost-label-color);
  margin-bottom: var(--space-2);
}
.benefit-value {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: clamp(1.3rem, 1.05rem + 1vw, 1.8rem);
  white-space: nowrap;
  color: var(--cost-value-color);
}

/* ---- 比較表：特定の列を強調したい場合（例：IPeSIM列） ---- */
.table-compare.highlight-col-2 th:nth-child(2),
.table-compare.highlight-col-2 td:nth-child(2) {
  background: rgba(23, 184, 201, 0.07);
}

/* ---- 数値の推移を横棒グラフで見せる（外部ライブラリ不使用／CSSのみ） ---- */
.big-stat {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: clamp(2.4rem, 1.7rem + 3vw, 4rem);
  color: var(--color-blue-600);
  line-height: 1;
}
.big-stat .unit {
  font-family: var(--font-jp);
  font-size: 0.36em;
  font-weight: 700;
  color: var(--color-ink);
  margin-left: 0.3em;
}

/* ---- チェック付きリスト（メリットの列挙用） ---- */
.check-list { display: flex; flex-direction: column; gap: var(--space-4); }
.check-list li { display: flex; align-items: flex-start; gap: var(--space-3); }
.check-mark {
  flex: none;
  width: 20px;
  height: 20px;
  margin-top: 2px;
  border-radius: 50%;
  background: var(--gradient-accent);
  color: #06141f;
  font-size: 0.68rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ---- 強調パネル（最重要セクション用。カードより一段目立たせる） ---- */
.trust-panel {
  position: relative;
  background: var(--color-bg);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: var(--space-7);
  overflow: hidden;
}
.trust-panel::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 5px;
  background: var(--gradient-accent);
}
.trust-item { display: flex; gap: var(--space-5); padding: var(--space-6) 0; }
.trust-item:not(:last-child) { border-bottom: 1px solid var(--color-line-soft); }
.trust-icon {
  flex: none;
  width: 52px;
  height: 52px;
  border-radius: var(--radius-md);
  background: var(--color-bg-soft-2);
  color: var(--color-blue-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 1.25rem;
}
.trust-item h3 { margin-bottom: var(--space-2); }
.trust-item p { color: var(--color-muted); font-size: var(--fs-small); line-height: 1.9; }

@media (max-width: 640px) {
  .trust-panel { padding: var(--space-6) var(--space-5); }
  .trust-item { flex-direction: column; gap: var(--space-3); }
}


/* ============================================================
   17. 印刷時の調整
   ============================================================ */
@media print {
  .site-header, .hamburger, .back-to-top, .nav-cta, dialog.modal, .bg-decor {
    display: none !important;
  }
  body { background: #fff; color: #000; }
  .section-dark {
    background: none !important;
    color: #000 !important;
  }
  .section-dark * { color: #000 !important; }
  a { text-decoration: underline; }
  .card, .table-compare-wrap, .trust-panel { box-shadow: none; border: 1px solid #ccc; }
}


/* ============================================================
   18. index.html（トップページ）専用の追加スタイル
   ============================================================ */

/* ---- index.html の各セクション背景色（ここを変えるだけで背景が変わります） ---- */
:root {
  /* ファーストビューの背景（画像読み込み前・失敗時の保険用グラデーション） */
  --sec-bg-home-hero: var(--gradient-dark);
  /* ファーストビューの背景画像
     ※トップページの背景画像を差し替える場合は assets/img/co_top.jpg を差し替えるか、この変数を変更してください */
  --hero-bg-image: url("../img/co_top.jpg");
  /* ファーストビュー背景画像の位置（PC用）。人物やビル群の見え方を調整したい場合はここを変更してください */
  --hero-bg-position: center;
  /* ファーストビュー背景画像の位置（スマホ用／640px以下）。ビジネスマンと都市が見切れないよう中央よりやや右寄りにしています */
  --hero-bg-position-mobile: 72% center;
  /* ファーストビュー画像の上に重ねる濃紺の半透明オーバーレイ（文字が乗る左側は濃く、写真を見せる右側は薄く）
     ※濃さを調整したい場合は rgba() の最後の数値（0〜1、大きいほど濃い）を変更してください */
  --hero-overlay: linear-gradient(
    to right,
    rgba(7, 17, 32, 0.82) 0%,
    rgba(7, 17, 32, 0.80) 30%,
    rgba(9, 22, 40, 0.54) 55%,
    rgba(9, 22, 40, 0.32) 80%,
    rgba(9, 22, 40, 0.32) 100%
  );
  /* 「当社が扱うサービス」の背景 */
  --sec-bg-home-service: var(--color-bg);
  /* 「グロビシアが選ばれる理由」の背景 */
  --sec-bg-home-why: var(--gradient-dark);
  /* 「法人・団体のお客様へ」の背景 */
  --sec-bg-home-business: var(--color-bg-soft);
  /* 「会社概要への導線」の背景 */
  --sec-bg-home-company: var(--color-bg);
  /* 「お問い合わせCTA」の背景 */
  --sec-bg-home-cta: var(--gradient-dark);
}

/* ---- index.html の各セクション背景（上の:rootの--sec-bg-home-*を反映） ---- */
/* ファーストビュー：写真（--hero-bg-image）の上に半透明オーバーレイ（--hero-overlay）を重ねて表示
   background-image は2枚重ね（1枚目=オーバーレイ／2枚目=写真）。写真が主役になるよう cover で全面に敷いています */
.sec-home-hero {
  background-color: var(--sec-bg-home-hero);
  background-image: var(--hero-overlay), var(--hero-bg-image);
  background-repeat: no-repeat, no-repeat;
  background-size: cover, cover;
  background-position: center, var(--hero-bg-position);
  display: flex;
  align-items: center;
  min-height: clamp(560px, 52vw, 720px);
}
.sec-home-hero .container { width: 100%; }
/* 写真の上でうるさく見えないよう、世界地図・航路の背景装飾は控えめに */
.sec-home-hero .bg-decor { opacity: 0.25; }
@media (max-width: 640px) {
  .sec-home-hero {
    /* スマホでは縦長になるぶん写真が大きくトリミングされるため、人物とビル群が見切れにくい位置に調整 */
    background-position: center, var(--hero-bg-position-mobile);
    min-height: clamp(580px, 130vw, 680px);
  }
}
.sec-home-service { background: var(--sec-bg-home-service); }
.sec-home-why { background: var(--sec-bg-home-why); }
.sec-home-business { background: var(--sec-bg-home-business); }
.sec-home-company { background: var(--sec-bg-home-company); }
.sec-home-cta { background: var(--sec-bg-home-cta); }

/* ---- ファーストビュー：CTAボタンを2つ横並びにする行（スマホでは縦積みに変換） ---- */
.hero-cta-row {
  display: flex;
  align-items: flex-start;
  gap: var(--space-5);
  margin-top: var(--space-7);
  flex-wrap: wrap;
}
/* 副ボタンとその下の受付時間・注記をまとめるブロック */
.hero-cta-secondary {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.phone-block--hero-note { margin-top: 2px; }
@media (max-width: 640px) {
  .hero-cta-row { flex-direction: column; align-items: stretch; }
  .hero-cta-row .btn { width: 100%; }
  .hero-cta-secondary { align-items: center; text-align: center; }
}

/* ---- 会社概要：項目名と内容を2列で並べる定義リスト（640px以下で1列に縦積み） ---- */
.info-table {
  display: grid;
  grid-template-columns: 200px 1fr;
  column-gap: var(--space-5);
}
.info-table dt,
.info-table dd {
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--color-line-soft);
}
.info-table dt {
  font-weight: 700;
  color: var(--color-ink);
}
.info-table dd {
  color: var(--color-muted);
}
@media (max-width: 640px) {
  .info-table { grid-template-columns: 1fr; }
  .info-table dt {
    padding-bottom: var(--space-1);
    border-bottom: none;
    font-size: 0.85rem;
    color: var(--color-muted);
  }
  .info-table dd {
    padding-top: 0;
  }
}


/* ============================================================
   19. about.html（会社概要ページ）専用の追加スタイル
   ============================================================ */

/* ---- about.html の各セクション背景色（ここを変えるだけで背景が変わります） ---- */
:root {
  /* ページヘッダー（会社概要）の背景（画像読み込み前・失敗時の保険用グラデーション） */
  --sec-bg-about-hero: var(--gradient-dark);
  /* 会社概要ページ：ページヘッダーの背景画像
     ※会社概要ページの背景画像を差し替える場合は assets/img/gaiyou.jpg を差し替えるか、この変数を変更してください */
  --about-hero-bg-image: url("../img/gaiyou.jpg");
  /* 会社概要ページ：背景画像の位置（PC用） */
  --about-hero-bg-position: center;
  /* 会社概要ページ：背景画像の位置（スマホ用／640px以下）。飛行機やSIMが見切れる場合はここを変更してください */
  --about-hero-bg-position-mobile: center;
  /* 会社概要ページ：画像の上に重ねる濃紺の半透明オーバーレイ（文字が乗る左側は濃く、写真を見せる右側は薄く）
     ※濃さを調整したい場合は rgba() の最後の数値（0〜1、大きいほど濃い）を変更してください */
  --about-hero-overlay: linear-gradient(
    to right,
    rgba(7, 17, 32, 0.86) 0%,
    rgba(7, 17, 32, 0.78) 30%,
    rgba(9, 22, 40, 0.6) 55%,
    rgba(9, 22, 40, 0.44) 100%
  );
  /* 会社概要テーブルの背景 */
  --sec-bg-about-company: var(--color-bg);
  /* アクセスセクションの背景 */
  --sec-bg-about-access: var(--color-bg-soft);
  /* お問い合わせCTAの背景 */
  --sec-bg-about-cta: var(--gradient-dark);
}

/* ---- ページヘッダー（会社概要）：写真（--about-hero-bg-image）の上に半透明オーバーレイ（--about-hero-overlay）を重ねて表示
   background-image は2枚重ね（1枚目=オーバーレイ／2枚目=写真）。見出し・サブコピーの白文字は変更せず、そのまま読めるようにしています */
.sec-about-hero {
  background-color: var(--sec-bg-about-hero);
  background-image: var(--about-hero-overlay), var(--about-hero-bg-image);
  background-repeat: no-repeat, no-repeat;
  background-size: cover, cover;
  background-position: center, var(--about-hero-bg-position);
  display: flex;
  align-items: center;
  min-height: clamp(360px, 34vw, 480px);
}
.sec-about-hero .container { width: 100%; }
/* 写真の上でうるさく見えないよう、世界地図・航路の背景装飾は控えめに */
.sec-about-hero .bg-decor { opacity: 0.08; }
/* 写真の上でも見出し・サブコピーがしっかり読めるよう、軽いドロップシャドウを追加（文字色は変更していません） */
.sec-about-hero .section-head h1,
.sec-about-hero .section-head .eyebrow,
.sec-about-hero .section-head .lede {
  text-shadow: 0 2px 10px rgba(3, 10, 20, 0.5);
}
@media (max-width: 640px) {
  .sec-about-hero {
    background-position: center, var(--about-hero-bg-position-mobile);
    min-height: clamp(380px, 90vw, 460px);
  }
}

.sec-about-company { background: var(--sec-bg-about-company); }
.sec-about-access { background: var(--sec-bg-about-access); }
.sec-about-cta { background: var(--sec-bg-about-cta); }

/* ---- 事業内容：info-tableのdd内に入れる箇条書き（「・」を先頭に付けたシンプルなリスト） ---- */
.biz-list { display: flex; flex-direction: column; gap: var(--space-2); }
.biz-list li {
  position: relative;
  padding-left: 1.1em;
}
.biz-list li::before {
  content: "・";
  position: absolute;
  left: 0;
  color: var(--color-blue-600);
  font-weight: 700;
}

/* ---- アクセスセクション：地図と情報の2カラム（640px以下で1カラムに縦積み） ---- */
.access-grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: var(--space-7);
  align-items: stretch;
}
@media (max-width: 640px) {
  .access-grid { grid-template-columns: 1fr; }
}

/* ---- 地図（Googleマップ埋め込み）の枠。既存デザインに合わせて角丸なし ---- */
.access-map-frame {
  height: 360px;
  overflow: hidden;
  border: 1px solid var(--color-line);
  box-shadow: var(--shadow-sm);
}
.access-map-frame iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* ---- アクセス情報（右カラム）の項目リスト ---- */
.access-list dt {
  font-weight: 700;
  color: var(--color-ink);
  margin-top: var(--space-5);
}
.access-list dt:first-child { margin-top: 0; }
.access-list dd {
  color: var(--color-muted);
  margin: var(--space-2) 0 0;
}

/* ---- 最寄駅の箇条書き ---- */
.station-list { display: flex; flex-direction: column; gap: 6px; }
.station-list li {
  position: relative;
  padding-left: 1.1em;
  font-size: var(--fs-small);
  color: var(--color-muted);
}
.station-list li::before {
  content: "・";
  position: absolute;
  left: 0;
}

/* ---- 「Googleマップで開く」ボタンの上マージン ---- */
.access-link-row { margin-top: var(--space-6); }

/* ============================================================
   19. ヘッダー左上のロゴ画像
   ============================================================ */
/* ヘッダーの帯（高さ80px）に収まるロゴ画像の高さ指定。横幅はautoで縦横比を維持 */
.logo-img {
  height: 44px;
  width: auto;
  display: block;
}
@media (max-width: 640px) {
  /* スマホ表示ではロゴを少し小さく */
  .logo-img {
    height: 34px;
  }
}

/* ============================================================
   20. フッターのロゴ画像（大きめサイズ）
   ============================================================ */
/* フッター左カラムで存在感のあるサイズに。中央カラムのMenuリストの下端と高さがおおよそ揃う目安 */
.footer-logo-img {
  height: 100px;
  width: auto;
  display: block;
  margin-bottom: var(--space-5);
}
@media (max-width: 640px) {
  /* スマホではフッターが縦積みになるため、ロゴが大きすぎないよう縮小 */
  .footer-logo-img {
    height: 72px;
    margin-bottom: var(--space-4);
  }
}

/* ============================================================
   21. フッターのロゴ（地球儀マーク＋白文字テキストの縦並び／合体ロゴと同じ比率）
   ============================================================ */
/* フッターのロゴだけ、マークとテキストを縦に積む。
   display:inline-flexで幅をマークの実寸に合わせ、テキストはその中でalign-self:centerにより
   マークの中心に揃う（コンテナ自体は左寄せなのでマーク自体は左端に接する） */
.site-footer .logo {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: var(--space-6);
}
/* 地球儀マーク */
.footer-logo-mark {
  height: 120px;
  width: auto;
  display: block;
}
/* 白文字のGLOBISIA／グロビシア テキスト（マーク幅の約80%になる高さを指定し、マークの真下中央に配置） */
.footer-logo-text {
  height: 21px;
  width: auto;
  display: block;
  align-self: center;
}
@media (max-width: 640px) {
  /* スマホではマーク・テキストとも比率を保ったまま縮小 */
  .footer-logo-mark {
    height: 95px;
  }
  .footer-logo-text {
    height: 17px;
  }
  .site-footer .logo {
    margin-bottom: var(--space-5);
  }
}

/* ============================================================
   22. contact.html（お問い合わせページ）専用の追加スタイル
   ============================================================ */

/* ---- contact.html の各セクション背景色（ここを変えるだけで背景が変わります） ---- */
:root {
  /* ページヘッダー（お問い合わせ）の背景 */
  --sec-bg-contact-hero: var(--gradient-dark);
  /* お問い合わせフォームの背景 */
  --sec-bg-contact-form: var(--color-bg);
  /* 「フォーム準備中」注記ボックスの色。ここを変えるだけで色を調整できます */
  --notice-bg: #fff8e1;
  --notice-border: #f2c94c;
}

/* ---- contact.html の各セクション背景（上の:rootの--sec-bg-contact-*を反映） ---- */
.sec-contact-hero { background: var(--sec-bg-contact-hero); }
.sec-contact-form { background: var(--sec-bg-contact-form); }

/* ---- 「フォーム準備中」注記ボックス。目立つよう淡い黄色系＋枠線にしています ---- */
.notice-box {
  background: var(--notice-bg);
  border: 1.5px solid var(--notice-border);
  border-radius: var(--radius-md);
  padding: var(--space-5) var(--space-6);
  margin-bottom: var(--space-7);
  font-size: var(--fs-small);
  line-height: 1.9;
  color: var(--color-ink-soft);
}
.notice-box a { color: var(--color-blue-600); font-weight: 700; text-decoration: underline; }

/* ---- 送信ボタンが無効な間（プライバシーポリシー未同意時）はグレーアウトして押せないことが分かるようにする ---- */
.btn:disabled {
  background: var(--color-line);
  color: var(--color-muted-soft);
  box-shadow: none;
  cursor: not-allowed;
  transform: none;
}
.btn:disabled:hover { transform: none; }

@media (max-width: 640px) {
  .notice-box {
    padding: var(--space-4) var(--space-5);
    margin-bottom: var(--space-6);
  }
}

/* ============================================================
   23. privacy.html（プライバシーポリシーページ）専用の追加スタイル
   ============================================================ */

/* ---- privacy.html の各セクション背景色（ここを変えるだけで背景が変わります） ---- */
:root {
  /* ページヘッダー（プライバシーポリシー）の背景 */
  --sec-bg-privacy-hero: var(--gradient-dark);
  /* 本文セクションの背景 */
  --sec-bg-privacy-body: var(--color-bg);
}

/* ---- privacy.html の各セクション背景（上の:rootの--sec-bg-privacy-*を反映） ---- */
.sec-privacy-hero { background: var(--sec-bg-privacy-hero); }
.sec-privacy-body { background: var(--sec-bg-privacy-body); }

/* ---- プライバシーポリシー本文：条項ごとに見出し・段落・リストを読みやすく表示 ---- */
.legal-doc h3 {
  margin: var(--space-7) 0 var(--space-3);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-line);
}
.legal-doc h3:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.legal-doc p {
  color: var(--color-muted);
  font-size: var(--fs-small);
  line-height: 1.9;
  margin-bottom: var(--space-3);
}
.legal-doc ul {
  color: var(--color-muted);
  font-size: var(--fs-small);
  line-height: 1.9;
  margin: 0 0 var(--space-3) 1.4em;
}
.legal-doc li { margin-bottom: var(--space-2); }

/* ---- 制定日：本文の末尾に右寄せで表示 ---- */
.legal-date {
  font-family: var(--font-en);
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  color: var(--color-muted-soft);
  text-align: right;
  margin-top: var(--space-7);
  padding-top: var(--space-5);
  border-top: 1px solid var(--color-line);
}
