/*
Theme Name: Running Kanagawa
Theme URI: https://runningkanagawa.com
Author: Running Kanagawa
Description: 神奈川県走友会連盟 公式サイト用テーマ。マラソン大会の情報発信・エントリー・ボランティア募集を担う公式コーポレートサイト。
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: runningkanagawa
*/

/* ==========================================================================
   1. リセット & ベース
   ========================================================================== */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif;
  font-weight: 400;
  line-height: 1.7;
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif;
  font-weight: 900;
  letter-spacing: 0.04em;
}

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

a {
  color: inherit;
  text-decoration: none;
  transition: opacity 0.2s ease, color 0.2s ease;
}

a:hover {
  opacity: 0.75;
}

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

button {
  font-family: inherit;
  cursor: pointer;
  border: none;
  background: none;
}

/* ==========================================================================
   2. デザイントークン
   ========================================================================== */
:root {
  /* Brand colors（Figmaグローバルカラー） */
  --color-primary: #1E6FBF;        /* メイン：スカイブルー（ベースカラー） */
  --color-primary-light: #62B1FF;  /* サブ：水色（グラデーション終了色） */
  --color-primary-dark: #0F4D8C;   /* ダーク：濃いブルー（フッター・強調用） */
  --color-accent: #F07800;          /* CTA：オレンジ（エントリーボタン） */
  --color-accent-hover: #C95F00;

  /* Neutral colors */
  --color-text: #2a2a2a;
  --color-text-muted: #6b6b6b;
  --color-border: #d9e3ee;
  --color-bg: #F0F5FB;              /* ページ背景：薄い水色 */
  --color-bg-alt: #ffffff;          /* 反転背景：白 */
  --color-bg-section: #ffffff;      /* セクション交互配色用 */

  /* Semantic colors */
  --color-tag-bg: #fff4e6;
  --color-tag-text: #C95F00;
  --color-info-bg: #d8e9f8;
  --color-info-text: #0F4D8C;

  /* Layout */
  --container-max: 1200px;
  --container-padding: 24px;
  --header-height: 80px;

  /* Spacing scale */
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 40px;
  --space-2xl: 64px;
  --space-3xl: 96px;

  /* Typography（Figmaグローバルフォント） */
  --font-jp: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif;
  --font-en: "Montserrat", "Helvetica Neue", Arial, sans-serif;
  /* カジュアル系ディスプレイフォント（親善・ハーフのヒーロー大見出し等） */
  --font-display: "Plus Jakarta Sans", "Montserrat", "Helvetica Neue", Arial, sans-serif;

  /* Border radius */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 16px;

  /* Shadow */
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.08);
  --shadow-lg: 0 8px 24px rgba(0,0,0,0.12);
}

/* ==========================================================================
   3. レイアウトユーティリティ
   ========================================================================== */
.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding-left: var(--container-padding);
  padding-right: var(--container-padding);
}

.section {
  padding: var(--space-3xl) 0;
}

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

/* 上下のCTAバナーに挟まれた間挿しセクション用 (例: TOPの大会事務局) */
.section--compact {
  padding: 56px 0;
}

/* ==========================================================================
   セクション見出し（B+Cミックス装飾）
   - __en  → 平行四辺形バッジ（B: clip-path skew）
   - __ja  → 斜めグラデ下線（C: skewX(-30deg) のアクセント線）
   front-page では --color-accent / --color-primary を採用
   ========================================================================== */
.section-title {
  margin: 0 0 var(--space-xl);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.section-title__en {
  display: inline-block;
  font-family: var(--font-en);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.3em;
  color: #fff;
  background: var(--color-accent);
  padding: 6px 22px 5px;
  margin-bottom: 18px;
  text-transform: uppercase;
  clip-path: polygon(8px 0, 100% 0, calc(100% - 8px) 100%, 0 100%);
}

.section-title__ja {
  display: inline-block;
  position: relative;
  font-size: 2rem;
  font-weight: 900;
  color: var(--color-primary);
  letter-spacing: 0.05em;
  padding-bottom: 14px;
  margin: 0; /* h2のブラウザデフォルト余白をリセット (span使用箇所と統一) */
}

.section-title__ja::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%) skewX(-30deg);
  width: 88px;
  height: 5px;
  background: linear-gradient(90deg, var(--color-accent), var(--color-primary));
  border-radius: 1px;
}

/* dark-bg variant */
.section-title--light .section-title__ja { color: #fff; }
.section-title--light .section-title__ja::after {
  background: linear-gradient(90deg, var(--color-primary-light), var(--color-accent));
}

/* ==========================================================================
   3.5 SVGアイコン (rk_icon helper の出力)
   - 1em サイズ・currentColor で本文/ボタンに自然に並ぶ
   - .btn は inline-flex + gap なので追加マージン不要
   - 見出し等で使う場合 inline-flex で隙間調整
   ========================================================================== */
.rk-icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  flex-shrink: 0;
}

/* ヘッダ/見出しに直接置く時は隙間を効かせる */
h1 .rk-icon,
h2 .rk-icon,
h3 .rk-icon,
h4 .rk-icon,
.section-title__ja .rk-icon {
  margin-right: 0.4em;
}

/* サイズバリエーション (任意) */
.rk-icon--lg { width: 1.4em; height: 1.4em; vertical-align: -0.3em; }
.rk-icon--sm { width: 0.85em; height: 0.85em; }

/* ==========================================================================
   4. ボタン
   ========================================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-sm);
  padding: 14px 32px;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  border-radius: var(--radius-sm);
  transition: all 0.2s ease;
  white-space: nowrap;
  cursor: pointer;
}

.btn--primary {
  background: var(--color-accent);
  color: #fff;
}

.btn--primary:hover {
  background: var(--color-accent-hover);
  opacity: 1;
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

.btn--outline {
  background: transparent;
  color: #fff;
  border: 2px solid #fff;
}

.btn--outline:hover {
  background: #fff;
  color: var(--color-primary);
  opacity: 1;
}

.btn--secondary {
  background: var(--color-primary);
  color: #fff;
}

.btn--secondary:hover {
  background: var(--color-primary-light);
  opacity: 1;
}

.btn--small {
  padding: 8px 20px;
  font-size: 0.875rem;
}

.btn--large {
  padding: 18px 48px;
  font-size: 1.125rem;
}

/* ==========================================================================
   5. ヘッダー
   ========================================================================== */
.site-header {
  position: sticky;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: #fff;
  border-bottom: 1px solid var(--color-border);
  box-shadow: 0 1px 0 rgba(0,0,0,0.02);
}

/* トップバー（細い帯） */
.topbar {
  background: #fff;
  border-bottom: 1px solid var(--color-border);
}

.topbar__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 8px var(--container-padding);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
}

.topbar__tagline {
  margin: 0;
  font-size: 0.75rem;
  color: var(--color-text-muted);
  letter-spacing: 0.02em;
}

.topbar__nav {
  display: flex;
  gap: var(--space-lg);
  flex-shrink: 0;
}

.topbar__nav a {
  font-size: 0.75rem;
  color: var(--color-text);
  font-weight: 500;
}

.topbar__nav a:hover {
  color: var(--color-primary);
  opacity: 1;
}

/* メインヘッダー */
.site-header__main {
  background: #fff;
}

.site-header__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 16px var(--container-padding);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
}

.site-logo {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  flex-shrink: 0;
  text-decoration: none;
}

.site-logo .custom-logo {
  max-height: 56px;
  width: auto;
}

/* ロゴ未設定時のテキストロゴ（プレースホルダー） */
.site-logo__mark {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  padding: 8px 14px;
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
  color: #fff;
  border-radius: 6px;
  letter-spacing: 0.02em;
  width: auto;
  height: auto;
  font-size: 1rem;
}

.site-logo__mark-en {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 1.1rem;
  letter-spacing: 0.04em;
}

.site-logo__mark-jp {
  font-weight: 900;
  font-size: 1rem;
}

.site-logo__mark--footer {
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}

/* グローバルナビ */
.global-nav {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
  flex: 1;
  justify-content: center;
}

.global-nav__list {
  display: flex;
  gap: var(--space-lg);
  align-items: center;
  flex-wrap: nowrap;
}

.global-nav__list li {
  flex-shrink: 0;
}

.global-nav__link,
.global-nav__list a {
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--color-text);
  position: relative;
  padding: 8px 0;
  white-space: nowrap;
}

.global-nav__link:hover,
.global-nav__list a:hover {
  color: var(--color-primary);
  opacity: 1;
}

.global-nav__list .current-menu-item > a::after,
.global-nav__link.is-current::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -4px;
  height: 2px;
  background: var(--color-accent);
}

/* ヘッダー右端のアクション（エントリーDropdown + IG） */
.header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  flex-shrink: 0;
}

.header-sns {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  color: var(--color-primary);
  transition: color 0.2s ease;
}

.header-sns:hover {
  color: var(--color-accent);
  opacity: 1;
}

/* SNSアイコン横並びグループ(Instagram + X) */
.header-sns-group {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.footer-sns-group {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  margin-top: 8px;
}

/* エントリードロップダウン */
.entry-dropdown {
  position: relative;
}

.entry-dropdown__toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  font-weight: 700;
  font-size: 0.9375rem;
}

.entry-dropdown__caret {
  font-size: 0.625rem;
  transition: transform 0.2s ease;
}

.entry-dropdown.is-open .entry-dropdown__caret {
  transform: rotate(180deg);
}

.entry-dropdown__menu {
  position: absolute;
  top: calc(100% + 12px);
  right: 0;
  min-width: 280px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 8px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  z-index: 200;
}

.entry-dropdown.is-open .entry-dropdown__menu,
.entry-dropdown:hover .entry-dropdown__menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.entry-dropdown__menu li {
  border-radius: var(--radius-sm);
  overflow: hidden;
}

.entry-dropdown__menu li + li {
  margin-top: 2px;
}

.entry-dropdown__menu a {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 12px 16px;
  border-radius: var(--radius-sm);
  transition: background 0.15s ease;
}

.entry-dropdown__menu a:hover {
  background: var(--color-bg);
  opacity: 1;
}

.entry-dropdown__title {
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--color-primary);
}

.entry-dropdown__sub {
  font-size: 0.75rem;
  color: var(--color-accent);
  font-weight: 500;
}

/* エントリー終了済みの項目（親善＝大会終了）は募集中に見えないよう控えめに */
.entry-dropdown__link--closed .entry-dropdown__title { color: #6b7280; }
.entry-dropdown__link--closed .entry-dropdown__sub { color: #8a93a3; }

/* ==========================================================================
   6. ヒーロースライダー
   ========================================================================== */
.hero-slider {
  position: relative;
  height: 640px;
  overflow: hidden;
  background: var(--color-primary-dark);
  color: #fff;
}

.hero-slider__track {
  position: relative;
  width: 100%;
  height: 100%;
}

.hero-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.8s ease, visibility 0.8s;
  pointer-events: none;
}

.hero-slide.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

/* スライド背景：実画像があればそれを優先、無ければグラデーション */
.hero-slide__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 1;
}

.hero-slide--half .hero-slide__bg {
  background-image: url('assets/images/hero-half.png');
}

.hero-slide--shinzen .hero-slide__bg {
  background-image: url('assets/images/hero-shinzen.jpg?v=2');
}

.hero-slide--kanagawa .hero-slide__bg {
  background-image: url('assets/images/hero-kanagawa.png');
}

/* 画像が用意されている場合はカスタムプロパティで上書き可能 */
.hero-slide[style*="--bg-image"] .hero-slide__bg {
  background-image: var(--bg-image), linear-gradient(135deg, rgba(0,0,0,0.3), rgba(0,0,0,0.5));
}

/* 画像を活かす：左から右に薄くフェードする読みやすさ用オーバーレイ */
.hero-slide__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.35) 35%, rgba(0,0,0,0.05) 65%, rgba(0,0,0,0) 100%);
  z-index: 2;
  pointer-events: none;
}

.hero-slide__inner {
  position: absolute;
  z-index: 3;
  left: 0;
  bottom: 0;
  padding: var(--space-xl) var(--container-padding) var(--space-xl) 96px;
  max-width: 760px;
  text-align: left;
  color: #fff;
}

/* タグライン（ハーフのみ「重力の先へ。Plus Ultra」） */
.hero-slide__tagline {
  display: flex;
  align-items: baseline;
  gap: 0.6em;
  margin: 0 0 var(--space-sm);
  text-shadow: 0 2px 8px rgba(0,0,0,0.5);
}

.hero-slide__tagline-jp {
  font-family: var(--font-jp);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: #CDFF00;
  text-shadow: 0 0 12px rgba(205, 255, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.6);
}

.hero-slide__tagline-en {
  font-family: var(--font-en);
  font-style: italic;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #CDFF00;
  opacity: 0.95;
  text-shadow: 0 0 16px rgba(205, 255, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.5);
}

/* 第◯回 */
.hero-slide__edition {
  display: inline-block;
  font-family: var(--font-jp);
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  margin: 0 0 var(--space-xs);
  padding: 4px 12px;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.4);
  border-radius: 2px;
  text-shadow: none;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

/* 日本語タイトル（主役） */
.hero-slide__title-jp {
  font-family: var(--font-jp);
  font-size: clamp(1.625rem, 3.6vw, 3rem);
  font-weight: 900;
  letter-spacing: 0.02em;
  line-height: 1.1;
  margin: 0 0 var(--space-xs);
  text-shadow: 0 4px 20px rgba(0,0,0,0.7);
  white-space: nowrap;
}

/* 英語タイトル（装飾） */
.hero-slide__title-en {
  font-family: var(--font-en);
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  margin: 0 0 var(--space-md);
  opacity: 0.85;
  text-shadow: 0 2px 8px rgba(0,0,0,0.5);
}

/* 会場・種目ライン */
.hero-slide__venue-line {
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  margin: 0 0 var(--space-md);
  opacity: 0.95;
  text-shadow: 0 2px 8px rgba(0,0,0,0.5);
}

.hero-slide__meta-sep {
  display: inline-block;
  margin: 0 0.5em;
  opacity: 0.6;
}

/* カウントダウン（BMW/北海道スタイルの4ボックス） */
.hero-countdown {
  margin: 0 0 var(--space-md);
}

.hero-countdown__boxes {
  display: flex;
  gap: 6px;
}

.hero-countdown__boxes[hidden],
.hero-countdown__finished[hidden] {
  display: none;
}

.hero-countdown__box {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  padding: 8px 12px 6px;
  border-radius: 4px;
  min-width: 64px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.25);
}

.hero-countdown__value {
  font-family: var(--font-en);
  font-size: 1.75rem;
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary, #001D54);
  font-variant-numeric: tabular-nums;
}

.hero-countdown__unit-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #6b7280;
  margin-top: 4px;
}

.hero-countdown__finished {
  display: inline-block;
  padding: 10px 24px;
  background: rgba(0,0,0,0.55);
  border: 1px solid rgba(255,255,255,0.4);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: #fff;
  border-radius: 4px;
}

.hero-slide__actions {
  display: flex;
  gap: var(--space-md);
  justify-content: flex-start;
  flex-wrap: wrap;
}

/* 右下のポスター風日付スタンプ（多段） */
.hero-slide__stamp {
  position: absolute;
  z-index: 3;
  right: var(--container-padding);
  bottom: var(--space-xl);
  color: #fff;
  text-shadow: 0 4px 24px rgba(0,0,0,0.6);
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  font-family: var(--font-en);
  line-height: 1;
}

.hero-slide__stamp-year {
  font-size: 1.5rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  margin-bottom: -0.1em;
  margin-right: 0.6em;
  opacity: 0.95;
}

.hero-slide__stamp-md {
  font-size: clamp(2.5rem, 6vw, 5rem);
  font-weight: 900;
  letter-spacing: 0.01em;
  display: inline-flex;
  align-items: baseline;
  gap: 0.15em;
  margin-top: 0;
}

.hero-slide__stamp-dow {
  font-size: 0.32em;
  font-weight: 700;
  letter-spacing: 0.15em;
  opacity: 0.95;
}

.hero-slide__stamp-time {
  font-style: italic;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  margin-top: 6px;
  text-transform: lowercase;
}

/* ==========================================================================
   スポンサーセクション（SUPPORTED BY）
   ========================================================================== */
.sponsors {
  background: #fff;
  padding: var(--space-2xl) 0;
  border-bottom: 1px solid var(--color-border);
}

.sponsors__header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: var(--space-lg);
  gap: var(--space-md);
  flex-wrap: wrap;
}

.sponsors__label {
  font-family: var(--font-en);
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.3em;
  color: var(--color-text-muted, #6b7280);
  margin: 0;
  text-transform: uppercase;
}

.sponsors__more {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-primary);
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.sponsors__more:hover {
  opacity: 0.7;
}

.sponsors__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}

.sponsor-slot {
  display: block;
}

.sponsor-slot__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 4px;
  padding: 16px;
  text-decoration: none;
  transition: border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

a.sponsor-slot__inner:hover {
  border-color: var(--color-primary);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.sponsor-slot__inner img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  filter: grayscale(20%);
  transition: filter 0.2s ease;
}

a.sponsor-slot__inner:hover img {
  filter: grayscale(0%);
}

.sponsor-slot__placeholder {
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: #94a3b8;
}

@media (max-width: 1024px) {
  .sponsors__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 640px) {
  .sponsors__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
}

/* ナビゲーションボタン（左右） */
.hero-slider__nav {
  position: absolute;
  top: 67%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.3);
  color: #fff;
  font-size: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 5;
  transition: background 0.2s ease, transform 0.2s ease;
  line-height: 1;
}

.hero-slider__nav:hover {
  background: rgba(255,255,255,0.3);
  transform: translateY(-50%) scale(1.05);
}

.hero-slider__nav--prev { left: 24px; }
.hero-slider__nav--next { right: 24px; }

/* ドットインジケーター */
.hero-slider__dots {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 10px;
  z-index: 5;
}

.hero-slider__dot {
  width: 36px;
  height: 4px;
  border-radius: 2px;
  background: rgba(255,255,255,0.4);
  cursor: pointer;
  transition: background 0.2s ease, width 0.2s ease;
}

.hero-slider__dot:hover {
  background: rgba(255,255,255,0.7);
}

.hero-slider__dot.is-active {
  background: var(--color-accent);
  width: 56px;
}

/* ==========================================================================
   7. クイックナビ（タブ）
   ========================================================================== */
.quick-nav {
  background: #fff;
  border-bottom: 1px solid var(--color-border);
  padding: var(--space-md) 0;
}

.quick-nav__list {
  display: flex;
  gap: var(--space-md);
  justify-content: center;
  flex-wrap: wrap;
}

.quick-nav__item {
  padding: 10px 24px;
  background: var(--color-bg-alt);
  border-radius: var(--radius-md);
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text);
  transition: all 0.2s ease;
}

.quick-nav__item:hover {
  background: var(--color-primary);
  color: #fff;
  opacity: 1;
}

/* ==========================================================================
   8. お知らせ（News）
   ========================================================================== */
.news-list {
  border-top: 1px solid var(--color-border);
}

.news-item {
  display: grid;
  grid-template-columns: 120px 100px 1fr;
  gap: var(--space-lg);
  align-items: center;
  padding: var(--space-md) 0;
  border-bottom: 1px solid var(--color-border);
}

.news-item__date {
  font-size: 0.875rem;
  color: var(--color-text-muted);
  font-weight: 500;
}

.news-item__category {
  font-size: 0.75rem;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: var(--radius-sm);
  text-align: center;
  letter-spacing: 0.05em;
}

.news-item__category--info {
  background: var(--color-info-bg);
  color: var(--color-info-text);
}

.news-item__category--important {
  background: #fee2e2;
  color: #991b1b;
}

.news-item__category--event {
  background: var(--color-tag-bg);
  color: var(--color-tag-text);
}

.news-item__category--race {
  background: #d1fae5;
  color: #065f46;
}

/* 大会別カテゴリ（旧サイト由来・残して活用）*/
.news-item__category--news_half {
  background: #dbeafe;
  color: #1e40af;
}

.news-item__category--news_shinzen {
  background: #fee2e2;
  color: #b91c1c;
}

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

.news-item__title {
  font-size: 0.9375rem;
  color: var(--color-text);
}

.news-item__title:hover {
  color: var(--color-primary);
  opacity: 1;
}

/* ==========================================================================
   9. レースカード（開催大会）
   ========================================================================== */
.race-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-lg);
}

.race-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: all 0.2s ease;
  display: flex;
  flex-direction: column;
}

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

.race-card__image {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  background: linear-gradient(135deg, #cbd5e1 0%, #94a3b8 100%);
  overflow: hidden;
}

/* 画像右上のエンブレムバッジ（親善・ハーフのみ） */
/* .race-card__image img より詳細度を上げて 100%/object-fit:cover の継承を打ち消す */
.race-card__image .race-card__badge {
  position: absolute;
  inset: 12px auto auto 12px;
  width: clamp(64px, 22%, 94px);
  height: auto;
  object-fit: contain;
  transition: none;
  z-index: 2;
  filter: drop-shadow(0 3px 8px rgba(0, 0, 0, 0.38));
  pointer-events: none;
}
.race-card:hover .race-card__image .race-card__badge {
  transform: none;
}
/* 親善エンブレム(自由の女神)はSVG内の余白が多く小さく見えるため、1.5倍にしてハーフの見た目と揃える */
.race-card--shinzen .race-card__image .race-card__badge {
  width: clamp(96px, 33%, 141px);
}

.race-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}

.race-card:hover .race-card__image img {
  transform: scale(1.05);
}

/* 大会ごとの最適クロップ位置 */
.race-card--shinzen .race-card__image img {
  object-position: 70% center;
}

.race-card--half .race-card__image img {
  object-position: 50% center;
}

.race-card--kanagawa .race-card__image img {
  object-position: 65% center;
}

.race-card__body {
  padding: var(--space-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  flex: 1;
}

.race-card__title {
  font-size: 1.125rem;
  font-weight: 900;
  color: var(--color-primary);
  margin: 0;
  line-height: 1.4;
}

.race-card__date {
  font-size: 0.875rem;
  color: var(--color-text-muted);
}

.race-card__meta {
  font-size: 0.875rem;
  color: var(--color-text);
  margin: var(--space-sm) 0;
}

.race-card__footer {
  margin-top: auto;
  padding-top: var(--space-md);
}

/* ==========================================================================
   10. テーブル（開催日程）
   ========================================================================== */
.schedule-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: #fff;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

.schedule-table thead {
  background: var(--color-primary);
  color: #fff;
}

.schedule-table th,
.schedule-table td {
  padding: var(--space-md) var(--space-lg);
  text-align: left;
  font-size: 0.9375rem;
}

.schedule-table th {
  font-weight: 600;
  letter-spacing: 0.05em;
}

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

.schedule-table tbody tr:last-child {
  border-bottom: none;
}

.schedule-table tbody tr:hover {
  background: var(--color-bg-alt);
}

.schedule-table .btn {
  padding: 8px 20px;
  font-size: 0.8125rem;
}

/* 情報テーブル（縦型） */
.info-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}

.info-table th,
.info-table td {
  padding: var(--space-md) var(--space-lg);
  text-align: left;
  font-size: 0.9375rem;
  border-bottom: 1px solid var(--color-border);
  vertical-align: top;
}

.info-table th {
  width: 200px;
  background: var(--color-bg-alt);
  font-weight: 600;
  color: var(--color-primary);
}

/* ==========================================================================
   11. ギャラリー
   ========================================================================== */
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-md);
}

.gallery-item {
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, #cbd5e1 0%, #94a3b8 100%);
  border-radius: var(--radius-md);
  overflow: hidden;
  position: relative;
  cursor: pointer;
}

.gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}

.gallery-item:hover img {
  transform: scale(1.05);
}

.gallery-actions {
  text-align: center;
  margin-top: var(--space-xl);
}

/* ==========================================================================
   12. CTA バナー（ボランティア募集等）
   ========================================================================== */
.cta-banner {
  background:
    linear-gradient(135deg, rgba(15, 77, 140, 0.78) 0%, rgba(30, 111, 191, 0.65) 50%, rgba(98, 177, 255, 0.55) 100%),
    url('assets/images/vol-hero.png') center 85% / cover no-repeat;
  color: #fff;
  padding: 140px 0;
}

/* お問い合わせバナー（背景画像のみ差し替え） */
.cta-banner--contact {
  background:
    linear-gradient(135deg, rgba(15, 77, 140, 0.78) 0%, rgba(30, 111, 191, 0.65) 50%, rgba(98, 177, 255, 0.55) 100%),
    url('assets/images/contact-hero.png') center / cover no-repeat;
}

.cta-banner__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-xl);
  flex-wrap: wrap;
}

.cta-banner__eyebrow {
  margin: 0 0 8px;
  font-family: var(--font-en);
  font-size: 0.8125rem;
  letter-spacing: 0.3em;
  font-weight: 700;
  opacity: 0.9;
  text-transform: uppercase;
}

.cta-banner__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.cta-banner__text h3 {
  font-size: 1.5rem;
  margin: 0 0 var(--space-xs);
  font-weight: 900;
}

.cta-banner__text p {
  margin: 0;
  font-size: 0.9375rem;
  opacity: 0.9;
}

/* スマホ：お問い合わせCTAのテキスト＆ボタンを中央寄せに */
@media (max-width: 768px) {
  .cta-banner__inner { flex-direction: column; text-align: center; }
  .cta-banner__actions { justify-content: center; width: 100%; }
}

/* ==========================================================================
   13. お問い合わせ・事務局情報
   ========================================================================== */
.office-info {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-2xl);
  align-items: start;
}

.office-info__image {
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 100%);
  border-radius: var(--radius-md);
  overflow: hidden;
  position: relative;
}

.office-info__image iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

.office-info__details dl {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: var(--space-sm) var(--space-md);
  margin: 0;
}

.office-info__details dt {
  font-weight: 600;
  color: var(--color-primary);
  font-size: 0.875rem;
}

.office-info__details dd {
  margin: 0;
  font-size: 0.9375rem;
}

/* ==========================================================================
   14. フォーム
   ========================================================================== */
.contact-form {
  max-width: 720px;
  margin: 0 auto;
}

.form-group {
  margin-bottom: var(--space-lg);
}

.form-label {
  display: block;
  font-size: 0.9375rem;
  font-weight: 600;
  margin-bottom: var(--space-sm);
  color: var(--color-primary);
}

.form-label .required {
  display: inline-block;
  margin-left: var(--space-sm);
  font-size: 0.6875rem;
  background: #ef4444;
  color: #fff;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  font-weight: 600;
  vertical-align: middle;
}

.form-input,
.form-textarea,
.form-select {
  width: 100%;
  padding: 12px 16px;
  font-size: 1rem;
  font-family: inherit;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--color-text);
  transition: border-color 0.2s ease;
}

.form-input:focus,
.form-textarea:focus,
.form-select:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(26, 45, 107, 0.1);
}

.form-textarea {
  min-height: 160px;
  resize: vertical;
}

.form-actions {
  text-align: center;
  margin-top: var(--space-xl);
}

/* ==========================================================================
   15. コンセプト・動画セクション
   ========================================================================== */
.concept {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: var(--space-xl);
  align-items: center;
}

.concept__text p {
  font-size: 0.9375rem;
  line-height: 1.9;
  margin: 0 0 var(--space-md);
  color: var(--color-text);
}

.concept__media {
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, #94a3b8 0%, #64748b 100%);
  border-radius: var(--radius-md);
  position: relative;
  overflow: hidden;
}

.concept__media::after {
  content: "▶";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 64px;
  height: 64px;
  background: rgba(255,255,255,0.9);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-primary);
  font-size: 1.5rem;
  padding-left: 4px;
}

/* ==========================================================================
   16. 大会の見方（特徴アイコン）
   ========================================================================== */
.feature-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-lg);
}

.feature-card {
  text-align: center;
  padding: var(--space-lg);
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}

.feature-card__icon {
  width: 64px;
  height: 64px;
  margin: 0 auto var(--space-md);
  background: var(--color-bg-alt);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.75rem;
}

.feature-card__title {
  font-size: 1rem;
  font-weight: 900;
  margin: 0 0 var(--space-sm);
  color: var(--color-primary);
}

.feature-card__text {
  font-size: 0.8125rem;
  color: var(--color-text-muted);
  margin: 0;
  line-height: 1.6;
}

/* ==========================================================================
   17. 参加者の声
   ========================================================================== */
.voices {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-lg);
}

.voice-card {
  padding: var(--space-lg);
  background: var(--color-bg-alt);
  border-left: 4px solid var(--color-accent);
  border-radius: var(--radius-sm);
}

.voice-card__quote {
  font-size: 0.9375rem;
  line-height: 1.8;
  margin: 0 0 var(--space-md);
  color: var(--color-text);
}

.voice-card__author {
  font-size: 0.8125rem;
  color: var(--color-text-muted);
  font-weight: 600;
}

/* ==========================================================================
   18. FAQ
   ========================================================================== */
.faq-list {
  max-width: 900px;
  margin: 0 auto;
}

.faq-item {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-md);
  background: #fff;
  overflow: hidden;
}

.faq-item__question {
  width: 100%;
  padding: var(--space-md) var(--space-lg);
  text-align: left;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--color-primary);
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #fff;
  transition: background 0.2s ease;
}

.faq-item__question:hover {
  background: var(--color-bg-alt);
}

.faq-item__question::before {
  content: "Q.";
  font-family: var(--font-en);
  color: var(--color-accent);
  margin-right: var(--space-md);
  font-size: 1.125rem;
  font-weight: 500;
}

.faq-item__icon {
  margin-left: auto;
  transition: transform 0.2s ease;
}

.faq-item.is-open .faq-item__icon {
  transform: rotate(180deg);
}

.faq-item__answer {
  display: none;
  padding: 0 var(--space-lg) var(--space-md);
  font-size: 0.875rem;
  line-height: 1.8;
  color: var(--color-text-muted);
}

.faq-item.is-open .faq-item__answer {
  display: block;
}

/* ==========================================================================
   19. 料金テーブル
   ========================================================================== */
.pricing {
  background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
  padding: var(--space-xl);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-lg);
  text-align: center;
}

.pricing__label {
  font-size: 0.75rem;
  letter-spacing: 0.2em;
  color: var(--color-tag-text);
  font-weight: 700;
}

.pricing__deadline {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--color-primary);
  margin-top: var(--space-xs);
}

/* ==========================================================================
   20. フッター
   ========================================================================== */
.site-footer {
  margin-top: var(--space-3xl);
}

/* メインフッター（青→水色グラデ） */
.site-footer__main {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
  color: #fff;
  padding: var(--space-2xl) 0;
}

.footer-cols {
  display: grid;
  grid-template-columns: repeat(4, 1fr) auto;
  gap: var(--space-xl);
  align-items: start;
}

.footer-col__title {
  font-size: 0.9375rem;
  font-weight: 900;
  margin: 0 0 var(--space-md);
  padding-bottom: var(--space-sm);
  border-bottom: 1px solid rgba(255,255,255,0.3);
  letter-spacing: 0.05em;
}

.footer-col__list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.footer-col__list a {
  font-size: 0.875rem;
  color: #fff;
  opacity: 0.95;
}

.footer-col__list a:hover {
  opacity: 1;
  text-decoration: underline;
}

.footer-col--sns {
  min-width: 160px;
}

.footer-sns {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  transition: opacity 0.2s ease;
}

.footer-sns:hover {
  opacity: 0.7;
}

/* 会社情報帯（白） */
.site-footer__contact {
  background: #fff;
  border-top: 1px solid var(--color-border);
  padding: var(--space-lg) 0;
}

.footer-contact {
  display: flex;
  align-items: center;
  gap: var(--space-xl);
  flex-wrap: wrap;
}

.footer-contact__logo .custom-logo {
  max-height: 48px;
  width: auto;
}

.footer-contact__logo--federation {
  display: inline-flex;
}
.footer-contact__logo-img {
  height: 72px;
  width: auto;
  display: block;
}

.footer-contact__link {
  padding: 8px 24px;
  border: 1px solid var(--color-primary);
  border-radius: var(--radius-sm);
  color: var(--color-primary);
  font-weight: 700;
  font-size: 0.875rem;
  transition: background 0.2s ease, color 0.2s ease;
}

.footer-contact__link:hover {
  background: var(--color-primary);
  color: #fff;
  opacity: 1;
}

.footer-contact__address {
  font-style: normal;
  font-size: 0.8125rem;
  color: var(--color-text-muted);
  line-height: 1.7;
  margin-left: auto;
}

/* コピーライト */
.site-footer__bottom {
  background: #fff;
  border-top: 1px solid var(--color-border);
  padding: var(--space-md) 0;
}

.site-footer__bottom .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-md);
}

.site-footer__copy {
  margin: 0;
  font-size: 0.75rem;
  color: var(--color-text-muted);
}

.site-footer__links {
  display: flex;
  gap: var(--space-lg);
  flex-wrap: wrap;
}

.site-footer__links a {
  font-size: 0.75rem;
  color: var(--color-text-muted);
}

.site-footer__links a:hover {
  color: var(--color-primary);
  opacity: 1;
}

/* ==========================================================================
   21. ページヘッダー（下層用）
   ========================================================================== */
.page-header {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
  color: #fff;
  padding: var(--space-2xl) 0;
  text-align: center;
}

.page-header__en {
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  color: #fff;
  font-weight: 500;
  margin: 0 0 var(--space-sm);
  text-transform: uppercase;
  opacity: 0.85;
}

.page-header__title {
  font-size: 2rem;
  font-weight: 900;
  margin: 0;
  letter-spacing: 0.05em;
}

.breadcrumb {
  padding: var(--space-md) 0;
  font-size: 0.8125rem;
  color: var(--color-text-muted);
  background: var(--color-bg-alt);
}

.breadcrumb a:hover {
  color: var(--color-primary);
}

.breadcrumb__separator {
  margin: 0 var(--space-sm);
  opacity: 0.5;
}

/* ==========================================================================
   22. レスポンシブ（モバイル簡易対応）
   ========================================================================== */
@media (max-width: 1024px) {
  .race-cards,
  .voices {
    grid-template-columns: repeat(2, 1fr);
  }

  .feature-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .gallery-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .global-nav__list {
    gap: var(--space-md);
  }

  .global-nav__link {
    font-size: 0.8125rem;
  }
}

@media (max-width: 768px) {
  :root {
    --space-3xl: 64px;
    --space-2xl: 48px;
  }

  .global-nav__list {
    display: none;
  }

  .race-cards,
  .voices,
  .feature-grid,
  .office-info {
    grid-template-columns: 1fr;
  }

  .gallery-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  /* TOP新着：日付を大きく目立たせ、カテゴリは小さい左寄せチップに（/news/一覧と統一） */
  .news-item {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 14px 0;
  }
  .news-item__date { font-size: 1rem; font-weight: 800; color: var(--color-primary); letter-spacing: 0.04em; }
  .news-item__category { align-self: flex-start; }
  .news-item__title { font-size: 0.92rem; }
  /* スマホは3記事まで（デスクトップは5記事のまま） */
  .news-list .news-item:nth-child(n+4) { display: none; }

  .concept {
    grid-template-columns: 1fr;
  }

  .footer-cols {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-lg);
  }

  .footer-col--sns {
    grid-column: 1 / -1;
  }

  .topbar__inner {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-xs);
  }

  .topbar__nav {
    flex-wrap: wrap;
    gap: var(--space-md);
  }

  .footer-contact {
    flex-direction: column;
    align-items: flex-start;
  }

  .footer-contact__address {
    margin-left: 0;
  }

  .site-footer__bottom .container {
    flex-direction: column;
    align-items: flex-start;
  }

  /* 横長テーブルはページを押し広げず、テーブル内で横スクロール（はみ出し解消） */
  .schedule-table {
    font-size: 0.8125rem;
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .schedule-table th,
  .schedule-table td {
    padding: var(--space-sm);
    white-space: nowrap;
  }

  .hero-slide__stamp {
    display: none;
  }

  .hero-slide__inner {
    padding-left: var(--container-padding);
  }

  .hero-countdown__box {
    min-width: 52px;
    padding: 6px 8px 4px;
  }

  .hero-countdown__value {
    font-size: 1.375rem;
  }

  .info-table th,
  .info-table td {
    display: block;
    width: 100%;
  }

  .cta-banner {
    flex-direction: column;
    text-align: center;
  }
}

/* ==========================================================================
   東日本ハーフマラソン LP（宇宙テーマ「Plus Ultra」/ ライトモード）
   .race-half-page スコープ
   ========================================================================== */
.race-half-page {
  /* 東日本ハーフマラソン LP カラー案B（神奈川ローカル × ライブエンタメ × 疾走感）
     - Base/Header: Ocean Forest (相模湾×丹沢)
     - Primary (旧 purple): Teal Fresh (相模原グリーン)
     - Energy: Neon Lime (SNS世代エネルギー)
     - Live (旧 pink): Stage Coral (ステージ照明・熱気) */
  --hm-bg: #ffffff;
  --hm-bg-alt: #f0f9f7;          /* 微かに teal を含む背景 */
  --hm-bg-card: #ffffff;
  --hm-text: #1a1f3d;
  --hm-text-dim: #6b7194;
  --hm-navy: #1B3A4B;            /* Ocean Forest (旧: 紫寄りのネイビー) */
  --hm-navy-dark: #102733;
  --hm-purple: #00BFA5;          /* Teal Fresh（変数名は互換維持、実体は Teal） */
  --hm-purple-light: #4DD9C5;    /* 明るい Teal */
  --hm-cyan: #0090c8;
  --hm-cyan-bright: #00c8ff;
  --hm-gold: #d4a017;
  --hm-pink: #FF6B6B;             /* Stage Coral（旧: e91e63） */
  --hm-lime: #CDFF00;             /* Neon Lime（新規アクセント） */
  --hm-border: #d4e5e0;

  background: var(--hm-bg);
  color: var(--hm-text);
  font-family: var(--font-jp);
  position: relative;
}

.race-half-page a { color: inherit; }

/* 背景ウォーターマーク（巨大な薄いタイポ装飾） */
.race-half-page {
  position: relative;
  background: #fff;
  overflow-x: hidden;
}

.race-half-page::before {
  content: "EAST JAPAN HALF";
  position: absolute;
  top: 90vh;
  left: -3vw;
  right: -3vw;
  font-family: var(--font-en);
  font-size: clamp(5rem, 16vw, 22rem);
  font-weight: 900;
  color: var(--hm-purple);  /* Teal Fresh */
  opacity: 0.07;
  letter-spacing: -0.04em;
  line-height: 0.85;
  z-index: 0;
  pointer-events: none;
  user-select: none;
  white-space: nowrap;
  text-transform: uppercase;
  text-align: center;
}

.race-half-page::after {
  content: "MARATHON 2026";
  position: absolute;
  top: calc(90vh + 14vw);
  left: -3vw;
  right: -3vw;
  font-family: var(--font-en);
  font-size: clamp(4rem, 12vw, 16rem);
  font-weight: 900;
  color: var(--hm-purple-light);  /* 明るめ Teal */
  opacity: 0.06;
  letter-spacing: 0.05em;
  line-height: 0.85;
  z-index: 0;
  pointer-events: none;
  user-select: none;
  white-space: nowrap;
  text-transform: uppercase;
  text-align: center;
}

/* セクションが watermark の上に重なるよう z-index 調整 */
.race-half-page .half-section {
  position: relative;
  z-index: 1;
}

/* ただし transparent な (--alt じゃない) セクションは watermark が透けるように */
.race-half-page .half-section:not(.half-section--alt):not(.half-section--highlights):not(.half-section--contact):not(.half-section--concept) {
  background: transparent;
}

/* ヒーロー */
.half-hero {
  position: relative;
  min-height: 80vh;
  padding: 120px 24px 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  color: #fff;
}

.half-hero__bg {
  position: absolute;
  inset: 0;
  background-image: var(--hero-bg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  z-index: 0;
}

.half-hero__overlay {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 30% 40%, rgba(0, 191, 165, 0.30), transparent 60%),
    linear-gradient(180deg, rgba(27, 58, 75, 0.50) 0%, rgba(16, 39, 51, 0.68) 100%);
  z-index: 1;
}

.half-hero__inner {
  position: relative;
  z-index: 2;
  max-width: 920px;
  margin: 0 auto;
  text-align: center;
  color: #fff;
}

/* ==========================================================================
   half-hero v5
   - VOL.10 ライム斜めバッジ
   - 和名タイトル(主役・控えめサイズ)
   - 英語サブタイトル(ライム)
   - 「重力の先へ。」コンセプト維持
   - 日付ブロック(主役級・北海道マラソン参考)
   - メタピル(距離・会場・公認)
   - 平行四辺形CTA
   ========================================================================== */
.half-hero__edition {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 18px;
  padding: 6px 22px 4px;
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 16px;
  letter-spacing: 0.18em;
  color: var(--hm-navy);
  background: var(--hm-lime);
  transform: skewX(-10deg);
}
.half-hero__edition > * {
  display: inline-block;
  transform: skewX(10deg);
}
.half-hero__edition-num {
  font-size: 32px;
  line-height: 1;
  letter-spacing: 0.02em;
  font-weight: 800;
}

.half-hero__title {
  margin: 0 0 8px;
  font-family: var(--font-jp);
  font-size: clamp(32px, 5vw, 60px);
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: 0.04em;
  color: #fff;
  text-shadow: 0 2px 12px rgba(10, 16, 50, 0.4);
}

.half-hero__english {
  margin: 0 0 22px;
  font-family: var(--font-en);
  font-size: clamp(13px, 1.4vw, 17px);
  font-weight: 700;
  letter-spacing: 0.22em;
  color: var(--hm-lime);
  text-transform: uppercase;
}
.half-hero__english-x {
  display: inline-block;
  margin: 0 8px;
  color: rgba(205, 255, 0, 0.6);
}

.half-hero__catch {
  margin: 0 0 36px;
  font-size: clamp(1.25rem, 3vw, 2rem);
  font-weight: 900;
  letter-spacing: 0.1em;
  color: #fff;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.4);
}

.half-hero__catch-en {
  display: inline-block;
  margin-left: 0.5em;
  font-family: var(--font-en);
  font-style: italic;
  color: var(--hm-lime);
  font-weight: 800;
}

/* 日付ブロック(主役級) */
.half-hero__date-block {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 18px;
  flex-wrap: wrap;
  margin: 0 0 32px;
  line-height: 1;
}
.half-hero__date-main {
  font-family: var(--font-en);
  font-size: clamp(64px, 11vw, 132px);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 0.9;
  color: #fff;
  text-shadow: 0 4px 16px rgba(10, 16, 50, 0.4);
}
.half-hero__date-dot {
  color: var(--hm-lime);
}
.half-hero__date-dow {
  font-family: var(--font-en);
  font-size: clamp(22px, 3vw, 36px);
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--hm-lime);
  text-transform: lowercase;
}
.half-hero__date-year {
  font-family: var(--font-en);
  font-size: clamp(16px, 1.6vw, 22px);
  font-weight: 700;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.9);
  text-align: left;
}
.half-hero__date-time {
  display: block;
  font-family: var(--font-en);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.2em;
  color: var(--hm-lime);
  margin-top: 6px;
}

/* メタピル */
.half-hero__meta {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: center;
  margin: 0 0 32px;
}
.half-hero__meta-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 6px 14px;
  border-radius: 6px;
  backdrop-filter: blur(8px);
  font-weight: 700;
  font-size: 13px;
  color: #fff;
}
.half-hero__meta-pill::before {
  content: '';
  width: 6px;
  height: 6px;
  background: var(--hm-lime);
  border-radius: 50%;
}

.half-hero__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  margin: 0 0 24px;
}

.half-hero__deadline {
  display: inline-block;
  margin: 8px 0 0;
  padding: 6px 16px;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
  background: rgba(0, 0, 0, 0.25);
  border-radius: 999px;
  letter-spacing: 0.04em;
}

/* 平行四辺形 主役CTA */
.half-btn-skew {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  background: var(--hm-pink);
  color: #fff;
  padding: 16px 44px;
  border: 0;
  font-family: var(--font-jp);
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.1em;
  cursor: pointer;
  text-decoration: none;
  box-shadow: 0 6px 0 #c8001f;
  transition: all 0.15s;
  clip-path: polygon(10px 0, 100% 0, calc(100% - 10px) 100%, 0 100%);
}
.half-btn-skew:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 0 #c8001f;
  color: #fff;
}
.half-btn-skew:active {
  transform: translateY(4px);
  box-shadow: 0 2px 0 #c8001f;
}
.half-btn-skew__arrow {
  background: rgba(255, 255, 255, 0.22);
  border-radius: 50%;
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
}

/* カウントダウン: race-half ヒーロー内では中央揃え（フロントは左寄せのため上書き） */
.half-hero .hero-countdown {
  margin: 0 0 28px;
}
.half-hero .hero-countdown__boxes {
  justify-content: center;
}

@media (max-width: 768px) {
  .half-hero__date-block { gap: 12px; }
  .half-hero__date-year { text-align: center; }
  .half-hero .hero-countdown__boxes { flex-wrap: wrap; }
}

/* ボタン（半分専用） */
.half-btn {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 16px 36px;
  font-family: var(--font-jp);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  border-radius: 8px;
  border: 2px solid transparent;
  transition: all 0.25s ease;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
}

.half-btn:hover { opacity: 1; transform: translateY(-2px); }

.half-btn__sub {
  font-family: var(--font-en);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  opacity: 0.85;
}

.half-btn--primary {
  color: #fff;
  background: linear-gradient(135deg, #6b4fff 0%, #e91e63 100%);
  box-shadow: 0 8px 24px rgba(107, 79, 255, 0.35);
}

.half-btn--primary:hover {
  box-shadow: 0 12px 32px rgba(233, 30, 99, 0.4);
}

.half-btn--ghost {
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(8px);
}

.half-btn--ghost:hover {
  background: rgba(255, 255, 255, 0.95);
  color: var(--hm-navy);
  border-color: #fff;
}

.race-half-page .half-section .half-btn--ghost {
  color: var(--hm-purple);
  background: transparent;
  border-color: var(--hm-purple);
  backdrop-filter: none;
}

.race-half-page .half-section .half-btn--ghost:hover {
  background: var(--hm-purple);
  color: #fff;
}

.half-btn--large {
  padding: 20px 56px;
  font-size: 1.125rem;
}

/* エントリーCTA：コーラル平行四辺形を大きめに強調（このページの主目的＝エントリー） */
.half-entry-cta__btn {
  padding: 22px 62px;
  font-size: 19px;
}

/* お問い合わせ等の控えめボタン（エントリーと競合させないため小さく） */
.half-btn--sm {
  padding: 12px 30px;
  font-size: 0.95rem;
}

/* セクション共通 */
.half-section {
  padding: 96px 0;
  position: relative;
}

.half-section--alt {
  background: var(--hm-bg-alt);
}

.half-section--concept {
  background: var(--hm-bg);
  position: relative;
  overflow: hidden;
}

/* JAXA はやぶさ2 装飾（相模原=宇宙のまち）
   - 要素ベース配置で画像が常にフル表示（contain）
   - top/left/width/transform は wp_head の動的CSSで上書き */
.half-section--concept::before {
  content: "";
  position: absolute;
  aspect-ratio: 1254 / 658;
  background: url('assets/images/concept-hayabusa.png') center / contain no-repeat;
  pointer-events: none;
  user-select: none;
  z-index: 0;
}

.half-section--concept > .container {
  position: relative;
  z-index: 1;
}

.half-section--highlights {
  background:
    radial-gradient(ellipse at 90% 50%, rgba(107, 79, 255, 0.08), transparent 60%),
    radial-gradient(ellipse at 10% 50%, rgba(0, 200, 255, 0.06), transparent 60%),
    var(--hm-bg-alt);
  position: relative;
}

.half-section--highlights::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(1.5px 1.5px at 60px 80px, rgba(107, 79, 255, 0.4), transparent),
    radial-gradient(1px 1px at 180px 150px, rgba(0, 200, 255, 0.3), transparent),
    radial-gradient(2px 2px at 320px 60px, rgba(212, 160, 23, 0.4), transparent),
    radial-gradient(1.5px 1.5px at 100px 240px, rgba(107, 79, 255, 0.4), transparent);
  background-size: 400px 320px;
  background-repeat: repeat;
  pointer-events: none;
  opacity: 0.6;
}

.half-section--contact {
  background: var(--hm-bg-alt);
}

/* ==========================================================================
   half-section-title（B+Cミックス装飾）
   race-half は新RFAパレット（teal / coral / lime / Ocean Forest）に乗っており、
   eyebrow=teal、下線=coral→teal で統一感を持たせる
   --light（暗背景）では eyebrow=lime、下線=lime→teal
   ========================================================================== */
.half-section-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin: 0 0 56px;
  position: relative;
  z-index: 1;
}

.half-section-title__en {
  display: inline-block;
  font-family: var(--font-en);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: #fff;
  background: var(--hm-purple); /* Teal */
  padding: 6px 22px 5px;
  margin-bottom: 18px;
  clip-path: polygon(8px 0, 100% 0, calc(100% - 8px) 100%, 0 100%);
}

.half-section-title__ja {
  display: inline-block;
  position: relative;
  font-size: clamp(1.5rem, 3.5vw, 2.25rem);
  font-weight: 900;
  letter-spacing: 0.08em;
  color: var(--hm-navy);
  padding-bottom: 14px;
}

.half-section-title__ja::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%) skewX(-30deg);
  width: 88px;
  height: 5px;
  background: linear-gradient(90deg, var(--hm-pink), var(--hm-purple)); /* coral → teal */
  border-radius: 1px;
}

/* light-bg accent variant（HIGHLIGHTS / CONTACT セクション）
   セクション背景が --hm-bg-alt（薄いミント）なので、eyebrow を lime に振って差別化。
   タイトルはnavyのまま、下線は lime→teal-light のソフトトーン */
.half-section-title--light .half-section-title__en {
  background: var(--hm-lime);
  color: var(--hm-navy);
}
.half-section-title--light .half-section-title__ja::after {
  background: linear-gradient(90deg, var(--hm-lime), var(--hm-purple-light));
}

/* コンセプト */
.half-concept__lead {
  max-width: 760px;
  margin: 0 auto 64px;
  text-align: center;
  font-size: 1.0625rem;
  line-height: 2;
  color: var(--hm-text);
}

.half-concept__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}

.half-concept-card {
  padding: 36px 28px;
  background: var(--hm-bg-card);
  border: 1px solid var(--hm-border);
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 2px 10px rgba(30, 42, 107, 0.04);
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

.half-concept-card:hover {
  transform: translateY(-4px);
  border-color: var(--hm-purple);
  box-shadow: 0 12px 32px rgba(107, 79, 255, 0.15);
}

.half-concept-card__icon {
  font-size: 2.75rem;
  margin-bottom: 16px;
}

.half-concept-card__title {
  margin: 0 0 12px;
  font-size: 1.25rem;
  color: var(--hm-navy);
}

.half-concept-card__text {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--hm-text-dim);
}

/* テーブル */
.half-info-table {
  width: 100%;
  max-width: 880px;
  margin: 0 auto;
  border-collapse: collapse;
  background: var(--hm-bg-card);
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid var(--hm-border);
  box-shadow: 0 4px 16px rgba(30, 42, 107, 0.06);
}

.half-info-table th,
.half-info-table td {
  padding: 20px 24px;
  text-align: left;
  border-bottom: 1px solid var(--hm-border);
  font-size: 0.95rem;
}

.half-info-table tr:last-child th,
.half-info-table tr:last-child td { border-bottom: 0; }

.half-info-table th {
  width: 200px;
  font-weight: 700;
  color: #fff;
  font-family: var(--font-jp);
  letter-spacing: 0.08em;
  background: var(--hm-navy);
}

.half-info-table td {
  color: var(--hm-text);
}

.half-info-table strong { color: var(--hm-pink); font-weight: 900; }

/* 種目カード */
.half-categories {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
  margin-bottom: 64px;
}

.half-category-card {
  background: var(--hm-bg-card);
  border: 2px solid var(--hm-border);
  border-radius: 18px;
  text-align: left;
  position: relative;
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(30, 42, 107, 0.04);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}

.half-category-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 32px rgba(27, 58, 75, 0.16);
}

/* 斜めカットのカラーヘッダー（案A STAGE SELECT のUIのみ採用・ライト／ハーフLPカラー） */
.half-category-card__head {
  position: relative;
  padding: 22px 26px 30px;
  clip-path: polygon(0 0, 100% 0, 100% 78%, 0 100%);
}
.half-category-card--teal .half-category-card__head { background: #0c9286; }
.half-category-card--lime .half-category-card__head { background: #d8ec2e; }
.half-category-card--coral .half-category-card__head { background: #ff6a52; }
.half-category-card--teal:hover { border-color: #0c9286; }
.half-category-card--lime:hover { border-color: #c4d829; }
.half-category-card--coral:hover { border-color: #ff6a52; }

.half-category-card__dist {
  display: block;
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 2.3rem;
  line-height: 1;
  letter-spacing: -0.01em;
  color: #fff;
}
.half-category-card--lime .half-category-card__dist { color: #1a2a00; }
.half-category-card__dist .u {
  font-size: 0.9rem;
  font-weight: 700;
  margin-left: 5px;
  letter-spacing: 0.02em;
}

.half-category-card__body {
  padding: 22px 26px 28px;
}

.half-category-card__name {
  margin: 0 0 12px;
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--hm-navy);
}

.half-category-card__desc {
  margin: 0 0 18px;
  font-size: 0.92rem;
  line-height: 1.8;
  color: var(--hm-text-dim);
}

/* 参加区分リスト（テーマカラーのドット） */
.half-category-card__divisions {
  list-style: none;
  margin: 18px 0 0;
  padding: 16px 0 0;
  border-top: 1px solid var(--hm-border);
  text-align: left;
  font-size: 0.88rem;
  line-height: 1.7;
  color: var(--hm-navy);
}
.half-category-card__divisions li {
  position: relative;
  padding-left: 18px;
  transition: padding-left 0.25s ease;
}
.half-category-card__divisions li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 0.62em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #0c9286;
}
.half-category-card--coral .half-category-card__divisions li::before { background: #ff6a52; }
.half-category-card--lime .half-category-card__divisions li::before { background: #8aa00c; }
.half-category-card:hover .half-category-card__divisions li {
  padding-left: 22px;
}

/* エントリーCTA */
.half-entry-cta {
  text-align: center;
  padding: 48px 24px;
  background:
    linear-gradient(135deg, rgba(107, 79, 255, 0.06), rgba(0, 200, 255, 0.04));
  border-radius: 16px;
  border: 2px solid var(--hm-purple);
}

.half-entry-cta__text {
  margin: 0 0 24px;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--hm-navy);
}

.half-entry-cta__deadline {
  margin: 16px 0 0;
  font-size: 0.875rem;
  color: var(--hm-pink);
  font-weight: 700;
  letter-spacing: 0.05em;
}

/* ハイライト */
.half-highlights {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}

.half-highlight-card {
  padding: 40px 28px;
  background: var(--hm-bg-card);
  border: 1px solid var(--hm-border);
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 4px 16px rgba(30, 42, 107, 0.06);
  position: relative;
  z-index: 1;
}

.half-highlight-card__icon {
  font-size: 3rem;
  margin-bottom: 20px;
}

.half-highlight-card__title {
  margin: 0 0 12px;
  font-size: 1.25rem;
  color: var(--hm-purple);
}

.half-highlight-card__text {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--hm-text);
}

/* タイムライン */
.half-timeline {
  max-width: 720px;
  margin: 0 auto;
  list-style: none;
  padding: 0;
  position: relative;
}

.half-timeline::before {
  content: "";
  position: absolute;
  left: 100px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(180deg, var(--hm-purple), var(--hm-pink));
  opacity: 0.4;
}

.half-timeline__item {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 24px;
  margin-bottom: 28px;
  position: relative;
}

.half-timeline__item::before {
  content: "";
  position: absolute;
  left: 92px;
  top: 14px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid var(--hm-purple);
  z-index: 1;
}

.half-timeline__item--key::before {
  background: var(--hm-pink);
  border-color: var(--hm-pink);
  box-shadow: 0 0 0 6px rgba(233, 30, 99, 0.15);
}

.half-timeline__time {
  font-family: var(--font-en);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--hm-purple);
  letter-spacing: 0.05em;
  text-align: right;
  padding-right: 24px;
}

.half-timeline__item--key .half-timeline__time {
  color: var(--hm-pink);
}

.half-timeline__body {
  padding: 14px 24px;
  background: var(--hm-bg-card);
  border: 1px solid var(--hm-border);
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(30, 42, 107, 0.04);
}

.half-timeline__body h4 {
  margin: 0 0 4px;
  font-size: 1.0625rem;
  color: var(--hm-navy);
}

.half-timeline__body p {
  margin: 0;
  font-size: 0.875rem;
  color: var(--hm-text-dim);
}

.half-timeline__note {
  text-align: center;
  margin: 32px 0 0;
  font-size: 0.85rem;
  color: var(--hm-text-dim);
}

/* アクセス */
.half-access {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 40px;
  align-items: stretch;
}

.half-access__map {
  background: linear-gradient(135deg, var(--hm-navy), #2a3585);
  border: 2px solid var(--hm-purple);
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 320px;
  position: relative;
  overflow: hidden;
  color: #fff;
}

.half-access__map iframe {
  width: 100%;
  height: 100%;
  min-height: 320px;
  border: 0;
  display: block;
  position: relative;
  z-index: 1;
}

/* スマホ：地図iframeがタッチ（縦スクロール）を奪い「スクロールできず固まる」のを防ぐ。
   iframe自体は触れなくし、上に重ねたリンクのタップでGoogleマップを別タブで開く。 */
.half-access__map-link { display: none; }
@media (max-width: 768px) {
  .half-access__map iframe { pointer-events: none; }
  .half-access__map-link {
    display: block;
    position: absolute;
    inset: 0;
    z-index: 2;
  }
}

.half-access__map::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 30% 30%, rgba(0, 200, 255, 0.2), transparent 40%),
    radial-gradient(circle at 70% 70%, rgba(107, 79, 255, 0.25), transparent 40%);
}

.half-access__map-placeholder {
  position: relative;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--hm-cyan-bright);
  letter-spacing: 0.1em;
}

.half-access__details {
  padding: 32px;
  background: var(--hm-bg-card);
  border: 1px solid var(--hm-border);
  border-radius: 16px;
  box-shadow: 0 4px 16px rgba(30, 42, 107, 0.06);
}

.half-access__details dl {
  margin: 0;
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 16px 24px;
}

.half-access__details dt {
  font-weight: 700;
  color: var(--hm-purple);
  font-size: 0.9rem;
  letter-spacing: 0.08em;
}

.half-access__details dd {
  margin: 0;
  color: var(--hm-text);
  font-size: 0.95rem;
  line-height: 1.7;
}

/* ギャラリー */
.half-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}

.half-gallery__item {
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, #e8edff 0%, #c8d3f5 100%);
  border-radius: 12px;
  border: 1px solid var(--hm-border);
  overflow: hidden;
  display: block;
  text-decoration: none;
  transition: transform 0.2s ease;
}

.half-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.half-gallery__item:hover {
  transform: translateY(-2px);
}

.half-gallery__action {
  text-align: center;
  margin-top: 32px;
}

/* お問い合わせ */
.half-contact-card {
  max-width: 640px;
  margin: 0 auto;
  padding: 40px 32px;
  background: var(--hm-bg-card);
  border: 2px solid var(--hm-purple);
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 8px 24px rgba(107, 79, 255, 0.1);
}

.half-contact-card__title {
  margin: 0 0 24px;
  font-size: 1.25rem;
  color: var(--hm-navy);
}

.half-contact-card__list {
  margin: 0 0 32px;
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 12px 24px;
  text-align: left;
}

.half-contact-card__list dt {
  font-weight: 700;
  color: var(--hm-purple);
  font-size: 0.875rem;
}

.half-contact-card__list dd {
  margin: 0;
  color: var(--hm-text);
  font-size: 0.95rem;
}

.half-contact-card__list a {
  color: var(--hm-pink);
  text-decoration: underline;
  font-weight: 700;
}

/* ==========================================================================
   最終CTA (v5: ENTRY NOW OPEN / コーラル × 斜めストライプ)
   ========================================================================== */
.half-final-cta {
  position: relative;
  padding: 80px 24px;
  text-align: center;
  background: linear-gradient(135deg, var(--hm-pink) 0%, #c8001f 100%);
  overflow: hidden;
  color: #fff;
}

.half-final-cta::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.05) 0,
    rgba(255, 255, 255, 0.05) 2px,
    transparent 2px,
    transparent 12px
  );
  pointer-events: none;
}

.half-final-cta__inner {
  position: relative;
  max-width: 720px;
  margin: 0 auto;
}

.half-final-cta__english {
  display: block;
  margin: 0 0 8px;
  font-family: var(--font-en);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.3em;
  color: var(--hm-lime);
  text-transform: uppercase;
}

.half-final-cta__title {
  margin: 0 0 32px;
  font-family: var(--font-jp);
  font-size: clamp(28px, 4.5vw, 44px);
  font-weight: 900;
  letter-spacing: 0.06em;
  color: #fff;
}

.half-final-cta__btn { margin: 0 auto; }

.half-final-cta__deadline {
  display: inline-block;
  margin-top: 24px;
  padding: 6px 14px;
  background: rgba(0, 0, 0, 0.22);
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #fff;
}

/* 平行四辺形ボタンの白バージョン (主役CTA派生形) */
.half-btn-skew--white {
  background: #fff;
  color: var(--hm-pink);
  box-shadow: 0 6px 0 rgba(0, 0, 0, 0.18);
}
.half-btn-skew--white:hover {
  box-shadow: 0 8px 0 rgba(0, 0, 0, 0.18);
  color: var(--hm-pink);
}
.half-btn-skew--white:active {
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.18);
}
.half-btn-skew--white .half-btn-skew__arrow {
  background: rgba(255, 107, 107, 0.18);
  color: var(--hm-pink);
}

/* レスポンシブ */
@media (max-width: 768px) {
  .half-hero { min-height: 70vh; padding: 80px 20px 64px; }
  .half-hero__actions { flex-direction: column; align-items: stretch; }
  .half-section { padding: 64px 0; }
  .half-section-title { margin-bottom: 36px; }

  .half-info-table th,
  .half-info-table td { display: block; width: 100%; padding: 12px 16px; }

  .half-timeline::before { left: 12px; }
  .half-timeline__item { grid-template-columns: 1fr; gap: 8px; padding-left: 40px; }
  .half-timeline__item::before { left: 4px; top: 6px; }
  .half-timeline__time { text-align: left; padding-right: 0; }

  .half-access { grid-template-columns: 1fr; }
  .half-access__details dl,
  .half-contact-card__list { grid-template-columns: 1fr; gap: 4px 0; }
  .half-access__details dt,
  .half-contact-card__list dt { margin-top: 12px; }
}

/* ==========================================================================
   東日本国際親善マラソン LP（アメリカンテーマ「Run Together. Cross Borders.」/ ライトモード）
   .race-shinzen-page スコープ
   ========================================================================== */
.race-shinzen-page {
  --shz-navy: #001D54;
  --shz-navy-dark: #00133e;
  --shz-red: #FF1744;
  --shz-red-dark: #c8001f;
  --shz-cyan: #00A0CC;
  --shz-cyan-bright: #00C8FF;
  --shz-gold: #d4a017;
  --shz-gold-bright: #FFD700;
  --shz-cream: #fff9ec;
  --shz-bg-alt: #fef5f7;
  --shz-text: #1a1a2e;
  --shz-text-dim: #5a5a72;
  --shz-border: #e3e8f5;

  background: #ffffff;
  color: var(--shz-text);
  font-family: var(--font-jp);
}

.race-shinzen-page a { color: inherit; }

/* ヒーロー */
.shz-hero {
  position: relative;
  min-height: 80vh;
  padding: 120px 24px 100px;
  text-align: center;
  color: #fff;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}

.shz-hero__bg {
  position: absolute;
  inset: 0;
  background-image: var(--hero-bg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  z-index: 0;
}

.shz-hero__overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(135deg, rgba(0, 29, 84, 0.55) 0%, rgba(0, 40, 120, 0.35) 50%, rgba(0, 19, 62, 0.55) 100%);
  z-index: 1;
}

/* ストライプ模様（アメリカンフラッグ風） */
.shz-hero__stripes {
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: repeating-linear-gradient(
    -45deg,
    rgba(255, 23, 68, 0.12) 0,
    rgba(255, 23, 68, 0.12) 60px,
    transparent 60px,
    transparent 120px
  );
  pointer-events: none;
}

.shz-hero__inner {
  position: relative;
  z-index: 2;
  max-width: 980px;
  margin: 0 auto;
}

.shz-hero__edition {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 24px;
  padding: 8px 24px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.3em;
  color: var(--shz-gold-bright);
  border: 2px solid var(--shz-gold-bright);
  border-radius: 4px;
  text-transform: uppercase;
  background: rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(4px);
}

.shz-hero__edition span {
  font-size: 1rem;
  color: var(--shz-gold-bright);
}

.shz-hero__title {
  margin: 0 0 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-family: var(--font-en);
  font-size: clamp(2.5rem, 8vw, 5.5rem);
  font-weight: 900;
  line-height: 0.95;
  letter-spacing: 0.02em;
}

.shz-hero__title-en {
  display: block;
  background: linear-gradient(180deg, #ffffff 50%, var(--shz-red) 50%, var(--shz-red) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 4px 16px rgba(0, 0, 0, 0.5));
}

.shz-hero__title-ja {
  margin: 0 0 32px;
  font-size: clamp(1rem, 2.2vw, 1.375rem);
  font-weight: 700;
  letter-spacing: 0.15em;
  color: var(--shz-cyan);
}

.shz-hero__catch {
  display: inline-block;
  margin: 0 0 32px;
  padding: 16px 32px;
  font-family: var(--font-en);
  font-size: clamp(1.125rem, 2.8vw, 1.75rem);
  font-weight: 900;
  line-height: 1.2;
  letter-spacing: 0.05em;
  background: var(--shz-red);
  color: #fff;
  transform: rotate(-2deg);
  box-shadow: 6px 6px 0 var(--shz-gold-bright);
}

.shz-hero__meta {
  margin: 0 0 36px;
}

.shz-hero__date {
  margin: 0 0 6px;
  font-family: var(--font-en);
  font-size: clamp(1.25rem, 2.8vw, 1.75rem);
  font-weight: 900;
  letter-spacing: 0.1em;
  color: #fff;
}

.shz-hero__date span {
  display: inline-block;
  margin-left: 8px;
  padding: 2px 12px;
  background: var(--shz-cyan-bright);
  color: var(--shz-navy);
  font-size: 0.75em;
  border-radius: 4px;
}

.shz-hero__venue {
  margin: 0;
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.85);
}

.shz-hero__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 24px;
}

.shz-hero__note {
  display: inline-block;
  margin: 16px 0 0;
  padding: 12px 24px;
  font-size: 0.9rem;
  color: #fff;
  background: rgba(0, 0, 0, 0.45);
  border: 1px dashed var(--shz-gold-bright);
  border-radius: 4px;
  backdrop-filter: blur(4px);
}

/* ボタン */
.shz-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 16px 36px;
  font-family: var(--font-jp);
  font-size: 1rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  border-radius: 4px;
  border: 3px solid transparent;
  transition: all 0.2s ease;
  cursor: pointer;
  text-decoration: none;
  text-transform: none;
  white-space: nowrap;
}

.shz-btn:hover { opacity: 1; transform: translate(-2px, -2px); }

.shz-btn--primary {
  color: #fff;
  background: var(--shz-red);
  box-shadow: 4px 4px 0 var(--shz-navy);
}

.shz-btn--primary:hover {
  box-shadow: 6px 6px 0 var(--shz-navy);
  background: var(--shz-red-dark);
}

.shz-btn--ghost {
  color: #fff;
  background: transparent;
  border-color: #fff;
}

.shz-btn--ghost:hover {
  background: #fff;
  color: var(--shz-navy);
}

.shz-btn--large {
  padding: 22px 56px;
  font-size: 1.125rem;
}

/* セクション */
.shz-section {
  padding: 96px 0;
  position: relative;
}

/* 歴史セクション上部の全幅ランナー帯（みんなで走ってきた30年） */
.shz-history-band {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-top: -96px;
  margin-bottom: 60px;
  height: 190px;
  background:
    linear-gradient(100deg, rgba(0,29,84,0.64) 0%, rgba(0,29,84,0.26) 48%, rgba(0,29,84,0.48) 100%),
    url('assets/images/about-hero.jpg') center 42% / cover no-repeat;
  /* スクロールしても背景は固定。帯が「窓」になり、スクロールで写真の全貌が見える */
  background-attachment: fixed, fixed;
}
@media (max-width: 768px) {
  .shz-history-band {
    margin-top: -64px;
    margin-bottom: 44px;
    height: 140px;
    /* モバイル（特にiOS Safari）は fixed が無視/カクつくため通常スクロールに */
    background-attachment: scroll, scroll;
  }
}

.shz-section--alt {
  background: var(--shz-cream);
}

.shz-section--concept {
  background: #fff;
  overflow: hidden;
}
/* 星条旗の薄い装飾（親善＝日米友好。ハーフLPのJAXA装飾と同じ擬似要素方式） */
.shz-section--concept::before {
  content: "";
  position: absolute;
  top: 24px;
  left: -3%;
  width: min(560px, 44%);
  aspect-ratio: 1536 / 1024;
  background: url('assets/images/concept-flag-shinzen.png?v=2') top left / contain no-repeat;
  opacity: 0.14;
  pointer-events: none;
  user-select: none;
  z-index: 0;
}
.shz-section--concept > .container {
  position: relative;
  z-index: 1;
}

.shz-section--highlights {
  background: var(--shz-bg-alt);
  color: var(--shz-text);
  position: relative;
  overflow: hidden;
}

.shz-section--highlights::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    -45deg,
    rgba(255, 23, 68, 0.04) 0,
    rgba(255, 23, 68, 0.04) 30px,
    transparent 30px,
    transparent 60px
  );
}

.shz-section--message {
  background: linear-gradient(135deg, #001D54 0%, #00133e 100%);
  color: #fff;
}

/* ==========================================================================
   shz-section-title（B+Cミックス装飾）
   shinzen は赤×ネイビー×金のクラシック配色なので、その色相で B+C を表現
   ★ ★ ★ 装飾は廃止 → 斜めグラデ下線へ
   ========================================================================== */
.shz-section-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin: 0 0 56px;
}

.shz-section-title__en {
  display: inline-block;
  font-family: var(--font-en);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: #fff;
  background: var(--shz-red);
  padding: 6px 22px 5px;
  margin-bottom: 18px;
  clip-path: polygon(8px 0, 100% 0, calc(100% - 8px) 100%, 0 100%);
}

.shz-section-title--light .shz-section-title__en {
  background: var(--shz-gold);
  color: var(--shz-navy);
}

.shz-section-title__ja {
  display: inline-block;
  font-size: clamp(1.5rem, 3.5vw, 2.25rem);
  font-weight: 900;
  letter-spacing: 0.08em;
  color: var(--shz-navy);
  position: relative;
  padding-bottom: 14px;
}

.shz-section-title--light .shz-section-title__ja { color: #fff; }

.shz-section-title__ja::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%) skewX(-30deg);
  width: 88px;
  height: 5px;
  background: linear-gradient(90deg, var(--shz-red), var(--shz-gold));
  border-radius: 1px;
}

.shz-section-title--light .shz-section-title__ja::after {
  background: linear-gradient(90deg, var(--shz-gold), var(--shz-gold-bright));
}

/* コンセプト */
.shz-concept__lead {
  max-width: 760px;
  margin: 0 auto 64px;
  text-align: center;
  font-size: 1.0625rem;
  line-height: 2;
  color: var(--shz-text);
}

.shz-concept__lead strong {
  color: var(--shz-red);
  font-weight: 900;
}

.shz-concept__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}

.shz-concept-card {
  padding: 40px 28px;
  background: #fff;
  border: 4px solid var(--shz-navy);
  border-radius: 4px;
  text-align: center;
  position: relative;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.shz-concept-card:hover {
  transform: translate(-4px, -4px);
  box-shadow: 8px 8px 0 var(--shz-navy);
}

.shz-concept-card--red { border-color: var(--shz-red); }
.shz-concept-card--red:hover { box-shadow: 8px 8px 0 var(--shz-red); }

.shz-concept-card--blue { border-color: var(--shz-cyan); }
.shz-concept-card--blue:hover { box-shadow: 8px 8px 0 var(--shz-cyan); }

.shz-concept-card--gold { border-color: var(--shz-gold); }
.shz-concept-card--gold:hover { box-shadow: 8px 8px 0 var(--shz-gold); }

.shz-concept-card__icon {
  font-size: 3rem;
  margin-bottom: 16px;
}

.shz-concept-card__title {
  margin: 0 0 4px;
  font-family: var(--font-en);
  font-size: 1.5rem;
  font-weight: 900;
  letter-spacing: 0.05em;
  color: var(--shz-navy);
}

.shz-concept-card__sub {
  margin: 0 0 20px;
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: var(--shz-red);
}

.shz-concept-card__text {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--shz-text);
}

/* テーブル */
.shz-info-table {
  width: 100%;
  max-width: 880px;
  margin: 0 auto;
  border-collapse: collapse;
  background: #fff;
  border: 4px solid var(--shz-navy);
  border-radius: 4px;
  overflow: hidden;
}

.shz-info-table th,
.shz-info-table td {
  padding: 20px 24px;
  text-align: left;
  border-bottom: 1px solid var(--shz-border);
  font-size: 0.95rem;
}

.shz-info-table tr:last-child th,
.shz-info-table tr:last-child td { border-bottom: 0; }

.shz-info-table th {
  width: 200px;
  font-weight: 900;
  color: #fff;
  background: var(--shz-navy);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.shz-info-table td {
  color: var(--shz-text);
}

.shz-info-table strong { color: var(--shz-red); }

/* OVERVIEW表 ラベルアイコン（30周年記念・ネイビー地にゴールド） */
.shz-info-table__th {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.shz-info-table__ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  flex-shrink: 0;
  border-radius: 50%;
  background: rgba(255, 215, 0, 0.16);
  color: var(--shz-gold-bright);
  box-shadow: inset 0 0 0 1px rgba(255, 215, 0, 0.35);
}
.shz-info-table__ico svg {
  width: 19px;
  height: 19px;
}

/* ハイライト */
.shz-highlights {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 24px;
  position: relative;
  z-index: 1;
}

.shz-highlight-card {
  padding: 40px 28px;
  background: #fff;
  border: 3px solid var(--shz-navy);
  border-radius: 4px;
  text-align: center;
  position: relative;
  transition: all 0.2s ease;
  box-shadow: 4px 4px 0 var(--shz-navy);
}

.shz-highlight-card:hover {
  transform: translate(-2px, -2px);
  box-shadow: 6px 6px 0 var(--shz-red);
  border-color: var(--shz-red);
}

.shz-highlight-card__num {
  font-family: var(--font-en);
  font-size: 3rem;
  font-weight: 900;
  color: var(--shz-red);
  line-height: 1;
  margin-bottom: 12px;
  letter-spacing: 0.05em;
}

.shz-highlight-card__title {
  margin: 0 0 12px;
  font-size: 1.25rem;
  font-weight: 900;
  color: var(--shz-navy);
}

.shz-highlight-card__text {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--shz-text);
}

/* ハイライト写真版（4枚カード上部に画像）*/
.shz-highlight-card--has-image {
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.shz-highlight-card__media {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--shz-bg-alt, #f5f5f5);
}
.shz-highlight-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s ease;
}
.shz-highlight-card--has-image:hover .shz-highlight-card__img {
  transform: scale(1.05);
}
.shz-highlight-card--has-image .shz-highlight-card__num {
  position: absolute;
  top: 10px;
  right: 14px;
  margin: 0;
  font-size: 2.2rem;
  color: #fff;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.55);
  z-index: 2;
  line-height: 1;
}
.shz-highlight-card__body {
  padding: 22px 20px 26px;
  text-align: center;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
.shz-highlight-card--has-image .shz-highlight-card__title {
  margin-top: 0;
}

/* ヒストリー */
.shz-history__lead {
  max-width: 760px;
  margin: 0 auto 56px;
  text-align: center;
  font-size: 1.0625rem;
  line-height: 2;
  color: var(--shz-text);
}

.shz-history__timeline {
  max-width: 760px;
  margin: 0 auto;
  position: relative;
}

.shz-history__timeline::before {
  content: "";
  position: absolute;
  left: 100px;
  top: 12px;
  bottom: 12px;
  width: 4px;
  background: repeating-linear-gradient(
    180deg,
    var(--shz-navy) 0,
    var(--shz-navy) 8px,
    transparent 8px,
    transparent 16px
  );
}

.shz-history-item {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 32px;
  margin-bottom: 32px;
  position: relative;
}

.shz-history-item::before {
  content: "★";
  position: absolute;
  left: 86px;
  top: 0;
  width: 32px;
  height: 32px;
  background: #fff;
  border: 3px solid var(--shz-navy);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--shz-navy);
  font-size: 1rem;
  z-index: 1;
}

.shz-history-item--current::before {
  background: var(--shz-red);
  border-color: var(--shz-red);
  color: var(--shz-gold);
  box-shadow: 0 0 0 6px rgba(255, 23, 68, 0.2);
}

.shz-history-item__year {
  font-family: var(--font-en);
  font-size: 1.75rem;
  font-weight: 900;
  color: var(--shz-red);
  text-align: right;
  padding-right: 32px;
  letter-spacing: 0.05em;
}

.shz-history-item--current .shz-history-item__year {
  color: var(--shz-navy);
}

.shz-history-item__body {
  padding: 16px 24px;
  background: #fff;
  border: 2px solid var(--shz-border);
  border-radius: 4px;
}

.shz-history-item--current .shz-history-item__body {
  border-color: var(--shz-red);
  background: linear-gradient(135deg, #fff 0%, #fff5f7 100%);
}

.shz-history-item__body h4 {
  margin: 0 0 6px;
  font-size: 1.0625rem;
  color: var(--shz-navy);
  font-weight: 900;
}

.shz-history-item__body p {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.75;
  color: var(--shz-text);
}

.shz-history__note {
  text-align: center;
  margin: 32px 0 0;
  font-size: 0.85rem;
  color: var(--shz-text-dim);
}

/* アクセス */
.shz-access {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 40px;
}

.shz-access__map {
  background: linear-gradient(135deg, #001D54, #002878);
  border: 4px solid var(--shz-red);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 320px;
  position: relative;
  overflow: hidden;
}

.shz-access__map iframe {
  width: 100%;
  height: 100%;
  min-height: 320px;
  border: 0;
  display: block;
  position: relative;
  z-index: 1;
}

.shz-access__map::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    -45deg,
    rgba(255, 215, 0, 0.08) 0,
    rgba(255, 215, 0, 0.08) 30px,
    transparent 30px,
    transparent 60px
  );
}

.shz-access__map-placeholder {
  position: relative;
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--shz-gold);
  letter-spacing: 0.1em;
}

.shz-access__details {
  padding: 32px;
  background: #fff;
  border: 4px solid var(--shz-navy);
  border-radius: 4px;
}

.shz-access__details dl {
  margin: 0;
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 16px 24px;
}

.shz-access__details dt {
  font-weight: 900;
  color: var(--shz-red);
  font-size: 0.9rem;
  letter-spacing: 0.08em;
}

.shz-access__details dd {
  margin: 0;
  color: var(--shz-text);
  font-size: 0.95rem;
  line-height: 1.7;
}

/* ギャラリー */
.shz-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.shz-gallery__item {
  aspect-ratio: 4 / 3;
  background:
    linear-gradient(135deg, var(--shz-navy) 0%, #002878 100%);
  border-radius: 4px;
  border: 2px solid var(--shz-gold);
  position: relative;
  overflow: hidden;
  display: block;
  text-decoration: none;
  transition: transform 0.2s ease;
}

.shz-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.shz-gallery__item:hover {
  transform: translateY(-2px);
}

.shz-gallery__item:nth-child(2n) {
  background: linear-gradient(135deg, var(--shz-red) 0%, #c8001f 100%);
  border-color: var(--shz-cyan);
}

.shz-gallery__item:nth-child(3n) {
  background: linear-gradient(135deg, #00C8FF 0%, #0080a8 100%);
  border-color: var(--shz-gold);
}

.shz-gallery__action {
  text-align: center;
  margin-top: 32px;
}

/* メッセージ */
.shz-message-card {
  max-width: 760px;
  margin: 0 auto;
  padding: 56px 40px;
  background: rgba(255, 255, 255, 0.05);
  border: 2px solid var(--shz-gold);
  border-radius: 4px;
  text-align: center;
  position: relative;
}

.shz-message-card__quote {
  font-family: var(--font-en);
  font-size: 4rem;
  line-height: 1;
  color: var(--shz-gold);
  margin: 0 0 16px;
  font-weight: 900;
}

.shz-message-card__text {
  margin: 0 0 28px;
  font-size: 0.9375rem;
  line-height: 2.1;
  color: rgba(255, 255, 255, 0.95);
}

.shz-message-card__signature {
  margin: 0;
  font-size: 1rem;
  font-weight: 900;
  color: var(--shz-gold);
  letter-spacing: 0.15em;
}

/* お問い合わせ */
.shz-contact-card {
  max-width: 640px;
  margin: 0 auto;
  padding: 40px 32px;
  background: #fff;
  border: 4px solid var(--shz-navy);
  border-radius: 4px;
  text-align: center;
  box-shadow: 8px 8px 0 var(--shz-red);
}

.shz-contact-card__title {
  margin: 0 0 24px;
  font-size: 1.25rem;
  color: var(--shz-navy);
  font-weight: 900;
}

.shz-contact-card__list {
  margin: 0 0 32px;
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 12px 24px;
  text-align: left;
}

.shz-contact-card__list dt {
  font-weight: 900;
  color: var(--shz-red);
  font-size: 0.875rem;
  letter-spacing: 0.05em;
}

.shz-contact-card__list dd {
  margin: 0;
  color: var(--shz-text);
  font-size: 0.95rem;
}

.shz-contact-card__list a {
  color: var(--shz-red);
  text-decoration: underline;
  font-weight: 700;
}

/* 最終CTA */
.shz-final-cta {
  position: relative;
  padding: 120px 24px;
  text-align: center;
  background:
    linear-gradient(180deg, #fff9ec 0%, #fff 100%);
  overflow: hidden;
}

.shz-final-cta::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    -45deg,
    rgba(255, 23, 68, 0.06) 0,
    rgba(255, 23, 68, 0.06) 60px,
    transparent 60px,
    transparent 120px
  );
}

.shz-final-cta__inner {
  position: relative;
  max-width: 720px;
  margin: 0 auto;
}

.shz-final-cta__catch-en {
  margin: 0 0 16px;
  font-family: var(--font-en);
  font-size: clamp(2.5rem, 7vw, 4.5rem);
  font-weight: 900;
  line-height: 0.95;
  letter-spacing: 0.02em;
  background: linear-gradient(180deg, var(--shz-navy) 50%, var(--shz-red) 50%, var(--shz-red) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.shz-final-cta__catch-ja {
  margin: 0 0 24px;
  font-size: clamp(1.125rem, 2.5vw, 1.5rem);
  font-weight: 900;
  letter-spacing: 0.1em;
  color: var(--shz-navy);
}
.shz-final-cta__catch-ja-accent { color: var(--shz-red); }

.shz-final-cta__sub {
  margin: 0 0 40px;
  font-size: 0.95rem;
  letter-spacing: 0.05em;
  color: var(--shz-text-dim);
}

.shz-final-cta__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}

/* レスポンシブ */
@media (max-width: 768px) {
  .shz-hero { padding: 80px 20px 64px; }
  .shz-hero__catch { padding: 12px 20px; transform: rotate(-1deg); }
  .shz-hero__actions { flex-direction: column; align-items: stretch; }
  .shz-section { padding: 64px 0; }
  .shz-section-title { margin-bottom: 36px; }

  .shz-info-table th,
  .shz-info-table td { display: block; width: 100%; padding: 12px 16px; }

  .shz-history__timeline::before { left: 12px; }
  .shz-history-item { grid-template-columns: 1fr; gap: 8px; padding-left: 40px; }
  .shz-history-item::before { left: -2px; }
  .shz-history-item__year { text-align: left; padding-right: 0; }

  .shz-access { grid-template-columns: 1fr; }
  .shz-access__details dl,
  .shz-contact-card__list { grid-template-columns: 1fr; gap: 4px 0; }
  .shz-access__details dt,
  .shz-contact-card__list dt { margin-top: 12px; }

  .shz-message-card { padding: 40px 24px; }
}

/* ==========================================================================
   連盟概要ページ（.about-page スコープ）
   ========================================================================== */
.about-page {
  --abt-navy: #0F4D8C;
  --abt-navy-deep: #0a3866;
  --abt-blue: #1E6FBF;
  --abt-orange: #F07800;
  --abt-orange-hover: #C95F00;
  --abt-text: #2a2a2a;
  --abt-text-dim: #6b6b6b;
  --abt-bg: #ffffff;
  --abt-bg-alt: #f5f9fd;
  --abt-bg-cool: #eef3f9;
  --abt-border: #d9e3ee;
  --abt-yellow-bg: #fff8db;
}

/* ヒーロー */
.about-hero {
  position: relative;
  background:
    linear-gradient(135deg, rgba(15, 77, 140, 0.78) 0%, rgba(30, 111, 191, 0.62) 50%, rgba(98, 177, 255, 0.55) 100%),
    url('assets/images/about-hero.jpg') center / cover no-repeat;
  color: #fff;
  padding: 80px 0 96px;
}

.about-hero__inner {
  max-width: var(--container-max);
}

.about-hero__en {
  margin: 0 0 16px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.about-hero__title {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 0 0 36px;
  font-size: clamp(2rem, 4.5vw, 2.75rem);
  font-weight: 900;
  letter-spacing: 0.05em;
}

.about-hero__bar {
  display: inline-block;
  width: 6px;
  height: 36px;
  background: var(--abt-orange);
  border-radius: 3px;
}

.about-hero__actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

/* セクション見出し（オレンジ短線） */
.about-eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
}

.about-eyebrow__line {
  display: inline-block;
  width: 32px;
  height: 3px;
  background: var(--abt-orange);
  border-radius: 2px;
}

.about-eyebrow__en {
  font-family: var(--font-en);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.25em;
  color: var(--abt-text-dim);
  text-transform: uppercase;
}

.about-h2 {
  margin: 0 0 40px;
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  color: var(--abt-navy);
}

/* 会長メッセージ */
.about-message-card {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 32px;
  align-items: stretch;
  padding: 32px;
  background: var(--abt-bg-cool);
  border-left: 4px solid var(--abt-orange);
  border-radius: 4px;
}

.about-message-card__photo {
  background: #c8d4e0;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 140px;
  color: #6b7c91;
  font-size: 0.8125rem;
  text-align: center;
}

.about-message-card__body p {
  margin: 0 0 16px;
  font-size: 1rem;
  line-height: 2;
  color: var(--abt-text);
}

.about-message-card__body p:last-child { margin-bottom: 0; }

.about-message-card__signature {
  text-align: right;
  font-size: 0.95rem !important;
  color: var(--abt-text-dim) !important;
}

/* 連盟概要テーブル */
.about-summary-table {
  width: 100%;
  max-width: 920px;
  margin: 0 auto;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
  overflow: hidden;
}

.about-summary-table th,
.about-summary-table td {
  padding: 18px 24px;
  text-align: left;
  border-bottom: 1px solid var(--abt-border);
  font-size: 0.95rem;
  vertical-align: top;
}

.about-summary-table tr:last-child th,
.about-summary-table tr:last-child td { border-bottom: 0; }

.about-summary-table th {
  width: 160px;
  font-weight: 700;
  color: var(--abt-navy);
  background: var(--abt-bg-cool);
  letter-spacing: 0.05em;
}

.about-summary-table td { color: var(--abt-text); }

.about-summary-link {
  color: var(--abt-blue);
  text-decoration: underline;
  font-weight: 700;
}

/* 主催3大会 */
.about-races {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

.about-race-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
  overflow: hidden;
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.about-race-card:hover {
  opacity: 1;
  transform: translateY(-4px);
  box-shadow: 0 12px 24px rgba(15, 77, 140, 0.12);
}

.about-race-card__head {
  padding: 12px 20px;
  background: var(--abt-navy);
  color: #fff;
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.05em;
}

.about-race-card__photo {
  aspect-ratio: 16 / 9;
  background: #c8d4e0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #6b7c91;
  font-size: 0.85rem;
}

.about-race-card__body {
  padding: 20px 24px;
  flex-grow: 1;
  display: flex;
  flex-direction: column;
}

.about-race-card__body h3 {
  margin: 0 0 12px;
  font-size: 1.0625rem;
  color: var(--abt-navy);
  font-weight: 900;
}

.about-race-card__body p {
  margin: 0 0 16px;
  font-size: 0.875rem;
  line-height: 1.85;
  color: var(--abt-text);
}

.about-race-card__link {
  margin-top: auto !important;
  margin-bottom: 0 !important;
  color: var(--abt-blue);
  font-weight: 700;
  font-size: 0.875rem !important;
}

/* アコーディオン */
.about-accordion {
  max-width: 920px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.about-accordion__item {
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
  overflow: hidden;
}

.about-accordion__head {
  padding: 18px 24px;
  background: var(--abt-bg-cool);
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 700;
  font-size: 1rem;
  color: var(--abt-navy);
  cursor: pointer;
  list-style: none;
  user-select: none;
}

.about-accordion__head::-webkit-details-marker { display: none; }

.about-accordion__head::after {
  content: "▼";
  margin-left: auto;
  font-size: 0.75rem;
  color: var(--abt-text-dim);
  transition: transform 0.2s ease;
  flex-shrink: 0;
}

.about-accordion__item[open] .about-accordion__head::after {
  transform: rotate(180deg);
}

.about-accordion__body {
  padding: 20px 28px 28px;
  font-size: 0.95rem;
  line-height: 1.9;
  color: var(--abt-text);
}

.about-accordion__body p { margin: 0 0 12px; }
.about-accordion__body ul { margin: 0; padding-left: 20px; list-style: disc; }
.about-accordion__body ul li { margin-bottom: 4px; }
.about-accordion__body a { color: var(--abt-blue); text-decoration: underline; }
.about-accordion__note { font-size: 0.85rem; color: var(--abt-text-dim); margin-top: 8px; }

/* 加盟走友会一覧 */
.about-members__table {
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 16px;
}

.about-members__table thead th {
  padding: 14px 16px;
  background: var(--abt-bg-cool);
  text-align: left;
  font-weight: 700;
  color: var(--abt-navy);
  font-size: 0.875rem;
  letter-spacing: 0.05em;
  border-bottom: 1px solid var(--abt-border);
}

.about-members__no { width: 60px; text-align: center !important; }

.about-members__table tbody td {
  padding: 14px 16px;
  border-bottom: 1px solid var(--abt-border);
  font-size: 0.95rem;
  color: var(--abt-text);
}

.about-members__table tbody td:first-child { text-align: center; color: var(--abt-text-dim); }

.about-members__table tbody tr:last-child td { border-bottom: 0; }

.about-members__more td {
  text-align: center !important;
  color: var(--abt-text-dim) !important;
  background: var(--abt-bg-alt);
  font-size: 0.875rem !important;
}

.about-members__row.is-hidden { display: none; }

.about-members__toggle { text-align: center; margin-top: 16px; }

.about-members__toggle-btn {
  padding: 10px 24px;
  background: transparent;
  border: 1px solid var(--abt-blue);
  border-radius: 4px;
  color: var(--abt-blue);
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s ease;
}

.about-members__toggle-btn:hover {
  background: var(--abt-blue);
  color: #fff;
}

/* インラインCTA */
.about-inline-cta {
  margin-top: 32px;
  padding: 20px 28px;
  background: var(--abt-bg-alt);
  border-left: 4px solid var(--abt-orange);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.about-inline-cta--accent {
  background: var(--abt-yellow-bg);
}

.about-inline-cta__text {
  margin: 0;
  font-weight: 700;
  color: var(--abt-text);
  font-size: 1rem;
}

/* 新規加盟バナー */
.about-membership-banner {
  background: linear-gradient(135deg, #0F4D8C 0%, #0a3866 100%);
  color: #fff;
  padding: 64px 24px;
  position: relative;
  overflow: hidden;
}

.about-membership-banner__inner {
  position: relative;
  z-index: 1;
}

.about-membership-banner__bg {
  position: absolute;
  right: -40px;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--font-en);
  font-size: clamp(4rem, 12vw, 9rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  color: rgba(255, 255, 255, 0.06);
  pointer-events: none;
  white-space: nowrap;
}

.about-membership-banner__en {
  margin: 0 0 12px;
  font-family: var(--font-en);
  font-size: 0.8125rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.about-membership-banner__title {
  margin: 0 0 28px;
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: 900;
  letter-spacing: 0.05em;
}

.about-membership-banner__btn {
  max-width: 100%;
}

/* こんな団体におすすめ */
.about-target {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.about-target-card {
  padding: 28px 24px;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
}

.about-target-card h3 {
  margin: 0 0 12px;
  font-size: 1.0625rem;
  color: var(--abt-navy);
  font-weight: 900;
}

.about-target-card p {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.85;
  color: var(--abt-text);
}

/* 加盟のメリット（統合版） */
.about-benefits__lead {
  margin: 0 0 16px;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--abt-text-dim);
  letter-spacing: 0.05em;
}

.about-target-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  list-style: none;
  margin: 0 0 40px;
  padding: 0;
}

.about-target-tags li {
  padding: 10px 20px;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 999px;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--abt-navy);
}

/* サブ見出し（統合セクション内用） */
.about-subhead {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 20px;
  font-size: 1.0625rem;
  font-weight: 900;
  color: var(--abt-navy);
  letter-spacing: 0.05em;
}

.about-subhead--mt {
  margin-top: 56px;
}

.about-subhead__num {
  display: inline-block;
  padding: 4px 12px;
  background: var(--abt-orange);
  color: #fff;
  font-family: var(--font-en);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  border-radius: 4px;
}

/* 加盟するメリット */
.about-benefits {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.about-benefit-card {
  padding: 0;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
  overflow: hidden;
}

.about-benefit-card__head {
  margin: 0;
  padding: 14px 24px;
  background: var(--abt-navy);
  color: #fff;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.about-benefit-card__text {
  margin: 0;
  padding: 24px;
  font-size: 0.9rem;
  line-height: 1.85;
  color: var(--abt-text);
}

/* 加盟までの流れ */
.about-flow {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  list-style: none;
  padding: 0;
  margin: 0 0 16px;
  position: relative;
}

.about-flow__step {
  padding: 28px 20px 24px;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
  text-align: center;
  position: relative;
}

.about-flow__num {
  width: 48px;
  height: 48px;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: var(--abt-orange);
  color: #fff;
  font-family: var(--font-en);
  font-size: 1.5rem;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
}

.about-flow__step h3 {
  margin: 0 0 6px;
  font-size: 1rem;
  color: var(--abt-navy);
  font-weight: 900;
}

.about-flow__step p {
  margin: 0;
  font-size: 0.85rem;
  color: var(--abt-text-dim);
  line-height: 1.6;
}

/* 募集条件テーブル */
.about-conditions-table {
  width: 100%;
  max-width: 920px;
  margin: 0 auto;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid var(--abt-border);
  border-radius: 4px;
  overflow: hidden;
}

.about-conditions-table th,
.about-conditions-table td {
  padding: 16px 24px;
  text-align: left;
  border-bottom: 1px solid var(--abt-border);
  font-size: 0.95rem;
}

.about-conditions-table tr:last-child th,
.about-conditions-table tr:last-child td { border-bottom: 0; }

.about-conditions-table th {
  width: 160px;
  font-weight: 700;
  color: var(--abt-navy);
  background: var(--abt-bg-cool);
}

.about-conditions-table td { color: var(--abt-text); }

/* 最終CTA */
.about-final-cta {
  background:
    linear-gradient(135deg, rgba(10, 56, 102, 0.82) 0%, rgba(15, 77, 140, 0.74) 100%),
    url('assets/images/cta-runner.jpg') center / cover no-repeat;
  color: #fff;
  padding: 80px 24px;
  text-align: center;
}

.about-final-cta__title {
  margin: 0 0 16px;
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 900;
  letter-spacing: 0.05em;
}

.about-final-cta__sub {
  margin: 0 0 36px;
  font-size: 1rem;
  opacity: 0.9;
}

.about-final-cta__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}

/* レスポンシブ */
@media (max-width: 900px) {
  .about-races,
  .about-target,
  .about-benefits { grid-template-columns: 1fr; }

  .about-flow { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
  .about-hero { padding: 56px 0 64px; }
  .about-hero__actions { flex-direction: column; align-items: stretch; }

  .about-message-card { grid-template-columns: 1fr; gap: 16px; padding: 24px; }
  .about-message-card__photo { min-height: 120px; }

  .about-summary-table th,
  .about-summary-table td,
  .about-conditions-table th,
  .about-conditions-table td { display: block; width: 100%; padding: 12px 16px; }

  .about-members__table { font-size: 0.875rem; }
  .about-members__table th,
  .about-members__table td { padding: 10px 8px; }

  .about-inline-cta { flex-direction: column; text-align: center; align-items: stretch; }
  .about-inline-cta a { text-align: center; }

  .about-flow { grid-template-columns: 1fr; }

  .about-final-cta__actions { flex-direction: column; align-items: center; }
  .about-final-cta__actions .btn { max-width: 100%; }
  .about-final-cta__actions .btn--large { padding: 14px 28px; font-size: 1rem; }
}

/* ==========================================================================
   リーガル系ページ共通（.legal-page スコープ）
   privacy / terms / disclaimer / cookie / sitemap
   ========================================================================== */
.legal-page__inner {
  max-width: 880px;
  font-size: 0.9375rem;
  line-height: 1.95;
  color: var(--color-text);
}

.legal-page__lead {
  margin: 0 0 var(--space-2xl);
  padding: 24px 28px;
  background: var(--color-bg-alt);
  border-left: 4px solid var(--color-accent);
  border-radius: 4px;
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--color-text);
}

.legal-page__lead strong {
  color: var(--color-primary-dark);
  font-weight: 700;
}

.legal-page h2 {
  margin: 48px 0 16px;
  padding-left: 16px;
  font-size: 1.25rem;
  font-weight: 900;
  color: var(--color-primary-dark);
  letter-spacing: 0.04em;
  border-left: 5px solid var(--color-accent);
  line-height: 1.4;
}

.legal-page h2:first-of-type {
  margin-top: 0;
}

.legal-page h3 {
  margin: 28px 0 12px;
  font-size: 1.0625rem;
  font-weight: 900;
  color: var(--color-primary-dark);
  letter-spacing: 0.03em;
}

.legal-page p {
  margin: 0 0 16px;
}

.legal-page ul,
.legal-page ol {
  margin: 0 0 20px;
  padding-left: 24px;
  list-style: disc;
}

.legal-page ol {
  list-style: decimal;
}

.legal-page ul li,
.legal-page ol li {
  margin-bottom: 6px;
}

.legal-page a {
  color: var(--color-primary);
  text-decoration: underline;
}

.legal-page a:hover {
  color: var(--color-primary-dark);
  opacity: 1;
}

/* テーブル（Cookie / Sitemap） */
.legal-page__table {
  width: 100%;
  margin: 16px 0 24px;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  overflow: hidden;
  font-size: 0.9rem;
}

.legal-page__table thead th {
  padding: 12px 16px;
  background: var(--color-primary);
  color: #fff;
  text-align: left;
  font-weight: 700;
  letter-spacing: 0.04em;
  font-size: 0.875rem;
}

.legal-page__table tbody th,
.legal-page__table tbody td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
  vertical-align: top;
  text-align: left;
}

.legal-page__table tbody th {
  width: 200px;
  background: var(--color-bg);
  font-weight: 700;
  color: var(--color-primary-dark);
  letter-spacing: 0.03em;
}

.legal-page__table tbody tr:last-child th,
.legal-page__table tbody tr:last-child td {
  border-bottom: 0;
}

.legal-page__table--two tbody th {
  width: 160px;
}

/* 連絡先ボックス */
.legal-page__contact {
  margin: 24px 0 32px;
  padding: 24px 28px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 4px;
}

.legal-page__contact p {
  margin: 0 0 12px;
  font-size: 0.9375rem;
}

.legal-page__contact p:last-child {
  margin-bottom: 0;
}

.legal-page__contact strong {
  color: var(--color-primary-dark);
}

/* 制定日 */
.legal-page__updated {
  margin-top: 56px !important;
  padding-top: 20px;
  border-top: 1px solid var(--color-border);
  font-size: 0.85rem;
  color: var(--color-text-muted);
  text-align: right;
}

/* サイトマップ専用グリッド */
.sitemap-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 32px 24px;
  margin: 16px 0 32px;
}

.sitemap-col h3 {
  margin: 0 0 12px !important;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--color-accent);
  display: inline-block;
  font-size: 1rem !important;
}

.sitemap-col ul {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

.sitemap-col ul li {
  margin-bottom: 8px;
  font-size: 0.9375rem;
}

.sitemap-col ul li::before {
  content: "›";
  margin-right: 8px;
  color: var(--color-accent);
  font-weight: 700;
}

.sitemap-col a {
  text-decoration: none !important;
  color: var(--color-text);
}

.sitemap-col a:hover {
  color: var(--color-primary);
  text-decoration: underline !important;
}

/* レスポンシブ */
@media (max-width: 768px) {
  .legal-page__lead { padding: 18px 20px; }
  .legal-page h2 { font-size: 1.125rem; padding-left: 12px; }
  .legal-page__table tbody th { width: 110px; padding: 10px 12px; }
  .legal-page__table tbody td { padding: 10px 12px; }
  .sitemap-grid { grid-template-columns: 1fr; gap: 24px; }
}

/* ==========================================================================
   協賛・スポンサーページ（.sponsor-page スコープ）
   ========================================================================== */
.sponsor-page {
  --sp-navy: #0F4D8C;
  --sp-navy-deep: #0a3866;
  --sp-blue: #1E6FBF;
  --sp-blue-light: #62B1FF;
  --sp-orange: #F07800;
  --sp-orange-hover: #C95F00;
  --sp-text: #2a2a2a;
  --sp-text-dim: #6b6b6b;
  --sp-bg: #ffffff;
  --sp-bg-alt: #f5f9fd;
  --sp-bg-cool: #eef3f9;
  --sp-border: #d9e3ee;
  --sp-warning-bg: #fff8db;
  --sp-warning-border: #f0c000;
  --sp-gold: #d4a017;
  --sp-silver: #8a99ad;
  --sp-bronze: #b87333;
}

/* ヒーロー */
.sp-hero {
  background: linear-gradient(135deg, #0F4D8C 0%, #1E6FBF 50%, #0F4D8C 100%);
  color: #fff;
  padding: 64px 0 80px;
  position: relative;
}

.sp-hero__inner {
  max-width: var(--container-max);
}

.sp-hero__en {
  margin: 0 0 16px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.sp-hero__title {
  margin: 0 0 24px;
  font-size: clamp(2rem, 4.5vw, 2.75rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  padding-left: 16px;
  border-left: 6px solid var(--sp-orange);
  line-height: 1.2;
}

.sp-hero__lead {
  margin: 0;
  font-size: 0.95rem;
  line-height: 2;
  opacity: 0.95;
  max-width: 760px;
}

/* 共通 eyebrow（オレンジ短線 + EN） */
.sp-eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
}

.sp-eyebrow--mt { margin-top: 56px; }

.sp-eyebrow__line {
  display: inline-block;
  width: 32px;
  height: 3px;
  background: var(--sp-orange);
  border-radius: 2px;
}

.sp-eyebrow__en {
  font-family: var(--font-en);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.25em;
  color: var(--sp-text-dim);
  text-transform: uppercase;
}

.sp-h2 {
  margin: 0 0 16px;
  font-size: clamp(1.5rem, 3vw, 1.875rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  color: var(--sp-navy);
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.sp-h3 {
  margin: 16px 0 32px;
  font-size: 1.25rem;
  font-weight: 900;
  letter-spacing: 0.05em;
  color: var(--sp-navy);
}

.sp-lead {
  margin: 0 0 40px;
  font-size: 0.95rem;
  line-height: 2;
  color: var(--sp-text);
}

.sp-lead small {
  font-size: 0.85rem;
  color: var(--sp-text-dim);
}

.sp-badge {
  display: inline-block;
  padding: 4px 12px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  background: var(--sp-bg-cool);
  color: var(--sp-navy);
  border-radius: 4px;
}

.sp-warning {
  margin: 0 0 32px;
  padding: 12px 18px;
  background: var(--sp-warning-bg);
  border-left: 4px solid var(--sp-warning-border);
  border-radius: 4px;
  font-size: 0.875rem;
  color: var(--sp-text);
}

.sp-empty {
  padding: 48px 24px;
  text-align: center;
  color: var(--sp-text-dim);
  background: var(--sp-bg-alt);
  border-radius: 4px;
  border: 1px dashed var(--sp-border);
}

/* スポンサーティア */
.sp-tier {
  margin-bottom: 40px;
}

.sp-tier:last-child { margin-bottom: 0; }

.sp-tier__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

.sp-tier__head-left {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.sp-tier__badge {
  display: inline-block;
  padding: 6px 16px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  border-radius: 4px;
  color: #fff;
}

.sp-tier__badge--premium { background: var(--sp-gold); }
.sp-tier__badge--official { background: var(--sp-silver); }
.sp-tier__badge--standard { background: var(--sp-bronze); }
.sp-tier__badge--support { background: var(--sp-blue); }

.sp-tier__name {
  font-size: 1.0625rem;
  font-weight: 900;
  color: var(--sp-navy);
  letter-spacing: 0.05em;
}

.sp-tier__count {
  font-size: 0.875rem;
  color: var(--sp-text-dim);
  font-weight: 700;
}

.sp-tier__logos {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 16px;
}

/* ティアごとに列数を変える（プレミアム=2、オフィシャル=3、スタンダード=4、協力=4） */
.sp-tier__logos--premium { grid-template-columns: repeat(2, 1fr); }
.sp-tier__logos--official { grid-template-columns: repeat(3, 1fr); }
.sp-tier__logos--standard { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.sp-tier__logos--support { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }

.sp-logo-card {
  background: #fff;
  border: 1px solid var(--sp-border);
  border-radius: 4px;
  padding: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.sp-logo-card__logo {
  background: var(--sp-bg-cool);
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 16 / 9;
  font-family: var(--font-en);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  color: var(--sp-text-dim);
}

.sp-logo-card__logo img {
  max-width: 80%;
  max-height: 80%;
  object-fit: contain;
}

.sp-logo-card__name {
  margin: 0;
  padding: 12px 16px;
  text-align: center;
  font-size: 0.875rem;
  color: var(--sp-text);
  border-top: 1px solid var(--sp-border);
}

.sp-current__note {
  margin: 32px 0 0;
  padding: 12px 18px;
  background: var(--sp-bg-cool);
  border-radius: 4px;
  font-size: 0.85rem;
  color: var(--sp-text-dim);
  text-align: center;
}

/* 協賛メリット */
.sp-benefits {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.sp-benefit-card {
  padding: 28px 24px;
  background: #fff;
  border: 2px solid var(--sp-border);
  border-radius: 4px;
  text-align: center;
}

.sp-benefit-card__icon {
  font-size: 2.5rem;
  margin-bottom: 12px;
}

.sp-benefit-card h4 {
  margin: 0 0 12px;
  font-size: 1.0625rem;
  color: var(--sp-navy);
  font-weight: 900;
}

.sp-benefit-card p {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.85;
  color: var(--sp-text);
}

/* 協賛プランテーブル */
.sp-plan-table-wrap {
  overflow-x: auto;
  background: #fff;
  border: 1px solid var(--sp-border);
  border-radius: 4px;
}

.sp-plan-table {
  width: 100%;
  min-width: 720px;
  border-collapse: collapse;
  font-size: 0.9rem;
}

.sp-plan-table thead th {
  padding: 16px 12px;
  background: var(--sp-bg-cool);
  border-bottom: 2px solid var(--sp-border);
  text-align: center;
  vertical-align: middle;
  font-weight: 700;
}

.sp-plan-table__feat-head {
  width: 200px;
  text-align: left !important;
  padding-left: 20px !important;
}

.sp-plan-tag {
  display: inline-block;
  padding: 4px 10px;
  font-family: var(--font-en);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: #fff;
  border-radius: 4px;
  margin-bottom: 6px;
}

.sp-plan-tag--premium { background: var(--sp-gold); }
.sp-plan-tag--official { background: var(--sp-silver); }
.sp-plan-tag--standard { background: var(--sp-bronze); }
.sp-plan-tag--support { background: var(--sp-blue); }

.sp-plan-table__name {
  display: block;
  font-size: 0.95rem;
  font-weight: 900;
  color: var(--sp-navy);
}

.sp-plan-table__col-premium { background: rgba(212, 160, 23, 0.06) !important; }
.sp-plan-table__col-official { background: rgba(138, 153, 173, 0.06) !important; }
.sp-plan-table__col-standard { background: rgba(184, 115, 51, 0.06) !important; }
.sp-plan-table__col-support { background: rgba(30, 111, 191, 0.05) !important; }

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

.sp-plan-table tbody tr:last-child { border-bottom: 0; }

.sp-plan-table tbody th {
  padding: 12px 20px;
  background: #fafcff;
  text-align: left;
  font-weight: 700;
  color: var(--sp-text);
  font-size: 0.875rem;
}

.sp-plan-table tbody td {
  padding: 12px;
  text-align: center;
  font-size: 0.9rem;
  color: var(--sp-text);
}

.sp-plan-table tbody td strong {
  color: var(--sp-orange);
  font-size: 1rem;
  font-weight: 900;
}

.sp-plan-table__group th {
  padding: 8px 20px !important;
  background: var(--sp-navy) !important;
  color: #fff !important;
  font-size: 0.8125rem !important;
  letter-spacing: 0.05em;
  text-align: left !important;
  font-weight: 700;
}

.sp-plan-table__legend {
  margin: 16px 0 0;
  padding: 12px 18px;
  background: var(--sp-bg-cool);
  border-radius: 4px;
  font-size: 0.85rem;
  color: var(--sp-text-dim);
  text-align: center;
}

/* お申し込みの流れ */
.sp-flow {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.sp-flow__step {
  padding: 24px 16px;
  background: #fff;
  border: 1px solid var(--sp-border);
  border-radius: 4px;
  text-align: center;
  position: relative;
}

.sp-flow__step:not(:last-child)::after {
  content: "›";
  position: absolute;
  right: -14px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.75rem;
  color: var(--sp-orange);
  font-weight: 700;
  z-index: 1;
}

.sp-flow__num {
  width: 40px;
  height: 40px;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: var(--sp-orange);
  color: #fff;
  font-family: var(--font-en);
  font-size: 1.25rem;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
}

.sp-flow__step h3 {
  margin: 0 0 8px;
  font-size: 0.95rem;
  color: var(--sp-navy);
  font-weight: 900;
  line-height: 1.4;
}

.sp-flow__step p {
  margin: 0;
  font-size: 0.8rem;
  color: var(--sp-text-dim);
  line-height: 1.6;
}

/* 検討バナー */
.sp-detail-cta {
  background: linear-gradient(135deg, #0F4D8C 0%, #0a3866 100%);
  color: #fff;
  padding: 56px 0;
}

.sp-detail-cta__inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 32px;
  flex-wrap: wrap;
}

.sp-detail-cta__text h3 {
  margin: 0 0 8px;
  font-size: 1.25rem;
  font-weight: 900;
  letter-spacing: 0.05em;
}

.sp-detail-cta__text p {
  margin: 0;
  font-size: 0.9rem;
  opacity: 0.9;
  line-height: 1.85;
}

.sp-detail-cta__actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

/* お問い合わせフォーム */
.sp-contact { background: #fff; }

.sp-form {
  max-width: 760px;
  margin: 0 auto;
  padding: 40px;
  background: var(--sp-bg-alt);
  border-radius: 4px;
  border: 1px solid var(--sp-border);
}

.sp-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 20px;
}

.sp-form__field {
  display: block;
  margin-bottom: 20px;
}

.sp-form__row .sp-form__field { margin-bottom: 0; }

.sp-form__label {
  display: block;
  margin-bottom: 8px;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--sp-navy);
}

.sp-form__req {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--sp-orange);
  color: #fff;
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.sp-form__opt {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--sp-bg-cool);
  color: var(--sp-text-dim);
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.sp-form__field input,
.sp-form__field select,
.sp-form__field textarea {
  width: 100%;
  padding: 12px 14px;
  font-family: inherit;
  font-size: 0.95rem;
  background: #fff;
  border: 1px solid var(--sp-border);
  border-radius: 4px;
  color: var(--sp-text);
  box-sizing: border-box;
}

.sp-form__field input:focus,
.sp-form__field select:focus,
.sp-form__field textarea:focus {
  outline: none;
  border-color: var(--sp-blue);
  box-shadow: 0 0 0 3px rgba(30, 111, 191, 0.15);
}

.sp-form__field textarea {
  resize: vertical;
  min-height: 120px;
}

.sp-form__privacy {
  margin: 24px 0;
  padding: 20px;
  background: #fff;
  border: 1px solid var(--sp-border);
  border-radius: 4px;
}

.sp-form__privacy-note {
  margin: 0 0 16px;
  font-size: 0.85rem;
  line-height: 1.85;
  color: var(--sp-text-dim);
}

.sp-form__privacy-note a {
  color: var(--sp-blue);
  text-decoration: underline;
}

.sp-form__check {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--sp-text);
  cursor: pointer;
}

.sp-form__check input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--sp-orange);
}

.sp-form__submit {
  text-align: center;
  margin-top: 8px;
}

/* レスポンシブ */
@media (max-width: 900px) {
  .sp-tier__logos--premium { grid-template-columns: 1fr; }
  .sp-tier__logos--official { grid-template-columns: repeat(2, 1fr); }
  .sp-benefits { grid-template-columns: 1fr; }
  .sp-flow { grid-template-columns: repeat(2, 1fr); }
  .sp-flow__step:not(:last-child)::after { display: none; }
}

@media (max-width: 768px) {
  .sp-hero { padding: 48px 0 56px; }
  .sp-form { padding: 24px 20px; }
  .sp-form__row { grid-template-columns: 1fr; gap: 0; }
  .sp-form__row .sp-form__field { margin-bottom: 20px; }
  .sp-detail-cta__inner { flex-direction: column; align-items: flex-start; }
  .sp-detail-cta__actions { width: 100%; }
  .sp-detail-cta__actions .btn { flex: 1; min-width: 140px; }
  .sp-flow { grid-template-columns: 1fr; }
}

/* ==========================================================================
   ボランティア募集ページ（.volunteer-page スコープ）
   ========================================================================== */
.volunteer-page {
  --vol-navy: #0F4D8C;
  --vol-navy-deep: #0a3866;
  --vol-blue: #1E6FBF;
  --vol-blue-light: #62B1FF;
  --vol-orange: #F07800;
  --vol-orange-hover: #C95F00;
  --vol-text: #2a2a2a;
  --vol-text-dim: #6b6b6b;
  --vol-bg: #ffffff;
  --vol-bg-alt: #f5f9fd;
  --vol-bg-cool: #eef3f9;
  --vol-border: #d9e3ee;
  --vol-warning-bg: #fff8db;
  --vol-warning-border: #f0c000;
  --vol-medical-red: #c94747;
  --vol-medical-bg: #fdf2f2;
}

/* 旧 .vol-hero は削除（ボランティアのヒーローは page-volunteer.php にインライン実装へ移行・2026-06） */

/* eyebrow（オレンジ短線 + EN） */
.vol-eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
}

.vol-eyebrow__line {
  display: inline-block;
  width: 32px;
  height: 3px;
  background: var(--vol-orange);
  border-radius: 2px;
}

.vol-eyebrow__en {
  font-family: var(--font-en);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.25em;
  color: var(--vol-text-dim);
  text-transform: uppercase;
}

.vol-h2 {
  margin: 0 0 16px;
  font-size: clamp(1.5rem, 3vw, 1.875rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  color: var(--vol-navy);
  padding-left: 12px;
  border-left: 4px solid var(--vol-orange);
  line-height: 1.4;
}

.vol-lead {
  margin: 0 0 32px;
  font-size: 0.95rem;
  line-height: 2;
  color: var(--vol-text);
}

/* About */
.vol-about {
  margin: 24px 0 40px;
  padding: 24px 28px;
  background: var(--vol-bg-cool);
  border-left: 4px solid var(--vol-blue);
  border-radius: 4px;
}

.vol-about p {
  margin: 0 0 12px;
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--vol-text);
}

.vol-about p:last-child { margin-bottom: 0; }

.vol-about strong {
  color: var(--vol-orange);
  font-weight: 700;
}

/* Stats */
.vol-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}

.vol-stat {
  padding: 32px 20px;
  background: #fff;
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  text-align: center;
}

.vol-stat__num {
  margin: 0 0 6px;
  font-size: 1rem;
  color: var(--vol-text-dim);
  letter-spacing: 0.05em;
  line-height: 1.2;
}

.vol-stat__num strong {
  font-size: 2.5rem;
  font-weight: 900;
  color: var(--vol-navy);
  margin-right: 4px;
  font-family: var(--font-en);
}

.vol-stat__label {
  margin: 0;
  font-size: 0.85rem;
  color: var(--vol-text-dim);
}

.vol-stats__note {
  margin: 16px 0 0;
  font-size: 0.85rem;
  color: var(--vol-text-dim);
  text-align: right;
}

.vol-stats__note a {
  color: var(--vol-blue);
  text-decoration: underline;
}

/* Roles */
.vol-roles {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  margin-bottom: 56px;
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}

.vol-role-card {
  background: #fff;
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.vol-role-card__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 20px;
  background: linear-gradient(135deg, var(--vol-navy-deep) 0%, var(--vol-blue) 55%, var(--vol-blue-light) 100%);
  color: #fff;
}

.vol-role-card__head--medical {
  background: linear-gradient(135deg, #7a1f1f 0%, #d34848 55%, #f5a3a3 100%);
}

.vol-role-card__head h3 {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 900;
  letter-spacing: 0.04em;
}

.vol-role-card__type {
  display: inline-block;
  padding: 3px 10px;
  font-size: 0.7rem;
  font-weight: 700;
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.vol-role-card__photo {
  aspect-ratio: 16 / 9;
  background: var(--vol-bg-cool);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--vol-text-dim);
  font-size: 0.85rem;
  overflow: hidden;
}

.vol-role-card__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.vol-role-card__body {
  padding: 20px 24px 24px;
  flex-grow: 1;
}

.vol-role-card__desc {
  margin: 0 0 12px;
  font-size: 0.9rem;
  line-height: 1.85;
  color: var(--vol-text);
  padding-bottom: 12px;
  border-bottom: 1px solid var(--vol-border);
}

.vol-role-card__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.vol-role-card__list li {
  position: relative;
  padding-left: 18px;
  margin-bottom: 6px;
  font-size: 0.875rem;
  color: var(--vol-text);
}

.vol-role-card__list li::before {
  content: "—";
  position: absolute;
  left: 0;
  color: var(--vol-orange);
  font-weight: 700;
}

/* Subhead */
.vol-subhead {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 16px;
  font-size: 1.125rem;
  font-weight: 900;
  color: var(--vol-navy);
  padding-left: 12px;
  border-left: 4px solid var(--vol-blue);
  line-height: 1.4;
}

.vol-subhead__num {
  display: inline-block;
  padding: 4px 12px;
  background: var(--vol-orange);
  color: #fff;
  font-family: var(--font-en);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  border-radius: 4px;
}

/* Schedule table */
.vol-schedule-table {
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 8px;
}

.vol-schedule-table thead th {
  padding: 14px 16px;
  background: var(--vol-bg-cool);
  text-align: left;
  font-weight: 700;
  color: var(--vol-navy);
  font-size: 0.875rem;
  letter-spacing: 0.05em;
}

.vol-schedule-table tbody td {
  padding: 14px 16px;
  border-top: 1px solid var(--vol-border);
  font-size: 0.95rem;
  color: var(--vol-text);
  vertical-align: top;
}

.vol-schedule-table tbody td:first-child {
  font-family: var(--font-en);
  font-weight: 700;
  color: var(--vol-orange);
  width: 160px;
}

.vol-schedule-table tbody td:last-child {
  width: 80px;
  color: var(--vol-text-dim);
}

.vol-schedule-table__note {
  margin: 8px 0 0;
  font-size: 0.85rem;
  color: var(--vol-text-dim);
  text-align: right;
}

/* Flow */
.vol-flow {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.vol-flow__step {
  padding: 28px 16px 24px;
  background: #fff;
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  text-align: center;
  position: relative;
}

.vol-flow__step:not(:last-child)::after {
  content: "›";
  position: absolute;
  right: -14px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.75rem;
  color: var(--vol-orange);
  font-weight: 700;
  z-index: 1;
}

.vol-flow__num {
  width: 48px;
  height: 48px;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: var(--vol-navy);
  color: #fff;
  font-family: var(--font-en);
  font-size: 1.5rem;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
}

.vol-flow__step h3 {
  margin: 0 0 6px;
  font-size: 1rem;
  color: var(--vol-navy);
  font-weight: 900;
}

.vol-flow__step p {
  margin: 0;
  font-size: 0.8125rem;
  color: var(--vol-text-dim);
  line-height: 1.6;
}

/* バナー */
.vol-banner {
  background: linear-gradient(135deg, var(--color-primary-dark) 0%, var(--color-primary) 55%, var(--color-primary-light) 100%);
  color: #fff;
  padding: 40px 0;
}

.vol-banner__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.vol-banner__text h3 {
  margin: 0 0 6px;
  font-size: 1.6875rem;
  font-weight: 900;
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
}

.vol-banner__text p {
  margin: 0;
  font-size: 0.9rem;
  opacity: 0.9;
}

/* CTAをヒーローと同じ平行四辺形に */
.vol-banner .btn--primary {
  clip-path: polygon(12px 0, 100% 0, calc(100% - 12px) 100%, 0 100%);
  border-radius: 0;
}

/* Conditions */
.vol-conditions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-bottom: 32px;
}

.vol-conditions__col {
  background: #fff;
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  overflow: hidden;
}

.vol-conditions__head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 24px;
  background: var(--vol-bg-cool);
  border-bottom: 2px solid var(--vol-orange);
}

.vol-conditions__head--medical {
  border-bottom-color: var(--vol-medical-red);
}

.vol-conditions__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--vol-orange);
  color: #fff;
  border-radius: 50%;
  font-weight: 900;
  font-size: 0.95rem;
}

.vol-conditions__head--medical .vol-conditions__num {
  background: var(--vol-medical-red);
}

.vol-conditions__head h3 {
  margin: 0;
  flex: 1;
  font-size: 1.0625rem;
  font-weight: 900;
  color: var(--vol-navy);
}

.vol-conditions__tag {
  padding: 4px 10px;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--vol-medical-red);
  color: #fff;
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.vol-cond-block {
  padding: 20px 24px;
  border-top: 1px solid var(--vol-border);
}

.vol-cond-block:first-of-type { border-top: 0; }

.vol-cond-block h4 {
  margin: 0 0 12px;
  font-size: 1rem;
  font-weight: 900;
  color: var(--vol-navy);
  padding-left: 10px;
  border-left: 3px solid var(--vol-orange);
}

.vol-cond-block ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.vol-cond-block li {
  position: relative;
  padding-left: 22px;
  margin-bottom: 8px;
  font-size: 0.9rem;
  color: var(--vol-text);
  line-height: 1.7;
}

.vol-cond-block li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: var(--vol-blue);
  font-weight: 700;
}

/* Warning box */
.vol-warning {
  padding: 20px 24px;
  background: var(--vol-warning-bg);
  border-left: 4px solid var(--vol-warning-border);
  border-radius: 4px;
}

.vol-warning h4 {
  margin: 0 0 12px;
  font-size: 1rem;
  font-weight: 900;
  color: var(--vol-text);
}

.vol-warning ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.vol-warning li {
  position: relative;
  padding-left: 16px;
  margin-bottom: 6px;
  font-size: 0.9rem;
  color: var(--vol-text);
  line-height: 1.85;
}

.vol-warning li::before {
  content: "•";
  position: absolute;
  left: 0;
  color: var(--vol-warning-border);
  font-weight: 700;
}

/* FAQ */
.vol-faq {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.vol-faq__item {
  background: #fff;
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  overflow: hidden;
}

.vol-faq__item summary {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 18px 24px;
  background: var(--vol-bg-cool);
  cursor: pointer;
  list-style: none;
  font-weight: 700;
  color: var(--vol-text);
  user-select: none;
}

.vol-faq__item summary::-webkit-details-marker { display: none; }

.vol-faq__item summary::after {
  content: "▼";
  margin-left: auto;
  font-size: 0.75rem;
  color: var(--vol-text-dim, #6b7785);
  transition: transform 0.2s ease;
  flex-shrink: 0;
}

.vol-faq__item[open] summary::after {
  transform: rotate(180deg);
}

.vol-faq__q {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--vol-orange);
  color: #fff;
  border-radius: 4px;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 0.875rem;
  flex-shrink: 0;
}

.vol-faq__qtext {
  flex: 1;
  font-size: 0.95rem;
}

.vol-faq__a {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 18px 24px;
  border-top: 1px solid var(--vol-border);
}

.vol-faq__alabel {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--vol-blue);
  color: #fff;
  border-radius: 4px;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 0.875rem;
  flex-shrink: 0;
}

.vol-faq__a p {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--vol-text);
}

.vol-faq__note {
  margin: 16px 0 0;
  font-size: 0.85rem;
  color: var(--vol-text-dim);
}

/* Form */
.vol-form {
  max-width: 760px;
  margin: 0 auto;
  padding: 40px;
  background: #fff;
  border-radius: 4px;
  border: 1px solid var(--vol-border);
}

.vol-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.vol-form__field {
  display: block;
  margin-bottom: 24px;
}

.vol-form__field--narrow input { max-width: 240px; }

.vol-form__row .vol-form__field { margin-bottom: 0; }
.vol-form__row { margin-bottom: 24px; }

.vol-form__label {
  display: inline-block;
  margin-bottom: 8px;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--vol-navy);
}

.vol-form__req {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--vol-orange);
  color: #fff;
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.vol-form__opt {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--vol-bg-cool);
  color: var(--vol-text-dim);
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.vol-form__req-note {
  font-size: 0.85rem;
  color: var(--vol-text-dim);
  font-weight: 400;
  margin-left: 8px;
}

.vol-form__req-mark { color: var(--vol-orange); font-weight: 700; }

.vol-form__field input,
.vol-form__field select,
.vol-form__field textarea,
.vol-form__fieldset input,
.vol-form__fieldset select {
  width: 100%;
  padding: 12px 14px;
  font-family: inherit;
  font-size: 0.95rem;
  background: #fff;
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  color: var(--vol-text);
  box-sizing: border-box;
}

.vol-form__field input:focus,
.vol-form__field select:focus,
.vol-form__field textarea:focus {
  outline: none;
  border-color: var(--vol-blue);
  box-shadow: 0 0 0 3px rgba(30, 111, 191, 0.15);
}

.vol-form__field textarea {
  resize: vertical;
  min-height: 120px;
}

.vol-form__hint {
  display: block;
  margin-top: 6px;
  font-size: 0.8rem;
  color: var(--vol-text-dim);
}

.vol-form__fieldset {
  margin: 0 0 24px;
  padding: 0;
  border: 0;
}

.vol-form__radios,
.vol-form__checks {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  margin-top: 8px;
}

.vol-form__radio,
.vol-form__check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: var(--vol-bg-alt);
  border: 1px solid var(--vol-border);
  border-radius: 4px;
  font-size: 0.9rem;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}

.vol-form__radio:hover,
.vol-form__check:hover {
  background: var(--vol-bg-cool);
}

.vol-form__radio input[type="radio"],
.vol-form__check input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--vol-orange);
}

.vol-form__check--agree {
  display: flex;
  margin-top: 16px;
  padding: 14px 20px;
  background: var(--vol-bg-cool);
  border: 1px solid var(--vol-border);
}

.vol-form__privacy {
  margin: 24px 0;
  padding: 20px 24px;
  background: var(--vol-bg-alt);
  border: 1px solid var(--vol-border);
  border-radius: 4px;
}

.vol-form__privacy p {
  margin: 0;
  font-size: 0.85rem;
  line-height: 1.85;
  color: var(--vol-text);
}

.vol-form__privacy a {
  color: var(--vol-blue);
  text-decoration: underline;
}

.vol-form__submit {
  text-align: center;
  margin-top: 8px;
}

.vol-form__submit-note {
  margin: 16px 0 0;
  font-size: 0.85rem;
  color: var(--vol-text-dim);
  line-height: 1.85;
}

.vol-form__submit-note a {
  color: var(--vol-blue);
  text-decoration: underline;
}

/* レスポンシブ */
@media (max-width: 900px) {
  .vol-stats { grid-template-columns: repeat(2, 1fr); }
  .vol-roles { grid-template-columns: 1fr; }
  .vol-flow { grid-template-columns: repeat(2, 1fr); }
  .vol-flow__step:not(:last-child)::after { display: none; }
  .vol-conditions { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
  .vol-stats { grid-template-columns: 1fr; }
  .vol-flow { grid-template-columns: 1fr; }

  .vol-banner__inner { flex-direction: column; align-items: stretch; text-align: center; }
  /* スマホ：ハートアイコンをテキストの上＋2倍、見出しは一列に収める */
  .vol-banner__text h3 { display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: 1.5rem; }
  .vol-banner__text h3 svg { width: 50px; height: 50px; }

  .vol-form { padding: 24px 20px; }
  .vol-form__row { grid-template-columns: 1fr; gap: 0; }
  .vol-form__row .vol-form__field { margin-bottom: 24px; }

  .vol-schedule-table thead { display: none; }
  .vol-schedule-table tbody td { display: block; padding: 6px 16px; border-top: 0; }
  .vol-schedule-table tbody tr { display: block; padding: 12px 0; border-top: 1px solid var(--vol-border); }
  .vol-schedule-table tbody td:first-child { padding-top: 12px; width: auto; }
  .vol-schedule-table tbody td:last-child { padding-bottom: 12px; width: auto; }
}

/* ==========================================================================
   大会結果ページ（.results-page スコープ）
   ========================================================================== */
.results-page {
  --rs-navy: #0F4D8C;
  --rs-navy-deep: #0a3866;
  --rs-blue: #1E6FBF;
  --rs-blue-light: #62B1FF;
  --rs-cyan: #00B0DA;
  --rs-cyan-deep: #0099BD;
  --rs-orange: #F07800;
  --rs-text: #2a2a2a;
  --rs-text-dim: #6b6b6b;
  --rs-bg: #ffffff;
  --rs-bg-alt: #f5f9fd;
  --rs-bg-cool: #eef3f9;
  --rs-border: #d9e3ee;
}

/* ヒーロー */
.rs-hero {
  position: relative;
  background:
    linear-gradient(135deg, rgba(15, 77, 140, 0.78) 0%, rgba(30, 111, 191, 0.62) 50%, rgba(98, 177, 255, 0.55) 100%) 0 0 / cover no-repeat,
    url('assets/images/results-hero.png') 60% 22% / cover no-repeat;
  color: #fff;
  padding: 64px 0 80px;
}

.rs-hero__inner {
  max-width: var(--container-max);
}

.rs-hero__en {
  margin: 0 0 12px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.rs-hero__title {
  margin: 0 0 16px;
  font-size: clamp(2rem, 4.5vw, 2.75rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  padding-left: 16px;
  border-left: 6px solid var(--rs-orange);
  line-height: 1.2;
}

.rs-hero__lead {
  margin: 0;
  font-size: 0.95rem;
  line-height: 2;
  opacity: 0.95;
  max-width: 760px;
}

/* タブ */
.rs-tabs-wrap {
  position: sticky;
  top: 80px;
  z-index: 50;
  background: #fff;
  border-bottom: 1px solid var(--rs-border);
  box-shadow: 0 2px 8px rgba(15, 77, 140, 0.04);
}

.rs-tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.rs-tab {
  position: relative;
  padding: 18px 16px;
  background: transparent;
  border: 0;
  border-bottom: 3px solid transparent;
  cursor: pointer;
  font-family: inherit;
  text-align: center;
  transition: background 0.2s ease, border-color 0.2s ease;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.rs-tab:hover {
  background: var(--rs-bg-alt);
}

.rs-tab__name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--rs-text-dim);
  letter-spacing: 0.05em;
  transition: color 0.2s ease;
}

.rs-tab__sub {
  font-size: 0.75rem;
  color: var(--rs-text-dim);
  font-family: var(--font-en);
  letter-spacing: 0.1em;
  opacity: 0.8;
}

.rs-tab.is-active {
  border-bottom-color: var(--rs-blue);
  background: var(--rs-bg-alt);
}

.rs-tab.is-active .rs-tab__name {
  color: var(--rs-navy);
}

.rs-tab.is-active .rs-tab__sub {
  color: var(--rs-blue);
  opacity: 1;
}

/* パネル */
.rs-panel { display: none; }
.rs-panel.is-active { display: block; }

/* WEB完走証セクション */
.rs-cert {
  margin: 0 0 32px;
  background: #fff;
  border: 1px solid var(--rs-border);
  border-radius: 4px;
  overflow: hidden;
}

.rs-cert__head {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px;
  background: var(--rs-cyan);
  color: #fff;
}

.rs-cert__icon {
  font-size: 1.5rem;
}

.rs-cert__title {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 900;
  letter-spacing: 0.05em;
}

.rs-cert__sub {
  margin: 2px 0 0;
  font-family: var(--font-en);
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  opacity: 0.85;
}

.rs-cert__body {
  padding: 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.rs-cert__body p {
  margin: 0;
  flex: 1;
  min-width: 240px;
  font-size: 0.95rem;
  color: var(--rs-text);
  line-height: 1.85;
}

.rs-cert__btn {
  color: var(--rs-cyan);
  border-color: var(--rs-cyan);
  flex-shrink: 0;
}

.rs-cert__btn:hover {
  background: var(--rs-cyan);
  color: #fff;
}

/* 最新結果カード */
.rs-latest {
  margin: 0 0 16px;
  padding: 32px;
  background: #fff;
  border: 1px solid var(--rs-border);
  border-radius: 4px;
  box-shadow: 0 2px 12px rgba(15, 77, 140, 0.05);
}

.rs-latest__head {
  margin-bottom: 24px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--rs-border);
}

.rs-latest__edition {
  display: inline-block;
  margin: 0 0 8px;
  padding: 4px 12px;
  background: var(--rs-blue);
  color: #fff;
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  border-radius: 3px;
}

.rs-latest__title {
  margin: 0 0 8px;
  font-size: 1.375rem;
  font-weight: 900;
  color: var(--rs-navy);
  letter-spacing: 0.04em;
}

.rs-latest__meta {
  margin: 0 0 4px;
}

.rs-latest__date {
  font-size: 0.95rem;
  color: var(--rs-text-dim);
}

.rs-latest__venue {
  margin: 0;
  font-size: 0.9rem;
  color: var(--rs-text-dim);
}

/* 統計 */
.rs-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  margin: 0 0 28px;
  padding: 0;
  list-style: none;
  border: 1px solid var(--rs-border);
  border-radius: 4px;
  overflow: hidden;
}

.rs-stat {
  padding: 20px 16px;
  text-align: center;
  border-right: 1px solid var(--rs-border);
  background: var(--rs-bg-alt);
}

.rs-stat:last-child { border-right: 0; }

.rs-stat__label {
  margin: 0 0 8px;
  font-size: 0.8rem;
  color: var(--rs-text-dim);
  letter-spacing: 0.05em;
}

.rs-stat__value {
  margin: 0;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 2px;
}

.rs-stat__num {
  font-family: var(--font-en);
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: 900;
  color: var(--rs-cyan-deep);
  letter-spacing: 0.02em;
  line-height: 1;
}

.rs-stat__unit {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--rs-text-dim);
}

.rs-latest__actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.rs-latest__actions .btn {
  flex: 1;
  min-width: 240px;
}

/* PDF注記 */
.rs-pdf-note {
  margin: 0 0 40px;
  padding: 12px 18px;
  background: var(--rs-bg-cool);
  border-radius: 4px;
  font-size: 0.85rem;
  color: var(--rs-text-dim);
  line-height: 1.7;
}

.rs-pdf-note span {
  margin-right: 6px;
  color: var(--rs-orange);
}

.rs-pdf-note a {
  color: var(--rs-orange);
  text-decoration: underline;
  margin-left: 6px;
}

/* 過去の大会結果 */
.rs-past {
  background: #fff;
  border: 1px solid var(--rs-border);
  border-radius: 4px;
  overflow: hidden;
}

.rs-past__head {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px;
  background: var(--rs-cyan);
  color: #fff;
}

.rs-past__head-icon { font-size: 1.5rem; }

.rs-past__title {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 900;
  letter-spacing: 0.05em;
}

.rs-past__sub {
  margin: 2px 0 0;
  font-family: var(--font-en);
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  opacity: 0.85;
}

.rs-past__list {
  padding: 0;
}

.rs-past__item {
  border-bottom: 1px solid var(--rs-border);
}

.rs-past__item:last-child { border-bottom: 0; }

.rs-past__summary {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  background: #fff;
  transition: background 0.15s ease;
}

.rs-past__summary::-webkit-details-marker { display: none; }

.rs-past__summary:hover { background: var(--rs-bg-alt); }

.rs-past__chevron {
  font-size: 0.7rem;
  color: var(--rs-blue);
  transition: transform 0.2s ease;
}

.rs-past__item[open] > .rs-past__summary > .rs-past__chevron {
  transform: rotate(90deg);
}

.rs-past__year {
  font-family: var(--font-en);
  font-weight: 900;
  font-size: 1rem;
  color: var(--rs-navy);
  letter-spacing: 0.05em;
}

.rs-past__edition {
  flex: 1;
  font-size: 0.95rem;
  color: var(--rs-text);
  font-weight: 700;
}

.rs-past__body {
  padding: 16px 24px 24px;
  background: var(--rs-bg-alt);
  border-top: 1px solid var(--rs-border);
}

.rs-past__pdfs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 8px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.rs-past__pdf-link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: #fff;
  border: 1px solid var(--rs-border);
  border-radius: 4px;
  font-size: 0.9rem;
  color: var(--rs-text);
  text-decoration: none;
  transition: all 0.15s ease;
}

.rs-past__pdf-link:hover {
  border-color: var(--rs-blue);
  background: var(--rs-bg-cool);
  color: var(--rs-navy);
  transform: translateY(-1px);
  opacity: 1;
}

.rs-past__pdf-icon { font-size: 1.1rem; flex-shrink: 0; }
.rs-past__pdf-label { flex: 1; }

.rs-past__pdf-link--runnet {
  border-color: var(--rs-orange);
  color: var(--rs-orange);
  font-weight: 700;
}

.rs-past__pdf-link--runnet:hover {
  background: var(--rs-orange);
  color: #fff;
}

.rs-past__empty {
  margin: 0 0 12px;
  font-size: 0.9rem;
  color: var(--rs-text-dim);
}

/* 種目別セクション */
.rs-past__section + .rs-past__section { margin-top: 20px; }

.rs-past__distance {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 10px;
  padding: 6px 12px;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--rs-navy);
  background: #fff;
  border-left: 4px solid var(--rs-blue);
  border-radius: 3px;
}

.rs-past__runnet-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 16px;
  padding: 10px 18px;
  background: #fff;
  border: 1px solid var(--rs-orange);
  border-radius: 4px;
  color: var(--rs-orange);
  font-size: 0.9rem;
  font-weight: 700;
  text-decoration: none;
  transition: all 0.15s ease;
}

.rs-past__runnet-link:hover {
  background: var(--rs-orange);
  color: #fff;
}

/* 旧サイトリンク */
.rs-archive {
  padding: 32px 24px;
  background: var(--rs-bg-cool);
  border-top: 1px solid var(--rs-border);
  text-align: center;
}

.rs-archive p {
  margin: 0 0 16px;
  font-size: 0.95rem;
  color: var(--rs-text);
}

.rs-archive__btn {
  color: var(--rs-blue);
  border-color: var(--rs-blue);
}

.rs-archive__btn:hover {
  background: var(--rs-blue);
  color: #fff;
}

/* レスポンシブ */
@media (max-width: 900px) {
  .rs-stats { grid-template-columns: repeat(2, 1fr); }
  .rs-stat { border-bottom: 1px solid var(--rs-border); }
  .rs-stat:nth-child(2) { border-right: 0; }
  .rs-stat:nth-child(3),
  .rs-stat:nth-child(4) { border-bottom: 0; }
  .rs-stat:nth-child(4) { border-right: 0; }
}

@media (max-width: 768px) {
  .rs-hero { padding: 48px 0 56px; }
  .rs-tabs-wrap { top: 0; }
  .rs-tab { padding: 12px 8px; }
  .rs-tab__name { font-size: 0.8rem; }
  .rs-tab__sub { font-size: 0.65rem; }

  .rs-cert__body { flex-direction: column; align-items: stretch; }
  .rs-cert__btn { width: 100%; }

  .rs-latest { padding: 24px 20px; }
  .rs-latest__actions { flex-direction: column; }
  .rs-latest__actions .btn { min-width: 0; width: 100%; }

  .rs-past__summary { padding: 14px 16px; gap: 12px; }
  .rs-past__body { padding: 12px 16px 20px; }
  .rs-past__pdfs { grid-template-columns: 1fr; }
}

/* ==========================================================================
   フォトギャラリーページ（.gallery-page スコープ）
   ========================================================================== */
.gallery-page {
  --gp-navy: #0F4D8C;
  --gp-navy-deep: #0a3866;
  --gp-blue: #1E6FBF;
  --gp-blue-light: #62B1FF;
  --gp-cyan: #00B0DA;
  --gp-orange: #F07800;
  --gp-text: #2a2a2a;
  --gp-text-dim: #6b6b6b;
  --gp-bg: #ffffff;
  --gp-bg-alt: #f5f9fd;
  --gp-bg-cool: #eef3f9;
  --gp-border: #d9e3ee;

  /* レース別カラー */
  --gp-red: #c94747;
  --gp-red-dark: #9d2d2d;
  --gp-green: #2c8a4d;
  --gp-green-dark: #1f6638;
  --gp-purple: #7b4fc4;
  --gp-purple-dark: #59399a;
}

/* ヒーロー */
.gp-hero {
  position: relative;
  background:
    linear-gradient(135deg, rgba(15, 77, 140, 0.78) 0%, rgba(30, 111, 191, 0.62) 50%, rgba(98, 177, 255, 0.55) 100%),
    url('assets/images/gallery-hero.png') center / cover no-repeat;
  color: #fff;
  padding: 64px 0 80px;
}

.gp-hero__inner { max-width: var(--container-max); }

.gp-hero__en {
  margin: 0 0 12px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.gp-hero__title {
  margin: 0 0 12px;
  font-size: clamp(2rem, 4.5vw, 2.75rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  padding-left: 16px;
  border-left: 6px solid var(--gp-orange);
  line-height: 1.2;
}

.gp-hero__lead {
  margin: 0;
  font-size: 0.95rem;
  opacity: 0.9;
}

/* セクションヘッド（cyanバー） */
.gp-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0 0 32px;
  padding: 20px 24px;
  background: var(--gp-cyan);
  color: #fff;
  border-radius: 4px;
  flex-wrap: wrap;
}

.gp-section-head__main {
  display: flex;
  align-items: center;
  gap: 14px;
}

.gp-section-head__icon { font-size: 1.5rem; }

.gp-section-head__title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 900;
  letter-spacing: 0.05em;
}

.gp-section-head__sub {
  margin: 4px 0 0;
  font-family: var(--font-en);
  font-size: 0.75rem;
  letter-spacing: 0.2em;
  opacity: 0.85;
}

.gp-badge {
  display: inline-block;
  padding: 6px 14px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.25);
  color: #fff;
  flex-shrink: 0;
}

.gp-badge--new {
  background: var(--gp-orange);
}

/* 大会セレクター */
.gp-album-selector {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 24px;
  padding: 16px 20px;
  background: var(--gp-bg-cool);
  border: 1px solid var(--gp-border);
  border-radius: 4px;
  flex-wrap: wrap;
}

.gp-album-selector__label {
  font-weight: 700;
  color: var(--gp-navy);
  font-size: 0.95rem;
  white-space: nowrap;
}

.gp-album-selector__select {
  flex: 1;
  min-width: 240px;
  padding: 10px 14px;
  font-family: inherit;
  font-size: 0.95rem;
  background: #fff;
  border: 1px solid var(--gp-border);
  border-radius: 4px;
  color: var(--gp-text);
  cursor: pointer;
}

.gp-album-selector__select:focus {
  outline: none;
  border-color: var(--gp-blue);
  box-shadow: 0 0 0 3px rgba(30, 111, 191, 0.15);
}

/* アルバム表示 */
.gp-album { display: none; }
.gp-album.is-active { display: block; }

.gp-album__title {
  margin: 0 0 20px;
  padding: 8px 0 8px 14px;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--gp-navy, #0F4D8C);
  border-left: 4px solid var(--gp-orange, #F07800);
}

.gp-album__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

.gp-photo {
  background: transparent;
  border: 0;
  padding: 0;
  cursor: pointer;
  font-family: inherit;
  display: flex;
  flex-direction: column;
  text-align: left;
}

.gp-photo__placeholder {
  position: relative;
  aspect-ratio: 4 / 3;
  border-radius: 4px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

/* カラフルなプレースホルダー（実画像入るまで） */
.gp-photo__placeholder[data-color="0"]  { background: linear-gradient(135deg, #5DADE2, #2874A6); }
.gp-photo__placeholder[data-color="1"]  { background: linear-gradient(135deg, #58D68D, #1E8449); }
.gp-photo__placeholder[data-color="2"]  { background: linear-gradient(135deg, #F39C12, #B9770E); }
.gp-photo__placeholder[data-color="3"]  { background: linear-gradient(135deg, #BB8FCE, #7D3C98); }
.gp-photo__placeholder[data-color="4"]  { background: linear-gradient(135deg, #EC7063, #A93226); }
.gp-photo__placeholder[data-color="5"]  { background: linear-gradient(135deg, #5DADE2, #1A5490); }
.gp-photo__placeholder[data-color="6"]  { background: linear-gradient(135deg, #48C9B0, #117864); }
.gp-photo__placeholder[data-color="7"]  { background: linear-gradient(135deg, #F4D03F, #B7950B); }
.gp-photo__placeholder[data-color="8"]  { background: linear-gradient(135deg, #58D68D, #239B56); }
.gp-photo__placeholder[data-color="9"]  { background: linear-gradient(135deg, #EC7063, #922B21); }
.gp-photo__placeholder[data-color="10"] { background: linear-gradient(135deg, #5DADE2, #21618C); }
.gp-photo__placeholder[data-color="11"] { background: linear-gradient(135deg, #BB8FCE, #6C3483); }

.gp-photo:hover .gp-photo__placeholder,
.gp-photo:hover .gp-photo__img-wrap {
  transform: translateY(-2px);
  box-shadow: 0 8px 16px rgba(15, 77, 140, 0.2);
}

.gp-photo__icon {
  font-size: 2rem;
  opacity: 0.7;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
}

/* 実画像表示用ラッパー（プレースホルダーと同等のboxスタイル） */
.gp-photo__img-wrap {
  position: relative;
  aspect-ratio: 4 / 3;
  border-radius: 4px;
  overflow: hidden;
  background: #eef3f9;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.gp-photo__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ライトボックス内の実画像表示 */
.gp-lightbox__image img {
  max-width: 100%;
  max-height: 80vh;
  width: auto;
  height: auto;
  display: block;
  margin: 0 auto;
  border-radius: 4px;
}

.gp-photo__caption {
  margin-top: 8px;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--gp-text);
  text-align: center;
}

.gp-album__empty {
  padding: 56px 24px;
  text-align: center;
  background: var(--gp-bg-alt);
  border: 1px dashed var(--gp-border);
  border-radius: 4px;
}

.gp-album__empty-icon {
  display: block;
  font-size: 3rem;
  margin-bottom: 12px;
}

.gp-album__empty p {
  margin: 0;
  font-size: 0.95rem;
  color: var(--gp-text);
  line-height: 1.85;
}

.gp-album__empty strong { color: var(--gp-orange); }

.gp-album__hint {
  margin: 20px 0 0;
  padding: 10px 16px;
  background: var(--gp-bg-cool);
  border-radius: 4px;
  font-size: 0.85rem;
  color: var(--gp-text-dim);
  text-align: center;
}

.gp-album__hint span {
  margin-right: 6px;
}

/* 「もっと見る」：非表示の写真 */
.gp-photo.is-hidden {
  display: none;
}
.gp-album__more-wrap {
  margin-top: 20px;
  text-align: center;
}
.gp-album__more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 11px 32px;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--color-primary, #0F4D8C);
  background: #fff;
  border: 2px solid var(--color-primary, #0F4D8C);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.gp-album__more:hover {
  background: var(--color-primary, #0F4D8C);
  color: #fff;
}
.gp-album__more-count {
  font-size: 0.82rem;
  font-weight: 600;
  opacity: 0.85;
}

/* アーカイブセクション */
.gp-archive__lead {
  margin: 0 0 32px;
  padding: 16px 20px;
  background: #fff8db;
  border-left: 4px solid #f0c000;
  border-radius: 4px;
  font-size: 0.9rem;
  line-height: 1.85;
  color: var(--gp-text);
}

.gp-archive__lead small {
  display: block;
  margin-top: 6px;
  font-size: 0.8rem;
  color: var(--gp-text-dim);
}

.gp-archive {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 40px;
}

.gp-archive__group {
  background: #fff;
  border: 1px solid var(--gp-border);
  border-radius: 4px;
  overflow: hidden;
  border-left-width: 4px;
}

.gp-archive__group--red { border-left-color: var(--gp-red); }
.gp-archive__group--green { border-left-color: var(--gp-green); }
.gp-archive__group--purple { border-left-color: var(--gp-purple); }

.gp-archive__summary {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 24px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  background: var(--gp-bg-cool);
  transition: background 0.15s ease;
}

.gp-archive__summary::-webkit-details-marker { display: none; }

.gp-archive__summary:hover {
  background: var(--gp-bg-alt);
}

.gp-archive__color-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
}

.gp-archive__color-dot--red { background: var(--gp-red); }
.gp-archive__color-dot--green { background: var(--gp-green); }
.gp-archive__color-dot--purple { background: var(--gp-purple); }

.gp-archive__name {
  font-size: 1rem;
  font-weight: 900;
  color: var(--gp-navy);
  letter-spacing: 0.04em;
}

.gp-archive__count {
  flex: 1;
  font-size: 0.85rem;
  color: var(--gp-text-dim);
}

.gp-archive__chevron {
  font-size: 0.7rem;
  color: var(--gp-blue);
  transition: transform 0.2s ease;
}

.gp-archive__group[open] > .gp-archive__summary > .gp-archive__chevron {
  transform: rotate(180deg);
}

.gp-archive__body {
  padding: 24px;
  border-top: 1px solid var(--gp-border);
}

.gp-archive__editions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 12px;
  list-style: none;
  margin: 0 0 24px;
  padding: 0;
}

.gp-edition__link {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  padding: 12px;
  background: #fff;
  border: 1px solid var(--gp-border);
  border-radius: 4px;
  text-decoration: none;
  color: inherit;
  transition: all 0.2s ease;
}

.gp-edition__link:hover {
  border-color: var(--gp-blue);
  background: var(--gp-bg-alt);
  transform: translateY(-2px);
  opacity: 1;
  box-shadow: 0 4px 12px rgba(15, 77, 140, 0.1);
}

.gp-edition__thumb {
  width: 56px;
  height: 56px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 1.5rem;
  color: rgba(255, 255, 255, 0.7);
}

.gp-edition__thumb--red { background: linear-gradient(135deg, var(--gp-red), var(--gp-red-dark)); }
.gp-edition__thumb--green { background: linear-gradient(135deg, var(--gp-green), var(--gp-green-dark)); }
.gp-edition__thumb--purple { background: linear-gradient(135deg, var(--gp-purple), var(--gp-purple-dark)); }

.gp-edition--archive .gp-edition__thumb {
  background: linear-gradient(135deg, #b0b0b0, #707070);
}

.gp-edition__info {
  flex: 1 1 calc(100% - 56px - 12px);
  min-width: 0;
}

.gp-edition__title {
  margin: 0 0 2px;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--gp-navy);
}

.gp-edition__date {
  margin: 0;
  font-size: 0.8rem;
  color: var(--gp-text-dim);
}

.gp-edition__btn {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--gp-blue);
  white-space: nowrap;
  padding: 6px 10px;
  background: var(--gp-bg-alt);
  border-radius: 4px;
  flex-shrink: 0;
  margin-left: calc(56px + 12px);
}

.gp-edition--archive .gp-edition__btn {
  color: var(--gp-text-dim);
}

.gp-archive__more {
  text-align: center;
  padding-top: 16px;
  border-top: 1px dashed var(--gp-border);
}

.gp-archive__footer {
  margin-top: 32px;
  padding: 32px 24px;
  background: var(--gp-navy);
  color: #fff;
  border-radius: 4px;
  text-align: center;
}

.gp-archive__footer p {
  margin: 0 0 16px;
  font-size: 0.9rem;
  opacity: 0.95;
}

/* ライトボックス */
.gp-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.92);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  animation: gp-fade-in 0.2s ease;
}

.gp-lightbox[hidden] { display: none; }

@keyframes gp-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

.gp-lightbox__close,
.gp-lightbox__prev,
.gp-lightbox__next {
  position: absolute;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: #fff;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  font-size: 1.5rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  font-family: inherit;
  line-height: 1;
}

.gp-lightbox__close:hover,
.gp-lightbox__prev:hover,
.gp-lightbox__next:hover {
  background: rgba(255, 255, 255, 0.25);
  transform: scale(1.05);
}

.gp-lightbox__close { top: 24px; right: 24px; }
.gp-lightbox__prev { left: 24px; top: 50%; transform: translateY(-50%); }
.gp-lightbox__next { right: 24px; top: 50%; transform: translateY(-50%); }
.gp-lightbox__prev:hover { transform: translateY(-50%) scale(1.05); }
.gp-lightbox__next:hover { transform: translateY(-50%) scale(1.05); }

.gp-lightbox__inner {
  max-width: 1100px;
  width: 100%;
  text-align: center;
}

.gp-lightbox__image {
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, #5DADE2, #2874A6);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
}

.gp-lightbox__image span { font-size: 5rem; opacity: 0.5; }

.gp-lightbox__caption {
  margin: 0 0 4px;
  color: #fff;
  font-size: 1.0625rem;
  font-weight: 700;
  letter-spacing: 0.05em;
}

.gp-lightbox__counter {
  margin: 0;
  color: rgba(255, 255, 255, 0.6);
  font-family: var(--font-en);
  font-size: 0.9rem;
  letter-spacing: 0.1em;
}

/* レスポンシブ */
@media (max-width: 900px) {
  .gp-album__grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 768px) {
  .gp-hero { padding: 48px 0 56px; }
  .gp-section-head { flex-direction: column; align-items: flex-start; padding: 16px 20px; }
  .gp-album__grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .gp-photo__caption { font-size: 0.75rem; }
  .gp-album-selector { flex-direction: column; align-items: stretch; }
  .gp-album-selector__select { min-width: 0; }

  .gp-archive__editions { grid-template-columns: 1fr; }
  .gp-edition__link { padding: 10px; }
  .gp-edition__thumb { width: 48px; height: 48px; }
  .gp-edition__btn { padding: 4px 8px; font-size: 0.75rem; }

  .gp-lightbox__close,
  .gp-lightbox__prev,
  .gp-lightbox__next { width: 40px; height: 40px; font-size: 1.25rem; }
  .gp-lightbox__close { top: 16px; right: 16px; }
  .gp-lightbox__prev { left: 12px; }
  .gp-lightbox__next { right: 12px; }
}

/* ==========================================================================
   お問い合わせページ（.contact-page スコープ）
   ========================================================================== */
.contact-page {
  --ct-navy: #0F4D8C;
  --ct-navy-deep: #0a3866;
  --ct-blue: #1E6FBF;
  --ct-orange: #F07800;
  --ct-orange-hover: #C95F00;
  --ct-text: #2a2a2a;
  --ct-text-dim: #6b6b6b;
  --ct-bg: #ffffff;
  --ct-bg-alt: #f5f9fd;
  --ct-bg-cool: #eef3f9;
  --ct-border: #d9e3ee;
  --ct-warning-bg: #fff8db;
  --ct-warning-border: #f0c000;
}

/* ヒーロー */
.ct-hero {
  position: relative;
  background:
    linear-gradient(135deg, rgba(15, 77, 140, 0.78) 0%, rgba(30, 111, 191, 0.62) 50%, rgba(98, 177, 255, 0.55) 100%),
    url('assets/images/contact-hero.png') center / cover no-repeat;
  color: #fff;
  padding: 64px 0 80px;
}

.ct-hero__inner { max-width: var(--container-max); }

.ct-hero__en {
  margin: 0 0 12px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.ct-hero__title {
  margin: 0 0 16px;
  font-size: clamp(2rem, 4.5vw, 2.75rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  padding-left: 16px;
  border-left: 6px solid var(--ct-orange);
  line-height: 1.2;
}

.ct-hero__lead {
  margin: 0;
  font-size: 0.95rem;
  line-height: 2;
  opacity: 0.95;
  max-width: 720px;
}

.ct-hero__lead strong {
  color: #FFD700;
  font-weight: 700;
}

/* FAQバナー */
.ct-faq-banner {
  padding: 24px 0;
  background: var(--ct-warning-bg);
  border-top: 1px solid var(--ct-warning-border);
  border-bottom: 1px solid var(--ct-warning-border);
}

.ct-faq-banner__inner {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}

.ct-faq-banner__icon { font-size: 2rem; }

.ct-faq-banner__text {
  flex: 1;
  min-width: 240px;
}

.ct-faq-banner__text h2 {
  margin: 0 0 4px;
  font-size: 1.0625rem;
  font-weight: 900;
  color: var(--ct-navy);
}

.ct-faq-banner__text p {
  margin: 0;
  font-size: 0.9rem;
  color: var(--ct-text);
}

/* eyebrow */
.ct-eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
}

.ct-eyebrow__line {
  display: inline-block;
  width: 32px;
  height: 3px;
  background: var(--ct-orange);
  border-radius: 2px;
}

.ct-eyebrow__en {
  font-family: var(--font-en);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.25em;
  color: var(--ct-text-dim);
  text-transform: uppercase;
}

.ct-h2 {
  margin: 0 0 32px;
  font-size: clamp(1.5rem, 3vw, 1.875rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  color: var(--ct-navy);
}

/* 3つの連絡方法 */
.ct-methods {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.ct-method {
  display: flex;
  flex-direction: column;
  padding: 32px 24px;
  background: #fff;
  border: 2px solid var(--ct-border);
  border-radius: 4px;
  text-align: center;
  text-decoration: none;
  color: inherit;
  transition: all 0.2s ease;
}

.ct-method:hover {
  border-color: var(--ct-blue);
  transform: translateY(-4px);
  box-shadow: 0 12px 24px rgba(15, 77, 140, 0.12);
  opacity: 1;
}

.ct-method--primary {
  border-color: var(--ct-orange);
  background: linear-gradient(135deg, #fff8eb, #ffffff);
}

.ct-method--primary:hover {
  border-color: var(--ct-orange-hover);
  box-shadow: 0 12px 24px rgba(240, 120, 0, 0.15);
}

.ct-method--info {
  cursor: default;
}

.ct-method--info:hover {
  transform: none;
  border-color: var(--ct-border);
  box-shadow: none;
}

.ct-method__icon {
  font-size: 3rem;
  margin-bottom: 16px;
}

.ct-method__title {
  margin: 0 0 12px;
  font-size: 1.125rem;
  font-weight: 900;
  color: var(--ct-navy);
}

.ct-method__desc {
  margin: 0 0 20px;
  flex-grow: 1;
  font-size: 0.9rem;
  line-height: 1.85;
  color: var(--ct-text);
}

.ct-method__desc strong {
  font-family: var(--font-en);
  font-size: 1.25rem;
  color: var(--ct-navy);
  font-weight: 900;
  letter-spacing: 0.04em;
}

.ct-method__btn {
  display: inline-block;
  padding: 10px 20px;
  background: var(--ct-orange);
  color: #fff;
  border-radius: 4px;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.05em;
}

.ct-method:hover .ct-method__btn {
  background: var(--ct-orange-hover);
}

.ct-method__btn--info {
  background: var(--ct-bg-cool);
  color: var(--ct-text-dim);
  cursor: default;
}

.ct-method--primary .ct-method__btn {
  background: var(--ct-orange);
}

/* 事務局情報 */
.ct-office {
  max-width: 720px;
  margin: 0 auto;
  background: #fff;
  border: 1px solid var(--ct-border);
  border-radius: 4px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(15, 77, 140, 0.05);
}

.ct-office__head {
  padding: 16px 24px;
  background: var(--ct-navy);
  color: #fff;
}

.ct-office__head h3 {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 900;
  letter-spacing: 0.05em;
}

.ct-office__list {
  margin: 0;
  display: grid;
  grid-template-columns: 140px 1fr;
}

.ct-office__list dt {
  padding: 16px 24px;
  background: var(--ct-bg-cool);
  border-bottom: 1px solid var(--ct-border);
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--ct-navy);
  letter-spacing: 0.05em;
}

.ct-office__list dd {
  margin: 0;
  padding: 16px 24px;
  border-bottom: 1px solid var(--ct-border);
  font-size: 0.95rem;
  color: var(--ct-text);
  line-height: 1.85;
}

.ct-office__list dt:last-of-type,
.ct-office__list dd:last-of-type { border-bottom: 0; }

.ct-office__list small {
  font-size: 0.8rem;
  color: var(--ct-text-dim);
}

.ct-office__list a {
  font-family: var(--font-en);
  font-size: 1.125rem;
  font-weight: 900;
  color: var(--ct-orange);
  text-decoration: underline;
  letter-spacing: 0.04em;
}

/* フォーム */
.ct-form-lead {
  margin: 0 0 24px;
  font-size: 0.95rem;
  color: var(--ct-text);
}

.ct-form-lead__req {
  font-size: 0.85rem;
  color: var(--ct-text-dim);
  margin-left: 8px;
}

.ct-form-lead__mark { color: var(--ct-orange); font-weight: 700; }

.ct-form {
  max-width: 760px;
  margin: 0 auto;
  padding: 40px;
  background: var(--ct-bg-alt);
  border-radius: 4px;
  border: 1px solid var(--ct-border);
}

.ct-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 24px;
}

.ct-form__field {
  display: block;
  margin-bottom: 24px;
}

.ct-form__field--narrow input { max-width: 240px; }

.ct-form__row .ct-form__field { margin-bottom: 0; }

.ct-form__label {
  display: inline-block;
  margin-bottom: 8px;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--ct-navy);
}

.ct-form__req {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--ct-orange);
  color: #fff;
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.ct-form__opt {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--ct-bg-cool);
  color: var(--ct-text-dim);
  border-radius: 3px;
  letter-spacing: 0.05em;
}

.ct-form__field input,
.ct-form__field select,
.ct-form__field textarea,
.ct-form__captcha input {
  width: 100%;
  padding: 12px 14px;
  font-family: inherit;
  font-size: 0.95rem;
  background: #fff;
  border: 1px solid var(--ct-border);
  border-radius: 4px;
  color: var(--ct-text);
  box-sizing: border-box;
}

.ct-form__field input:focus,
.ct-form__field select:focus,
.ct-form__field textarea:focus,
.ct-form__captcha input:focus {
  outline: none;
  border-color: var(--ct-blue);
  box-shadow: 0 0 0 3px rgba(30, 111, 191, 0.15);
}

.ct-form__field textarea {
  resize: vertical;
  min-height: 140px;
}

.ct-form__hint {
  display: block;
  margin-top: 6px;
  font-size: 0.8rem;
  color: var(--ct-text-dim);
}

.ct-form__fieldset {
  margin: 0 0 24px;
  padding: 0;
  border: 0;
}

.ct-form__radios {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  margin-top: 8px;
}

.ct-form__radio {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid var(--ct-border);
  border-radius: 4px;
  font-size: 0.9rem;
  cursor: pointer;
  transition: all 0.15s ease;
}

.ct-form__radio:hover {
  background: var(--ct-bg-cool);
  border-color: var(--ct-blue);
}

.ct-form__radio:has(input:checked) {
  background: var(--ct-bg-cool);
  border-color: var(--ct-orange);
  border-width: 2px;
  padding: 13px 15px;
}

.ct-form__radio input[type="radio"] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--ct-orange);
  flex-shrink: 0;
}

/* キャプチャ */
.ct-form__captcha {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  background: #fff;
  border: 1px solid var(--ct-border);
  border-radius: 4px;
  flex-wrap: wrap;
}

.ct-form__captcha-q {
  flex: 1;
  min-width: 200px;
  font-size: 0.9rem;
  color: var(--ct-text);
  font-weight: 700;
}

.ct-form__captcha input {
  width: 80px !important;
  text-align: center;
  font-size: 1.25rem;
  font-weight: 700;
  letter-spacing: 0.1em;
}

/* プライバシー */
.ct-form__privacy {
  margin: 24px 0;
  padding: 20px 24px;
  background: #fff;
  border: 1px solid var(--ct-border);
  border-radius: 4px;
}

.ct-form__privacy p {
  margin: 0 0 16px;
  font-size: 0.85rem;
  line-height: 1.85;
  color: var(--ct-text-dim);
}

.ct-form__privacy a {
  color: var(--ct-blue);
  text-decoration: underline;
}

.ct-form__check {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 20px;
  background: var(--ct-bg-cool);
  border: 1px solid var(--ct-border);
  border-radius: 4px;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--ct-text);
  cursor: pointer;
}

.ct-form__check:hover {
  background: var(--ct-bg-alt);
}

.ct-form__check input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--ct-orange);
  flex-shrink: 0;
}

.ct-form__submit {
  text-align: center;
  margin-top: 8px;
}

.ct-form__submit-note {
  margin: 16px 0 0;
  font-size: 0.85rem;
  color: var(--ct-text-dim);
  line-height: 1.85;
}

/* 条件付き表示 */
[data-show-when-category] {
  display: none;
}
[data-show-when-category].is-shown {
  display: block;
}

/* レスポンシブ */
@media (max-width: 900px) {
  .ct-methods { grid-template-columns: 1fr; }
  .ct-form__radios { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
  .ct-hero { padding: 48px 0 56px; }

  .ct-faq-banner__inner { flex-direction: column; align-items: stretch; text-align: center; }

  .ct-office__list { grid-template-columns: 1fr; }
  .ct-office__list dt { padding: 12px 16px; border-bottom: 0; }
  .ct-office__list dd { padding: 12px 16px; }
  .ct-office__list dt:last-of-type { border-bottom: 0; }

  .ct-form { padding: 24px 20px; }
  .ct-form__row { grid-template-columns: 1fr; gap: 0; }
  .ct-form__row .ct-form__field { margin-bottom: 24px; }
}

/* ==========================================================================
   個別記事ページ（.single-post-page スコープ）
   ========================================================================== */
.single-post-page {
  --sg-navy: #0F4D8C;
  --sg-blue: #1E6FBF;
  --sg-orange: #F07800;
  --sg-text: #2a2a2a;
  --sg-text-dim: #6b6b6b;
  --sg-bg: #ffffff;
  --sg-bg-alt: #f5f9fd;
  --sg-bg-cool: #eef3f9;
  --sg-border: #d9e3ee;
}

.sg-hero {
  background: linear-gradient(135deg, #0F4D8C 0%, #1E6FBF 50%, #0F4D8C 100%);
  color: #fff;
  padding: 56px 0 64px;
}

.sg-hero__inner { max-width: var(--container-max); }

.sg-hero__en {
  margin: 0 0 12px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.sg-hero__title {
  margin: 0;
  font-size: clamp(1.75rem, 4vw, 2.25rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  padding-left: 16px;
  border-left: 6px solid var(--sg-orange);
  line-height: 1.2;
}

.sg-article {
  max-width: 880px;
  margin: 0 auto;
}

.sg-article__head {
  margin-bottom: 40px;
  padding-bottom: 24px;
  border-bottom: 2px solid var(--sg-border);
}

.sg-article__meta {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 16px;
}

.sg-article__date {
  font-size: 0.95rem;
  color: var(--sg-text-dim);
}

.sg-article__title {
  margin: 0;
  font-size: clamp(1.5rem, 3.5vw, 2rem);
  font-weight: 900;
  letter-spacing: 0.04em;
  color: var(--sg-navy);
  line-height: 1.5;
}

.sg-article__body {
  font-size: 1rem;
  line-height: 2;
  color: var(--sg-text);
}

.sg-article__body p {
  margin: 0 0 20px;
}

.sg-article__body h2 {
  margin: 40px 0 16px;
  padding-left: 14px;
  font-size: 1.25rem;
  font-weight: 900;
  color: var(--sg-navy);
  border-left: 4px solid var(--sg-orange);
  letter-spacing: 0.04em;
  line-height: 1.5;
}

.sg-article__body h3 {
  margin: 32px 0 12px;
  font-size: 1.125rem;
  font-weight: 900;
  color: var(--sg-navy);
}

.sg-article__body ul,
.sg-article__body ol {
  margin: 0 0 24px;
  padding-left: 24px;
}

.sg-article__body ul { list-style: disc; }
.sg-article__body ol { list-style: decimal; }

.sg-article__body li {
  margin-bottom: 6px;
  line-height: 1.85;
}

.sg-article__body a {
  color: var(--sg-blue);
  text-decoration: underline;
}

.sg-article__body img {
  max-width: 100%;
  height: auto;
  border-radius: 4px;
  margin: 24px 0;
}

.sg-article__body blockquote {
  margin: 24px 0;
  padding: 20px 24px;
  background: var(--sg-bg-alt);
  border-left: 4px solid var(--sg-blue);
  font-size: 0.95rem;
  color: var(--sg-text);
}

.sg-article__footer {
  margin-top: 56px;
  padding-top: 32px;
  border-top: 2px solid var(--sg-border);
}

.sg-article__tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 32px;
  font-size: 0.875rem;
}

.sg-article__tags-label {
  color: var(--sg-text-dim);
  margin-right: 4px;
}

.sg-tag {
  display: inline-block;
  padding: 4px 12px;
  background: var(--sg-bg-cool);
  color: var(--sg-blue);
  border-radius: 999px;
  font-size: 0.8125rem;
  text-decoration: none;
}

.sg-tag:hover {
  background: var(--sg-blue);
  color: #fff;
  opacity: 1;
}

.sg-article__nav {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 32px;
}

.sg-article__nav-prev,
.sg-article__nav-next {
  background: var(--sg-bg-alt);
  border: 1px solid var(--sg-border);
  border-radius: 4px;
  transition: all 0.2s ease;
}

.sg-article__nav-prev:hover,
.sg-article__nav-next:hover {
  border-color: var(--sg-blue);
  background: var(--sg-bg-cool);
}

.sg-article__nav-next { text-align: right; }

.sg-article__nav a {
  display: block;
  padding: 16px 20px;
  text-decoration: none;
  color: inherit;
}

.sg-article__nav-label {
  display: block;
  font-size: 0.75rem;
  color: var(--sg-text-dim);
  letter-spacing: 0.05em;
  margin-bottom: 4px;
}

.sg-article__nav-title {
  display: block;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--sg-navy);
  line-height: 1.5;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.sg-article__back {
  text-align: center;
}

/* ==========================================================================
   お知らせ一覧ページ（.news-archive-page スコープ）
   ========================================================================== */
.news-archive-page {
  --na-navy: #0F4D8C;
  --na-blue: #1E6FBF;
  --na-orange: #F07800;
  --na-text: #2a2a2a;
  --na-text-dim: #6b6b6b;
  --na-bg-alt: #f5f9fd;
  --na-bg-cool: #eef3f9;
  --na-border: #d9e3ee;
}

.na-hero {
  background: linear-gradient(135deg, #0F4D8C 0%, #1E6FBF 50%, #0F4D8C 100%);
  color: #fff;
  padding: 56px 0 64px;
}

.na-hero__inner { max-width: var(--container-max); }

.na-hero__en {
  margin: 0 0 12px;
  font-family: var(--font-en);
  font-size: 0.875rem;
  letter-spacing: 0.3em;
  font-weight: 500;
  opacity: 0.85;
  text-transform: uppercase;
}

.na-hero__title {
  margin: 0 0 16px;
  font-size: clamp(2rem, 4.5vw, 2.75rem);
  font-weight: 900;
  letter-spacing: 0.05em;
  padding-left: 16px;
  border-left: 6px solid var(--na-orange);
  line-height: 1.2;
}

.na-hero__lead {
  margin: 0;
  font-size: 0.95rem;
  opacity: 0.9;
}

.na-filter {
  background: var(--na-bg-alt);
  border-bottom: 1px solid var(--na-border);
  padding: 16px 0;
}

.na-filter__list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.na-filter__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: #fff;
  border: 1px solid var(--na-border);
  border-radius: 999px;
  text-decoration: none;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--na-text);
  transition: all 0.15s ease;
}

.na-filter__btn:hover {
  border-color: var(--na-blue);
  background: var(--na-bg-cool);
  opacity: 1;
}

.na-filter__btn.is-active {
  background: var(--na-navy);
  border-color: var(--na-navy);
  color: #fff;
}

.na-filter__count {
  display: inline-block;
  padding: 1px 8px;
  background: var(--na-bg-cool);
  color: var(--na-text-dim);
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 700;
}

.na-filter__btn.is-active .na-filter__count {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}

.na-list {
  list-style: none;
  padding: 0;
  margin: 0 0 40px;
  border-top: 1px solid var(--na-border);
}

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

.na-item__link {
  display: grid;
  grid-template-columns: 110px 90px 1fr 24px;
  gap: 20px;
  align-items: center;
  padding: 18px 16px;
  text-decoration: none;
  color: inherit;
  transition: background 0.15s ease;
}

.na-item__link:hover {
  background: var(--na-bg-alt);
  opacity: 1;
}

.na-item__date {
  font-size: 0.875rem;
  color: var(--na-text-dim);
  font-family: var(--font-en);
  letter-spacing: 0.04em;
}

.na-item__title {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--na-text);
  line-height: 1.5;
}

.na-item__link:hover .na-item__title {
  color: var(--na-navy);
}

.na-item__arrow {
  font-size: 1.25rem;
  color: var(--na-blue);
  text-align: right;
  font-weight: 700;
}

.na-empty {
  text-align: center;
  padding: 64px 24px;
  color: var(--na-text-dim);
  background: var(--na-bg-alt);
  border-radius: 4px;
}

/* ページネーション */
.na-pagination {
  display: flex;
  justify-content: center;
  gap: 8px;
  flex-wrap: wrap;
}

.na-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 12px;
  background: #fff;
  border: 1px solid var(--na-border);
  border-radius: 4px;
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--na-text);
  transition: all 0.15s ease;
}

.na-pagination .page-numbers:hover {
  border-color: var(--na-blue);
  background: var(--na-bg-cool);
  opacity: 1;
}

.na-pagination .page-numbers.current {
  background: var(--na-navy);
  border-color: var(--na-navy);
  color: #fff;
}

.na-pagination .page-numbers.dots {
  border: 0;
  background: transparent;
}

@media (max-width: 768px) {
  /* お知らせ：北海道マラソン風。日付を大きく目立たせ、カテゴリは小さい左寄せチップに */
  .na-item__link { display: flex; flex-direction: column; align-items: flex-start; gap: 7px; padding: 16px 14px; }
  .na-item__date { font-size: 1rem; font-weight: 800; color: var(--na-navy, #16348c); letter-spacing: 0.04em; }
  .news-item__category { align-self: flex-start; font-size: 0.7rem; padding: 3px 11px; }
  .na-item__title { font-size: 0.92rem; }
  .na-item__arrow { display: none; }

  .sg-article__nav { grid-template-columns: 1fr; }
  .sg-article__nav-next { text-align: left; }
}

/* ========================================================================
   大会ページ追従バー（.race-stickybar）
   - template-parts/race-stickybar.php を各大会ページから呼び出し
   - スクロール一定量で下から表示、トップ近辺では非表示
   ======================================================================== */
.race-stickybar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #fff;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.08);
  z-index: 90;
  transform: translateY(100%);
  transition: transform 0.3s ease;
}

.race-stickybar.is-visible {
  transform: translateY(0);
}

.race-stickybar__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  max-width: 1200px;
  margin: 0 auto;
  padding: 12px 24px;
}

.race-stickybar__nav {
  display: flex;
  gap: 28px;
  flex-wrap: nowrap;
}

.race-stickybar__link {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--color-primary-dark, #0F4D8C);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.2s ease;
}

.race-stickybar__link:hover {
  color: var(--color-primary, #1E6FBF);
}

.race-stickybar__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 240px;
  background: #e8243c;
  color: #fff;
  font-weight: 800;
  font-size: 1rem;
  letter-spacing: .02em;
  padding: 13px 44px;
  border-radius: 4px;
  text-decoration: none;
  white-space: nowrap;
  transform: skewX(-10deg);
  box-shadow: 0 6px 16px rgba(232,36,60,.32);
  transition: background 0.2s ease, box-shadow 0.2s ease;
}

/* ラベルは逆スキューで水平に戻す（ボタン本体だけ平行四辺形） */
.race-stickybar__cta-label {
  display: inline-block;
  transform: skewX(10deg);
}

.race-stickybar__cta:hover {
  background: #c91d31;
  color: #fff;
}

/* 開催終了：押せない表示（平行四辺形は維持しグレー） */
.race-stickybar__cta--closed,
.race-stickybar__cta--closed:hover {
  background: #9aa3b2;
  color: #fff;
  cursor: not-allowed;
  box-shadow: 0 6px 16px rgba(8,16,40,.18);
}

.race-stickybar__cta-icon {
  display: inline-block;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 5px 0 5px 8px;
  border-color: transparent transparent transparent currentColor;
  margin-left: 3px;
  font-size: 0;
}

@media (max-width: 768px) {
  .race-stickybar__inner {
    padding: 8px 12px;
    gap: 8px;
  }
  .race-stickybar__nav {
    gap: 14px;
    flex: 1;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .race-stickybar__nav::-webkit-scrollbar { display: none; }
  .race-stickybar__link { font-size: 0.85rem; }
  .race-stickybar__cta {
    font-size: 0.95rem;
    padding: 12px 36px;
    min-width: 0;
  }
}

/* ==========================================================================
   グローバル .btn-skew — サイト全体共通の主役CTAボタン(平行四辺形)
   - .race-half-page スコープに依存しない設計
   - 既存の .half-btn-skew マークアップもエイリアスで拾う
   - a.◯◯◯ で要素+クラス指定し、.race-half-page a { color: inherit } を上書き
   ========================================================================== */
a.btn-skew,
a.half-btn-skew {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  background: #FF6B6B;
  color: #fff;
  padding: 16px 44px;
  border: 0;
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.1em;
  cursor: pointer;
  text-decoration: none;
  box-shadow: 0 6px 0 #c8001f;
  transition: all 0.15s ease;
  clip-path: polygon(10px 0, 100% 0, calc(100% - 10px) 100%, 0 100%);
}
a.btn-skew:hover,
a.half-btn-skew:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 0 #c8001f;
  color: #fff;
}
a.btn-skew:active,
a.half-btn-skew:active {
  transform: translateY(4px);
  box-shadow: 0 2px 0 #c8001f;
}

/* 矢印アイコン部分 */
.btn-skew__arrow,
.half-btn-skew__arrow {
  background: rgba(255, 255, 255, 0.22);
  border-radius: 50%;
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  color: #fff;
}

/* 反転バリエーション(コーラル背景・ダーク背景の上で使う) */
a.btn-skew--white,
a.half-btn-skew--white {
  background: #fff;
  color: #FF6B6B;
  box-shadow: 0 6px 0 rgba(0, 0, 0, 0.18);
}
a.btn-skew--white:hover,
a.half-btn-skew--white:hover {
  color: #FF6B6B;
  box-shadow: 0 8px 0 rgba(0, 0, 0, 0.18);
}
a.btn-skew--white:active,
a.half-btn-skew--white:active {
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.18);
}
.btn-skew--white .btn-skew__arrow,
.btn-skew--white .half-btn-skew__arrow,
.half-btn-skew--white .btn-skew__arrow,
.half-btn-skew--white .half-btn-skew__arrow {
  background: rgba(255, 107, 107, 0.2);
  color: #FF6B6B;
}

/* 大きめサイズ(ヒーロー内など) */
a.btn-skew--large,
a.half-btn-skew--large {
  font-size: 19px;
  padding: 20px 56px;
}
.btn-skew--large .btn-skew__arrow,
.btn-skew--large .half-btn-skew__arrow,
.half-btn-skew--large .btn-skew__arrow,
.half-btn-skew--large .half-btn-skew__arrow {
  width: 30px;
  height: 30px;
  font-size: 16px;
}

@media (max-width: 768px) {
  a.btn-skew,
  a.half-btn-skew {
    font-size: 15px;
    padding: 14px 32px;
  }
}

/* ==========================================================================
   ロゴ（連盟ヘッダー / 大会ヒーローエンブレム）
   ※暫定: 背景白PNG。透過SVG入手後に差し替え予定
   ========================================================================== */
.site-logo--federation {
  text-decoration: none;
}
.site-logo--federation .site-logo__img {
  height: 120px;
  width: auto;
  display: block;
}
@media (max-width: 768px) {
  .site-logo--federation .site-logo__img {
    height: 80px;
  }
}

/* ヒーロー内の大会公式ロゴ（白背景を意図的な白バッジ扱いにして馴染ませる） */
.hero-emblem {
  display: flex;
  justify-content: center;
  margin: 0 auto clamp(16px, 3vw, 28px);
  position: relative;
  z-index: 2;
}
.hero-emblem__img {
  width: clamp(180px, 24vw, 264px);
  height: auto;
  filter: drop-shadow(0 8px 24px rgba(0, 0, 0, 0.45));
}
@media (max-width: 768px) {
  .hero-emblem__img {
    width: clamp(150px, 46vw, 210px);
  }
}

/* TOPヒーロースライダー内のエンブレム（LPより少しコンパクトに） */
.hero-slide__emblem {
  margin-bottom: clamp(10px, 1.6vw, 18px);
}
.hero-slide__emblem .hero-emblem__img {
  width: clamp(116px, 14vw, 168px);
}
@media (max-width: 768px) {
  .hero-slide__emblem .hero-emblem__img {
    width: clamp(104px, 30vw, 140px);
  }
}

/* ==========================================================================
   COURSE 紹介セクション（両LP共通・将来動画埋め込み予定）
   ※暫定: 「動画準備中」プレースホルダ表示
   ========================================================================== */
.course-section {
  padding: clamp(48px, 8vw, 96px) 24px;
  position: relative;
  z-index: 1;
}
.course-section .container {
  max-width: var(--container-max, 1200px);
  margin: 0 auto;
}
.course-section__heading {
  text-align: center;
  margin-bottom: clamp(24px, 4vw, 40px);
}
.course-section__en {
  display: block;
  font-family: var(--font-en);
  font-weight: 800;
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  letter-spacing: 0.08em;
  opacity: 0.85;
}
.course-section__ja {
  display: block;
  font-size: clamp(0.95rem, 1.4vw, 1.05rem);
  letter-spacing: 0.2em;
  margin-top: 4px;
  opacity: 0.75;
}
.course-section__placeholder {
  max-width: 720px;
  margin: 0 auto;
  padding: clamp(28px, 5vw, 48px);
  background: rgba(255, 255, 255, 0.85);
  border: 1px dashed rgba(0, 0, 0, 0.18);
  border-radius: 16px;
  text-align: center;
}
.course-section__icon {
  font-size: clamp(2.6rem, 6vw, 3.6rem);
  display: block;
  margin-bottom: 12px;
}
.course-section__status {
  font-weight: 700;
  font-size: clamp(1.05rem, 1.8vw, 1.25rem);
  margin: 0 0 12px;
}
.course-section__lead {
  font-size: clamp(0.92rem, 1.4vw, 1rem);
  line-height: 1.7;
  opacity: 0.78;
  margin: 0;
}

/* shinzen 種目・タイムテーブルの暫定プレースホルダ文言 */
.shz-section__placeholder {
  text-align: center;
  padding: clamp(20px, 3vw, 32px) 12px;
  font-size: 0.95rem;
  opacity: 0.72;
}

/* ==========================================================================
   shinzen 種目・エントリー カード式
   ※ハーフのカード式に揃えつつ、shinzenカラー(navy/red/cyan/gold)で構成
   ========================================================================== */
.shz-categories {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
  margin-bottom: 48px;
}

.shz-category-card {
  padding: 32px 24px;
  background: #fff;
  border: 2px solid var(--shz-navy);
  border-radius: 8px;
  text-align: center;
  position: relative;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.shz-category-card:hover {
  transform: translate(-3px, -3px);
  box-shadow: 6px 6px 0 var(--shz-navy);
}

.shz-category-card--red { border-color: var(--shz-red); }
.shz-category-card--red:hover { box-shadow: 6px 6px 0 var(--shz-red); }
.shz-category-card--red .shz-category-card__badge { background: var(--shz-red); }

.shz-category-card--blue { border-color: var(--shz-cyan); }
.shz-category-card--blue:hover { box-shadow: 6px 6px 0 var(--shz-cyan); }
.shz-category-card--blue .shz-category-card__badge { background: var(--shz-cyan); }

.shz-category-card--gold { border-color: var(--shz-gold); }
.shz-category-card--gold:hover { box-shadow: 6px 6px 0 var(--shz-gold); }
.shz-category-card--gold .shz-category-card__badge { background: var(--shz-gold); color: var(--shz-navy); }

.shz-category-card__badge {
  display: inline-block;
  padding: 6px 16px;
  margin-bottom: 14px;
  font-family: var(--font-en);
  font-size: 0.85rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: #fff;
  background: var(--shz-navy);
  border-radius: 999px;
}

.shz-category-card__name {
  margin: 0 0 16px;
  font-size: 1.4rem;
  color: var(--shz-navy);
  font-weight: 800;
}

.shz-category-card__divisions {
  list-style: none;
  padding: 0;
  margin: 0;
  text-align: left;
  font-size: 0.9rem;
  line-height: 1.85;
  color: var(--shz-navy);
}

.shz-entry-info {
  max-width: 720px;
  margin: 0 auto;
  padding: 28px 32px;
  background: #fff;
  border: 1px solid rgba(0, 29, 84, 0.18);
  border-radius: 10px;
}
.shz-entry-info__list {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 8px 24px;
  margin: 0 0 14px;
}
.shz-entry-info__list dt {
  font-weight: 700;
  color: var(--shz-navy);
}
.shz-entry-info__list dd {
  margin: 0;
  color: var(--shz-navy);
}
.shz-entry-info__list a {
  color: var(--shz-red);
  text-decoration: underline;
}
.shz-entry-info__note {
  margin: 0;
  padding-top: 12px;
  border-top: 1px dashed rgba(0, 29, 84, 0.15);
  font-size: 0.85rem;
  color: rgba(0, 29, 84, 0.62);
  text-align: center;
}

/* ==========================================================================
   shinzen タイムテーブル（ハーフの timeline を踏襲・shinzenカラー）
   ========================================================================== */
.shz-timeline {
  max-width: 720px;
  margin: 0 auto;
  list-style: none;
  padding: 0;
  position: relative;
}
.shz-timeline::before {
  content: "";
  position: absolute;
  left: 100px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(180deg, var(--shz-navy), var(--shz-red));
  opacity: 0.4;
}
.shz-timeline__item {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 24px;
  margin-bottom: 28px;
  position: relative;
}
.shz-timeline__item::before {
  content: "";
  position: absolute;
  left: 92px;
  top: 14px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid var(--shz-navy);
  z-index: 1;
}
.shz-timeline__item--key::before {
  background: var(--shz-red);
  border-color: var(--shz-red);
  box-shadow: 0 0 0 6px rgba(255, 23, 68, 0.15);
}
.shz-timeline__time {
  font-family: var(--font-en);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--shz-navy);
  letter-spacing: 0.05em;
  text-align: right;
  padding-right: 24px;
}
.shz-timeline__item--key .shz-timeline__time {
  color: var(--shz-red);
}
.shz-timeline__body {
  padding: 14px 24px;
  background: #fff;
  border: 1px solid rgba(0, 29, 84, 0.12);
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 29, 84, 0.05);
}
.shz-timeline__body h4 {
  margin: 0 0 4px;
  font-size: 1.0625rem;
  color: var(--shz-navy);
}
.shz-timeline__body p {
  margin: 0;
  font-size: 0.875rem;
  color: rgba(0, 29, 84, 0.65);
}
.shz-timeline__note {
  text-align: center;
  margin: 32px 0 0;
  font-size: 0.85rem;
  color: rgba(0, 29, 84, 0.6);
}
@media (max-width: 768px) {
  .shz-timeline::before { left: 12px; }
  .shz-timeline__item { grid-template-columns: 1fr; gap: 8px; padding-left: 40px; }
  .shz-timeline__item::before { left: 4px; top: 6px; }
  .shz-timeline__time { text-align: left; padding-right: 0; }
}

/* ==========================================================================
   親善ヒーロー v2（ChatGPT モックアップ準拠）
   - 2カラム（左=ロゴ+ゴールドリボン / 右=タイトル）
   - 左上に星条旗ライク装飾／ヒーロー全体に星散らし
   - 閉幕バッジをゴールド枠で強調／CTAを赤＆水色
   - フォントをカジュアル系 Plus Jakarta Sans に
   ========================================================================== */
.shz-hero--v2 {
  min-height: 88vh;
  padding: 32px 24px 72px;
  text-align: left;
  background: var(--shz-navy);
}
.shz-hero--v2 .shz-hero__bg {
  opacity: var(--shz-hero-bg-opacity, 0.25);
}
.shz-hero--v2 .shz-hero__overlay {
  background: linear-gradient(135deg,
    rgba(0, 19, 62, 0.78) 0%,
    rgba(0, 29, 84, 0.62) 50%,
    rgba(0, 19, 62, 0.80) 100%);
  opacity: var(--shz-hero-overlay-opacity, 1);
}

/* 左上 星条旗ライク装飾 */
.shz-hero__flag {
  position: absolute;
  top: -40px;
  left: -60px;
  width: 360px;
  height: 240px;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg,
      var(--shz-red) 0%, var(--shz-red) 12%,
      #fff 12%, #fff 24%,
      var(--shz-red) 24%, var(--shz-red) 36%,
      #fff 36%, #fff 48%,
      var(--shz-red) 48%, var(--shz-red) 60%,
      #fff 60%, #fff 72%,
      var(--shz-red) 72%, var(--shz-red) 84%,
      #fff 84%, #fff 100%);
  -webkit-mask-image: linear-gradient(135deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.4) 50%, transparent 80%);
  mask-image: linear-gradient(135deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.4) 50%, transparent 80%);
  transform: rotate(-8deg);
  opacity: 0.78;
}
.shz-hero__flag::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 144px;
  height: 96px;
  background:
    radial-gradient(circle at 20% 30%, #fff 0 2px, transparent 2px) 0 0/24px 28px,
    radial-gradient(circle at 60% 70%, #fff 0 2px, transparent 2px) 12px 14px/24px 28px,
    var(--shz-navy-dark);
}

/* 星の散らし装飾 */
.shz-hero__stars {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background-image:
    radial-gradient(circle at 8% 20%, rgba(255, 215, 0, 0.85) 0 2px, transparent 3px),
    radial-gradient(circle at 22% 12%, rgba(255, 255, 255, 0.7) 0 1.5px, transparent 3px),
    radial-gradient(circle at 30% 30%, rgba(255, 215, 0, 0.6) 0 2px, transparent 3px),
    radial-gradient(circle at 85% 15%, rgba(255, 215, 0, 0.7) 0 2px, transparent 3px),
    radial-gradient(circle at 92% 30%, rgba(255, 255, 255, 0.6) 0 1.5px, transparent 3px),
    radial-gradient(circle at 76% 8%, rgba(255, 215, 0, 0.6) 0 1.5px, transparent 3px);
  background-repeat: no-repeat;
}

/* インナーレイアウト */
.shz-hero--v2 .shz-hero__inner {
  max-width: 1180px;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}

/* presented by タグ */
.shz-hero__presented {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 24px;
  padding: 6px 14px;
  font-family: var(--font-display);
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  color: rgba(255, 255, 255, 0.78);
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 999px;
  backdrop-filter: blur(4px);
  text-transform: uppercase;
}
.shz-hero__presented-label {
  font-size: 0.7rem;
  opacity: 0.7;
}
.shz-hero__presented-name {
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.05em;
  text-transform: none;
}

/* 2カラム grid */
.shz-hero__layout {
  display: grid;
  grid-template-columns: minmax(280px, 460px) 1fr;
  gap: clamp(24px, 4vw, 56px);
  align-items: center;
  margin-bottom: 36px;
}
@media (max-width: 900px) {
  .shz-hero__layout {
    grid-template-columns: 1fr;
    text-align: center;
  }
}

/* 左カラム：ロゴブロック */
.shz-hero__emblem-block {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.shz-hero__emblem-large {
  margin: 0 0 -28px;
}
.shz-hero__emblem-large .hero-emblem__img {
  width: clamp(240px, 30vw, 420px);
  filter: drop-shadow(0 12px 32px rgba(0, 0, 0, 0.45));
}

/* 30TH ANNIVERSARY ゴールドリボン */
.shz-hero__ribbon {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 12px 38px;
  font-family: var(--font-display);
  background: linear-gradient(180deg, #f7d066 0%, #d4a017 50%, #a37510 100%);
  color: var(--shz-navy-dark);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.6),
    inset 0 -2px 0 rgba(0, 0, 0, 0.18),
    0 8px 20px rgba(0, 0, 0, 0.35);
  clip-path: polygon(0 0, 100% 0, 92% 50%, 100% 100%, 0 100%, 8% 50%);
  z-index: 1;
}
.shz-hero__ribbon-num {
  font-size: clamp(1.4rem, 2.6vw, 1.9rem);
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1;
}
.shz-hero__ribbon-num sup {
  font-size: 0.55em;
  vertical-align: super;
}
.shz-hero__ribbon-label {
  font-size: clamp(0.75rem, 1.1vw, 0.95rem);
  font-weight: 800;
  letter-spacing: 0.22em;
}

/* 右カラム：タイトル＋情報 */
.shz-hero__text-block {
  color: #fff;
}
.shz-hero--v2 .shz-hero__title-ja {
  margin: 0 0 8px;
  font-family: var(--font-jp);
  font-size: clamp(0.92rem, 1.4vw, 1.05rem);
  font-weight: 500;
  letter-spacing: 0.22em;
  color: rgba(255, 255, 255, 0.85);
  text-align: left;
}
@media (max-width: 900px) {
  .shz-hero--v2 .shz-hero__title-ja { text-align: center; }
}

.shz-hero--v2 .shz-hero__title {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0 0 18px;
  font-family: var(--font-display);
  font-weight: 800;
  line-height: 1.0;
  letter-spacing: 0.01em;
  color: #fff;
}
.shz-hero__title-line {
  display: block;
  text-shadow: 0 4px 18px rgba(0, 0, 0, 0.45);
}
.shz-hero__title-line--small {
  font-size: clamp(1.05rem, 2vw, 1.5rem);
  font-weight: 700;
  letter-spacing: 0.16em;
  margin-bottom: 4px;
}
.shz-hero__title-line--rule {
  font-size: clamp(0.95rem, 1.6vw, 1.2rem);
  font-weight: 700;
  letter-spacing: 0.22em;
  color: rgba(255, 255, 255, 0.88);
  margin-bottom: 8px;
}
.shz-hero__title-line--main {
  font-size: clamp(2.6rem, 7vw, 5rem);
  font-weight: 800;
  letter-spacing: 0.01em;
  line-height: 0.96;
}
.shz-hero__title-line--main:nth-of-type(3) {
  color: var(--shz-red);
}

.shz-hero--v2 .shz-hero__catch {
  display: block;
  margin: 8px 0 26px;
  padding: 0;
  background: transparent;
  transform: none;
  box-shadow: none;
  font-family: var(--font-display);
  font-size: clamp(0.95rem, 1.6vw, 1.2rem);
  font-weight: 600;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.92);
}

.shz-hero--v2 .shz-hero__meta {
  margin: 0;
}
.shz-hero--v2 .shz-hero__date {
  margin: 0 0 4px;
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 3.6vw, 2.4rem);
  font-weight: 800;
  letter-spacing: 0.02em;
  color: #fff;
}
.shz-hero__date-dow {
  display: inline-block;
  margin-left: 10px;
  padding: 0;
  background: transparent;
  font-size: 0.6em;
  color: var(--shz-red);
  border-radius: 0;
  font-weight: 800;
  letter-spacing: 0.1em;
}
.shz-hero--v2 .shz-hero__venue {
  margin: 0;
  font-size: clamp(0.85rem, 1.2vw, 0.95rem);
  color: rgba(255, 255, 255, 0.82);
}

/* 閉幕バッジ（ゴールド枠装飾） */
.shz-hero__closed-badge {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  max-width: 640px;
  margin: 0 auto 28px;
  padding: 14px 28px;
  background: rgba(0, 0, 0, 0.28);
  border: 1px solid var(--shz-gold-bright);
  border-radius: 4px;
  box-shadow:
    inset 0 0 0 4px rgba(255, 215, 0, 0.08),
    0 6px 18px rgba(0, 0, 0, 0.35);
  position: relative;
}
.shz-hero__closed-badge::before,
.shz-hero__closed-badge::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 12px;
  height: 12px;
  border: 2px solid var(--shz-gold-bright);
  transform: translateY(-50%) rotate(45deg);
  background: transparent;
}
.shz-hero__closed-badge::before { left: -7px; }
.shz-hero__closed-badge::after { right: -7px; }
.shz-hero__closed-ornament {
  width: 28px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--shz-gold-bright), transparent);
  display: inline-block;
}
.shz-hero__closed-text {
  font-family: var(--font-jp);
  font-size: clamp(0.9rem, 1.4vw, 1.05rem);
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--shz-gold-bright);
}

/* CTA：赤＋水色のボタン */
.shz-hero--v2 .shz-hero__actions {
  margin: 0;
  justify-content: center;
}
.shz-btn--report {
  color: #fff;
  background: var(--shz-red);
  box-shadow: 0 6px 18px rgba(255, 23, 68, 0.35);
  font-family: var(--font-jp);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 16px 36px;
  border-radius: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  border: 0;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.shz-btn--report:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(255, 23, 68, 0.45);
}
.shz-btn--photos {
  color: #fff;
  background: var(--shz-cyan);
  box-shadow: 0 6px 18px rgba(0, 160, 204, 0.35);
  font-family: var(--font-jp);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 16px 36px;
  border-radius: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  border: 0;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.shz-btn--photos:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(0, 160, 204, 0.45);
}

/* ==========================================================================
   ハーフページ「presented by」タグ（連盟主催ブランド）
   ※両LPで同じ視覚的統一感を出すため、ハーフのヒーロー上部に追加
   ========================================================================== */
.hero-presented {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0 auto 18px;
  padding: 6px 14px;
  font-family: var(--font-display);
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  color: rgba(255, 255, 255, 0.78);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 999px;
  backdrop-filter: blur(4px);
  text-transform: uppercase;
}
.hero-presented__label {
  font-size: 0.7rem;
  opacity: 0.7;
}
.hero-presented__name {
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.05em;
  text-transform: none;
}

/* ==========================================================================
   親善：セクションタイトル装飾（★ EN ★）
   ※モックアップ準拠。親善ページのみに限定（ハーフは現状維持）
   ========================================================================== */
.race-shinzen-page .shz-section-title__en {
  position: relative;
  display: inline-block;
  padding: 0 44px;
}
.race-shinzen-page .shz-section-title__en::before,
.race-shinzen-page .shz-section-title__en::after {
  content: "★";
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: var(--shz-gold-bright);
  font-size: 0.55em;
  letter-spacing: 0;
  opacity: 0.95;
}
.race-shinzen-page .shz-section-title__en::before { left: 4px; }
.race-shinzen-page .shz-section-title__en::after { right: 4px; }
/* --light バリアント時はゴールドのままで違和感ないので追加調整不要 */

/* ==========================================================================
   親善 最終CTA v2（モックアップ準拠）
   - 2カラム（左：SEE YOU NEXT YEAR テキストブロック ／ 右：30周年エンブレム）
   - 下部にスカイラインシルエット風装飾
   ========================================================================== */
.shz-final-cta--v2 {
  padding: clamp(72px, 12vw, 140px) 24px clamp(96px, 14vw, 160px);
}
.shz-final-cta--v2 .shz-final-cta__inner {
  max-width: 1100px;
}

.shz-final-cta__layout {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: clamp(28px, 5vw, 72px);
  align-items: center;
  text-align: left;
}
@media (max-width: 800px) {
  .shz-final-cta__layout {
    grid-template-columns: 1fr;
    text-align: center;
  }
}

.shz-final-cta--v2 .shz-final-cta__catch-en {
  font-family: var(--font-display);
  font-size: clamp(2.8rem, 8vw, 5.5rem);
  margin: 0 0 12px;
  line-height: 0.92;
  letter-spacing: 0;
}
.shz-final-cta--v2 .shz-final-cta__catch-ja {
  font-family: var(--font-jp);
  font-size: clamp(1.05rem, 2vw, 1.4rem);
  font-weight: 700;
  letter-spacing: 0.14em;
}
.shz-final-cta--v2 .shz-final-cta__sub {
  margin-bottom: clamp(20px, 3vw, 32px);
}
.shz-final-cta--v2 .shz-final-cta__actions {
  justify-content: flex-start;
}
@media (max-width: 800px) {
  .shz-final-cta--v2 .shz-final-cta__actions {
    justify-content: center;
  }
}

/* 右カラム：30周年エンブレムブロック */
.shz-final-cta__emblem-block {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: -8px;
}
.shz-final-cta__emblem-img {
  width: clamp(180px, 22vw, 280px);
  height: auto;
  filter: drop-shadow(0 12px 28px rgba(0, 29, 84, 0.25));
  margin-bottom: -18px;
}
.shz-final-cta__ribbon {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 10px 32px;
  font-family: var(--font-display);
  background: linear-gradient(180deg, #f7d066 0%, #d4a017 50%, #a37510 100%);
  color: var(--shz-navy-dark);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.6),
    inset 0 -2px 0 rgba(0, 0, 0, 0.18),
    0 6px 16px rgba(0, 0, 0, 0.22);
  clip-path: polygon(0 0, 100% 0, 92% 50%, 100% 100%, 0 100%, 8% 50%);
  z-index: 1;
}
.shz-final-cta__ribbon-num {
  font-size: clamp(1.15rem, 2vw, 1.5rem);
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1;
}
.shz-final-cta__ribbon-num sup {
  font-size: 0.55em;
  vertical-align: super;
}
.shz-final-cta__ribbon-label {
  font-size: clamp(0.7rem, 1vw, 0.85rem);
  font-weight: 800;
  letter-spacing: 0.22em;
}

/* 下部スカイラインシルエット風装飾（CSS生成） */
.shz-final-cta__skyline {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 64px;
  z-index: 0;
  background:
    /* 星 */
    radial-gradient(circle at 8% 30%, rgba(0, 29, 84, 0.18) 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 18% 18%, rgba(0, 29, 84, 0.14) 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 88% 32%, rgba(0, 29, 84, 0.18) 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 95% 18%, rgba(0, 29, 84, 0.14) 0 1.5px, transparent 2.5px),
    /* シンプルなビル/木のシルエット風グラデ */
    linear-gradient(180deg, transparent 0%, rgba(0, 29, 84, 0.04) 60%, rgba(0, 29, 84, 0.12) 100%);
  background-repeat: no-repeat;
  pointer-events: none;
}

/* ==========================================================================
   親善ヒーロー カスタマイザー連動
   外観 → カスタマイズ → 「親善マラソン ヒーロー調整」で操作される CSS変数を反映
   ※デフォルト値は inc/customizer-hero.php と一致させること
   ========================================================================== */
.race-shinzen-page .shz-hero--v2 .shz-hero__bg {
  background-position: center var(--shz-hero-bg-y, 50%);
}
.race-shinzen-page .shz-hero--v2 .shz-hero__emblem-block {
  transform: translateY(var(--shz-hero-logo-y, 0));
}
.race-shinzen-page .shz-hero--v2 .shz-hero__emblem-block .hero-emblem__img {
  transform: scale(var(--shz-hero-logo-scale, 1));
  transform-origin: center;
  transition: transform 0.2s ease;
}
.race-shinzen-page .shz-hero--v2 .shz-hero__ribbon {
  transform: translateY(var(--shz-hero-ribbon-y, 0));
}
.race-shinzen-page .shz-hero--v2 .shz-hero__text-block {
  transform: translateY(var(--shz-hero-text-y, 0));
}
.race-shinzen-page .shz-hero--v2 .shz-hero__closed-badge {
  transform: translateY(var(--shz-hero-badge-y, 0));
}

/* ==========================================================================
   レスポンシブ補強（両LP モバイル UX強化）
   既存メディアクエリで足りない箇所を網羅。768px → 480px の2段階。
   ========================================================================== */

@media (max-width: 768px) {
  /* ===== ヒーロー CTA 縦並び＆フル幅 ===== */
  .shz-hero__actions,
  .half-hero__actions {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    width: 100%;
  }
  .shz-hero__actions a,
  .half-hero__actions a {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  /* ===== presented by タグ 小さく ===== */
  .shz-hero__presented,
  .hero-presented {
    font-size: 0.72rem;
    letter-spacing: 0.06em;
    text-align: center;
  }

  /* ===== 大会概要テーブル 左thを抑える ===== */
  .shz-info-table th,
  .half-info-table th {
    width: 30%;
    min-width: 88px;
    padding: 14px 12px;
    font-size: 0.85rem;
  }
  .shz-info-table td,
  .half-info-table td {
    padding: 14px 12px;
    font-size: 0.88rem;
    line-height: 1.6;
  }

  /* ===== タイムテーブル 余白詰め ===== */
  .half-timeline__time,
  .shz-timeline__time {
    font-size: 1.1rem;
  }
  .half-timeline__body h4,
  .shz-timeline__body h4 {
    font-size: 1rem;
  }
  .half-timeline__body p,
  .shz-timeline__body p {
    font-size: 0.88rem;
    line-height: 1.6;
  }

  /* ===== セクション上下余白 抑制 ===== */
  .shz-section,
  .half-section,
  .course-section {
    padding-top: clamp(48px, 9vw, 72px);
    padding-bottom: clamp(48px, 9vw, 72px);
  }

  /* ===== 親善 閉幕バッジ コンパクト ===== */
  .shz-hero__closed-badge {
    font-size: 0.82rem;
    padding: 8px 16px;
    line-height: 1.5;
  }

  /* ===== 親善 30TH ANNIVERSARY リボン 小型化 ===== */
  .shz-hero__ribbon {
    transform: scale(0.82) translateY(var(--shz-hero-ribbon-y, 0));
    margin-top: -8px;
  }

  /* ===== ハイライト写真カード 微調整 ===== */
  .shz-highlight-card--has-image .shz-highlight-card__num {
    font-size: 1.8rem;
    top: 8px;
    right: 12px;
  }

  /* ===== コース紹介プレースホルダ 余白詰め ===== */
  .course-section__placeholder {
    padding: clamp(22px, 5vw, 36px);
  }

  /* ===== ENTRY カード（親善 4分類）小型化 ===== */
  .shz-category-card {
    padding: 24px 18px;
  }
  .shz-category-card__name {
    font-size: 1.2rem;
  }
  .shz-category-card__divisions {
    font-size: 0.85rem;
  }
}

@media (max-width: 480px) {
  /* ===== 超狭幅 タイトル微調整 ===== */
  .shz-hero__title-line--main {
    font-size: clamp(1.9rem, 12vw, 2.8rem);
    line-height: 1;
  }
  .half-hero__title {
    font-size: clamp(1.6rem, 9vw, 2.2rem);
  }

  /* ===== テーブル さらに詰めて2列確保 ===== */
  .shz-info-table th,
  .half-info-table th {
    width: 32%;
    padding: 10px 8px;
    font-size: 0.78rem;
  }
  .shz-info-table td,
  .half-info-table td {
    padding: 10px 8px;
    font-size: 0.8rem;
  }

  /* ===== presented by タグ 改行許可 ===== */
  .shz-hero__presented,
  .hero-presented {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
  }

  /* ===== セクションタイトル 縮小 ===== */
  .shz-section-title__en,
  .half-section-title__en {
    font-size: clamp(1.3rem, 5vw, 1.7rem);
  }
  .shz-section-title__ja,
  .half-section-title__ja {
    font-size: 0.85rem;
  }

  /* ===== タイムライン 縦余白詰め ===== */
  .half-timeline__item,
  .shz-timeline__item {
    padding-top: 12px;
    padding-bottom: 12px;
  }

  /* ===== ハイライトカードのテキスト密度UP ===== */
  .shz-highlight-card__body {
    padding: 16px 14px 20px;
  }
  .shz-highlight-card__text {
    font-size: 0.88rem;
    line-height: 1.7;
  }
}

/* ==========================================================================
   スクロール フェードイン
   JS（main.js）がbodyに .js-scroll-ready を付けた時のみ初期hidden
   IntersectionObserverで .is-visible が付与されたら表示
   ※JS失敗 / prefers-reduced-motion 時は通常表示（progressive enhancement）
   ========================================================================== */
.js-scroll-ready .shz-section,
.js-scroll-ready .half-section,
.js-scroll-ready .course-section,
.js-scroll-ready .shz-final-cta,
.js-scroll-ready .half-final-cta,
.js-scroll-ready .cta-banner,
.js-scroll-ready .news-section,
.js-scroll-ready .sponsor-section {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
  will-change: opacity, transform;
}
.js-scroll-ready .shz-section.is-visible,
.js-scroll-ready .half-section.is-visible,
.js-scroll-ready .course-section.is-visible,
.js-scroll-ready .shz-final-cta.is-visible,
.js-scroll-ready .half-final-cta.is-visible,
.js-scroll-ready .cta-banner.is-visible,
.js-scroll-ready .news-section.is-visible,
.js-scroll-ready .sponsor-section.is-visible {
  opacity: 1;
  transform: translateY(0);
}
/* 大会結果ランキングのヒーローのフェードイン。
   結果ページはタブUI（親善/ハーフ/神奈川）。タブ切替時に JS が対象パネルへ .is-active を付与するので、
   その瞬間にアニメ規則が新規マッチして再生される（display 復帰依存より確実。隠れタブでも見えなくならない）。
   非アクティブの hero はアニメ無し＝opacity:1 既定なので、万一表示されても透明にならない。
   container-type:inline-size のため transform スライドは無効 → opacity のみ。reduced-motion 時は即表示。 */
@media (prefers-reduced-motion: no-preference) {
  .rs-panel.is-active .race-ranking__hero { animation: rankHeroReveal 0.85s ease-out both; }
}
@keyframes rankHeroReveal {
  from { opacity: 0; }
  to   { opacity: 1; }
}
/* 親善LP / ハーフLP のヒーローを読み込み時にフェードイン（各LP限定。TOPスライダーには適用しない）。
   reduced-motion 時はアニメ無し＝即表示。 */
@media (prefers-reduced-motion: no-preference) {
  .race-shinzen-page .shz-hero-v3,
  .race-half-page .hh-hero { animation: lpHeroFadeIn 0.9s ease-out both; }
}
@keyframes lpHeroFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
/* 歴史セクションは固定背景の帯（.shz-history-band）を含む。
   リビール演出が残す transform / will-change は background-attachment:fixed を壊すため、
   このセクションだけ演出を無効化して固定背景（スクロールで写真の全貌が見える）を生かす。 */
.js-scroll-ready #history.shz-section {
  opacity: 1 !important;
  transform: none !important;
  will-change: auto !important;
  transition: none !important;
}

/* ==========================================================================
   カードホバー強化（両LP）
   説明系カード: 控えめにアイコンや内部要素が反応
   選択誘導系カード: lift + 影 + 内部要素が連動
   イージング: cubic-bezier(0.22, 1, 0.36, 1) で気持ちよい減速
   ========================================================================== */

/* ===== 親善コンセプト3色：アイコンが少し動く（控えめ）===== */
.shz-concept-card {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.3s cubic-bezier(0.22, 1, 0.36, 1),
              border-color 0.25s ease;
}
.shz-concept-card__icon {
  display: inline-block;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.shz-concept-card:hover .shz-concept-card__icon {
  transform: scale(1.12) rotate(-4deg);
}

/* ===== 親善ハイライト写真：lift強化 + 画像が彩度UP ===== */
.shz-highlight-card--has-image {
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              border-color 0.25s ease;
}
.shz-highlight-card--has-image:hover {
  transform: translate(-4px, -4px);
  box-shadow: 8px 8px 0 var(--shz-red);
  border-color: var(--shz-red);
}
.shz-highlight-card--has-image .shz-highlight-card__img {
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
              filter 0.4s ease;
}
.shz-highlight-card--has-image:hover .shz-highlight-card__img {
  transform: scale(1.08);
  filter: saturate(1.12) brightness(1.04);
}
.shz-highlight-card--has-image .shz-highlight-card__num {
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.shz-highlight-card--has-image:hover .shz-highlight-card__num {
  transform: scale(1.18);
}

/* ===== 親善カテゴリ4色：badge拡大 + 区分リスト微動 ===== */
.shz-category-card__badge {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
              letter-spacing 0.25s ease;
}
.shz-category-card:hover .shz-category-card__badge {
  transform: scale(1.08);
  letter-spacing: 0.12em;
}
.shz-category-card__divisions li {
  transition: padding-left 0.25s ease;
}
.shz-category-card:hover .shz-category-card__divisions li {
  padding-left: 6px;
}

/* ===== ハーフコンセプト：アイコンふわっと持ち上がる ===== */
.half-concept-card {
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              border-color 0.25s ease;
}
.half-concept-card__icon {
  display: inline-block;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.half-concept-card:hover .half-concept-card__icon {
  transform: scale(1.18) translateY(-4px);
}

/* ===== ハーフハイライト：lift + アイコン回転 ===== */
.half-highlight-card {
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.half-highlight-card__icon {
  display: inline-block;
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.half-highlight-card:hover {
  transform: translateY(-6px);
}
.half-highlight-card:hover .half-highlight-card__icon {
  transform: scale(1.15) rotate(-6deg);
}

/* ===== ハーフカテゴリ：badge強調 + price色変化 ===== */
.half-category-card__badge {
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.half-category-card:hover .half-category-card__badge {
  transform: scale(1.08);
}
.half-category-card__price {
  transition: color 0.25s ease, transform 0.25s ease;
}
.half-category-card:hover .half-category-card__price {
  color: var(--hm-pink);
  transform: scale(1.02);
}

/* ===== prefers-reduced-motion 対応: アニメ無効化 ===== */
@media (prefers-reduced-motion: reduce) {
  .shz-concept-card,
  .shz-concept-card__icon,
  .shz-highlight-card--has-image,
  .shz-highlight-card__img,
  .shz-highlight-card__num,
  .shz-category-card__badge,
  .shz-category-card__divisions li,
  .half-concept-card,
  .half-concept-card__icon,
  .half-highlight-card,
  .half-highlight-card__icon,
  .half-category-card__badge,
  .half-category-card__price {
    transition: none !important;
  }
}

/* ==========================================================================
   カウントダウン数字フリップ
   値が変わるたびに3D rotateX で「ぱたん」と切り替わる演出
   - 上から下へ落ちるように回転（透視で奥行き感）
   - 秒の毎秒チックでも煩くないくらいの控えめなDuration
   - prefers-reduced-motion 対応
   ========================================================================== */
.hero-countdown__box {
  perspective: 240px;
}
.hero-countdown__value {
  display: inline-block;
  transform-origin: center bottom;
}
@keyframes countdown-flip {
  0%   { transform: rotateX(-90deg); opacity: 0.3; }
  55%  { transform: rotateX(14deg);  opacity: 1; }
  100% { transform: rotateX(0deg);   opacity: 1; }
}
.hero-countdown__value.is-flip {
  animation: countdown-flip 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
@media (prefers-reduced-motion: reduce) {
  .hero-countdown__value.is-flip {
    animation: none;
  }
}

/* ==========================================================================
   大会レポート ランキング表示 (ショートコード [race_ranking])
   - 各タブパネルの最上部に配置される主役セクション
   - 1〜3位はメダル装飾、4-5位は通常デザイン
   ========================================================================== */
.race-ranking {
  margin: 0 0 48px;
  padding: 0;
  background: transparent;
  border-radius: 0;
}

/* ===== ランキングヒーロー（バナー型 / Claude Design "Ranking Hero"）===== */
.race-ranking__hero {
  position: relative;
  width: 100%;
  aspect-ratio: 2172 / 724;
  margin-bottom: 36px;
  border-radius: 18px;
  overflow: hidden;
  container-type: inline-size;
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  background: #163a92;
  box-shadow: 0 16px 42px rgba(11, 63, 120, 0.32);
}
.race-ranking__hero-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}
/* 画像は既に左=濃紺/右=ランナー写真に最適化済み。
   左側だけ軽く締めて白文字・ライム数字を立たせ、右の写真はそのまま見せる */
.race-ranking__hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, rgba(6,20,66,0.45) 0%, rgba(8,26,84,0.12) 42%, rgba(8,26,84,0) 70%);
  pointer-events: none;
}
.race-ranking__hero-inner {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1.7cqw;
  padding: 0 0 0 5cqw;
  width: 66%;
}
/* RANKING · TOP 5 平行四辺形ピル */
.race-ranking__badge {
  align-self: flex-start;
  transform: skewX(-20deg);
  background: rgba(255,255,255,0.92);
  padding: 0.14cqw;
  box-shadow: 0 0.3cqw 1cqw rgba(8,22,60,0.25);
}
.race-ranking__badge-inner {
  background: #1c47b8;
  padding: 0.62cqw 2.9cqw;
  display: flex;
  align-items: center;
}
.race-ranking__badge-content {
  transform: skewX(20deg);
  display: flex;
  align-items: center;
  gap: 0.85cqw;
}
.race-ranking__badge-icon { width: 1.65cqw; height: 1.65cqw; flex: 0 0 auto; }
.race-ranking__badge-text {
  font-family: "Montserrat", "Helvetica Neue", Arial, sans-serif;
  font-weight: 800;
  font-size: 1.28cqw;
  letter-spacing: 0.4cqw;
  color: #fff;
}
/* 見出し（回数だけライム） */
.race-ranking__title {
  margin: 0;
  font-weight: 900;
  font-size: 3.7cqw;
  line-height: 1.05;
  color: #fff;
  letter-spacing: 0.01em;
  white-space: nowrap;
  text-shadow: 0 0.2cqw 1.6cqw rgba(6,18,52,0.45);
}
.race-ranking__title-num { color: #c8e62b; }
/* ランキング行（ゴールドトロフィー＋白プレート＋装飾バー） */
.race-ranking__row {
  display: flex;
  align-items: center;
  gap: 0.8cqw;
}
.race-ranking__trophy {
  width: 4.5cqw;
  height: 4.5cqw;
  flex: 0 0 auto;
  filter: drop-shadow(0 0.2cqw 0.4cqw rgba(8,22,60,0.5));
}
.race-ranking__rankplate {
  transform: skewX(-20deg);
  background: #fff;
  height: 4.6cqw;
  padding: 0 2.5cqw;
  display: flex;
  align-items: center;
  box-shadow: 0 0.5cqw 1.6cqw rgba(8,22,60,0.35);
}
.race-ranking__rankplate-text {
  display: inline-block;
  transform: skewX(20deg);
  font-weight: 900;
  font-size: 2.5cqw;
  letter-spacing: 0.12em;
  color: #173f9e;
}
.race-ranking__bar {
  width: 1cqw;
  height: 4.6cqw;
  transform: skewX(-20deg);
  flex: 0 0 auto;
}
.race-ranking__bar--1 { background: #5b85e8; }
.race-ranking__bar--2 { background: #2f5fd6; }
/* サブタイトル */
.race-ranking__subtitle {
  margin: 0.2cqw 0 0;
  font-weight: 700;
  font-size: 1.55cqw;
  color: rgba(226,236,255,0.95);
  letter-spacing: 0.03em;
}
/* メタ（開催日） */
.race-ranking__metarow {
  display: flex;
  align-items: center;
  gap: 2cqw;
  margin-top: 1.1cqw;
}
.race-ranking__metaitem {
  display: flex;
  align-items: center;
  gap: 0.95cqw;
}
.race-ranking__meta-icon { width: 2.1cqw; height: 2.1cqw; flex: 0 0 auto; }
.race-ranking__meta-col {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}
.race-ranking__meta-label {
  font-size: 0.92cqw;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: rgba(200,215,250,0.8);
}
.race-ranking__meta-val {
  font-size: 1.5cqw;
  font-weight: 800;
  color: #fff;
}

/* 種目セクション */
.race-ranking__distance {
  margin-bottom: 40px;
}
.race-ranking__distance-title {
  position: relative;
  margin: 0 0 20px;
  padding: 14px 24px 14px 28px;
  background: linear-gradient(90deg, var(--color-primary, #0F4D8C) 0%, var(--color-primary-light, #1e6fbf) 100%);
  color: #fff;
  font-size: 1.15rem;
  font-weight: 800;
  border-radius: 8px;
  letter-spacing: 0.02em;
}
.race-ranking__distance-title::before {
  content: '';
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 4px;
  height: 28px;
  background: var(--color-accent, #F07800);
  border-radius: 2px;
}

/* 区分テーブルのグリッド配置（横幅いっぱいの1テーブルを縦に積む） */
.race-ranking__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
}

/* 区分テーブル */
.race-ranking__division {
  background: #fff;
  padding: 0;
  border-radius: 12px;
  border: 1px solid #e3e7ee;
  box-shadow: 0 4px 14px rgba(0,0,0,0.05);
  overflow: hidden;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.race-ranking__division:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(0,0,0,0.09);
}
.race-ranking__division-title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--color-primary, #0F4D8C);
  padding: 12px 16px;
  background: #f4f7fb;
  border-bottom: 1px solid #e3e7ee;
}

/* テーブル見出し行（順位 / 氏名 / タイム） */
.race-ranking__thead {
  display: grid;
  grid-template-columns: 56px 84px minmax(120px, 1.4fr) minmax(140px, 1.8fr) minmax(86px, auto);
  gap: 14px;
  align-items: center;
  padding: 9px 18px;
  background: linear-gradient(90deg, var(--color-primary, #0F4D8C) 0%, var(--color-primary-light, #1e6fbf) 100%);
}
.race-ranking__th {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: rgba(255,255,255,0.92);
}
.race-ranking__th--rank { text-align: center; }
.race-ranking__th--bib  { text-align: center; }
.race-ranking__th--time { text-align: right; }

/* 駅伝（チーム）は ナンバー・所属 列なし → 3列 */
.race-ranking__division--team .race-ranking__thead,
.race-ranking__division--team .race-ranking__item {
  grid-template-columns: 56px 1fr minmax(86px, auto);
}

/* 行リスト */
.race-ranking__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.race-ranking__item {
  display: grid;
  grid-template-columns: 56px 84px minmax(120px, 1.4fr) minmax(140px, 1.8fr) minmax(86px, auto); /* 見出し行と一致 */
  gap: 14px;
  padding: 10px 18px;
  border-bottom: 1px solid #eef1f5;
  align-items: center;
  transition: background 0.15s ease;
}
.race-ranking__item:last-child { border-bottom: none; }
.race-ranking__item:hover { background: #f8fafc; }

/* 1〜3位の装飾（左アクセントは inset shadow で桁を崩さない） */
.race-ranking__item--top {
  border-bottom: 1px solid #eef1f5;
}
.race-ranking__item--rank1 {
  background: linear-gradient(90deg, rgba(255,215,0,0.16) 0%, rgba(255,215,0,0.03) 100%);
  box-shadow: inset 4px 0 0 #d4af37;
}
.race-ranking__item--rank2 {
  background: linear-gradient(90deg, rgba(192,192,192,0.16) 0%, rgba(192,192,192,0.03) 100%);
  box-shadow: inset 4px 0 0 #a8a8a8;
}
.race-ranking__item--rank3 {
  background: linear-gradient(90deg, rgba(205,127,50,0.16) 0%, rgba(205,127,50,0.03) 100%);
  box-shadow: inset 4px 0 0 #b87333;
}

/* 順位表示（1-3位はメダル / 4-5位は数字、同じ位置で桁揃え） */
.race-ranking__rank {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 32px;
  font-weight: 700;
  color: #666;
}
.race-ranking__medal {
  font-size: 1.35rem;
  line-height: 1;
}
.race-ranking__rank-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  font-family: var(--font-en, monospace);
  font-size: 0.95rem;
  font-weight: 700;
  color: #8a9099;
  background: #eef1f5;
  border-radius: 50%;
}

/* 空欄プレースホルダ（5位まで埋めて常に表示するため） */
.race-ranking__item--empty {
  opacity: 0.45;
}
.race-ranking__item--empty .race-ranking__name,
.race-ranking__item--empty .race-ranking__time {
  color: #ccc;
  font-style: italic;
  background: transparent;
  font-weight: 400;
}

/* 氏名 */
.race-ranking__name {
  font-size: 1rem;
  font-weight: 600;
  color: #222;
  line-height: 1.3;
}
.race-ranking__item--top .race-ranking__name {
  font-weight: 700;
  font-size: 1.05rem;
}

/* ゼッケンナンバー */
.race-ranking__bib {
  justify-self: center;
  font-family: var(--font-en, monospace);
  font-size: 0.92rem;
  font-weight: 700;
  color: #555;
  background: #eef1f5;
  border-radius: 4px;
  padding: 2px 8px;
  min-width: 44px;
  text-align: center;
}
.race-ranking__item--empty .race-ranking__bib {
  color: #ccc;
  background: transparent;
}
/* 所属 */
.race-ranking__org {
  font-size: 0.85rem;
  color: #6b7280;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* タイム */
.race-ranking__time {
  justify-self: end;
  font-family: var(--font-en, monospace);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--color-primary, #0F4D8C);
  letter-spacing: 0.02em;
  background: #f7f5ef;
  padding: 4px 10px;
  border-radius: 4px;
  white-space: nowrap;
}
.race-ranking__item--rank1 .race-ranking__time {
  color: #b8860b;
  background: rgba(255,215,0,0.15);
}
.race-ranking__item--rank2 .race-ranking__time {
  color: #7a7a7a;
  background: rgba(192,192,192,0.15);
}
.race-ranking__item--rank3 .race-ranking__time {
  color: #8b4513;
  background: rgba(205,127,50,0.15);
}

/* PDFリンク */
.race-ranking__pdf-link {
  text-align: center;
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1px dashed #ddd;
}
.race-ranking-empty {
  padding: 24px;
  text-align: center;
  color: #999;
  font-style: italic;
}

/* レスポンシブ */
@media (max-width: 600px) {
  /* バナーは狭い画面では縦に余裕を持たせ、文字を大きく */
  .race-ranking__hero { aspect-ratio: 5 / 4; border-radius: 14px; }
  .race-ranking__hero-inner { width: 100%; padding: 0 5cqw; gap: 2.6cqw; }
  .race-ranking__badge-text { font-size: 3cqw; letter-spacing: 0.7cqw; }
  .race-ranking__badge-icon { width: 3.6cqw; height: 3.6cqw; }
  .race-ranking__title { font-size: 7cqw; white-space: normal; line-height: 1.14; }
  .race-ranking__trophy { width: 9.5cqw; height: 9.5cqw; }
  .race-ranking__rankplate { height: 9.5cqw; padding: 0 4cqw; }
  .race-ranking__rankplate-text { font-size: 5.2cqw; }
  .race-ranking__bar { width: 2cqw; height: 9.5cqw; }
  .race-ranking__subtitle { font-size: 3.2cqw; }
  .race-ranking__metarow { margin-top: 2cqw; }
  .race-ranking__meta-icon { width: 4.6cqw; height: 4.6cqw; }
  .race-ranking__meta-label { font-size: 2.2cqw; }
  .race-ranking__meta-val { font-size: 3.4cqw; }
  .race-ranking__grid {
    grid-template-columns: 1fr;
  }
  .race-ranking__thead,
  .race-ranking__item {
    grid-template-columns: 38px 52px 1fr minmax(62px, auto);
    gap: 8px;
    padding-left: 12px;
    padding-right: 12px;
  }
  /* 狭い画面では所属列を省略（順位・ナンバー・氏名・タイム） */
  .race-ranking__th--org,
  .race-ranking__org {
    display: none;
  }
  .race-ranking__division--team .race-ranking__thead,
  .race-ranking__division--team .race-ranking__item {
    grid-template-columns: 38px 1fr minmax(62px, auto);
  }
  .race-ranking__hero-metaitem {
    font-size: 0.76rem;
    padding: 4px 11px;
  }
}

/* ========================================================================
   親善スライド = 親善LPと同じ v3 ヒーローを TOP スライダーにも表示（2026-06-09）
   ヒーローCSSをグローバル化（front-pageでも有効に）＋スライダー用の配置調整
   ======================================================================== */
.shz-hero-v3{ --red:#e3242a; --red-deep:#c81b29; --navy:#16276a; --navy-ink:#101f57; --sky:#2ba7df; --gold:#f4c01f; --skew:-12deg;
  --hf-en:"Montserrat","Helvetica Neue",Arial,sans-serif; --hf-jp:"Noto Sans JP","Hiragino Kaku Gothic ProN",sans-serif;
  position:relative; width:100%; overflow:hidden; background:#0a1330; }
.shz-hero-v3__stage{ position:relative; width:1720px; height:900px; flex:none; transform-origin:top left; will-change:transform; }
.shz-hero-v3__bg{ position:absolute; inset:0; background-position:center; background-size:cover; background-repeat:no-repeat; filter:saturate(1.24) contrast(1.08); }
.shz-hero-v3__scrim{ position:absolute; inset:0; background:linear-gradient(100deg, rgba(249,251,255,.92) 0%, rgba(248,251,255,.82) 24%, rgba(247,250,255,.46) 40%, rgba(246,250,255,.12) 52%, rgba(246,250,255,0) 62%); }
.shz-hero-v3__family{ position:absolute; right:-106px; bottom:-12px; width:1130px; height:auto; filter:drop-shadow(0 22px 40px rgba(8,16,40,.34)); }
.shz-hero-v3__content{ position:absolute; left:76px; top:60px; width:880px; color:var(--navy); }
.shz-hero-v3__titlebar{ display:flex; align-items:center; gap:22px; padding-bottom:14px; border-bottom:3px solid var(--red); width:max-content; max-width:100%; }
.shz-hero-v3__badge{ display:inline-flex; background:var(--red); transform:skewX(var(--skew)); padding:9px 22px; box-shadow:0 6px 16px rgba(200,27,41,.35); }
.shz-hero-v3__badge > span{ transform:skewX(calc(-1 * var(--skew))); display:inline-flex; align-items:baseline; gap:6px; font-family:var(--hf-jp); font-weight:900; color:#fff; letter-spacing:.02em; }
.shz-hero-v3__badge .num{ font-family:var(--hf-en); font-weight:800; font-size:34px; line-height:1; margin:0 2px; }
.shz-hero-v3__badge .k{ font-size:23px; line-height:1; }
.shz-hero-v3__org{ font-family:var(--hf-jp); font-weight:700; font-size:31px; letter-spacing:.06em; color:var(--navy); }
.shz-hero-v3__higashi{ font-family:var(--hf-en); font-weight:800; font-size:42px; letter-spacing:.04em; margin-top:20px; color:var(--navy); }
.shz-hero-v3__intl{ display:flex; align-items:center; gap:16px; margin:6px 0 4px; font-family:var(--hf-en); font-weight:600; font-size:21px; letter-spacing:.42em; color:var(--navy); width:max-content; }
.shz-hero-v3__intl::before, .shz-hero-v3__intl::after{ content:""; flex:0 0 26px; height:2px; background:var(--navy); }
.shz-hero-v3__title{ margin:0; }
.shz-hero-v3__friendship{ display:block; font-family:var(--hf-en); font-weight:900; font-size:114px; line-height:.9; color:var(--red); letter-spacing:-.01em; }
.shz-hero-v3__marathon{ display:block; font-family:var(--hf-en); font-weight:900; font-size:114px; line-height:.92; color:var(--navy); }
.shz-hero-v3__tagline{ font-family:var(--hf-en); font-weight:700; font-size:26px; letter-spacing:.155em; color:var(--navy); margin-top:14px; }
.shz-hero-v3__datewrap{ position:absolute; left:70px; top:658px; transform:translateY(-50%); display:flex; align-items:center; gap:20px; }
.shz-hero-v3__emblem{ width:calc(172px * var(--shz-hero-logo-scale, 1)); height:calc(172px * var(--shz-hero-logo-scale, 1)); flex:none; filter:drop-shadow(0 8px 18px rgba(8,16,40,.3)); }
.shz-hero-v3__datecol{ display:flex; flex-direction:column; gap:6px; }
.shz-hero-v3__date{ display:flex; align-items:flex-end; gap:12px; }
.shz-hero-v3__date .big{ font-family:var(--hf-en); font-weight:900; font-size:110px; line-height:.82; color:var(--navy); letter-spacing:-.02em; text-shadow:0 2px 0 rgba(255,255,255,.4); }
.shz-hero-v3__date .big .dot{ color:var(--red); }
.shz-hero-v3__date .stk{ display:flex; flex-direction:column; line-height:1; padding-bottom:6px; }
.shz-hero-v3__date .stk .sun{ font-family:var(--hf-en); font-weight:800; font-size:32px; color:var(--red); letter-spacing:.02em; }
.shz-hero-v3__date .stk .yr{ font-family:var(--hf-en); font-weight:800; font-size:32px; color:var(--navy); }
.shz-hero-v3__place{ font-family:var(--hf-jp); font-weight:700; font-size:26px; color:var(--navy-ink); letter-spacing:.04em; padding-left:6px; }
.shz-hero-v3__buttons{ position:absolute; left:76px; top:792px; display:flex; gap:22px; }
.shz-hero-v3__btn{ position:relative; transform:skewX(var(--skew)); border:none; cursor:pointer; padding:0; box-shadow:0 10px 22px rgba(8,16,40,.28); transition:transform .15s ease, filter .15s ease; text-decoration:none; }
.shz-hero-v3__btn:hover{ filter:brightness(1.06); }
.shz-hero-v3__btn .lbl{ transform:skewX(calc(-1 * var(--skew))); display:flex; align-items:center; gap:16px; padding:20px 34px; font-family:var(--hf-jp); font-weight:700; font-size:25px; color:#fff; letter-spacing:.04em; }
.shz-hero-v3__btn .arrow{ display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:50%; background:rgba(255,255,255,.22); font-family:var(--hf-en); font-weight:700; font-size:18px; }
.shz-hero-v3__btn--report{ background:var(--red); }
.shz-hero-v3__btn--photo{ background:var(--sky); }
/* 受付中のときのカウントダウン（ハーフと揃える・右下に配置） */
.shz-hero-v3__countdown{ position:absolute; right:60px; bottom:54px; z-index:5; display:flex; align-items:center; gap:18px; background:rgba(16,39,106,.9); padding:16px 28px; border-radius:14px; box-shadow:0 16px 34px rgba(8,16,40,.36); }
.shz-hero-v3__cd-lab{ font-family:var(--hf-jp); font-weight:800; font-size:19px; color:#fff; letter-spacing:.08em; line-height:1.3; }
.shz-hero-v3__cd-box{ display:flex; flex-direction:column; align-items:center; min-width:60px; }
.shz-hero-v3__cd-n{ font-family:var(--hf-en); font-weight:900; font-size:46px; line-height:1; color:#fff; font-variant-numeric:tabular-nums; }
.shz-hero-v3__cd-u{ font-family:var(--hf-en); font-weight:700; font-size:12px; letter-spacing:.14em; color:var(--gold); margin-top:6px; }

/* === 親善ヒーロー：1枚絵モード（クライアントが完成画像を差し替え・ボタンを下部に重ねる） === */
.shz-hero-oneimg{ position:relative; width:100%; aspect-ratio:1720/900; max-height:820px; overflow:hidden; background:#0a1330; }
.shz-hero-oneimg__pic{ position:absolute; inset:0; }
.shz-hero-oneimg__img{ width:100%; height:100%; object-fit:cover; display:block; }
.shz-hero-oneimg__actions{ position:absolute; left:0; right:0; bottom:0; z-index:2; display:flex; flex-wrap:wrap; gap:16px; justify-content:center; padding:70px 5% 26px; background:linear-gradient(to top, rgba(8,16,40,.62), rgba(8,16,40,.14) 55%, transparent); }
.shz-oneimg-btn{ display:inline-flex; transform:skewX(-12deg); text-decoration:none; box-shadow:0 10px 22px rgba(8,16,40,.32); transition:filter .15s ease; }
.shz-oneimg-btn:hover{ filter:brightness(1.06); }
.shz-oneimg-btn .lbl{ display:inline-flex; align-items:center; gap:12px; transform:skewX(12deg); padding:15px 32px; font-family:var(--font-jp,"Noto Sans JP",sans-serif); font-weight:700; font-size:1.05rem; color:#fff; letter-spacing:.04em; }
.shz-oneimg-btn .arw{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,.22); font-size:15px; }
.shz-oneimg-btn--entry{ background:#e3242a; }
.shz-oneimg-btn--info{ background:#2ba7df; }
.shz-oneimg-btn--closed{ background:#9aa3b2; cursor:not-allowed; box-shadow:0 8px 18px rgba(8,16,40,.2); }
.hero-slide--shinzen .shz-hero-oneimg{ position:absolute; inset:0; aspect-ratio:auto; max-height:none; height:100%; }
@media (max-width:768px){
  .shz-hero-oneimg{ aspect-ratio:4/5; max-height:none; }
  .shz-oneimg-btn .lbl{ font-size:1rem; padding:14px 26px; }
  .shz-hero-oneimg__actions{ gap:12px; padding:60px 4% 22px; }
}

/* --- スライダー内：親善スライドはv3ヒーローを丸ごと表示 --- */
.hero-slider { height: clamp(600px, 52.33vw, 820px); }
.hero-slide--shinzen .shz-hero-v3{ position:absolute; inset:0; width:100%; height:100%; }
.hero-slide--shinzen .shz-hero-v3__stage{ position:absolute; top:0; left:0; transform-origin:top left; }

/* ハーフスライド：hh-ヒーローをスライド全面にカバー表示（ハーフLPと同じ） */
.hero-slide--half .hh-hero{ position:absolute; inset:0; width:100%; height:100%; overflow:hidden; background:#063e3a; }
.hero-slide--half .hh-hero *{ box-sizing:border-box; }
.hero-slide--half .hh-stage{ position:absolute; top:0; left:0; transform-origin:top left; }

/* ===== ハーフ ハイライト：アイコン→写真カード化（2026-06-09） ===== */
.half-highlight-card--has-image {
  padding: 0;
  overflow: hidden;
  text-align: left;
}
.half-highlight-card__media {
  position: relative;
  width: 100%;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: var(--hm-bg, #f5f7fa);
}
.half-highlight-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.half-highlight-card--has-image:hover .half-highlight-card__img {
  transform: scale(1.05);
}
.half-highlight-card--has-image .half-highlight-card__title {
  margin: 26px 26px 0;
}
.half-highlight-card--has-image .half-highlight-card__text {
  margin: 12px 26px 32px;
}

/* 親善：エントリー終了の押せないボタン（TOPスライダー＋LP共通。二重クラスでLPインラインCSSに優先） */
.shz-hero-v3__btn.shz-hero-v3__btn--disabled {
  background: #9aa3b2;
  cursor: not-allowed;
  box-shadow: 0 6px 14px rgba(8, 16, 40, 0.18);
}
.shz-hero-v3__btn.shz-hero-v3__btn--disabled:hover,
.shz-hero-v3__btn.shz-hero-v3__btn--disabled:active {
  filter: none;
  transform: skewX(var(--skew));
}
.shz-hero-v3__btn.shz-hero-v3__btn--disabled .lbl {
  color: #fff;
  opacity: 0.95;
}

/* ========================================================================
   親善 最終CTA「また会おう」バナー（Claude Design ハンドオフ実装 2026-06-10）
   ※クラスは cta- prefix でサイト既存CSSと衝突しないよう独立スコープ
   ======================================================================== */
/* 全幅の帯（角丸カードをやめ、エッジtoエッジのバナーに）。2026-06-17 */
.shz-cta-wrap{ padding:0; display:block; background:none; }
.shz-cta-banner{
  --navy:#0a2657; --navy-2:#12377a; --red:#e51d3a; --red-2:#ff315a;
  --sky:#1aa0e0; --sky-2:#5ec5f2; --gold:#e3b13a; --gold-2:#f6d77a;
  --paper:#fff; --paper-2:#f3f8fd; --ink:#0a2657; --muted:#5a6b86;
  position:relative; width:100%; max-width:none; aspect-ratio:1600/600;
  border-radius:0; overflow:hidden; background:var(--paper);
  background-image:repeating-linear-gradient(122deg, #fff 0 26px, var(--paper-2) 26px 52px);
  box-shadow:none;
  container-type:inline-size; isolation:isolate;
  font-family:"Noto Sans JP", system-ui, sans-serif; color:var(--ink); line-height:1.6;
}
.cta-photo-wrap{ position:absolute; inset:0; z-index:1; pointer-events:none;
  background:repeating-linear-gradient(122deg, rgba(255,255,255,.5) 0 13px, rgba(225,238,248,.5) 13px 26px), linear-gradient(155deg,#bfe1f5 0%,#dcecf7 48%,#eef5fb 100%); }
.cta-photo{ position:absolute; top:0; bottom:0; height:100%; background-size:cover; background-position:center; }
.shz-cta-banner[data-photo="right"] .cta-photo{ right:0; width:54%; clip-path:polygon(15% 0,100% 0,100% 100%,0% 100%); }
.cta-deco{ position:absolute; inset:0; z-index:3; pointer-events:none; overflow:hidden; }
.cta-streak{ position:absolute; border-radius:99px; transform:skewX(-13deg); }
.cta-streak.a{ top:-4%; left:-3%; width:13cqw; height:1.5cqw; background:var(--red); opacity:.85; }
.cta-streak.b{ top:5%; left:7%; width:7cqw; height:.7cqw; background:var(--sky); opacity:.8; }
.cta-streak.c{ bottom:6%; left:-2%; width:9cqw; height:1cqw; background:var(--sky-2); opacity:.7; }
.cta-streak.d{ top:-3%; right:24%; width:8cqw; height:1.2cqw; background:var(--red); opacity:.5; }
.cta-content{ position:absolute; inset:0; z-index:6; display:flex; flex-direction:column; justify-content:center; padding:3cqw 6cqw; width:62%; pointer-events:none; }
.cta-content > *{ pointer-events:auto; }
.cta-eyebrow{ display:inline-flex; align-items:center; gap:.7cqw; margin-bottom:1.8cqw; }
.cta-num{ background:var(--red); color:#fff; font-weight:900; font-size:1.4cqw; letter-spacing:.02em; padding:.3cqw 1cqw; white-space:nowrap; box-shadow:0 3px 8px -2px rgba(229,29,58,.5); transform:skewX(-12deg); }
.cta-num-i{ display:inline-flex; align-items:baseline; transform:skewX(12deg); }
.cta-num b{ font-size:1.95cqw; }
.cta-ev{ color:var(--navy); font-weight:700; font-size:1.65cqw; letter-spacing:.04em; }
.cta-headline-en{ font-family:"Archivo", sans-serif; font-weight:900; font-style:italic; color:var(--navy); line-height:.92; letter-spacing:-.01em; font-size:5.3cqw; white-space:nowrap; margin:0; }
.cta-headline-en .yr{ color:var(--red); }
.cta-headline-jp{ font-weight:900; color:var(--navy); font-size:2.6cqw; letter-spacing:.04em; margin:1.2cqw 0 0; white-space:nowrap; }
.cta-headline-jp em{ color:var(--red); font-style:normal; }
.cta-thanks{ font-weight:500; color:var(--muted); font-size:1.3cqw; letter-spacing:.02em; margin:1cqw 0 0; }
.cta-row{ display:flex; gap:1cqw; margin-top:2.2cqw; flex-wrap:wrap; }
.cta-btn{ display:inline-flex; align-items:center; justify-content:center; transform:skewX(-12deg); border:none; cursor:pointer; text-decoration:none; padding:1cqw 2.2cqw; transition:transform .16s ease, box-shadow .16s ease, filter .16s ease; }
.cta-lab{ display:inline-flex; align-items:center; gap:.8cqw; transform:skewX(12deg); font-family:"Noto Sans JP",sans-serif; font-weight:900; font-size:1.4cqw; letter-spacing:.02em; white-space:nowrap; }
.cta-arrow{ font-size:1.35cqw; }
.cta-btn-primary{ background:linear-gradient(180deg,var(--red-2),var(--red)); color:#fff; box-shadow:0 12px 24px -8px rgba(229,29,58,.6); }
.cta-btn-primary:hover{ transform:skewX(-12deg) translateY(-3px); box-shadow:0 18px 30px -8px rgba(229,29,58,.7); }
.cta-btn-sky{ background:linear-gradient(180deg,var(--sky-2),var(--sky)); color:#fff; box-shadow:0 12px 24px -8px rgba(26,160,224,.55); }
.cta-btn-sky:hover{ transform:skewX(-12deg) translateY(-3px); box-shadow:0 18px 30px -8px rgba(26,160,224,.65); }
.cta-emblem{ position:absolute; z-index:7; bottom:6cqw; right:5cqw; width:17cqw; display:flex; flex-direction:column; align-items:center; pointer-events:none; }
.cta-emblem::before{ content:""; position:absolute; left:50%; top:43%; transform:translate(-50%,-50%); width:21cqw; height:21cqw; border-radius:50%; z-index:-1; background:radial-gradient(circle, rgba(255,255,255,.72) 0%, rgba(255,255,255,.46) 42%, rgba(255,255,255,0) 68%); }
.cta-logo-img{ width:16cqw; height:15cqw; object-fit:contain; filter:drop-shadow(0 .5cqw 1.1cqw rgba(10,38,87,.30)); }
.cta-ribbon{ margin-top:.3cqw; position:relative; z-index:2; background:linear-gradient(180deg,var(--gold-2),var(--gold) 55%,#b8862a); color:var(--navy); font-family:"Archivo",sans-serif; font-weight:900; font-style:italic; font-size:1.45cqw; letter-spacing:.04em; padding:.5cqw 1.7cqw; border-radius:.4cqw; box-shadow:0 4px 10px rgba(0,0,0,.25); white-space:nowrap; display:flex; align-items:baseline; gap:.5cqw; }
.cta-ribbon b{ font-size:2.2cqw; }
.shz-cta-banner[data-emblem="off"] .cta-emblem{ display:none; }
@media (max-width:680px){
  .shz-cta-wrap{ padding:0; }
  .shz-cta-banner{ aspect-ratio:auto; background:#fff; }
  .cta-photo-wrap{ position:relative; height:46vw; min-height:200px; inset:auto; }
  .shz-cta-banner[data-photo] .cta-photo{ position:absolute; inset:0; width:100%; clip-path:none; }
  .cta-deco{ display:none; }
  .cta-content{ position:relative; inset:auto; width:100%; padding:26px 22px 8px; }
  .cta-headline-en{ font-size:clamp(34px,12.5vw,52px); white-space:normal; }
  .cta-headline-jp{ font-size:23px; margin-top:8px; white-space:normal; }
  .cta-thanks{ font-size:13px; margin-top:10px; }
  .cta-eyebrow{ margin-bottom:14px; }
  .cta-num{ font-size:12px; padding:4px 9px; } .cta-num b{ font-size:16px; } .cta-ev{ font-size:14px; }
  .cta-row{ gap:10px; margin-top:20px; }
  .cta-btn{ padding:13px 26px; } .cta-lab{ font-size:15px; gap:8px; } .cta-arrow{ font-size:14px; }
  .cta-emblem{ position:relative; flex-direction:row; gap:14px; inset:auto; width:auto; align-items:center; padding:18px 22px 24px; }
  .cta-emblem::before{ display:none; }
  .cta-logo-img{ width:104px; height:97px; }
  .cta-ribbon{ margin-top:0; font-size:13px; padding:6px 14px; } .cta-ribbon b{ font-size:20px; }
}

/* 連盟概要：事務局長メッセージ署名を組織＋役職名で綺麗に整列（2026-06-10） */
.about-message-card__sign-org{ display:block; font-size:0.8rem; opacity:.72; margin-bottom:3px; letter-spacing:.04em; }
.about-message-card__sign-name{ display:block; font-size:1.02rem; color:#16276a; letter-spacing:.05em; }
.about-message-card__sign-name strong{ font-size:1.24rem; margin-left:.5em; }


/* ===== 東日本ハーフマラソン ヒーロー（Claude Design ハンドオフ実装 2026-06-14・hh-プレフィックスで独立スコープ） ===== */
.race-half-page .hh-hero{ position:relative; width:100%; overflow:hidden; background:#063e3a; }
.race-half-page .hh-hero *{ box-sizing:border-box; }

  :root{
    --teal-deep:#0c9286;
    --teal-dark:#075b53;
    --teal-edge:#054b46;
    --lime:#cbe23a;
    --lime-bright:#d8ec2e;
    --coral:#ff6a52;
    --coral-soft:#ffd8c9;
    --btn-coral:#ec4b63;
    --btn-blue:#27a3d6;
    --ink:#0a3b39;
  }
  
  
  .hh-stage{
    position:relative;width:1720px;height:920px;overflow:hidden;flex:none;
    transform-origin:top left;
    background:#bfe7ef;
  }

  /* ---------- illustration ---------- */
  .hh-illust{
    position:absolute;inset:0;
    background-image:url('assets/images/hero-half.png');
    background-repeat:no-repeat;
    background-size:cover;
    background-position:center center;
  }

  /* teal wash over the whole frame, stronger on the left for text legibility */
  .hh-tint{
    position:absolute;inset:0;
    background:linear-gradient(102deg,
      var(--teal-edge) 0%,
      var(--teal-deep) 30%,
      rgba(16,150,138,0.80) 46%,
      rgba(40,180,166,0.34) 60%,
      rgba(120,210,200,0.06) 72%,
      rgba(255,255,255,0) 82%);
    mix-blend-mode:multiply;
  }
  /* darken bottom-left so date/buttons sit on solid color */
  .hh-vign{
    position:absolute;inset:0;
    background:
      radial-gradient(155% 125% at -12% 118%, rgba(5,58,53,0.94) 0%, rgba(5,58,53,0.55) 40%, rgba(5,58,53,0) 62%),
      linear-gradient(180deg, rgba(6,70,64,0) 46%, rgba(6,70,64,0.55) 100%);
  }

  /* lime wedge top-right */
  .hh-wedge{
    position:absolute;top:-2px;right:-2px;width:560px;height:560px;
    background:linear-gradient(135deg,var(--lime-bright),#bcd91f);
    clip-path:polygon(100% 0, 100% 78%, 22% 0);
    mix-blend-mode:screen;opacity:.92;
  }
  .hh-wedge2{
    position:absolute;top:-2px;right:-2px;width:560px;height:560px;
    background:var(--lime-bright);
    clip-path:polygon(100% 0, 100% 64%, 36% 0);
    opacity:.62;
  }

  /* decorative triangles (left) */
  .hh-tri{position:absolute;opacity:.9;}
  .hh-tri.hh-a{left:60px;top:250px;width:0;height:0;border-left:26px solid transparent;border-right:26px solid transparent;border-bottom:64px solid #28b24a;transform:rotate(28deg);opacity:.55;}
  .hh-tri.hh-b{left:150px;top:560px;width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:34px solid var(--lime);transform:rotate(-18deg);opacity:.7;}

  /* coral diagonal beam group */
  .hh-beam{
    position:absolute;left:-12%;top:54%;width:128%;height:200px;
    transform:rotate(-22deg);transform-origin:center;
    pointer-events:none;
  }
  .hh-beam .hh-band{position:absolute;left:0;right:0;height:52px;top:60px;
    background:linear-gradient(180deg,rgba(255,228,214,0) 0%,rgba(255,221,205,.88) 30%,rgba(255,236,228,.95) 62%,rgba(255,228,214,0) 100%);}
  .hh-beam .hh-core{position:absolute;left:0;right:0;height:10px;top:84px;
    background:linear-gradient(90deg,rgba(255,120,95,0) 0%,rgba(255,118,92,.92) 22%,rgba(255,138,112,.9) 62%,rgba(255,138,112,0) 100%);
    filter:blur(.5px);box-shadow:0 0 22px rgba(255,140,110,.45);}
  .hh-beam .hh-l1{position:absolute;left:0;right:0;height:2px;top:118px;background:rgba(255,255,255,.85);}
  .hh-beam .hh-l2{position:absolute;left:0;right:0;height:2px;top:130px;background:rgba(255,255,255,.5);}
  .hh-beam .hh-l3{position:absolute;left:0;right:0;height:2px;top:142px;background:rgba(255,255,255,.32);}
  /* white speed lines top-right (echo reference) */
  .hh-beam .hh-t1{position:absolute;left:55%;right:0;height:3px;top:34px;background:rgba(255,255,255,.9);}
  .hh-beam .hh-t2{position:absolute;left:62%;right:0;height:3px;top:46px;background:rgba(255,255,255,.55);}

  /* ---------- content ---------- */
  .hh-content{position:absolute;inset:0;padding:64px 70px 60px;display:flex;flex-direction:column;justify-content:space-between;z-index:5;}

  .hh-eyebrow{display:flex;align-items:center;gap:20px;}
  .hh-badge{display:flex;align-items:baseline;gap:7px;background:var(--lime);color:#143f1d;
    padding:7px 22px 8px;border-radius:2px;font-family:"Montserrat",sans-serif;font-weight:800;
    box-shadow:0 4px 14px rgba(0,0,0,.18);transform:skewX(-13deg);}
  .hh-badge .hh-v{display:inline-block;transform:skewX(13deg);font-size:17px;letter-spacing:.06em;}
  .hh-badge .hh-n{display:inline-block;transform:skewX(13deg);font-size:30px;line-height:1;letter-spacing:.01em;}
  .hh-eyebrow .hh-cat{color:#fff;font-weight:700;font-size:21px;letter-spacing:.02em;white-space:nowrap;
    text-shadow:0 1px 6px rgba(0,40,36,.5);}
  .hh-rule{height:2px;width:560px;margin-top:16px;
    background:linear-gradient(90deg,rgba(255,255,255,.85),rgba(255,255,255,0));}

  .hh-overline{margin-top:18px;font-family:"Saira Condensed",sans-serif;font-size:22px;
    display:flex;align-items:center;gap:0;white-space:nowrap;text-shadow:0 1px 8px rgba(0,40,36,.55);}
  .hh-overline .hh-a{color:#fff;font-weight:700;letter-spacing:.16em;}
  .hh-overline .hh-bar{flex:none;width:34px;height:2px;margin:0 16px;background:rgba(255,255,255,.6);}
  .hh-overline .hh-b{color:#dff6f0;font-weight:600;letter-spacing:.18em;}

  .hh-title{margin-top:4px;font-family:"Archivo Black","Montserrat",sans-serif;font-weight:400;
    line-height:.84;letter-spacing:-.012em;text-shadow:0 4px 26px rgba(0,46,42,.5);}
  .hh-title .hh-l1{display:block;font-size:130px;color:var(--lime-bright);}
  .hh-title .hh-l2{display:block;font-size:130px;color:#fff;}

  .hh-tagline{margin-top:22px;font-family:"Noto Sans JP",sans-serif;font-weight:900;
    font-size:34px;color:#fff;letter-spacing:.04em;
    text-shadow:0 2px 12px rgba(0,40,36,.5);}
  .hh-tagline .hh-pu{font-family:"Montserrat",sans-serif;font-style:italic;font-weight:900;
    color:var(--lime-bright);margin-left:8px;letter-spacing:0;}

  /* bottom cluster */
  .hh-bottom{display:flex;flex-direction:column;gap:22px;}
  .hh-dateblock{display:flex;align-items:center;gap:34px;}
  .hh-dome{height:255px;width:auto;filter:drop-shadow(0 6px 16px rgba(0,30,28,.45));}
  .hh-datecol{display:flex;flex-direction:column;gap:16px;align-items:flex-start;position:relative;top:23px;}
  .hh-daterow{display:flex;align-items:flex-end;gap:20px;}
  .hh-dateline{display:flex;align-items:flex-end;gap:20px;line-height:.9;}
  .hh-bigdate{font-family:"Montserrat",sans-serif;font-weight:800;color:#fff;font-size:102px;
    letter-spacing:-.01em;line-height:.82;text-shadow:0 4px 22px rgba(0,40,36,.7);}
  .hh-bigdate .hh-dot{color:var(--lime-bright);}
  .hh-dmeta{display:flex;flex-direction:column;gap:8px;padding-bottom:12px;}
  .hh-dmeta .hh-dow{font-family:"Montserrat",sans-serif;font-style:italic;font-weight:800;line-height:1;}
  .hh-dmeta .hh-dow b{font-size:42px;color:var(--lime-bright);text-shadow:0 2px 10px rgba(0,40,36,.7);}
  .hh-dmeta .hh-dow span{font-size:32px;color:#fff;margin-left:8px;font-style:normal;font-weight:800;text-shadow:0 2px 10px rgba(0,40,36,.7);}
  .hh-dmeta .hh-start{font-family:"Saira Condensed",sans-serif;font-weight:700;font-size:20px;
    letter-spacing:.16em;color:#fff;text-shadow:0 2px 10px rgba(0,40,36,.8);}

  /* countdown */
  .hh-cd-sep{width:2px;height:78px;margin:0 10px 8px;
    background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.5),rgba(255,255,255,0));}
  .hh-countdown{display:flex;align-items:flex-end;gap:11px;padding-bottom:6px;}
  .hh-cd{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
    width:86px;height:88px;background:rgba(6,52,48,.5);border:1.5px solid rgba(203,226,58,.55);
    transform:skewX(-11deg);backdrop-filter:blur(3px);box-shadow:0 6px 16px rgba(0,30,28,.25);}
  .hh-cd>*{display:block;transform:skewX(11deg);}
  .hh-cd .hh-num{font-family:"Montserrat",sans-serif;font-weight:800;font-size:40px;line-height:1;color:#fff;
    font-variant-numeric:tabular-nums;}
  .hh-cd .hh-lab{font-family:"Saira Condensed",sans-serif;font-weight:700;font-size:12px;letter-spacing:.10em;
    color:var(--lime-bright);margin-top:7px;}

  .hh-infoline{display:flex;align-items:center;gap:14px;color:#eafff6;font-size:18px;font-weight:700;
    text-shadow:0 1px 6px rgba(0,40,36,.5);}
  .hh-infoline .hh-sep{width:1px;height:15px;background:rgba(255,255,255,.45);}
  .hh-infoline .hh-pin{color:var(--lime-bright);}

  .hh-actions{display:flex;align-items:center;gap:18px;margin-top:2px;flex-wrap:wrap;}
  .hh-actions .hh-deadline{margin-top:0;margin-left:auto;}
  .hh-btn{position:relative;display:inline-flex;align-items:center;gap:16px;
    padding:18px 36px 18px 46px;color:#fff;font-weight:700;font-size:23px;letter-spacing:.02em;
    clip-path:polygon(22px 0,100% 0,calc(100% - 22px) 100%,0 100%);
    box-shadow:0 8px 20px rgba(0,30,28,.28);cursor:pointer;}
  .hh-btn .hh-arr{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
    border-radius:50%;background:rgba(255,255,255,.22);font-size:18px;}
  .hh-btn.hh-entry{background:linear-gradient(180deg,#f15a72,var(--btn-coral));padding-right:34px;}
  .hh-btn.hh-info{background:linear-gradient(180deg,#1bb89c,#00a98e);}
  .hh-btn.hh-btn--closed{background:linear-gradient(180deg,#9aa3b2,#7d8696);cursor:not-allowed;box-shadow:0 6px 14px rgba(8,16,40,.18);}

  .hh-deadline{margin-top:14px;display:inline-flex;align-items:center;gap:9px;white-space:nowrap;
    background:rgba(5,55,50,.55);color:#eafff6;font-size:16px;font-weight:700;
    padding:8px 16px;border-radius:6px;backdrop-filter:blur(2px);width:max-content;}
  .hh-deadline .hh-d{width:7px;height:7px;border-radius:50%;background:var(--coral);}

/* ==========================================================================
   スマホ専用ヘッダー（ロゴ｜カウントダウン｜ハンバーガー）＋ドロワーナビ
   ★PCは一切変更しない：既定で display:none、組み替えは @media(max-width:768px) のみ。
   ヘッダー横はみ出し(83px)の解消（2026-06-18）
   ========================================================================== */
.mhead-cd,
.nav-burger,
.mobile-nav,
.mobile-nav-scrim { display: none; }

@media (max-width: 768px) {
  /* PCヘッダー要素を隠してドロワーへ集約 */
  .site-header .topbar,
  .site-header .global-nav,
  .site-header .header-actions { display: none; }

  /* 1行レイアウト：ロゴ｜カウントダウン｜☰ */
  .site-header__main { overflow-x: clip; }
  .site-header__inner {
    padding: 8px 14px;
    gap: 8px;
    flex-wrap: nowrap;
    justify-content: flex-start;
    max-width: 100%;
  }
  .site-logo--federation { flex: 0 0 auto; }
  .site-logo--federation .site-logo__img { height: 46px; }

  /* カウントダウン（既存 [data-event-date] 部品を流用） */
  .mhead-cd { display: flex; align-items: center; gap: 3px; margin-left: auto; flex: 0 0 auto; }
  .mhead-cd__lab {
    font-family: var(--font-en); font-weight: 800; font-size: 8px; line-height: 1.1;
    letter-spacing: .05em; color: #5a6473; text-align: right; margin-right: 2px;
  }
  .mhead-cd__b { background: #103f39; color: #fff; border: 1.5px solid rgba(205,255,0,.55); border-radius: 4px; width: 31px; padding: 3px 0 2px; text-align: center; }
  .mhead-cd__n { display: block; font-family: var(--font-en); font-weight: 900; font-size: 14px; line-height: 1; }
  .mhead-cd__u { display: block; font-family: var(--font-en); font-weight: 700; font-size: 6.5px; color: #cdff00; margin-top: 1px; }

  /* ハンバーガー */
  .nav-burger {
    display: flex; flex-direction: column; justify-content: center; gap: 5px;
    width: 30px; height: 24px; padding: 0; margin-left: 4px;
    background: none; border: none; cursor: pointer; flex: 0 0 auto;
  }
  .nav-burger span { display: block; width: 100%; height: 2.5px; background: #16348c; border-radius: 2px; transition: transform .25s ease, opacity .2s ease; }
  .nav-burger.is-open span:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
  .nav-burger.is-open span:nth-child(2) { opacity: 0; }
  .nav-burger.is-open span:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

  /* スクリム */
  .mobile-nav-scrim {
    display: block; position: fixed; inset: 0; background: rgba(8, 20, 60, .42);
    opacity: 0; visibility: hidden; transition: opacity .28s ease, visibility .28s ease; z-index: 90;
  }
  .mobile-nav-scrim.is-open { opacity: 1; visibility: visible; }

  /* ドロワー */
  .mobile-nav {
    display: block; position: fixed; top: 0; right: 0;
    width: min(84vw, 330px); height: 100vh; height: 100dvh; background: #fff;
    box-shadow: -10px 0 34px rgba(0, 0, 0, .2);
    transform: translateX(100%); visibility: hidden;
    transition: transform .3s cubic-bezier(.22, 1, .36, 1), visibility .3s;
    z-index: 100; overflow-y: auto; -webkit-overflow-scrolling: touch;
  }
  .mobile-nav.is-open { transform: translateX(0); visibility: visible; }
  .mobile-nav__inner { padding: 70px 22px 40px; }

  .mobile-nav__list { list-style: none; margin: 0; padding: 0; }
  .mobile-nav__list li { border-bottom: 1px solid #eef1f5; }
  .mobile-nav__list a { display: block; padding: 14px 4px; font-weight: 700; font-size: 15px; color: #16348c; text-decoration: none; }

  .mobile-nav__heading { margin: 22px 0 8px; font-family: var(--font-en); font-weight: 800; font-size: 11px; letter-spacing: .1em; color: #8a93a3; }
  .mobile-nav__entry { display: block; padding: 11px 14px; margin-bottom: 8px; border-radius: 10px; background: #f4f7fb; text-decoration: none; line-height: 1.35; }
  .mobile-nav__entry b { display: block; font-size: 14px; color: #16348c; font-weight: 800; }
  .mobile-nav__entry small { display: block; font-size: 11px; color: #f07800; font-weight: 600; margin-top: 2px; }
  .mobile-nav__entry--closed b { color: #6b7280; }
  .mobile-nav__entry--closed small { color: #9aa3b2; }

  .mobile-nav__util { list-style: none; margin: 18px 0 0; padding: 16px 0 0; border-top: 1px solid #eef1f5; }
  .mobile-nav__util a { display: block; padding: 9px 4px; font-size: 13px; color: #5a6473; text-decoration: none; }

  body.mobile-nav-lock { overflow: hidden; }
}

/* ==========================================================================
   スマホ専用ヒーロー（写真上→文字下）★PCは一切変更しない（既定 display:none）。
   2026-06-18 / 親善・ハーフ・神奈川 共通テンプレ（色は大会別 --m-* 変数）
   ========================================================================== */
.mhero { display: none; }

@media (max-width: 768px) {
  /* スライダー高さ（PCは clamp のまま） */
  .hero-slider { height: 660px; }

  /* デスクトップ版ヒーローをモバイルで隠す（TOPスライダー＋各LP） */
  .hero-slide--shinzen .shz-hero-v3,
  .hero-slide--half .hh-hero,
  .hero-slide--kanagawa .hero-slide__bg,
  .hero-slide--kanagawa .hero-slide__overlay,
  .hero-slide--kanagawa .hero-slide__inner,
  .race-shinzen-page .shz-hero-v3,
  .race-half-page .hh-hero { display: none; }
  .mhero { display: block; }

  .mhero {
    position: relative; background: #fff; overflow: hidden;
    font-family: var(--font-jp);
    --m-text: #16348c; --m-accent: #e8243c; --m-c1: #e8243c; --m-c2: #1aa3d6;
  }
  /* TOPスライダー内では各スライドを埋める（クロスフェード）。LPでは通常フロー */
  .hero-slide .mhero { position: absolute; inset: 0; }
  .mhero--half     { --m-text: #14323f; --m-accent: #00a98e; --m-c1: #e8243c; --m-c2: #00a98e; }
  .mhero--kanagawa { --m-text: #0F4D8C; --m-accent: #1f7fc4; --m-c1: #0F4D8C; --m-c2: #1aa3d6; }

  /* 写真：大会別の背景。親善のみ透過家族を重ねる */
  .mhero__photo { position: relative; height: 222px; overflow: hidden; background-size: cover; background-position: center; }
  .mhero--shinzen  .mhero__photo { background-image: url('assets/images/hero-bg-road.jpg'); background-position: center 42%; }
  .mhero--half     .mhero__photo { background-image: url('assets/images/hero-half-m.jpg'); }
  .mhero--kanagawa .mhero__photo { background-image: url('assets/images/hero-kanagawa-m.jpg'); }
  .mhero__ov { position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(15,52,140,.14) 0%, rgba(15,52,140,0) 45%); }
  .mhero__family { position: absolute; left: 50%; bottom: -4px; transform: translateX(-50%); width: 89%; max-width: 360px; height: auto; z-index: 2; object-fit: contain; }
  .mhero__fade { position: absolute; inset: 0; z-index: 3; pointer-events: none; background: linear-gradient(180deg, rgba(255,255,255,0) 58%, #fff 100%); }

  .mhero__body { position: relative; padding: 6px 20px 22px; }
  .mhero__erow { display: flex; align-items: center; gap: 9px; margin-bottom: 5px; }
  .mhero__edition { display: inline-flex; align-items: baseline; gap: 4px; background: var(--m-accent); color: #fff; font-weight: 900; font-size: 13px; padding: 5px 14px; transform: skewX(-10deg); white-space: nowrap; }
  .mhero__edition > * { transform: skewX(10deg); }
  .mhero__edition .n { font-family: var(--font-en); font-size: 20px; }
  .mhero__brand { font-weight: 800; font-size: 15px; color: var(--m-text); }
  .mhero__uline { display: block; height: 2px; background: var(--m-text); margin: 5px 0 9px; }

  .mhero__title { margin: 0; font-family: var(--font-en); line-height: .92; color: var(--m-text); }
  .mhero__title .s { display: block; font-weight: 700; font-size: 15px; letter-spacing: .08em; }
  .mhero__title .r { display: block; font-weight: 700; font-size: 12px; letter-spacing: .14em; margin: 2px 0; }
  .mhero__title .m { display: block; font-weight: 900; font-size: 40px; }
  .mhero__title .m--red, .mhero__title .m--accent { color: var(--m-accent); }

  .mhero__tagline { margin-top: 7px; font-family: var(--font-en); font-weight: 700; font-size: 11px; letter-spacing: .08em; color: var(--m-text); opacity: .85; }

  .mhero__midrow { display: flex; align-items: center; gap: 13px; margin: 13px 0; }
  .mhero__emblem { width: 64px; height: 64px; object-fit: contain; flex-shrink: 0; filter: drop-shadow(0 3px 7px rgba(0,0,0,.18)); }
  /* 親善エンブレム(自由の女神)はSVG内余白が多く小さく見えるため1.5倍 */
  .mhero--shinzen .mhero__emblem { width: 96px; height: 96px; }
  /* エンブレム拡大で背が高くなる分、親善だけ縦の余白を詰めてハーフと同じ収まりに（狭い360pxでもCTAがドットに被らない） */
  .mhero--shinzen .mhero__erow { margin-bottom: 3px; }
  .mhero--shinzen .mhero__tagline { margin-top: 3px; }
  .mhero--shinzen .mhero__midrow { margin: 2px 0 3px; }
  .mhero--shinzen .mhero__ctas { gap: 7px; }
  .mhero--shinzen .mhero__body { padding-bottom: 4px; }
  .mhero__date { font-family: var(--font-en); font-weight: 800; color: var(--m-text); font-size: 44px; line-height: 1; letter-spacing: -.02em; }
  .mhero__date .dot { color: var(--m-accent); }
  .mhero__date .dow { color: var(--m-accent); font-size: 16px; margin-left: 3px; }
  .mhero__date .yr { font-size: 13px; margin-left: 3px; }
  .mhero__venue { margin-top: 5px; font-weight: 700; font-size: 11px; color: #33415c; }

  .mhero__ctas { display: flex; flex-direction: column; gap: 10px; }
  .mhero__cta { display: flex; align-items: center; justify-content: center; gap: 9px; padding: 14px; color: #fff; font-weight: 700; font-size: 15px; text-decoration: none; clip-path: polygon(10px 0, 100% 0, calc(100% - 10px) 100%, 0 100%); }
  .mhero__cta--c1, .mhero__cta--red  { background: var(--m-c1); }
  .mhero__cta--c2 { background: var(--m-c2); }
  .mhero__cta--disabled { background: #9aa3b2; cursor: not-allowed; }
  .mhero__cta .arw { width: 22px; height: 22px; border-radius: 50%; background: rgba(255,255,255,.26); display: flex; align-items: center; justify-content: center; font-size: 13px; flex-shrink: 0; }
}

/* ==========================================================================
   スマホ微調整（2026-06-18）：カウントダウン拡大／スライダー矢印を写真エリアへ
   ========================================================================== */
@media (max-width: 768px) {
  /* カウントダウン：ヒーロー風（フルラベル DAYS/HOURS/MIN ＋ 立体スキュー箱） */
  .mhead-cd { gap: 3px; }
  .mhead-cd__b { width: 36px; padding: 4px 0 3px; border-radius: 4px; transform: skewX(-9deg); }
  .mhead-cd__n { font-size: 15px; transform: skewX(9deg); }
  .mhead-cd__u { font-size: 6.5px; letter-spacing: .02em; transform: skewX(9deg); }
  .mhead-cd__lab { font-size: 8px; line-height: 1.15; }

  /* ② スライダー矢印を写真エリア（上＝高さ222pxの中央 111px）へ。文字への被りを解消 */
  .hero-slider__nav { top: 111px; width: 42px; height: 42px; font-size: 1.3rem; }
}
