@charset "UTF-8";
/* ==========================================================================
   MiraiVets Partners ｜ home.css（トップページ index.html 専用）
   --------------------------------------------------------------------------
   1. ヒーロー（メインビジュアル / Vegasスライドショー）
   2. アーチ型セクション区切り
   3. お知らせ（#news）
   4. グループ拠点一覧（#hospitals）… フィルタ / カード / もっと見る
   5. 会社概要（#about）
   6. お問い合わせ（#contact）
   7. レスポンシブ（上記セクション固有）
   ========================================================================== */


/* ==========================================================================
   1. ヒーロー（メインビジュアル / Vegasスライドショー）
   ========================================================================== */
.hero {
  position: relative;
  min-height: 100svh;
  display: flex;
  align-items: center;
  /* Vegas未読込時のフォールバック：1枚目の画像を背景に */
  background: var(--c-accent) url('../images/hero/hero-01.jpg') center / cover no-repeat;
  overflow: hidden;
}
/* Vegasが背景スライドショーを敷くレイヤー（コンテンツの背面） */
#hero-slideshow { position: absolute; inset: 0; z-index: 0; }
/* 写真を少し沈めて文字を読みやすくするオーバーレイ（ネイビーのグラデ） */
.hero::before {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(105deg, rgba(15,37,64,0.72) 0%, rgba(15,37,64,0.42) 45%, rgba(33,67,130,0.30) 100%);
  z-index: 1;
}
.hero__inner { position: relative; z-index: 2; width: min(100% - 48px, var(--container)); margin-inline: auto; padding-top: var(--header-h); }
.hero__en {
  font-family: var(--font-en);
  font-weight: 500;
  letter-spacing: 0.32em;
  font-size: clamp(0.7rem, 1.4vw, 0.9rem);
  color: var(--c-white);
  opacity: 0.85;
  margin-bottom: 22px;
  text-transform: uppercase;
}
.hero__catch {
  font-size: clamp(2.1rem, 6.4vw, 4.4rem);
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.06em;
  color: var(--c-white);
  text-shadow: 0 2px 30px rgba(0,0,0,0.25);
}
.hero__lead {
  margin-top: 28px;
  max-width: 640px;
  font-size: clamp(0.95rem, 2vw, 1.15rem);
  line-height: 2;
  color: var(--c-white);
  opacity: 0.94;
}
/* スクロール誘導のあしらい */
.hero__scroll {
  position: absolute;
  left: 50%; bottom: 26px;
  transform: translateX(-50%);
  z-index: 2;
  font-family: var(--font-en);
  font-size: 0.62rem;
  letter-spacing: 0.24em;
  color: var(--c-white);
  writing-mode: vertical-rl;
  opacity: 0.8;
}
.hero__scroll::after {
  content: "";
  display: block;
  width: 1px; height: 46px;
  margin: 12px auto 0;
  background: var(--c-white);
  animation: scrollLine 2.2s var(--ease) infinite;
  transform-origin: top;
}
@keyframes scrollLine {
  0%   { transform: scaleY(0); opacity: 0; }
  40%  { transform: scaleY(1); opacity: 1; }
  100% { transform: scaleY(0); opacity: 0; transform-origin: bottom; }
}
@media (prefers-reduced-motion: reduce) {
  .hero__scroll::after { animation: none; }
}


/* ==========================================================================
   2. セクション区切り（直線）
   --------------------------------------------------------------------------
   アーチ（border-radius によるカーブ）は廃止し、背景色は bg-* で
   まっすぐ切り替わります。.section--arch は色境界を持つセクションの目印として
   クラスは残していますが、見た目は通常セクションと同じ直線です。
   ========================================================================== */
.section--arch {
  position: relative;
  z-index: 3;
}
/* 背景色のバリエーション（直線で色が切り替わる） */
.bg-base   { background: var(--c-base); }
.bg-sky    { background: var(--c-sky-pale); }
.bg-accent { background: var(--c-accent); }


/* ==========================================================================
   3. お知らせ（#news）
   ========================================================================== */
.news__list { max-width: 860px; margin-inline: auto; border-top: 1px solid var(--c-line); }
.news__item { border-bottom: 1px solid var(--c-line); }
.news__link {
  display: grid;
  grid-template-columns: 130px 110px 1fr;
  align-items: center;
  gap: 8px 24px;
  padding: 22px 12px;
  transition: background 0.3s var(--ease);
}
.news__link:hover { background: var(--c-sky-pale); }
.news__date { font-family: var(--font-en); font-weight: 500; color: var(--c-muted); font-size: 0.9rem; }
.news__cat {
  justify-self: start;
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--c-main);
  background: var(--c-sky-pale);
  padding: 4px 14px;
  border-radius: var(--radius-pill);
}
.news__title { font-weight: 500; color: var(--c-text); }
.news__link:hover .news__title { color: var(--c-main); }
.news__more { text-align: center; margin-top: 46px; }


/* ==========================================================================
   4. グループ拠点一覧（#hospitals）
   ========================================================================== */
.hospitals__lead {
  max-width: 820px;
  margin: 0 auto clamp(36px, 5vw, 56px);
  text-align: left;
  line-height: 2.1;
}

/* --- フィルタ（地域 → 県） --- */
.filter { max-width: 980px; margin-inline: auto; margin-bottom: 44px; }
.filter__label {
  display: inline-block;
  font-family: var(--font-en);
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  color: var(--c-sky);
  font-weight: 600;
  margin-bottom: 12px;
}
.filter-tab__list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 20px;
}
.filter-tab__btn {
  padding: 9px 22px;
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--c-main);
  background: var(--c-white);
  border: 1.5px solid var(--c-line);
  border-radius: var(--radius-pill);
  transition: all 0.28s var(--ease);
}
.filter-tab__btn:hover { border-color: var(--c-sky); color: var(--c-sky); }
/* 選択中（現在値）：メインカラーで塗りつぶし＝「今ここ」が一目で分かる */
.filter-tab__btn.is-active {
  background: var(--c-main);
  border-color: var(--c-main);
  color: var(--c-white);
  cursor: default;
}
/* 県フィルタ行：地域未選択（すべて）のときは隠す */
.filter__pref { display: none; padding-top: 4px; border-top: 1px dashed var(--c-line); }
.filter__pref.is-visible { display: block; }
.filter__pref .filter-tab__btn { font-size: 0.84rem; padding: 7px 18px; }
/* 県フィルタの選択中は水色寄りに（地域とトーンを変えて階層を示す） */
.filter__pref .filter-tab__btn.is-active {
  background: var(--c-sky);
  border-color: var(--c-sky);
  color: var(--c-white);
}
.filter__count {
  margin-top: 8px;
  font-size: 0.85rem;
  color: var(--c-muted);
}
.filter__count strong { color: var(--c-main); font-family: var(--font-en); font-size: 1.05rem; }

/* --- 病院カード（ul > li で繰り返し。将来ACFのループに対応） --- */
.hospital-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* PC：3列 */
  gap: 28px;
}
.hospital-card { display: block; }
/* フィルタで隠す状態（地域/県が不一致） */
.hospital-card.is-hidden { display: none; }
/* 「もっと見る」前に隠す状態（表示件数を超えたカード） */
.hospital-card.is-clipped { display: none; }
.hospital-card__inner {
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--c-white);
  border-radius: var(--radius-m);
  overflow: hidden;
  box-shadow: var(--shadow-card);
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease);
}
.hospital-card__inner:hover { transform: translateY(-6px); box-shadow: var(--shadow-card-hover); }
.hospital-card__media { position: relative; aspect-ratio: 400 / 260; overflow: hidden; }
.hospital-card__img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s var(--ease); }
.hospital-card__inner:hover .hospital-card__img { transform: scale(1.05); }
/* カード左上の地域タグ */
.hospital-card__region {
  position: absolute;
  top: 12px; left: 12px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--c-white);
  background: rgba(15, 37, 64, 0.78);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  padding: 4px 12px;
  border-radius: var(--radius-pill);
}
.hospital-card__body { display: flex; flex-direction: column; gap: 8px; padding: 22px 22px 24px; flex-grow: 1; }
.hospital-card__name { font-size: 1.08rem; font-weight: 700; color: var(--c-main); line-height: 1.5; }
.hospital-card__addr { font-size: 0.86rem; color: var(--c-text); line-height: 1.7; }
.hospital-card__tel { font-family: var(--font-en); font-weight: 600; color: var(--c-accent); font-size: clamp(14px, 2vw, 16px); }
.hospital-card__tel a:hover { color: var(--c-sky); }
.hospital-card__btn {
  margin-top: auto;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  margin-top: 12px;
  padding: 9px 20px;
  font-size:clamp(12px, calc(10.31px + 0.44vw), 16px);
  font-weight: 700;
  color: var(--c-main);
  border: 1.5px solid var(--c-main);
  border-radius: var(--radius-pill);
}
.hospital-card__btn::after { content: "→"; font-family: var(--font-en); }
.hospital-card__btn:hover { background: var(--c-main); color: var(--c-white); }
/* フィルタ結果が0件のとき */
.hospital-empty { display: none; text-align: center; color: var(--c-muted); padding: 40px 0; }
.hospital-empty.is-visible { display: block; }

/* --- もっと見る／閉じる ボタン --- */
.hospital-more { text-align: center; margin-top: clamp(36px, 5vw, 52px); }
/* 表示件数以内（隠すカードが無い）ときはボタン自体を隠す（JSで is-hidden 付与） */
.hospital-more.is-hidden { display: none; }
.hospital-more__btn { gap: 0.5em; }
.hospital-more__icon {
  font-family: var(--font-en);
  display: inline-block;
  transition: transform 0.35s var(--ease);
}
/* 開いた状態（is-open）で矢印を反転：↓ → ↑ */
.hospital-more__btn.is-open .hospital-more__icon { transform: rotate(180deg); }


/* ==========================================================================
   5. 会社概要（#about）
   ========================================================================== */
.about { color: var(--c-base); }
.about .sec-head__ja { color: var(--c-white); }
.about .sec-head__en { color: var(--c-sky); }
.about__table {
  max-width: 760px;
  margin-inline: auto;
  width: 100%;
}
.about__table th,
.about__table td {
  text-align: left;
  padding: 20px 8px;
  border-bottom: 1px solid rgba(252, 250, 242, 0.18);
  vertical-align: top;
}
.about__table th {
  width: 200px;
  font-weight: 700;
  color: var(--c-white);
  letter-spacing: 0.08em;
}
.about__table td { color: rgba(252, 250, 242, 0.9); }


/* ==========================================================================
   6. お問い合わせ（#contact）
   ========================================================================== */
.contact__lead { max-width: 720px; margin: 0 auto clamp(36px,5vw,52px); text-align: center; line-height: 2.1; }
.contact__lead strong { color: var(--c-main); font-size: 1.15em; }

/* お問い合わせ：Googleフォームへ誘導するボタン */
.contact__action { text-align: center; }
.contact__action .btn { font-size: 1rem; padding: 16px 46px; }
.contact__note { text-align: center; font-size: 0.82rem; color: var(--c-muted); margin-top: 20px; }

.form { max-width: 680px; margin-inline: auto; display: flex; flex-direction: column; gap: 22px; }
.form__row { display: flex; flex-direction: column; gap: 8px; }
.form__label { font-weight: 700; font-size: 0.92rem; color: var(--c-accent); }
.form__label span { color: var(--c-sky); font-size: 0.78rem; margin-left: 6px; }
.form__input,
.form__textarea {
  font-family: inherit;
  font-size: 1rem;
  padding: 14px 16px;
  border: 1.5px solid var(--c-line);
  border-radius: var(--radius-s);
  background: var(--c-white);
  color: var(--c-text);
  transition: border-color 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
.form__input:focus,
.form__textarea:focus {
  outline: none;
  border-color: var(--c-sky);
  box-shadow: 0 0 0 3px rgba(91, 140, 196, 0.18);
}
.form__textarea { resize: vertical; min-height: 140px; }
.form__submit { align-self: center; margin-top: 12px; }
.form__note { text-align: center; font-size: 0.82rem; color: var(--c-muted); }


/* ==========================================================================
   7. レスポンシブ（トップページ固有）
   ========================================================================== */

/* --- タブレット以下（1024px）：カードを2列に --- */
@media (max-width: 1024px) {
  .hospital-list { grid-template-columns: repeat(2, 1fr); } /* スマホ／タブレット：2列 */
}

/* --- スマートフォン（680px） --- */
@media (max-width: 680px) {
  .news__link { grid-template-columns: 1fr; gap: 4px; padding: 18px 6px; }
  .news__cat { margin-top: 2px; }

  /* 2列を保ちつつ間隔を詰める（ご指定：スマホ＝2列） */
  .hospital-list { gap: 16px; }
  .hospital-card__body { padding: 16px 16px 18px; }
  .hospital-card__name { font-size: 0.98rem; }

  .about__table th, .about__table td { display: block; width: 100%; padding: 8px 4px; }
  .about__table th { border-bottom: none; padding-bottom: 0; }
  .about__table tr { display: block; padding: 12px 0; border-bottom: 1px solid rgba(252,250,242,0.18); }
  .about__table th, .about__table td { border-bottom: none; }
}
