@charset "utf-8";
/*
  school-top-v2.css
  --------------------------------------------------------------
  学校TOP（新レイアウト / school/top.php + inc/common/school-top-v2.php）専用。
  リニューアル共通の top-renewal.css（16px基準・main は最大760px）の上に重ねる。
  すべて .sch-v2 配下にスコープし、共通ヘッダー/フッター/Luna へ波及させない。
  配色は top-renewal.css の変数に合わせる（白文字を載せる面は --orange-deep）。
  件数が増減しても崩れないよう、固定高さを持たせず縦へ伸ばす。
*/

.sch-v2 {
  --v2-ink: #2d3436;
  --v2-muted: #687578;
  --v2-line: #e7e3dc;
  --v2-soft: #fbfaf7;
  --v2-accent: #ff6b35;
  --v2-accent-deep: #c25128;
  --v2-accent-soft: #fff1ea;
  --v2-navy: #1d3557;
  color: var(--v2-ink);
  font-size: 16px;
  line-height: 1.8;
}
.sch-v2 * { min-width: 0; }
.sch-v2 img { max-width: 100%; height: auto; }
.sch-v2 a { color: inherit; text-decoration: none; }
.sch-v2 ol, .sch-v2 ul { margin: 0; padding: 0; list-style: none; }
.sch-v2 p { margin: 0; }

/* ============================================================
   パンくず
   ============================================================ */
.sch-v2-breadcrumb {
  padding: 12px 20px;
  border-bottom: 1px solid #f0eee9;
  color: var(--v2-muted);
  font-size: 0.75rem;
  line-height: 1.6;
}
.sch-v2-breadcrumb ol { display: flex; flex-wrap: wrap; gap: 4px 6px; }
.sch-v2-breadcrumb li + li::before { content: "＞"; margin-right: 6px; color: #c3bfb8; }
.sch-v2-breadcrumb a { color: var(--v2-accent-deep); }
.sch-v2-breadcrumb a:hover { text-decoration: underline; }

/* ============================================================
   FV
   ============================================================ */
.sch-v2-hero { padding: 22px 20px 24px; }
.sch-v2-kicker {
  color: var(--v2-accent-deep);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.12em;
}
.sch-v2-title {
  margin: 4px 0 6px;
  font-size: 1.55rem;
  line-height: 1.4;
  font-weight: 900;
}
.sch-v2-reading {
  color: var(--v2-muted);
  font-size: 0.7rem;
  line-height: 1.5;
}
.sch-v2 .sch-v2-area { margin-top: 6px; font-size: 0.8rem; }
.sch-v2-area a { color: var(--v2-accent-deep); }
.sch-v2-area a:hover { text-decoration: underline; }

/* 写真は低解像度前提。原寸より拡大せず、背景をぼかして枠を埋める */
.sch-v2-photo {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 14px;
  padding: 20px;
  overflow: hidden;
  border-radius: 18px;
  background: #d9dee5;
}
.sch-v2-photo::before {
  content: "";
  position: absolute;
  inset: -22px;
  background-image: linear-gradient(rgba(18, 35, 58, 0.1), rgba(18, 35, 58, 0.1)), var(--sch-v2-hero-bg);
  background-position: center;
  background-size: cover;
  filter: blur(18px);
  transform: scale(1.06);
  opacity: 0.72;
}
.sch-v2-photo-card {
  position: relative;
  z-index: 2;
  width: min(560px, 92%);
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.78);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 16px 38px rgba(0, 0, 0, 0.22);
  line-height: 0;
}
.sch-v2-photo-card img { width: 100%; height: auto; display: block; }
.sch-v2-photo-caption {
  position: absolute;
  left: 12px;
  bottom: 12px;
  z-index: 3;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.94);
  font-size: 0.68rem;
  font-weight: 900;
  line-height: 1.4;
}

/* 作り直した高解像度の写真は、ぼかし背景を使わず枠いっぱいに出す */
.sch-v2-photo.is-full { padding: 0; background: none; }
.sch-v2-photo.is-full::before { display: none; }
.sch-v2-photo.is-full .sch-v2-photo-card {
  width: 100%;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.sch-v2-hero-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 12px;
}
.sch-v2-hero-action {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 50px;
  padding: 9px 8px;
  border: 1px solid var(--v2-line);
  border-radius: 12px;
  background: #fff;
  text-align: center;
  font-size: 0.8rem;
  font-weight: 800;
  line-height: 1.4;
}
.sch-v2-hero-action.is-primary {
  border-color: var(--v2-accent-deep);
  background: var(--v2-accent-deep);
  color: #fff;
}

.sch-v2-facts {
  margin-top: 14px;
  overflow: hidden;
  border: 1px solid var(--v2-line);
  border-radius: 16px;
  background: var(--v2-soft);
}
.sch-v2-fact { padding: 14px 16px; border-top: 1px solid var(--v2-line); }
.sch-v2-fact:first-child { border-top: 0; }
.sch-v2-fact-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
  line-height: 1.4;
}
.sch-v2-fact-head strong { font-size: 0.85rem; }
.sch-v2-fact-head span { color: var(--v2-muted); font-size: 0.68rem; font-weight: 800; }
.sch-v2-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.sch-v2-chip {
  padding: 5px 10px;
  border-radius: 999px;
  background: #eef2f7;
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1.5;
}
.sch-v2-chip.is-stay { background: #f2ede5; }
/* リンクのチップはタップしやすい高さを確保する（取扱車種＝車種別ページ、宿泊先＝宿泊ページ） */
a.sch-v2-chip {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 5px 13px;
  text-decoration: underline;
  text-underline-offset: 2px;
}
/* 取扱車種は車種別の料金・入校日ページ（/calendar/#c○）へ */
a.sch-v2-chip.is-car { background: var(--v2-accent-soft); color: #b7441d; }
a.sch-v2-chip.is-car:hover { background: #ffe3d5; }
.sch-v2 .sch-v2-fact-note { margin-top: 7px; color: var(--v2-muted); font-size: 0.68rem; line-height: 1.6; }
.sch-v2-restrict {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  padding: 11px 13px;
  border-radius: 12px;
  background: #fff4ef;
  color: #7e3d28;
  font-size: 0.75rem;
  line-height: 1.7;
}
.sch-v2-restrict b { white-space: nowrap; }

/* ============================================================
   セクション共通
   ============================================================ */
.sch-v2-section { padding: 30px 20px; border-top: 1px solid #ece9e3; }
/* ページ内リンクの着地点。共通ヘッダーぶんは html の scroll-padding-top（top-renewal.css）
   で確保済みなので、ここではその下に浮く学校内ナビ（#schV2FloatNav）の高さだけ足す。 */
.sch-v2 section[id] { scroll-margin-top: 53px; }
@media (min-width: 980px) {
  .sch-v2 section[id] { scroll-margin-top: 57px; }
}
.sch-v2-label {
  color: var(--v2-accent-deep);
  font-size: 0.66rem;
  font-weight: 900;
  letter-spacing: 0.16em;
}
.sch-v2-h2 { margin: 4px 0 8px; font-size: 1.3rem; line-height: 1.45; font-weight: 900; }
.sch-v2 .sch-v2-lead { margin-bottom: 16px; color: var(--v2-muted); font-size: 0.82rem; line-height: 1.8; }
.sch-v2 .sch-v2-note {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 10px;
  background: #f7f5f2;
  color: #665c56;
  font-size: 0.72rem;
  line-height: 1.7;
}
.sch-v2-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 50px;
  padding: 10px 14px;
  border: 1px solid #d8dcdd;
  border-radius: 12px;
  background: #fff;
  text-align: center;
  font-size: 0.85rem;
  font-weight: 900;
  line-height: 1.5;
}
.sch-v2-btn.is-primary {
  border-color: var(--v2-accent-deep);
  background: var(--v2-accent-deep);
  color: #fff;
  box-shadow: 0 6px 18px rgba(255, 107, 53, 0.24);
}

/* 展開表示（details） */
.sch-v2-details {
  border: 1px solid var(--v2-line);
  border-radius: 12px;
  background: #fff;
  padding: 0 14px;
}
.sch-v2-details + .sch-v2-details { margin-top: 8px; }
.sch-v2-details > summary {
  position: relative;
  padding: 13px 30px 13px 0;
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 800;
  line-height: 1.6;
  list-style: none;
}
.sch-v2-details > summary::-webkit-details-marker { display: none; }
.sch-v2-details > summary::after {
  content: "＋";
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
  color: var(--v2-accent-deep);
  font-weight: 900;
}
.sch-v2-details[open] > summary::after { content: "－"; }
.sch-v2-details > p { margin: 0 0 14px; color: var(--v2-muted); font-size: 0.8rem; line-height: 1.85; }

/* ISDBから来るHTML（料金表・注記）をそのまま置く枠。
   横スクロールするのは表だけ（.sch-v2-table-scroll）で、注記は折り返す。 */
.sch-v2-rich { padding-bottom: 14px; font-size: 0.78rem; line-height: 1.8; }
.sch-v2-rich p { margin: 0 0 8px; }
.sch-v2-rich p:last-child { margin-bottom: 0; }
.sch-v2-rich .red { color: #c8471e; font-weight: 800; }
.sch-v2-rich table {
  width: 100%;
  min-width: 420px;
  margin: 0;
  border-collapse: collapse;
  background: #fff;
}

/* ------------------------------------------------------------
   表の横スクロール。端のフェードと「横にスクロールできます」で
   スクロールできることを分かるようにする（is-* は school-top-v2.js が付ける）
   ------------------------------------------------------------ */
.sch-v2-table-wrap { margin: 0 0 10px; }
/* .sch-v2-table-view は JS が差し込む（端のフェードをスクロール枠と同じ高さに出すため） */
.sch-v2-table-view { position: relative; }
.sch-v2-table-scroll {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.sch-v2-table-scroll:focus-visible { outline: 2px solid var(--v2-accent-deep); outline-offset: 2px; }
/* 端のフェード＋影（スクロールできる方向にだけ出す） */
.sch-v2-table-view::before,
.sch-v2-table-view::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 30px;
  pointer-events: none;
  opacity: 0;
  transition: opacity .18s ease;
}
.sch-v2-table-view::before {
  left: 0;
  background: linear-gradient(to right, rgba(45, 52, 54, 0.16), rgba(45, 52, 54, 0));
}
.sch-v2-table-view::after {
  right: 0;
  background: linear-gradient(to left, rgba(45, 52, 54, 0.16), rgba(45, 52, 54, 0));
}
.sch-v2-table-wrap.can-left .sch-v2-table-view::before { opacity: 1; }
.sch-v2-table-wrap.can-right .sch-v2-table-view::after { opacity: 1; }
/* スクロールできることを伝えるヒント。表の上に右寄せで出し、1度スクロールしたら消す。
   表に重ねると金額が隠れるので、重ねない。 */
.sch-v2-table-hint {
  display: none;
  align-items: center;
  gap: 5px;
  width: -moz-fit-content;
  width: fit-content;
  margin: 0 0 5px auto;
  padding: 5px 10px;
  border: 1px solid #f3d6c8;
  border-radius: 999px;
  background: #fff4ef;
  color: #8a3b21;
  font-size: 0.66rem;
  font-weight: 800;
  line-height: 1.4;
  white-space: nowrap;
  pointer-events: none;
  opacity: 1;
  transition: opacity .2s ease;
}
/* はみ出している表にだけ出す。消えたあとも場所は残してガタつかせない。 */
.sch-v2-table-wrap.is-scrollable .sch-v2-table-hint { display: flex; }
.sch-v2-table-wrap.is-scrolled .sch-v2-table-hint { opacity: 0; }
.sch-v2-table-hint-arrow {
  display: inline-block;
  animation: schV2SwipeHint 1.4s ease-in-out infinite;
}
@keyframes schV2SwipeHint {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(4px); }
}
@media (prefers-reduced-motion: reduce) {
  .sch-v2-table-hint-arrow { animation: none; }
  .sch-v2-table-view::before, .sch-v2-table-view::after, .sch-v2-table-hint { transition: none; }
}
.sch-v2-rich th, .sch-v2-rich td {
  padding: 7px 8px;
  border: 1px solid #e1ddd6;
  font-size: 0.72rem;
  line-height: 1.6;
  text-align: left;
  vertical-align: top;
}
.sch-v2-rich th { background: #f5f2ed; font-weight: 800; }

/* ============================================================
   キャンペーン
   ============================================================ */
.sch-v2-cp-stack { display: grid; gap: 12px; }
.sch-v2-cp-grid { display: grid; gap: 12px; align-items: stretch; }
/* カードの高さが揃うよう縦フレックスにし、「対象条件〜」は下端へ寄せる */
.sch-v2-cp {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--v2-line);
  border-radius: 16px;
  background: #fff;
}
.sch-v2-cp > .sch-v2-details.is-cp { margin-top: auto; }
.sch-v2-cp.is-featured { border-color: #ffd0bd; background: #fffaf7; }
.sch-v2-cp-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 6px 18px;
  padding: 16px 16px 13px;
}
.sch-v2 .sch-v2-cp-type {
  display: inline-block;
  width: -moz-fit-content;
  width: fit-content;
  padding: 3px 8px;
  margin-bottom: 5px;
  border-radius: 999px;
  background: var(--v2-accent-soft);
  color: #b7431c;
  font-size: 0.63rem;
  font-weight: 900;
  letter-spacing: 0.06em;
  line-height: 1.5;
}
.sch-v2-cp-head h3 { margin: 0 0 3px; font-size: 1rem; line-height: 1.5; font-weight: 900; }
.sch-v2-cp-meta { color: var(--v2-muted); font-size: 0.7rem; line-height: 1.65; }
.sch-v2-cp-prices { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.sch-v2-cp-price {
  flex: 1 1 130px;
  padding: 9px 12px;
  border: 1px solid #f1d8cd;
  border-radius: 12px;
  background: #fff;
}
.sch-v2-cp-price span { display: block; color: var(--v2-muted); font-size: 0.64rem; font-weight: 800; line-height: 1.5; }
.sch-v2-cp-price strong { display: block; margin-top: 2px; color: #c8471e; font-size: 1.2rem; line-height: 1.2; }
/* 代表の料金だけカードに出したときの、残り件数の案内 */
.sch-v2 .sch-v2-cp-more { margin-top: 8px; color: var(--v2-muted); font-size: 0.72rem; line-height: 1.6; }
/* 強調文言。ISDBの入力順どおり「前置き → 金額 → 補足」で縦に積む */
.sch-v2 .sch-v2-cp-value { margin-top: 8px; }
.sch-v2-cp-value strong {
  display: block;
  color: #c8471e;
  font-size: 1.3rem;
  font-weight: 900;
  line-height: 1.25;
}
.sch-v2-cp-value small {
  display: block;
  color: var(--v2-muted);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.65;
}
.sch-v2-cp-value small.is-lead { margin-bottom: 2px; }
.sch-v2-cp-value small + strong { margin-top: 0; }
.sch-v2-cp-value strong + small { margin-top: 4px; }
.sch-v2-details.is-cp {
  border: 0;
  border-top: 1px solid var(--v2-line);
  border-radius: 0;
  background: var(--v2-soft);
  padding: 0 16px;
}
.sch-v2-details.is-cp > summary { font-size: 0.75rem; font-weight: 800; color: #5d4b42; }
.sch-v2 .sch-v2-cp-cta { margin-top: 26px; }
.sch-v2-cp-cta .sch-v2-btn { width: 100%; }
.sch-v2-cp-extra { margin-top: 16px; }

/* ============================================================
   スタッフのおすすめ
   ============================================================ */
.sch-v2-staff {
  position: relative;
  padding: 20px 20px 20px 74px;
  border-radius: 18px;
  background: var(--v2-navy);
  color: #fff;
}
.sch-v2-staff-icon {
  position: absolute;
  left: 18px;
  top: 20px;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fff;
  color: var(--v2-navy);
  font-size: 1.4rem;
  line-height: 1;
}
.sch-v2-staff-icon::before { content: "☾"; }
.sch-v2-staff h3 { margin: 0 0 6px; font-size: 1.02rem; line-height: 1.55; font-weight: 900; }
.sch-v2-staff p { color: #e8eef7; font-size: 0.82rem; line-height: 1.85; }

/* ============================================================
   料金・入校日
   ============================================================ */
.sch-v2-routes { display: grid; gap: 10px; }
.sch-v2-route {
  display: grid;
  grid-template-columns: 66px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 14px 14px;
  border: 1px solid var(--v2-line);
  border-radius: 14px;
  background: #fff;
  transition: 0.15s ease;
}
.sch-v2-route:hover { border-color: #efb49d; box-shadow: 0 6px 18px rgba(53, 42, 36, 0.06); }
.sch-v2-route-name {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  padding: 4px;
  border-radius: 11px;
  background: var(--v2-accent-soft);
  color: #b7441d;
  font-size: 0.85rem;
  font-weight: 900;
  line-height: 1.35;
  text-align: center;
}
.sch-v2-route-copy strong { display: block; margin-bottom: 2px; font-size: 0.88rem; line-height: 1.5; }
.sch-v2-route-copy span { display: block; color: var(--v2-muted); font-size: 0.7rem; line-height: 1.6; }
.sch-v2-route-arrow {
  display: flex;
  align-items: center;
  gap: 7px;
  color: #b7441d;
  font-size: 0.72rem;
  font-weight: 900;
  white-space: nowrap;
}
.sch-v2-route-arrow b {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--v2-accent-soft);
  font-size: 0.85rem;
}

/* ============================================================
   宿泊・アクセス
   ============================================================ */
.sch-v2-sa-list { display: grid; gap: 12px; }
.sch-v2-sa-card {
  overflow: hidden;
  border: 1px solid var(--v2-line);
  border-radius: 16px;
  background: #fff;
}
.sch-v2-sa-main { display: grid; gap: 10px; padding: 15px 16px 13px; }
.sch-v2-sa-label {
  width: -moz-fit-content;
  width: fit-content;
  padding: 6px 11px;
  border-radius: 11px;
  background: #f5f1eb;
  color: #5b4d45;
  font-size: 0.65rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  line-height: 1.4;
}
.sch-v2-sa-body h3 { margin: 0 0 6px; font-size: 1rem; line-height: 1.5; font-weight: 900; }
.sch-v2-sa-body p { color: var(--v2-muted); font-size: 0.78rem; line-height: 1.8; }
.sch-v2-sa-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.sch-v2-sa-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 2px;
  padding: 5px 9px;
  border: 1px solid #e3e6e9;
  border-radius: 999px;
  background: #f7f8fa;
  color: #4f5964;
  font-size: 0.66rem;
  font-weight: 800;
  line-height: 1.55;
}
/* 宿舎名は宿泊ページの各施設へ直接飛ぶリンク */
a.sch-v2-sa-chip { border-color: #e0d3ca; background: #fff; color: #b7441d; }
a.sch-v2-sa-chip:hover { border-color: #efb49d; background: var(--v2-accent-soft); }
a.sch-v2-sa-chip .sch-v2-sa-chip-name { text-decoration: underline; }
.sch-v2-sa-chip-meta { color: var(--v2-muted); font-weight: 700; }
.sch-v2-sa-chip-meta::before { content: "｜"; }
a.sch-v2-chip.is-stay:hover { background: #e8ded0; }
.sch-v2-sa-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 10px; }
.sch-v2-sa-fact { padding: 9px 10px; border-radius: 10px; background: #f7f8fa; }
.sch-v2-sa-fact span { display: block; color: var(--v2-muted); font-size: 0.6rem; font-weight: 800; line-height: 1.5; }
.sch-v2-sa-fact strong { display: block; margin-top: 2px; font-size: 0.78rem; line-height: 1.5; }
/* 出発地別の集合場所。1行1出発地で読ませる */
.sch-v2-sa-facts.is-dep { grid-template-columns: 1fr; }
.sch-v2-sa-facts.is-dep .sch-v2-sa-fact {
  display: grid;
  grid-template-columns: 5.4em 1fr;
  align-items: baseline;
  gap: 4px 10px;
}
.sch-v2-sa-facts.is-dep .sch-v2-sa-fact span { margin-top: 1px; }
.sch-v2-sa-facts.is-dep .sch-v2-sa-fact strong { margin-top: 0; }
.sch-v2-sa-fact strong em:first-child { margin-left: 0; }
.sch-v2-sa-fact strong em {
  display: inline-block;
  margin-left: 8px;
  color: #b7441d;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}
@media (max-width: 479px) {
  .sch-v2-sa-facts.is-dep .sch-v2-sa-fact { grid-template-columns: 1fr; }
  .sch-v2-sa-facts.is-dep .sch-v2-sa-fact strong em { margin-left: 6px; }
}
/* 「次のページへ進める行」だと分かるよう、本文色ではなくリンク色で出す。
   .sch-v2 a { color: inherit } が効いてしまうため、詳細度を上げて指定する。 */
.sch-v2 a.sch-v2-sa-link,
.sch-v2-sa-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-top: 1px solid var(--v2-line);
  background: #fbfaf8;
  color: #b7441d;
  font-size: 0.76rem;
  font-weight: 900;
  line-height: 1.6;
}
.sch-v2 a.sch-v2-sa-link:hover,
.sch-v2 a.sch-v2-sa-link:focus-visible {
  background: #fff4ee;
  text-decoration: underline;
}
.sch-v2-sa-link b {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--v2-accent-soft);
  font-size: 0.85rem;
}

/* ============================================================
   学校内ナビ（inc/common/school-local-nav.php）
   下層3ページと同じ並び・文言。学校TOPでは既定では出さず、
   FVの「申し込む」入りナビ（.sch-v2-hero-actions）が画面から出たときだけ
   上部に浮かせて出す。is-visible と top は js/school-top-v2.js が付ける
   （追従するヘッダーがある幅では、その高さぶん下げる）。
   ============================================================ */
.sch-v2-floatnav {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 19; /* 追従するサイトヘッダー（20）より下。重なっても申込ボタンとMENUを隠さない */
  width: min(100%, 760px);
  margin: 0 auto;
  padding: 8px 20px;
  border-bottom: 1px solid var(--v2-line);
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(12px);
  /* 出るまではフォーカスも読み上げも対象にしない */
  visibility: hidden;
  opacity: 0;
  transform: translateY(-100%);
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
}
.sch-v2-floatnav.is-visible {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .sch-v2-floatnav { transition: none; }
}
@media (min-width: 980px) {
  /* PCは装飾の右レールぶん左に寄っているので、本文カラムと同じ位置・幅・左右余白に合わせる */
  .sch-v2-floatnav {
    right: auto;
    left: var(--desktop-main-offset);
    width: var(--desktop-main);
    margin: 0;
    padding-right: 32px;
    padding-left: 32px;
  }
}
.sch-v2 .school-local-nav {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}
.sch-v2 .school-local-nav__item {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 8px 10px;
  border: 1px solid var(--v2-line);
  border-radius: 999px;
  background: #fff;
  color: #b7441d;
  font-size: 0.74rem;
  font-weight: 800;
  line-height: 1.3;
  text-align: center;
  text-decoration: none;
}
.sch-v2 a.school-local-nav__item:hover,
.sch-v2 a.school-local-nav__item:focus-visible {
  background: #fff4ee;
}
.sch-v2 .school-local-nav__item--current {
  border-color: #ffc6b1;
  background: #fff1ea;
  color: var(--v2-ink, #2d3436);
  cursor: default;
}

@media screen and (max-width: 767px) {
  /* 浮かせたバーが画面を占有しないよう、SPは折り返さず横スクロールの1行にする */
  .sch-v2 .school-local-nav {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .sch-v2 .school-local-nav::-webkit-scrollbar {
    display: none;
  }
  .sch-v2 .school-local-nav__item {
    flex: 0 0 auto;
    min-height: 36px;
    padding: 8px 14px;
    white-space: nowrap;
  }
}

/* ============================================================
   学校の特徴
   ============================================================ */
.sch-v2-feature-list { display: grid; gap: 12px; }
.sch-v2-feature {
  display: grid;
  overflow: hidden;
  border: 1px solid var(--v2-line);
  border-radius: 16px;
  background: #fff;
}
.sch-v2-feature-photo { line-height: 0; }
.sch-v2-feature-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sch-v2-feature-body { display: flex; flex-direction: column; justify-content: center; padding: 15px 16px 17px; }
.sch-v2 .sch-v2-feature-num { margin-bottom: 5px; color: #c94c20; font-size: 0.62rem; font-weight: 900; letter-spacing: 0.12em; }
.sch-v2-feature-body h3 { margin: 0 0 7px; font-size: 1.02rem; line-height: 1.5; font-weight: 900; }
.sch-v2-feature-body p { color: var(--v2-muted); font-size: 0.78rem; line-height: 1.85; }
.sch-v2 .sch-v2-feature-link { margin-top: 9px; }
.sch-v2-feature-link a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: #b7441d;
  font-size: 0.76rem;
  font-weight: 900;
  line-height: 1.6;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.sch-v2-feature-link a b { font-size: 0.7rem; font-weight: 700; }

/* ============================================================
   設備・写真
   ============================================================ */
.sch-v2-facility-groups { display: grid; gap: 12px; }
.sch-v2-facility-group { padding: 15px 16px; border: 1px solid var(--v2-line); border-radius: 14px; background: #fff; }
.sch-v2-facility-group h3 { margin: 0 0 10px; font-size: 0.9rem; font-weight: 900; }
.sch-v2-facility-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.sch-v2-facility-chip {
  padding: 6px 9px;
  border: 1px solid #e5e8eb;
  border-radius: 9px;
  background: #f7f8fa;
  color: #4f5964;
  font-size: 0.68rem;
  font-weight: 800;
  line-height: 1.5;
}
.sch-v2-photo-block { margin-top: 18px; }
.sch-v2-photo-block-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.sch-v2-photo-block-head h3 { margin: 0; font-size: 0.95rem; font-weight: 900; }
.sch-v2-photo-block-head span { color: var(--v2-muted); font-size: 0.65rem; }
.sch-v2-photo-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px; }
.sch-v2-photo-grid figure {
  margin: 0;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border-radius: 10px;
  background: #eee;
}
.sch-v2-photo-grid img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* クリックで拡大（JS）。ボタンにしてキーボードでも開けるようにする */
.sch-v2-photo-item {
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
  transition: transform .15s ease, opacity .15s ease;
}
.sch-v2-photo-item:hover { transform: scale(1.03); opacity: .92; }
.sch-v2-photo-item:focus-visible { outline: 3px solid var(--v2-accent-deep); outline-offset: 2px; }

/* ============================================================
   写真の拡大表示（背面を暗くするオーバーレイ）
   ============================================================ */
.sch-v2-lightbox-open, .sch-v2-lightbox-open body { overflow: hidden; }
.sch-v2-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 20px;
  background: rgba(20, 22, 26, 0.82);
}
.sch-v2-lightbox[hidden] { display: none; }
.sch-v2-lightbox-figure {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin: 0;
  max-width: 100%;
  max-height: 100%;
}
/* 実寸（600x400程度）を超えて引き伸ばさない */
.sch-v2-lightbox img {
  display: block;
  width: auto;
  height: auto;
  max-width: min(100%, 900px);
  max-height: calc(100vh - 110px);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 20px 60px rgba(0, 0, 0, .45);
}
.sch-v2-lightbox figcaption {
  color: #f2f2f2;
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.6;
  text-align: center;
}
.sch-v2-lightbox-close,
.sch-v2-lightbox-nav {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, .14);
  color: #fff;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
}
.sch-v2-lightbox-close:hover,
.sch-v2-lightbox-nav:hover { background: rgba(255, 255, 255, .28); }
.sch-v2-lightbox-close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 2;
}
.sch-v2-lightbox-nav[hidden] { display: none; }
@media (max-width: 640px) {
  .sch-v2-lightbox { padding: 14px 6px; gap: 2px; }
  .sch-v2-lightbox-close, .sch-v2-lightbox-nav { width: 38px; height: 38px; font-size: 1.2rem; }
  .sch-v2-lightbox img { max-height: calc(100vh - 130px); }
}

/* ============================================================
   卒業生の声（掲載できる実データがある校だけ出る）
   ============================================================ */
.sch-v2-voice-grid { display: grid; gap: 12px; }
.sch-v2-voice-card {
  padding: 16px;
  border: 1px solid var(--v2-line);
  border-radius: 16px;
  background: #fff;
}
.sch-v2 .sch-v2-voice-meta {
  margin-bottom: 8px;
  color: var(--v2-muted);
  font-size: 0.66rem;
  font-weight: 800;
  line-height: 1.6;
}
.sch-v2-voice-card blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 0.88rem;
  font-weight: 800;
  line-height: 1.8;
}
.sch-v2 .sch-v2-voice-source {
  margin-top: 8px;
  color: var(--v2-muted);
  font-size: 0.64rem;
  line-height: 1.6;
}

/* ============================================================
   FAQ
   ============================================================ */
.sch-v2-faq { display: grid; gap: 8px; }
.sch-v2-faq .sch-v2-details + .sch-v2-details { margin-top: 0; }

/* ============================================================
   申込みの流れ
   ============================================================ */
/* 申込みフローは常に縦1列のステップ表記。番号を縦線でつなぐ */
/* ステップ間の余白は margin で取る。padding にすると 50% が説明ボックスの中心とずれるため。 */
.sch-v2-flow { display: block; }
.sch-v2-step {
  position: relative;
  padding: 0 0 0 52px;
  margin-bottom: 20px;
  border: 0;
  background: none;
}
.sch-v2-step:last-child { margin-bottom: 0; }
/* 番号どうしをつなぐ縦線（円の下→次のステップ／前のステップ→円の上） */
.sch-v2-step::before,
.sch-v2-step::after {
  content: "";
  position: absolute;
  left: 16px;
  width: 2px;
  border-radius: 1px;
  background: #e4e7eb;
}
.sch-v2-step::before { top: calc(50% + 17px); bottom: -20px; }
.sch-v2-step::after { top: 0; bottom: calc(50% + 17px); }
.sch-v2-step:first-child::after { display: none; }
.sch-v2-step:last-child::before { display: none; }
/* 番号は説明ボックスと横中央を揃える */
.sch-v2-step-no {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--v2-navy);
  color: #fff;
  font-size: 0.85rem;
  font-weight: 900;
}
.sch-v2-step.is-action .sch-v2-step-no { box-shadow: 0 0 0 4px rgba(255, 107, 53, 0.16); }
.sch-v2-step-body {
  padding: 13px 16px;
  border: 1px solid var(--v2-line);
  border-radius: 14px;
  background: #fff;
}
.sch-v2-step.is-action .sch-v2-step-body { border-color: #ffc6b1; background: #fff8f4; }
.sch-v2-step.is-action .sch-v2-step-no { background: var(--v2-accent-deep); }
.sch-v2-step h3 { margin: 0 0 5px; font-size: 0.95rem; line-height: 1.5; font-weight: 900; }
.sch-v2-step p { color: var(--v2-muted); font-size: 0.76rem; line-height: 1.8; }
/* 申込みの流れの各ステップから、規約や準備の説明ページへ進めるリンク */
.sch-v2-step-links {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}
.sch-v2-step-links li { margin: 0; }
.sch-v2-step-links a {
  color: #b7441d;
  font-size: 0.74rem;
  font-weight: 700;
  line-height: 1.7;
  text-decoration: underline;
}
.sch-v2-step-links a::before {
  content: "›";
  margin-right: 4px;
  text-decoration: none;
}
.sch-v2 .sch-v2-flow-note {
  margin-top: 12px;
  padding: 12px 14px;
  border: 1px solid #e4e7eb;
  border-radius: 12px;
  background: #f7f8fa;
  color: #596270;
  font-size: 0.74rem;
  line-height: 1.8;
}
.sch-v2-flow-note b { color: var(--v2-ink); }
.sch-v2-flow-cta { display: grid; gap: 10px; margin-top: 14px; }

/* ============================================================
   他校導線
   ============================================================ */
.sch-v2-other-grid { display: grid; gap: 10px; margin: 16px 0 14px; }

/* 関連校は同県すべてを出すため件数が読めない。カードではなくコンパクトな一覧にして、
   何校並んでもページが伸びすぎないようにする（リンクはすべて初期HTMLに出す）。 */
/* .sch-v2 ul の margin:0 リセットより優先させるため .sch-v2 を付けて指定する */
.sch-v2 .sch-v2-other-list {
  display: grid;
  /* 校名の長さがバラバラで1行の校と2行の校が混ざるため、全行を同じ高さに揃える
     （1fr の自動行＝一番高い行に合わせる）。 */
  grid-auto-rows: 1fr;
  gap: 10px;
  /* 下の「エリア一覧へ」ボタンとの間を、一覧内のgapよりはっきり広く取る */
  margin: 16px 0 22px;
  padding: 0;
  list-style: none;
}
.sch-v2-other-list li {
  display: flex;
}
.sch-v2-other-list a {
  display: flex;
  /* 文字は左揃え・上下は中央。高さを揃えたぶん短い校名が上に寄らないようにする */
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  padding: 13px 28px 13px 14px;
  position: relative;
  border: 1px solid var(--v2-line);
  border-radius: 12px;
  background: #fff;
  font-size: 0.85rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: left;
  text-decoration: none;
}
.sch-v2-other-list a::after {
  content: "›";
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  color: #b7441d;
  font-size: 0.95rem;
  font-weight: 900;
  line-height: 1;
}
.sch-v2-other-list a:hover { border-color: #efb49d; box-shadow: 0 6px 18px rgba(53, 42, 36, 0.06); }
.sch-v2-other-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 15px;
  border: 1px solid var(--v2-line);
  border-radius: 14px;
  background: #fff;
}
.sch-v2-other-card:hover { border-color: #efb49d; box-shadow: 0 6px 18px rgba(53, 42, 36, 0.06); }
.sch-v2-other-pref { color: var(--v2-muted); font-size: 0.64rem; font-weight: 800; }
.sch-v2-other-card strong { flex: 1; font-size: 0.85rem; line-height: 1.6; }
.sch-v2-other-arrow { color: #b7441d; font-size: 0.7rem; font-weight: 900; }
.sch-v2-other-primary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 15px 17px;
  border: 1px solid #dce2e8;
  border-radius: 14px;
  background: #fff;
  font-size: 0.88rem;
  font-weight: 900;
  line-height: 1.5;
}
.sch-v2-other-primary small {
  display: block;
  margin-top: 3px;
  color: var(--v2-muted);
  font-size: 0.64rem;
  font-weight: 600;
  line-height: 1.6;
}
.sch-v2-other-sub { display: grid; gap: 10px; margin-top: 14px; }
.sch-v2-other-sub a {
  display: block;
  padding: 12px;
  border: 1px solid #e1e5ea;
  border-radius: 12px;
  background: #fff;
  text-align: center;
  font-size: 0.75rem;
  font-weight: 800;
  line-height: 1.6;
}

/* ============================================================
   ページ先頭へ戻るボタン
   固定CTA（.fixed-actions／SPは全幅63px・PCは右下に浮くボタン）と重ならない位置に置く
   ============================================================ */
.sch-v2-pagetop {
  position: fixed;
  right: 16px;
  bottom: 75px;
  z-index: 35;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  width: 52px;
  height: 52px;
  padding: 0;
  border: 1px solid #e0d8d2;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.96);
  color: var(--v2-accent-deep);
  box-shadow: 0 6px 18px rgba(45, 52, 54, 0.18);
  cursor: pointer;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .2s ease, transform .2s ease;
}
.sch-v2-pagetop[hidden] { display: none; }
.sch-v2-pagetop.is-visible { opacity: 1; transform: translateY(0); }
.sch-v2-pagetop:hover { background: #fff; border-color: #efb49d; }
.sch-v2-pagetop:focus-visible { outline: 3px solid var(--v2-accent-deep); outline-offset: 2px; }
.sch-v2-pagetop-arrow {
  width: 9px;
  height: 9px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(-45deg);
  margin-top: 3px;
}
.sch-v2-pagetop-label {
  font-size: 0.6rem;
  font-weight: 900;
  letter-spacing: 0.04em;
  line-height: 1;
}
@media (min-width: 980px) {
  /* PCの固定CTAは右下に浮くボタン（下端から約28px・高さ74px）なので、その上に置く */
  .sch-v2-pagetop { bottom: 116px; }
}
@media (prefers-reduced-motion: reduce) {
  .sch-v2-pagetop { transition: none; }
}

/* ============================================================
   関連リンク
   ============================================================ */
.sch-v2-rel { padding: 22px 20px 30px; border-top: 1px solid #ece9e3; }
.sch-v2-rel ul { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.sch-v2-rel a { color: var(--v2-accent-deep); font-size: 0.74rem; line-height: 1.7; }
.sch-v2-rel a:hover { text-decoration: underline; }

/* ============================================================
   空き状況カレンダー（sokuho.css）との調整
   ============================================================ */
.sch-v2 .sokuho-calendar { padding: 30px 20px; border-top: 1px solid #ece9e3; }

/* ============================================================
   画面幅 641px 以上
   ============================================================ */
@media (min-width: 641px) {
  .sch-v2-breadcrumb { padding: 14px 24px; }
  .sch-v2-hero { padding: 26px 24px 24px; }
  .sch-v2-title { font-size: 1.8rem; }
  .sch-v2-section { padding: 34px 24px; }
  .sch-v2-rel { padding: 26px 24px 34px; }
  .sch-v2-h2 { font-size: 1.45rem; }

  .sch-v2-hero-actions { grid-template-columns: repeat(4, 1fr); }
  .sch-v2-cp-grid { grid-template-columns: 1fr 1fr; }
  .sch-v2-cp.is-featured .sch-v2-cp-head { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .sch-v2-cp.is-featured .sch-v2-cp-value { text-align: right; margin-top: 0; }
  .sch-v2-route { grid-template-columns: 76px minmax(0, 1fr) auto; padding: 15px 16px; }
  .sch-v2-sa-main { grid-template-columns: 88px minmax(0, 1fr); gap: 16px; padding: 17px 18px 15px; }
  .sch-v2-sa-label { display: flex; align-items: center; justify-content: center; min-height: 70px; padding: 8px; }
  .sch-v2-feature { grid-template-columns: 210px minmax(0, 1fr); }
  .sch-v2-feature-photo { min-height: 150px; }
  /* 設備・周辺環境と申込みフローはPCでも縦1列のまま（横に詰めない） */
  .sch-v2-photo-grid { grid-template-columns: repeat(4, 1fr); }
  .sch-v2-flow-cta { grid-template-columns: 1fr 1fr; }
  .sch-v2-voice-grid { grid-template-columns: 1fr 1fr; }
  .sch-v2-other-grid { grid-template-columns: 1fr 1fr; }
  .sch-v2-other-list { grid-template-columns: 1fr 1fr; }
  .sch-v2-other-sub { grid-template-columns: 1fr 1fr; }
}

@media (min-width: 980px) {
  .sch-v2-breadcrumb,
  .sch-v2-hero,
  .sch-v2-section,
  .sch-v2-rel,
  .sch-v2 .sokuho-calendar { padding-right: 32px; padding-left: 32px; }
  /* 同県に10校前後並ぶ校があるため、広い画面では3列にして縦を詰める */
  .sch-v2-other-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

