/*
 * レイアウト/コンポーネントCSS。
 * 色・書体・余白は必ず tokens.css の var(--token名) を参照し、直接HEX値は書かない。
 *
 * Phase 6v(frontend-engineer)にて、レスポンシブ対応(モバイル用ハンバーガーメニュー、
 * フルイドタイポグラフィ、ブレークポイント調整)を追加した。ブレークポイントは
 * design/wireframes/preview.html の `@media (max-width: 720px)` と揃えて 720px を採用する。
 */

* {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  color: var(--ink);
  background: var(--canvas);
  font-family: var(--font-sans);
  font-size: var(--font-size-body);
  line-height: 1.8;
}

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

a {
  color: var(--navy);
}

.container {
  max-width: var(--max-content-width);
  margin: 0 auto;
  padding: 0 var(--space-6);
}

/*
 * 見出しはゴシック体(--font-sans)を標準とする(2026-08発注者確定の全体方針: 明朝体は
 * 「とげとげしい」硬い印象になるため、見出しに明朝体を使用しない。以前は明朝体が標準で
 * 英語見出しのみ個別にゴシック体へ上書きしていたが、この方針転換によりデフォルト自体を
 * ゴシック体に変更した。--font-serif自体は削除せず、本文中の格式を出したい単発の箇所
 * (代表挨拶の署名等)でのみ限定的に使う)。
 */
h1, h2, h3 {
  font-family: var(--font-sans);
  font-weight: 600;
  line-height: 1.4;
  text-wrap: balance;
}

/*
 * H1/H2はフルイドタイポグラフィ(clamp)でモバイル時に縮小する。
 * 上限は tokens.css のタイプスケール(--font-size-h1/h2)を厳守し、
 * デザインシステムが定めた「見出しは大きく」という意図を最大幅では変えない。
 */
h1 { font-size: clamp(1.75rem, 1.35rem + 3vw, var(--font-size-h1)); }
h2 { font-size: clamp(1.375rem, 1.15rem + 1.6vw, var(--font-size-h2)); }
h3 { font-size: var(--font-size-h3); }

@media (max-width: 720px) {
  .container {
    padding: 0 var(--space-4);
  }
}

.caption {
  font-size: var(--font-size-caption);
  letter-spacing: 0.08em;
  color: var(--slate);
}

/*
 * セクション見出しの上に小さく添える英語ラベル(design-system.md「英語アクセント」参照)。
 * ヒーローeyebrow(.hero-lead以前のマークアップでは使っていないが将来的な展開も想定)や
 * コンテンツナビゲーションセクションの "Quick Links" ラベル等、主要セクションで共通利用する。
 */
.eyebrow {
  display: inline-block;
  font-size: var(--font-size-caption);
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--navy);
  text-transform: uppercase;
}

/* --- ヘッダー --- */
.site-header {
  background: var(--navy);
  color: var(--on-navy-text);
}

/*
 * 透過ヘッダー(hero_pageのページのみ、templates/partials/header.html 参照)。
 * position: absolute でドキュメントフローから外し、ヒーローセクションの上に重ねる。
 * ヒーロー側の .hero-overlay(紺のグラデーション)が可読性を担保する前提のため、
 * ここでは背景を透明にするだけでよい。z-indexは .hero-content(2)より大きくして
 * 常にヒーローの上に表示されるようにする。
 */
.site-header--transparent {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 20;
  background: transparent;
  transition: background-color 0.3s ease;
}

/*
 * 最初の1画面分を超えてスクロールしたら(partials/header.html のJSが付け外しする)、
 * 紺の帯に戻す。以降のコンテンツ(白背景セクション等)の上でもナビの文字が読めるようにする。
 */
.site-header--transparent.is-scrolled {
  background-color: var(--navy);
}

.site-header .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
  padding-top: var(--space-4);
  padding-bottom: var(--space-4);
}

.site-header .logo {
  color: var(--on-navy-text);
  /* フッターのコピーライト(&copy; INVEST ONLINE、bodyの--font-sansを継承)と書体を揃える。 */
  font-family: var(--font-sans);
  font-size: 1.25rem;
  font-weight: 700;
  text-decoration: none;
  display: block;
}

.logo-stack {
  position: relative;
  display: block;
  height: 32px;
  width: 134px; /* 300:67のアスペクト比を高さ32pxで換算した幅 */
}

.logo-image {
  display: block;
  height: 32px;
  width: auto;
  transition: opacity 0.3s ease;
}

/*
 * 2026-08発注者フィードバック: 「ロゴの赤い部分だけ半透明にして、白い文字はそのまま」
 * という指示のため、単純なCSS opacityではなく、赤ピクセルだけアルファ値を落とした
 * logo-translucent.png(header.html参照)を重ねてクロスフェードする。
 * 既定(他ページの紺背景ヘッダー、またはトップページでスクロール後)は不透明版のみ表示、
 * トップページのメインビジュアル上(透過ヘッダー、スクロール前)だけ半透明版に切り替える。
 */
.logo-image--translucent {
  position: absolute;
  inset: 0;
  opacity: 0;
}

.site-header--transparent .logo-image--opaque {
  opacity: 0;
}

.site-header--transparent .logo-image--translucent {
  opacity: 1;
}

.site-header--transparent.is-scrolled .logo-image--opaque {
  opacity: 1;
}

.site-header--transparent.is-scrolled .logo-image--translucent {
  opacity: 0;
}

.site-header nav ul {
  list-style: none;
  display: flex;
  gap: var(--space-6);
  margin: 0;
  padding: 0;
}

.site-header nav a {
  text-decoration: none;
}

/*
 * ナビ項目の英語主(nav-en)/日本語従(nav-ja)2段組み(2026-08発注者フィードバック、
 * ロボットホームHP参照)。.qc-en/.qc-labelと同じ考え方(太字の英語見出し+小さい
 * 日本語キャプション)を踏襲する。spanをdisplay:blockにするだけで縦積みになるため、
 * 親<a>のdisplay(デスクトップ=inline、モバイル=block)を変更する必要がなく、
 * 既存のモバイル用メディアクエリ(.site-nav a { display: block; })と競合しない。
 */
.nav-en {
  display: block;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 0.9375rem;
  letter-spacing: 0.01em;
  color: var(--on-navy-text);
}

.nav-ja {
  display: block;
  margin-top: 2px;
  font-size: 0.6875rem;
  letter-spacing: 0.04em;
  color: var(--on-navy-text);
}

.site-header nav a:hover .nav-ja {
  color: var(--on-navy-text);
}

.site-header nav a:focus-visible {
  outline: 2px solid var(--on-navy-text);
  outline-offset: 2px;
}

/* --- ハンバーガーメニューボタン(モバイルのみ表示) --- */
.nav-toggle {
  display: none;
  flex: none;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

.nav-toggle-bar {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--on-navy-text);
  border-radius: 1px;
  transition: transform 0.15s ease, opacity 0.15s ease;
}

.nav-toggle:focus-visible {
  outline: 2px solid var(--on-navy-text);
  outline-offset: 2px;
}

.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(2) {
  opacity: 0;
}

.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* --- モバイル幅: ヘッダーを折り返し、ナビをハンバーガー開閉のドロップダウンにする --- */
@media (max-width: 720px) {
  .site-header .container {
    flex-wrap: wrap;
  }

  .site-header .logo {
    min-width: 0;
  }

  .nav-toggle {
    display: flex;
  }

  .site-nav {
    display: none;
    flex-basis: 100%;
    width: 100%;
  }

  .site-nav.is-open {
    display: block;
    padding-top: var(--space-2);
    padding-bottom: var(--space-4);
  }

  .site-nav ul {
    flex-direction: column;
    gap: 0;
  }

  .site-nav li {
    border-top: 1px solid var(--navy-deep);
  }

  .site-nav a {
    display: block;
    padding: var(--space-3) 0;
  }
}

/*
 * --- フッター(2026-08 発注者フィードバックで再設計) ---
 * ロボットホーム準拠の「ロゴ+ナビ2層構成」から離れ、法務・企業情報に特化した
 * シンプルな構成に変更(発注者確定の掲載内容: 親会社に関する一文／財務報告の基本方針／
 * プライバシーポリシー／事業内容／個人情報の取扱いについて／会社名のクレジット)。
 * 紺配色(--navy-deep)は維持。ロゴ画像・年号入りコピーライトは持たない(既存方針を継続)。
 * SNSアイコンは公式アカウント未確定のため実装しない(架空のリンクを作らない)。
 */
.site-footer {
  background: var(--navy-deep);
  color: var(--canvas);
  /* 直前セクション(.page-main / .news-section 等)の下パディングと合算すると余白が
     過大になる、というフィードバックを受け、128px(--space-32)から64pxへ縮小した。 */
  margin-top: var(--space-16);
}

.site-footer .container {
  padding-top: var(--space-16);
  padding-bottom: 0;
}

.footer-group {
  color: var(--on-navy-text);
  font-size: var(--font-size-caption);
  margin: 0 0 var(--space-6);
}

.footer-nav {
  display: flex;
  flex-wrap: wrap;
  column-gap: var(--space-6);
  row-gap: var(--space-3);
  padding-bottom: var(--space-8);
  border-bottom: 1px solid rgba(174, 187, 199, 0.28);
  font-size: var(--font-size-caption);
}

.footer-nav a {
  color: var(--on-navy-text);
  text-decoration: none;
}

.footer-nav a:hover,
.footer-nav a:focus-visible {
  color: var(--crimson);
  opacity: 1;
}

.footer-bottom {
  padding: var(--space-4) 0 var(--space-8);
  font-size: var(--font-size-caption);
  color: var(--on-navy-muted);
}

/* --- 汎用ページ --- */
.page-main {
  padding: var(--space-16) 0;
}

/*
 * ヒーロー(.hero-section / .service-hero)がページ直下の最初の要素になる場合、
 * .page-main の上パディングと二重に空いてしまう(canvas色の隙間 → 紺の帯、の順で見える)ため
 * 上側だけ相殺する。下側のパディングはCTA等の後の余白として残す。
 */
.page-main:has(> .hero-section:first-child),
.page-main:has(> .service-hero:first-child) {
  padding-top: 0;
}

/*
 * 事業内容トップの末尾(.business-links-section、紺背景)がそのままフッター(同じ紺背景)に
 * 続く場合、.page-mainの下パディングと.site-footerのmargin-topがどちらもcanvas色(明るい灰)の
 * 帯として間に挟まり、紺→薄灰→紺という不自然な切れ目になってしまう。両方をゼロにして
 * 紺が途切れないようにする。
 */
.page-main:has(> .business-links-section:last-child) {
  padding-bottom: 0;
}

.page-main:has(> .business-links-section:last-child) + .site-footer {
  margin-top: 0;
}

.page-main .lead {
  color: var(--slate);
}

/*
 * --- 汎用ページ(templates/page.html): 主にプライバシーポリシー系のページ ---
 * 実サイト(invest-online.co.jp/privacy-policy/)のCSS(privacy-policy.css)を確認して
 * 移植した構成(2026-08発注者フィードバック): タイトルを英語主見出し/日本語副題の2段構成にし
 * (title_en front matterがあるページのみ)、本文全体を .container--narrow の中央カラムに
 * 収め、見出し・表のフォントサイズを実サイト相当に縮小した。
 */
.page-title-block {
  text-align: center;
  margin-bottom: var(--space-8);
}

.page-title-en {
  font-size: var(--font-size-h2);
  color: var(--navy);
  letter-spacing: 0.04em;
}

.page-title-ja {
  margin: var(--space-2) 0 0;
  font-size: var(--font-size-caption);
  letter-spacing: 0.08em;
  color: var(--slate);
}

/* 実サイトは本文を .sec{text-align:justify} で両端揃えにし、見出し(.section-title2)は
   22px・左揃えでその中に置く。表は14px相当に縮小し、見出し(th)に網掛けを付けている。
   本文フォントサイズは発注者フィードバックにより実サイト相当までさらに縮小(15px)、
   見出しと直前の本文との間隔も広げた(見出しmargin-top側で確保し、段落側にも明示的な
   margin-bottomを持たせて、ブラウザ既定のマージン相殺に依存しないようにしている)。 */
.page-body {
  font-size: 0.9375rem;
}

.page-body h2 {
  font-size: 1.375rem;
  text-align: left;
  margin-top: var(--space-12);
  margin-bottom: var(--space-3);
}

.page-body h3 {
  font-size: 1.125rem;
  text-align: left;
  margin-top: var(--space-8);
  margin-bottom: var(--space-2);
}

.page-body p,
.page-body li {
  text-align: justify;
}

.page-body p {
  margin: 0 0 var(--space-4);
}

.page-body img {
  display: block;
  width: 100%;
  height: auto;
  margin: var(--space-6) 0;
  border-radius: var(--radius-sm);
}

.page-body table {
  width: 100%;
  border-collapse: collapse;
  margin: var(--space-4) 0 var(--space-8);
  font-size: 0.875rem;
  background: var(--panel);
}

.page-body th,
.page-body td {
  border: 1px solid var(--line);
  padding: var(--space-3) var(--space-4);
  text-align: left;
  vertical-align: top;
}

.page-body th {
  background: var(--canvas);
  font-weight: 600;
}

.page-body th:first-child,
.page-body td:first-child {
  width: 30%;
}

/*
 * 2026-08-27発注者フィードバック: プライバシーマークのロゴが実サイト(invest-online.co.jp/privacy-policy/)
 * より大幅に大きく表示されていた。原因は `.page-body img`(width:100%、詳細度0,1,1)の方が
 * このセレクタ単体(詳細度0,1,0)より詳細度が高く、意図していた width:90px が無視されて
 * 親要素の幅いっぱいに引き伸ばされていたため。`.page-body img.privacy-mark-badge`と
 * 詳細度を上げることで確実に上書きする(!importantは使わない)。
 */
.page-body img.privacy-mark-badge {
  display: block;
  width: 90px;
  height: auto;
  margin: var(--space-4) 0;
}

/*
 * --- ヒーロー背景画像(トップページ/サービス詳細で共用) ---
 * 各テンプレート側で要素に `style="--hero-bg-image: url('...');"` を指定し、
 * このクラスを付けたときだけ画像+紺のオーバーレイ(グラデーション)を重ねる。
 * オーバーレイの色は tokens.css のトークンのみを使用し(直接HEX値は書かない)、
 * color-mix() で半透明化することで、画像の上でも文字の可読性を確保する。
 */
.hero-bg-image {
  background-image:
    linear-gradient(
      180deg,
      color-mix(in srgb, var(--navy) 30%, transparent) 0%,
      color-mix(in srgb, var(--navy-deep) 60%, transparent) 100%
    ),
    var(--hero-bg-image);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* --- トップページ ヒーロー --- */
.hero-section {
  /* JSでのカルーセル切り替え前(または無効時)のフォールバックは1枚目のスライドが担う。 */
  background-color: var(--navy);
  color: var(--on-navy-text);
  padding: var(--space-24) 0 var(--space-16);
  position: relative;
  overflow: hidden;
  /*
   * PCで下に余白(canvas色の隙間)ができ没入感がないという指摘を受け、最低でも
   * ビューポート1画面分の高さを確保する。内容がそれより長い場合は min-height なので
   * 素直に伸びる(高さを固定するとテキストが多いときにはみ出すため height は使わない)。
   * 100dvh対応ブラウザではアドレスバー等を考慮した実際の可視高さになるよう、
   * 100vh(フォールバック)を先に書き、対応ブラウザ向けに100dvhで上書きする。
   */
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  /*
   * 唯一のflexアイテムである .hero-content を縦方向中央寄せにする。
   * 上下パディングが非対称(上96px/下64px)なぶん、中央寄せでも見た目はやや上寄りになり、
   * 従来の見た目(paddingだけで高さが決まっていた頃)に近い配置を保てる。
   * (下寄せ(flex-end)を一度試したが、発注者の指示で中央寄せに戻した)
   */
  justify-content: center;
}

.hero-section h1 {
  color: var(--on-navy-text);
  max-width: 18ch;
  /* 見出し標準(h1,h2,h3)は既にゴシック体だが、ヒーローは他の見出しよりさらに太くして
     キーメッセージ("Invest on evidence")の存在感を出す。 */
  font-weight: 700;
  letter-spacing: 0.01em;
}

/*
 * --- トップページ ヒーロー: 自動クロスフェード + ケンバーンズのカルーセル ---
 * .hero-carousel は .hero-section の全面(paddingを含む領域)を覆う絶対配置レイヤーで、
 * 16枚の .hero-slide を重ねて配置する。表示中のスライドだけ opacity:1(is-active)にし、
 * transition: opacity で切り替え時にクロスフェードする。
 */
.hero-carousel {
  position: absolute;
  inset: 0;
  overflow: hidden;
  z-index: 0;
}

.hero-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  z-index: 0;
  /* テンプレート側のJS(FADE_DURATION_MS)と必ず一致させること。カットごとの表示秒数が
     0.8秒程度まで短くなったため、旧来の1.2秒だとフェードが重なりすぎて間延びして見える。 */
  transition: opacity .5s ease;
}

.hero-slide.is-active {
  opacity: 1;
  z-index: 1;
}

.hero-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* 既定は中央。写真自体に文字(看板等)が写っているカットだけ、--hero-focus/
     --hero-brightnessを個別に上書きして、ヒーロー文字(h1/リード)と被らない
     位置にずらしたり暗くしたりできるようにしている(下の.hero-slide:nth-child(9)
     参照。hero-v2-09の「GRANQUAL」看板対応)。インラインstyleではなくここで
     nth-childとして定義しているのは、メディアクエリでブレークポイントごとに
     上書きできるようにするため(インラインstyleは同一要素の通常の stylesheet
     ルールに優先してしまい、メディアクエリでの出し分けができない)。 */
  object-position: var(--hero-focus, center);
  filter: brightness(var(--hero-brightness, 1));
  display: block;
  transform: scale(1);
  transform-origin: center;
}

/* hero-v2-09(「GRANQUAL」看板の写真)専用の調整。看板の文字が大きく、
   「Invest on evidence」と重なって読みづらいという発注者フィードバックへの対応。
   デスクトップ(横長)は元のhero-v2-09.webpのまま、十分クロップの余白があるため、
   ズーム+下寄せのクロップで看板の文字をヒーロー文字より上に逃がし、GRANQUALを
   フルで読めるようにしている。
   スマホは当初、元画像(横長)のままだと看板の文字を逃がす余白が無く、発注者から
   縦長構図の別カット(hero-v2-09-mobile.webp、看板が上部1/3・下2/3は空白の壁面)を
   もらったため、<picture>(本ファイルの<= 900pxのsourceタグ参照)でそちらに
   差し替えている。縦長カットは看板が画像の左寄りにあるため、object-positionは
   左上寄りにして看板が切れないようにしている。 */
.hero-slide:nth-child(9) {
  --kb-scale-from: 1.3;
  --kb-scale-to: 1.3;
  --hero-focus: center 100%;
}
@media (max-width: 900px) {
  .hero-slide:nth-child(9) {
    --kb-scale-from: 1;
    --kb-scale-to: 1;
    --hero-focus: 25% 15%;
  }
}

/*
 * ケンバーンズ効果: 全カットが同じ「中央からゆっくりズーム」だけだと単調に感じるため、
 * 6パターン(a/b/c/static/out/up)を用意しカットごとに割り当てる(テンプレート側の
 * `data-kb` を参照)。アニメーション時間はJSが各カットの表示秒数(data-duration)に
 * 合わせて上書きするため、ここでは動きの質(拡大率・パン方向)だけを定義する。
 */
.hero-slide.is-kenburns.kb-a img { animation-name: hero-kenburns-a; }
.hero-slide.is-kenburns.kb-b img { animation-name: hero-kenburns-b; }
.hero-slide.is-kenburns.kb-c img { animation-name: hero-kenburns-c; }
.hero-slide.is-kenburns.kb-static img { animation-name: hero-kenburns-static; }
.hero-slide.is-kenburns.kb-out img { animation-name: hero-kenburns-out; }
.hero-slide.is-kenburns.kb-up img { animation-name: hero-kenburns-up; }

.hero-slide.is-kenburns img {
  animation-timing-function: ease-out;
  animation-fill-mode: forwards;
}

/*
 * 2026-08-XX デザイナー確定版: 「パララックスが速くて疲れる」「切り替わりが速くて
 * 落ち着かない」というフィードバックを受け、変化量を全面的に控えめへ調整した。
 * カットごとに微妙に異なる数値(表参照)を、共通のキーフレーム構造(scaleのみ/
 * translateXのみ/translateYのみ)+ CSSカスタムプロパティのデフォルト値で表現し、
 * デフォルトと異なる値が必要なカットだけ templates/home.html 側で
 * `style="--kb-scale-to: 1.035;"` のようにインラインで上書きする
 * (`.hero-slide` に付けたカスタムプロパティは子要素の img に継承される)。
 * パン系(b/c/up)は今回の確定版でスケール変化を伴わなくなったため、scale(1)固定にした。
 */

/* a: 中央からゆっくりズームイン。既定値は#7(hero-v2-07)用、#1は --kb-scale-to で上書き */
@keyframes hero-kenburns-a {
  from { transform: scale(var(--kb-scale-from, 1)) translate(0, 0); }
  to   { transform: scale(var(--kb-scale-to, 1.04)) translate(0, 0); }
}

/* b: 左→右パン(スケールは1のまま)。既定値は#2(hero-v2-02)用(唯一の割り当て) */
@keyframes hero-kenburns-b {
  from { transform: scale(1) translateX(var(--kb-x-from, -0.8%)); }
  to   { transform: scale(1) translateX(var(--kb-x-to, 0.8%)); }
}

/* c: 右→左パン(スケールは1のまま)。既定値は#10(hero-v2-13)用(唯一の割り当て) */
@keyframes hero-kenburns-c {
  from { transform: scale(1) translateX(var(--kb-x-from, 0.9%)); }
  to   { transform: scale(1) translateX(var(--kb-x-to, -0.9%)); }
}

/*
 * static: ごくわずかな動き(ほぼ静止として見せるためのカット用)。
 * 既定値は#3/#4/#11(hero-v2-03/04/14)用、#8は1.02、#9は1.01に --kb-scale-to で上書きする。
 */
@keyframes hero-kenburns-static {
  from { transform: scale(var(--kb-scale-from, 1)) translate(0, 0); }
  to   { transform: scale(var(--kb-scale-to, 1.015)) translate(0, 0); }
}

/* out: kb-aの逆方向。既定値は#5(hero-v2-05)用、#12(hero-v2-15)は --kb-scale-from で上書き */
@keyframes hero-kenburns-out {
  from { transform: scale(var(--kb-scale-from, 1.04)) translate(0, 0); }
  to   { transform: scale(var(--kb-scale-to, 1)) translate(0, 0); }
}

/* up: 下→上パン(スケールは1のまま)。既定値は#6(hero-v2-06)用(唯一の割り当て) */
@keyframes hero-kenburns-up {
  from { transform: scale(1) translateY(var(--kb-y-from, 1%)); }
  to   { transform: scale(1) translateY(var(--kb-y-to, 0%)); }
}

/*
 * オーバーレイはカルーセル全体の上に1枚だけ重ねる(スライドごとに重ねると
 * クロスフェード中に濃さがちらつくため)。トップページは「メインビジュアルを見せる」
 * 比重が高いため、サービス詳細の .hero-bg-image より薄いオーバーレイにする。
 * 色は tokens.css のトークンのみを使用し、color-mix() で半透明化する。
 */
.hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: linear-gradient(
    180deg,
    color-mix(in srgb, var(--navy) 12%, transparent) 0%,
    color-mix(in srgb, var(--navy-deep) 38%, transparent) 100%
  );
}

.hero-content {
  position: relative;
  z-index: 2;
}

/*
 * 2026-08発注者フィードバック: トップページヒーロー右側中央に「INVEST ONLINE BIZ」への
 * 外部リンクバッジを設置(ロボットホームHPの「owner platform site」を参考)。
 * 白背景の丸ピル型、英語主(太字)/日本語従(小さいキャプション)の2段テキスト+
 * 右端に紺の丸矢印アイコン。
 * モバイル幅ではヒーローの見出し・リード文と重なってしまうため非表示にする
 * (同じ行き先へのリンクはトップページ下部のコンテンツナビゲーションカードにもあるため、
 * モバイルでの導線は失われない)。
 *
 * 2026-08追加フィードバック: 「スクロールしても画面に残り続けるように」との指示により
 * position: absolute(ヒーロー内のみ)から position: fixed(ビューポート基準)に変更。
 * ヘッダー(.site-header--transparentのz-index:20)より前面に出るようz-index:25にする。
 */
.hero-biz-badge {
  position: fixed;
  z-index: 25;
  right: var(--space-6);
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: var(--space-3);
  /* 2026-08発注者フィードバック: クリムゾン塗りつぶしから、以前の半透明ガラス調に戻す
     (フローティング/常時表示の挙動はそのまま維持)。目立たせる役割はテキスト自体の
     色分け(英語=クリムゾン、日本語=白)に持たせる。 */
  background: rgba(255, 255, 255, 0.14);
  border: 1px solid rgba(255, 255, 255, 0.4);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: 999px;
  padding: var(--space-3) var(--space-4);
  text-decoration: none;
  box-shadow: 0 12px 28px rgba(11, 21, 36, 0.22);
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

.hero-biz-badge:hover {
  background: rgba(255, 255, 255, 0.24);
  border-color: rgba(255, 255, 255, 0.6);
}

/*
 * 2026-08発注者フィードバック: position:fixedで常時表示にした結果、ヒーロー(紺の写真)を
 * 過ぎて背景がグレー(--canvas)のセクションに入ると、半透明ガラス+白文字のコントラストが
 * 不足し視認しづらくなっていた。ヘッダーが同じスクロール位置(1画面分を超えたら)で
 * 透過→紺の帯に切り替える`.is-scrolled`と同じタイミング・同じクラス名を、
 * partials/header.html の既存スクロールリスナーからこのバッジにも適用し、
 * 背景を不透明な紺(--navy)に切り替える。文字色(クリムゾン/白)はそのままで、
 * 紺地の上では他のヘッダー・フッターと同じ配色のためコントラストは確保済み。
 */
.hero-biz-badge.is-scrolled {
  background: var(--navy);
  border-color: var(--navy);
}

.hero-biz-badge.is-scrolled:hover {
  background: var(--navy-deep);
  border-color: var(--navy-deep);
}

.hero-biz-badge-text {
  text-align: left;
  line-height: 1.4;
}

.hero-biz-badge-en {
  display: block;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.01em;
  color: var(--crimson);
  text-shadow: 0 1px 4px rgba(11, 21, 36, 0.5);
}

.hero-biz-badge-ja {
  display: block;
  margin-top: 2px;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #fff;
  text-shadow: 0 1px 4px rgba(11, 21, 36, 0.5);
}

.hero-biz-badge-arrow {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.16);
  border: 1px solid rgba(255, 255, 255, 0.5);
  color: #fff;
}

.hero-biz-badge-arrow svg {
  width: 14px;
  height: 14px;
}

@media (max-width: 900px) {
  .hero-biz-badge {
    display: none;
  }
}

/* 動きを抑えたい環境では、クロスフェード・ケンバーンズとも完全に止める(JS側の早期returnと二重の安全策)。 */
@media (prefers-reduced-motion: reduce) {
  .hero-slide {
    transition: none;
  }

  .hero-slide.is-kenburns img {
    animation: none;
    transform: none;
  }
}

/* h1のブラウザ既定のmargin-bottom(フォントサイズ依存、約29px)が.hero-leadの
   margin-top:0と合わさってもまだ間延びして見えていたため、ヒーロー内のh1だけ
   余白をリセットする(他ページの見出しには影響させないようスコープしている)。 */
.hero-content h1 {
  margin-bottom: 0;
}
.hero-lead {
  margin-top: 0;
}

.hero-lead p {
  color: var(--on-navy-text);
  max-width: 46em;
}

.hero-lead a {
  color: var(--on-navy-text);
}

/*
 * --- コンテンツナビゲーションセクション(トップページ、ヒーロー直下) ---
 * design/wireframes/preview.html の `.quicklink-section`(v0.2.2)をベースに、
 * 発注者フィードバック(2026-08)を反映して調整した。
 * 「会社情報」だけ独立した横長バナー(.quicklink-banner)、それ以外の5項目は
 * 固定幅カード(.quicklink-card)を横一列に並べ overflow-x: auto で横スクロールさせる
 * (モバイル幅でも縦積みにせず、固定幅を保ったまま横スクロールする)。
 * カード背景画像は各テンプレート側で `style="--qc-bg-image: url('...');"` を指定し、
 * .qc-overlay(紺のグラデーション、color-mix()でトークンから半透明化)を重ねて可読性を確保する。
 *
 * 2026-08 発注者フィードバックによる調整:
 * 1. 導入テキスト(.quicklink-intro)は廃止(テンプレート側でマークアップごと削除済み)。
 * 2. カードの横幅を280px→400px程度に拡大し、画像がしっかり見える比率(約16:11)にした。
 * 3. qc-cta(CTA文言+矢印)は完全に削除。qc-en(英語)をメインの見出し扱いに、
 *    qc-label(日本語)を小さいキャプション扱いに、スタイルを入れ替えた
 *    (HTML側のクラス名・要素の並び順は変更していない)。
 * 4. セクション背景をページ標準の canvas(白系)から var(--navy-deep) に変更し、
 *    カード間の隙間に白が見えないようにした。
 */
.quicklink-section {
  padding: var(--space-24) 0 var(--space-12);
  background-color: var(--navy-deep);
  color: var(--on-navy-text);
}

/* 「会社情報」専用の横長バナー(単独1行) */
.quicklink-banner {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 240px;
  padding: var(--space-8);
  margin-bottom: var(--space-1);
  color: var(--on-navy-text);
  text-decoration: none;
  overflow: hidden;
  border-radius: var(--radius-sm);
}

/* 横スクロール行(会社情報以外の5項目、ロボットホームの「topics」行と同じ挙動) */
.quicklink-scroll-wrap {
  position: relative;
  padding-bottom: var(--space-6);
}

.quicklink-scroll {
  display: flex;
  gap: var(--space-2);
  overflow-x: auto;
  /*
   * scroll-snap-type/scroll-behavior は意図的に付けていない。どちらもブラウザが
   * 独自にスクロール位置を動かす機能で、templates/home.html のJS(requestAnimationFrameで
   * 完全に自前制御しているアニメーション、および複製セットに入った瞬間の瞬時な巻き戻し)と
   * 競合する。特にscroll-snap-type: proximityは、JSが目標位置へ近づけている最中に
   * ブラウザが独自に一気に吸着させてしまい、「2秒かけてゆっくり動かしているつもりが
   * 一瞬で終わる」不具合の原因になっていた。
   */
  -webkit-overflow-scrolling: touch;
  /*
   * 自動スクロール(templates/home.html の {% block scripts %} 参照)に合わせて
   * ブラウザ標準のスクロールバーは非表示にする。手動のドラッグ/スワイプ操作自体は
   * (scrollbarが見えないだけで)引き続き機能する。
   */
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* 旧Edge/IE */
}

.quicklink-scroll::-webkit-scrollbar {
  display: none; /* Chrome/Safari/新Edge */
}

/* <button>のデフォルト装飾をリセットし、見た目はこれまでのラベル表示のまま、
   クリックで1枚分だけ手動送りできるようにする(スクロール自動送りとは共存)。 */
.quicklink-scroll-hint {
  position: absolute;
  right: 0;
  bottom: 0;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  border: 0;
  background: transparent;
  padding: var(--space-2);
  cursor: pointer;
  font: inherit;
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--on-navy-muted);
}

.quicklink-scroll-hint:hover,
.quicklink-scroll-hint:focus-visible {
  color: var(--on-navy-text);
}

.quicklink-scroll-hint .arrow {
  transition: transform 0.2s ease;
}

.quicklink-scroll-hint:hover .arrow,
.quicklink-scroll-hint:focus-visible .arrow {
  transform: translateX(3px);
}

/*
 * カード幅: 280px(旧)→400px程度に拡大し、横スクロール行の中でも1枚あたりの画像が
 * しっかり見えるサイズにした(ロボットホーム参考)。高さは約16:11(4:3〜16:10の目安の範囲内)。
 */
.quicklink-card {
  position: relative;
  flex: 0 0 400px;
  min-height: 280px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: var(--space-6);
  color: var(--on-navy-text);
  text-decoration: none;
  overflow: hidden;
  border-radius: var(--radius-sm);
}

.quicklink-banner:focus-visible,
.quicklink-card:focus-visible {
  outline: 2px solid var(--on-navy-text);
  outline-offset: 2px;
}

/* qc-bg: 実際の背景写真(--qc-bg-image、テンプレート側でカットごとに指定)。
   .business-link-card(事業内容トップのリンクカード)も同じ見た目にするため対象に加えている。 */
.quicklink-banner .qc-bg,
.quicklink-card .qc-bg,
.business-link-card .qc-bg {
  position: absolute;
  inset: 0;
  background-image: var(--qc-bg-image);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transition: transform 0.4s ease;
}

/*
 * カード比率(4:3)と素材の縦横比が大きく異なり、coverだと肝心な部分(ロゴ全体・書影全体等)が
 * 切れてしまう場合の修飾子。白背景の上に画像全体が収まる形で中央配置する
 * (2026-08発注者フィードバック。横長ロゴ/縦長の書影で使用)。
 * 詳細度をシンプルな.qc-bg--containだけにすると、上の`.business-link-card .qc-bg`
 * (詳細度0,2,0)に負けてcoverのまま拡大されてしまうため、`.qc-bg.qc-bg--contain`
 * (同じ0,2,0、CSS内で後に書かれているので勝つ)にしている。
 */
.qc-bg.qc-bg--contain {
  background-color: #fff;
  background-size: contain;
  padding: var(--space-1);
  background-origin: content-box;
}

.quicklink-banner:hover .qc-bg,
.quicklink-banner:focus-visible .qc-bg,
.quicklink-card:hover .qc-bg,
.quicklink-card:focus-visible .qc-bg,
.business-link-card:hover .qc-bg,
.business-link-card:focus-visible .qc-bg {
  transform: scale(1.04);
}

.quicklink-banner .qc-overlay,
.quicklink-card .qc-overlay {
  position: absolute;
  inset: 0;
  background-image: linear-gradient(
    0deg,
    color-mix(in srgb, var(--navy-deep) 90%, transparent) 0%,
    color-mix(in srgb, var(--navy-deep) 35%, transparent) 55%,
    color-mix(in srgb, var(--navy-deep) 5%, transparent) 100%
  );
}

/*
 * .business-link-card は上のquicklink系より軽いグラデーションにする(2026-08発注者
 * フィードバック「画像が全体的に暗い」)。文字が乗る下部だけはっきり暗くし、それ以外は
 * 元の写真の明るさをできるだけ残す。
 */
.business-link-card .qc-overlay {
  position: absolute;
  inset: 0;
  background-image: linear-gradient(
    0deg,
    color-mix(in srgb, var(--navy-deep) 65%, transparent) 0%,
    color-mix(in srgb, var(--navy-deep) 15%, transparent) 55%,
    transparent 100%
  );
}

/*
 * qc-en(英語)/qc-label(日本語)の大小関係(2026-08 発注者フィードバック):
 * 英語表記をメインの見出し(旧qc-labelのスタイル)、日本語表記を小さいキャプション
 * (旧qc-enのスタイル)にする。HTML側は元のクラス名・要素順のまま(qc-enが先、
 * qc-labelが後)なので、見出し(英語)→キャプション(日本語)の順で表示される。
 */
.quicklink-banner .qc-en,
.quicklink-card .qc-en,
.business-link-card .qc-en {
  position: relative;
  display: block;
  /* ヒーローの見出し(.hero-section h1、"Invest on evidence")と書体を揃える。 */
  font-family: var(--font-sans);
  font-weight: 700;
  letter-spacing: 0.01em;
  font-size: 1.25rem;
  margin-bottom: var(--space-1);
}

.quicklink-banner .qc-label,
.quicklink-card .qc-label,
.business-link-card .qc-label {
  position: relative;
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--on-navy-muted);
}

/*
 * 外部サイト(実績紹介/採用情報/不動産業者様専用サイト等)を示すバッジ。テキストは持たずアイコンのみ
 * (発注者フィードバックによりテキストラベルは廃止)。新しいタブで開くことは target="_blank" で対応。
 */
.quicklink-card .qc-ext-badge,
.business-link-card .qc-ext-badge {
  position: absolute;
  z-index: 1;
  top: var(--space-3);
  right: var(--space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  color: var(--on-navy-text);
  background: color-mix(in srgb, var(--on-navy-text) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--on-navy-text) 40%, transparent);
}

.quicklink-card .qc-ext-badge svg,
.business-link-card .qc-ext-badge svg {
  width: 12px;
  height: 12px;
}

@media (max-width: 720px) {
  /* モバイル幅でも縦積みにせず、固定幅カードのまま横スクロールさせる(ロボットホームと同じ挙動)。 */
  .quicklink-banner {
    min-height: 180px;
  }

  .quicklink-card {
    flex-basis: 280px;
    min-height: 200px;
  }
}

/* --- トップページ: Markdown本文を見出し単位でそのまま流し込む汎用セクション --- */
.home-section {
  padding: var(--space-12) 0;
  border-bottom: 1px solid var(--line);
}

/*
 * 矢印リンク(docs/design-system.md「矢印リンク」参照)。CTAボタン(.button-primary)は
 * 「お問い合わせ」等コンバージョンに直結する主要導線のみに使い、「もっと見る」等の
 * 副次的な導線にはこのミニマルなテキスト+矢印リンクを使う。通常時は紺、ホバー/フォーカス
 * 時のみ矢印がスライドし赤(--crimson、アクティブ状態としての用途)に変わる。
 */
.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--navy);
  text-decoration: none;
  font-size: var(--font-size-caption);
  font-weight: 600;
}

.link-arrow .arrow {
  display: inline-block;
  transition: transform 0.2s ease;
}

.link-arrow:hover,
.link-arrow:focus-visible {
  color: var(--crimson);
}

.link-arrow:hover .arrow,
.link-arrow:focus-visible .arrow {
  transform: translateX(4px);
}

/*
 * --- Newsセクション(トップページ) ---
 * ロボットホームのプレスリリース一覧(日付→見出しのリスト形式、「see more」導線)を参考に、
 * カテゴリタグ(お知らせ/プレスリリース)を加えた形。実際のニュース内容は未確定のため、
 * 現状はプレースホルダー2件を表示している(templates/home.html参照)。
 */
/* トップページでは現状Newsが最後のセクションのため、下側の罫線・パディングを持たせない
   (.home-sectionの標準paddingのままだと.site-footerのmargin-topと合算し余白が過大になる)。 */
.news-section {
  padding-bottom: 0;
  border-bottom: none;
}

.news-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--space-4);
  flex-wrap: wrap;
  margin-bottom: var(--space-6);
}

/*
 * News/お知らせの大小関係(発注者フィードバック、.qc-en/.qc-labelと同じ考え方):
 * 英語表記(News)をメインの見出し、日本語表記(お知らせ)を小さいキャプションにする。
 * 英語見出しはh1(.hero-section h1)と同様、mincho(見出し標準)だと欧文が間延びして見えるため
 * font-sansに切り替える。
 */
.news-title {
  font-family: var(--font-sans);
  font-weight: 700;
  letter-spacing: 0.01em;
  margin-bottom: var(--space-1);
}

.news-subtitle {
  display: block;
  font-size: var(--font-size-caption);
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--slate);
}

.news-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.news-item {
  border-bottom: 1px solid var(--line);
}

.news-item a {
  display: flex;
  align-items: baseline;
  gap: var(--space-6);
  padding: var(--space-4) var(--space-1);
  text-decoration: none;
  color: var(--ink);
}

.news-date {
  flex: none;
  width: 7.5em;
  font-size: var(--font-size-caption);
  color: var(--slate);
}

.news-tag {
  flex: none;
  /* 2026-08発注者フィードバック: 「お知らせ」「プレスリリース」で枠の幅が文字数分だけ
     バラバラだったため、幅を揃えて中央寄せにした。基準値は文字数が最も多い「プレスリリース」
     (7文字)が余白ごと収まる幅(6.5emでは狭く、プレスリリース側がはみ出していたため9emに拡大)。 */
  width: 9em;
  text-align: center;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--navy);
  border: 1px solid var(--navy);
  padding: 3px var(--space-2);
}

.news-headline {
  flex: 1;
  font-size: 0.9375rem;
  text-wrap: balance;
}

.news-item a:hover .news-headline,
.news-item a:focus-visible .news-headline {
  color: var(--crimson);
}

@media (max-width: 720px) {
  .news-item a {
    flex-wrap: wrap;
    gap: var(--space-2) var(--space-4);
  }

  .news-date {
    width: auto;
  }
}

/* --- トップページ「私たちの姿勢」セクション: 画像+テキストの2カラム --- */
.stance-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-8);
  align-items: center;
}

.stance-media {
  border-radius: var(--radius-sm);
  overflow: hidden;
}

.stance-media img {
  width: 100%;
  aspect-ratio: 1400 / 781;
  object-fit: cover;
}

@media (max-width: 720px) {
  .stance-layout {
    grid-template-columns: 1fr;
  }
}

/*
 * --- 事業モデル図(事業内容トップ) ---
 * 2026-09、GA technologies等5社の実サイトを参考に再設計(下の.business-model-diagram
 * コメント参照)。起点(不動産企画・開発)の円のみ紺の塗りで強調し、それ以外は白背景+
 * 紺の細線+グレーの補助テキストという抑制の効いた配色にしている(クリムゾンは不使用)。
 */
.business-model-section {
  text-align: center;
}
/* 発注者フィードバック: 図の上下の余白を調整。.service-sectionの共通paddingは
   他のセクションにも影響するため触らず、このセクションの上下だけ個別に変える。
   .service-sectionの`padding`ショートハンド(このファイル内で後に定義されている)に
   上書きされないよう、詳細度を上げるためセレクタを結合している。
   上側はヒーロー直下のリード文をもう少し上に詰めたいとの要望で縮小。
   下側はTier2(事業領域)の小項目のすぐ下にあたるため、やや広めに取っている。 */
.service-section.business-model-section {
  padding-top: var(--space-6);
  padding-bottom: var(--space-6);
}

.business-model-lead {
  max-width: 42em;
  margin: 0 auto;
  color: var(--ink);
}

/*
 * 事業モデル図(2026-10、4回目の再設計)。経緯:
 *   (1) 詳細版7列グリッドのCSS実装 → 「もっとシンプルに」
 *   (2) 簡易3ブロック版のCSS実装 → 「bad」
 *   (3) 発注者がGeminiで自作した画像(business.webp)をそのまま採用 → 「かっこ悪い」
 *   (4) GA technologies等5社の「事業内容」ページを実際に確認したうえで、円+細線の
 *       HTML/CSS実装に作り直し(Tier1: 個人投資家様⇄INVEST ONLINE⇄不動産事業者様)。
 *   (5) 発注者から「事業全体が伝わるようにしたい」との要望で、手描きの構想図
 *       (PM・AM領域/不動産企画・開発領域/メディア領域と、それぞれの具体的な業務項目)を
 *       もとにTier2(事業領域)を追加。「カードが分断されて見える」「もっとカッコよく」
 *       という複数回のフィードバックを経て、Tier2もTier1と同じ「円(楕円)+細線」の
 *       語彙に統一し、中央円から下にもトランクを伸ばして分岐させる、全体が1本の
 *       ツリーでつながる構成で確定(design/wireframes/business-model-v3-capabilities.html
 *       で検証したもの)。
 * 画像(business.webp)はもう参照していない(static/images/に残置はしているが未使用)。
 * テキストをHTMLで直接持つため、文言修正は今後この中の日本語テキストを編集するだけでよい。
 */
.business-model-diagram {
  max-width: 1160px;
  margin: var(--space-4) auto 0;
  position: relative;
}

.business-model-grid {
  display: grid;
  /* 左から: 個人投資家様の円 / 関係ラベル / 余白 / 中央円 / 余白 / ラベル / 不動産事業者様の円。
     列幅はすべて固定pxで、合計880px(= 150+160+30+200+30+160+150)に収まるよう設計している。
     以前は「プロパティマネジメント」のような長いラベルに合わせて列幅・円を大きめに
     取っていたが、ラベル文言がすべて短くなった(コンサルティング/PM/物件紹介/物件査定)
     のと、発注者フィードバック「全体を縮小してスクロールなしで事業領域まで見えるように
     したい」を受けて縮小した。.containerの実コンテンツ幅(1072px)には十分収まる。 */
  grid-template-columns: 150px 160px 30px 200px 30px 160px 150px;
  /* 列合計(880px)は.containerの実コンテンツ幅(1072px)より小さいため、justify-contentを
     指定しないと余った幅がグリッドの右側にだけ残り、図全体が左に寄って見える。centerに
     して左右均等に配分する。 */
  justify-content: center;
  align-items: center;
  gap: 0;
}
/* DOM順(links→party-left→center→party-right→link-single)が列の左右順と一致しないため、
   CSS Gridのデフォルト自動配置(sparse packing)だと各要素が別々の行に分かれてしまう。
   全要素を明示的に同じ行に固定する。 */
.business-model-grid > * {
  grid-row: 1;
}

.business-model-party {
  flex: none;
  width: 128px;
  height: 128px;
  border-radius: 50%;
  background: var(--panel);
  border: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 var(--space-3);
  position: relative;
  z-index: 1;
  justify-self: center;
}
.business-model-party--left { grid-column: 1; }
.business-model-party--right { grid-column: 7; }
.business-model-party-eyebrow {
  display: block;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--slate);
  text-transform: uppercase;
  margin-bottom: var(--space-1);
}
.business-model-party-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.4;
}

/* --- 中央円: ブランドカラー(紺)を塗り面に使う唯一の要素。縁の弧・接続線とも
       クリムゾンは使わず紺の濃淡(navy-deep)のみで表現する(完全モノクロ寄りの構成)。 --- */
.business-model-center {
  flex: none;
  width: 156px;
  height: 156px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  position: relative;
  z-index: 2;
  grid-column: 4;
  justify-self: center;
}
/* 縁の弧アクセント。SVGのstroke-dasharrayで描画する(CSSのconic-gradient+mask-compositeは
   境界でレンダリングの継ぎ目が出たため不採用)。円の真上(12時)を中心に90度ぶんだけ表示し、
   接続線が接する左右(90度/270度)からは確実に離す。viewBoxは実際の円のpxサイズに関わらず
   常に300x300で記述しており、SVGが自動的にスケールするため、円を縮小してもこのSVG自体は
   変更不要。 */
.business-model-center-arc {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.business-model-wordmark {
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  margin-bottom: var(--space-2);
}
.business-model-tag {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* --- 接続線(SVG)。実際の円の描画位置から動的に算出する(templates/service_list.html
       の{% block scripts %}参照)。 --- */
.business-model-connectors {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

/* --- 左側: 関係ラベル(コンサルティング/プロパティマネジメント/不動産投資メディア) --- */
.business-model-links {
  grid-column: 2;
  align-self: center;
  display: flex;
  flex-direction: column;
  /* align-itemsを明示しないとデフォルトのstretchで各ラベルが列幅いっぱいに広がり、
     ラベル背景(線を分断するマスク)が実際のテキストよりずっと大きくなって
     接続線のほとんどを隠してしまう。centerにしてラベルを文字幅に合わせる。 */
  align-items: center;
  justify-content: center;
  gap: var(--space-16);
  padding: 0 var(--space-3);
}
.business-model-link {
  /* 接続線(SVG, z-index:0)が非配置要素であるラベル文字より前面に描画され、線が文字に
     重なって見づらくなる問題があったため、ラベル側をposition:relative + z-index:1で
     前面に出し、背景をページ地色(--canvas)で塗って線を視覚的に"分断"している
     (線がラベルの後ろで途切れているように見せる、よくある図解の手法)。 */
  position: relative;
  z-index: 1;
  background: var(--canvas);
  padding: var(--space-1) var(--space-3);
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-align: center;
  white-space: nowrap;
}

/* --- 右側: 関係ラベル(物件紹介/物件査定)。左側の.business-model-linksと同じ
       縦積みflexで、文字色だけ紺にしている。 --- */
.business-model-link-single {
  grid-column: 6;
  align-self: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-16);
  padding: 0 var(--space-2);
}
.business-model-link-single .business-model-link { color: var(--navy); }

/* --- Tier2: 事業領域。Tier1の党員円とまったく同じ「円(楕円)」の語彙で表現し、
       カード(四角形)という異なる要素を持ち込まない。中央円から伸びるトランク線
       だけでTier1とつなぎ、全体を1つのツリー図として見せる(design/wireframes/
       business-model-v3-capabilities.html で検証・確定したもの)。
       主題はTier1の関係性で、事業領域はサブの情報のため、党員円(160px)より
       はっきり小さくしている。 --- */
.business-model-areas {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-8);
  margin-top: var(--space-8);
}
.business-model-area {
  text-align: center;
}
.business-model-area-circle {
  width: 100%;
  max-width: 116px;
  height: 68px;
  margin: 0 auto var(--space-2);
  border-radius: 50%;
  background: var(--panel);
  border: 1px solid var(--line);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 var(--space-3);
  box-shadow: 0 8px 18px -14px rgba(11, 21, 36, 0.35);
}
.business-model-area-name {
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--ink);
  white-space: nowrap;
}
/* 項目を1項目1行の縦積みリストにすると縦に長くなりすぎたため、「/」区切りで
   折り返して流し込む形にしている(発注者フィードバック)。改行位置は自然な
   折り返しに任せず、文言ごとに指定された位置でbrタグにより固定している。 */
.business-model-area-tags {
  font-size: 0.75rem;
  line-height: 1.9;
  letter-spacing: 0.01em;
  max-width: 280px;
  margin: 0 auto;
}
.business-model-area-tag {
  color: var(--ink);
  font-weight: 500;
}
.business-model-area-tag:not(:last-child)::after {
  content: "  /  ";
  color: var(--line);
  font-weight: 400;
}

/* ブレークポイントは--max-content-width(1120px)に合わせている。理由:
   .containerの実コンテンツ幅は viewport>=1120pxで常に1072px一定になるが、
   viewport<1120pxではコンテンツ幅がviewportに応じて縮む。上のグリッド列は
   1072px固定予算で組んでいるため、1120px未満の中途半端な幅(900〜1120pxなど、
   一般的なノートPCの画面幅を含む)でグリッドをそのまま使うと右側の円が
   画面外にはみ出してしまう。そのためグリッドが安全に使える1120px以上でのみ
   横並びにし、それ未満は常にスマホ用の縦積みレイアウトにフォールバックする。 */
@media (max-width: 1119px) {
  /* 発注者から手描きのツリー図(INVEST ONLINEを頂点に、左列=コンサルティング/
     プロパティマネジメント/不動産投資メディア→個人投資家様、右列=物件ご紹介→
     不動産事業者様、の2列)を指定されたため、単純な1列の縦積みから2列のツリー配置に
     変更した。配色・形状(丸/ピル)は既存のまま、配置だけをこの指定に合わせている。 */
  .business-model-grid {
    grid-template-columns: 1fr 1fr;
    min-height: 0;
    row-gap: var(--space-8);
    column-gap: var(--space-4);
  }
  .business-model-center {
    grid-column: 1 / 3;
    grid-row: 1;
    margin: 0 auto;
  }
  .business-model-links {
    grid-column: 1;
    grid-row: 2;
  }
  .business-model-link-single {
    grid-column: 2;
    grid-row: 2;
  }
  .business-model-party--left {
    grid-column: 1;
    grid-row: 3;
  }
  .business-model-party--right {
    grid-column: 2;
    grid-row: 3;
  }
  .business-model-party {
    width: 130px;
    height: 130px;
    margin: 0 auto;
    padding: 0 var(--space-2);
  }
  /* 発注者フィードバック: 小さな画面で「不動産事業者様」等が折り返しやすいため、
     円内テキストをやや縮小して折り返しを起きにくくする。 */
  .business-model-party-name {
    font-size: 0.9375rem;
  }
  /* 発注者フィードバック: INVEST ONLINEの円が(スマホでは)やや大きいので縮小し、
     円内テキストもそれに合わせて縮小する。 */
  .business-model-center {
    width: 190px;
    height: 190px;
  }
  .business-model-wordmark {
    font-size: 1.0625rem;
  }
  .business-model-tag {
    font-size: 0.75rem;
  }
  /* 「個人投資家様」グループと「不動産事業者様」グループはどちらもINVEST ONLINEとだけ
     関係があり、2グループ間に直接の関係はないため、SVG接続線はJS側
     (service_list.htmlのscriptsブロック、drawMobile())で、INVEST ONLINEの下で
     トランクから2本に分岐させ、2グループ間はつながないように描画している。 */
  .business-model-links,
  .business-model-link-single {
    padding: 0;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: var(--space-3);
  }
  .business-model-link {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: var(--space-2) var(--space-3);
    font-size: 0.75rem;
    white-space: normal;
  }
  /* Tier2(事業領域)はスマホでは3列を維持できないため1列で縦積みにする。
     中央円からの接続線(Tier1側)と違い、Tier2への接続線はスマホでは引いていない
     (service_list.htmlのJS参照)。縦の並び順だけで「中央円の下にある情報」と
     伝わるため、線を省いてもシンプルに保てると判断した。 */
  .business-model-areas {
    grid-template-columns: 1fr;
    gap: var(--space-8);
    margin-top: var(--space-8);
  }
}

/*
 * 事業モデル図の下に並べる、各事業の個別サービス・サイトへのリンクカード群。
 * 2026-08-14、3回目のフィードバック「トップページのカード配置がかっこいい、このテイストに
 * 近づけたい」を受けて刷新: トップページのquicklink_cardsと全く同じ手法(.qc-bg/.qc-overlay/
 * .qc-en/.qc-label/.qc-ext-badge、写真全面+紺のグラデーション+文字を下部にオーバーレイ)を
 * 流用し、セクション背景も同じ--navy-deepにした(以前の「白背景に紺カード」案から変更)。
 * .qc-*のセレクタ自体は上部の「コンテンツナビゲーションセクション」で定義済みのものに
 * .business-link-cardを追加する形で拡張している(値の重複を避けるため)。
 */
.business-links-section {
  padding: var(--space-16) 0;
  background-color: var(--navy-deep);
  color: var(--on-navy-text);
}

.business-link-group {
  margin-bottom: var(--space-16);
}

.business-link-group:last-child {
  margin-bottom: 0;
}

/* 英語見出しを廃止し、日本語見出し単体を大きく表示する(2026-08発注者フィードバック)。 */
.business-link-group-title {
  margin-bottom: var(--space-6);
  font-size: clamp(1.375rem, 1.1rem + 1.2vw, 1.75rem);
  letter-spacing: 0.02em;
  color: var(--on-navy-text);
}

/* justify-content:start + max-widthのカード(下記)により、3枚に満たないグループでも
   カードが引き伸ばされず、右側に余白が残る形にする(発注者フィードバック)。 */
.business-link-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  justify-content: start;
  gap: var(--space-4);
}

@media (max-width: 900px) {
  .business-link-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .business-link-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/*
 * 発注者フィードバック(2026-08-14、4回目): 写真の上に全テキストを重ねると煩雑なため、
 * 英語見出し(qc-en)/日本語副題(qc-label)のみ写真の上に残し(.business-link-card-photo)、
 * 説明文(.business-link-card-desc)は写真の下、地の紺色(--navy-deep)の帯に分離した。
 */
.business-link-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 360px;
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: var(--navy-deep);
  color: var(--on-navy-text);
  text-decoration: none;
}

.business-link-card:focus-visible {
  outline: 2px solid var(--on-navy-text);
  outline-offset: 2px;
}

/* リンク先を持たないカード(プロパティマネジメント)。以前はopacityを下げて非クリック性を
   示していたが、テキストの色まで暗くなり他カードと不揃いに見える、というフィードバックを
   受けて廃止した。カーソル形状の変化が無いこと(<div>であり<a>ではない)自体で区別する。 */

.business-link-card-photo {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  aspect-ratio: 4 / 3;
  padding: var(--space-4);
  overflow: hidden;
}

.business-link-card-desc {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  padding: var(--space-4);
  font-size: 0.8125rem;
  color: var(--on-navy-muted);
  line-height: 1.6;
}

/* --- サービス詳細 --- */
.service-hero {
  /* background-color(longhand)を使う理由は .hero-section の同コメントを参照。 */
  background-color: var(--navy);
  color: var(--on-navy-text);
  /* 2026-08発注者フィードバック: 紺の帯が大きすぎるとの指摘が続いたため段階的に縮小
     (--space-16=64px → --space-8=32px → --space-4=16px)。さらに、EN/JA間の空白を
     縮めた分(.hero-title-en/.hero-title-ja側の修正)に合わせて、この上下パディングも
     追加で一段階小さくした(--space-4=16px → --space-3=12px)。 */
  padding: var(--space-3) 0;
}

.service-hero h1 {
  color: var(--on-navy-text);
}

/*
 * 2026-08発注者フィードバック: ニュース詳細のタイトル(記事見出しの日本語文)が
 * 通常のh1サイズ(最大--font-size-h1=2.75rem)だと大きすぎたため、
 * h2相当のスケールに縮小する。company-heroの中央寄せ・幅制限も引き継ぐ。
 */
.news-detail-title {
  max-width: 30ch;
  margin: 0 auto;
  font-size: clamp(1.375rem, 1.1rem + 1.4vw, 1.875rem);
}

.service-hero p {
  color: var(--on-navy-muted);
  max-width: 42em;
}

/*
 * 会社概要ヒーロー(2026-08発注者フィードバック): 英語(COMPANY)を主見出し・大きく、
 * 日本語(会社概要)を小さいキャプションにする(.qc-en/.qc-label、News見出しと同じ考え方)。
 * 全体を中央寄せにする(実サイトの会社情報ページを参照)。
 */
.company-hero .container {
  text-align: center;
}

.hero-title-en {
  /* 2026-08発注者フィードバック: EN/JA間の空白が大きすぎるとの指摘。原因はh1のUAデフォルト
     マージン(明示的にリセットしていなかったため、h1自身のfont-sizeに比例した大きな
     margin(約20〜30px)が.hero-title-jaのmargin-top(8px)と相殺(collapse)せず、
     より大きい方が採用されていた)。marginを明示的に0にしてこの見えない原因を取り除く。 */
  margin: 0;
  font-family: var(--font-sans);
  font-weight: 700;
  letter-spacing: 0.04em;
}

/* .service-hero p が max-width:42em を持ち、margin:autoが無いため左寄りになってしまう
   (text-align:centerは箱の中の文字しか中央寄せにしない)。ここで明示的に打ち消す。
   margin-topは意図した空白を .hero-title-en 側で半分(--space-2=8px → --space-1=4px)にした。 */
.hero-title-ja {
  max-width: none;
  margin: var(--space-1) auto 0;
  text-align: center;
  font-size: var(--font-size-caption);
  letter-spacing: 0.08em;
  color: var(--on-navy-muted);
}

.service-section {
  padding: var(--space-12) 0;
  border-bottom: 1px solid var(--line);
}

.service-section h2 {
  margin-bottom: var(--space-6);
}

.pain-point-list,
.value-prop-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-3);
}

.pain-point-list li,
.value-prop-list li {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: var(--space-4);
}

.step-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-4);
  counter-reset: step;
}

.step-list li {
  counter-increment: step;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-4);
  align-items: start;
}

.step-list li::before {
  content: counter(step, decimal-leading-zero);
  font-family: var(--font-serif);
  font-size: 1.5rem;
  color: var(--navy);
}

.achievement-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
}

.achievement-grid dt {
  font-size: var(--font-size-caption);
  color: var(--slate);
}

.achievement-grid dd {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 1.125rem;
}

.cta-section {
  padding: var(--space-16) 0;
  text-align: center;
}

.button-primary {
  display: inline-block;
  background: var(--crimson);
  color: #fff;
  text-decoration: none;
  padding: var(--space-3) var(--space-8);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-body);
}

.button-secondary {
  display: inline-block;
  border: 1px solid var(--navy);
  color: var(--navy);
  text-decoration: none;
  padding: var(--space-3) var(--space-8);
  border-radius: var(--radius-sm);
}

/*
 * --- 会社概要ページ ---
 * .service-hero/.service-section/.button-primary等はサービス詳細と共用。
 * 以下は会社概要ページ固有のコンポーネント(経営理念/代表挨拶・定義テーブル・地図)。
 * 実サイト(https://invest-online.co.jp/company/)の構成(段組みせず縦積み、写真は
 * 経営理念本文の下にコンテナ幅いっぱいで掲載)を踏襲する(2026-08発注者フィードバック)。
 *
 * 実サイトの会社情報ページはコンテンツ全体を中央寄せの940px幅カラムに収める構成
 * (company.css の #company{text-align:center} + .content{width:940px;margin:0 auto})
 * のため、本サイトでも .container--narrow で内容全体を細い中央カラムに収める。
 * ただし本文(mission-body/vision paragraph)やテーブルのセルは実サイト同様に左揃え/
 * 両端揃えのままとし(可読性のため)、見出し・タグライン・写真・地図など短い/ブロック要素の
 * みを中央寄せにする。
 */
.container--narrow {
  max-width: 720px;
}

.president-section .mission-catch,
.president-section .vision-catch,
.service-section > .container--narrow > h2 {
  text-align: center;
}

/* 「会社情報」「アクセス」見出しがh2標準の明朝体だと硬い印象になる、というフィードバック
   により、タグライン(.mission-catch)と同じ書体・サイズ(ゴシック体/h3相当)に揃える。 */
.service-section > .container--narrow > h2 {
  font-family: var(--font-sans);
  font-size: var(--font-size-h3);
}

.president-photo {
  margin: var(--space-6) 0;
}

.president-photo img {
  display: block;
  width: 100%;
  max-width: 940px;
  height: auto;
  border-radius: var(--radius-sm);
}

/* 実サイトのタグライン相当。h2標準の大見出しサイズだと強すぎる、というフィードバックを
   受け、h3相当のサイズに縮小した。明朝体だと硬い(とげとげしい)印象になるとのフィードバックも
   受け、ゴシック体(--font-sans)に変更した。 */
.mission-catch {
  font-family: var(--font-sans);
  font-size: var(--font-size-h3);
  margin-bottom: var(--space-4);
}

.mission-body {
  color: var(--ink);
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-8);
  border-bottom: 1px solid var(--line);
}

.vision-catch {
  font-family: var(--font-serif);
  font-size: 1.125rem;
  color: var(--navy);
  margin-bottom: var(--space-4);
}

.president-signature {
  margin-top: var(--space-6);
  font-family: var(--font-serif);
  text-align: right;
}

/*
 * 会社情報テーブル(定義リスト形式)。役員・事業内容・免許・加盟団体等、項目によっては
 * 複数行の値を持つため、値側は<br>区切りの複数行を許容する(装飾を抑え、罫線のみで区切る)。
 */
.info-table {
  width: 100%;
  border-collapse: collapse;
}

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

.info-table th,
.info-table td {
  text-align: left;
  vertical-align: top;
  padding: var(--space-3) var(--space-2);
  font-weight: normal;
  line-height: 1.7;
}

.info-table th {
  width: 12em;
  color: var(--slate);
  font-size: var(--font-size-caption);
}

@media (max-width: 720px) {
  .info-table th,
  .info-table td {
    display: block;
    width: auto;
    padding: 0 var(--space-2);
  }

  .info-table th {
    padding-top: var(--space-3);
  }

  .info-table td {
    padding-bottom: var(--space-3);
  }
}

/* アクセス(Googleマップ埋め込み)。APIキー不要のkeyless埋め込み形式を使用。 */
.map-block {
  max-width: 640px;
  margin: 0 auto;
  text-align: center;
}

.map-embed {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 0;
  border-radius: var(--radius-sm);
}

.map-link {
  display: inline-block;
  margin-top: var(--space-2);
  color: var(--navy);
  font-size: var(--font-size-caption);
}

.access-address-line {
  margin-top: var(--space-2);
  color: var(--slate);
}

/* アクセスが会社概要ページ最後のセクションのため、.footerのmargin-topと合算して
   余白が過大にならないよう下パディングを持たせない(.news-sectionと同じ考え方)。 */
.access-section {
  padding-bottom: 0;
  border-bottom: none;
}

/* --- お問い合わせフォーム --- */
.contact-form {
  display: grid;
  gap: var(--space-6);
  max-width: 40em;
  margin-top: var(--space-8);
}

.form-field {
  display: grid;
  gap: var(--space-2);
}

.form-field label {
  font-size: var(--font-size-caption);
  color: var(--slate);
}

.form-field .required {
  color: var(--crimson);
  font-size: var(--font-size-caption);
  margin-left: var(--space-2);
}

.form-field input,
.form-field textarea {
  font: inherit;
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel);
  color: var(--ink);
}

.form-field input:focus,
.form-field textarea:focus {
  outline: 2px solid var(--navy);
  outline-offset: 1px;
}

/*
 * honeypot(スパム対策用の隠しフィールド)。
 * display:none だけでは一部のボットが「非表示要素は無視する」処理を素通りするため、
 * 画面外への物理的な配置(position:absolute + 画面外座標 + overflow:hidden)で対応する。
 * aria-hidden/tabindexはHTML側で付与し、スクリーンリーダー/キーボード操作からも隠す。
 */
.hp-field {
  position: absolute;
  left: -9999px;
  top: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.form-note {
  font-size: var(--font-size-caption);
  color: var(--slate);
}

.form-result {
  font-size: 0.9375rem;
  min-height: 1.5em;
}

.form-result.is-success {
  color: #1a7f37;
}

.form-result.is-error {
  color: var(--crimson);
}

/*
 * お問い合わせフォームの送信ボタンのみ、.button-primary標準のクリムゾンではなく紺にする
 * (2026-08発注者フィードバック「赤ではなく、サイト全体と調和した色に」)。他ページのCTA
 * (会社概要・サービス詳細等の.button-primary)は引き続きクリムゾンのまま変更しない。
 */
#cf-submit {
  background: var(--navy);
}

#cf-submit:hover,
#cf-submit:focus-visible {
  background: var(--navy-deep);
}

#cf-submit:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

/*
 * お問い合わせページ(2026-08-14): 実サイトの「ご入居者様」/「ご入居者様以外」の2択切替UIを
 * 本サイトの配色で再現する。選択中のボックスは紺で塗りつぶし、非選択は輪郭線のみの白背景
 * (実サイトはダークグレーで塗りつぶす方式だったが、本サイトのブランドカラーに合わせた)。
 */
.contact-select-area {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-6);
  margin-bottom: var(--space-10);
}

.contact-select-box {
  display: block;
  width: 100%;
  padding: var(--space-8) var(--space-4);
  border: 1px solid var(--navy);
  border-radius: var(--radius-sm);
  background: var(--panel);
  color: var(--navy);
  font: inherit;
  font-size: 1rem;
  line-height: 1.6;
  text-align: center;
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.contact-select-box:hover,
.contact-select-box:focus-visible {
  border-color: var(--crimson);
}

.contact-select-box.is-active {
  background: var(--navy);
  color: var(--on-navy-text);
  border-color: var(--navy);
}

.contact-panel {
  text-align: center;
}

.contact-panel h2 {
  margin-bottom: var(--space-4);
}

.contact-tel {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--navy);
  text-decoration: none;
  margin-bottom: var(--space-4);
}

.contact-tel:hover,
.contact-tel:focus-visible {
  color: var(--crimson);
}

.contact-panel p {
  color: var(--slate);
  margin-bottom: var(--space-2);
}

.contact-panel .contact-form {
  text-align: left;
  margin-left: auto;
  margin-right: auto;
}

@media (max-width: 560px) {
  .contact-select-area {
    grid-template-columns: 1fr;
  }
}
