/* ============================================
   2026-07 選手紹介まわり改修 追加スタイル
   （既存 style.css には手を入れず、このファイルに追記する）
============================================ */

/* --------------------------------------------
   選手一覧の絞り込みパネル（性別 × 区分）
   ・見た目は1枚のパネルにまとめ、機能は2軸のまま
   ・性別＝セグメント（切り替え）、区分＝チップ（分類選択）で描き分ける
   ・件数バッジは「もう片方の絞り込みを反映した実数」
-------------------------------------------- */
.p-athlete-filter {
  display: flex;
  flex-direction: column;
  margin-block-start: 2rem;
  padding: 1.25rem 1rem;
  border: 0.0625rem solid rgba(51, 51, 102, 0.15);
  border-radius: 0.625rem;
  background: #f4f4fd;
  gap: 1rem;
}
@media (min-width: 768px) {
  .p-athlete-filter {
    align-items: center;
    margin-block-start: 2.75rem;
    padding: 1.5rem;
    gap: 1.25rem;
  }
}

/* 性別：セグメント（地続きの切り替えスイッチ） */
.p-athlete-filter__segment {
  display: flex;
  overflow: hidden;
  width: 100%;
  border: 0.0625rem solid #333366;
  border-radius: 100vmax;
  background: #ffffff;
}
@media (min-width: 768px) {
  .p-athlete-filter__segment {
    width: auto;
  }
}
.p-athlete-filter__segmentItem {
  display: flex;
  flex: 1;
  justify-content: center;
  align-items: center;
  padding: 0.5rem 0.75rem;
  color: #333366;
  font-weight: 500;
  font-size: 0.9375rem;
  line-height: 1.5;
  white-space: nowrap;
  transition: background-color 0.3s, color 0.3s;
  gap: 0.375rem;
}
@media (min-width: 768px) {
  .p-athlete-filter__segmentItem {
    padding: 0.625rem 2rem;
    font-size: 1rem;
  }
}
.p-athlete-filter__segmentItem + .p-athlete-filter__segmentItem {
  border-inline-start: 0.0625rem solid rgba(51, 51, 102, 0.2);
}
.p-athlete-filter__segmentItem:hover {
  background: #f4f4fd;
}
.p-athlete-filter__segmentItem.-current {
  background: #333366;
  color: #ffffff;
  font-weight: 700;
}

/* 区分：チップ
   スマホは1列のリスト型（英字＋日本語の正式名＋件数を1行に共存させる）。
   全幅を使うのでどんな長さの区分名でも構造的に収まり、
   英字の頭・日本語の頭・件数の右端で縦のラインが揃う。
   PCは従来どおり中央寄せの横並びピル */
.p-athlete-filter__chips {
  width: 100%;
}
.p-athlete-filter__list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.5rem;
}
@media (min-width: 768px) {
  .p-athlete-filter__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 0.625rem;
  }
}
.p-athlete-filter__chip {
  display: flex;
  align-items: center;
  padding: 0.5625rem 0.875rem;
  border: 0.0625rem solid rgba(51, 51, 102, 0.3);
  border-radius: 100vmax;
  background: #ffffff;
  color: #333366;
  line-height: 1.5;
  white-space: nowrap;
  transition: background-color 0.3s, color 0.3s, border-color 0.3s, opacity 0.3s;
  gap: 0.5rem;
}
/* スマホ：件数を右端に寄せて縦ラインを作る */
.p-athlete-filter__chip .p-athlete-filter__count {
  margin-inline-start: auto;
}
@media (min-width: 768px) {
  .p-athlete-filter__chip {
    padding: 0.5rem 1rem;
    gap: 0.375rem;
  }
  .p-athlete-filter__chip .p-athlete-filter__count {
    margin-inline-start: 0.125rem;
  }
}
.p-athlete-filter__chip:hover {
  border-color: #333366;
}
.p-athlete-filter__chip.-current {
  border-color: #333366;
  background: #333366;
  color: #ffffff;
  font-weight: 700;
}
.p-athlete-filter__chip.-empty {
  opacity: 0.45; /* 0名のクラスは押す前に分かるよう控えめに */
}

/* 件数バッジ */
.p-athlete-filter__count {
  display: inline-grid;
  place-content: center;
  min-width: 1.375rem;
  padding-inline: 0.25rem;
  border-radius: 100vmax;
  background: rgba(51, 51, 102, 0.1);
  color: inherit;
  font-weight: 500;
  font-size: 0.75rem;
  font-family: "Roboto", sans-serif;
  line-height: 1.5;
}
.p-athlete-filter__segmentItem.-current .p-athlete-filter__count,
.p-athlete-filter__chip.-current .p-athlete-filter__count {
  background: rgba(255, 255, 255, 0.25);
}
/* 区分チップのラベル：英字（主役）＋日本語の正式名（補足） */
.p-athlete-filter__chipLabel {
  font-weight: 700;
  font-size: 0.8125rem;
  font-family: "Roboto", sans-serif;
  letter-spacing: 0.03em;
}
.p-athlete-filter__chipSub {
  overflow: hidden;
  min-width: 0;
  font-size: 0.625rem;
  text-overflow: ellipsis; /* 万一入り切らない端末でも崩れない保険 */
  opacity: 0.6;
}
@media (min-width: 768px) {
  .p-athlete-filter__chipLabel {
    font-size: 0.9375rem;
  }
  .p-athlete-filter__chipSub {
    font-size: 0.75rem;
  }
}

/* チップ内のバッジは2列に収めるため一段小さく */
.p-athlete-filter__chip .p-athlete-filter__count {
  min-width: 1.125rem;
  padding-inline: 0.1875rem;
  font-size: 0.6875rem;
}
@media (min-width: 768px) {
  .p-athlete-filter__chip .p-athlete-filter__count {
    min-width: 1.375rem;
    padding-inline: 0.25rem;
    font-size: 0.75rem;
  }
}

/* 非同期での絞り込み中の表示 */
.p-athlete-archive__content.is-loading {
  opacity: 0.45;
  pointer-events: none;
  transition: opacity 0.2s ease-out;
}

/* 一覧カードとの間隔 */
.p-athlete-filter + .p-athlete-archive__articles {
  margin-block-start: 1.875rem;
}
@media (min-width: 768px) {
  .p-athlete-filter + .p-athlete-archive__articles {
    margin-block-start: 2.5rem;
  }
}

/* --------------------------------------------
   スマホの選手一覧を2列に
   （1枚が大きく縦に長くなるため。ボタンは省いてカード全体をタップ可能に）
-------------------------------------------- */
@media (max-width: 767px) {
  .p-athlete-archive__articles {
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem;
  }
  .p-athlete-archive__articles .p-athlete-card__textArea {
    padding: 0.875rem 0.75rem 1rem;
    gap: 0.625rem;
  }
  .p-athlete-archive__articles .p-athlete-card__label {
    padding: 0.25rem 0.375rem;
    font-size: 0.6875rem;
  }
  .p-athlete-archive__articles .p-athlete-card__nameArea {
    margin-block-start: 0.375rem;
  }
  .p-athlete-archive__articles .p-athlete-card__name {
    font-size: 1.0625rem;
    line-height: 1.4;
  }
  .p-athlete-archive__articles .p-athlete-card__kana {
    margin-block-start: 0.1875rem;
    font-size: 0.6875rem;
  }
  .p-athlete-archive__articles .p-athlete-card__button {
    display: none; /* カード全体がリンクなので省略 */
  }
}

/* --------------------------------------------
   サイドバー（クラス別で選ぶ）
-------------------------------------------- */
.p-athlete-sidebar {
  background: #f4f4fd;
  border-radius: 0.5rem;
  padding: 1.5rem;
}
@media (min-width: 768px) {
  .p-athlete-sidebar {
    width: 15rem;
    flex-shrink: 0;
    position: sticky;
    top: 7.5rem;
    margin-block-start: 3.5625rem; /* リード文とカード群の間隔に合わせる */
  }
}
.p-athlete-sidebar__title {
  color: #333366;
  font-size: 1rem;
  font-weight: 700;
  padding-block-end: 0.75rem;
  border-block-end: 1px solid #333366;
}
/* 中身は絞り込みパネルと同じチップに統一。
   幅が狭いので「英字を上・日本語を下」の2段組み（-stacked） */
.p-athlete-sidebar__list {
  display: flex;
  flex-direction: column;
  margin-block-start: 1rem;
  gap: 0.5rem;
}
.p-athlete-filter__chipText {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.p-athlete-filter__chip.-stacked {
  padding: 0.625rem 0.875rem;
  border-radius: 0.625rem;
}
/* 2段組みチップの件数は画面幅に関わらず常に右端（縦ラインを揃える）
   長いラベル（PARTNER ATHLETE等）でも数字と密着しないよう最低間隔を確保 */
.p-athlete-filter__chip.-stacked .p-athlete-filter__count {
  margin-inline-start: auto;
}
.p-athlete-filter__chip.-stacked {
  gap: 1rem;
}
/* サイドバー幅240pxに収まる文字サイズに固定
   （PC標準の15pxだと最長のPARTNER ATHLETEで枠を使い切り、右端の余白が作れない） */
.p-athlete-filter__chip.-stacked .p-athlete-filter__chipLabel {
  font-size: 0.8125rem;
}
.p-athlete-filter__chip.-stacked .p-athlete-filter__chipSub {
  overflow: hidden;
  font-size: 0.6875rem;
  text-overflow: ellipsis;
}
.p-athlete-filter__chip.-stacked .p-athlete-filter__count {
  flex-shrink: 0; /* 数字バッジは絶対に潰さない */
}
.p-athlete-filter__chip.-stacked:hover {
  border-color: #333366;
  background: #f4f4fd;
}

/* --------------------------------------------
   ヘッダーナビ：メニュー名が長くなった対応（男子選手/スタッフ等）
   このテーマは画面幅に応じてルート文字サイズごと縮む設計のため、
   remで間隔を少し詰めるだけで全画面幅で一律に1行に収まる。
   実測（rem）：使える幅61.4 − 既存49.8 ＝ 余白11.6 ＜ 項目増加分15.1
   → gap縮小で 5.25rem 捻出して解消。文字サイズ・ロゴは既存のまま
-------------------------------------------- */
.p-header__link {
  white-space: nowrap; /* 文字の途中での折り返し禁止 */
}
@media (min-width: 768px) {
  .p-header__list {
    gap: 1.5rem; /* 既存 2.25rem */
  }
  .p-header__navInner {
    gap: 2rem; /* 既存 2.75rem */
  }
}

/* --------------------------------------------
   ヘッダー：ホバーで開くサブメニュー（PC）
-------------------------------------------- */
.p-header__item {
  position: relative;
}
.p-header__submenu {
  position: absolute;
  top: 100%;
  left: 50%;
  translate: -50% 0;
  min-width: 13.5rem;
  padding: 0.5rem 0;
  background: #e6e6f5; /* イメージカラーの薄紫（濃いめ） */
  border-radius: 0.5rem;
  box-shadow: 0 0.5rem 1.5rem rgba(51, 51, 102, 0.18);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s, visibility 0.3s;
  z-index: 20;
}
/* ホバーの隙間切れ防止（ナビとサブメニューの間の見えない橋） */
.p-header__submenu::before {
  content: "";
  position: absolute;
  top: -0.75rem;
  left: 0;
  width: 100%;
  height: 0.75rem;
}
.p-header__item:hover > .p-header__submenu,
.p-header__item:focus-within > .p-header__submenu {
  opacity: 1;
  visibility: visible;
}
.p-header__subLink {
  display: block;
  padding: 0.625rem 1.25rem;
  color: #202020;
  font-size: 0.875rem;
  line-height: 1.5;
  white-space: nowrap;
  transition: background 0.3s, color 0.3s;
}
.p-header__subLink:hover {
  background: #d2d2ea; /* パネルより一段濃いトーン */
  color: #333366;
}

/* --------------------------------------------
   ドロワー：パネル幅を画面の80%に（2026-07 微調整）
-------------------------------------------- */
.p-drawer__panel {
  width: 80%;
}
.p-drawer__overlay {
  width: 20%; /* パネルの残り幅（タップで閉じる領域） */
}

/* --------------------------------------------
   ドロワー：サブメニューの開閉（SP）
-------------------------------------------- */
.p-drawer__item {
  position: relative;
}
.p-drawer__subToggle {
  position: absolute;
  top: 0;
  right: 0;
  width: 2.75rem;
  height: 2.75rem;
  color: #ffffff; /* ドロワー背景が濃紺のため＋マークは白で */
  cursor: pointer;
}
/* プラス記号（開くと横棒だけ＝マイナスに） */
.p-drawer__subToggle::before,
.p-drawer__subToggle::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  width: 0.875rem;
  height: 2px;
  background: currentColor;
  transition: rotate 0.3s;
}
.p-drawer__subToggle::after {
  rotate: 90deg;
}
.p-drawer__item.-open > .p-drawer__subToggle::after {
  rotate: 0deg;
}
.p-drawer__submenu {
  display: none;
  padding-block: 0.25rem 0.5rem;
  padding-inline-start: 1.25rem;
}
.p-drawer__item.-open > .p-drawer__submenu {
  display: block;
}
.p-drawer__subLink {
  display: block;
  padding-block: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.5;
  color: #ffffff; /* ドロワー背景が濃紺のため白文字で視認性を確保 */
  opacity: 0.9;
}

/* --------------------------------------------
   選手詳細レイアウト（コンテンツ＋サイドバー）
-------------------------------------------- */
.p-athlete-single__layout {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}
@media (min-width: 768px) {
  .p-athlete-single__layout {
    flex-direction: row;
    align-items: flex-start;
    gap: 2.5rem;
  }
  .p-athlete-single__main {
    flex: 1;
    min-width: 0;
  }
  .p-athlete-single__layout .p-athlete-sidebar {
    margin-block-start: 0;
  }
}

/* --------------------------------------------
   女子選手ページ：下層FVの配色切替（オプション）
   既存の紺紫グラデーションと同じ深さ・彩度のまま
   色相だけワインレッド側に回した配色
-------------------------------------------- */
.is-women-page .p-page-fv {
  background: linear-gradient(216deg, #cc5588 7.73%, #802244 86.66%);
}
/* 透かしロゴも同じ角度だけ色相を回して馴染ませる */
.is-women-page .p-page-fv::after {
  filter: hue-rotate(105deg);
}

/* --------------------------------------------
   TOPスライダー：スライド切替時のガタつき解消
   原因＝中央カードだけ幅を動的に切り替える作り（344⇔444px）が
   Swiperの距離計算とブラウザ描画のタイミング差を生む（athlete-swiper.md参照）。
   → 外枠は全カード同幅に固定し（計算ズレの原因を根絶）、
   　中央の強調はレイアウトに影響しないscaleで内側要素に掛ける
   　（同mdの「演出はslideInnerに掛ける」方針に準拠）
-------------------------------------------- */
@media (min-width: 768px) {
  .p-athlete__swiper-slide.is-center {
    width: 21.5rem; /* 通常カードと同幅に固定 */
    padding-inline: 0;
  }
  .p-athlete__swiper-slideInner {
    scale: 0.9;
    transition: scale 1s ease; /* Swiperのspeed:1000msに同期 */
  }
  .p-athlete__swiper-slide.is-center .p-athlete__swiper-slideInner {
    scale: 1;
  }
  /* 矢印＝中央カードと両脇カードの間の余白の中心に置く
     （中央カード端172px＋gap18px＋両脇の縮小マージン17px→余白の中心≒190px。
     　矢印幅50pxの中心を合わせるためオフセットは190+25=215px） */
  .p-athlete .swiper-button-prev {
    left: calc(50% - 13.4375rem);
  }
  .p-athlete .swiper-button-prev:hover {
    left: calc(50% - 14rem);
  }
  .p-athlete .swiper-button-next {
    right: calc(50% - 13.4375rem);
  }
  .p-athlete .swiper-button-next:hover {
    right: calc(50% - 14rem);
  }
}

/* --------------------------------------------
   選手カード：ボタン文言を改行させない
-------------------------------------------- */
.p-athlete-card__button {
  white-space: nowrap;
  padding-inline: 1rem;
  text-align: center;
}

/* --------------------------------------------
   選手詳細：サイドバーを白に
   （ページ背景 #f1f1f9 とサイドバー #f4f4fd が同化するため。
   　枠線はSUPPORT&JOINカードと同じ意匠）
-------------------------------------------- */
.p-athlete-single__layout .p-athlete-sidebar {
  background: #ffffff;
  border: 0.0625rem solid rgba(32, 32, 32, 0.2);
}

/* --------------------------------------------
   選手詳細：名前・ローマ字を文中で折り返させない
   幅が足りないときは「名前／ローマ字」の2行に丸ごと落とす
-------------------------------------------- */
.p-athlete-single__name,
.p-athlete-single__kana {
  white-space: nowrap;
}
@media (min-width: 768px) {
  .p-athlete-single__nameWrapper {
    flex-wrap: wrap; /* 横並びが入りきらないときは行ごと折り返す */
  }
}

/* --------------------------------------------
   SUPPORT & JOIN：2枚のカードの中身を揃える
   （タイトル・リードの行数差があってもボタンは下端で統一）
-------------------------------------------- */
.p-support-join__item {
  display: flex;
  flex-direction: column;
}
.p-support-join__button {
  margin-block-start: auto;
  padding-block-start: 1.25rem;
}

/* --------------------------------------------
   選手0名時の空メッセージ
-------------------------------------------- */
.p-athlete-archive__empty {
  grid-column: 1 / -1; /* グリッドの全幅を使って中央に置く */
  padding-block: 2.5rem;
  color: #202020;
  text-align: center;
  line-height: 1.8;
}
