/* ==========================================================================
   HOMEページ専用スタイル
   ========================================================================== */
/* ==========================================================================
   HERO セクション
   ========================================================================== */

.hero {
  position: relative;
  height: 100vh;
  width: 100%;
  display: flex;
  align-items: flex-end; /* コピーを下寄せ */
  padding-left: 100px;
}

.hero-video-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  background: linear-gradient(160deg, #0a1f3d 0%, #0f2d54 50%, #1a3a6a 100%);
}

.hero-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 1;
  opacity: 1;
  transition: opacity 1s ease;
  pointer-events: none;
}

.hero-placeholder.is-hidden {
  opacity: 0;
}

.hero-placeholder__logo {
  width: 200px;
  height: auto;
  /* filter: brightness(0) invert(1); */
  opacity: 0.9;
}

.hero-placeholder__line {
  width: 50px;
  height: 2px;
  margin-top: 24px;
  background: linear-gradient(to right, #18a59f, #4495e5);
  border-radius: 2px;
  animation: placeholder-pulse 1.8s ease-in-out infinite;
}

@keyframes placeholder-pulse {
  0% {
    width: 30px;
    opacity: 0.4;
  }
  50% {
    width: 80px;
    opacity: 1;
  }
  100% {
    width: 30px;
    opacity: 0.4;
  }
}

.hero-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1.2s ease;
}

.hero-video.is-loaded {
  opacity: 0.65;
}

.hero-content {
  color: var(--text-white);
  padding-bottom: 120px;
  padding-left: 50px;
  /* パネルと被らないよう右側に余白を確保 */
  max-width: calc(100% - 500px);
  z-index: 1;
}

.hero-text {
  font-size: 3.5rem;
  font-weight: 700;
  line-height: 1.3;
  text-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);
}

/* ==========================================================================
   HERO 右下ニュースパネル
   ========================================================================== */

.hero-news-panel {
  position: absolute; /* フローから切り離して完全に右下固定 */
  bottom: 0;
  right: 0;
  width: 440px;
  background: #fff;
  display: flex;
  flex-direction: column;
  z-index: 10;
  opacity: 0.92;
}

.hero-news-panel__header {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 14px 20px;
  background: var(--navy);
}

.hero-news-panel__en {
  font-family: "Montserrat", sans-serif;
  font-size: 0.85rem;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.12em;
}

.hero-news-panel__jp {
  font-size: 0.68rem;
  color: rgba(255, 255, 255, 0.65);
}

.hero-news-panel__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.hero-news-panel__list li {
  border-bottom: 1px solid #f0f0f0;
}
.hero-news-panel__list li:last-child {
  border-bottom: none;
}

.hero-news-panel__item {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 14px 20px;
  text-decoration: none;
  transition: background 0.2s;
}
.hero-news-panel__item:hover {
  background: #f5fbfa;
}

.hero-news-panel__date {
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--emerald);
  font-family: "Montserrat", sans-serif;
}

.hero-news-panel__title {
  font-size: 0.83rem;
  font-weight: 600;
  line-height: 1.6;
  color: #222;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.hero-news-panel__more {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 10px 20px;
  background: var(--emerald); /* 初期からエメラルドに */
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  text-decoration: none;
  transition: background 0.2s;
}
.hero-news-panel__more:hover {
  background: var(--navy);
  color: #fff;
}

/* ==========================================================================
   HERO Responsive
   ========================================================================== */

/* 大画面：パネル幅の余裕を確保 */
@media (max-width: 1300px) {
  .hero-content {
    max-width: calc(100% - 420px);
  }

  .hero-news-panel {
    width: 380px;
  }
}

/* タブレット */
@media (max-width: 1024px) {
  .hero {
    padding-left: 40px;
  }

  .hero-content {
    max-width: calc(100% - 340px);
    padding-bottom: 80px;
    padding-left: 0;
  }

  .hero-text {
    font-size: 2.5rem;
    line-height: 1.4;
  }

  .hero-news-panel {
    width: 300px;
  }
}

/* スマホ：縦積みに完全切り替え */
@media (max-width: 768px) {
  /* ヒーローはflexをやめて通常ブロックに */
  .hero {
    height: auto;
    display: block;
    padding: 0;
  }

  /* 動画エリア：画面の70% */
  .hero-video-container {
    position: relative; /* absoluteを解除 */
    height: 70vh;
    height: 70svh; /* モバイルブラウザのアドレスバーを考慮 */
    z-index: 0;
  }

  /* コピーを動画の上に絶対配置（動画と同じ高さ） */
  .hero-content {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 70vh;
    height: 70svh;
    display: flex;
    align-items: flex-end;
    padding: 0 20px 28px;
    max-width: 100%;
    z-index: 2;
  }

  .hero-text {
    font-size: 1.8rem;
    line-height: 1.5;
    text-align: left;
  }

  /* ニュースパネル：画面の30%（動画と合わせて100%） */
  .hero-news-panel {
    position: relative;
    width: 100%;
    height: 30vh;
    height: 30svh;
    opacity: 1;
    bottom: auto;
    right: auto;
    display: flex;
    flex-direction: column;
  }

  /* リストエリアを伸ばしてスクロール可能に */
  .hero-news-panel__list {
    flex: 1;
    overflow-y: auto;
  }

  /* パネル内の各パーツをコンパクトに */
  .hero-news-panel__header {
    padding: 10px 14px;
  }

  .hero-news-panel__item {
    padding: 8px 14px;
    gap: 3px;
  }

  .hero-news-panel__date {
    font-size: 0.65rem;
  }

  .hero-news-panel__title {
    font-size: 0.78rem;
    line-height: 1.4;
    -webkit-line-clamp: 2;
    white-space: normal;
  }

  .hero-news-panel__more {
    padding: 8px 14px;
    font-size: 0.7rem;
  }
}
/* ==========================================================================
   NEWS セクション
   ========================================================================== */

.news-section {
  background-color: #fff;
  padding-bottom: 80px; /* 下の余白 */
}

/* リストコンテナ */
.news-list {
  display: flex;
  flex-direction: column;
  gap: 15px; /* アイテム間の隙間 */
  margin-bottom: 40px;
}

/* 各ニュースアイテム（帯） */
.news-item {
  background: var(--bg-gray); /* 薄いグレー背景 */
  transition: 0.3s;
}

.news-item:hover {
  background: #eefbf9; /* ホバー時にほんのりエメラルド色に */
  transform: translateX(5px); /* 少し右に動く */
}

/* リンク全体をブロック化してクリック可能に */
.news-link {
  display: flex;
  align-items: stretch; /* 高さを揃える */
  justify-content: space-between;
  text-decoration: none;
  color: var(--text-main);
  min-height: 60px; /* 帯の高さ確保 */
}

/* 左側のコンテンツエリア */
.news-content {
  flex: 1;
  display: flex;
  align-items: center;
  /* padding: 20px 30px; */
  flex-wrap: wrap; /* スマホで折り返す用 */
  gap: 20px;
}

/* カテゴリーラベル */
.news-cat {
  background: var(--emerald); /* エメラルドグリーン */
  color: #fff;
  font-size: 1rem;
  font-weight: bold;
  padding: 6px 20px;
  min-width: 150px;
  height: 100%;
  justify-content: center;
  align-items: center;
  display: flex;
}

/* ニュースタイトル */
.news-title {
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.6;
  margin: 0;
  flex: 1; /* 余ったスペースを埋める */
}

/* 右端の矢印ボックス */
.news-arrow {
  background: var(--emerald);
  width: 60px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 1.2rem;
  transition: 0.3s;
}

/* ホバー時の矢印の動き */
.news-item:hover .news-arrow i {
  transform: translateX(3px);
}

/* 一覧ボタンエリア */
.news-btn-area {
  text-align: right; /* 右寄せ */
  margin-top: 20px;
}

.btn-view-all {
  border-radius: 50px;
  min-width: 200px;
  background: var(--jilaf);
  /* common.cssの .c-btn--primary を継承 */
}

/* ==========================================================================
   NEWS Section Responsive
   ========================================================================== */

/* --- タブレット・中画面 (900px以下) --- */
@media (max-width: 900px) {
  .news-cat {
    min-width: 120px; /* カテゴリー幅を少し削ってタイトル領域を確保 */
    font-size: 0.9rem;
  }

  .news-title {
    font-size: 0.9rem; /* 文字を少し小さく */
  }

  .news-content {
    padding-right: 10px; /* 矢印との間隔を確保 */
  }
}

/* --- スマホ (768px以下) --- */
@media (max-width: 768px) {
  .news-section {
    padding-bottom: 60px; /* 下余白を少し詰める */
  }

  /* 各アイテムの構造を組み替え */
  .news-link {
    flex-direction: column; /* 矢印を切り離す場合はここを調整 */
    position: relative; /* 矢印を絶対配置にするため */
  }

  .news-content {
    flex-direction: column; /* カテゴリーとタイトルを縦並びに */
    align-items: flex-start; /* 左寄せ */
    gap: 10px; /* 隙間を詰める */
    padding: 20px; /* 全体に余白を作る */
    padding-right: 60px; /* 右側の矢印と被らないように */
  }

  .news-cat {
    min-width: auto; /* 幅固定を解除 */
    height: auto;
    padding: 4px 12px;
    font-size: 0.75rem;
    border-radius: 4px; /* スマホではタグっぽく見せる */
  }

  .news-title {
    width: 100%;
    font-size: 0.85rem;
    line-height: 1.5;
  }

  /* 矢印ボックスを右側に固定 */
  .news-arrow {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 40px; /* スマホでは少し細く */
  }

  .news-item:hover {
    transform: none; /* スマホでは横移動させない方が誤操作が少ない */
  }

  /* 一覧ボタンを中央寄せに（スマホでは押しやすく） */
  .news-btn-area {
    text-align: center;
    margin-top: 30px;
  }

  .btn-view-all {
    width: 100%; /* ボタンを横いっぱいに */
    max-width: 300px;
  }
}

/* ==========================================================================
   ABOUT セクション (映像背景)
   ========================================================================== */

.about-section {
  position: relative;
  overflow: hidden;
  color: #fff; /* 基本文字色は白 */
}

/* --- 背景映像の設定 --- */
.about-video-bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  background: linear-gradient(160deg, #0a1f3d 0%, #0f2d54 60%, #1a3a6a 100%);
}

.about-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1.2s ease;
}

.about-video.is-loaded {
  opacity: 1;
}

/* 映像を少し暗くして文字を読みやすくするフィルター */
.about-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  /* ネイビー寄りの黒で透過させる */
  background: rgba(15, 45, 84, 0.5);
}

/* コンテンツ全体を映像より手前に */
.about-content-wrapper {
  position: relative;
  z-index: 1;
}

/* --- 白文字モードのセクションタイトル --- */
.c-section-header--white .en {
  color: #fff; /* 英語タイトルを白に */
}
.c-section-header--white .jp {
  color: rgba(255, 255, 255, 0.8); /* 日本語タイトルを薄い白に */
}
/* 下線の色を白（またはアクセントカラー）に変更 */
.c-section-header--white::after {
  background: #fff;
  /* もしここだけエメラルドにしたい場合は var(--emerald) */
}

/* --- 本文デザイン --- */
.about-body {
  max-width: 1200px;
  margin: 0 auto; /* 中央寄せ */
  /* デザイン画像の通り左揃えにするなら text-align は設定しない */
}

.about-heading {
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.5;
  margin-bottom: 30px;
  /* 影をつけて読みやすく */
  text-shadow: 0 4px 10px rgba(0, 0, 0, 0.5);
}

.about-desc {
  font-size: 1rem;
  line-height: 2;
  margin-bottom: 50px;
  opacity: 0.95;
  font-weight: 500;
}

/* --- ボタンエリア --- */
.about-btn-group {
  display: flex;
  gap: 20px;
  flex-wrap: wrap; /* スマホ対策 */
}

/* 映像ボタン用の透明ボタンスタイル（c-btn--outline） */
.c-btn--outline {
  /* ベースはMSFボタンと同じ構造 */
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  width: 260px;
  padding: 10px 20px 10px 30px;

  background: transparent;
  border: 2px solid #fff;
  color: #fff;
  border-radius: 50px;
  text-decoration: none;
  font-weight: bold;
  transition: 0.3s;
}

.c-btn--outline .btn-icon {
  /* アイコン部分は透明背景で枠線なし */
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: #fff;
  color: var(--navy);
  border-radius: 50%;
  font-size: 0.9rem;
}

.c-btn--outline:hover {
  background: #fff;
  color: var(--navy);
}

/* ==========================================================================
   ABOUT Section Responsive
   ========================================================================== */

/* --- タブレット・中画面 (900px以下) --- */
@media (max-width: 900px) {
  .about-heading {
    font-size: 1.6rem; /* 2rem -> 1.6rem */
    margin-bottom: 25px;
  }

  .about-desc {
    font-size: 0.95rem;
    line-height: 1.8;
    margin-bottom: 40px;
  }

  .c-btn--outline {
    width: 240px; /* 少しスリムに */
  }
}

/* --- スマホ (768px以下) --- */
@media (max-width: 768px) {
  .about-video-bg {
    min-height: 100%;
  }

  .about-heading {
    font-size: 1.05rem;
    line-height: 1.5;
    margin-bottom: 12px;
    text-align: left;
  }

  .about-desc {
    font-size: 0.82rem;
    line-height: 1.6;
    margin-bottom: 18px;
    opacity: 1;
  }

  .about-btn-group {
    flex-direction: column;
    gap: 10px;
    align-items: flex-start;
  }

  .c-btn--outline,
  .c-btn--msf {
    width: 100%;
    max-width: 260px;
    padding: 8px 10px 8px 18px;
  }

  .c-btn--outline .btn-icon {
    width: 28px;
    height: 28px;
  }
}
/* ==========================================================================
   ACTIVITY セクション & カードコンポーネント
   ========================================================================== */

/* グリッドレイアウト */
.activity-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* PCは3列固定 */
  gap: 30px;
  margin-bottom: 50px;
  padding-top: 30px;
}

/* --- カードデザイン (Peace Winds風シャープスタイル) --- */
.c-card {
  background: #fff;
  border-radius: 10px; /* シャープにするため角丸なし */
  overflow: hidden;
  box-shadow: var(--shadow-sm); /* common.cssの薄い影 */
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease;
  cursor: auto;
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: var(--text-main);
  height: 100%; /* 高さを揃える */
}

/* ホバー時のアクション */
.c-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
}

.c-card:hover .c-card__img {
  transform: scale(1.05); /* 画像ズーム */
}

.c-card:hover .c-card__title {
  color: var(--navy);
  text-decoration: underline;
}

/* 画像エリア */
.c-card__img-wrapper {
  overflow: hidden;
  position: relative;
  padding-top: 60%; /* アスペクト比固定 */
}

.c-card__img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  transition: transform 0.5s ease;
}

/* テキストエリア */
.c-card__body {
  padding: 25px;
  flex-grow: 1;
  display: flex;
  flex-direction: column;
}

/* メタ情報（タグ・日付） */
.c-card__meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 15px;
}

.c-tag {
  padding: 4px 12px;
  color: #fff;
  font-weight: bold;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-radius: 2px; /* 少しだけ角を落とす */
}
.c-tag--navy {
  background-color: var(--navy);
}
.c-tag--orange {
  background-color: var(--orange);
}

.c-tag--jilaf {
  background-color: var(--jilaf2);
}

.c-date {
  color: var(--text-sub);
  font-family: var(--font-en); /* common.cssにあれば */
  font-size: 0.85rem;
}

/* タイトル */
.c-card__title {
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.5;
  margin: 0 0 15px;
  transition: color 0.3s;
  /* 長すぎるタイトルを3行で切る処理 */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}

/* 場所情報（アイコン付き） */
.c-card__location {
  margin-top: auto; /* 下寄せ */
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.85rem;
  color: var(--text-sub);
  font-weight: 500;
}
.c-card__location i {
  color: #ccc; /* アイコンは控えめに */
}

@media (max-width: 1200px) {
  .activity-grid {
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;

    width: 100% !important;
    gap: 20px !important;
    padding: 40px 0 !important;

    /* スクロールバーを隠す */
    scrollbar-width: none;
    -ms-overflow-style: none;

    /* 掴む前のカーソル */
    cursor: grab;
    /* 指でのスクロールをスムーズに */
    -webkit-overflow-scrolling: touch;
  }

  .activity-grid::-webkit-scrollbar {
    display: none;
  }

  /* 2. クリック（ドラッグ）中のカーソル設定 */
  .activity-grid:active {
    cursor: grabbing;
  }

  .c-card {
    flex: 0 0 min(320px, 85vw) !important;
    /* ドラッグ中にテキストや画像が選択されて青くなるのを防ぐ */
    user-select: none;
    -webkit-user-drag: none;
  }
}

/* ==========================================================================
   PROJECTS Section (2-Header / 4-Grid)
   ========================================================================== */

.project-wrapper {
  width: 100%;
  /* 全体を包む枠線や影をつけるならここ */
  /* box-shadow: var(--shadow-lg); border-radius: var(--radius-lg); overflow: hidden; */
}

/* --- 上段：カテゴリーヘッダー行 --- */
.project-headers-row {
  display: flex;
  width: 100%;
}

.p-header {
  width: 50%; /* 2分割 */
  padding: 40px 30px;
  background: #fff;
  border-top: 5px solid transparent; /* 色の線用 */
  text-align: center;
}

/* 色分け設定 */
.p-header--labor {
  border-color: var(--color-labor);
  /* 右側に境界線を入れる */
}

.p-header--grassroots {
  border-color: var(--color-grassroots);
  /* 右側に境界線を入れる */
}

.p-header--training {
  border-color: var(--color-training);
  /* 右側に境界線を入れる */
}

.p-header--pr {
  border-color: var(--color-pr);
  /* 右側に境界線を入れる */
}

.p-header--navy .p-header__en {
  color: var(--navy);
}

.p-header--orange {
  border-color: var(--orange);
}
.p-header--orange .p-header__en {
  color: var(--orange);
}

/* ヘッダー内テキスト */
.p-header__en {
  font-family: var(--font-en);
  font-size: 1.8rem;
  font-weight: 700;
  margin: 0;
  line-height: 1.1;
  text-transform: uppercase;
}

.p-header__jp {
  display: block;
  font-size: 1rem;
  font-weight: bold;
  color: var(--text-main);
  margin-top: 5px;
}

.p-header__desc {
  font-size: 0.85rem;
  color: var(--text-sub);
  margin: 15px 0 0;
  line-height: 1.6;
}

/* --- 下段：画像グリッド行 --- */
.project-images-row {
  display: flex;
  width: 100%;
  height: 450px; /* 画像エリアの高さ */
}

/* 個別のカード（4分割） */
.p-card {
  width: 25%; /* 4分割 */
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  color: #fff;
  /* カード間の白い線を少し入れる（お好みで0でもOK） */
}
.p-card:last-child {
  border-right: none;
}

/* 背景画像 */
.p-card__bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  transition: transform 0.6s ease;
  z-index: 1;
}

/* オーバーレイ（通常時の色） */
.p-card__overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.3); /* 最初は薄暗く */
  z-index: 2;
  transition: background 0.4s ease;
}

/* コンテンツ */
/* --- プロジェクトカード内のコンテンツ --- */
.p-card__content {
  position: relative;
  z-index: 3;
  text-align: center;
  padding: 20px;
  width: 100%;
  transition: transform 0.4s ease;

  /* ボタンを中央に配置 */
  display: flex;
  flex-direction: column;
  align-items: center;
}

.p-card__content .sub {
  display: block;
  font-family: var(--font-en);
  font-size: 0.75rem;
  font-weight: 400;
  opacity: 0.9;
  letter-spacing: 0.05em;
  margin-bottom: 5px;
  text-transform: uppercase;
}

.p-card__content .title {
  font-size: 1.2rem;
  font-weight: 700;
  margin: 0;
  line-height: 1.3;
}

/* --- 詳細ボタン（初期状態は隠す） --- */
.p-card-btn {
  margin-top: 20px;
  opacity: 0;
  transform: translateY(20px);
  transition: all 0.4s ease;

  /* カード内用にサイズ調整 */
  width: 200px;
  padding: 10px 20px 10px 30px;
  font-size: 0.8rem;
}

/* =========================================
   ホバーアクション
   ========================================= */

/* 1. 画像ズーム */
.p-card:hover .p-card__bg {
  transform: scale(1.1);
}

/* 2. オーバーレイを濃くする（テーマカラー反映） */
.p-card--navy:hover .p-card__overlay {
  background: rgba(15, 45, 84, 0.85);
}
.p-card--orange:hover .p-card__overlay {
  background: rgba(198, 40, 40, 0.85);
}

/* 3. テキスト全体を少し上に移動 */
.p-card:hover .p-card__content {
  transform: translateY(-10px);
}

/* 4. ボタンを出現させる（色は変えず枠線のまま） */
.p-card:hover .p-card-btn {
  opacity: 1;
  transform: translateY(0);
}

/* --- Mobile Responsive --- */
@media (max-width: 900px) {
  .project-wrapper {
    display: flex;
    flex-direction: column;
  }

  /* ヘッダーも縦並びにするか、横並びのまま小さくするか */
  /* ここでは「見出し」として機能させるため縦並びに変更 */

  /* もしヘッダーを表示するなら */
  .project-headers-row {
    flex-direction: column;
  }
  .p-header {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid #eee;
  }

  /* 画像エリア */
  .project-images-row {
    flex-wrap: wrap; /* 折り返し許可 */
    height: auto;
  }

  .p-card {
    width: 50%; /* スマホ・タブレットは2列 */
    height: 250px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.4);
  }
}

@media (max-width: 768px) {
  .p-card {
    width: 100%;
  }

  .p-header {
    padding: 20px 15px;
  }

  .p-header__en {
    font-size: 1.1rem;
  }

  .p-header__jp {
    font-size: 0.8rem;
    margin-top: 3px;
  }

  .p-header__desc {
    font-size: 0.78rem;
    margin-top: 8px;
  }
}
/* ==========================================================================
   Card Button Responsive (.p-card-btn)
   ========================================================================== */

/* --- タブレット・中画面 (900px以下) --- */
@media (max-width: 900px) {
  .p-card-btn {
    /* スマホ・タブレットではホバーを待たずに最初から表示させる */
    opacity: 1 !important;
    transform: translateY(0) !important;

    width: 180px; /* 少しコンパクトに */
    margin-top: 15px;
  }
}

/* --- スマホ (768px以下) --- */
@media (max-width: 768px) {
  .p-card-btn {
    width: 100% !important;
    max-width: 220px;
    padding: 8px 10px 8px 18px;
    font-size: 0.85rem;
    margin-left: auto;
    margin-right: auto;
    display: flex;
  }

  .p-card-btn .btn-icon {
    width: 28px;
    height: 28px;
    font-size: 0.75rem;
  }
}
/* ==========================================================================
   DATABASE Section (Optimized)
   ========================================================================== */

.db-section {
  background: linear-gradient(135deg, #0a1f3d 0%, #163b6b 100%);
  color: #fff;
  position: relative;
  overflow: hidden;
}

/* --- 背景装飾 --- */
.db-bg-map {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 90%;
  max-width: 1200px;
  height: 80%;
  background-image: url("https://upload.wikimedia.org/wikipedia/commons/8/80/World_map_-_low_resolution.svg");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  opacity: 0.1;
  filter: invert(1);
  pointer-events: none;
  z-index: 0;
}

/* 脈打つドット（一括でアニメーション管理） */
.pulse-dot {
  position: absolute;
  width: 10px;
  height: 10px;
  background: var(--orange);
  border-radius: 50%;
  box-shadow: 0 0 15px var(--orange);
  animation: pulse 3s infinite alternate; /* 共通化 */
}

.pos-asia {
  top: 40%;
  left: 70%;
}
.pos-africa {
  top: 55%;
  left: 50%;
  animation-delay: 1s;
} /* 遅延させてランダム感を出す */
.pos-latin {
  top: 60%;
  left: 25%;
  animation-delay: 2s;
}

@keyframes pulse {
  from {
    transform: scale(1);
    opacity: 0.8;
  }
  to {
    transform: scale(1.8);
    opacity: 0.4;
  }
}

/* --- レイアウト --- */
.db-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 60px;
  position: relative;
  z-index: 1;
}

.db-info {
  flex: 1;
}

.db-label {
  display: block;
  font-family: var(--font-en);
  font-weight: 700;
  color: var(--orange);
  letter-spacing: 0.2em;
  font-size: 0.9rem;
  margin-bottom: 20px;
}

.db-title {
  font-size: 2.5rem;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 40px;
}

/* スタッツ */
.stat-row {
  display: flex;
  gap: 50px;
  margin-bottom: 40px;
}
.stat-item {
  display: flex;
  flex-direction: column;
}
.stat-num {
  font-family: var(--font-en);
  font-size: 3.5rem;
  font-weight: 900;
  color: var(--orange);
  line-height: 1;
}
.stat-num .unit {
  font-size: 1.5rem;
  margin-left: 5px;
}
.stat-desc {
  font-size: 0.9rem;
  font-weight: bold;
  opacity: 0.8;
  margin-top: 5px;
}

.db-text {
  line-height: 1.8;
  opacity: 0.8;
  font-weight: 500;
}

/* --- 右側：コントロールパネル --- */
.db-controls {
  flex: 1;
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px); /* Safari対策 */
  padding: 40px;
  border-radius: 20px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.3);
}

.control-label {
  display: block;
  font-size: 0.85rem;
  font-weight: bold;
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 10px;
}

.db-search-form {
  display: flex;
  background: rgba(0, 0, 0, 0.2);
  border-radius: 8px;
  padding: 5px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  margin-bottom: 20px;
}

.db-input {
  flex: 1;
  background: transparent;
  border: none;
  padding: 10px 15px;
  color: #fff;
  font-weight: bold;
  outline: none;
}

.db-submit-btn {
  background: var(--orange);
  border: none;
  color: #fff;
  width: 40px;
  border-radius: 6px;
  cursor: pointer;
}

/* 区切り線 */
.db-divider {
  text-align: center;
  margin: 20px 0;
  position: relative;
}
.db-divider::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, 0.1);
}
.db-divider span {
  background: #11335b; /* グラデの中間色付近に合わせました */
  padding: 0 15px;
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.5);
  position: relative;
}

.region-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
  margin-bottom: 20px;
}

.region-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  padding: 15px;
  border-radius: 8px;
  font-weight: bold;
}
.region-btn:hover {
  background: #fff;
  color: var(--navy);
  transform: translateY(-2px);
}

.view-all-db-btn {
  display: block;
  text-align: center;
  border: 1px solid var(--orange);
  color: var(--orange);
  padding: 12px;
  border-radius: 50px;
  font-weight: bold;
}
.view-all-db-btn:hover {
  background: var(--orange);
  color: #fff;
}

/* --- Mobile Responsive --- */
@media (min-width: 769px) and (max-width: 1250px) {
  /* 1. 共通セクションタイトル */
  .c-section-header .en {
    font-size: 2.2rem; /* 2.5rem -> 2.2rem */
  }

  /* 2. Hero（メインビジュアル） */
  .hero-text {
    font-size: 3rem; /* 3.5rem -> 3rem */
  }

  .hero {
    padding-left: 80px; /* 余白も少しだけ詰める */
  }

  /* 3. Aboutセクションの見出し */
  .about-heading {
    font-size: 1.8rem; /* 2rem -> 1.8rem */
  }

  /* 4. Databaseセクション */
  .db-title {
    font-size: 2.2rem; /* 2.5rem -> 2.2rem */
  }

  .stat-num {
    font-size: 3rem; /* 3.5rem -> 3rem */
  }

  .stat-row {
    gap: 30px; /* 数字同士の間隔を少し詰める */
  }

  /* 5. ニュースタイトル */
  .news-title {
    font-size: 0.9rem;
  }
}
@media (max-width: 900px) {
  .hero {
    padding-left: 0px;
  }
  .db-container {
    flex-direction: column;
    gap: 40px;
    text-align: center;
  }

  .db-title {
    font-size: 1.8rem;
    margin-bottom: 20px;
  }

  .stat-row {
    justify-content: center;
    gap: 30px;
  }
  .stat-num {
    font-size: 2.8rem;
  }

  .db-controls {
    padding: 30px 20px;
  }
}

@media (max-width: 768px) {
  .region-grid {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .region-btn {
    padding: 10px 12px;
    font-size: 0.8rem;
    font-weight: 500;
  }
}

/* ==========================================================================
   DONATION Section (Split / White BG)
   ========================================================================== */

.donation-split-section {
  padding: var(--section-space) 0;
  background: #fff;
}

/* コンテンツ全体を包む枠 */
.donation-split-wrapper {
  display: flex;
  background: #fff;
  border-radius: var(--radius-lg);
  overflow: hidden;
  /* 白背景に浮き立たせるための枠線と影 */
  border: 1px solid #eee;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.05);
}

/* --- 左側：ビジュアル (前回と同じ設定) --- */
.donation-side-visual {
  flex: 1;
  position: relative;
  background-size: cover;
  background-position: center;
  min-height: 500px;
  display: flex;
  align-items: flex-end;
  padding: 60px;
  color: #fff;
}

.visual-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  /* オレンジのグラデーション */
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0%,
    rgba(217, 94, 64, 0.9) 100%
  );
  z-index: 1;
}

.visual-text {
  position: relative;
  z-index: 2;
}

.visual-tag {
  font-size: 0.85rem;
  font-weight: 500;
  line-height: 1.3;
  margin: 0;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
}

.visual-msg {
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.3;
  margin: 0;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
}

/* --- 右側：アクションパネル --- */
.donation-side-action {
  flex: 1;
  padding: 60px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* ヘッダー左寄せ調整 */
.c-section-header.u-align-left {
  align-items: flex-start;
  margin-bottom: 30px;
}
.c-section-header.u-align-left::after {
  margin: 15px 0 0 0;
}

.action-desc {
  font-size: 0.95rem;
  line-height: 1.8;
  color: var(--text-sub);
  margin-bottom: 40px;
}

/* --- ボタンエリア --- */
.donation-actions {
  display: flex;
  flex-direction: column;
  gap: 30px;
}

.action-label {
  font-size: 0.85rem;
  font-weight: bold;
  color: var(--navy);
  margin-bottom: 10px;
  display: block;
}

.action-note {
  display: block;
  font-size: 0.75rem;
  color: #999;
  margin-top: 8px;
  text-align: right;
}

/* 幅広ボタン設定 */
.c-btn--wide {
  width: 100%;
  justify-content: center; /* テキスト中央 */
}
.c-btn--wide .btn-icon {
  margin-left: auto; /* アイコンだけ右端に */
}

/* サブボタン（ネイビーの枠線） */
.c-btn--outline-navy {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  /* padding: 12px 20px 12px 30px; */

  background: transparent;
  border: 2px solid var(--navy); /* ネイビーの枠線 */
  color: var(--navy);
  border-radius: 50px;
  text-decoration: none;
  font-weight: bold;
  transition: 0.3s;
}

.c-btn--outline-navy .btn-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--navy); /* アイコン背景はネイビー */
  color: #fff;
  border-radius: 50%;
  font-size: 0.9rem;
  margin-left: auto;
}

/* サブボタンホバー */
.c-btn--outline-navy:hover {
  background: var(--navy);
  color: #fff;
  transform: translateY(-2px);
}
.c-btn--outline-navy:hover .btn-icon {
  background: #fff;
  color: var(--navy);
}

/* 区切り線 */
.action-divider {
  height: 1px;
  background: #eee;
  width: 100%;
  position: relative;
}

.action-links {
  margin-top: 20px;
  display: flex;
  gap: 20px;
  justify-content: center;
  font-size: 0.85rem;
}
.action-links a {
  color: #999;
  text-decoration: none;
  border-bottom: 1px solid #ccc;
}

/* --- Mobile Responsive --- */
@media (max-width: 900px) {
  .donation-split-wrapper {
    flex-direction: column;
  }

  .donation-side-visual {
    min-height: 250px;
    padding: 30px;
  }
  .visual-msg {
    font-size: 1.6rem;
  }

  .donation-side-action {
    padding: 40px 20px;
  }
}

@media (max-width: 768px) {
  .donation-side-visual {
    min-height: 180px;
    padding: 20px;
  }

  .visual-msg {
    font-size: 1.3rem;
  }

  .visual-tag {
    font-size: 0.75rem;
  }

  .donation-side-action {
    padding: 25px 15px;
  }

  .action-desc {
    font-size: 0.85rem;
    margin-bottom: 25px;
  }
}

/* ==========================================================
   追加：ACTIVITYカード内の個別リンク用ホバーエフェクト
   （news.cssの挙動と統一）
   ========================================================== */

/* 画像ラッパー（aタグになったためブロック要素にする） */
a.c-card__img-wrapper {
  display: block;
  text-decoration: none;
}

/* タイトルのリンク設定 */
.c-card__title a {
  display: inline-block; /* 動きをつけるために必要 */
  transition: all 0.3s ease;
  color: inherit;
  text-decoration: none;
}

/* カード全体にマウスを乗せた時、またはタイトルにマウスを乗せた時の色変更 */
.c-card:hover .c-card__title a,
.c-card__title a:hover {
  color: var(--navy) !important; /* home.cssではネイビーを強調色に */
  text-decoration: underline !important;
}

/* タイトルを直接ホバーした時の浮き上がり */
.c-card__title a:hover {
  transform: translateY(-2px);
  text-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

/* カテゴリタグのホバー効果（フワッと浮く） */
a.c-tag {
  transition: all 0.3s ease;
}
a.c-tag:hover {
  opacity: 0.8;
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  color: #fff !important;
  text-decoration: none;
}

/* 国名リンクのホバー効果 */
.c-card__country-link {
  display: inline-flex;
  align-items: center;
  transition: all 0.3s ease;
  text-decoration: none !important;
}
.c-card__country-link:hover {
  color: var(--navy) !important;
  transform: translateY(-2px);
  opacity: 0.8;
}

/* スマホでは誤タップ防止のために浮き上がりを無効化 */
@media (max-width: 768px) {
  .c-card__title a:hover,
  .c-card__country-link:hover,
  a.c-tag:hover {
    transform: none;
  }
}
