/*
Theme Name: 自信塾 Renew
Author: EISUKE KAJI
Version: 1.1.0
Text Domain: jishinjuku-renew
*/
/* NOTE:
   - style.css は UTF-8 保存を前提に @charset を省略しています（WPのテーマ情報コメントを先頭に置くため）。
*/
/* =========================
   Base
   ========================= */
:root {
  --brand-red: #b32924;
  --text: #ffffff;
  --pad-x: 20px;
  --header-h: 60px;
  --header-pad-top: 20px;
  --header-total-h: calc(var(--header-h) + var(--header-pad-top));
  --gap-header-to-visual: 85px;
  --scroll-area-h: 120px;
  --visual-left-gap: 14.5%;
  --font-sans: "Noto Sans JP", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", "Meiryo", sans-serif;
  --font-serif: "Noto Serif JP", "Hiragino Mincho ProN", "Hiragino Mincho Pro", "Yu Mincho", "YuMincho", "MS PMincho", serif;
  --kenburns-dur: 8000ms;
  --space-xl: 80px;
  --space-lg: 60px;
  --space-md: 40px;
  --space-sm: 30px;
  --sec-title-fz: clamp(24px, 5.333vw, 40px);
  --sec-sub-fz: clamp(15px, 3.867vw, 29px);
  --safe-top: env(safe-area-inset-top, 0px);
  --ph-photo-left: 50px;
  --parallax-img-top: -20%;
  --parallax-img-h: 140%;
  --voices-tilt: -7.5deg;
  --gmenu-bg: #b32924;
  --gmenu-pad-x: 20px;
  --gmenu-origin-x: calc(100% - 44px);
  --gmenu-origin-y: 44px;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: #fff;
  font-family: var(--font-sans);
}

.l-preview {
  max-width: 750px;
  margin: 0 auto;
  background: #fff;
  min-height: 100svh;
}

/* 1024px〜：750固定を解除 */
@media (min-width: 1024px) {
  .l-preview {
    max-width: none;
    margin: 0;
  }
}

.u-font-serif {
  font-family: var(--font-serif);
}

/* =========================
   テキスト装飾まとめ
   ========================= */
.u-txt-red {
  color: var(--brand-red, #b32020);
}

.u-txt-blred {
  color: var(--brand-red, #b32020);
  font-weight: 700;
}

.u-txt-black{
	color: #111!important;
}
.t-bold {
  font-weight: 700;
}

.t-center {
  text-align: center;
}

.t-fontsize-sm {
  font-size: 0.5em;
}

.t-fontsize-lg {
  font-size: 1.25em;
}

.philosophy-h2 {
  display: inline-block;
  position: relative;
  padding: 0 2.5em;
  text-align: center;
  margin-top: 0 !important;
}

.philosophy-h2::before,
.philosophy-h2::after {
  content: '';
  display: inline-block;
  position: absolute;
  top: 50%;
  width: 45px;
  height: 3px;
  background-color: var(--brand-red, #b32020);
}

.philosophy-h2::before {
  left: 0;
}

.philosophy-h2::after {
  right: 0;
}

.marker {
  background: linear-gradient(transparent 70%, rgba(179, 32, 32, 0.2) 70%);
  font-weight: 600;
}
.marker2 {
background: linear-gradient(transparent 74%, #c34229 74%);
}


.box-015 {
    position: relative;
    margin: 1em auto;
    padding: 1em 1.5em 1em 1.5em;
    border-radius: 3px;
    box-shadow: 0 2px 3px rgb(0 0 0 / 20%);
    background-color: rgba(176, 22, 27, .06);;
    color: #111111;
	text-align: justify;
}

.box-015::before,
.box-015::after {
    position: absolute;
    content: '';
}

.box-015::before {
    top: -15px;
    right: 10px;
    height: 50px;
    width: 15px;
    border: 3px solid #999;
    border-radius: 10px;
    box-shadow: 1px 1px 2px rgb(0 0 0 / 30%);
    transform: rotate(10deg);
}

.box-015::after {
    top: 0;
    width: 10px;
    right: 20px;
    border: solid 5px rgba(176, 22, 27, .06);;
}
.box-100vw{
	margin:  0 calc(50% - 50vw)
}

.mt_80{
	margin-top: 80px!important;
}
.mb_40{
	margin-bottom: 40px!important;
}

.mb_80{
	margin-bottom: 80px!important;
}
.mb_-80{
	margin-bottom: -80px!important;
}
/* ここまで */
.pc {
  display: none;
}

.sp {
  display: block;
}

.wrap.pc {
  display: none;
}

.wrap.sp {
  display: block;
}

@media (min-width:1024px) {
  .wrap.pc {
    display: block;
    max-width: 1440px;
    margin: 0 auto;
    padding: 90px 120px;
  }

  .wrap.sp {
    display: none;
  }

  .pc {
    display: block;
  }

  .sp {
    display: none;
  }
	.mt_pc80{
		margin-top: 80px!important;
	}
	.mb_pc40{
		margin-bottom: 40px!important;
	}
	.mb_pc80{
		margin-bottom: 80px!important;
	}
}

/* =========================
   HERO
   ========================= */
.p-hero {
  position: relative;
  min-height: 100svh;
  color: var(--text);
  background: var(--brand-red);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.p-hero__stage {
  position: relative;
  min-height: 100svh;
}

/* Header */
.p-hero__header {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 30;
  height: var(--header-total-h);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: var(--header-pad-top) var(--pad-x) 0;
  pointer-events: none;
}

.p-hero__logo,
.p-hero__menuBtn {
  pointer-events: auto;
}

.p-hero__logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #fff;
  text-decoration: none;
  user-select: none;
}

.p-hero__logo img {
  height: 38px;
  width: auto;
  display: block;
  top: 18px;
  position: absolute;
}

/* Menu button */
.p-hero__menuBtn {
  align-self: flex-start;
  min-width: 44px;
  min-height: 44px;
  width: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  user-select: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 4px;
  line-height: 1;
  font: inherit;
  transform: translateX(6px);
  margin-left: auto;
}

/* 3本線の右揃え基準として残す（必要ならHTML側で使用） */
.p-hero__menuLines {
  display: block;
  width: 25px;
}

/* 3本線の切り抜き枠（線だけ見せる） */
.p-hero__menuIcon {
  width: 32px;
  height: 32px;
  overflow: hidden;
  display: block;
}

/* MENUラベル（最終値） */
.p-hero__menuLabel {
  display: block;
  width: 44px;
  text-align: center;
  font-size: 11px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: .02em;
  margin-top: -10px;
  transform: translateY(-1px);
}

/* SVG morph icon（線だけ見せるため内側余白をオフセット） */
.p-gmenuBtn__icon {
  display: block;
  width: 62px;
  height: 56px;
  margin-left: -17px;
  margin-top: -12px;
  transform: scaleY(.78);
  transform-origin: 50% 0%;
}

.p-gmenuBtn__line {
  fill: none;
  stroke: #fff;
  stroke-width: 3.6;
  transition: stroke-dasharray 600ms cubic-bezier(0.4, 0, 0.2, 1), stroke-dashoffset 600ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* 三本線（初期） */
.p-gmenuBtn__line:nth-child(1) {
  stroke-dasharray: 60 207;
}

.p-gmenuBtn__line:nth-child(2) {
  stroke-dasharray: 60 60;
}

.p-gmenuBtn__line:nth-child(3) {
  stroke-dasharray: 60 207;
}

/* 三本線 → ×（btnに is-active 付与） */
.p-hero__menuBtn.is-active .p-gmenuBtn__line:nth-child(1),
.p-gmenuBtn.is-active .p-gmenuBtn__line:nth-child(1) {
  stroke-dasharray: 90 207;
  stroke-dashoffset: -134;
}

.p-hero__menuBtn.is-active .p-gmenuBtn__line:nth-child(2),
.p-gmenuBtn.is-active .p-gmenuBtn__line:nth-child(2) {
  stroke-dasharray: 1 60;
  stroke-dashoffset: -30;
}

.p-hero__menuBtn.is-active .p-gmenuBtn__line:nth-child(3),
.p-gmenuBtn.is-active .p-gmenuBtn__line:nth-child(3) {
  stroke-dasharray: 90 207;
  stroke-dashoffset: -134;
}

/* Global Menu OPEN中：ヘッダーのMENUボタン(=同一要素)を固定配置して座標を揃える */
.p-hero__menuBtn.is-inGmenu {
  position: fixed;
  top: var(--header-pad-top, 20px);
  right: var(--pad-x);
  z-index: 9100;
  width: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  border: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 4px;
  transform: translateX(6px) !important;
  background: transparent;
  border-radius: 0;
}

/* メニュー内では「MENU」文字は出さない（×だけ） */
.p-hero__menuBtn.is-inGmenu .p-hero__menuLabel {
  display: none;
}

/* Slider */
.p-hero__slider {
  position: absolute;
  inset: 0;
  z-index: 10;
}

.p-hero__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1200ms ease;
  background: transparent;
}

.p-hero__slide.is-active {
  opacity: 1;
}

/* Catch */
.p-hero__catch {
  position: relative;
  z-index: 20;
  padding-top: calc(var(--header-total-h) + 0px);
  padding-left: var(--pad-x);
  padding-right: var(--pad-x);
  margin: 0;
}

.p-hero__catch h1 {
  margin: 0;
  font-weight: 700;
  line-height: 1.75;
  letter-spacing: .01em;
  font-size: clamp(26px, 8vw, 48px);
  text-shadow: 0 10px 22px rgba(0, 0, 0, .22);
}

/* Visual */
.p-hero__visual {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(var(--header-total-h) + var(--gap-header-to-visual));
  bottom: var(--scroll-area-h);
  padding-bottom: 14px;
}

.p-hero__visualInner {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: var(--visual-left-gap);
  overflow: hidden;
  background: var(--brand-red);
}

.p-hero__visualInner::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, .12), rgba(0, 0, 0, 0) 35%);
  pointer-events: none;
  z-index: 2;
}

.p-hero__visualImg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.08);
  z-index: 1;
}

.p-hero__visualImg.is-kenburns {
  animation: heroKenburns var(--kenburns-dur) linear forwards;

}

@keyframes heroKenburns {
  0% {
    transform: scale(1.16) translate(2.2%, -1.4%);
    opacity: 1;
  }

  100% {
    transform: scale(1.08) translate(0, 0);
    opacity: 1;
  }
}

/* Catch line in */
.p-hero__catch h1 span {
  display: block;
  opacity: 1;
  transform: none;
}

.p-hero__slide.is-catchIn .p-hero__catch h1 span {
  opacity: 0;
  transform: translateX(-16px);
  animation: heroCatchLineIn 1100ms cubic-bezier(.2, .7, .2, 1) forwards;
}

.p-hero__slide.is-catchIn .p-hero__catch h1 span:nth-child(1) {
  animation-delay: 600ms;
}

.p-hero__slide.is-catchIn .p-hero__catch h1 span:nth-child(2) {
  animation-delay: 1200ms;
}

.p-hero__slide.is-catchIn .p-hero__catch h1 span:nth-child(3) {
  animation-delay: 1800ms;
}

.p-hero__slide.is-catchIn .p-hero__catch h1 span:nth-child(4) {
  animation-delay: 2400ms;
}

.p-hero__slide.is-catchIn .p-hero__catch h1 span:nth-child(5) {
  animation-delay: 3000ms;
}

@keyframes heroCatchLineIn {
  from {
    opacity: 0;
    transform: translateX(-16px);
  }

  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-hero__slide {
    transition: none;
  }

  .p-hero__visualImg.is-kenburns {
    animation: none;
  }

  .p-hero__slide.is-catchIn .p-hero__catch h1 span {
    animation: none !important;
    opacity: 1;
    transform: none;
  }
}

/* Topics */
.p-hero__topic {
  position: absolute;
  left: 0;
  right: auto;
  bottom: calc(var(--scroll-area-h) + 50px);
  z-index: 25;
  display: flex;
  gap: 14px;
  align-items: center;
  background: #fff;
  color: #111;
  text-decoration: none;
  box-shadow: 0 6px 10px rgba(0, 0, 0, .18);
  border-radius: 0;
  padding: 12px 14px;
  max-width: calc(100% - (var(--pad-x) * 2));
}

.p-hero__topicThumb {
  flex: 0 0 86px;
  height: 64px;
  background: #ddd;
  overflow: hidden;
}

.p-hero__topicThumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.p-hero__topicBody {
  min-width: 0;
  flex: 1 1 auto;
}

.p-hero__topicMeta {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 6px;
  font-size: clamp(12px, 2.8vw, 14px);
}

.p-hero__topicTag {
  background: var(--brand-red);
  color: #fff;
  font-weight: 700;
  padding: 4px 10px;
  font-size: 12px;
  line-height: 1;
  white-space: nowrap;
}

.p-hero__topicDate {
  font-weight: 700;
  color: #222;
  white-space: nowrap;
}

.p-hero__topicTitle {
  margin: 0;
  font-weight: 500;
  font-size: clamp(13px, 3.2vw, 15px);
  line-height: 1.45;
  color: #222;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Scroll Area */
.p-hero__scrollArea {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: var(--scroll-area-h);
  background: var(--brand-red);
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding: 30px 0 0;
  overflow: hidden;
  z-index: 40;
}

.p-hero__scroll {
  position: relative;
  writing-mode: vertical-rl;
  text-orientation: mixed;
  color: #fff;
  font-weight: 700;
  letter-spacing: .08em;
  font-size: 12px;
  line-height: 1;
  --arrow-line-h: 42px;
  --arrow-gap: 10px;
  --arrow-stroke: 2px;
}

.p-hero__scroll::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  margin: auto;
  top: calc(100% + var(--arrow-gap));
  height: var(--arrow-line-h);
  width: var(--arrow-stroke);
  background-color: rgba(255, 255, 255, .95);
  animation: heroScrollLine 2s infinite;
}

@keyframes heroScrollLine {
  0% {
    transform: scale(1, 0);
    transform-origin: 0 0;
  }

  50% {
    transform: scale(1, 1);
    transform-origin: 0 0;
  }

  51% {
    transform: scale(1, 1);
    transform-origin: 0 100%;
  }

  100% {
    transform: scale(1, 0);
    transform-origin: 0 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-hero__scroll::before {
    animation: none;
  }
}


/* Background unify */
.p-hero,
.p-hero__stage,
.p-hero__slider,
.p-hero__scrollArea {
  background: var(--brand-red) !important;
}

/* =========================
   HERO: PC Global Nav
   ========================= */
.p-heroNav {
  display: none;
  pointer-events: auto;
}

.p-heroNav__list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  align-items: center;
  gap: 18px;
  min-width: 0;
}

.p-heroNav__link {
  display: inline-flex;
  align-items: center;
  padding: 10px 2px;
  text-decoration: none;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: .02em;
  white-space: nowrap;
  color: #821c1d;
}

.p-heroNav__sns {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  align-items: center;
  gap: 15px;
}

.p-heroNav__snsLink {
  width: 30px;
  height: 30px;
  border-radius: 5px;
  background: #821c1d;
  display: grid;
  place-items: center;
  text-decoration: none;
}

.p-heroNav__snsIcon {
  width: 18px;
  height: 18px;
  display: block;
}

/* PC切替: 1024px以上でPCナビ表示 */
@media (min-width: 1024px) {
  .p-hero__menuBtn {
    display: none;
  }

  .p-heroNav {
    display: flex;
    align-items: center;
    gap: 18px;
    background: rgba(255, 255, 255, .86);
    border-radius: 999px;
    padding: 12px 18px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .12);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    height: 50px;
  }
}

/* =========================
   Section base（共通）
   ========================= */
.c-section {
  color: #111;
}

.c-section--white {
  background: #fff;
  color: #111;
  padding-top: 60px;
}

.c-section--white .c-secInner {
  /*padding: 0;*/
}

.c-section--soft {
  width: 100vw;
  margin: 0 calc(50% - 50vw);
  background: linear-gradient(180deg, #ffffff 0%, #f4f4f4 25%, #eee4e1 100%);
}

.c-section--soft-r {
  background: linear-gradient(250deg, #eee4e1 0%, #f4f4f4 75%, #ffffff 100%);
}

.c-secInner {
 padding: 0 var(--pad-x);
}

.c-secInner_vw {
  max-width: 1440px;
  margin: auto;
  padding-inline: clamp(20px, 5vw, 80px);
}

.c-secHead__title {
  margin: 0;
  font-weight: 700;
  font-size: var(--sec-title-fz);
  letter-spacing: .02em;
}

.c-secHead__em {
  color: var(--brand-red);
}

.c-secHead__sub {
  display: flex;
  align-items: center;
  gap: 14px;
}

.c-secHead__subLine {
  width: 25px;
  height: 2px;
  background: var(--brand-red);
  flex: 0 0 auto;
}

.c-secHead__subText {
  font-weight: 700;
  font-size: var(--sec-sub-fz);
  letter-spacing: .02em;
  color: #111;
  margin: 0.5em 0;
}

.c-secHead__subText--brand {
  color: var(--brand-red);
}

.c-secHead__subEm {
  color: var(--brand-red);
}

.c-secText {
  margin-top: var(--space-md);
  font-size: 18px;
  line-height: 2.05;
  font-weight: 500;
  color: #222;
}

.c-secText p {
  margin: 0 0 22px;
}

.c-secText p:last-child {
  margin-bottom: 0;
}

.c-secText--centered {
  max-width: 560px;
  margin-left: auto;
  margin-right: auto;
}

@media (min-width: 1024px) {
  .c-secInner {
    padding: 0 var(--pad-x);
  }

  .c-secInner_vw {
    padding-inline: clamp(20px, 5vw, 80px);
  }

  .c-section--white {
    padding-top: var(--space-xl);
  }
}

/* Edge photo */
.c-edgePhoto {
  margin: var(--space-lg) 0 0;
  overflow: hidden;
  background: #eee;
  --edge-gap: var(--ph-photo-left);
}

.c-edgePhoto--right {
  margin-left: var(--edge-gap);
  width: calc(100% - var(--edge-gap));
}

.c-edgePhoto--left {
  margin-right: var(--edge-gap);
  width: calc(100% - var(--edge-gap));
}

.c-edgePhoto img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: cover;
}

/* View More button */
.c-pillBtn {
  --btn: #c6534f;
  margin: var(--space-md) auto 0;
  width: min(360px, 100%);
  height: 50px;
  border-radius: 999px;
  background: var(--btn);
  color: #fff;
  text-decoration: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  position: relative;
  box-shadow: 0 10px 20px rgba(0, 0, 0, .08);
  max-width: 60vw;
}
.c-pillBtn:hover {
  filter: brightness(1.12); /* 少しだけ明るく */
  transition: filter .5s ease; /* 変化を滑らかに */
}

.c-pillBtn:focus-visible{
  outline: 2px solid rgba(198, 83, 79, .35);
  outline-offset: 3px;
  filter: brightness(1.06);
}

.c-pillBtn__label {
  font-weight: 700;
  letter-spacing: .02em;
}

.c-pillBtn__icon {
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: #fff;
  position: relative;
  flex: 0 0 auto;
}

.c-pillBtn__icon::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-40%, -50%);
  width: 0;
  height: 0;
  border-left: 7px solid var(--btn);
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
}

.c-pillBtn--light {
  background: #fff;
  color: var(--btn);
}

.c-pillBtn--light .c-pillBtn__label {
  color: var(--btn);
}

.c-pillBtn--light .c-pillBtn__icon {
  background: var(--btn);
}

.c-pillBtn--light .c-pillBtn__icon::before {
  border-left-color: #fff;
}

.c-pillBtn--iconEnd {
  justify-content: center;
  padding: 0 58px;
}

.c-pillBtn--iconEnd .c-pillBtn__icon {
  position: absolute;
  right: 18px;
  top: 51%;
  transform: translateY(-50%);
}

/* Policy + Promo wrapper（PCで2カラム化。SPは従来通り縦積み） */
.p-policyPromo {
  background: #fff;
}

/* Policy */
.p-policy {
  padding: var(--space-lg) 0 var(--space-md);
}

.p-policy__photos {
  position: relative;
  margin-top: var(--space-lg);
  padding-bottom: 150px;
}

.p-policy__photo {
  margin: 0;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: transparent;
  border: 0;
  padding: 0;
}

.p-policy__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.p-policy__photo--teacher {
  width: 66.666%;
  max-width: 600px;
  margin-left: auto;
}

.p-policy__photo--student {
  width: 46.666%;
  max-width: 400px;
  position: absolute;
  left: var(--pad-x);
  bottom: 0;
  transform: translateY(-25%);
}

/* Promo */
.p-promo {
  background: #fff;
  color: #111;
  padding: var(--space-md) var(--pad-x) var(--space-xl);
}

.p-promo__title {
  margin: 0 0 var(--space-md);
  text-align: center;
  font-weight: 700;
  font-size: clamp(18px, 4.0vw, 28px);
  letter-spacing: .02em;
  position: relative;
  z-index: 0;
}

.p-promo__title::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -60%);
  width: 130px;
  height: 54px;
  background: url("/img/logo_mark_bg.png") no-repeat center / contain;
  opacity: .14;
  z-index: -1;
  pointer-events: none;
}

.p-promo__video {
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 14px 30px rgba(0, 0, 0, .12);
}

.p-promo__video video {
  width: 100%;
  height: auto;
  display: block;
}

/* =========================
   PC（カンプ寄せ）
   ========================= */
@media (min-width: 1024px) {
  .p-policyPromo {
    max-width: 1440px;
    margin: 0 auto;
    padding: 90px 80px 110px;
    display: grid;
    grid-template-columns: minmax(400px, 1fr) minmax(400px, 1fr);
    column-gap: 100px;
    align-items: start;
  }

  /* 右：Policy（上） */
  .p-policyPromo #policy {
    grid-column: 2;
    grid-row: 1;
  }

  .p-policyPromo #policy.p-policy {
    padding: 0;
    background: transparent;
  }

  .p-policyPromo #policy .c-secInner {
    padding: 0;
  }

  /* 左：Photos（縦に大きく見せる） */
  .p-policyPromo .p-policy__photos {
    grid-column: 1;
    grid-row: 1 / span 2;
    margin-top: 0;
    padding-bottom: 0;
    min-height: 860px;
  }

  .p-policy__photo {
    background: #fff;
    box-shadow: 0 14px 30px rgba(0, 0, 0, .12);
  }

  /* 講師写真：縦長＋少し傾ける（カンプの印象） */
  .p-policy__photo--teacher {
    width: min(560px, 100%);
    max-width: none;
    margin-left: 0;
    aspect-ratio: 4 / 5;
    transform: rotate(-2deg);
    transform-origin: 50% 50%;
  }

  /* 生徒写真：下に重ねる */
  .p-policy__photo--student {
    width: min(440px, 78%);
    max-width: none;
    aspect-ratio: 1 / 1;
    left: 170px;
    bottom: -10px;
    transform: none;
    box-shadow: 0 18px 36px rgba(0, 0, 0, .16);
  }

  /* 右：Promo（下） */
  .p-policyPromo #promo {
    grid-column: 2;
    grid-row: 2;
  }

  .p-policyPromo #promo.p-promo {
    padding: 60px 0 0;
    background: transparent;
  }

  .p-promo__title {
    text-align: left;
    margin: 0 0 22px;
  }

  .p-promo__title::after {
    display: none;
  }

  .p-promo__video {
    border-radius: 14px;
  }

  /* 「クリックで全画面」誘導（カーソルだけ） */
  .js-promoFs {
    cursor: pointer;
  }

.c-pillBtn {
  height: 60px;
}
	
	
	
}

/* Philosophy / Feature */
.p-philosophy {
  padding: var(--space-lg) 0 var(--space-md);
}

.p-feature {
  padding: var(--space-lg) 0 var(--space-lg);
}

/* Parallax */
.c-parallax {
  position: relative;
  height: clamp(420px, 112vw, 720px);
  overflow: hidden;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  color: #fff;
  --parallax-focus-x: 18%;
  z-index: 0;
}

.c-parallax__media {
  position: absolute;
  inset: 0;
  overflow: hidden;
  z-index: 1;
}

.c-parallax__img {
  position: absolute;
  left: 0;
  top: var(--parallax-img-top);
  width: 100%;
  height: var(--parallax-img-h);
  object-fit: cover;
  object-position: var(--parallax-focus-x) 50%;
  transform: translate3d(0, var(--parallax-y, 0px), 0);
  will-change: transform;
}

.c-parallax::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(86, 86, 86, .55);
  z-index: 2;
}

.c-parallax__inner {
  position: relative;
  z-index: 3;
  height: 100%;
  padding: 0 var(--pad-x);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
}

.c-parallax__quote {
  margin: 0;
  font-weight: 700;
  font-size: clamp(20px, 5.5vw, 36px);
  line-height: 1.65;
  letter-spacing: .02em;
  text-shadow: 0 10px 20px rgba(0, 0, 0, .22);
}

.c-parallax__text {
  margin: 26px 0 0;
  font-weight: 700;
  font-size: clamp(18px, 5.2vw, 32px);
  line-height: 1.65;
  letter-spacing: .02em;
  text-shadow: 0 10px 20px rgba(0, 0, 0, .22);
}

.c-parallax__text span {
  display: block;
}

.c-parallax--center {
  --parallax-focus-x: 50%;
}

@media (prefers-reduced-motion: reduce) {
  .c-parallax__img {
    will-change: auto;
  }
}

/* Parallax sign */
.c-parallax__sign {
  position: absolute;
  right: var(--pad-x);
  bottom: clamp(18px, 5vw, 36px);
  display: flex;
  align-items: center;
  text-align: right;
  color: #fff;
  z-index: 4;
  text-shadow: 0 10px 20px rgba(0, 0, 0, .22);
}

.c-parallax__signIcon {
  width: clamp(36px, 22vw, 72px);
  height: auto;
  display: block;
}

.c-parallax__signText {
  display: flex;
  flex-direction: column;
  text-align: left;
}

.c-parallax__signRole {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .03em;
  opacity: .95;
}

.c-parallax__signName {
  font-size: clamp(18px, 5.4vw, 28px);
  font-weight: 700;
  letter-spacing: .04em;
}

/* Voices */
.p-voices {
  padding: var(--space-lg) 0 var(--space-lg);
  background: linear-gradient(180deg, #ffffff 0%, #f4f4f4 25%, #eee4e1 100%);
  color: #111;
}

.p-voices__carousel {
  position: relative;
  overflow: hidden;
  padding: 50px 0;
}

.p-voices__bands {
  position: relative;
  width: 160%;
  left: 50%;
  transform: translateX(-50%) rotate(var(--voices-tilt));
  transform-origin: center;
}

.p-voices__lane {
  overflow: visible;
  padding: 0;
}

.p-voices__lane--top {
  margin-top: 10px;
}

.p-voices__lane--bottom {
  margin-top: 18px;
}

.p-voices__track {
  display: flex;
  gap: 16px;
  width: max-content;
  align-items: center;
  padding: 0 var(--pad-x);
  animation: voicesScroll 28s linear infinite;
  will-change: transform;
}

.p-voices__track--reverse {
  animation-direction: reverse;
  opacity: .95;
}

.p-voices__card {
  --w: clamp(142px, 42vw, 240px);
  width: var(--w);
  aspect-ratio: 4 / 3;
  position: relative;
  display: block;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 8px 18px rgba(0, 0, 0, .14);
  flex: 0 0 auto;
  text-decoration: none;
  color: inherit;
}

.p-voices__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.p-voices__badge {
  position: absolute;
  left: -6px;
  right: -6px;
  bottom: 0;
  height: 30px;
  background: rgba(179, 41, 36, .65);
  display: flex;
  align-items: center;
  padding: 0 12px;
  color: #fff;
  font-weight: 700;
  letter-spacing: .01em;
}

.p-voices__badgeText {
  font-size: 10px;
  line-height: 1;
  white-space: nowrap;
}

.p-voices__cta {
  margin-top: var(--space-lg);
  display: flex;
  justify-content: flex-end;
}

.p-voices__btn {
  margin: 0;
  max-width: 70vw;
}

@keyframes voicesScroll {
  0% {
    transform: translate3d(0, 0, 0);
  }

  100% {
    transform: translate3d(-50%, 0, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-voices__track {
    animation: none !important;
  }

  .p-voices__lane {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
  }

  .p-voices__card {
    scroll-snap-align: start;
  }

  .p-voices__bands {
    width: 100%;
    left: 0;
    transform: none;
  }
}

/* Success */
.p-success {
  padding: var(--space-lg) 0 var(--space-xl);
  background: #fff;
}

.p-success__success {
  position: relative;
  background: transparent;
  overflow: visible;
}

.p-success__success::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 20px;
  background: #c6534f;
  z-index: 0;
}

.p-success__successMedia {
  position: relative;
  z-index: 1;
  margin-top: 0;
  margin-right: var(--pad-x);
  height: clamp(260px, 78vw, 520px);
  overflow: hidden;
}

.p-success__successMedia::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(86, 86, 86, .25);
  pointer-events: none;
}

.p-success__successImg {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.p-success__successPanel {
  position: absolute;
  left: var(--pad-x);
  top: 50%;
  transform: translateY(-50%);
  width: min(420px, calc(100% - (var(--pad-x) * 2)));
  color: #fff;
  z-index: 2;
}

.p-success__head .c-secHead__title,
.p-success__head .c-secHead__subText,
.p-success__head .c-secHead__subEm {
  color: #fff;
}

.p-success__head .c-secHead__subLine {
  background: #fff;
}

.p-success__successText {
  margin: 16px 0 0;
  font-size: 14px;
  line-height: 1.9;
  font-weight: 500;
  text-shadow: 0 10px 22px rgba(0, 0, 0, .22);
}

.p-success__successBtn {
  margin: 22px 0 0;
  width: min(320px, 100%);
  max-width: 70vw;
}

.p-success__q {
  position: relative;
  margin-top: 0;
}

.p-success__sideLabel {
  position: absolute;
  top: 30%;
  transform: translateY(-50%);
  writing-mode: vertical-rl;
  text-orientation: mixed;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  color: #c6534f;
  opacity: .95;
  pointer-events: none;
  margin: 0 3px;
}

.p-success__qCard {
  position: relative;
  background: #c6534f;
  margin-left: var(--pad-x);
  padding: 62px var(--pad-x) 48px;
  color: #fff;
}

.p-success__qThumb {
  position: absolute;
  right: 0;
  top: -20px;
  aspect-ratio: 4 / 3;
  margin: 0;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 10px 22px rgba(0, 0, 0, .18);
  z-index: 2;
  width: 46.6vw;
}

.p-success__qThumbImg {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.p-success__qBody {
  position: relative;
  z-index: 1;
}

.p-success__qText {
  margin: 18px 0 0;
  font-size: 14px;
  line-height: 1.75;
  font-weight: 500;
}

.p-success__qBtns {
  margin-top: 26px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}

.p-success__qBtn {
  margin: 0;
  width: min(320px, 100%);
  max-width: 70vw;
  height: 45px;
  flex: 0 0 auto;
}

.p-success__qBtn .c-pillBtn__label {
  font-size: 12px;
  letter-spacing: .01em;
  white-space: nowrap;
}

/* PC */
@media (min-width: 1024px) {
  .p-success {
    padding: var(--space-xl) 0 var(--space-xl);
  }

  .p-success__success {
    display: flex;
    align-items: stretch;
    padding: 0 var(--pad-x);
  }

  .p-success__success::before {
    content: none;
  }

  .p-success__successMedia {
    margin-right: 0;
    flex: 0 0 62%;
    height: 460px;
  }

  .p-success__successPanel {
    position: relative;
    top: auto;
    left: auto;
    transform: none;
    width: auto;
    flex: 1 1 auto;
    background: #c6534f;
    padding: 56px 52px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }

  .p-success__successText {
    text-shadow: none;
  }

  .p-success__q {
    margin-top: -120px;
    padding: 0 var(--pad-x) var(--space-xl);
  }

  .p-success__qCard {
    margin: 0;
    margin-left: 92px;
    padding: 50px 72px 70px;
    width: calc(100% - 92px);
  }

  .p-success__qThumb {
    top: -20px;
    right: 70px;
    width: min(460px, 46%);
  }

  .p-success__qBtns {
    flex-direction: row;
    justify-content: center;
    gap: 22px;
  }

  .p-success__qBtn {
    flex: 0 0 320px;
    width: 320px;
    max-width: none;
  }

  .p-success__qBtn .c-pillBtn__label {
    font-size: 16px;
  }
}

/* Blog */
.p-blog {
  padding: var(--space-lg) 0 var(--space-lg);
}

.p-blog__headRow {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.p-teachers__head{
	display: block;
}

.p-blog__nav {
  display: flex;
  gap: 14px;
  padding-top: 6px;
}


.c-secText--teachers{
	max-width: 100%!important;
	
}
.p-blog__navBtn {
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 2px solid var(--brand-red);
  background: transparent;
  color: var(--brand-red);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  appearance: none;
  padding: 0;
}

.p-blog__navBtn:disabled {
  opacity: .35;
  cursor: default;
}

.p-blog__navIcon {
  width: 22px;
  height: 22px;
}

.p-blog__carousel {
  margin-top: var(--space-md);
}

.p-blog__viewport {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
  scroll-padding-left: var(--pad-x);
  scrollbar-width: none;
}

.p-blog__viewport::-webkit-scrollbar {
  display: none;
}

.p-blog__track {
  --blog-gap: clamp(16px, 5.333vw, 40px);
  --blog-card-w: clamp(240px, 66.666vw, 500px);
  display: flex;
  gap: var(--blog-gap);
  width: max-content;
  padding: 0 var(--pad-x);
}

.p-blog__item {
  flex: 0 0 auto;
  width: var(--blog-card-w);
  scroll-snap-align: start;
}

.p-blog__link {
  display: block;
  text-decoration: none;
  color: inherit;
}

.p-blog__media {
  margin: 0;
  overflow: hidden;
  background: #e8e8e8;
  aspect-ratio: 500 / 370;
}

.p-blog__img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.p-blog__meta {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 14px;
}

.p-blog__cat {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 84px;
  height: 28px;
  padding: 0 14px;
  background: var(--brand-red);
  color: #fff;
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .01em;
}

.p-blog__date {
  font-weight: 700;
  color: #222;
  font-size: 14px;
  letter-spacing: .02em;
}

.p-blog__title {
  margin: 12px 0 0;
  font-weight: 500;
  font-size: 16px;
  line-height: 1.65;
  letter-spacing: .01em;
  color: #111;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.p-blog__cta {
  margin-top: var(--space-lg);
  display: flex;
  justify-content: center;
}

.p-blog__btn {
  margin: 0;
  width: min(360px, 100%);
  max-width: 70vw;
}

@media (min-width: 1024px) {
  .p-blog__track {
    --blog-card-w: 500px;
    padding: 0;
  }
}

/* News */
.p-news {
  padding: var(--space-lg) 0 var(--space-xl);
  background: #fff;
  color: #111;
}

.p-news__list {
  list-style: none;
  padding: 0;
  margin: var(--space-md) 0 0;
  border-top: 1px solid rgba(0, 0, 0, .10);
}

.p-news__link {
  display: grid;
  grid-template-columns: auto 1fr 46px;
  grid-template-rows: auto auto;
  column-gap: 14px;
  row-gap: 10px;
  padding: 18px 0;
  text-decoration: none;
  color: inherit;
  border-bottom: 1px solid rgba(0, 0, 0, .10);
}

.p-news__meta {
  grid-column: 1 / 3;
  grid-row: 1;
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}

.p-news__date {
  font-size: 13px;
  font-weight: 700;
  color: #222;
  letter-spacing: .02em;
  white-space: nowrap;
}

.p-news__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 22px;
  padding: 0 12px;
  background: var(--brand-red);
  color: #fff;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: .02em;
  white-space: nowrap;
}

.p-news__title {
  grid-column: 1 / 3;
  grid-row: 2;
  margin: 0;
  min-width: 0;
  font-size: 14px;
}

.p-news__arrow {
  grid-column: 3;
  grid-row: 2;
  justify-self: end;
  align-self: center;
  width: 38px;
  height: 10px;
  display: block;
  background: url("/img/news__arrow.svg") no-repeat center / contain;
}

.p-news__arrow--sm {
  width: 38px;
  height: 10px;
}

.p-news__moreWrap {
  display: flex;
  justify-content: flex-end;
  margin-top: 40px;
}

.p-news__more {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
  color: #111;
  font-weight: 500;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(0, 0, 0, .55);
  font-size: 14px;
}

.p-news__moreText {
  white-space: nowrap;
}

/* Access */
.p-access {
  padding: var(--space-lg) 0 var(--space-xl);
  background: #fff;
  color: #111;
}

.p-access__head {
  text-align: center;
}

.p-access__sub {
  margin-top: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
}

.p-access__subLine {
  width: 64px;
  height: 2px;
  background: var(--brand-red);
  flex: 0 0 auto;
}

.p-access__sub .c-secHead__subText {
  color: #111;
  font-weight: 700;
}

.p-access__tabs {
  margin-top: var(--space-md);
  display: flex;
  border-bottom: 1px solid rgba(0, 0, 0, .18);
}

.p-access__tab {
  appearance: none;
  border: 0;
  background: transparent;
  cursor: pointer;
  flex: 1 1 50%;
  padding: 18px 10px;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: .02em;
  color: rgba(0, 0, 0, .28);
  position: relative;
}

.p-access__tab::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -1px;
  transform: translateX(-50%);
  width: 72%;
  height: 2px;
  background: var(--brand-red);
  opacity: 0;
}

.p-access__tab.is-active {
  color: #111;
}

.p-access__tab.is-active::after {
  opacity: 1;
}

.p-access__panel {
  padding-top: var(--space-md);
}

.p-access__info {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 18px;
}

.p-access__row {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}

.p-access__ico {
  width: 15px;
  height: 15px;
  border-radius: 6px;
  background: var(--brand-red);
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  margin-top: 2px;
}

.p-access__ico img {
  width: 20px;
  height: 20px;
  display: block;
}

.p-access__text {
  margin: 0;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.55;
  color: #111;
}

.p-access__mapLink {
  font-size: 12px;
  font-weight: 500;
  color: #0b57d0;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.p-access__map {
  margin-top: 22px;
  width: 100%;
  aspect-ratio: 16 / 11;
  overflow: hidden;
  background: #e9e9e9;
}

.p-access__map iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* 1024px以上でPCレイアウトへ（SP/タブレットは縦積みのまま） */
@media (min-width: 1024px) {
  .p-access__subLine {
    width: 84px;
  }

  /* タブUIはPCで非表示になるため、ここでのfont-size調整等はPCレイアウト側に吸収されます */
  .p-access__tab {
    font-size: 18px;
    padding: 20px 10px;
  }

  .p-access__panel {
    padding-top: 30px;
  }

  .p-access__map {
    aspect-ratio: 16 / 9;
  }
}

/* =========================
   Global Menu
   ========================= */
.p-gmenu {
  position: fixed;
  inset: 0;
  background: var(--gmenu-bg);
  z-index: 9000;
  opacity: 0;
  pointer-events: none;
  transition: opacity 220ms ease;
}

.p-gmenu.is-open {
  opacity: 1;
  pointer-events: auto;
}

/* close中は操作だけ止める（見た目はそのまま） */
.p-gmenu.is-closing {
  pointer-events: none;
}

/* ロゴ拡大演出（※残す前提：後で削除するならこのブロックごと消せます） */
.p-gmenu__reveal {
  position: fixed;
  left: var(--gmenu-origin-x);
  top: var(--gmenu-origin-y);
  width: 92px;
  height: 92px;
  transform: translate(-50%, -50%) scale(0.05);
  opacity: 0;
  pointer-events: none;
  z-index: 901;
}

.p-gmenu__revealImg {
  width: 100%;
  height: 100%;
  display: block;
}

.p-gmenu.is-open .p-gmenu__reveal {
  opacity: 1;
  animation: gmenuLogoWipe 720ms cubic-bezier(.2, .7, .2, 1) both;
}

@keyframes gmenuLogoWipe {
  0% {
    transform: translate(-50%, -50%) scale(0.06);
    opacity: 1;
  }

  70% {
    transform: translate(-50%, -50%) scale(28);
    opacity: 1;
  }

  100% {
    transform: translate(-50%, -50%) scale(28);
    opacity: 0;
  }
}

/* 中身 */
.p-gmenu__wrap {
  height: 100%;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  padding: 22px var(--gmenu-pad-x) 40px;
  position: relative;
}

/* Close（別Closeボタンは使わない方針：MENUボタン側で×化） */
.p-gmenu__close {
  display: none !important;
}

/* SNS */
.p-gmenu__sns {
    margin: 40px 0 20px;
    padding: 0;
    list-style: none;
    display: flex;
    justify-content: center;
    gap: 30px;
}

.p-gmenu__snsLink {
  width: 44px;
  height: 44px;
  border-radius: 6px;
  background: rgba(255, 255, 255, .14);
  display: grid;
  place-items: center;
  text-decoration: none;
}

.p-gmenu__snsIcon {
  width: 25px;
  height: 25px;
  display: block;
}

/* list */
.p-gmenu__list {
  margin: 0;
  padding: 0;
  list-style: none;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 260ms ease, transform 260ms ease;
  transition-delay: 120ms;
}

.p-gmenu.is-open .p-gmenu__list {
  opacity: 1;
  transform: translateY(0);
}

.p-gmenu__item + .p-gmenu__item {
  margin-top: 6px;
}

.p-gmenu__accBtn,
.p-gmenu__plainLink {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  height: 44px;
  padding: 0 2px;
  border: 0;
  border-bottom: 1px solid rgba(255, 255, 255, .55);
  background: transparent;
  color: #fff;
  text-decoration: none;
  cursor: pointer;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .02em;
}

.p-gmenu__plainLink {
  justify-content: flex-start;
}

.p-gmenu__accIcon {
  position: relative;
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
}

.p-gmenu__accIcon::before,
.p-gmenu__accIcon::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 14px;
  height: 2px;
  background: rgba(255, 255, 255, .95);
  border-radius: 999px;
  transform-origin: center;
  transition: transform 260ms cubic-bezier(.2, .7, .2, 1);
}

.p-gmenu__accIcon::before {
  transform: translate(-50%, -50%) rotate(0deg);
}

.p-gmenu__accIcon::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.p-gmenu__accBtn[aria-expanded="true"] .p-gmenu__accIcon::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.p-gmenu__accBtn[aria-expanded="true"] .p-gmenu__accIcon::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.p-gmenu__accPanel {
  overflow: hidden;
  height: 0;
  transition: height 320ms cubic-bezier(.2, .7, .2, 1);
}

.p-gmenu__accInner {
  padding: 10px 0 12px;
  border-bottom: 1px solid rgba(255, 255, 255, .55);
}

.p-gmenu__subLink {
    display: block;
    padding: 15px 2px;
    color: #fff;
    text-decoration: none;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: .02em;
    opacity: .95;
}

.p-gmenu__subLink:hover {
  opacity: 1;
}

/* scroll lock */
html.is-gmenuOpen,
html.is-gmenuOpen body {
  overflow: hidden;
}

/* reduce motion */
@media (prefers-reduced-motion: reduce) {

  .p-gmenu,
  .p-gmenu__list {
    transition: none !important;
  }

  .p-gmenu.is-open .p-gmenu__reveal {
    animation: none !important;
  }

  .p-gmenu__accPanel {
    transition: none !important;
  }

  .p-gmenu__accIcon::before,
  .p-gmenu__accIcon::after {
    transition: none !important;
  }
}

/* prediction */
.c-predictionPhoto {
  width: 100vw;
  margin: 0 calc(50% - 50vw);
}

.c-predictionPhoto img {
  width: 100vw;
}

/* =========================
   CTA
   ========================= */
.p-cta {
  --cta-bg: #26a69a;
  --cta-mail: #c34229;
  --cta-line: #2bac38;
  background: var(--cta-bg);
  color: #fff;
  padding: var(--space-lg) 0 var(--space-lg);
}

.p-cta__inner {
  padding: 0 var(--pad-x);
}

.p-cta__title {
  margin: 0 0 26px;
  text-align: center;
  font-weight: 700;
  letter-spacing: .04em;
  font-size: clamp(22px, 3.6vw, 44px);
  line-height: 1.2;
}

.p-cta__lead {
  display: block;
}

.p-cta__book {
  margin: 0;
}

.p-cta__book img {
    width: 60%;
    height: auto;
    display: block;
    margin: auto;
}

.p-cta__text {
    margin-top: 40px;
    font-size: 14px;
    font-weight: 500;
    line-height: 2.05;
    letter-spacing: .02em;
}

.p-cta__actions {
  margin-top: 28px;
  display: grid;
  gap: 18px;
}
.p-cta__btn {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 11px 28px;
  min-height: 57px;
  border-radius: 10px;
  color: #fff;
  text-decoration: none;
  font-weight: 700;
  letter-spacing: .02em;
  -webkit-tap-highlight-color: transparent;
}

.p-cta__btn:focus-visible {
  outline: 3px solid rgba(255, 255, 255, .75);
  outline-offset: 3px;
}

.p-cta__btn--mail {
  background: var(--cta-mail);
}

.p-cta__btn--line {
  background: var(--cta-line);
}

.p-menu-cta{
    margin: 30px 0; 
}
.p-menu-cta .p-cta__btn{
	padding: 10px 20px;
    min-height: 50px;	
}
.p-menu-cta .p-cta__btn--line{	
  background: #2bac38;
}
.p-menu-cta .p-cta__btn--mail{
  background: rgba(255, 255, 255, .14);
}
.p-menu-cta .p-cta__actions{
	margin: 50px 0 30px;
    gap: 25px;
}

.p-cta__btnLeft {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
  flex: 1 1 auto;
  justify-content: space-around;
}

.p-cta__btnIcon {
  display: grid;
  place-items: center;
  color: #fff;
  flex: 0 0 auto;
}

.p-cta__btnLabel {
  min-width: 0;
  font-size: clamp(18px, 2.9vw, 26px);
  line-height: 1.25;
  white-space: nowrap;
}

.p-cta__btnArrow {
  width: clamp(56px, 16vw, 86px);
  height: 9px;
  flex: 0 0 auto;
  background: url("/img/ico_cta_arrow.svg") no-repeat right center / contain;
}

.p-cta__hr {
  margin: 28px 0 22px;
  border: 0;
  height: 1px;
  background: rgba(255, 255, 255, .75);
}

.p-cta__tel {
  text-align: center;
}

.p-cta__telLink {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  color: #fff;
  text-decoration: none;
}

.p-cta__telNum {
  font-weight: 700;
  letter-spacing: .04em;
  font-size: clamp(34px, 9vw, 56px);
  line-height: 1;
}

.p-cta__telHours {
  margin: 12px 0 0;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .02em;
  opacity: .95;
}

.p-cta__ico {
  display: block;
  width: 30px;
  height: 30px;
}

.p-cta__ico--tel {
  width: 44px;
  height: 44px;
}

/* 小さすぎる端末は縦積みに */
@media (max-width: 360px) {
  .p-cta__lead {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 1024px) {
.p-cta__lead {
  display: grid;
  grid-template-columns: 42% 1fr;
  gap: 18px;
  align-items: start;
}
.p-cta__text {
    margin: 0;
    font-size: 11px;
    line-height: 2.05;
    letter-spacing: .02em;
}
.p-cta__book img {
  width: 100%;
  height: auto;
  display: block;
}
}


/* reduce motion */
@media (prefers-reduced-motion: reduce) {
  .p-cta__btn {
    scroll-behavior: auto;
  }
}

/* =========================
   Instructors
   ========================= */
/* Section */
.p-instructors {
  background: linear-gradient(to bottom, #eee4e1 0%, #f4f4f4 90%, #ffffff 100%);
  color: #111;
  padding: var(--space-lg) 0;
}

.p-instructors__inner {
  padding: 0 var(--pad-x);
}

/* Head */
.p-instructors__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.p-instructors__titles {
  min-width: 0;
}

.p-instructors__title {
  margin: 0;
  font-weight: 700;
  letter-spacing: .02em;
  font-size: clamp(26px, 7.2vw, 44px);
  line-height: 1.1;
}

.p-instructors__sub {
  margin-top: 14px;
  display: flex;
  align-items: center;
  gap: 14px;
}

.p-instructors__subLine {
  width: 56px;
  height: 2px;
  background: var(--brand-red);
  flex: 0 0 auto;
}

.p-instructors__subText {
  font-weight: 700;
  font-size: clamp(18px, 5.2vw, 28px);
  letter-spacing: .02em;
}

.p-instructors__subText::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 24px;
  background: var(--brand-red);
  margin-right: 10px;
  vertical-align: -4px;
}

/* Nav buttons */
.p-instructors__nav {
  display: flex;
  gap: 14px;
  padding-top: 6px;
}

.p-instructors__navBtn {
  width: 52px;
  height: 52px;
  border-radius: 999px;
  border: 2px solid var(--brand-red);
  background: transparent;
  color: var(--brand-red);
  display: grid;
  place-items: center;
  cursor: pointer;
  padding: 0;
  appearance: none;
}

.p-instructors__navBtn:disabled {
  opacity: .35;
  cursor: default;
}

.p-instructors__navIcon {
  width: 22px;
  height: 22px;
}

/* Carousel (Blog同等の挙動) */
.p-instructors__carousel {
  margin-top: var(--space-md);
}

/*
  NOTE:
  縦帯が top:-20px / right:-30px ではみ出すため、
  viewport側に逃げ(余白)を作ってクリップを回避する。
*/
.p-instructors__viewport {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
  scroll-padding-left: var(--pad-x);
  scrollbar-width: none;
  padding-top: 20px;
}

.p-instructors__viewport::-webkit-scrollbar {
  display: none;
}

.p-instructors__track {
  --ins-gap: clamp(16px, 5.333vw, 40px);
  --ins-card-w: clamp(240px, 66.666vw, 500px);
  display: flex;
  gap: var(--ins-gap);
  width: max-content;
  padding: 0 calc(var(--pad-x) + 30px) 0 var(--pad-x);
}

.p-instructors__item {
  flex: 0 0 auto;
  width: var(--ins-card-w);
  scroll-snap-align: start;
  overflow: visible;
}

.p-instructors__link {
  display: block;
  text-decoration: none;
  color: inherit;
  overflow: visible;
}

/* Role */
.p-instructors__role {
  margin: 14px 0 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 180px;
  height: 30px;
  padding: 0 16px;
  background: var(--brand-red);
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: .02em;
}

/* Name (serif) */
.p-instructors__name {
  margin: 16px 0 0;
  font-weight: 700;
  letter-spacing: .04em;
  font-size: clamp(24px, 6.8vw, 44px);
  line-height: 1.15;
}

/* =========================
   Instructors card: photo + vertical bands
   ========================= */
.p-insCard__media {
  position: relative;
  width: 220px;
  margin: 0;
  overflow: visible;
}

.p-insCard__photo {
  width: 220px;
  height: 275px;
  overflow: hidden;
  background: #e8e8e8;
  position: relative;
  z-index: 1;
}

.p-insCard__photo img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

/* Bands */
.p-insCard__bands {
  position: absolute;
  top: -20px;
  right: -40px;
  display: flex;
  gap: 10px;
  align-items: flex-start;
  z-index: 3;
  pointer-events: none;
}

.p-insCard__band {
  width: 30px;
  background: rgba(198, 83, 79, .65);
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 14px 0;
}

.p-insCard__bandText {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.15;
  letter-spacing: .02em;
  color: #fff;
  display: inline-block;
  width: auto;
  text-align: center;
}

@media (min-width: 1024px) {
  .p-instructors__track {
    --ins-card-w: 500px;
    padding-left: 0;
    padding-right: 30px;
  }
}

/* PC用 CSS */
/* =========================
   PC用（Header + Hero）
   ========================= */
/* Header：ページTOPに固定で追従 */
.p-hero__header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 80;
  width: 100%;
  height: var(--header-total-h);
  pointer-events: none;
  background: var(--brand-red);
  backdrop-filter: blur(6px);
}

.p-hero__headerInner {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: space-between;
  pointer-events: none;
}

.p-hero__headerInner>* {
  pointer-events: auto;
}

/* PC：ハイブリッド（左：赤＋キャッチ、右：写真フル） */
@media (min-width: 1024px) {
  :root {
    --pc-left-w: clamp(460px, 36vw, 620px);
    --pc-scroll-bottom: 80px;
    --pc-pad-x: 80px;
    --header-h: 0px;
    --header-pad-top: 0px;
    --header-total-h: calc(var(--header-h) + var(--header-pad-top));
  }

  /* ヘッダ内：上に50px余白 */
  .p-hero__headerInner {
    align-items: flex-start;
    padding: 50px var(--pc-pad-x) 0;
    box-sizing: border-box;
  }

  /* ご指定：ロゴ 180px × 50px */
  .p-hero__logo img {
    width: 180px;
    height: 50px;
    object-fit: contain;
    display: block;
    top: 50px;
  }

  /* PCは横並びナビ想定：ハンバーガーは非表示 */
  .p-hero__menuBtn {
    display: none;
  }

  /* Hero背景：左パネルを疑似要素で“フルブリード” */
  .p-hero {
    background: transparent !important;
  }

  .p-hero::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: calc(var(--pc-pad-x) + var(--pc-left-w));
    background: var(--brand-red);
    z-index: 0;
  }

  .p-hero__stage {
    position: relative;
    z-index: 1;
    min-height: 100vh;
    padding-top: 0 !important;
  }

  /* Catch：左パネル内で縦中央寄せ（左余白80px） */
  .p-hero__catch {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: calc(var(--pc-pad-x) + var(--pc-left-w));
    padding: 40px 48px calc(var(--pc-scroll-bottom) + var(--scroll-area-h)) var(--pc-pad-x);
    display: flex;
    align-items: center;
    z-index: 20;
  }

  .p-hero__catch h1 {
    font-size: clamp(36px, 2.8vw, 48px);
    line-height: 2;
    text-shadow: none;
  }

  /* Visual：右側をブラウザ100vhで（ヘッダは上に重なる） */
  .p-hero__visual {
    top: 0 !important;
    left: calc(var(--pc-pad-x) + var(--pc-left-w));
    right: 0;
    height: 100vh;
    bottom: auto;
    padding: 0;
  }

  .p-hero__visualInner {
    top: 0 !important;
    left: 0;
    right: 0;
    height: 100%;
    bottom: auto;
  }

  .p-hero__visualImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 20% 50%;
    display: block;
  }

  .p-hero__visualInner::after {
    background: linear-gradient(to bottom, rgba(0, 0, 0, .18), rgba(0, 0, 0, 0) 45%);
  }

  /* sliderが750固定を引きずる場合の保険 */
  .p-hero__slider {
    max-width: none !important;
    width: 100%;
    height: 100vh;
  }

  .p-hero__slide {
    height: 100vh;
  }

  /* Scroll：位置だけ調整（中身のアニメ/装飾は潰さない） */
  .p-hero__scrollArea {
    left: var(--pc-pad-x);
    right: auto;
    width: var(--pc-left-w);
    bottom: var(--pc-scroll-bottom);
    height: var(--scroll-area-h);
    background: transparent !important;
    z-index: 40;
    padding-top: 0;
  }

  /* Topics：右下（右余白80px） */
  .p-hero__topic {
    left: auto;
    right: var(--pc-pad-x);
    bottom: 120px;
    max-width: 520px;
    width: min(520px, calc(100% - (var(--pc-pad-x) * 2)));
    border-radius: 10px;
    padding: 16px 18px;
  }

  .p-hero__topicThumb {
    flex-basis: 120px;
    height: 86px;
    border-radius: 6px;
  }
}

/* =========================
   Philosophy（PCレイアウト）
   ========================= */
@media (min-width: 1024px) {

  /* セクション内幅：max 1440 / 余白：左右80（共通ルール） */
  .p-philosophy {
    max-width: 1440px;
    margin: 0 auto;
    padding: 90px 80px 90px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 90px;
    align-items: start;
  }

  /* =========================
   Hero Nav: hover accordion (PC)
   ========================= */
  /* 1) サブメニューが見切れないようにする */
  .p-heroNav,
  .p-heroNav__list,
  .p-heroNav__item {
    overflow: visible;
  }

  /* 2) 念のため：ヘッダが pointer-events で殺されてる環境用 */
  .p-hero__header,
  .p-hero__headerInner {
    pointer-events: auto;
  }

  .p-heroNav__item {
    position: relative;
  }

  /* 子ULの初期状態（閉） */
  .p-heroNav__item--hasSub>.p-heroNav__subList,
  .p-heroNav__item>.p-heroNav__subList {
    list-style: none;
    margin: 0;
    padding: 10px 0;
    position: absolute;
    top: calc(100% + 10px);
    left: 0;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .12);
    display: block;
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
    z-index: 9999;
  }

  /* 開く：hover + キーボード用 */
  .p-heroNav__item--hasSub:hover>.p-heroNav__subList,
  .p-heroNav__item--hasSub:focus-within>.p-heroNav__subList,
  .p-heroNav__item:hover>.p-heroNav__subList,
  .p-heroNav__item:focus-within>.p-heroNav__subList {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition-delay: 0s;
  }

  /* サブリンク見た目 */
  .p-heroNav__subLink {
    display: block;
    padding: 10px 14px;
    text-decoration: none;
    color: #111;
    font-weight: 700;
    font-size: 14px;
    line-height: 1.3;
    white-space: nowrap;
  }

  .p-heroNav__subLink:hover,
  .p-heroNav__subLink:focus-visible {
    background: rgba(179, 41, 36, .08);
    outline: none;
  }

  /* サブメニューがカプセルで見切れないように */
  .p-heroNav {
    overflow: visible;
    position: relative;
    z-index: 200;
  }

  .p-heroNav__list,
  .p-heroNav__item {
    overflow: visible;
  }

  .p-heroNav__item {
    position: relative;
  }

  /* WPの sub-menu / 自前クラス両対応 */
  .p-heroNav__item>.sub-menu {
    list-style: none;
    margin: 0;
    padding: 10px 0;
    position: absolute;
    top: calc(100% + 10px);
    left: 0;
    min-width: 260px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .12);
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
    z-index: 9999;
  }

  /* “隙間”で閉じにくくする（カーソル移動の橋渡し） */
  .p-heroNav__item>.sub-menu::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: -12px;
    height: 12px;
  }

  .p-heroNav__item.menu-item-has-children:hover>.sub-menu,
  .p-heroNav__item.menu-item-has-children:focus-within>.sub-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition-delay: 0s;
  }

  .p-heroNav__subLink {
    display: block;
    padding: 10px 14px;
    text-decoration: none;
    color: #111;
    font-weight: 700;
    font-size: 14px;
    line-height: 1.3;
    white-space: nowrap;
  }

  .p-heroNav__subLink:hover,
  .p-heroNav__subLink:focus-visible {
    background: rgba(179, 41, 36, .08);
    outline: none;
  }

  @media (prefers-reduced-motion: reduce) {
    .p-heroNav__item>.sub-menu {
      transition: none;
      transform: none;
    }
  }

  /* c-secInner のSP用左右パディングを打ち消す */
  .p-philosophy__inner.c-secInner {
    padding: 0;
    grid-column: 1;
    width: min(560px, calc(50vw - 100px - 80px));
  }

  /* 画像：右側へフルに伸ばす（左端=画面中央、右端=画面右） */
  .p-philosophy>.c-edgePhoto {
    grid-column: 2;
    margin: 0;
    width: 50vw;
    max-height: 600px;
    height: 600px;
    overflow: hidden;
    background: transparent;
  }

  /* 既存の “edge gap” 系を無効化 */
  .p-philosophy>.c-edgePhoto--right {
    margin-left: 0;
    width: 50vw;
  }

  .p-philosophy>.c-edgePhoto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
}

/* =========================
   Feature（PCレイアウト）
   ※Philosophyの左右反転版
   ========================= */
@media (min-width: 1024px) {

  /* セクション本体（中身はmax 1440でセンター） */
  .p-feature {
    position: relative;
    max-width: 1440px;
    margin: 0 auto;
    padding: 90px 0;
    min-height: calc(600px + 180px);
    z-index: 0;
    overflow: visible;
  }

  /* 背景グラデ（フルブリード） */
  .p-feature::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    right: 50%;
    margin-left: -50vw;
    margin-right: -50vw;
    background: linear-gradient(to bottom, #ffffff 0%, #f4f4f4 25%, #eee4e1 100%);
    z-index: 0;
  }

  /* 右：テキスト（最大560、ブラウザ幅で可変） */
  .p-feature__inner.c-secInner {
    position: relative;
    z-index: 2;
    padding: 0;
    margin-left: calc(50% + 100px);
    width: min(560px, calc(50vw - 100px - 80px));
    max-width: 560px;
  }

  /* 左：画像（左端=画面左 / 右端=画面中央、そこからテキストまで100px） */
  .p-feature>.c-edgePhoto {
    position: absolute;
    z-index: 1;
    top: 90px;
    left: calc(50% - 50vw);
    width: 50vw;
    height: 600px;
    max-height: 600px;
    margin: 0;
    overflow: hidden;
    background: transparent;
  }

  /* 既存の“edge gap”系を無効化（念のため） */
  .p-feature>.c-edgePhoto--left {
    margin-right: 0;
    width: 50vw;
  }

  .p-feature>.c-edgePhoto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
}

/* =========================
   Instructors（PC：4枚固定グリッド）
   - HTMLは流用（carousel構造のまま）
   - PCのみカルーセル挙動を無効化して4カラム固定へ
   ========================= */
@media (min-width: 1024px) {

  /* セクション内幅（共通：max 1440 / 左右80） */
  .p-instructors>.c-secInner,
  .p-instructors>.p-blog__cta.c-secInner {
    max-width: 1440px;
    margin: 0 auto;
    padding-left: 80px;
    padding-right: 80px;
  }

  /* PCではカルーセル操作UIを非表示（固定グリッドのため） */
  .p-instructors .p-blog__nav {
    display: none;
  }

  /* viewport：スクロール/スナップを無効化してクリップもしない */
  .p-instructors__viewport {
    overflow: hidden;
    scroll-snap-type: none;
    padding-top: 20px;
  }

  /* track：4列グリッド化 + セクションと同じ左右位置に揃える */
  .p-instructors__track {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 40px;
    width: auto;
    max-width: 1440px;
    margin: 0 auto;
    padding-left: 80px;
    padding-right: calc(80px + 30px);
  }

  /* item：固定幅/スナップを解除 */
  .p-instructors__item {
    width: auto;
    flex: initial;
    scroll-snap-align: none;
  }

  /* 画像：グリッドに合わせて“カード幅100%”で拡大（比率は元(4:5)を維持） */
  .p-insCard__media {
    width: 100%;
  }

  .p-insCard__photo {
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 5;
  }

  /* 文字サイズ：PC向けに少しだけ最適化（必要なら微調整可） */
  .p-instructors__role {
    min-width: 0;
    height: 34px;
    font-size: 14px;
  }

  .p-instructors__name {
    font-size: clamp(20px, 1.6vw, 28px);
  }

  /* Bands */
  .p-insCard__bands {
    right: -30px;
  }

  .p-insCard__band {
    width: 30px;
    background: rgba(198, 83, 79, .65);
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 14px 0;
  }

  .p-insCard__bandText {
    font-size: 16px;
  }

  .p-instructors {
    position: relative;
    z-index: 0;
  }

  /* prediction */
  .c-predictionPhoto {
    margin: 0;
    width: 100%;
  }

  .c-predictionPhoto img {
    width: 100%;
  }
}

/* =========================
   Prediction / News（PC調整）
   - モバイルデザイン踏襲
   - コンテンツ幅：max 1440px / 左右80px
   - 上部バナー：1440枠に収める
   ========================= */
@media (min-width: 1024px) {

  /* セクションの外枠 */
  .p-news {
    padding: 200px 0;
  }

  /* セクション内の共通コンテナ */
  .p-news>.c-secInner {
    max-width: 1440px;
    margin: 0 auto;
    padding-left: 80px;
    padding-right: 80px;
  }

  /* 上部バナー（画像/リンク想定）を1440枠内に */
  .p-news .p-news__banner,
  .p-news .p-news__bannerLink {
    display: block;
    max-width: 1440px;
    margin: 0 auto 40px;
    padding-left: 80px;
    padding-right: 80px;
  }

  .p-news .p-news__banner img {
    width: 100%;
    height: auto;
    display: block;
  }

  /* タイトル・本文：PC向けに読みやすく */
  .p-news h2,
  .p-news .c-secHead__title {
    font-size: clamp(28px, 2.2vw, 36px);
    line-height: 1.25;
    letter-spacing: .02em;
  }

  .p-news p,
  .p-news li {
    font-size: 18px;
    line-height: 1.9;
  }

  /* リスト/カード系がある場合の余白（崩さない範囲で） */
  .p-news .p-news__list {
    margin-top: 100px;
  }

  .p-news__date {
    font-size: 16px;
  }

  .p-news__link {
    padding: 25px 0;
  }

  .p-news__moreWrap {
    margin-top: 80px;
  }
}

/* =========================
   Voices Carousel（PC調整：途切れない連続スクロール + サイズ調整）
   ========================= */
@media (min-width: 1024px) {

  /* 画像の見え方（PC用に少し大きく） */
  .p-voices__carousel {
    padding: 70px 0;
  }

  /* 斜め帯のスケール（PCは少し控えめでもOK。必要なければ削除可） */
  .p-voices__bands {
    width: 150%;
  }

  /* 1440の内側ルールに合わせて、見え始め位置を揃える */
  .p-voices__lane {
    padding: 0 80px;
  }

  /*
    ★途切れ対策の肝
    - gap をやめる（gapは「セット境界」に余計な空白を生みやすい）
    - padding を track から外す（lane に持たせる）
    - カード側 margin で間隔を作る（-50% ループが綺麗に繋がる）
  */
  .p-voices__track {
    gap: 0;
    padding: 0;
    animation-duration: 34s;
  }

  .p-voices__card {
    --w: clamp(260px, 18vw, 340px);
    margin-right: 28px;
  }

  /* 2段目の間隔を少し広げる（見た目調整） */
  .p-voices__lane--bottom {
    margin-top: 26px;
  }

  /* バッジもPC用に少し大きく */
  .p-voices__badge {
    height: 38px;
    padding: 0 14px;
  }

  .p-voices__badgeText {
    font-size: 12px;
  }
}

/* =========================
   Voices Carousel（PC再調整）
   ========================= */
@media (min-width: 1024px) {

  /* 1) 見出し（c-secHead）を1440枠に収める */
  .p-voices .c-secHead {
    max-width: 1440px;
    margin: 0 auto;
    padding-left: 80px;
    padding-right: 80px;
  }

  /*
    2) 画像が切れないように：
    - セクション全体ははみ出しを許可
    - レーン側で左右80の“見え始め位置”を作る
  */
  .p-voices {
    overflow: visible;
  }

  .p-voices__carousel {
    padding: 70px 0;
    overflow: visible;
  }

  .p-voices__lane {
    padding-left: 80px;
    padding-right: 80px;
    overflow: visible;
  }

  /*
    3) 画像サイズを今の1.5倍に（カード幅を拡大）
    ※以前の --w (260〜340) を1.5倍相当に上げる
  */
  .p-voices__card {
    --w: clamp(390px, 27vw, 510px);
    margin-right: 28px;
  }

  /* 途切れ防止（gap/paddingを排除したまま） */
  .p-voices__track {
    gap: 0;
    padding: 0;
    animation-duration: 56s;
  }

  /* 影が切れやすいので、カードもはみ出し許可 */
  .p-voices__cardInner {
    overflow: visible;
  }
}

/* =========================
   Voices Carousel（PC：超ワイド対策）
   1440基準の左右ガター + はみ出し分(傾き/影)を確保
   ========================= */
@media (min-width: 1024px) {
  .p-voices {
    --voices-max: 1440px;
    --voices-pad: 80px;
    --voices-bleed: 70px;
    padding: 200px 0;
    background: linear-gradient(180deg, #eee4e1 0%, #f4f4f4 90%, #ffffff 100%);
  }

  /* 重要：lane の左右パディングを “画面幅に応じて” 可変にする */
  .p-voices__lane {
    padding-left: max(var(--voices-pad), calc((100vw - var(--voices-max)) / 2 + var(--voices-pad) + var(--voices-bleed)));
    padding-right: max(var(--voices-pad), calc((100vw - var(--voices-max)) / 2 + var(--voices-pad) + var(--voices-bleed)));
  }
}

/* =========================
   横スクロール防止（Voices 等のはみ出し対策）
   ========================= */
html,
body {
  overflow-x: clip;
}

/* clip が効かない古い環境向け保険 */
@supports not (overflow: clip) {

  html,
  body {
    overflow-x: hidden;
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-voices__track {
    animation: none !important;
    transform: none !important;
  }
}

/* Success */
/* 横にはみ出す赤背景を使うので、横スクロール抑止 */
.p-success {
  overflow-x: hidden;
}

.p-success__successMedia {
  position: relative;
  z-index: 1;
  margin: 0;
  margin-right: var(--pad-x);
  height: clamp(260px, 78vw, 520px);
  overflow: hidden;
}

/* Questionnaire（SP） */
/* =========================
   PC（Success + Questionnaire）安定版
   ========================= */
@media (min-width: 1024px) {
  .p-success {
    padding: var(--space-xl) 0 var(--space-xl);
    overflow-x: clip;
  }

  @supports not (overflow: clip) {
    .p-success {
      overflow-x: hidden;
    }
  }

  /* 上段：1440内に配置 */
  .p-success__success {
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 80px;
    display: flex;
    align-items: stretch;
    gap: 0;
    position: relative;
    z-index: 0;
  }

  /* 左：大画像（上限890、上へ110px固定） */
  .p-success__successMedia {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 890px;
    margin-top: -110px;
    margin-right: 0;
    height: 580px;
  }

  .p-success__successMedia::after {
    background: none;
  }

  .p-success__successImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }

  /* 右：赤パネル（基本固定。ただし狭い時は縮めて破綻回避） */
  .p-success__successPanel {
    flex: 0 1 410px;
    min-width: 360px;
    background: #c6534f;
    padding: 50px 40px;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    position: relative;
    z-index: 4;
    top: 0;
    left: 0;
    transform: none;
  }

  .p-success__successText {
    text-shadow: none;
    font-size: 18px;
    line-height: 1.9;
  }

  .p-success__successBtn {
    margin-top: 28px;
    max-width: none;
  }

  .p-success__q {
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 80px;
    margin-top: 0;
    position: sticky;
  }

  .p-success__sideLabel {
    left: 120px;
    top: 40%;
    transform: translateY(-50%);
    font-size: 18px;
  }

  .p-success__qCard {
    margin: 0;
    margin-left: 110px;
    width: calc(100% - 110px);
    padding: 50px 80px 78px;
    background: #c6534f;
    position: relative;
    color: #fff;
    z-index: 1;
    overflow: visible;
  }

  .p-success__qThumb {
    position: absolute;
    top: -70px;
    width: clamp(320px, 35.5vw, 480px);
    aspect-ratio: 3 / 2;
    height: 320px;
    z-index: 2;
  }

  .p-success__qImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }

  .p-success__qBody {
    position: relative;
    z-index: 3;
  }

  .p-success__qText {
    font-size: 18px;
    line-height: 1.9;
    max-width: 450px;
  }

  @media (min-width: 1250px) and (max-width: 1399px) {
    .p-success__qText {
      max-width: 400px;
    }
  }

  @media (min-width: 1024px) and (max-width: 1249px) {
    .p-success__qText {
      max-width: 300px;
    }
  }

  .p-success__qBtns {
    margin-top: 34px;
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    gap: 26px;
  }

  .p-success__qBtn {
    max-width: 320px;
    width: min(300px, 100%);
    height: 60px;
  }
}

/* 1400未満だけ、qThumbの持ち上げを弱めて“パネルに当たりにくく”する */
@media (min-width: 1024px) and (max-width: 1399.98px) {
  .p-success__qThumb {
    top: -80px;
  }
}

/* =========================
   Blog（PC）
   - 画像 350x250 固定
   - 左端は 1440px のコンテンツ開始位置に揃える
   - 右側は画面端まで表示（1440 を超えて見せる）
   ========================= */
@media (min-width: 1024px) {
  .p-blog {
    padding: 90px 0 200px;
  }

  /* 見出し・CTA は 1440 内に収める（他セクションと同じ思想） */
  .p-blog>.c-secInner {
    max-width: 1440px;
    margin: 80px auto 0;
    padding: 0 80px;
  }

  .p-blog__headRow {
    align-items: flex-end;
    gap: 24px;
  }

  .p-blog__nav {
    margin-top: 0;
    flex: 0 0 auto;
  }

  /* CTAは右寄せ（スクショの見え方に合わせる） */
  .p-blog__cta {
    display: flex;
    justify-content: flex-end;
    margin-top: 28px;
  }

  /* -------------------------
     Carousel：左は1440開始位置、右は画面端
     ------------------------- */
  .p-blog__carousel {
    --blog-padL: 80px;
  }

  /* 画面が1440より広い時だけ、センタリング差分を加味して左開始位置を計算 */
  @supports (width: max(1px, 2px)) {
    .p-blog__carousel {
      --blog-padL: max(80px, calc((100% - 1440px) / 2 + 80px));
    }
  }

  /* 右端は画面端まで、左だけ inset */
  .p-blog__viewport {
    padding: 0;
    width: calc(100% - var(--blog-padL));
    margin-left: var(--blog-padL);
  }

  /* カード寸法（画像 350x250 固定） */
  .p-blog__track {
    --blog-card-w: 350px;
    --blog-media-w: 350px;
    --blog-media-h: 250px;
    gap: 44px;
    padding-right: 44px;
  }

  .p-blog__item {
    flex: 0 0 var(--blog-card-w);
  }

  .p-blog__media {
    width: var(--blog-media-w);
    height: var(--blog-media-h);
  }

  /* 文字サイズだけPC向けに微調整（基本はモバイル踏襲） */
  .p-blog__cat {
    padding: 8px 18px;
    font-size: 13px;
  }

  .p-blog__date {
    font-size: 14px;
  }

  .p-blog__title {
    font-size: 18px;
    line-height: 1.6;
    margin-top: 14px;
  }

  .p-blog__meta {
    margin-top: 20px;
  }
}

/* =========================
   Access（PC）
   ========================= */
.p-access__schoolName {
  display: none;
}

@media (min-width: 1024px) {
  .p-access {
    padding: 200px 0;
  }

  /* セクション幅：1440px */
  .p-access>.c-secInner {
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 80px;
  }

  /* 見出し（PCでは横幅制限を外す） */
  .p-access__head {
    max-width: none;
    margin: 0 0 56px;
  }

  /* PCはタブ廃止 */
  .p-access__tabs {
    display: none;
  }

  /* 2カラム固定 */
  .p-access__panels {
    margin-top: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(60px, 6vw, 140px);
    row-gap: 60px;
    align-items: start;
  }

  /* hiddenでもPCでは表示（タブUI廃止のため） */
  .p-access__panel {
    display: flex;
    flex-direction: column;
  }

  .p-access__panel[hidden] {
    display: flex !important;
  }

  /* 校名見出し（PCで表示） */
  .p-access__schoolName {
    display: block;
    margin: 0 0 40px;
    font-size: clamp(22px, 1.7vw, 28px);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: .02em;
  }

  /* テキスト調整 */
  .p-access__info {
    gap: 30px;
  }

  .p-access__text {
    font-size: 16px;
    line-height: 1.5;
  }

  .p-access__mapLink {
    font-size: 15px;
  }

  /* Map：500×340基準 → ブラウザ幅で伸縮（比率維持） */
  .p-access__map {
    margin-top: 60px;
    width: 100%;
    max-width: none;
    aspect-ratio: 500 / 340;
    height: auto;
    border-radius: 12px;
    overflow: hidden;
  }

  .p-access__map iframe {
    width: 100%;
    height: 100%;
    border: 0;
  }
}

/* =========================
   CTA（PC）
   ========================= */
@media (min-width: 1024px) {
  .p-cta {
    padding: 200px 0;
  }

  .p-cta__inner {
    max-width: 1440px;
    margin: auto;
    padding: 0 80px;
  }

  .p-cta__lead {
    grid-template-columns: 30% 1fr;
    gap: 40px;
  }

  .p-cta__title {
    margin-bottom: 120px;
  }

  .p-cta__book {
    max-width: 330px;
    margin-left: 40px;
  }

  .p-cta__text {
    font-size: 20px;
    padding-left: 40px;
    padding-top: 60px;
  }

  .p-cta__actions {
    margin-top: 80px;
    display: flex;
    gap: 60px;
  }

  .p-cta__btn {
    padding: 20px 30px;
    border-radius: 20px;
  }

  .p-cta__btnLabel {
    font-size: 22px;
    padding-bottom: 4px;
  }

  .p-cta__btnLef {
    gap: 25px;
  }

  .p-cta__hr {
    margin: 80px 0;
  }

  .p-cta__telHours {
    margin: 20px 0 0;
    font-size: 18px;
  }
}

/* =========================
   Footer
   - SP：既存アコーディオン（.p-footer__nav--sp）表示
   - PC：サイトマップ（.p-footer__nav--pc）表示
   ========================= */
/* ===== Base / SP ===== */
.p-footer {
  position: relative;
  background: var(--brand-red);
  color: #fff;
  padding: 78px 50px 34px;
  font-size: 13px;
}

.p-footer__inner {
  position: relative;
}

.p-footer__brand {
  text-align: center;
}

.p-footer__logo {
  width: min(160px, 68vw);
  height: auto;
  display: block;
  margin: 0 auto;
}

.p-footer__company {
  margin: 0;
  font-weight: 700;
  letter-spacing: .02em;
  font-size: 12px;
}

.p-footer__sns {
  margin: 34px 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  justify-content: center;
  gap: 28px;
}

.p-footer__snsLink {
  width: 44px;
  height: 44px;
  border-radius: 6px;
  background: rgba(255, 255, 255, .14);
  display: grid;
  place-items: center;
  text-decoration: none;
}

.p-footer__snsIcon {
  width: 25px;
  height: 25px;
  display: block;
}

.p-footer__schools {
  margin-top: 54px;
  text-align: left;
}

.p-footer__school+.p-footer__school {
  margin-top: 36px;
}

.p-footer__schoolName {
  margin: 0 0 10px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .02em;
}

.p-footer__schoolText {
  margin: 0;
  font-weight: 700;
  line-height: 1.75;
  font-size: 12px;
}

.p-footer__tel {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border: 1px solid rgba(255, 255, 255, .55);
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  text-decoration: none;
  color: #fff;
  font-weight: 700;
  margin-top: 20px;
}

.p-footer__telIcon {
  line-height: 1;
}

.p-footer__nav {
  margin-top: 52px;
}

/* 出し分け：SPではSPナビを表示、PCナビは隠す */
.p-footer__nav--pc {
  display: none;
}

.p-footer__nav--sp {
  display: block;
}

/* ===== SP accordion ===== */
.p-footer__acc {
  margin: 0;
  padding: 0;
  list-style: none;
}

.p-footer__accBtn {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  height: 44px;
  padding: 0 0 0 10px;
  border: 0;
  border-bottom: 1px solid rgba(255, 255, 255, .55);
  background: transparent;
  color: #fff;
  cursor: pointer;
  text-align: left;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .01em;
}

.p-footer__plainLink {
  width: 100%;
  display: flex;
  align-items: center;
  height: 44px;
  padding: 0 0 0 10px;
  border-bottom: 1px solid rgba(255, 255, 255, .55);
  color: #fff;
  text-decoration: none;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .01em;
  opacity: .95;
}

.p-footer__accIcon {
  position: relative;
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
}

.p-footer__accIcon::before,
.p-footer__accIcon::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 14px;
  height: 2px;
  background: rgba(255, 255, 255, .95);
  border-radius: 999px;
  transform-origin: center;
  transition: transform 260ms cubic-bezier(.2, .7, .2, 1);
}

.p-footer__accIcon::before {
  transform: translate(-50%, -50%) rotate(0deg);
}

.p-footer__accIcon::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.p-footer__accBtn[aria-expanded="true"] .p-footer__accIcon::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.p-footer__accBtn[aria-expanded="true"] .p-footer__accIcon::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.p-footer__accPanel {
  overflow: hidden;
  height: 0;
  transition: height 320ms cubic-bezier(.2, .7, .2, 1);
}

.p-footer__accInner {
  padding: 16px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .55);
}

.p-footer__accLink {
  color: #fff;
  text-decoration: none;
  font-weight: 500;
  letter-spacing: .02em;
  display: block;
  padding: 15px 0 15px 10px;
  opacity: .95;
  font-size: 13px;
}

.p-footer__privacy {
  display: block;
  padding: 18px 0 0 10px;
  color: #fff;
  text-decoration: none;
  font-weight: 500;
  letter-spacing: .02em;
  opacity: .95;
  font-size: 13px;
}

.p-footer__copy {
  margin: 46px 0 0;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .02em;
  opacity: .95;
}

/* SP pagetop */
.p-footer__pagetop {
  position: absolute;
  right: -45px;
  bottom: 25px;
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  padding: 10px;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.p-footer__pagetop::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: -46px;
  width: 2px;
  height: 38px;
  background: rgba(255, 255, 255, .95);
  animation: footerPagetopLine 2s infinite;
  transform-origin: 50% 0%;
  pointer-events: none;
}

.p-footer__pagetopText {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  font-weight: 700;
  letter-spacing: .06em;
  font-size: 10px;
}

@keyframes footerPagetopLine {
  0% {
    transform: translateX(-50%) scaleY(0);
    transform-origin: 50% 100%;
  }

  50% {
    transform: translateX(-50%) scaleY(1);
    transform-origin: 50% 100%;
  }

  51% {
    transform: translateX(-50%) scaleY(1);
    transform-origin: 50% 0%;
  }

  100% {
    transform: translateX(-50%) scaleY(0);
    transform-origin: 50% 0%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-footer__pagetop::after {
    animation: none;
  }

  .p-footer__accPanel {
    transition: none !important;
  }

  .p-footer__accIcon::before,
  .p-footer__accIcon::after {
    transition: none !important;
  }
}

/* ===== PC ===== */
@media (min-width: 1024px) {
  .p-footer {
    padding: 0;
    font-size: 13px;
    display: flex;
    justify-content: center;
  }

  .p-footer__inner {
    width: 100%;
    margin: 0;
    padding: 90px clamp(24px, 5vw, 80px) 44px;
    display: grid;
    grid-template-columns: clamp(280px, 22vw, 420px) 1fr;
    column-gap: clamp(24px, 3vw, 64px);
    align-items: start;
    position: relative;
    max-width: 1440px;
  }

  /* 左カラム */
  .p-footer__brand {
    text-align: left;
  }

  .p-footer__logo {
    width: 180px;
    margin: 0;
  }

  .p-footer__company {
    margin-top: 14px;
    font-size: 16px;
    letter-spacing: .06em;
  }

  .p-footer__sns {
    justify-content: flex-start;
    margin-top: 22px;
    gap: 12px;
  }

  .p-footer__snsLink {
    width: 40px;
    height: 40px;
    border-radius: 10px;
  }

  .p-footer__snsIcon {
    width: 20px;
    height: 20px;
  }

  .p-footer__schools {
    margin-top: 38px;
    display: grid;
    gap: 28px;
  }

  .p-footer__school+.p-footer__school {
    margin-top: 0;
  }

  .p-footer__schoolName {
    font-size: 16px;
  }

  .p-footer__schoolText {
    margin-bottom: 12px;
    font-size: 14px;
    line-height: 1.7;
    opacity: .95;
    font-weight: 700;
  }

  .p-footer__tel {
    gap: 10px;
    padding: 8px 14px;
    border-color: rgba(255, 255, 255, .6);
    background: transparent;
    font-size: 14px;
    margin: 10px 0 20px;
  }

  /* 右カラム */
  .p-footer__nav {
    margin-top: 0;
    grid-column: 2;
    grid-row: 1 / span 3;
    align-self: start;
    justify-self: start;
    width: 100%;
  }

  /* 出し分け：PCではPCナビ表示、SPナビ非表示 */
  .p-footer__nav--sp {
    display: none;
  }

  .p-footer__nav--pc {
    display: block;
    max-width: 980px;
  }

  /* hover */
  .p-footer__nav--pc a {
    padding-bottom: 3px;
    background-image: linear-gradient(#fff, #fff);
    background-repeat: no-repeat;
    background-position: bottom right;
    background-size: 0 1px;
    transition: background-size 0.3s;
  }

  .p-footer__nav--pc a:hover {
    background-position: bottom left;
    background-size: 100% 1px;
  }

  .p-footer .p-footer__sLink:hover,
  .p-footer__sTitleLink:hover {
    opacity: 1;
    text-decoration: none !important;
  }

  /* PCサイトマップ */
  .p-footer__sitemap {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: 56px;
    align-items: start;
    margin-top: 20px;
  }

  .p-footer__sCol {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 56px;
  }

  /* 見出しズレ対策：pのデフォルトmarginを消す */
  .p-footer__sTitle {
    margin: 0;
  }

  .p-footer__sTitle,
  .p-footer__sTitleLink {
    display: inline-block;
    font-weight: 700;
    font-size: 14px;
    letter-spacing: .08em;
    line-height: 1.4;
  }

  .p-footer__sTitleLink {
    color: inherit;
    text-decoration: none;
  }

  .p-footer__sTitleLink:hover {
    text-decoration: underline;
  }

  .p-footer__sList {
    margin: 12px 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 15px;
  }

  .p-footer__sLink {
    font-size: 13px;
    line-height: 1.6;
    opacity: .95;
    text-decoration: none;
    color: #fff;
    overflow-wrap: anywhere;
  }

  .p-footer__sLink:hover {
    opacity: 1;
    text-decoration: underline;
  }

  .p-footer__sLink--privacy {
    display: inline-block;
    margin-top: -10px;
  }

  /* PCでSP由来の線が見えないよう保険（非表示だが念のため） */
  .p-footer__accInner,
  .p-footer__plainLink {
    border: 0 !important;
    border-bottom: 0 !important;
    background: transparent !important;
  }

  .p-footer__accInner::before,
  .p-footer__accInner::after,
  .p-footer__plainLink::before,
  .p-footer__plainLink::after {
    content: none !important;
  }

  /* コピーライト＋Pagetop（PC） */
  .p-footer__pagetop {
    right: -45px !important;
    bottom: 25px !important;
    width: auto !important;
    height: auto !important;
    padding: 10px !important;
    border: 0 !important;
    border-radius: 0 !important;
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 6px !important;
  }

  .p-footer__pagetop::after {
    content: "" !important;
    position: absolute;
    left: 50%;
    top: -46px;
    width: 2px;
    height: 38px;
    background: rgba(255, 255, 255, .95);
    transform: translateX(-50%);
    animation: footerPagetopLine 2s infinite;
  }

  .p-footer__pagetopText {
    writing-mode: vertical-rl;
    text-orientation: mixed;
    font-size: 10px !important;
    letter-spacing: .06em !important;
    font-weight: 700;
  }
}

/* =========================
   追従型お問い合わせ（PC）
   ========================= */
.c-floatContact {
  position: fixed;
  right: 0;
  top: 30vh;
  width: 70px;
  height: 275px;
  z-index: 50;
  display: grid;
  grid-template-rows: 100px 40px 1fr;
  justify-items: center;
  align-items: center;
  background: rgba(179, 41, 36, 0.65);
  border-radius: 18px 0 0 18px;
  box-shadow: 0 12px 28px rgba(0, 0, 0, .18);
  overflow: hidden;
}

/* ボタン（上2つ） */
.c-floatContact__btn {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  text-decoration: none;
}

.c-floatContact__btn--line {}

.c-floatContact__btn--tel {}

.c-floatContact__icon {
  width: 40px;
  height: 40px;
  display: block;
}

/* 縦書きラベル */
.c-floatContact__label {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  color: #fff;
  text-decoration: none;
  font-weight: 800;
  letter-spacing: .08em;
  font-size: 18px;
  writing-mode: vertical-rl;
  text-orientation: mixed;
}

/* ホバー（白線を出さない＆少しだけ明るく） */
.c-floatContact a:hover {
  text-decoration: none;
  filter: brightness(1.04);
}

.c-floatContact a:focus-visible {
  outline: 2px solid rgba(255, 255, 255, .9);
  outline-offset: -2px;
}

/* SPでは非表示（必要なら条件を変更） */
@media (max-width: 1023.98px) {
  .c-floatContact {
    display: none;
  }
}

/* 動きを減らす設定 */
@media (prefers-reduced-motion: reduce) {
  .c-floatContact a:hover {
    filter: none;
  }
}

/* =========================
   SP フッダ固定追従メニュー（高さ80px）
   ========================= */
.c-spFloatFooter {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  height: 80px;
  background: #b12f2b;
  color: #fff;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(6px);
  transition: opacity 240ms ease, transform 240ms ease, visibility 0s linear 240ms;
}

/* 表示状態 */
.c-spFloatFooter.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
  transition: opacity 240ms ease, transform 240ms ease, visibility 0s;
}

.c-spFloatFooter__inner {
  height: 100%;
  display: flex;
  align-items: stretch;
}

/* 左右の比率（必要なら調整） */
.c-spFloatFooter__left {
  flex: 0 0 56%;
  padding: 6px 10px 6px 12px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.c-spFloatFooter__lead {
  margin: 0;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .03em;
  line-height: 1.1;
  opacity: .95;
  border: 1px solid rgba(255, 255, 255, .75);
  border-radius: 999px;
  padding: 2px 10px;
  display: inline-block;
  width: fit-content;
  max-width: 100%;
}

.c-spFloatFooter__icons {
  display: flex;
  gap: 25px;
  align-items: center;
}

.c-spFloatFooter__iconLink {
  width: 34px;
  height: 34px;
  border-radius: 6px;
  display: grid;
  place-items: center;
  text-decoration: none;
  color: inherit;
}

/* アイコンのSVGサイズ（貼ったSVGに効くように） */
.c-spFloatFooter__iconLink svg {
  width: 18px;
  height: 18px;
  display: block;
}

.c-spFloatFooter__iconLink--tel {
  background: #2f77d7;
}

.c-spFloatFooter__iconLink--mail {
  background: #1f2f8f;
}

.c-spFloatFooter__iconLink--line {
  background: #1dbd3c;
}

.c-spFloatFooter__divider {
  flex: 0 0 1px;
  background: rgba(255, 255, 255, .35);
  margin: 10px 0;
}

.c-spFloatFooter__right {
  flex: 1 1 auto;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 10px 20px 14px;
  text-decoration: none;
  color: inherit;
  overflow: visible;
}

.c-spFloatFooter__blogSmall {
  font-size: 10px;
  font-weight: 700;
  opacity: .95;
  line-height: 1.15;
	text-shadow: 2px 3px 3px rgba(0, 0, 0, 0.4);    
	left: 1px;
    position: relative;
	z-index: 100;
}

.c-spFloatFooter__blogTitle {
  font-size: 16px;
  font-weight: 900;
  letter-spacing: .04em;
  line-height: 1.1;
  margin-top: 2px;
	text-shadow: 2px 3px 3px rgba(0, 0, 0, 0.4);
	z-index: 100;
}

/* 右下の男性画像 */
.c-spFloatFooter__man {
  position: absolute;
  right: 0;
  bottom: 0;
  height: 95px;
  width: auto;
  pointer-events: none;
}

/* SPのみ表示（必要なら） */
@media (min-width: 1024px) {
  .c-spFloatFooter {
    display: none;
  }
}

/* 動きが苦手な人向け */
@media (prefers-reduced-motion: reduce) {
  .c-spFloatFooter {
    transition: none !important;
    transform: none !important;
  }
}

.p-header.is-solid .p-header__logoImg {
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .35));
}

/* =========================
   Header Logo readability fix
   - scroll後にヘッダ背景が白でもロゴが消えないようにする
   ========================= */
/* 基本：ロゴの当たり判定＋背景 */
.p-hero__logo {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
}

/* スクロール後（= .is-solid付与時）は白背景カプセル＋軽い影 */
.p-hero__headerInner.is-solid .p-hero__logo {
  background: rgba(255, 255, 255, .78);
  backdrop-filter: blur(6px);
  box-shadow: 0 8px 22px rgba(0, 0, 0, .12);
}

/* ロゴ画像にもドロップシャドウで“白抜け”保険 */
.p-hero__headerInner.is-solid .p-hero__logo img {
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .28));
}

/* SP固定ボタンチェック用 */
/*.c-spFloatFooter{
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transform: none !important;
  display: block !important;
  outline: 3px solid #00ff00;
}*/
/* =========================
   CPT Archive / Single base
   ========================= */
.p-archive__head,
.p-entry__head {
  padding-inline: 0;
  padding-top: 0;
  padding-bottom: var(--space-sm);
}

.p-entry__head .p-archive__title {
  margin: 0;
  font-size: 26px;
  line-height: 1.2;
}

.p-archive__inner {
  max-width: 1440px;
  margin-inline: auto;
}

/* archiveだけPCの左右余白を広めに（singleに影響しないよう限定） */
@media (min-width: 1024px) {
  .p-archive {
    margin: 120px 0;
  }

  .p-archive .p-archive__head,
  .p-archive .p-archive__body {
    padding-inline: clamp(20px, 5vw, 80px);
  }
}

.p-archive__body {
  padding-inline: var(--pad-x);
  padding-bottom: var(--space-xl);
}

.p-cardList {
  display: grid;
  gap: var(--space-md);
  grid-template-columns: 1fr;
}

@media (min-width: 1024px) {
  .p-cardList {
    grid-template-columns: repeat(3, 1fr);
  }
}

.p-card {
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.p-card__link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.p-card__thumb {
  margin: 0;
}

.p-card__img {
  width: 100%;
  height: auto;
  display: block;
}

.p-card__meta {
  padding: 12px 14px 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  align-items: center;
}

.p-card__cat {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--brand-red, #c40000);
  color: #fff;
  font-size: 12px;
  line-height: 1.2;
  font-weight: 700;
}

.p-card__date {
  font-size: 18px;
  opacity: .7;
  font-weight: 600;
}

.p-card__title {
  margin: 8px 14px 0;
  font-size: 18px;
  line-height: 1.5;
}

.p-card__excerpt {
  margin: 10px 14px 14px;
  font-size: 16px;
  line-height: 1.9;
  opacity: .85;
}

.p-pagination {
  margin-top: var(--space-md);
}

.p-empty {
  margin: 0;
  padding: var(--space-md) 0;
}

/* Single */
.p-entry__kicker {
  margin: 0 0 10px;
  font-size: 12px;
  letter-spacing: .06em;
  opacity: .75;
}

.p-entry__title {
  margin: 0 0 10px;
  font-size: 24px;
  line-height: 1.35;
}

.p-entry__date {
  font-size: 12px;
  opacity: .7;
}

.p-entry__content {
  padding-inline: 0;
  padding-bottom: var(--space-lg);
}

/* ブログ/CPT本文の最低限タイポ（必要なら後で増やす） */
.p-entry__content h2 {
  margin: var(--space-md) 0 12px;
  font-size: 18px;
}

.p-entry__content p {
  margin: 0 0 16px;
  line-height: 2;
}

.p-entry__content img {
  max-width: 100%;
  height: auto;
}

.p-entry__back {
  padding-inline: 0;
  padding-bottom: var(--space-xl);
  margin: 0;
}

.p-entry__backLink {
  text-decoration: none;
  font-weight: 700;
}

.p-entry__backLink:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

/* =========================
   Hero Topics Rotator
   ========================= */
[data-topic-rotator] .p-hero__topic {
  opacity: 0;
  pointer-events: none;
  transform: translateY(28px);
  transition: opacity 1000ms ease, transform 2000ms cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}

[data-topic-rotator] .p-hero__topic.is-active {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

[data-topic-rotator] .p-hero__topic.is-leaving {
  opacity: 0;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  [data-topic-rotator] .p-hero__topic {
    transition: none;
    transform: none;
  }
}

/* =========================
   Single Post Meta (categories/tags/author)
   ========================= */
.p-entry__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 10px;
  align-items: center;
}

.p-entry__cats a {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--brand-red, #c40000);
  color: #fff;
  text-decoration: none;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
}

.p-entry__author {
  color: var(--brand-red);
  font-weight: 700;
  font-size: 14px;
  padding: 2px 14px;
  border: 2px solid var(--brand-red);
}

.p-entry__tags,
.p-entry__tags a {
  color: inherit;
  text-decoration: none;
  font-size: 12px;
}

/* =========================
   Single Post width (PC: max 1440px)
   ========================= */
.p-entry--post {
  padding: 60px 0 80px;
  color: #111;
}

.p-entry--post .p-entry__inner {
  margin-inline: auto;
  padding-inline: 20px;
}

.post-categories {
  display: flex;
  gap: 15px;
  list-style: none;
  padding-left: 0;
}

.p-entry__thumb {
  max-width: 960px;
  margin: 0 auto 80px;
}

.p-entry__thumb img {
  width: 100%;
}

.p-entry__date {
  font-weight: 700;
  font-size: 18px;
  letter-spacing: .02em;
  margin-left: 15px;
  top: -1px;
  position: relative;
}

.p-entry__logo {
  text-align: center;
}

.p-entry__logo img {
  width: 25%;
}

@media (min-width: 1024px) {
  .p-entry--post {
    padding: 120px 0;
  }

  .p-entry--post .p-entry__inner {
    max-width: 1440px;
    padding-inline: clamp(20px, 5vw, 80px);
  }

  .p-entry__head,
  .p-entry__content {
    max-width: 960px;
    margin: auto;
  }

  .p-entry__title {
    margin: 40px 0 40px;
    font-size: 32px;
    line-height: 1.35;
    border-bottom: 1px solid;
    padding-bottom: 30px;
  }

  .p-entry__date {
    font-weight: 700;
    font-size: 18px;
    letter-spacing: .02em;
    margin-left: 15px;
    top: -1px;
    position: relative;
  }

  .p-entry__cats a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 84px;
    height: 28px;
    padding: 0 14px;
    border-radius: 999px;
    background: var(--brand-red);
    color: #fff;
    font-weight: 700;
    font-size: 14px;
    line-height: 1;
    letter-spacing: .01em;
  }

  .p-entry__author {
    color: var(--brand-red);
    font-weight: 700;
    font-size: 14px;
    height: 28px;
    margin-left: 5px;
    padding: 2px 14px;
    border: 2px solid var(--brand-red);
  }

  .p-entry__logo {
    max-width: 960px;
    margin: auto;
    padding: 40px 0 80px;
  }

  .p-entry__logo img {
    width: 75px;
  }
}

/* =========================
   Single Post Pager (prev/next)
   ========================= */
.p-entry__pager {
  margin-top: var(--space-lg);
  display: grid;
  gap: 12px;
}

.p-entry__pagerLink {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 4px;
  align-items: center;
  padding: 14px;
  border: 1px solid #d7d7d7;
  background: #fff;
  color: inherit;
  text-decoration: none;
}

.p-entry__pagerLink:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

.p-entry__pagerThumb {
  display: none;
}

/*
.p-entry__pagerThumb img{
  width: 96px;
  height: 72px;
  object-fit: cover;
  display: block;
}*/
.p-entry__pagerLabel {
  display: block;
  font-size: 12px;
  opacity: .75;
  margin-bottom: 6px;
}

.p-entry__pagerTitle {
  display: block;
  font-size: 14px;
  line-height: 1.6;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* PC：添付イメージ風（左右2分割＋外側矢印＋中央寄せタイトル） */
@media (min-width: 1024px) {
  .p-entry__pager {
    display: flex;
    gap: 0;
    border: 1px solid #d7d7d7;
    background: #fff;
    max-width: 960px;
    margin: auto;
  }

  .p-entry__pagerLink {
    flex: 1 1 50%;
    border: 0;
    grid-template-columns: 1fr;
    padding: 22px 64px;
    min-height: 86px;
    text-align: center;
    justify-items: center;
    position: relative;
  }

  /* 2つ出る時だけ中央に仕切り線（next側だけ左線） */
  .p-entry__pagerLink--next {
    border-left: 1px solid #d7d7d7;
  }

  /* PCはサムネ/ラベルを隠してタイトル中心（イメージ準拠） */
  .p-entry__pagerThumb {
    display: none;
  }

  .p-entry__pagerLabel {
    font-weight: 700;
    font-size: 14px;
  }

  .p-entry__pagerTitle {
    font-size: 16px;
    font-weight: 600;
    line-height: 1.6;
    max-width: 100%;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  /* 外側矢印 */
  .p-entry__pagerLink--prev::before,
  .p-entry__pagerLink--next::before {
    position: absolute;
    top: 46%;
    transform: translateY(-50%);
    font-size: 30px;
    line-height: 1;
    opacity: .75;
  }

  .p-entry__pagerLink--prev::before {
    content: "‹";
    left: 20px;
  }

  .p-entry__pagerLink--next::before {
    content: "›";
    right: 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-entry__pagerLink {
    scroll-behavior: auto;
  }
}

.veu_relatedPosts .relatedPosts_item>.media {
  display: flex;
  padding: 2em 0 2em;
  margin-top: 0;
  border: none;
  font-weight: 600;
}

.veu_relatedPosts a {
  color: #111;
}

/* =========================
   Single Post Pager hover (PC only)
   ========================= */
@media (min-width: 1024px) {
  .p-entry__pagerLink {
    transition: background-color 600ms ease, color 600ms ease;
  }

  .p-entry__pagerLink:hover {
    background-color: #d7d7d7;
    color: #fff;
  }

  /* 子要素が独自色を持っていても白に揃える */
  .p-entry__pagerLink:hover .p-entry__pagerLabel,
  .p-entry__pagerLink:hover .p-entry__pagerTitle {
    color: #fff;
  }
}

.veu_relatedPosts .relatedPosts_title {
  color: var(--brand-red);
}

/* =========================
   NEWS Single Post Pager hover
   ========================= */
.e-entry_news_img {
  width: 100vw;
  margin: 0 calc(50% - 50vw);
}

.p-entry_news__head .p-entry__date {
  margin-left: 0;
}

/* =========================
   Category pill: link/label both
   ========================= */
.p-entry__cats a,
.p-entry__cats .p-entry__cat {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--brand-red, #c40000);
  color: #fff;
  text-decoration: none;
  font-size: 12px;
  line-height: 1.2;
}

@media (min-width: 1024px) {

  .p-entry__cats a,
  .p-entry__cats .p-entry__cat {
    justify-content: center;
    min-width: 84px;
    height: 28px;
    padding: 0 14px;
    font-weight: 700;
    font-size: 14px;
    line-height: 1;
    letter-spacing: .01em;
  }
}

/* =========================
   Page Key Visual (reusable / full-bleed / Retina bg)
   ========================= */
.p-pageKv {
  width: 100vw;
  margin: 80px calc(50% - 50vw) 0;
  height: var(--kv-h-sp, 240px);
  display: flex;
  align-items: center;
  background-image: image-set(var(--kv-sp-1x) 1x, var(--kv-sp-2x) 2x);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* =========================
   Page KV: Overlay（案1）
   - dark overlay + white text
========================= */
.p-pageKv {
  position: relative;
  isolation: isolate;
  /* 擬似要素の重なりを安定させる */
}

.p-pageKv::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, .25);
  /* ここで濃さ調整（.38〜.55目安） */
  z-index: 0;
  pointer-events: none;
}

/* 文字側をオーバーレイより前に */
.p-pageKv__inner {
  position: relative;
  z-index: 1;
}

.p-pageKv__title,
.p-pageKv__sub {
  color: #fff;
  text-shadow: 0 2px 14px rgba(0, 0, 0, .35);
  /* あると安定 */
}

.p-pageKv__inner {
  width: 100%;
  margin-inline: auto;
  max-width: 1440px;
  padding-inline: var(--pad-x, 20px);
}

.p-pageKv__title {
  margin: 0;
    font-size: var(--sec-title-fz);
  line-height: 1.1;
  letter-spacing: .01em;
}
/*
.p-pageKv__sub {
  margin: 12px 0 0;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: .08em;
}*/

.p-pageKv__sub{
  display: inline-flex;
  align-items: center;
  gap: 0;
	    font-weight: 700;
    font-size: var(--sec-sub-fz);
}

.p-pageKv__sub::before{
  content: "";
  width: 25px;
  height: 2px;
  /*background: var(--brand-red, #b34040);*/
  background: #fff;
  border-radius: 999px;
  flex: none;
  transform: translateY(1px);
  margin-right: 12px;
}
/* 空なら非表示（保険） */
.p-pageKv__sub:empty{
  display: none;
}

@media (min-width: 1024px) {
  .p-pageKv {
    height: var(--kv-h-pc, 400px);
    background-image: image-set(var(--kv-pc-1x) 1x, var(--kv-pc-2x) 2x);
	  margin-top: 0;
  }

  .p-pageKv__inner {
    padding-inline: clamp(20px, 5vw, 80px);
	  margin-top: 80px;
  }
}

/* news archive: 1列固定（SP/PC共通） */
.p-archive--news .p-cardList {
  grid-template-columns: 1fr !important;
}

.p-archive--news .p-card__thumb {
  display: none;
}

/* =========================
   News archive list (no thumb)
   ========================= */
.p-archive--news .p-newsList {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid #ddd;
}

.p-archive--news .p-newsList__item {
  border-bottom: 1px solid #ddd;
  padding: 0 20px;
}

.p-archive--news .p-newsList__link {
  display: block;
  padding: 18px 0;
  color: inherit;
  text-decoration: none;
}

.p-archive--news .p-newsList__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.p-archive--news .p-newsList__date {
  opacity: .75;
  font-size: 18px;
  font-weight: 600;
}

.p-archive--news .p-newsList__badge {
  display: inline-flex;
  align-items: center;
  margin: 0 20px;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--brand-red, #c40000);
  color: #fff;
  font-size: 12px;
  line-height: 1.2;
  font-weight: 700;
}

.p-archive--news .p-newsList__title {
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  font-weight: 500;
}

.p-archive--news .p-newsList__excerpt {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.9;
  opacity: .85;
}

/* PC：metaとタイトルを横並び気味に（任意） */
@media (min-width: 1024px) {
  .p-archive--news .p-newsList__link {
    padding: 30px 0;
  }

  .p-archive--news .p-newsList__title {
    font-size: 18px;
    font-weight: 500;
  }
}

/* =========================
   Pager (the_posts_pagination)
   ========================= */
.p-pagination .nav-links {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
}

.p-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  min-width: 44px;
  padding: 0 14px;
  border: 1px solid #e5e5e5;
  border-radius: 6px;
  background: #fff;
  color: #111;
  text-decoration: none;
  font-weight: 700;
  line-height: 1;
  transition: background-color 320ms ease, color 320ms ease, border-color 320ms ease, opacity 320ms ease;
}

/* hover（PCのみ） */
@media (min-width: 1024px) {
  .p-pagination a.page-numbers:hover {
    background: #d7d7d7;
    border-color: #d7d7d7;
    color: #fff;
  }
}

.p-pagination a.page-numbers:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

/* 現在ページ */
.p-pagination .page-numbers.current {
  background: var(--brand-red, #c40000);
  border-color: var(--brand-red, #c40000);
  color: #fff;
}

/* ...（ドット） */
.p-pagination .page-numbers.dots {
  border-color: transparent;
  background: transparent;
  min-width: auto;
  padding: 0 6px;
}

/* prev/next が無効な時（spanで出る） */
.p-pagination span.page-numbers {
  color: #aaa;
  background: #f6f6f6;
  border-color: #eee;
  opacity: .7;
}

/* SP：少しコンパクトに */
@media (max-width: 480px) {
  .p-pagination .nav-links {
    gap: 8px;
  }

  .p-pagination .page-numbers {
    height: 38px;
    min-width: 38px;
    padding: 0 10px;
    font-size: 13px;
  }
}

/* =========================
   Single: Back to archive button
   ========================= */
.p-entry__backWrap {
  padding-top: var(--space-md, 40px);
  padding-bottom: var(--space-xl, 80px);
  display: flex;
  justify-content: center;
}

.p-entry__backBtn {
  width: min(520px, 100%);
}

/* hoverはPCだけ（色はゆっくり変化） */
@media (min-width: 1024px) {
  .p-entry__backBtn {
    transition: background-color 360ms ease, color 360ms ease, border-color 360ms ease;
  }
}

/* =========================
   Archive layout (news=list / post=tiles)
   ========================= */
/* inner（左右余白と最大幅管理） */
.p-archive__inner {
  margin-inline: auto;
  max-width: 1440px;
  padding-inline: var(--pad-x, 20px);
}

/* 既存の .p-archive__head/.p-archive__body が padding-inline を持っていても、
   inner 内では二重にならないように打ち消し */
.p-archive__inner .p-archive__head,
.p-archive__inner .p-archive__body {
  padding-inline: 0;
}

@media (min-width: 1024px) {
  .p-archive__inner {
    padding-inline: clamp(20px, 5vw, 80px);
  }
}

/* Blog（post）：タイル 3カラム（SP=1 / PC=3） */
.p-archive--post .p-cardList {
  grid-template-columns: 1fr;
}

@media (min-width: 1024px) {
  .p-archive--post .p-cardList {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* カテゴリ/バッジ（NEWSとトーン合わせ） */
.p-card__meta {
  display: flex;
  gap: 10px;
  align-items: center;
}

.p-card__cat {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 24px;
  padding: 0 10px;
  border-radius: 999px;
  background: var(--brand-red, #c40000);
  color: #fff;
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
}

/* NEWS（news）：リスト化（横線区切り）＋サムネ＆抜粋を出さない */
.p-archive--news .p-cardList {
  gap: 0;
}

.p-archive--news .p-card {
  background: transparent;
  border-radius: 0;
  border-bottom: 1px solid rgba(0, 0, 0, .18);
}

.p-archive--news .p-card__excerpt {
  display: none;
}

.p-archive--news .p-card__link {
  padding: 18px 0;
}

.p-archive--news .p-card__meta {
  padding: 0;
  margin-bottom: 10px;
}

.p-archive--news .p-card__title {
  margin: 0;
  font-size: 18px;
  line-height: 1.7;
}

/* 既要望：news のみ PCで margin */
@media (min-width: 1024px) {
  .p-archive--news {
    margin: 120px 0;
  }
}

/* =========================
   NEWS list (one-line row)
   ========================= */
.p-newsList {
  margin: 0;
  padding: 0;
  list-style: none;
}

.p-newsList__item {
  border-bottom: 1px solid rgba(0, 0, 0, .18);
}

.p-newsList__link {
  display: block;
  padding: 18px 0;
  color: inherit;
  text-decoration: none;
}

.p-newsList__link:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

/* 1行横並び */
.p-newsList__meta {
  display: flex;
  align-items: center;
  gap: 18px;
  min-width: 0;
}

.p-newsList__date {
  font-size: 14px;
  font-weight: 700;
  opacity: .85;
  flex: 0 0 auto;
  white-space: nowrap;
}

.p-newsList__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 24px;
  padding: 0 12px;
  border-radius: 999px;
  background: var(--brand-red, #c40000);
  color: #fff;
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  flex: 0 0 auto;
  white-space: nowrap;
}

/* タイトルは残り幅を全部使う */
.p-newsList__title {
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  font-weight: 700;
  flex: 1 1 auto;
  min-width: 0;
}

/* タイトルが長い時の省略（不要なら消してOK） */
@media (min-width: 1024px) {
  .p-newsList__title {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}

/* SPは2行に落としても読みやすい（横に長すぎ対策） */
@media (max-width: 599px) {
  .p-newsList__meta {
    flex-wrap: wrap;
    gap: 10px 14px;
  }

  .p-newsList__title {
    flex-basis: 100%;
  }
}

/* =========================
   News list hover effect
   背景うっすら + 矢印表示
========================= */
/* ←ここ：hoverを当てたい要素に合わせてどれか1つにする
   例）1件丸ごとリンクなら .p-newsList__link
   例）li内のaなら .p-newsList__item > a
   例）タイトルリンクだけなら .p-newsList__title a
*/
.p-newsList__item {
  position: relative;
  display: block;
  padding: 14px 44px 14px 14px;
  text-decoration: none;
  color: inherit;
}

.p-newsList__item::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: rgba(0, 0, 0, .04);
  opacity: 0;
  transition: opacity 200ms ease;
  pointer-events: none;
}

.p-newsList__item::after {
  content: "";
  position: absolute;
  right: 16px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
  opacity: 0;
  transition: opacity 200ms ease, transform 200ms ease;
}

.p-newsList__item:hover::before,
.p-newsList__item:focus-visible::before {
  opacity: 1;
}

.p-newsList__item:hover::after,
.p-newsList__item:focus-visible::after {
  opacity: 1;
  transform: translate(2px, -50%) rotate(45deg);
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {

  .p-newsList__item::before,
  .p-newsList__item::after {
    transition: none;
  }
}

/* =========================
   Subpage Shell (Pages)
   - same width as TOP (max 1440)
   - unified prose
========================= */
.p-subpage {
  padding: 0 0 var(--space-xl);
}
.p-subpage.box-cta{
  padding: 0; /* 既存の「下余白なし」運用を維持 */
}
.p-subpage-1th {
  padding: 80px 0;
  margin: -68px calc(50% - 50vw) 0;
}

.p-subpage__inner {
  max-width: 1440px;
  margin: 0 auto;
  padding-inline: clamp(20px, 5vw, 80px);
  padding-top: var(--space-xl); /* 旧 .p-subpage の上余白を本文側へ移管 */
}

/* 先頭がパンくずの場合：パンくず側に上40pxあるので本文の上余白は詰める */
.p-subpage > .c-breadcrumb + .p-subpage__inner{
  padding-top: var(--space-sm, 30px);
}

/* 下層ページ用テンプレ */
.u-prose {
  font-size: 16px;
  line-height: 1.9;
}

.u-prose> :first-child {
  margin-top: 0;
}

.u-prose> :last-child {
  margin-bottom: 0;
padding-bottom: 0;
}

.u-prose :where(p) {
  margin: 0 0 1.2em;
}

.u-prose :where(h2) {
  margin: 0 0 60px;
  font-size: clamp(20px, 3.8vw, 28px);
  line-height: 1.75;
}

.u-prose :where(h3) {
  margin: 1.8em 0 .7em;
  font-size: clamp(18px, 3.2vw, 24px);
  line-height: 1.4;
}

.u-prose :where(h4) {
  margin: 1.6em 0 .6em;
  font-size: 18px;
  line-height: 1.45;
}

.u-prose :where(ul, ol) {
  margin: 0 0 1.2em;
  padding-left: 1.25em;
}

.u-prose :where(li) {
  margin: .35em 0;
}

.u-prose :where(a) {
	/*
  color: inherit;
  text-decoration: underline;
  text-underline-offset: .18em;*/
}

@media (min-width: 1024px) {

  /* Prose (pages only) */
  .u-prose {
    font-size: 18px;
  }

  .u-prose :where(h2) {
    margin: 0 0 60px;
    line-height: 1.75;
  }
	.u-prose-smbox{
		max-width: 920px;
	  margin: 0 auto;
	}
  .p-subpage-1th {
    padding: 120px 0 80px;
    margin: -90px calc(50% - 50vw) 0;
  }
}

/* =========================
   Subpage Hero (Head + Full-bleed image)
========================= */
.p-subHero {
  overflow-x: hidden;
  /* 100vw対策（横スクロール防止） */
}

.p-subHero__media {
  /* 画面端まで */
  width: 100vw;
  margin-left: calc(50% - 50vw);
  height: 240px;
  /* SP */
  margin-top: var(--space-sm);
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  /* fallback */
  background-image: var(--hero-sp-1x);
  /* retina */
  background-image: image-set(var(--hero-sp-1x) 1x, var(--hero-sp-2x) 2x);
}

@media (min-width: 1024px) {
  .p-subHero__media {
    height: 400px;
    /* PC */
    margin-top: var(--space-md);
    background-image: var(--hero-pc-1x);
    background-image: image-set(var(--hero-pc-1x) 1x, var(--hero-pc-2x) 2x);
  }
}

/* 変更しやすいよう独自クラスも用意（今はc-secHeadに乗せるだけ） */
.p-subHero__head {
  margin: 120px auto 0;
  /*padding-inline: 0;*/
    padding-inline: clamp(20px, 5vw, 80px);
}

.p-subHero__title {}

.p-subHero__sub {}

.p-subHero__subText {}

@media (min-width: 1024px) {
  .p-subHero__head {
    max-width: 1440px;
    margin: 160px auto 0;
    padding-inline: clamp(20px, 5vw, 80px);
  }
}

/* =========================
   FeaturesBlock：SPだけ「h2の下に画像」
========================= */
@media (max-width: 1023.98px) {

  /* レイアウトを並べ替える器にする */
  .p-featuresBlock__layout {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-areas:
      "headline"
      "hero"
      "body";
    row-gap: 18px;
  }

  /* 見出し → 1行目 */
  .p-featuresBlock__headline {
    grid-area: headline;
  }

  /* 画像 → 2行目 */
  .p-featuresBlock__hero {
    grid-area: hero;
    margin: 0;
    /* figureの余計なマージンを潰す */
  }

  /* 本文 → 3行目 */
  .p-featuresBlock__body {
    grid-area: body;
  }
}

/* =========================
   Features Block layout
========================= */
.p-featuresBlock__layout {
  display: grid;
  gap: var(--space-md);
}

/* 画像 */
.p-featuresBlock__hero img {
  width: 100%;
  height: auto;
  display: block;
}

/* PC：左右横並び（テキスト左・画像右） */
@media (min-width: 1024px) {
  .p-featuresBlock__layout {
    grid-template-columns: 1fr 1fr;
    align-items: start;
    gap: var(--space-lg);
  }

  /* デフォ：content（左）→ hero（右） */
  .p-featuresBlock__content {
    order: 1;
  }

  .p-featuresBlock__hero {
    order: 2;
  }

  /* 反転：hero（左）→ content（右） */
  .p-featuresBlock--rev .p-featuresBlock__content {
    order: 2;
  }

  .p-featuresBlock--rev .p-featuresBlock__hero {
    order: 1;
  }
}

/* =========================
   Features Cards grid
========================= */
.p-featuresCards__grid {
  display: grid;
  gap: var(--space-md);
}

/* PC：2カラム */
@media (min-width: 1024px) {
  .p-featuresCards__grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-lg);
  }
}

/* カード内の画像も念のため */
.p-featureCard__photo img {
  width: 100%;
  height: auto;
  display: block;
}

/* =========================
   Features Cards（P15）
   - PC: 2 columns / SP: 1 column
   - card feel + head accent + hover
========================= */
.p-featuresCards {
  padding: var(--space-xl, 80px) 0;
}

.p-featuresCards__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 56px 56px;
  /* row / col */
}

@media (max-width: 1023px) {
  .p-featuresCards {
    padding: var(--space-lg, 60px) 0;
  }

  .p-featuresCards__grid {
    grid-template-columns: 1fr;
    gap: 34px;
  }
}

/* Card */
.p-featureCard {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .06);
  box-shadow: 0 12px 28px rgba(0, 0, 0, .06);
  transition: transform .22s ease, box-shadow .22s ease;
}

/* 上端にアクセント（主張しすぎない） */
.p-featureCard::before {
  content: "";
  display: block;
  height: 4px;
  background: var(--brand-red, #b51616);
  opacity: .95;
}

/* Hover（PCのみ） */
@media (hover:hover) {
  .p-featureCard:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 40px rgba(0, 0, 0, .10);
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-featureCard {
    transition: none;
  }

  @media (hover:hover) {
    .p-featureCard:hover {
      transform: none;
    }
  }
}

/* Head */
.p-featureCard__head {
  display: grid;
  grid-template-columns: 10px 1fr;
  gap: 12px;
  align-items: start;
  padding: 22px 24px;
}

.p-featureCard__headMark {
  width: 10px;
  height: 24px;
  background: var(--brand-red, #b51616);
  */ top: -3px;
  position: relative;
}

.p-featureCard__title {
  margin: 0;
  font-size: clamp(18px, 1.2vw + 14px, 22px);
  line-height: 1.35;
  letter-spacing: .02em;
  position: relative;
  top: -2px;
}

@media (min-width: 1024px) {
  .p-featureCard__headMark {
    height: 28px;
  }
}

/* Photo */
.p-featureCard__photo {
  margin: 0;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #f3f3f3;
}

.p-featureCard__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.01);
  transition: transform .45s ease;
}

@media (hover:hover) {
  .p-featureCard:hover .p-featureCard__photo img {
    transform: scale(1.04);
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-featureCard__photo img {
    transition: none;
  }
}

/* Body */
.p-featureCard__body {
  padding: 18px 24px 24px;
  font-size: 16px;
  line-height: 1.9;
}

.p-featureCard__body p {
  margin: 0 0 1.1em;
}

.p-featureCard__body p:last-child {
  margin-bottom: 0;
}

/* =========================
   Essay / Longform Prose
   このページだけに付ける：.u-prose--essay
========================= */
.u-prose--essay {
  /* 1行を短くして読みやすく */
  max-width: 920px;
  margin-inline: auto;
  font-size: clamp(16px, 1.2vw, 18px);
  line-height: 2.0;
  letter-spacing: .02em;
  /* 見た目の“余白” */
  padding: clamp(10px, 1.2vw, 18px) 0;
}

/* 段落のリズム */
.u-prose--essay :where(p) {
  margin: 0 0 3em;
}

/* 強調（em）を“蛍光マーカー”風に（やりすぎない薄さ） */
.u-prose--essay :where(em) {
  font-style: normal;
  background: linear-gradient(transparent 60%, rgba(176, 22, 27, .14) 0);
  padding: 0 .15em;
}

/* 太字（strong）は少し締める */
.u-prose--essay :where(strong) {
  font-weight: 700;
}

/* 先頭の大見出し（あなたの h2 は t-center / u-txt-blred 付き）を“宣言”っぽく */
.u-prose--essay :where(h2) {}

/* 赤文字の引用（span style="color:#ff0000" が入ってる段落）を“引き”として目立たせる */
.u-prose--essay p:where(:has(> span[style*="color: #ff0000"]), :has(> span[style*="color:#ff0000"])) {
  margin: 1.8em 0;
  padding: 1.1em 1.2em;
  border-left: 4px solid var(--brand-red, #b0161b);
  background: rgba(176, 22, 27, .06);
}

/* ↑の :has が効かない環境向けに、あとで class を付けた場合の保険 */
.u-prose--essay .u-pull {
  margin: 1.8em 0;
  padding: 1.1em 1.2em;
  border-left: 4px solid var(--brand-red, #b0161b);
  background: rgba(176, 22, 27, .06);
}

/* スマホは余白を少し詰める */
@media (max-width: 767px) {
  .u-prose--essay {
    max-width: 680px;
    line-height: 1.95;
  }

  .u-prose--essay :where(h2) {}
}

/* =========================
   教育観（Philosophy Spread）修正・調整版
========================= */
.p-philoSpread {
  padding: 60px 0 80px;
}

.p-philoSpread>.c-secInner {
  max-width: 1440px;
  margin-inline: auto;
  padding-inline: 20px;
}

/* --- パネル（共通） --- */
.p-philoPanel {
  background: #f6efec;
  border-radius: 22px;
  padding: 30px;
  /* パディングを少し広めに確保 */
  box-shadow: 0 10px 24px rgba(0, 0, 0, .06);
  position: relative;
  z-index: 2;
}

.p-philoPanel__head {
  margin: 0 0 20px;
  text-align: center;
}

/* タグやタイトルのスタイル（既存維持） */
.p-philoPanel__tag {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 10px 0px 16px;
  width: 100%;
  border-bottom: 1px solid #111;
  justify-content: center;
}

.p-philoPanel__no {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: #b51f1f;
  color: #fff;
  font-weight: 800;
  font-size: 14px;
  flex-shrink: 0;
}

.p-philoPanel__title {
  margin: 0;
  font-weight: 800;
  font-size: 18px;
  line-height: 1.35;
  margin-top: 10px;
}

.p-philoPanel__body {
  font-size: 16px;
  line-height: 1.9;
  display: block;
}

/* --- 画像エリア（共通） --- */
.p-philoCenter__figure {
  margin: 0;
  border-radius: 999px;
  overflow: hidden;
  box-shadow: 0 14px 30px rgba(0, 0, 0, .12);
  background: #fff;
}

.p-philoCenter__img {
  display: block;
  width: 100%;
  height: auto;
}

.p-philoCenter__labels {
  position: absolute;
  left: 50%;
  top: calc(100% - 15px);
  /* 画像の下端に被せる */
  transform: translateX(-50%);
  display: flex;
  gap: 10px;
  width: max-content;
}

.p-philoCenter__label {
  display: grid;
  place-items: center;
  padding: 8px 14px;
  border-radius: 14px;
  border: 2px solid #b51f1f;
  background: #fff;
  font-weight: 800;
  font-size: 14px;
  color: #b51f1f;
}

.p-eduPage__secHead_philoPanel {
  display: flex;
  justify-content: center;
}

.c-secInner-philosophy {
  padding: 0;
  padding-inline: 0 !important;
}

.c-secInner-philosophy .p-featureCard__head {
  padding: 40px 0;
}

/* =========================================
   PCレイアウト（1024px以上）
   ========================================= */
@media (min-width: 1024px) {
  .c-secInner-philosophy {
    max-width: 1080px;
    padding: 0;
    margin: auto;
  }

  /* 1. グリッド設定 */
  .p-philoSpread__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    /* 均等2カラム */
    column-gap: 40px;
    /* 中央の隙間 */
    max-width: 1080px;
    /* 全体が広がりすぎないように制限 */
    margin-inline: auto;
    position: relative;
    /* 円のサイズ定義 */
    --philo-circle: 280px;
  }

  /* 2. 画像（絶対配置・完全中央） */
  .p-philoCenter {
    position: absolute;
    width: var(--philo-circle);
    /* ★左右ズレ防止の最強設定：左右0＋マージンauto */
    left: 0;
    right: 0;
    margin-inline: auto;
    /* ★上下位置の調整はここを変更してください（1/2） */
    /* グリッドの一番上からの距離です */
    top: 225px;
    z-index: 5;
    pointer-events: none;
  }

  /* 3. スペーサー（文字を避けるための見えない壁） */
  .p-philoSpacer {
    width: 120px;
    /* 円の半径(140) - 隙間半分(20) = 120 */
    height: 50px;
    /* 円の高さ */
    /* ★カーブ開始位置の調整はここを変更してください（2/2） */
    /* 「ヘッダーの下」からの距離です */
    /* この値を増やすと、カーブが下に下がります */
    margin-top: 440px !important;
    /* ★【調整用】位置合わせが終わったら transparent にしてください */
    /* background: rgba(255, 0, 0, 0.3);  */
    background: transparent;
  }

  /* 左パネル用：右に置く */
  .p-philoSpacer.is-left {
    float: right;
    shape-outside: circle(50% at 100% 50%);
    margin-right: -20px;
    /* Gapにはみ出させる */
    margin-left: 20px;
  }

  /* 右パネル用：左に置く */
  .p-philoSpacer.is-right {
    float: left;
    shape-outside: circle(50% at 0% 50%);
    margin-left: -20px;
    /* Gapにはみ出させる */
    margin-right: 20px;
  }

  .p-philoPanel__title {
    font-size: 20px;
  }

  .p-eduPage__greetBody {
    display: flex;
    justify-content: center;
  }

  /* 画像の親要素（figure）に幅を持たせる */
  .p-eduPage__greetPhoto {
    max-width: 50%;
    flex-shrink: 0;
    margin-right: 30px;
    /* テキストとの余白 */
  }
}

/* =========================================
   スマホ・タブレット（1023.98px以下）
   ========================================= */
@media (max-width: 1023.98px) {
  .p-philoSpacer {
    display: none !important;
  }

  .p-philoSpread__grid {
    display: flex;
    flex-direction: column;
    gap: 50px;
  }

  .p-philoCenter {
    position: relative;
    width: 260px;
    margin: 0 auto;
    top: auto;
    left: auto;
    right: auto;
  }

  .p-philoCenter__labels {
    position: static;
    transform: none;
    justify-content: center;
    margin-top: 15px;
  }
}

/* =========================
   Subpage: FAQ（SP）
   追記位置：style.css の末尾
   ========================= */
.p-faq {
  --faq-bg: #eee4e1;
  /* c-section--soft と同系 */
  --faq-line: rgba(0, 0, 0, .18);
  --faq-ink: #111;
  --faq-accent: var(--brand-red, #b71c1c);
  --faq-qbg: #f2dada;
  --faq-abg: #f5efee;
  color: var(--faq-ink);
}

/* u-prose の強い余白をFAQ内だけ抑制 */
.p-faq :where(h2, h3, p, hr) {
  margin: 0;
}

.p-faq :where(p) {
  line-height: 1.9;
}

.p-faq_inner {
  padding-inline: clamp(20px, 5vw, 80px);
}

.p-faq__lead {
  font-size: 16px;
  margin-bottom: 40px;
}

.p-faq__rule {
  border: 0;
  border-top: 1px solid var(--faq-line);
  margin: 18px 0;
}

/* 6ボタン（2列） */
.p-faqNav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.p-faqNav__btn {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 64px;
  padding: 10px 10px;
  border: 1px solid rgba(0, 0, 0, .45);
  background: transparent;
  text-decoration: none;
  color: inherit;
}

.p-faqNav__btn>span {
  position: relative;
  padding: 0 8px;
  font-size: 11px;
  line-height: 1.5;
  text-align: center;
}

/* カテゴリ見出し */
.p-faqSection {
  margin-top: 80px;
  scroll-margin-top: calc(var(--header-total-h, 80px) + 18px);
}

.p-faqSection__head {
  margin: 24px 0 14px;
}

.p-faqSection__line {
  display: block;
  height: 1px;
  background: var(--faq-line);
  margin-bottom: 40px;
}

.p-faqSection__title {
  font-size: 18px;
  font-weight: 800;
  letter-spacing: .02em;
}

/* アコーディオン */
.p-faqAcc {
  display: grid;
  gap: 30px;
}

.p-faqItem {
  border: 1px solid rgba(0, 0, 0, .12);
  background: transparent;
}

.p-faqItem__btn {
  width: 100%;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 14px 14px;
  background: var(--faq-qbg);
  border: 0;
  cursor: pointer;
  text-align: left;
  color: inherit;
}

.p-faqItem__qMark {
  flex: 0 0 auto;
  font-weight: 600;
  color: var(--faq-accent);
  font-size: 18px;
  top: 3px;
  position: relative;
}

.p-faqItem__qText {
  flex: 1 1 auto;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.7;
}

.p-faqItem__icon {
  position: relative;
  flex: 0 0 18px;
  width: 15px;
  height: 15px;
  margin-left: 6px;
  transition: transform .25s ease;
  top: 5px;
}

.p-faqItem__icon::before,
.p-faqItem__icon::after {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  background: rgba(0, 0, 0, .65);
  border-radius: 1px;
}

.p-faqItem__icon::before {
  width: 15px;
  height: 2px;
}

.p-faqItem__icon::after {
  width: 2px;
  height: 15px;
}

.p-faqItem.is-open .p-faqItem__icon {
  transform: rotate(45deg);
  /* ＋ → × */
}

.p-faqItem__a {
  background: var(--faq-abg);
}

.p-faqItem__aInner {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 2px;
  padding: 14px 14px 16px;
}

.p-faqItem__aMark {
	font-size: 16px;
  font-weight: 600;
  position: relative;
  left: 2px;
}

.p-faqItem__aBody {
  font-size: 16px;
  font-weight: 400;
  line-height: 1.75;
}

.p-faqItem__aBody p+p {
  margin-top: 10px;
}

/* PCでも崩れない程度に */
@media (min-width: 1024px) {
  .p-faqNav {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .p-faq__lead,
  .p-faqNav,
  .p-faqSection {
    max-width: 1440px;
    margin: 80px auto 0px;
    padding-inline: clamp(20px, 5vw, 80px);
    text-align: center;
    font-size: 20px;
    font-weight: 600;
  }

  .p-faq__lead {
    margin: 0 auto 40px;
  }

  .p-faqSection {
    text-align: left;
  }

  .p-faqSection__title {
    font-size: 22px;
  }

  .p-faqNav__btn>span {
    font-size: 16px;
  }
}

/* ===== FAQカテゴリボタン：Hover（PC） ===== */
.p-faqNav__btn {
  font-weight: 600;
  /* フォント太さ */
  transition:
    background-color .45s ease, color .45s ease, border-color .45s ease, box-shadow .45s ease;
}

.p-faqNav__btn>span {
  font-weight: 600;
  /* 念のため */
}

/* PCなど「hover可能」デバイスのみ */
@media (hover:hover) and (pointer:fine) {
  .p-faqNav__btn:hover {
    background: rgba(179, 41, 36, 1);
    color: #fff;
    border-color: transparent;
    /* 好みで：残したいなら消してください */
    box-shadow: 0 10px 24px rgba(0, 0, 0, .10);
  }
}

/* キーボード操作も同等に（アクセシビリティ） */
.p-faqNav__btn:focus-visible {
  outline: none;
  background: var(--faq-qbg);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 0 0 3px rgba(181, 31, 31, .22);
}

/* 動きを減らす設定の人向け */
@media (prefers-reduced-motion: reduce) {
  .p-faqNav__btn {
    transition: none;
  }
}

/* =========================
   講師紹介（SP基準）
   ========================= */
.p-instructors{
  background: #f3efec;
  min-height: 100vh;
}

.p-instructors.top-teachers{
	min-height: auto;
}
/* Hero */
.p-instructorsHero{
  padding-top: var(--space-md);
}
.p-instructorsHero__inner{
  padding-inline: var(--pad-x);
}
.p-instructorsHero__title{
  font-size: 26px;
  line-height: 1.2;
  margin: 0;
  letter-spacing: .02em;
}
.p-instructorsHero__sub{
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 0 18px;
  font-weight: 700;
}
.p-instructorsHero__line{
  width: 36px;
  height: 2px;
  background: var(--brand-red);
  flex: none;
}
.p-instructorsHero__subText{
  font-size: 16px;
  letter-spacing: .02em;
}
.p-instructorsHero__kv img{
  width: 100%;
  height: 120px;
  object-fit: cover;
  display: block;
}

/* Cards */
.p-instructorsList{
  padding-bottom: var(--space-xl);
}
.p-instructorsList__inner{
  display: grid;
  gap: var(--space-lg);
}

/* 1枚のカード（基本） */
.p-instructorsCard{
	margin-top: 80px;
}

/* wordLeft は背景だけ違う（指示どおり） */
.p-instructorsCard--wordLeft{
  background: linear-gradient(250deg, #eee4e1 0%, #f4f4f4 75%, #ffffff 100%);
  margin: 0 calc(50% - 50vw) 0;
}

/* 画像＋英字＋本文を1ブロックに */
.p-instructorsCard__block{
  display: grid;
  grid-template-columns: 66.6% 33.4%;
}

/* 左英字カードは左右を入れ替える（基本は同じ） */
.p-instructorsCard--wordLeft .p-instructorsCard__block{
  grid-template-columns: 33.4% 66.6%;
	position: relative;
	/*top: -50px;*/
	padding: 80px 0;
}

/* 上段（写真＋英字） */
.p-instructorsCard__photo{
  margin: 0;
  padding-top: 10px;
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 66.6% 33.4%;
  align-items: start;
  position: relative;
}

/* wordLeft の上段も左右を入れ替え */
.p-instructorsCard--wordLeft .p-instructorsCard__photo{
  grid-template-columns: 33.4% 66.6%;
}

/* 写真枠（可変＋指定サイズ） */
.p-instructorsCard__media{
  grid-column: 1;
  justify-self: start;
  position: relative;

  /* 指示：max-width 220 / min-height 275 + 画面に応じて可変 */
  width: min(220px, 58.7vw);
  max-width: 220px;
  min-height: 275px;
}

.p-instructorsCard--wordLeft .p-instructorsCard__media{
  grid-column: 2;
  justify-self: end;
  margin-left: 0;
  margin-right: var(--pad-x);
}

.p-instructorsCard__media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}


.p-instructorsCard__photo::after{
  content: attr(data-word);
  position: absolute;

  right: 0;
  top: -15px;
  writing-mode: vertical-rl;
  text-orientation: mixed;

  font-weight: 800;
  font-size: 56px;
  line-height: 1;
  letter-spacing: .06em;
  color: #000;
  opacity: .16;

  user-select: none;
  pointer-events: none;
  white-space: nowrap;
}


.p-instructorsCard--wordLeft .p-instructorsCard__photo::after{
  right: auto;
  padding-left: clamp(20px, 5vw, 80px);
}

/* 赤い縦リボン（表示位置・見た目をカンプ寄せ） */
.p-instructorsCard__ribbons{
    position: absolute;
    top: -20px;
    right: -37px;
    display: flex;
    gap: 10px;
  align-items: flex-start;
	font-family: var(--font-serif);
	font-weight: 600;
}

.p-instructorsCard--wordLeft .p-instructorsCard__ribbons{
  left: -37px;
  right: auto;
}

.p-instructorsCard__ribbon{
  display: inline-flex;
  writing-mode: vertical-rl;
  text-orientation: upright;

  background: rgba(179, 41, 36, .70);
  color: #fff;

  padding: 12px 8px;
  font-size: 13px;
  line-height: 1.2;
  letter-spacing: .06em;

  border-radius: 2px;
}

/* 下段（情報エリア） */
.p-instructorsCard__body{
  grid-column: 1;
    margin-right: var(--pad-x);
}

.p-instructorsCard--wordLeft .p-instructorsCard__body{
  grid-column: 2;
    margin: 0 0 0 auto;
    padding-right: clamp(20px, 5vw, 80px);
    text-align: right;
}

/* 役職ラベル */
.p-instructorsCard__role{
    display: inline-block;
    margin: 20px 0 12px;
    padding: 4px 12px;
    background: var(--brand-red);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .04em;
}

.p-instructorsCard__nameRow{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 20px;
}

.p-instructorsCard__name{
  margin: 0;
  font-size: 22px;
  line-height: 1.25;
  letter-spacing: .02em;
  color: #111;
}

.p-instructorsCard__mark{
  display: inline-flex;
  flex: none;
    height: 45px;
    top: 2px;
    position: relative;	
}

/* 詳細ボタン */
.p-instructorsCard__btn{
  max-width: 160px;
  height: 35px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  background: rgba(179, 41, 36, .72);
  color: #fff;
  text-decoration: none;
  border-radius: 999px;
  font-weight: 700;
  letter-spacing: .06em;
  position: relative;
	font-size: 14px;
}
.p-instructorsCard__btn:hover{
  filter: brightness(1.12); /* 少しだけ明るく */
  transition: filter .5s ease; /* 変化を滑らかに */
}
.p-btn_right{
	margin-left: auto;
}
.p-instructorsCard__btnIcon{
  width: 15px;
  height: 15px;
  border-radius: 999px;
  background: #fff;
  position: relative;
  flex: none;
}

.p-instructorsCard__btnIcon::before{
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 0;
    height: 0;
    border-left: 5px solid var(--brand-red);
    border-top: 3px solid transparent;
    border-bottom: 3px solid transparent;
    transform: translateX(1px);
}

.p-instructorsCard__btn:focus-visible{
  outline: 2px solid var(--brand-red);
  outline-offset: 3px;
}

/* PC（1024px〜）：max1440px、カード2枚を1行に */
@media (min-width: 1024px){
  .p-instructorsHero__inner,
  .p-instructorsIntro__inner,
  .p-instructorsList__inner{
    max-width: 1440px;
    margin-inline: auto;
    padding-inline: 80px;
  }

  /* 2枚を1行（= 2カラム） */
  .p-instructorsList__inner{
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 80px;
	  margin-top: 80px;
    align-items: start;
  }

  /* PCでは各カードの上余白はリセット（必要なら調整） */
  .p-instructorsCard{
    margin-top: 0;
  }

.p-instructorsCard__role{
    margin: 0 0 12px;
}
.p-instructorsCard__nameRow{
  margin-bottom: 40px;
}
	

.p-instructorsCard__name{
  font-size: 28px;
}
	
	
.p-instructorsCard--wordLeft .p-instructorsCard__block{
  grid-template-columns: 33.4% 66.6%;
	position: relative;
	top: -50px;
	padding: 0;
}
	
	
	
.p-instructorsCard__photo::after{
  font-size: 56px;
}
  /* ----------------------------
     2列目（wordLeft）の指定背景 + フルブリード
     ※カード本体に 100vw margin を当てると2カラムが壊れるため、
       背景だけ疑似要素で再現する
     ---------------------------- */
  .p-instructorsCard--wordLeft{
    /* 指示：margin-top 160px */
    margin: 0;

    /* 背景は疑似要素に任せる */
    background: transparent;
    position: relative;
    isolation: isolate; /* これで疑似要素の重なりが安定 */
  }

  /* SP用の持ち上げはPCでは無効化（2列で崩れるのを防ぐ） */
  .p-instructorsCard--wordLeft .p-instructorsCard__block{
    position: static;
    top: auto;
  }
	
.p-instructorsCard--wordLeft .p-instructorsCard__photo::after{
  padding-left: 0;
        position: absolute;
        left: -0.24em;
}
	.p-instructorsCard__media {
    width: 100%;
    max-width: 100%;
    min-height: auto;
}

.p-instructorsCard--wordLeft .p-instructorsCard__body{
    padding-right: 0;
	margin: 40px 20px 0 auto;
}
.p-instructorsCard__ribbon {
    padding: 12px 11px;
    font-size: 15px;
}	
.p-instructorsCard__ribbons {
    top: -20px;
    right: -48px;
    gap: 15px;
}
	
.p-instructorsCard--wordLeft .p-instructorsCard__ribbons {
    left: -48px;
}
	.p-instructorsCard__body{
		margin-top: 40px;
	}	

	.p-instructorsCard--wordLeft .p-instructorsCard__photo::after{		
    writing-mode: sideways-lr;
	}	
/* 2つ目の .p-instructorsList__inner だけ、背景をブラウザ幅いっぱいに敷く（中身は1440pxのまま） */
.p-instructorsList > .p-instructorsList__inner:nth-of-type(2n){
  position: relative;
  isolation: isolate; /* z-index:-1 の疑似要素を内側だけに閉じる */
	padding: 80px;
}

/* instructors：最下部がフッタ直前で白く見える対策
   - subpage の下パディング分だけ、背景::before を下に伸ばす */
.p-instructorsList > .p-instructorsList__inner:nth-of-type(2n){
  position: relative; /* ::before の基準 */
}

.p-instructorsList > .p-instructorsList__inner:nth-of-type(2n)::before{
  content: "";
  position: absolute;
  top: 0;

  /* ★ここが肝：subpageの下パディング（=space-xl）分だけ下へ伸ばす */
  bottom: 0;

  left: 50%;
  transform: translateX(-50%);
  width: 100vw;
  background: linear-gradient(250deg, #eee4e1 0%, #f4f4f4 75%, #ffffff 100%);
  z-index: -1;
  pointer-events: none;
}

}

/* =========================
   講師紹介　追記
   追記位置：講師紹介CSSの末尾（既存指定の上書きではなく追加）
========================= */

/* timing（指示どおり0.5s） */
.p-instructors{
  --ins-dur: 500ms;
  --ins-ease: cubic-bezier(.15,.85,.2,1);
  --ins-y: 18px;
  --ins-x: 26px;
  --ins-after-media: 500ms; /* media完了後に開始 */
}

@media (prefers-reduced-motion: reduce){
  .p-instructors{
    --ins-dur: 1ms;
    --ins-after-media: 0ms;
  }
}

/* body は「入ったタイミング」で 0.5s にする */
.p-instructorsCard__body.js-reveal{
  --reveal-dur: 500ms;
  --reveal-ease: cubic-bezier(.15,.85,.2,1);
}

/* -------------------------
   1) media：0.5sで左右フェードイン
   （トリガーは figure.js-inview の is-inview）
------------------------- */
.has-reveal .p-instructorsCard__photo.js-inview .p-instructorsCard__media{
  opacity: 0;
  transform: translate3d(calc(var(--ins-x) * -1), 0, 0);
  transition:
    opacity var(--ins-dur) var(--ins-ease),
    transform var(--ins-dur) var(--ins-ease);
  will-change: opacity, transform;
}

/* wordLeft：右→左（= 右から入る） */
.has-reveal .p-instructorsCard--wordLeft .p-instructorsCard__photo.js-inview .p-instructorsCard__media{
  transform: translate3d(var(--ins-x), 0, 0);
}

.has-reveal .p-instructorsCard__photo.js-inview.is-inview .p-instructorsCard__media{
  opacity: 1;
  transform: translate3d(0,0,0);
}

/* -------------------------
   2) ribbons：media完了後、最後のspan→…の順で
      下→上フェードイン（各0.5s）
------------------------- */
.has-reveal .p-instructorsCard__photo.js-inview .p-instructorsCard__ribbon{
  opacity: 0;
  transform: translate3d(0, var(--ins-y), 0);
  transition:
    opacity var(--ins-dur) var(--ins-ease),
    transform var(--ins-dur) var(--ins-ease);
  will-change: opacity, transform;
}

.has-reveal .p-instructorsCard__photo.js-inview.is-inview .p-instructorsCard__ribbon{
  opacity: 1;
  transform: translate3d(0,0,0);
}

/* “コード内で一番下（= 最後のspan）から順” */
.has-reveal .p-instructorsCard__photo.js-inview .p-instructorsCard__ribbon:nth-last-child(1){
  transition-delay: var(--ins-after-media);                 /* 0.5s後 */
}
.has-reveal .p-instructorsCard__photo.js-inview .p-instructorsCard__ribbon:nth-last-child(2){
  transition-delay: calc(var(--ins-after-media) + 500ms);   /* 1.0s後 */
}
.has-reveal .p-instructorsCard__photo.js-inview .p-instructorsCard__ribbon:nth-last-child(3){
  transition-delay: calc(var(--ins-after-media) + 1000ms);  /* 1.5s後 */
}

/* -------------------------
   3) 英字：ribbonsと同タイミングで下→上 0.5s
------------------------- */
.has-reveal .p-instructorsCard__photo.js-inview::after{
  opacity: 0; /* 最終は既存の .16 に戻す */
  transform: translate3d(0, var(--ins-y), 0);
  transition:
    opacity var(--ins-dur) var(--ins-ease) var(--ins-after-media),
    transform var(--ins-dur) var(--ins-ease) var(--ins-after-media);
  will-change: opacity, transform;
}

.has-reveal .p-instructorsCard__photo.js-inview.is-inview::after{
  opacity: .16;
  transform: translate3d(0,0,0);
}

.has-reveal .p-instructorsCard__photo.js-inview.is-inview::after{
	font-size: 50px;
}


/* =========================
   コーチ紹介 List (Subpage)
   ========================= */
.p-coachList {
  display: grid;
  gap: var(--space-md);
  margin-top: var(--space-lg);
}

@media (min-width: 1024px) {
  .p-coachList {
    grid-template-columns: repeat(2, 1fr); /* PCは2列 */
  gap: var(--space-md);
	  max-width: 920px;
	  margin: 80px auto 40px;
  }
  /* 1枚目だけPCで横幅100%（2カラムぶん） */
  .p-coachCard--full {
    grid-column: 1 / -1;
  }
}

/* Card Style */
.p-coachCard {
  background: #fff;
  border: 1px solid rgba(0,0,0,0.08);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0,0,0,0.05);
  display: flex;
  flex-direction: column;
}

/* Head (Photo + Name) */
.p-coachCard__head {
  background: var(--brand-red); /* ブランドカラー背景 */
  color: #fff;
  padding: 24px;
  display: flex;
  align-items: center;
  gap: 20px;
}

.p-coachCard__thumb {
  margin: 0;
  width: 90px;
  height: 90px;
  flex: 0 0 90px;
  border-radius: 999px;
  overflow: hidden;
  border: 3px solid #fff;
  background: #fff;
}

.p-coachCard__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.p-coachCard__meta {
  flex: 1;
}

.p-coachCard__univ {
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 6px;
  opacity: 0.95;
  line-height: 1.4;
}

.p-coachCard__name {
  margin: 0;
  font-size: 24px;
  font-weight: 700;
  line-height: 1.2;
}

/* Body */
.p-coachCard__body {
  padding: 24px;
  flex: 1 1 auto;
  font-size: 16px;
  line-height: 1.8;
}

.p-coachCard__body p {
  margin: 0 0 1em;
}

.p-coachCard__body p:last-child {
  margin-bottom: 0;
}

.p-coachCard__subTitle {
  margin: 0 0 25px;
  font-size: 20px;
  font-weight: 700;
  color: var(--brand-red);
  display: inline-block;
}

/* Recommend Box (塾長からの紹介) */
.p-coachCard__recommend {
  margin-top: 24px;
  background: #fdf6f5; /* 薄い赤系の背景 */
  padding: 18px;
  border-radius: 8px;
  border-left: 4px solid var(--brand-red);
}

.p-coachCard__recTitle {
  margin: 0 0 10px;
  font-size: 16px;
  font-weight: 700;
  color: #111;
  display: flex;
  align-items: center;
  gap: 8px;
}


.p-coachCard__recommend p {
  font-size: 14px;
  margin-bottom: 1em;
}

.p-coachCard__recommend p:last-child {
  margin-bottom: 0;
}

.p-coachCard .p-instructorsCard__mark{
    top: 15px;
}


/* スマホ調整 */
@media (max-width: 767px) {
  .p-coachCard__head {
    flex-direction: column;
    text-align: center;
    padding: 20px;
  }
  
  .p-coachCard__meta {
    width: 100%;
  }
.p-coachCard__univ {
  font-size: 13px;
}

}


/* =========================
   アンケート
   ========================= */

/* コンテナ全体 */
.voice-container {
    width: 100%;
    margin: 0 auto;
}

/* 各質問グループの余白 */
.voice-group {
    margin-bottom: 100px;
    scroll-margin-top: 100px; /* 目次からのジャンプ位置調整 */
}

/* 質問タイトル */
.voice-title {
    font-size: 1.2rem;
    font-weight: bold;
    margin-bottom: 20px;
    padding-left: 10px;
    border-left: 5px solid #b0161b; 
    color: #333;
}

/* グリッドレイアウト（PC2列 / スマホ1列） */
.voice-grid {
    display: grid;
    grid-template-columns: 1fr; /* スマホ：1列 */
    gap: 40px; /* 画像同士の間隔 */
    margin-bottom: 40px;
}

@media (min-width: 768px) {
    .voice-grid {
        grid-template-columns: 1fr 1fr; /* PC：2列 */
    }
}

/* 画像アイテムの装飾 */
.voice-item img {
    width: 100%;
    height: auto;
    vertical-align: bottom;
    border: 1px solid #e0e0e0;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
    transition: opacity 0.3s ease, transform 0.3s ease;
}

/* ホバー時の動き */
.voice-item a:hover img {
    opacity: 0.85;
    transform: translateY(-2px);
}

/* 非表示用クラス */
.voice-item.is-hidden {
    display: none;
}

/* もっと見るボタン */
.voice-more-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 300px;
    margin: 0 auto;
    padding: 12px 0;
    background-color: #f9f9f9;
    color: #333;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 0.95rem;
    font-weight: bold;
    cursor: pointer;
    transition: background-color 0.3s;
}

.voice-more-btn:hover {
    background-color: #eee;
}

.voice-icon {
    display: inline-block;
    margin-left: 8px;
    font-size: 0.8em;
}


/* =========================
   Masonry Gallery (Grid + JS) + Lightbox
   ========================= */

.p-masonryGal{
  /* 本文幅の制約を突き抜けて 100vw にする（固定ページ内設置向け） */
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
  width: 100vw;

  padding-inline: var(--pad-x, 20px);
  padding-block: var(--space-md, 40px);
}

.p-masonryGal__inner{
  /* PCでもコンテンツ幅は 100vw のまま（要望通り） */
  width: 100%;
  margin-inline: auto;
}

.p-masonryGal__grid{
  --gap: 12px;
  --radius: 12px;
  --row-h: 8px; /* JS計算用の基準行高さ（小さいほど滑らか） */

  display: grid;
  grid-auto-flow: row dense;
  grid-auto-rows: var(--row-h);
  gap: var(--gap);

  /* SP: 2列 */
  grid-template-columns: repeat(2, minmax(0, 1fr));

  list-style: none;
  padding: 0;
  margin: 0;
}

@media (min-width: 768px){
  .p-masonryGal__grid{ --gap: 16px; }
}

/* 最大7列：幅に応じて段階的に増やす（リキッド感） */
@media (min-width: 520px){  .p-masonryGal__grid{ grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 720px){  .p-masonryGal__grid{ grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 960px){  .p-masonryGal__grid{ grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (min-width: 1200px){ .p-masonryGal__grid{ grid-template-columns: repeat(6, minmax(0, 1fr)); } }
@media (min-width: 1440px){ .p-masonryGal__grid{ grid-template-columns: repeat(7, minmax(0, 1fr)); } }

.p-masonryGal__cell{
  /* JSが grid-row-end を付ける前提 */
  margin: 0;
}

.p-masonryGal__item{
  width: 100%;
  display: block;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: zoom-in;
  text-align: left;

  border-radius: var(--radius);
  overflow: hidden;

  /* shadow */
  box-shadow: 0 10px 24px rgba(0,0,0,.12);
  transform: translateZ(0);
  transition: transform .25s ease, box-shadow .25s ease;
}

.p-masonryGal__item:focus-visible{
  outline: 2px solid rgba(0,0,0,.45);
  outline-offset: 3px;
}

.p-masonryGal__item:hover{
  transform: translateY(-2px);
  box-shadow: 0 14px 34px rgba(0,0,0,.16);
}

.p-masonryGal__img{
  display: block;
  width: 100%;
  height: auto;
}
/* ========== Lightbox ========== */

.c-lightbox[hidden]{ display: none !important; }

.c-lightbox{
  position: fixed;
  inset: 0;
  z-index: 9999;

  /* close時の初期状態 */
  opacity: 0;
  pointer-events: none;
  transition: opacity .28s ease;
}

.c-lightbox.is-open{
  opacity: 1;
  pointer-events: auto;
}

.c-lightbox__backdrop{
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.72);

  opacity: 0;
  transition: opacity .28s ease;
}

.c-lightbox.is-open .c-lightbox__backdrop{
  opacity: 1;
}

.c-lightbox__dialog{
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 18px;
}

.c-lightbox__img{
  max-width: min(96vw, 1200px);
  max-height: 86vh;
  width: auto;
  height: auto;
  border-radius: 12px;
  box-shadow: 0 18px 60px rgba(0,0,0,.35);
  background: #fff;

  /* open/close時のフェード */
  opacity: 0;
  transform: scale(.985);
  transition: opacity .28s ease, transform .28s ease;
}

.c-lightbox.is-open .c-lightbox__img{
  opacity: 1;
  transform: scale(1);
}

.c-lightbox__close{
  position: absolute;
  top: 14px;
  right: 14px;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 999px;
  background: rgba(255,255,255,.92);
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(0,0,0,.18);
}

.c-lightbox__close::before,
.c-lightbox__close::after{
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 18px;
  height: 2px;
  background: #111;
  border-radius: 99px;
  transform-origin: center;
}
.c-lightbox__close::before{ transform: translate(-50%, -50%) rotate(45deg); }
.c-lightbox__close::after { transform: translate(-50%, -50%) rotate(-45deg); }

/* スクロールロック（閉じる完了まで維持） */
html.is-lightboxOpen,
html.is-lightboxOpen body{
  overflow: hidden;
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce){
  .c-lightbox,
  .c-lightbox__backdrop,
  .c-lightbox__img{
    transition: none;
  }
}

/* =========================
   Flow steps（NP掛け払い風）
   ※ 旧 .p-flow__step::before/after & .p-flowCard 系はこのブロックで置換
   ========================= */

.p-flow__steps{
  --flow-marker-w: 34px; /* 左カラム幅 */
  --flow-marker-x: calc(var(--flow-marker-w) / 2);
  list-style: none;
  margin: 0 auto 80px;
  padding: 0;
  display: grid;
  gap: 22px;
  max-width: 980px;
}

@media (min-width: 1024px){
  .p-flow__steps{
    --flow-marker-w: 104px;
    margin: 40px auto 80px;
    gap: 26px;
  }
}

/* =========================
   Flow line（直線＋流れるアニメ）
   下端を .p-flowStep__card の一番下に揃える版
   ========================= */

.p-flowStep{
  position: relative;
}

/* ラインは article 側に描く（カードの高さに揃う） */
.p-flow__step:not(:last-child) .p-flowStep::after{
  content:"";
  position: absolute;

  /* 左カラム（STEP番号）の中央 */
  left: calc((var(--flow-marker-w) / 2) - 1px);

  /* “STEP/番号”の下あたりから開始（必要なら微調整OK） */
  top: 100px;

  /* ここが重要：articleの下端＝カード下端に揃う */
  bottom: 0;

  width: 2px;
  border-radius: 999px;
  pointer-events: none;

  /* 先細り禁止：ベースは完全な直線（色/太さは維持） */
  background-image:
    linear-gradient(
      180deg,
      rgba(179, 64, 64, .35) 0%,
      rgba(179, 64, 64, .35) 100%
    ),
    linear-gradient(
      180deg,
      rgba(179, 64, 64, .70) 0%,
      rgba(179, 64, 64, .70) 100%
    );

  /* ①ベース直線：全長 ②動く棒：短い棒 */
  background-size: 2px 100%, 2px 30px;
  background-repeat: no-repeat, no-repeat;

  /* ①固定 ②だけ上→下に流す */
  background-position: center top, center -40px;

  animation: flowLine 2.0s ease-in-out infinite;
}

/* 動く棒のアニメ（元のロジック踏襲） */
@keyframes flowLine{
  0%{
    background-position: center top, center -40px;
  }
  100%{
    background-position: center top, center calc(100% + 40px);
  }
}

/* prefers-reduced-motion：アニメ停止（直線は残す） */
@media (prefers-reduced-motion: reduce){
  .p-flow__step:not(:last-child) .p-flowStep::after{
    animation: none;
    background-position: center top, center 0;
  }
}


/* 1ステップ全体 */
.p-flowStep{
  display: grid;
  grid-template-columns: var(--flow-marker-w) 1fr;
  align-items: start;
  column-gap: 14px;
}

/* 左のSTEP表示 */
.p-flowStep__marker{
  display: grid;
  justify-items: center;
  align-content: start;
  row-gap: 6px;
  padding-top: 6px;
  color: var(--brand-red, #b34040);
}

.p-flowStep__markerLabel {
    font-size: 14px;
    text-transform: uppercase;
    opacity: .85;
    font-weight: 600;
}

.p-flowStep__markerNum{
  font-size: 44px;
  line-height: 1;
  font-weight: 700;
}

/* 右のカード */
.p-flowStep__card{
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  padding: 20px 18px;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 12px 28px rgba(0,0,0,.06);
}

@media (min-width: 768px){
  .p-flowStep__card{
    grid-template-columns: 1fr 210px; /* 右に小さめ画像 */
    align-items: start;
    gap: 18px;
    padding: 22px 22px;
  }
}

@media (min-width: 1024px){
  .p-flowStep__card{
    grid-template-columns: 1fr 240px;
    padding: 24px 26px;
  }
}

.p-flowStep__title{
  margin: 0 0 10px;
  font-size: 18px;
  line-height: 1.35;
  font-weight: 700;
}

@media (min-width: 1024px){
  .p-flowStep__title{
    font-size: 20px;
  }
}

.p-flowStep__text{
  margin: 0;
  font-size: 14px;
  line-height: 1.9;
    text-align: justify;
}

@media (min-width: 1024px){
  .p-flowStep__text{
    font-size: 15px;
  }
}

.p-flowStep__text + .p-flowStep__text{
  margin-top: 10px;
}

.p-flowStep__note{
  margin: 10px 0 0;
  font-size: 12px;
  line-height: 1.7;
  color: var(--text-muted, #666);
}
/* STEP6（最後）にもラインを出す：短めにして“終点感”を出す */
.p-flow__step:last-child .p-flowStep::after{
  content:"";
  position: absolute;

  left: calc((var(--flow-marker-w) / 2) - 1px);
  top: 100px;
  bottom: 0;

  width: 2px;
  border-radius: 999px;
  pointer-events: none;

  /* 直線（先細り無し）＋流れる棒（同仕様） */
  background-image:
    linear-gradient(
      180deg,
      rgba(179, 64, 64, .35) 0%,
      rgba(179, 64, 64, .35) 100%
    ),
    linear-gradient(
      180deg,
      rgba(179, 64, 64, .70) 0%,
      rgba(179, 64, 64, .70) 100%
    );

  background-size: 2px 100%, 2px 30px;
  background-repeat: no-repeat, no-repeat;
  background-position: center top, center -40px;

  animation: flowLine 2.0s ease-in-out infinite;
}

/* prefers-reduced-motion：最後STEPも止める */
@media (prefers-reduced-motion: reduce){
  .p-flow__step:last-child .p-flowStep::after{
    animation: none;
    background-position: center top, center 0;
  }
}

/* 右の画像（控えめ・流れ優先） */
.p-flowStep__illust{
  margin: 0;
  border-radius: 16px;
  overflow: hidden;
  background: #f3f3f3;
  border: 1px solid rgba(0,0,0,.06);
  aspect-ratio: 4 / 3;
}

@media (max-width: 767px){
  .p-flowStep__illust{
    max-width: 320px;
  }
}

.p-flowStep__img{
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transform: scale(1.01);
  transition: transform .6s ease;
}

@media (hover:hover) and (pointer:fine){
  .p-flowStep__card:hover .p-flowStep__img{
    transform: scale(1.05);
  }
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce){
  .p-flowStep__img{
    transition: none;
  }
}

.p-cta.box-100vw{
	padding: 100px 0;
	margin-bottom: -80px;
}



/*  アンケート（番号バッジ型） */
.p-surveyNav2{
  --sv-accent: var(--brand-red, #b0161b);
  --sv-border: rgba(176, 22, 27, .35);
  --sv-badge: rgba(176, 22, 27, .85);
  --sv-text: #111;

  list-style: none !important;
  margin: 0 auto 80px;         /* 中央寄せ */
  padding: 0 !important;
  max-width: 920px;       /* PC幅指定（SPでも上限として効く） */

  display: grid;
  grid-template-columns: 1fr; /* 常に1列 */
  gap: 10px;
}

.p-surveyNav2 li{
  padding-top: 0; /* 既存 .ul_list li の上書き */
  font-size: 16px;
}

/* 1項目 */
.p-surveyNav2 a{
  position: relative;
  display: block;
  padding: 10px 16px 10px 64px; /* 左バッジ分 */
  border: 1px solid var(--sv-badge);
  border-radius: 2px;          /* 角は控えめ（見本寄せ） */
  background: #fff;
  color: var(--sv-text);
  text-decoration: none;
  line-height: 1.55;
  font-weight: 600;
}

/* 左の番号バッジ */
.p-surveyNav2 a::before{
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 46px;
  background: var(--sv-badge);
}

/* バッジ内の数字（Q1〜から“数字だけ”を表示） */
.p-surveyNav2 a::after{
  content: attr(data-qnum);
  position: absolute;
  left: 0;
  top: 50%;
  width: 46px;
  transform: translateY(-50%);
  text-align: center;
  color: #fff;
  font-weight: 800;
  letter-spacing: .02em;
}

/* hover は派手すぎない程度 */
.p-surveyNav2 a:hover{
  border-color: rgba(176, 22, 27, .55);
  background: rgba(176, 22, 27, .04);
}

/* SP：文字が長いので少し詰める */
@media (max-width: 767px){
.p-surveyNav2 li{
  font-size: 14px;
}
  .p-surveyNav2 a{
    padding: 12px 14px 12px 58px;
    font-weight: 600;
  }
  .p-surveyNav2 a::before,
  .p-surveyNav2 a::after{
    width: 42px;
  }
}



/* =========================
   Campuses（教室紹介 下層）
   ========================= */

.p-campuses{
  padding-block: var(--space-lg, 60px);
}

.p-campuses__inner{
  margin-inline: auto;
  max-width: 1440px;
}

.p-campuses__head{
  max-width: 980px;
}

@media (min-width: 1024px){
  .p-campuses__head{
    text-align: center;
    margin-inline: auto;
  }
}

.p-campuses__sub{
  margin: 0 0 10px;
  font-size: 12px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--brand-red, #b34040);
}

.p-campuses__title{
  margin: 0 0 14px;
  font-size: var(--sec-title-fz, clamp(22px, 3.2vw, 34px));
  line-height: 1.2;
  font-weight: 700;
}

.p-campuses__lead{
  margin: 0;
  font-size: 15px;
  line-height: 1.9;
  color: var(--text-muted, #555);
}

.p-campusesNav{
  margin-top: 18px;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

@media (min-width: 1024px){
  .p-campusesNav{
    justify-content: center;
  }
}

.p-campusesNav__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid rgba(179,64,64,.25);
  background: #fff;
  color: var(--text, #222);
  font-weight: 700;
  text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

@media (hover:hover) and (pointer:fine){
  .p-campusesNav__btn:hover{
    transform: translateY(-1px);
    box-shadow: 0 12px 22px rgba(0,0,0,.08);
    border-color: rgba(179,64,64,.4);
  }
}

/* campus card */
.p-campus{
  margin-top: 26px;
}

@media (min-width: 1024px){
  .p-campus{
    margin-top: 34px;
  }
}

.p-campus__card{
  background: #fff;
  border-radius: 22px;
  box-shadow: 0 16px 34px rgba(0,0,0,.06);
  padding: 20px 18px;
}

@media (min-width: 1024px){
  .p-campus__card{
    padding: 28px 28px;
  }
}

.p-campus__head{
  display: grid;
  gap: 8px;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(0,0,0,.06);
  margin-bottom: 18px;
}

@media (min-width: 1024px){
  .p-campus__head{
    grid-template-columns: 1fr auto;
    align-items: end;
  }
}

.p-campus__name{
  margin: 0;
  font-size: clamp(18px, 2.2vw, 24px);
  font-weight: 800;
  line-height: 1.25;
}

.p-campus__en{
  margin: 0;
  font-size: var(--sec-sub-fz, 18px);
  font-weight: 700;
  display: inline-flex;
  align-items: center;
}

/* “—” を自動付与（span混在でも崩れない：gap無し） */
.p-campus__en::before{
  content: "";
  width: 18px;
  height: 2px;
  background: var(--brand-red, #b34040);
  border-radius: 999px;
  flex: none;
  transform: translateY(1px);
  margin-right: 12px;
}

/* layout */
.p-campus__grid{
  display: grid;
  gap: 18px;
}

@media (min-width: 1024px){
  .p-campus__grid{
    grid-template-columns: 1.05fr .95fr;
    gap: 22px;
    align-items: start;
  }
}

/* info list */
.p-campus__info{
  list-style: none;
  margin: 0 0 18px;
  padding: 0;
  display: grid;
  gap: 12px;
}

.p-campus__row{
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 10px;
  align-items: start;
}

.p-campus__ico{
  width: 30px;
  height: 30px;
  border-radius: 8px;
  display: grid;
  place-items: center;
    position: relative;
    top: 2px;
}

.p-campus__ico img{
  width: 18px;
  height: 18px;
  display: block;
}

.p-campus__text{
  margin: 0;
  font-size: 18px;
  line-height: 1.85;
}

.p-campus__mapLink{
  font-size: 14px;
  line-height: 1.85;
  font-weight: 700;
  color: var(--brand-red, #b34040);
  text-decoration: none;
  border-bottom: 1px solid rgba(179,64,64,.35);
  width: fit-content;
}

@media (hover:hover) and (pointer:fine){
  .p-campus__mapLink:hover{
    border-bottom-color: rgba(179,64,64,.7);
  }
}

/* blocks */
.p-campus__block{
  margin-top: 40px;
}

.p-campus__blockTitle{
  margin: 0 0 10px;
  font-size: 20px;
  font-weight: 800;
  letter-spacing: .02em;
}

.p-campus__desc{
  margin: 0;
  font-size: 16px;
  line-height: 1.95;
    margin-bottom: 2em;
}

/* school list pills */
.p-campus__schools{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.p-campus__school{
  padding: 8px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,.04);
  border: 1px solid rgba(0,0,0,.06);
  font-size: 13px;
  line-height: 1;
  font-weight: 700;
}

/* media */
.p-campus__media{
  display: grid;
  gap: 14px;
}

.p-campus__photo{
  margin: 0;
  border-radius: 18px;
  overflow: hidden;
  background: #f3f3f3;
  border: 1px solid rgba(0,0,0,.06);
}

.p-campus__photoImg{
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.p-campus__mapFrame{
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid rgba(0,0,0,.06);
  background: #f3f3f3;
  aspect-ratio: 16 / 10;
}

.p-campus__mapFrame iframe{
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce){
  .p-campusesNav__btn{
    transition: none;
  }
}
/* =========================
   Records（合格実績 下層）
   ========================= */

.p-records{
  padding-block: var(--space-lg, 60px);
}

.p-records__inner{
  margin-inline: auto;
  max-width: 1440px;
}

/* Head */
.p-recordsHead{
  margin-bottom: 26px;
}

.p-recordsHead__grid{
  display: grid;
  gap: 16px;
  align-items: start;
}

@media (min-width: 1024px){
  .p-recordsHead__grid{
    grid-template-columns: 1fr 520px;
    gap: 26px;
    align-items: center;
  }
}

.p-recordsHead__sub{
  margin: 0 0 10px;
  font-size: 12px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--brand-red, #b34040);
}

.p-recordsHead__title{
  margin: 0 0 14px;
  font-size: var(--sec-title-fz, clamp(22px, 3.2vw, 34px));
  line-height: 1.2;
  font-weight: 800;
}

.p-recordsHead__lead{
  margin: 0;
  font-size: 18px;
  line-height: 1.9;
  color: var(--text-muted, #555);
}

.p-recordsBadges{
  list-style: none;
  margin: 14px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.p-recordsBadges__item{
  border-radius: 999px;
  font-size: 16px;
  line-height: 1;
  font-weight: 800;
  color: var(--brand-red, #b34040);
}

.p-recordsHead__photo{
  margin: 0;
  border-radius: 20px;
  overflow: hidden;
  background: #f3f3f3;
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 16px 34px rgba(0,0,0,.06);
}

.p-recordsHead__photoImg{
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* Groups */
.p-recordsGroups{
  display: grid;
  gap: 12px;
}

@media (min-width: 1024px){
  .p-recordsGroups{
    gap: 14px;
  }
}

/* details card */
.p-recordsGroup{
  background: #fff;
  border-radius: 18px;
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 16px 34px rgba(0,0,0,.04);
  overflow: hidden;
}

.p-recordsGroup__summary{
  list-style: none;
  cursor: pointer;
  user-select: none;
  padding: 16px 16px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  align-items: center;
}

@media (min-width: 1024px){
  .p-recordsGroup__summary{
    padding: 18px 20px;
  }
}

/* marker remove */
.p-recordsGroup__summary::-webkit-details-marker{
  display: none;
}

.p-recordsGroup__label{
  font-weight: 900;
  letter-spacing: .02em;
}

/* arrow */
.p-recordsGroup__summary::after{
  content: "";
  width: 12px;
  height: 12px;
  border-right: 2px solid rgba(0,0,0,.45);
  border-bottom: 2px solid rgba(0,0,0,.45);
  transform: rotate(45deg);
  transition: transform .22s ease;
}

.p-recordsGroup[open] .p-recordsGroup__summary::after{
  transform: rotate(-135deg);
}

/* body */
.p-recordsGroup__body{
  padding: 0 16px 16px;
}

@media (min-width: 1024px){
  .p-recordsGroup__body{
    padding: 0 20px 20px;
  }
}

/* list */
.p-recordsList{
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
  font-size: 14px;
  line-height: 1.8;
}

@media (min-width: 768px){
  .p-recordsList{
    grid-template-columns: 1fr 1fr;
    gap: 10px 18px;
  }
}

@media (min-width: 1024px){
  .p-recordsList{
    font-size: 15px;
  }
}

.p-recordsList li{
  position: relative;
  padding-left: 14px;
}

.p-recordsList li::before{
  content: "";
  position: absolute;
  left: 0;
  top: .62em;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: rgba(179,64,64,.35);
}

/* middle image */
.p-recordsMidPhoto{
  margin: 10px 0;
  border-radius: 18px;
  overflow: hidden;
  background: #f3f3f3;
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 16px 34px rgba(0,0,0,.04);
}

.p-recordsMidPhoto__img{
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 21 / 9;
  object-fit: cover;
}

/* note */
.p-recordsNote{
  margin: 14px 0 0;
  font-size: 12px;
  line-height: 1.7;
  color: var(--text-muted, #666);
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce){
  .p-recordsGroup__summary::after{
    transition: none;
  }
}
/* バッジ（リンクボタン）：シンプルhover／ボーダー1本だけ */
.p-recordsBadges__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;

  padding: 10px 14px;
  border-radius: 999px;

  /* 二重見え対策：borderは1本、影なし */
  border: 1px solid rgba(179,64,64,.28);
  background: rgba(179,64,64,.06);

  color: var(--brand-red, #b34040);
  font: inherit;
  font-size: 12px;
  line-height: 1;
  font-weight: 800;
  text-decoration: none;

  /* 押す演出を撤去 */
  box-shadow: none;
  transform: none;

  transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}

/* hoverは色変化のみ */
@media (hover:hover) and (pointer:fine){
  .p-recordsBadges__btn:hover{
    background: var(--brand-red, #b34040);
    color: #fff;
    border-color: var(--brand-red, #b34040);
  }
}

/* フォーカスは最小限（ボーダー2重に見えないよう外側だけ） */
.p-recordsBadges__btn:focus-visible{
  outline: 3px solid rgba(179,64,64,.25);
  outline-offset: 3px;
}

/* reduced motion */
@media (prefers-reduced-motion: reduce){
  .p-recordsBadges__btn{
    transition: none;
  }
}
/* =========================
   Essay split（テキスト＋画像）
   ========================= */

.p-essaySplit{
  display: flex;
  flex-direction: column; /* SP：縦積み（画像は下） */
  gap: 20px;
  align-items: flex-start;
}

.p-essaySplit__text{
  flex: 1 1 auto;
  min-width: 0;
}

/* 最後の段落だけ、画像との間隔を詰める（u-prose の p が 3em と大きいので調整） */
.p-essaySplit__text :where(p:last-child){
  margin-bottom: 1.6em;
}

.p-essaySplit__media{
  margin: 0;
  width: 100%;
  max-width: 420px;   /* SP：上限 */
  align-self: center; /* SP：中央寄せ */
}

.p-essaySplit__media img{
  width: 100%;
  height: auto;
  display: block;
}

@media (min-width: 1024px){
  .p-essaySplit{
    flex-direction: row; /* PC：横並び */
    gap: clamp(18px, 3vw, 32px);
    align-items: flex-start;
  }

  /* PCでは上限を外して、width指定が効くようにする */
  .p-essaySplit__media{
    max-width: none;
    align-self: auto;
    flex: 0 0 auto;
    width: clamp(240px, 22vw, 320px); /* 通常サイズ */
  }

  /* “ワイド”指定（2つ目など） */
  .p-essaySplit--mediaWide .p-essaySplit__media{
    width: clamp(360px, 34vw, 460px);
  }

  /* 反転（PCのみ） */
  .p-essaySplit--reverse{
    flex-direction: row-reverse;
  }
}


/* =========================
   h2 logo icon（任意のh2だけ）
   ========================= */

/* h2 に u-h2Logo を付けたものだけアイコン表示 */
h2.u-h2Logo{
  position: relative;
  padding-left: 70px; /* アイコン分の余白 */
}

h2.u-h2Logo::before{
  content: "";
  position: absolute;
  left: 0;
    top: -0.15em;
    width: 60px;
    height: 60px;
  background: url("/img/ico_logo.svg") center / contain no-repeat;
}

/* SPは少し小さく */
@media (max-width: 767px){
  h2.u-h2Logo{
    padding-left: 50px;
  }
  h2.u-h2Logo::before{
    width: 42px;
    height: 42px;
  }
}


/* =========================
   Parent Advisor（P24）
   ========================= */
.p-parentAdvisor{
  padding: var(--space-lg) 0 var(--space-xl);
}

.p-parentAdvisor__inner{
  max-width: 1440px;
  margin-inline: auto;
  /*padding-inline: var(--pad-x, 20px);*/
}

.p-parentAdvisor__title{
  margin: 0 0 22px;
  font-weight: 800;
  font-size: clamp(26px, 3.1vw, 48px);
  letter-spacing: .02em;
  color: var(--brand-red, #b32924);
}

/* ===== Top（写真＋紹介カード） ===== */
.p-parentAdvisor__top{
  display: grid;
  grid-template-columns: 1fr; /* SP */
  gap: 16px;
  align-items: start;
}

.p-parentAdvisor__hero{
  position: relative;
  margin: 0;
  overflow: hidden;
  background: #f2f2f2;
}

.p-parentAdvisor__hero img{
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

/* 写真左下のキャプション */
.p-parentAdvisor__heroCap{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 14px 16px 14px;
  color: #fff;
  background: linear-gradient(0deg, rgba(0,0,0,.42) 0%, rgba(0,0,0,0) 100%);
}

.p-parentAdvisor__heroRole{
  display: block;
  font-weight: 700;
  letter-spacing: .02em;
  font-size: 14px;
  opacity: .95;
}

.p-parentAdvisor__heroName{
  display: block;
  margin-top: 4px;
  font-weight: 800;
  letter-spacing: .02em;
  font-size: clamp(22px, 2.2vw, 30px);
}

.p-parentAdvisor__intro{
  position: relative;
  padding: 22px 20px;
  background: rgba(179, 41, 36, .16);
  color: #111;
}

.p-parentAdvisor__introTitle{
  margin: 15px 0 30px;
  font-weight: 800;
  font-size: clamp(18px, 1.8vw, 24px);
  letter-spacing: .02em;
}

.p-parentAdvisor__introBody{
  font-size: clamp(15px, 1.05vw, 17px);
  line-height: 2.0;
  letter-spacing: .02em;
}

.p-parentAdvisor__introBody p{
  margin: 0 0 1.4em;
}
.p-parentAdvisor__introBody p:last-child{
  margin-bottom: 0;
}

/* 右上の丸写真 */
.p-parentAdvisor__introPhoto{
  position: absolute;
  top: -22px;
  right: 16px;
  width: 104px;
  height: 104px;
  margin: 0;
  border-radius: 999px;
  overflow: hidden;
  border: 6px solid #fff;
  box-shadow: 0 6px 14px rgba(0,0,0,.18);
  background: #fff;
}

.p-parentAdvisor__introPhoto img{
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

/* ===== Middle（2カラム） ===== */
.p-parentAdvisor__cols{
  margin-top: var(--space-md);
  display: grid;
  grid-template-columns: 1fr; /* SP */
  gap: 22px;
}

.p-parentAdvisor__prose{
  font-size: clamp(16px, 1.1vw, 18px);
  line-height: 2.0;
  letter-spacing: .02em;
  color: #111;
}

.p-parentAdvisor__prose p{
  margin: 0 0 2.6em;
}
.p-parentAdvisor__prose p:last-child{
  margin-bottom: 0;
}

/* ===== Bottom（SP：縦積み / PC：2カラム） ===== */
.p-parentAdvisor__bottom{
  margin-top: var(--space-lg);
}

/* SP：画像は上（そのまま） */
.p-parentAdvisor__bottomPhoto{
  margin: 0 auto 18px;
}

.p-parentAdvisor__bottomPhoto img{
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.p-parentAdvisor__sign{
  margin-top: 1.2em;
  text-align: right;
  font-weight: 700;
  line-height: 1.6;
}

/* PC：2カラム（左＝本文 / 右＝画像） */
@media (min-width: 1024px){
  .p-parentAdvisor__bottom{
    margin-inline: auto;

    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 600px);
    gap: 40px;
    align-items: start;
  }

  /* 本文＝左 */
  .p-parentAdvisor__bottomProse{
    grid-column: 1;
    grid-row: 1;
        padding-top: 0;
  }

  /* 画像＝右 */
  .p-parentAdvisor__bottomPhoto{
    grid-column: 2;
    grid-row: 1;
    margin: 0;
    max-width: none;
  }
	
.p-parentAdvisor__heroRole{
  font-size: 18px;
}
}


/* ===== PC（配置はPDF寄せ：上段は2カラム、下段は1カラム） ===== */
@media (min-width: 1024px){
  .p-parentAdvisor__top{
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: 28px;
  }

  /* PCでも1カラム固定に変更 */
  .p-parentAdvisor__cols{
    grid-template-columns: 1fr;
    gap: 22px; /* SPと揃える（お好みで 28〜36pxでもOK） */
    margin-inline: auto;  /* セクション中央寄せ */
  }

  .p-parentAdvisor__intro{
    padding: 26px 24px;
  }

  .p-parentAdvisor__introPhoto{
    right: 20px;
    width: 112px;
    height: 112px;
  }
  /* ===== Top：左右の高さを揃える（data-pa-equalh="1" の時だけ有効） ===== */
  .p-parentAdvisor__top[data-pa-equalh="1"]{
    align-items: stretch; /* ここが肝：同じ行の中で高さを揃える */
  }

  /* 左右ブロック自体を行の高さに追従 */
  .p-parentAdvisor__top[data-pa-equalh="1"] .p-parentAdvisor__hero,
  .p-parentAdvisor__top[data-pa-equalh="1"] .p-parentAdvisor__intro{
    height: 100%;
  }

  /* 画像をfigureの高さにフィット（PCでは比率固定を解除して埋める） */
  .p-parentAdvisor__top[data-pa-equalh="1"] .p-parentAdvisor__hero img{
    height: 100%;
    aspect-ratio: auto; /* 4/3固定を外す（重要） */
    object-fit: cover;
  }
}


/* =========================
   Breadcrumb
   ========================= */
.c-breadcrumb {
  width: 100%;
}

.c-breadcrumb__inner {
  margin-inline: auto;
  max-width: 1440px;
  padding-inline: var(--pad-x, 20px);
  padding-block: 12px;
}

.c-breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 12px;
  line-height: 1.5;
}

.c-breadcrumb__item + .c-breadcrumb__item::before {
  content: "/";
  margin: 0 0.6em;
  opacity: 0.5;
}

.c-breadcrumb__link {
  color: inherit;
  text-decoration: none;
}

.c-breadcrumb__link:hover {
  text-decoration: underline;
}

.c-breadcrumb__current {
  font-weight: 500;
}

@media (min-width: 1024px) {
  .c-breadcrumb__list {
    font-size: 13px;
  }
}
/* =========================
   Breadcrumb（パンくず）
   ========================= */
.c-breadcrumb{
  width: 100%;
}

.c-breadcrumb__inner{
  margin-inline: auto;
  max-width: 1440px;
  padding-block: 20px 0;  
  padding-inline: clamp(20px, 5vw, 80px); /* SP〜PCの共通余白 */
}

.c-breadcrumb__list{
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end; /* 右寄せ */
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 12px;
  line-height: 1.5;
}

.c-breadcrumb__item + .c-breadcrumb__item::before{
  content: "/";
  margin: 0 .6em;
  opacity: .5;
}

.c-breadcrumb__link{
  color: inherit;
  text-decoration: none;
}

.c-breadcrumb__link:hover{
  text-decoration: underline;
}

.c-breadcrumb__current{
  font-weight: 500;
}

/* subpage-hero を使うページで「パンくず上の余白を詰めたい」ケース */
.bread_subB .c-breadcrumb__inner{
  padding-top: 0;
}

@media (min-width: 1024px){
  .c-breadcrumb__list{
    font-size: 13px;
  }
.c-breadcrumb__inner{
  padding-block: 40px 0;  
}
}


/* =========================
   Pass Voice List（合格体験記）
   ========================= */

.p-success_s{
	max-width: 920px;
	margin: 0 auto;
}

.p-passVoice__inner{
  max-width: 1440px;
  margin-inline: auto;
  padding-block: 30px 80px;
}

.p-passVoiceCard{
  display: grid;
  grid-template-columns: 350px 1fr;
  gap: 40px;
  padding-block: 60px;
  border-bottom: 1px dotted #ccc;
}

.p-passVoiceCard__thumb{
  display: block;
  width: 100%;
  max-width: 350px;
}

.p-passVoiceCard__thumb img{
  width: 100%;
  height: auto;
  display: block;
  border-radius: 6px;
}

.p-passVoiceCard__body{
  min-width: 0;
}

.p-passVoiceCard__title{
  margin: 0 0 14px;
  font-weight: 700;
  font-size: clamp(18px, 1.6vw, 22px);
  line-height: 1.65;
}

.p-passVoiceCard__meta{
  margin: 0 0 18px;
  font-size: 18px;
  line-height: 1.6;
}

/* buttons：PCは横並び */
.p-passVoiceCard__actions{
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.p-passVoiceCard__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0.6em 1.2em;
  text-decoration: none;
  text-align: center;
  color: #fff;
  background: #B32924;
  border: 2px solid #B32924;
  border-radius: 6px;
  transition: background-color .25s ease, color .25s ease, transform .25s ease;
  flex: 0 1 260px;  /* 2つ横並びにしやすい */
}

.p-passVoiceCard__btn:hover{
  background: #fff;
  color: #B32924;
}

.pass_cta{	
    width: 100vw;
   margin: 0 calc(50% - 50vw);
	margin-bottom: -102px!important;
    padding: 80px 0!important;
}

/* SP：縦積み */
@media (max-width: 767px){
  .p-passVoice__inner{
    padding-block: 0px 80px;
  }

  .p-passVoiceCard{
    grid-template-columns: 1fr;
    gap: 18px;
    padding-block: 0 80px;
  }

  .p-passVoiceCard__thumb{
    max-width: 100%;
  }

  .p-passVoiceCard__actions{
    flex-direction: column;
    gap: 12px;
  }

  .p-passVoiceCard__btn{
    width: 100%;
    flex: 1 1 auto;
  }
.p-passVoiceCard__meta{
  margin: 20px 0 40px;
}
.p-success__pager a{
		display: block!important;
		text-align: center;
	}
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce){
  .p-passVoiceCard__btn{
    transition: none;
  }
}

/* =========================
   Subpage: Guardian Voices（在校生の保護者の声）
   ========================= */

.p-guardianVoices{
  padding-block: var(--space-lg, 60px);
}

.p-guardianVoices__inner{
  margin-inline: auto;
  max-width: 1440px;
}

.p-guardianVoices__head{
  margin-bottom: var(--space-lg, 60px);
}

.p-guardianVoices__title{
  margin: 0 0 10px;
  font-size: clamp(22px, 2.4vw, 32px);
  font-weight: 600;
  letter-spacing: .04em;
}

.p-guardianVoices__lead{
  margin: 0;
  font-size: clamp(13px, 1.3vw, 15px);
  line-height: 1.9;
  opacity: .85;
}

.p-guardianVoices__item{
  display: flow-root; /* floatを内包（clearfix代替） */
}

.p-guardianVoices__item + .p-guardianVoices__item{
  margin-top: var(--space-xl, 80px);
}

.p-guardianVoices__photo{
  width: min(520px, 46%);
}

.p-guardianVoices__photo img{
  display: block;
  width: 100%;
  height: auto;
  border-radius: 12px;
}

.p-guardianVoices__photo--right{
  float: right;
  margin: 0 0 var(--space-md, 40px) var(--space-lg, 60px);
}

.p-guardianVoices__photo--left{
  float: left;
  margin: 0 var(--space-lg, 60px) var(--space-md, 40px) 0;
}

.p-guardianVoices__name{
  margin: 0 0 12px;
  font-size: clamp(18px, 2.0vw, 24px);
  font-weight: 600;
  letter-spacing: .03em;
}

.p-guardianVoices__body{
  font-size: clamp(14px, 1.3vw, 16px);
  line-height: 2.0;
}

.p-guardianVoices__body p{
  margin: 0 0 1.15em;
}

.p-guardianVoices__body p:last-child{
  margin-bottom: 0;
}

/* 途中から回り込み解除して全幅にしたい時用（HTMLのdivを消せば解除） */
.p-guardianVoices__clear{
  clear: both;
}

/* 下側：背景をブラウザ端まで（100vw） */
.p-guardianVoices__band{
  position: relative;
  margin-top: var(--space-xl, 80px);
  padding-block: var(--space-lg, 60px);
  overflow-x: clip;
}

@supports not (overflow: clip){
  .p-guardianVoices__band{ overflow-x: hidden; }
}

.p-guardianVoices__band::before{
  content: "";
  position: absolute;
  inset: 0;
  left: 50%;
  width: 100vw;
  transform: translateX(-50%);
  background: #f3f0ed; /* 薄いベージュ〜グレー系（必要ならブランドに寄せて調整） */
  z-index: -1;
}

/* SP：縦積み（回り込み解除） */
@media (max-width: 1023px){
  .p-guardianVoices{
    padding-block: var(--space-md, 40px);
	padding-top: 0;
  }

  .p-guardianVoices__head{
    margin-bottom: var(--space-md, 40px);
  }

  .p-guardianVoices__photo{
    float: none;
    width: 100%;
    margin: 0 0 var(--space-sm, 30px) 0;
  }

  .p-guardianVoices__clear{
    display: none; /* SPではそもそも回り込みなし */
  }

  .p-guardianVoices__band{
    margin-top: var(--space-lg, 60px);
    padding-block: var(--space-md, 40px);
  }
}

/* =========================
   Floating Blog Banner (PC)
   ========================= */

.c-floatBlogPc{
  position: fixed;
  right: clamp(16px, 2vw, 28px);
  bottom: clamp(16px, 2vw, 28px);
  z-index: 1200;
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: opacity 280ms ease, transform 280ms ease;
}

/* 表示状態 */
.c-floatBlogPc.is-show{
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.c-floatBlogPc__link{
  display: block;
  line-height: 1;
}

.c-floatBlogPc__img{
  display: block;
  width: min(240px, 22vw);
  height: auto;
}

/* PCのみ（SP/Tabletでは非表示） */
@media (max-width: 1023px){
  .c-floatBlogPc{ display: none !important; }
}

/* hoverは軽め */
@media (hover: hover){
  .c-floatBlogPc__link:hover{ opacity: .92; }
}

/* reduce motion */
@media (prefers-reduced-motion: reduce){
  .c-floatBlogPc{ transition: none; transform: none; }
  .c-floatBlogPc.is-show{ transform: none; }
}


/* =========================
   スマホ iOS safari ステータスバー調整
   ========================= */
.wrapper {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.background-layer-white {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 80px;
    background-color: var(--brand-red);
	z-index: 11;
}

.top-box {
    flex-grow: 1;
    background-color: var(--brand-red);
}

.bottom-box {
    flex-grow: 1;
    background-color: var(--brand-red);
}


@media (min-width: 1024px){
.wrapper {
	display: none;
}
.background-layer-white {
	display: none;
}
.top-box {
	display: none;
}
.bottom-box {
	display: none;
}
}

/* =========================
   Inquiry (Tel / LINE) layout
   ※ お問い合わせページ専用
   ========================= */
.p-inq{
    max-width: 1440px;
	margin: 80px auto 0;
}

.p-inq__grid{
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  align-items: start;
}

.p-inq__item{
  text-align: center;
}

.p-inq__item .p-cta__title{
  margin: 0 0 14px;
}
.p-inq__item--line{
	margin-top: 40px;
}
.p-inq__item--line .p-inq__line{
  max-width: 640px;
  margin: 0 auto;
}

@media (min-width: 1024px){
  .p-inq{
    margin-top: 80px;
  }

  .p-inq__grid{
    grid-template-columns: 1fr 1fr;
    gap: 40px;
  }

  .p-inq__item--line .p-inq__line{
    max-width: 500px;
  }
.p-inq__item--line{
	margin-top: 0;
}
}

/* =========================
   Inquiry LINE button inner
   ※ 既存 .p-cta__btn に干渉しない専用クラス
   ========================= */
.p-inqLineBtn{
  background: #2bac38 !important;

  /* 中央グループと右矢印を分離して配置 */
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;

  text-decoration: none;
  padding-inline: 24px;
}

.p-inqLineBtn__lead{
  grid-column: 2;           /* 真ん中の列に配置 */
  min-width: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;  /* アイコン＋文字を中央揃え */
  gap: 14px;
  justify-self: center;
}
.p-inqLineBtn__icon{
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  display: grid;
  place-items: center;
}

.p-inqLineBtn__icon img{
  width: 85%;
  height: 85%;
  object-fit: contain;
  display: block;
}

.p-inqLineBtn__label{
  color: #fff;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: .02em;
  white-space: nowrap;
}

.p-inqLineBtn__arrow{
  grid-column: 3;         /* 右側の列 */
  position: relative;
  width: 38px;
  height: 12px;
  justify-self: end;      /* 右端寄せ */
  margin-right: 2px;
}

.p-inqLineBtn__arrow::before{
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 27px;                /* 少し長くして見栄え調整 */
  border-top: 2px solid #fff;
  transform: translateY(-50%);
}

.p-inqLineBtn__arrow::after{
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
  border-left: 10px solid #fff;
}

/* 極小端末保険 */
@media (max-width: 374px){
  .p-inqLineBtn{
    padding-inline: 16px;
    column-gap: 12px;
  }
  .p-inqLineBtn__label{
    font-size: 14px;
  }
  .p-inqLineBtn__arrow{
    width: 32px;
  }
  .p-inqLineBtn__arrow::before{
    width: 22px;
  }
}

/* =========================
   MW WP Form choices alignment fix (SP)
   チェックボックス / ラジオの折返し時の先頭ズレ対策
   ========================= */
@media (max-width: 1023px){

  /* 選択肢コンテナをflex化して、gapで余白管理 */
  .p-inqForm__choices{
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    column-gap: 18px;
    row-gap: 12px;
  }

  /* MW WP Formの既定余白（horizontal-item）をリセット */
  .p-inqForm__choices .mwform-checkbox-field.horizontal-item,
  .p-inqForm__choices .mwform-radio-field.horizontal-item{
    display: block;
    margin: 0 !important;
  }

  /* これが入っている環境向け保険（+で付く余白を無効化） */
  .p-inqForm__choices .horizontal-item + .horizontal-item{
    margin-left: 0 !important;
  }

  /* ラベル内をアイコン＋文字で揃える */
  .p-inqForm__choices .mwform-checkbox-field > label,
  .p-inqForm__choices .mwform-radio-field > label{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    line-height: 1.4;
    cursor: pointer;
  }

  /* inputのデフォルトmarginでズレるのを防ぐ */
  .p-inqForm__choices input[type="checkbox"],
  .p-inqForm__choices input[type="radio"]{
    margin: 0;
    flex: 0 0 auto;
  }

  /* テキスト側 */
  .p-inqForm__choices .mwform-checkbox-field-text,
  .p-inqForm__choices .mwform-radio-field-text{
    display: inline-block;
    line-height: 1.4;
    white-space: nowrap; /* 項目内で改行しない（見た目安定） */
  }
}


.feature_txt {
  position: relative;
  overflow: hidden;
}

.feature_txt::after {
  content: "事務長加藤とご家庭の面談風景";
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  background: rgba(179, 41, 36, 0.65);
  color: #fff;
  padding: 10px 14px;
  font-size: 14px;
  line-height: 1.6;
  letter-spacing: 0.04em;
}

/*******************************************
26.02.16 ページ内スクロール調整
*******************************************/

#faq-level,
#faq-policy,
#faq-system,
#faq-teacher,
#faq-study,
#faq-othe{	
  scroll-padding-top: var(--header-h);
  scroll-behavior: smooth; /* 任意 */
}

/* =========================
   Mobile Header: auto hide/show on scroll
   ========================= */
/*
@media (max-width: 1023px){
  .is-headHideTarget{
    will-change: transform, opacity;
    transition: transform 260ms ease, opacity 260ms ease;
  }

  .is-headHideTarget.is-headHide{
    transform: translateY(-14px);
    opacity: 0;
    pointer-events: none;
  }
}

@media (prefers-reduced-motion: reduce){
  @media (max-width: 1023px){
    .is-headHideTarget{
      transition: none;
    }
  }
}
@media (max-width: 1023px){
  .wrapper.is-headHide{
    opacity: 0;
    transform: translateY(-14px);
    transition: opacity 260ms ease, transform 260ms ease;
    pointer-events: none;
  }

  .wrapper{
    opacity: 1;
    transform: translateY(0);
    transition: opacity 260ms ease, transform 260ms ease;
    will-change: opacity, transform;
  }
}

@media (prefers-reduced-motion: reduce){
  @media (max-width: 1023px){
    .wrapper{ transition: none; }
  }
}
*/
