@charset "UTF-8";

/* ===== reset ===== */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
html {
  overflow-x: hidden;
  width: 100%;
}
img {
  max-width: 100%;
  height: auto;
  vertical-align: bottom;
}
a {
  text-decoration: none;
  color: inherit;
}
ul, ol {
  list-style: none;
}
body {
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
  color: #333;
  line-height: 1.6;
  width: 100%;
  overflow-x: hidden;
  background: #fafafa;
}

/* デザインは375px幅のFigmaフレームを基準に、コンテナクエリ単位(cqw)で比率変換している
   （px値 ÷ 375 × 100 = cqw値）。.page-wrapの実測幅を基準に拡縮するため、
   スマホではvwと同じ挙動、PCではmax-width(960px)で頭打ちになる */
.page-wrap {
  position: relative;
  container-type: inline-size;
  max-width: 960px;
  margin: 0 auto;
  overflow-x: hidden;
  padding-bottom: 14.667cqw;
}

/* --- background decorations (水彩画像) ---
   カードなど不透明な背景を持つセクションの裏に隠れるよう z-index:-1 で配置
*/
.bg-deco {
  position: absolute;
  z-index: -1;
  pointer-events: none;
}
.bg-deco-1 { left: 65.333cqw; top: 132.800cqw; width: 74.400cqw; }
.bg-deco-2 { left: -24.000cqw; top: 626.933cqw; width: 63.467cqw; }
.bg-deco-3 { left: 61.867cqw; top: 797.333cqw; width: 68.800cqw; }
.bg-deco-4 { left: 50.667cqw; top: 1203.733cqw; width: 81.067cqw; }
.bg-deco-5 { left: -24.000cqw; top: 1720.533cqw; width: 63.467cqw; }
.bg-deco-6 { left: 56.800cqw; top: 2177.067cqw; width: 81.067cqw; }
.bg-deco-7 { left: -24.000cqw; top: 3010.667cqw; width: 63.467cqw; }
.bg-deco-8 { left: 50.400cqw; top: 4506.400cqw; width: 74.400cqw; }
.bg-deco-9 { left: -24.000cqw; top: 4834.400cqw; width: 63.467cqw; }
.bg-deco-10 { left: 50.400cqw; top: 5130.667cqw; width: 74.400cqw; }

/* --- summer button band --- */
.summer-btn-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 21.333cqw;
}
.summer-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2.133cqw;
  width: 69.333cqw;
  height: 14.667cqw;
  border-radius: 1.333cqw;
  background: linear-gradient(to bottom, #d86788 50%, #cc587a 50%);
  color: #fff;
  font-size: 4cqw;
  font-weight: 700;
  line-height: 1.3;
  text-align: center;
}
.summer-btn-icon {
  width: 6.4cqw;
  height: auto;
}

/* --- reasons --- */
.reasons-wrap {
  padding: 8cqw 4cqw 0;
}
.reasons-heading {
  font-size: 6.133cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.4;
  text-align: center;
  margin-bottom: 6.4cqw;
}
.reasons-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3.467cqw;
}
.reason-card {
  height: 36cqw;
  background: #fff;
  border-radius: 2.133cqw;
  box-shadow: 0.8cqw 0.8cqw 1.333cqw rgba(0, 0, 0, 0.25);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2.667cqw;
}
.reason-icon {
  height: 11cqw;
  width: auto;
}
.reason-caption {
  font-size: 4.8cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.2;
  text-align: center;
}

/* --- menu section --- */
.menu-section {
  margin-top: 8cqw;
}
.menu-banner {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 6.933cqw 4cqw 4.267cqw;
  background: linear-gradient(135deg, #6ab7eb 0%, #153188 25%, #153188 75%, #6ab7eb 100%);
}
.menu-banner-icon {
  height: 10.4cqw;
  width: auto;
  margin-bottom: 2.4cqw;
}
.menu-banner-heading {
  font-size: 6.4cqw;
  font-weight: 700;
  color: #fff;
  line-height: 1.3;
  text-align: center;
}
.menu-lead {
  margin-top: 2.933cqw;
  padding: 0 4cqw;
  font-size: 4.8cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.5;
}
.menu-illustration-wrap {
  position: relative;
  margin-top: 5.333cqw;
}
.menu-illustration {
  width: 100%;
}
.menu-illustration-caption {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 8.533cqw;
  font-weight: 600;
  color: #153188;
  line-height: 1.2;
  text-align: center;
}
.menu-body {
  margin-top: 5.333cqw;
  padding: 0 4cqw;
  font-size: 4.267cqw;
  color: #333;
  line-height: 1.6;
  white-space: pre-wrap;
}
.menu-photos {
  margin-top: 10.667cqw;
  padding: 0 4cqw;
}
.menu-photo-big {
  width: 100%;
  border-radius: 2.667cqw;
}
.menu-photo-caption {
  margin-top: 1.6cqw;
  font-size: 4.267cqw;
  color: #333;
  line-height: 1.3;
}
.menu-photos-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3.467cqw;
  margin-top: 3.733cqw;
}
.menu-photo-small {
  width: 100%;
  border-radius: 2.667cqw;
}


/* ===== 共通パーツ =====
   デザインはFigma上の375px幅を基準に、vw単位で比率変換している
   （px値 ÷ 375 × 100 = vw値）ため、どの端末幅でもデザイン通りの比率で表示される
*/


/* ===== ここから各セクション ===== */

/* --- header --- */
.header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2.4cqw 4cqw;
  background: #fafafa;
}
.header-logo {
  display: flex;
  align-items: center;
  gap: 1.6cqw;
}
.header-logo-img {
  width: 11.467cqw;
  height: auto;
}
.header-logo-text {
  display: flex;
  flex-direction: column;
}
.header-logo-en {
  font-size: 3.467cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.3;
}
.header-logo-ja {
  font-size: 4.8cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.2;
}
.header-badge {
  border: 1px solid #153188;
  border-radius: 1.333cqw;
  padding: 1.6cqw 2cqw;
  font-size: 2.667cqw;
  font-weight: 400;
  color: #153188;
  text-align: center;
  line-height: 1.2;
  white-space: nowrap;
}

/* --- hero --- */
.hero {
  position: relative;
  width: 100%;
  height: 152.533cqw;
}
.hero-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hero-ribbon {
  position: absolute;
  left: 0.8cqw;
  top: 1.333cqw;
  width: 97.067cqw;
  height: 17.067cqw;
}
.hero-ribbon-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.hero-ribbon-text {
  position: absolute;
  left: 49.067cqw;
  top: 1.067cqw;
  transform: translateX(-50%);
  width: max-content;
  font-size: 5.067cqw;
  font-weight: 700;
  color: #333;
  line-height: 1.15;
  text-align: center;
  white-space: nowrap;
}
.hero-teacher-mark {
  position: absolute;
  left: 2.667cqw;
  top: 73.067cqw;
  width: 20cqw;
  z-index: 2;
}
.hero-headline {
  position: absolute;
  left: 23.2cqw;
  top: 18.4cqw;
  width: 74.667cqw;
  font-family: "Noto Serif JP", serif;
  font-size: 10.667cqw;
  font-weight: 700;
  color: #fff;
  line-height: 1.05;
  text-align: right;
}
.hero-headline-en {
  position: absolute;
  left: 67.2cqw;
  top: 40.8cqw;
  width: 27.733cqw;
  font-family: "Waterfall", cursive;
  font-size: 4.8cqw;
  color: #fff;
  line-height: 1.16;
}
.hero-lead {
  position: absolute;
  left: 37.333cqw;
  top: 46.667cqw;
  width: 59.467cqw;
  font-size: 3.467cqw;
  font-weight: 400;
  color: #fff;
  line-height: 1.6;
  text-align: right;
}
.hero-lead--small {
  left: 37.6cqw;
  top: 60.267cqw;
  width: 59.733cqw;
  font-size: 3.733cqw;
}
.hero-tag {
  position: absolute;
  left: 37.067cqw;
  top: 53.333cqw;
  width: 60.8cqw;
}
.hero-badge {
  position: absolute;
  left: 4cqw;
  top: 93.6cqw;
  width: 56cqw;
}
.hero-btn {
  position: absolute;
  top: 136cqw;
  width: 56cqw;
  height: 13.333cqw;
  border-radius: 1.6cqw;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.6cqw;
  font-size: 3.733cqw;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
}
.hero-btn--yellow {
  left: 4cqw;
  background: linear-gradient(to bottom, #ffe000 50%, #fed137 50%);
  color: #333;
}
.hero-btn--blue {
  left: 62.933cqw;
  width: 32.8cqw;
  background: linear-gradient(to bottom, #58abe0 50%, #6ab7e8 50%);
  color: #fff;
}
.hero-btn-icon {
  width: 4.267cqw;
  height: 4.267cqw;
  flex-shrink: 0;
}

/* --- intro --- */
.intro {
  padding: 8cqw 4cqw;
}
.intro-text {
  font-size: 4.267cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.5625;
  text-align: left;
}

/* --- schedule card --- */
.schedule-card-wrap {
  padding: 0 4cqw 8cqw;
}
.schedule-card {
  background: #f0ecca;
  border-radius: 5.333cqw;
  padding: 6.933cqw 3.2cqw 8.267cqw 5.333cqw;
  font-size: 4.8cqw;
  font-weight: 400;
  color: #333;
  line-height: 1.5556;
  white-space: pre-wrap;
}

/* --- campaign card ---
   DIN 2014は商用フォントのため未使用、価格の数字は代替フォントで表示
*/
.campaign-wrap {
  padding: 0 4cqw 8cqw;
}
.campaign-card {
  position: relative;
  background: #fff;
  border: 2px solid #153188;
}
.campaign-header {
  height: 10.933cqw;
  background: #153188;
  display: flex;
  align-items: center;
  justify-content: center;
}
.campaign-header-text {
  font-size: 6.4cqw;
  font-weight: 700;
  color: #fff;
}
.campaign-body {
  position: relative;
  height: 79.733cqw;
}
.campaign-label {
  position: absolute;
  top: 4cqw;
  width: 33.333cqw;
  font-size: 4.8cqw;
  font-weight: 400;
  color: #333;
  line-height: 1.2;
  text-align: center;
}
.campaign-label--left { left: 10.933cqw; width: 24cqw; }
.campaign-label--right { left: 52.267cqw; }
.saturday-section .campaign-label--left { left: 3.2cqw; width: 39.467cqw; }
.campaign-divider {
  position: absolute;
  left: 45.867cqw;
  top: 3.733cqw;
  width: 1px;
  height: 53.867cqw;
  background: #ccc;
}
.campaign-strike {
  position: absolute;
  top: 21.067cqw;
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 5.333cqw;
  font-weight: 600;
  color: #333;
  text-align: center;
  text-decoration: line-through;
  white-space: nowrap;
}
.campaign-strike--left { left: 14.667cqw; width: 16.533cqw; }
.campaign-strike--right { left: 59.2cqw; width: 19.733cqw; }
.campaign-ribbon {
  position: absolute;
  top: 30.133cqw;
  width: 20.32cqw;
}
.campaign-ribbon--left { left: 12.8cqw; }
.campaign-ribbon--right { left: 58.933cqw; }
.campaign-ribbon-text {
  position: absolute;
  top: 30.933cqw;
  width: 17.067cqw;
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 4.8cqw;
  font-weight: 600;
  color: #fff;
  text-align: center;
}
.campaign-ribbon-text--left { left: 14.4cqw; }
.campaign-ribbon-text--right { left: 60.533cqw; }
.campaign-price {
  position: absolute;
  top: 41.333cqw;
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 8.533cqw;
  font-weight: 600;
  color: #ad1729;
  text-align: center;
  white-space: nowrap;
}
.campaign-price--left { left: 10.4cqw; width: 25.067cqw; }
.yen-sm { font-size: 0.85em; }
.campaign-price--right { left: 54.133cqw; width: 29.6cqw; }
.campaign-note {
  position: absolute;
  top: 52.267cqw;
  width: 38.4cqw;
  font-size: 3.733cqw;
  font-weight: 400;
  color: #333;
  text-align: center;
}
.campaign-note--left { left: 3.733cqw; }
.campaign-note--right { left: 49.867cqw; }
.campaign-btn {
  position: absolute;
  left: 17.867cqw;
  top: 62.133cqw;
  width: 56cqw;
  height: 13.333cqw;
  border-radius: 1.6cqw;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.6cqw;
  font-size: 3.733cqw;
  font-weight: 700;
  color: #333;
  background: linear-gradient(to bottom, #ffe000 50%, #fed137 50%);
}

/* --- teacher section --- */
.teacher-profile {
  margin-top: 5.6cqw;
  padding: 0 4cqw;
}
.teacher-title {
  border-left: 0.8cqw solid #153188;
  padding-left: 4.533cqw;
  min-height: 23.467cqw;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.teacher-subtitle {
  font-size: 4.267cqw;
  color: #333;
  line-height: 1.5;
  margin-bottom: 1.333cqw;
}
.teacher-name {
  font-size: 6.133cqw;
  font-weight: 700;
  color: #333;
}
.teacher-bio-row {
  margin-top: 2.667cqw;
  display: flex;
  gap: 2.667cqw;
}
.teacher-bio-text {
  flex: 1;
  font-size: 4.267cqw;
  color: #333;
  line-height: 1.6;
}
.teacher-photo {
  width: 42.133cqw;
  height: auto;
  flex-shrink: 0;
}
.teacher-bio-full {
  margin-top: 4cqw;
  font-size: 4.267cqw;
  color: #333;
  line-height: 1.6;
}
.teacher-exam-box {
  margin-top: 5.6cqw;
  margin-left: 4cqw;
  margin-right: 4cqw;
  padding: 5.6cqw 3.467cqw;
  background: #fcf3ce;
  box-shadow: 1.067cqw 1.067cqw 1.067cqw rgba(0, 0, 0, 0.15);
}
.teacher-exam-heading {
  font-family: "Noto Serif JP", serif;
  font-size: 5.6cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.4;
}
.teacher-checklist {
  margin-top: 6.667cqw;
}
.teacher-checklist li {
  display: flex;
  align-items: flex-start;
  gap: 2.4cqw;
  font-size: 4.533cqw;
  color: #333;
  line-height: 1.5;
  margin-bottom: 3.2cqw;
}
.teacher-checklist li:last-child {
  margin-bottom: 0;
}
.check-icon {
  width: 4.8cqw;
  height: 4.8cqw;
  flex-shrink: 0;
  margin-top: 0.8cqw;
}
.check-title {
  font-size: 5.333cqw;
  font-weight: 700;
}

/* --- schedule table --- */
.schedule-table-wrap {
  margin-top: 5.333cqw;
  padding: 0 4cqw;
}
.schedule-table-heading {
  font-size: 5.333cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.4;
  margin-bottom: 2.4cqw;
}
.schedule-table-box {
  background: #fff;
  box-shadow: 1.067cqw 1.067cqw 1.067cqw rgba(0, 0, 0, 0.15);
}
.schedule-table {
  width: 100%;
  border-collapse: collapse;
}
.schedule-table tr {
  border-bottom: 1px solid #e0e0e0;
}
.schedule-table tr:last-child {
  border-bottom: none;
}
.sch-time {
  width: 18.667cqw;
  padding: 3.2cqw 1.067cqw 3.2cqw 2.133cqw;
  font-size: 4.267cqw;
  font-weight: 400;
  color: #333;
  vertical-align: top;
}
.sch-activity {
  padding: 3.2cqw 2.133cqw 3.2cqw 1.067cqw;
  font-size: 4.267cqw;
  font-weight: 700;
  color: #333;
  line-height: 1.4;
  vertical-align: top;
}
.sch-en {
  font-weight: 400;
}
.schedule-note {
  margin-top: 1.6cqw;
  font-size: 3.733cqw;
  color: #333;
}

/* --- level classes --- */
.level-classes {
  margin-top: 5.333cqw;
  padding: 0 4cqw;
  font-size: 4.8cqw;
  color: #333;
  line-height: 1.5556;
}
.level-classes p + p {
  margin-top: 5.333cqw;
}

/* --- uniform note --- */
.uniform-note {
  margin-top: 8cqw;
  padding: 0 4cqw;
}
.uniform-note-lead {
  font-size: 4.8cqw;
  color: #333;
  line-height: 1.5;
}
.uniform-note-heading {
  margin-top: 1.333cqw;
  font-size: 6.4cqw;
  font-weight: 700;
  color: #153188;
}
.uniform-note-small {
  margin-top: 1.333cqw;
  margin-bottom: 13.333cqw;
  font-size: 4.8cqw;
  color: #333;
}

/* --- reservation note --- */
.reservation-note {
  margin-top: 5.333cqw;
  padding: 0 4cqw 8cqw;
}
.reservation-note-heading {
  font-size: 6.4cqw;
  font-weight: 700;
  color: #153188;
}
.reservation-note-body {
  margin-top: 2.4cqw;
  font-size: 4.8cqw;
  color: #333;
  line-height: 1.5;
}

/* --- science section --- */
.science-section {
  margin-top: 8cqw;
}
.science-intro {
  padding: 0 4cqw;
}
.science-heading {
  font-size: 6.4cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.3;
}
.science-intro-row {
  position: relative;
  display: flex;
  align-items: flex-end;
  gap: 2.667cqw;
  margin-top: 2.4cqw;
}
.science-lead {
  flex: 1;
  font-size: 4.8cqw;
  color: #333;
  line-height: 1.5;
}
.science-qr-wrap {
  display: block;
  flex-shrink: 0;
  width: 30.933cqw;
}
.science-qr {
  width: 100%;
}
.science-qr-badge {
  position: absolute;
  right: 32cqw;
  bottom: 1.067cqw;
  width: 6.4cqw;
}
.science-gallery {
  margin-top: 5.333cqw;
  padding: 0 4cqw;
}
.science-big2 {
  margin-top: 8cqw;
}

/* --- saturday school section --- */
.saturday-section {
  position: relative;
  margin-top: 8cqw;
  padding: 16.8cqw 4cqw 8.533cqw;
  background: #65af6a;
  text-align: center;
}
.saturday-badge {
  position: absolute;
  left: 37.6cqw;
  top: 5.6cqw;
  width: 24.533cqw;
  height: 10.667cqw;
  background: #ffe000;
  color: #333;
  font-size: 4.8cqw;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.saturday-heading {
  font-family: "Noto Serif JP", serif;
  font-size: 9.333cqw;
  font-weight: 700;
  color: #ffe000;
  white-space: nowrap;
}
.saturday-sub {
  margin-top: 2.24cqw;
  font-size: 5.333cqw;
  font-weight: 700;
  color: #fff;
}
.saturday-pills {
  margin-top: 1.867cqw;
  display: flex;
  justify-content: center;
  gap: 3.733cqw;
}
.saturday-pill {
  background: #fff;
  color: #07710e;
  font-size: 3.733cqw;
  padding: 1.867cqw 3.2cqw;
  border-radius: 4.133cqw;
  white-space: nowrap;
}
.saturday-price-row {
  margin-top: 2.24cqw;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 3.36cqw;
}
.saturday-price-label {
  font-size: 4.8cqw;
  font-weight: 700;
  color: #ffe000;
}
.saturday-price {
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 8.533cqw;
  font-weight: 600;
  color: #ffe000;
}
.saturday-price-yen {
  font-size: 6.667cqw;
}
.saturday-section .campaign-card {
  margin-top: 3.2cqw;
  text-align: left;
}
.campaign-card--green {
  border: none;
}
.campaign-card--green .campaign-header {
  background: #07710e;
}
.saturday-section .campaign-label {
  font-size: 4.267cqw;
}
.campaign-btn--green {
  background: linear-gradient(to bottom, #65af6a 50%, #4da453 50%);
  color: #fff;
}
.saturday-btn {
  margin-top: 6.667cqw;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2.133cqw;
  width: 69.333cqw;
  height: 14.667cqw;
  margin-left: auto;
  margin-right: auto;
  border-radius: 1.333cqw;
  background: linear-gradient(to bottom, #224FD6 50%, #153188 50%);
  color: #fff;
  font-size: 4cqw;
  font-weight: 700;
  line-height: 1.3;
  text-align: center;
}

/* --- calendar --- */
.calendar-section {
  margin-top: 8cqw;
  padding: 0 4cqw;
}
.calendar-img {
  width: 100%;
}

/* --- price section --- */
.price-section {
  margin-top: 8cqw;
}
.price-banner {
  background: #ffe000;
  padding: 5.333cqw 4cqw;
  display: flex;
  justify-content: center;
}
.price-banner-text {
  font-size: 4.8cqw;
  font-weight: 700;
  color: #333;
  line-height: 1.4;
  text-align: center;
}
.price-block {
  margin-top: 5.333cqw;
  padding: 0 4cqw;
}
.price-heading {
  font-size: 4.267cqw;
  font-weight: 700;
  color: #231815;
}
.price-table {
  margin-top: 2.667cqw;
  background: #fff;
  border-top: 1px solid #ddd;
  border-bottom: 1px solid #ddd;
}
.price-row {
  display: flex;
  align-items: center;
  min-height: 15.2cqw;
  padding: 2.133cqw 1.333cqw;
  border-bottom: 1px solid #eee;
}
.price-row:last-child {
  border-bottom: none;
}
.price-row--small {
  min-height: 10.933cqw;
}
.price-row-label {
  flex: 1;
  font-size: 4.267cqw;
  color: #333;
  line-height: 1.4;
}
.price-row-value {
  width: 27.5%;
  flex-shrink: 0;
  font-size: 4.267cqw;
  color: #333;
  text-align: right;
}
.price-row-value--discount {
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 5.333cqw;
  font-weight: 600;
  color: #ad1729;
  line-height: 1.3;
}
.price-footnote {
  margin-top: 5.333cqw;
  padding: 0 4cqw 8cqw;
  font-size: 3.733cqw;
  color: #333;
  line-height: 1.6;
}
.price-footnote--bold {
  font-size: 4.533cqw;
  font-weight: 700;
}
.price-banner--green {
  background: #65af6a;
}
.price-banner-text--white {
  color: #fff;
}
.price-highlight {
  color: #ad1729;
  font-weight: 700;
}
.price-row-value--highlight {
  color: #ad1729;
  font-weight: 700;
}
.price-off-label {
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 4.8cqw;
  font-weight: 600;
}
.price-off-amount {
  font-family: "Oswald", "Helvetica Neue", Arial, sans-serif;
  font-size: 6.4cqw;
  font-weight: 600;
  white-space: nowrap;
}
.price-footnote-plain {
  font-size: 4cqw;
  font-weight: 400;
}

/* --- FAQ --- */
.faq-section {
  margin-top: 8cqw;
}
.faq-list {
  padding: 0 4cqw;
}
.faq-item {
  border-bottom: 1px solid #ddd;
}
.faq-item:last-child {
  border-bottom: none;
}
.faq-summary {
  display: flex;
  align-items: center;
  gap: 2.4cqw;
  padding: 2.933cqw 0;
  cursor: pointer;
  list-style: none;
}
.faq-summary::-webkit-details-marker {
  display: none;
}
.faq-q {
  flex-shrink: 0;
  width: 9.067cqw;
  height: 9.067cqw;
  border: 1px solid #153188;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 4.267cqw;
  font-weight: 300;
  color: #153188;
}
.faq-question {
  flex: 1;
  font-size: 3.733cqw;
  color: #333;
  line-height: 1.4;
}
.faq-toggle {
  flex-shrink: 0;
  width: 3.467cqw;
  height: 3.467cqw;
  position: relative;
}
.faq-toggle::before,
.faq-toggle::after {
  content: "";
  position: absolute;
  background: #153188;
}
.faq-toggle::before {
  left: 0;
  right: 0;
  top: 50%;
  height: 1.5px;
  transform: translateY(-50%);
}
.faq-toggle::after {
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1.5px;
  transform: translateX(-50%);
}
.faq-item[open] .faq-toggle::after {
  display: none;
}
.faq-answer {
  padding: 0 0 2.933cqw calc(9.067cqw + 2.4cqw);
  font-size: 3.733cqw;
  color: #333;
  line-height: 1.6;
}

/* --- standalone CTA buttons (reused outside their themed sections) --- */
.saturday-btn--standalone {
  margin: 8cqw auto 0;
}

/* --- teacher comment / group photo section --- */
.comment-section {
  margin-top: 8cqw;
}
.comment-block {
  position: relative;
}
.comment-deco {
  position: absolute;
  width: 26.667cqw;
  height: 26.667cqw;
}
.comment-deco--tl {
  left: 4cqw;
  top: 0;
}
.comment-deco--br {
  right: 4cqw;
  bottom: 10.667cqw;
}
.comment-row {
  display: flex;
  align-items: flex-start;
  gap: 0;
  margin-top: 2.4cqw;
  padding: 0 0 0 9.067cqw;
}
.comment-photo {
  position: relative;
  top: -5.333cqw;
  z-index: 2;
  flex-shrink: 0;
  width: 46.133cqw;
}
.comment-text {
  font-size: 4cqw;
  color: #333;
  line-height: 1.7;
}
.comment-text--top {
  padding: 4cqw 4cqw 0 9.067cqw;
}
.comment-text--side {
  flex: 1;
}
.comment-text-en {
  clear: both;
  margin-top: 5.333cqw;
  padding: 0 4cqw;
  font-size: 3.2cqw;
  color: #000;
  line-height: 1.6;
}
.teachers-photo-wrap {
  position: relative;
  margin-top: 8cqw;
}
.teachers-photo-heading {
  position: relative;
  z-index: 1;
  font-size: 5.067cqw;
  font-weight: 700;
  color: #153188;
  text-align: center;
}
.teachers-photo {
  width: 100%;
  margin-top: -2.667cqw;
}
.comment-disclaimer {
  margin-top: 5.333cqw;
  padding: 0 4cqw 8cqw;
  font-size: 3.2cqw;
  color: #333;
  line-height: 1.6;
}

/* --- local info section --- */
.local-section {
  margin-top: 8cqw;
}
.local-points {
  margin-top: 2.667cqw;
  padding: 0 4cqw;
  font-size: 4.267cqw;
  font-weight: 700;
  color: #153188;
  line-height: 1.6;
}
.local-body {
  margin-top: 2.667cqw;
  padding: 0 4cqw 8cqw;
  font-size: 4.267cqw;
  color: #333;
  line-height: 1.7;
}

/* --- footer --- */
.site-footer {
  background: #153188;
  padding: 6.667cqw 4cqw 0;
  text-align: center;
}
.footer-logo-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2.667cqw;
}
.footer-logo-img {
  width: 14.747cqw;
  height: auto;
}
.footer-logo-text {
  text-align: left;
}
.footer-logo-en {
  font-size: 4.533cqw;
  font-weight: 700;
  color: #fff;
}
.footer-logo-ja {
  font-size: 5.867cqw;
  font-weight: 700;
  color: #fff;
}
.footer-photo {
  width: 100%;
  margin-top: 2.4cqw;
}
.footer-address {
  margin-top: 2.667cqw;
  font-size: 4.8cqw;
  color: #fff;
  line-height: 1.5;
}
.footer-map-heading {
  margin-top: 2.667cqw;
  font-size: 4.267cqw;
  font-weight: 700;
  color: #fff;
}
.footer-map-img {
  width: 100%;
  margin-top: 1.2cqw;
}
.footer-site-label {
  margin-top: 7.2cqw;
  font-size: 3.733cqw;
  color: #fff;
}
.footer-site-url {
  margin-top: 1.067cqw;
  font-size: 4.8cqw;
  font-weight: 700;
  color: #fff;
}
.footer-site-url a {
  text-decoration: underline;
}
.footer-map-link {
  text-decoration: underline;
}
.footer-divider {
  width: 6.8cqw;
  height: 1px;
  background: #fff;
  margin: 5.333cqw auto 0;
}
.footer-links {
  margin-top: 4cqw;
  display: flex;
  flex-direction: column;
  gap: 2.4cqw;
}
.footer-links a {
  font-size: 3.2cqw;
  color: #fff;
  text-decoration: underline;
}
.footer-copyright {
  margin-top: 3.2cqw;
  font-size: 3.2cqw;
  color: #fff;
}
.footer-cta-row {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 100;
  max-width: 960px;
  margin: 0 auto;
  display: flex;
}
.back-to-top-btn {
  position: absolute;
  right: 2.667cqw;
  bottom: 100%;
  margin-bottom: 2.667cqw;
  width: 10.133cqw;
  height: 10.133cqw;
  border-radius: 50%;
  background: rgba(255, 251, 251, 0.5);
  border: 1px solid #939cca;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}
.back-to-top-btn.is-visible {
  opacity: 1;
  visibility: visible;
}
.back-to-top-btn svg {
  width: 4.533cqw;
  height: auto;
}
.footer-cta {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 14.667cqw;
  font-size: 4cqw;
  font-weight: 700;
  color: #fff;
  line-height: 1.3;
  text-align: center;
}
.footer-cta--pink {
  background: #d86788;
}
.footer-cta--blue {
  background: #6ab7e8;
}


