:root {
  --blue: #1E88E5;
  --blue-deep: #246FE3;
  --blue-2: #4FC3F7;
  --teal: #2DD4BF;
  --orange: #FF9F1C;
  --heading: #16324F;
  --text: #30445c;
  --muted: #6B7280;
  --bg: #F7FBFF;
  --white: #FFFFFF;
  --ice: #EAF7FF;
  --teal-soft: #E7FBF7;
  --orange-soft: #FFF3DD;
  --line: rgba(22, 50, 79, 0.1);
  --shadow: 0 24px 60px rgba(30, 136, 229, 0.16);
  --shadow-soft: 0 14px 34px rgba(22, 50, 79, 0.08);
  --radius-lg: 34px;
  --radius: 24px;
  --radius-sm: 16px;
  --max: 1160px;
}

* { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  overflow-x: hidden;
}
body {
  margin: 0;
  color: var(--text);
  background:
    radial-gradient(circle at 8% 6%, rgba(79, 195, 247, 0.2), transparent 24%),
    radial-gradient(circle at 90% 12%, rgba(45, 212, 191, 0.16), transparent 26%),
    var(--bg);
  font-family: "Zen Kaku Gothic New", "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;
  font-weight: 400;
  line-height: 1.72;
  overflow-x: hidden;
}

body.is-menu-open { overflow: hidden; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
h1, h2, h3, p { margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }

.container {
  width: min(var(--max), calc(100% - 40px));
  margin: 0 auto;
}

.section {
  padding: clamp(78px, 6.6vw, 98px) 0;
  scroll-margin-top: 90px;
}

.section-white {
  background: rgba(255, 255, 255, 0.86);
  border-block: 1px solid rgba(30, 136, 229, 0.08);
}

.section-blue {
  background:
    linear-gradient(180deg, rgba(247, 251, 255, 0.98), rgba(234, 247, 255, 0.88)),
    radial-gradient(circle at 84% 18%, rgba(79, 195, 247, 0.16), transparent 28%);
}

.section-head {
  max-width: 780px;
  margin: 0 auto 42px;
  text-align: center;
}

.section-head.align-left {
  margin-inline: 0;
  text-align: left;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  color: var(--blue);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.eyebrow::before,
.eyebrow::after {
  content: "";
  width: 20px;
  height: 1.5px;
  border-radius: 999px;
  background: currentColor;
  flex-shrink: 0;
  opacity: 0.55;
}

h1 {
  color: var(--heading);
  font-size: clamp(42px, 7vw, 86px);
  line-height: 1.02;
  letter-spacing: 0;
  font-weight: 800;
}

h2 {
  color: var(--heading);
  font-size: clamp(30px, 3.8vw, 46px);
  line-height: 1.24;
  letter-spacing: 0;
  font-weight: 700;
  text-wrap: balance;
}

h3 {
  color: var(--heading);
  font-size: 22px;
  line-height: 1.45;
  font-weight: 700;
  text-wrap: balance;
}

.lead {
  margin-top: 16px;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.82;
  font-weight: 400;
}

.accent { color: var(--blue); }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 56px;
  padding: 15px 24px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-weight: 700;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease, filter 0.2s ease;
}

.btn:hover {
  transform: translateY(2px);
  filter: brightness(0.97);
  box-shadow: inset 0 2px 7px rgba(22, 50, 79, 0.14);
}

.btn-primary {
  color: #fff;
  background: linear-gradient(135deg, var(--blue), var(--blue-2));
}

.btn-secondary {
  color: var(--heading);
  background: #fff;
  border-color: rgba(30, 136, 229, 0.18);
}

.btn-line {
  color: var(--heading);
  background: var(--teal);
}

.icon {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.sp-only {
  display: none;
}

.privacy-main {
  padding-top: 112px;
}

.privacy-main h1 {
  font-size: clamp(30px, 3.8vw, 46px);
  line-height: 1.24;
  font-weight: 700;
  text-wrap: balance;
}

.privacy-card {
  max-width: 860px;
  margin: 0 auto;
}

.privacy-card h2 {
  margin: 30px 0 12px;
  font-size: 22px;
}

.privacy-card p,
.privacy-card li {
  color: var(--text);
  line-height: 1.9;
}

.privacy-card ul {
  display: grid;
  gap: 8px;
  padding-left: 1.2em;
  list-style: disc;
}

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 80;
  padding-top: 12px;
  background: transparent;
  backdrop-filter: blur(14px);
  transition: padding 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
}

.site-header.is-scrolled {
  padding-top: 8px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(255, 255, 255, 0.32));
}

.nav {
  width: min(1880px, calc(100vw - 80px));
  min-height: 78px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 34px;
  padding: 0 32px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.88);
  border: 1px solid rgba(210, 235, 249, 0.72);
  box-shadow: 0 16px 44px rgba(64, 156, 216, 0.1);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--heading);
  font-weight: 700;
  line-height: 1.12;
  white-space: nowrap;
}

.brand img {
  width: clamp(250px, 24vw, 350px);
  height: auto;
}

.brand-mark {
  width: 44px;
  height: 44px;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--blue), var(--blue-2));
  box-shadow: 0 14px 28px rgba(30, 136, 229, 0.22);
  position: relative;
  overflow: hidden;
}

.brand-mark::before {
  content: "";
  position: absolute;
  width: 24px;
  height: 18px;
  left: 10px;
  top: 14px;
  border-radius: 4px 4px 11px 11px;
  background: #fff;
  transform: skewY(-8deg);
}

.brand-mark::after {
  content: "";
  position: absolute;
  width: 13px;
  height: 13px;
  right: 7px;
  top: 7px;
  border-radius: 50%;
  background: var(--teal);
  box-shadow: -22px 23px 0 var(--orange);
}

.brand small {
  display: block;
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.13em;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: clamp(18px, 2.2vw, 34px);
  color: #315873;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.nav-links a:not(.nav-cta):hover { color: var(--blue); }

.nav-cta {
  color: #fff;
  background: linear-gradient(135deg, #2365d8, #1e88e5);
  padding: 11px 22px;
  border-radius: 999px;
  font-weight: 700;
  transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
}

.nav-cta:hover {
  color: #fff;
  transform: translateY(2px);
  filter: brightness(0.97);
  box-shadow: inset 0 2px 7px rgba(22, 50, 79, 0.18);
}

.menu-button {
  display: none;
  width: 44px;
  height: 44px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: #fff;
  color: var(--heading);
  place-items: center;
  cursor: pointer;
}

.hero {
  position: relative;
  min-height: 100svh;
  padding: 112px 0 30px;
  overflow: hidden;
  isolation: isolate;
  background:
    linear-gradient(105deg, rgba(255, 255, 255, 0.92) 0%, rgba(255, 255, 255, 0.74) 36%, rgba(218, 243, 255, 0.22) 100%),
    url("images/hero-bg-pattern.webp") center / cover no-repeat,
    #f7fbff;
}

.hero::before {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 30%;
  z-index: -1;
  background: linear-gradient(180deg, transparent, rgba(148, 218, 255, 0.45));
  pointer-events: none;
}

.hero-inner {
  width: min(1680px, calc(100vw - 180px));
  position: relative;
  display: grid;
  grid-template-columns: minmax(520px, 0.84fr) minmax(660px, 1.16fr);
  align-items: start;
  gap: clamp(20px, 4vw, 64px);
  min-height: clamp(570px, 43vw, 620px);
}

.hero-copy-area {
  position: relative;
  z-index: 5;
  padding: 54px 0 48px clamp(22px, 2.6vw, 58px);
}

.hero-catch {
  width: min(640px, 100%);
  margin-left: 0;
  filter: none;
}

.hero-text {
  margin-top: clamp(18px, 2.2vw, 24px);
  max-width: 620px;
  color: var(--text);
  font-size: clamp(16px, 1.18vw, 20px);
  line-height: 1.9;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-wrap: pretty;
}

.hero-actions {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 24px;
  margin-top: clamp(22px, 2.6vw, 34px);
  width: min(780px, 100%);
}

.hero-actions .btn {
  min-height: 74px;
  padding: 17px 28px 17px 20px;
  border-radius: 999px;
  font-size: clamp(16px, 1.18vw, 21px);
  font-weight: 700;
  white-space: nowrap;
}

.hero-actions .btn img {
  width: 44px;
  height: 44px;
  object-fit: contain;
  flex: 0 0 auto;
}

.hero-actions .btn span {
  margin-left: auto;
  font-size: 34px;
  line-height: 1;
}

.hero-actions .btn-primary {
  flex: 0 0 min(348px, 53%);
  background: linear-gradient(135deg, #1c53d4, #246fe3);
  color: #fff;
}

.hero-actions .btn-secondary {
  flex: 0 0 min(318px, 43%);
  color: #4bb9c8;
  border-color: rgba(91, 198, 220, 0.7);
  background: rgba(255, 255, 255, 0.78);
}

.hero-visual {
  position: relative;
  min-height: clamp(570px, 43vw, 620px);
  z-index: 4;
  overflow: visible;
}

.hero-visual::before {
  content: none;
}

.hero-students {
  position: absolute;
  right: min(-7.5vw, -92px);
  top: -20px;
  width: min(1100px, 72vw);
  max-width: none;
  z-index: 3;
  filter: none;
  -webkit-mask-image:
    linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.42) 7%, #000 17%),
    linear-gradient(180deg, #000 0%, #000 82%, rgba(0, 0, 0, 0.72) 91%, transparent 100%);
  mask-image:
    linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.42) 7%, #000 17%),
    linear-gradient(180deg, #000 0%, #000 82%, rgba(0, 0, 0, 0.72) 91%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-composite: intersect;
}

.hero-catch-overlay {
  display: none;
}

.hero-badge-free {
  position: absolute;
  top: -36px;
  right: clamp(34px, 3.2vw, 66px);
  width: clamp(150px, 13vw, 226px);
  z-index: 7;
  filter: none;
  animation: floatSoft 5s ease-in-out infinite;
}

.hero-soft-deco {
  position: absolute;
  right: clamp(24px, 4.2vw, 92px);
  bottom: clamp(4px, 2vw, 32px);
  width: clamp(250px, 27vw, 430px);
  height: clamp(110px, 11vw, 170px);
  z-index: 2;
  pointer-events: none;
  opacity: 0.72;
}

.hero-soft-deco::before {
  content: "";
  position: absolute;
  inset: 18% 0 auto;
  height: 74px;
  border-radius: 999px;
  border-top: 3px solid rgba(79, 195, 247, 0.24);
  transform: rotate(-4deg);
}

.hero-soft-deco::after {
  content: "";
  position: absolute;
  right: 10%;
  bottom: 4%;
  width: 142px;
  height: 92px;
  background-image: radial-gradient(circle, rgba(30, 136, 229, 0.2) 1.6px, transparent 1.8px);
  background-size: 14px 14px;
  border-radius: 26px;
  mask-image: radial-gradient(circle at 50% 50%, #000 0 62%, transparent 78%);
  -webkit-mask-image: radial-gradient(circle at 50% 50%, #000 0 62%, transparent 78%);
}

.hero-books,
.hero-booth {
  position: absolute;
  z-index: 8;
  border-radius: 22px;
  border: 8px solid #fff;
  box-shadow: 0 18px 34px rgba(22, 50, 79, 0.18);
  object-fit: cover;
}

.hero-books {
  left: 5%;
  bottom: -28px;
  width: min(340px, 23vw);
  height: min(192px, 13vw);
  transform: rotate(-1.8deg);
}

.hero-booth {
  right: clamp(34px, 3.8vw, 72px);
  bottom: -42px;
  width: min(400px, 26.5vw);
  height: min(216px, 14.2vw);
  transform: rotate(2.4deg);
}

.hero-feature-wrap {
  width: min(1680px, calc(100vw - 180px));
  position: relative;
  z-index: 10;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin-top: -22px;
  padding: 20px 34px;
  border-radius: 24px;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid rgba(208, 234, 250, 0.76);
  box-shadow: 0 16px 34px rgba(50, 139, 208, 0.13);
}

.hero-feature-card {
  display: grid;
  grid-template-columns: 120px 1fr;
  align-items: center;
  gap: 24px;
  padding: 22px 38px;
  border-right: 2px dotted rgba(30, 136, 229, 0.24);
}

.hero-feature-card:last-child {
  border-right: 0;
}

.hero-feature-icon {
  display: grid;
  place-items: center;
  width: 104px;
  height: 104px;
  border-radius: 0;
  background: transparent;
}

.hero-feature-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.hero-feature-card h2 {
  margin-bottom: 8px;
  color: #1e65d5;
  font-size: clamp(22px, 1.65vw, 32px);
  line-height: 1.15;
  font-weight: 700;
}

.hero-feature-card p {
  color: #30445c;
  font-size: clamp(13px, 0.92vw, 16px);
  line-height: 1.72;
  font-weight: 500;
}

@media (max-width: 1320px) and (min-width: 1081px) {
  .hero-inner {
    width: min(1240px, calc(100vw - 88px));
    grid-template-columns: minmax(430px, 0.86fr) minmax(520px, 1.14fr);
    gap: clamp(18px, 3vw, 44px);
  }

  .hero-copy-area {
    padding-left: clamp(8px, 1.8vw, 28px);
  }

  .hero-catch {
    width: min(570px, 100%);
  }

  .hero-actions {
    gap: 12px;
  }

  .hero-actions .btn {
    min-height: 64px;
    padding: 13px 14px 13px 12px;
    font-size: clamp(14px, 1.15vw, 16px);
  }

  .hero-actions .btn img {
    width: 30px;
    height: 30px;
  }

  .hero-actions .btn span {
    display: none;
  }

  .hero-actions .btn-primary,
  .hero-actions .btn-secondary {
    flex: 1 1 0;
    min-width: 0;
  }

  .hero-students {
    right: clamp(-58px, -4vw, -34px);
    width: clamp(720px, 65vw, 920px);
  }

  .hero-badge-free {
    right: clamp(22px, 2.4vw, 42px);
  }

  .hero-books {
    left: 1%;
    top: auto;
    bottom: -28px;
    width: min(310px, 24vw);
    height: min(176px, 13.6vw);
  }

  .hero-booth {
    right: clamp(20px, 2.8vw, 48px);
    top: auto;
    bottom: -42px;
    width: min(360px, 27vw);
    height: min(194px, 14.6vw);
  }

  .hero-feature-wrap {
    width: min(1240px, calc(100vw - 88px));
  }
}

.worry-solution-flow {
  background:
    linear-gradient(180deg, rgba(247, 251, 255, 0.3) 0%, rgba(255, 255, 255, 0.18) 12%, rgba(238, 250, 255, 0.16) 45%, rgba(246, 252, 255, 0.26) 100%),
    url("images/worry-solution-bg.webp") center top / 100% auto repeat-y,
    #edf9ff;
}

.worry-section {
  padding-top: clamp(54px, 5vw, 78px);
  padding-bottom: 0;
  background: transparent;
}

.worry-board {
  position: relative;
  background: transparent;
  overflow: visible;
}

.worry-top {
  position: relative;
  min-height: 520px;
  padding: clamp(48px, 4.7vw, 68px) clamp(34px, 5.4vw, 86px) 98px;
  border-radius: clamp(34px, 5vw, 72px);
  background: var(--blue);
  color: #fff;
  box-shadow: 0 24px 54px rgba(30, 136, 229, 0.2);
  overflow: visible;
}

.worry-top::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(120deg, rgba(255, 255, 255, 0.09) 0 16%, transparent 16% 34%, rgba(255, 255, 255, 0.07) 34% 51%, transparent 51%),
    radial-gradient(circle at 18% 26%, rgba(255, 255, 255, 0.13), transparent 20%);
  border-radius: inherit;
  opacity: 0.62;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 72%, transparent 94%);
  mask-image: linear-gradient(180deg, #000 0%, #000 72%, transparent 94%);
  pointer-events: none;
}

.worry-top::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -76px;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 92px solid transparent;
  border-right: 92px solid transparent;
  border-top: 76px solid var(--blue);
  z-index: 2;
}

.worry-top-title {
  position: relative;
  z-index: 4;
  text-align: center;
  margin-bottom: clamp(34px, 3.7vw, 50px);
}

.worry-top-title span {
  display: inline-block;
  margin-bottom: 14px;
  color: rgba(255, 255, 255, 0.95);
  font-size: clamp(17px, 1.65vw, 25px);
  font-weight: 600;
  letter-spacing: 0.02em;
}

.worry-top-title h2 {
  color: #fff;
  font-size: clamp(34px, 3.9vw, 50px);
  line-height: 1.22;
  font-weight: 700;
  text-shadow: 0 8px 24px rgba(22, 50, 79, 0.16);
}

.worry-main {
  position: relative;
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(172px, 250px) minmax(430px, 610px) minmax(172px, 250px);
  align-items: center;
  justify-items: center;
  justify-content: center;
  gap: clamp(26px, 3.5vw, 54px);
}

.worry-person {
  position: relative;
  display: grid;
  place-items: center;
  width: min(250px, 17vw);
  aspect-ratio: 1;
  margin: 0;
  border-radius: 50%;
  background:
    radial-gradient(circle at 45% 35%, #fff 0 58%, rgba(255, 255, 255, 0.88) 76%, rgba(255, 255, 255, 0.52) 100%);
  box-shadow: 0 20px 44px rgba(22, 50, 79, 0.14);
  overflow: hidden;
}

.worry-person-left,
.worry-person-right {
  align-self: center;
  justify-self: center;
}

.worry-person img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  filter: drop-shadow(0 8px 10px rgba(22, 50, 79, 0.08));
}

.worry-person-left img {
  transform: translateY(-2px);
}

.worry-person-right img {
  transform: translateY(6px);
}

.worry-center-card {
  position: relative;
  z-index: 4;
  width: 100%;
  margin: 0 auto;
  padding: clamp(24px, 2.5vw, 32px) clamp(24px, 2.8vw, 36px);
  border-radius: 26px;
  background: #fff;
  border: 1px solid rgba(255, 255, 255, 0.82);
  box-shadow: 0 14px 30px rgba(22, 50, 79, 0.18);
}

.worry-list {
  display: grid;
}

.worry-list li {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: clamp(13px, 1.25vw, 18px) 0;
  border-bottom: 3px dotted rgba(30, 136, 229, 0.45);
  color: #183a59;
  font-size: clamp(16px, 1.25vw, 20px);
  font-weight: 600;
  line-height: 1.45;
}

.worry-list li:last-child {
  border-bottom: 0;
}

.worry-list span {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  color: #fff;
  background: #14cdbf;
  flex: 0 0 auto;
}

.worry-list span::before {
  content: "";
  width: 12px;
  height: 7px;
  border-left: 3px solid #fff;
  border-bottom: 3px solid #fff;
  transform: translateY(-1px) rotate(-45deg);
}

.worry-arrow {
  position: relative;
  z-index: 5;
  margin: clamp(34px, 4vw, 52px) auto 0;
  color: #fff;
  text-align: center;
  font-size: clamp(30px, 3.2vw, 48px);
  line-height: 1;
  font-weight: 700;
  letter-spacing: 0;
}

.worry-bottom {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 0.95fr);
  gap: clamp(26px, 4vw, 56px);
  align-items: center;
  min-height: 430px;
  padding: clamp(72px, 6vw, 96px) clamp(38px, 5.4vw, 90px) clamp(26px, 3vw, 42px);
  background: transparent;
  border-radius: 0;
  overflow: visible;
}

.worry-bottom::before {
  content: "";
  position: absolute;
  right: -5%;
  bottom: -12%;
  width: min(500px, 44%);
  height: min(430px, 82%);
  background:
    radial-gradient(circle at 56% 58%, rgba(79, 195, 247, 0.22) 0%, rgba(234, 247, 255, 0.28) 42%, rgba(255, 255, 255, 0) 74%);
  border: 0;
  border-radius: 50%;
  opacity: 0.95;
  box-shadow: none;
  pointer-events: none;
}

.worry-bottom::after {
  content: none;
}

.worry-solution-copy {
  position: relative;
  z-index: 3;
  max-width: 650px;
  padding-top: clamp(2px, 1vw, 12px);
}

.worry-label {
  display: inline-block;
  margin-bottom: clamp(16px, 2vw, 24px);
  padding: 6px 18px 7px;
  color: #16324f;
  background: linear-gradient(90deg, #fff06f, #ffd96c);
  border-radius: 999px 999px 999px 12px;
  box-shadow: 0 8px 18px rgba(255, 159, 28, 0.14);
  font-size: clamp(14px, 1vw, 16px);
  line-height: 1.35;
  font-weight: 700;
}

.worry-small {
  display: grid;
  gap: 4px;
  justify-items: start;
  width: 100%;
  margin: 0 0 clamp(16px, 2.1vw, 24px);
  color: var(--heading);
  font-size: clamp(18px, 1.35vw, 22px);
  line-height: 1.22;
  font-weight: 600;
  text-align: left;
}

.worry-small span {
  display: block;
  font-size: 0.9em;
}

.worry-small strong {
  display: block;
  font: inherit;
  white-space: normal;
}

.worry-solution-copy h3 {
  max-width: 720px;
  color: var(--heading);
  font-size: clamp(30px, 2.35vw, 36px);
  line-height: 1.34;
  font-weight: 700;
  letter-spacing: 0.01em;
}

.worry-note {
  max-width: 560px;
  margin-top: clamp(16px, 2vw, 24px);
  color: #4b657f;
  font-size: clamp(15px, 1.05vw, 17px);
  line-height: 1.9;
  font-weight: 500;
}

.teacher-appeal {
  position: relative;
  z-index: 3;
  min-height: 390px;
  display: grid;
  place-items: end center;
}

.worry-teacher {
  position: relative;
  z-index: 4;
  width: min(330px, 78%);
  max-height: 410px;
  object-fit: contain;
  object-position: center bottom;
  justify-self: center;
  align-self: end;
  filter: drop-shadow(0 22px 30px rgba(22, 50, 79, 0.13));
}

#solution {
  padding-top: clamp(18px, 3vw, 34px);
  background: transparent;
}

.course-label {
  display: inline-flex;
  width: fit-content;
  margin-bottom: 16px;
  padding: 7px 12px;
  border-radius: 999px;
  color: var(--blue);
  background: var(--ice);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.course-points {
  display: grid;
  gap: 8px;
  margin-top: auto;
  padding-top: 20px;
  color: var(--heading);
  font-size: 14px;
  font-weight: 600;
}

.course-points li {
  display: flex;
  gap: 9px;
}

.course-points li::before {
  content: "✓";
  color: var(--teal);
  font-weight: 700;
}

.teacher-role {
  display: inline-flex;
  margin: 8px 0 12px;
  padding: 6px 11px;
  border-radius: 999px;
  color: var(--blue);
  background: var(--ice);
  font-size: 12px;
  font-weight: 700;
}

.access-layout {
  display: grid;
  grid-template-columns: 0.96fr 1.04fr;
  gap: 24px;
  align-items: stretch;
}

.access-card {
  padding: 34px;
  border-radius: 30px;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: var(--shadow-soft);
}

.access-list {
  display: grid;
  gap: 14px;
  margin-top: 24px;
}

.access-list div {
  display: grid;
  grid-template-columns: 94px 1fr;
  gap: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(22, 50, 79, 0.08);
}

.access-list dt {
  color: var(--heading);
  font-weight: 700;
}

.access-list dd {
  margin: 0;
  color: var(--muted);
}

.map-card {
  min-height: 430px;
  overflow: hidden;
  position: relative;
  border-radius: 30px;
  background:
    linear-gradient(90deg, rgba(30, 136, 229, 0.1) 1px, transparent 1px),
    linear-gradient(rgba(30, 136, 229, 0.1) 1px, transparent 1px),
    #eef9ff;
  background-size: 58px 58px;
  border: 1px solid var(--line);
  box-shadow: var(--shadow-soft);
}

.map-card svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.map-pin {
  position: absolute;
  left: 50%;
  top: 48%;
  transform: translate(-50%, -50%);
  width: min(300px, calc(100% - 36px));
  padding: 20px;
  border-radius: 24px;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid rgba(30, 136, 229, 0.14);
  box-shadow: var(--shadow);
  text-align: center;
}

.map-pin b {
  display: block;
  color: var(--heading);
  margin-bottom: 4px;
}

.map-pin span {
  color: var(--muted);
  font-size: 14px;
}

.footer {
  padding: 58px 0 28px;
  background:
    radial-gradient(circle at 14% 18%, rgba(255, 255, 255, 0.18), transparent 26%),
    linear-gradient(135deg, #1e88e5, #21a7ee 58%, #4fc3f7);
  color: rgba(255, 255, 255, 0.78);
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr 0.8fr;
  gap: 34px;
}

.footer .brand {
  color: #fff;
  margin-bottom: 16px;
}

.footer .brand img {
  width: min(300px, 78vw);
  height: auto;
}

.footer .brand small { color: rgba(255, 255, 255, 0.58); }
.footer-title { color: #fff; font-weight: 600; margin-bottom: 12px; }
.footer-list { display: grid; gap: 8px; font-size: 14px; }
.footer-bottom {
  margin-top: 34px;
  padding-top: 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.22);
  color: rgba(255, 255, 255, 0.68);
  font-size: 13px;
}

.section p,
.access-list dd,
.map-pin span {
  line-height: 1.78;
  font-weight: 500;
}

.worry-top-title span,
.worry-small,
.course-label,
.teacher-role,
.footer-title {
  font-weight: 700;
}

.worry-list li,
.course-points,
.access-list dt {
  font-weight: 600;
}

.worry-arrow {
  line-height: 1;
  font-weight: 700;
}

.worry-small {
  line-height: 1.28;
  font-weight: 700;
}

[data-animate] {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

[data-animate].is-visible {
  opacity: 1;
  transform: translateY(0);
}

@keyframes floatSoft {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@media (max-width: 1080px) {
  .hero {
    padding-top: 106px;
  }

  .nav {
    width: min(1040px, calc(100vw - 44px));
    padding-inline: 24px;
  }

  .nav-links {
    gap: 14px;
    font-size: 13px;
  }

  .brand img {
    width: 230px;
  }

  .hero-inner {
    width: min(1040px, calc(100vw - 44px));
    grid-template-columns: minmax(340px, 0.9fr) minmax(380px, 1.1fr);
    min-height: 500px;
  }

  .hero-copy-area {
    padding-bottom: 76px;
  }

  .hero-visual {
    min-height: 500px;
  }

  .hero-actions {
    gap: 12px;
  }

  .hero-actions .btn {
    min-height: 62px;
    padding: 12px 14px 12px 12px;
    font-size: 14px;
  }

  .hero-actions .btn img {
    width: 30px;
    height: 30px;
  }

  .hero-actions .btn span {
    display: none;
  }

  .hero-actions .btn-primary,
  .hero-actions .btn-secondary {
    flex: 1 1 0;
    min-width: 0;
  }

  .hero-students {
    right: -22px;
    top: 2px;
    width: clamp(600px, 68vw, 780px);
  }

  .hero-books {
    display: none;
    left: 0;
    top: clamp(388px, 38.5vw, 418px);
    bottom: auto;
    width: min(214px, 23vw);
    height: min(120px, 12.8vw);
  }

  .hero-booth {
    display: none;
    right: 22px;
    top: clamp(394px, 39vw, 424px);
    bottom: auto;
    width: min(258px, 27.8vw);
    height: min(139px, 15vw);
  }

  .hero-feature-wrap {
    width: min(1040px, calc(100vw - 44px));
    margin-top: -28px;
    padding-inline: 18px;
  }

  .hero-feature-card {
    grid-template-columns: 84px 1fr;
    padding-inline: 20px;
  }

  .hero-feature-icon {
    width: 88px;
    height: 88px;
  }

  .hero-feature-icon img {
    width: 100%;
    height: 100%;
  }

  .access-layout,
  .footer-grid {
    grid-template-columns: 1fr;
  }

  .worry-top {
    min-height: 520px;
    padding-inline: 34px;
  }

  .worry-main {
    grid-template-columns: minmax(138px, 190px) minmax(380px, 560px) minmax(138px, 190px);
    gap: 22px;
  }

  .worry-person {
    width: min(190px, 17vw);
  }

  .worry-bottom {
    grid-template-columns: 1fr minmax(240px, 330px);
    padding-inline: 46px;
  }

  .worry-teacher {
    width: min(330px, 100%);
  }

}

@media (max-width: 960px) {
  .nav {
    width: min(var(--max), calc(100vw - 28px));
    min-height: 68px;
    padding-inline: 16px;
    border-radius: 24px;
  }

  .brand img {
    width: 210px;
  }

  .menu-button {
    display: grid;
  }

  .nav-links {
    position: fixed;
    left: 14px;
    right: 14px;
    top: 78px;
    display: none;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 24px;
    background: rgba(255, 255, 255, 0.98);
    box-shadow: var(--shadow);
    flex-direction: column;
    align-items: stretch;
  }

  .nav-links.is-open {
    display: flex;
  }

  .nav-links a {
    padding: 10px 12px;
  }

  .nav-cta {
    text-align: center;
  }

  .hero {
    min-height: auto;
    padding: 96px 0 28px;
  }

  .hero-inner {
    width: min(var(--max), calc(100vw - 28px));
    grid-template-columns: 1fr;
    min-height: auto;
    gap: 20px;
  }

  .hero-visual {
    order: -1;
    min-height: clamp(470px, 74vw, 620px);
  }

  .hero-copy-area {
    order: 1;
    margin-top: clamp(-76px, -8vw, -42px);
    padding: 0;
    text-align: center;
    z-index: 8;
  }

  .hero-copy-area .hero-catch {
    display: none;
  }

  .hero-catch-overlay {
    position: absolute;
    left: clamp(14px, 5vw, 54px);
    bottom: clamp(22px, 5vw, 54px);
    z-index: 6;
    display: block;
    width: min(480px, 58vw);
    filter: drop-shadow(0 16px 26px rgba(255, 255, 255, 0.64));
  }

  .hero-visual::after {
    content: "";
    position: absolute;
    left: -7%;
    top: auto;
    bottom: clamp(38px, 7vw, 80px);
    width: min(68%, 560px);
    height: clamp(220px, 34vw, 320px);
    z-index: 5;
    border-radius: 50%;
    background: radial-gradient(ellipse at 34% 58%, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.68) 38%, rgba(255, 255, 255, 0.3) 56%, rgba(255, 255, 255, 0) 76%);
    filter: blur(8px);
    pointer-events: none;
  }

  .hero-soft-deco {
    display: none;
  }

  .hero-actions {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    max-width: 430px;
    margin-inline: auto;
  }

  .hero-actions .btn-primary,
  .hero-actions .btn-secondary {
    flex-basis: auto;
    width: 100%;
  }

  .hero-actions .btn {
    min-height: 64px;
  }

  .hero-actions .btn img {
    width: 38px;
    height: 38px;
  }

  .hero-visual::before {
    content: none;
  }

  .hero-students {
    position: relative;
    right: auto;
    top: auto;
    width: 112%;
    margin-inline: -6%;
    filter: none;
    -webkit-mask-image:
      linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.5) 8%, #000 19%),
      linear-gradient(180deg, #000 0%, #000 84%, rgba(0, 0, 0, 0.72) 92%, transparent 100%);
    mask-image:
      linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.5) 8%, #000 19%),
      linear-gradient(180deg, #000 0%, #000 84%, rgba(0, 0, 0, 0.72) 92%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-composite: intersect;
  }

  .hero-badge-free {
    top: 2px;
    right: 4px;
    width: 128px;
  }

  .hero-books {
    display: none;
    left: 4%;
    bottom: 4px;
    width: min(248px, 44vw);
    height: min(142px, 25vw);
  }

  .hero-booth {
    display: none;
    right: 4%;
    bottom: -8px;
    width: min(286px, 49vw);
    height: min(162px, 27vw);
  }

  .hero-feature-wrap {
    width: min(var(--max), calc(100vw - 28px));
    grid-template-columns: 1fr;
    gap: 0;
    margin-top: 14px;
    padding: 8px 18px;
  }

  .hero-feature-card {
    grid-template-columns: 80px 1fr;
    padding: 18px 4px;
    border-right: 0;
    border-bottom: 1px solid rgba(30, 136, 229, 0.12);
  }

  .hero-feature-card:last-child {
    border-bottom: 0;
  }
}

@media (max-width: 860px) {
  .container {
    width: min(var(--max), calc(100% - 28px));
  }

  .section {
    padding: 76px 0;
  }

  .nav {
    width: min(var(--max), calc(100vw - 28px));
    min-height: 68px;
    padding-inline: 16px;
    border-radius: 24px;
  }

  .brand img {
    width: 210px;
  }

  .menu-button {
    display: grid;
  }

  .nav-links {
    position: fixed;
    left: 14px;
    right: 14px;
    top: 78px;
    display: none;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 24px;
    background: rgba(255, 255, 255, 0.98);
    box-shadow: var(--shadow);
    flex-direction: column;
    align-items: stretch;
  }

  .nav-links.is-open {
    display: flex;
  }

  .nav-links a {
    padding: 10px 12px;
  }

  .nav-cta {
    text-align: center;
  }

  .hero {
    min-height: auto;
    padding: 96px 0 28px;
  }

  .hero-inner {
    width: min(var(--max), calc(100vw - 28px));
    grid-template-columns: 1fr;
    min-height: auto;
    gap: 20px;
  }

  /* タブレット以下：ビジュアルを先に表示 */
  .hero-visual {
    order: -1;
  }
  .hero-copy-area {
    order: 1;
    margin-top: clamp(-76px, -8vw, -42px);
    padding: 0;
    text-align: center;
    z-index: 8;
  }

  .hero-actions {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    max-width: 430px;
    margin-inline: auto;
  }

  .hero-actions .btn-primary,
  .hero-actions .btn-secondary {
    flex-basis: auto;
    width: 100%;
  }

  .hero-actions .btn {
    min-height: 64px;
  }

  .hero-actions .btn img {
    width: 38px;
    height: 38px;
  }

  .hero-visual {
    min-height: clamp(470px, 74vw, 620px);
  }

  .hero-visual::before {
    content: none;
  }

  .hero-students {
    position: relative;
    right: auto;
    top: auto;
    width: 112%;
    margin-inline: -6%;
    filter: none;
    -webkit-mask-image:
      linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.5) 8%, #000 19%),
      linear-gradient(180deg, #000 0%, #000 84%, rgba(0, 0, 0, 0.72) 92%, transparent 100%);
    mask-image:
      linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.5) 8%, #000 19%),
      linear-gradient(180deg, #000 0%, #000 84%, rgba(0, 0, 0, 0.72) 92%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-composite: intersect;
  }

  .hero-badge-free {
    top: 2px;
    right: 4px;
    width: 128px;
  }

  .hero-books {
    display: none;
    left: 4%;
    bottom: 4px;
    width: min(248px, 44vw);
    height: min(142px, 25vw);
  }

  .hero-booth {
    display: none;
    right: 4%;
    bottom: -8px;
    width: min(286px, 49vw);
    height: min(162px, 27vw);
  }

  .hero-feature-wrap {
    width: min(var(--max), calc(100vw - 28px));
    grid-template-columns: 1fr;
    gap: 0;
    margin-top: 14px;
    padding: 8px 18px;
  }

  .hero-feature-card {
    border-right: 0;
    border-bottom: 2px dotted rgba(30, 136, 229, 0.2);
    padding: 20px 10px;
  }

  .hero-feature-card:last-child {
    border-bottom: 0;
  }

  .hero-feature-icon {
    background: transparent;
  }

  .hero-feature-icon img {
    width: 100%;
    height: 100%;
  }

  .hero-feature-card h2 {
    font-weight: 700;
  }

  .hero-feature-card p {
    font-weight: 500;
  }

  .worry-top {
    min-height: auto;
    padding: 42px 22px 82px;
    border-radius: 34px;
  }

  .worry-top::after {
    bottom: -54px;
    border-left-width: 64px;
    border-right-width: 64px;
    border-top-width: 54px;
  }

  .worry-main {
    grid-template-columns: repeat(2, minmax(0, 190px));
    gap: 18px;
  }

  .worry-center-card {
    order: -1;
    grid-column: 1 / -1;
    width: min(620px, 100%);
  }

  .worry-person {
    width: min(180px, 42vw);
    justify-self: center;
  }

  .worry-bottom {
    grid-template-columns: 1fr;
    min-height: auto;
    padding: 76px 28px 28px;
    text-align: center;
  }

  .worry-bottom::before {
    right: 50%;
    bottom: -8%;
    transform: translateX(50%);
    width: min(420px, 92vw);
    height: 360px;
  }

  .worry-bottom::after {
    left: 50%;
    transform: translateX(-50%);
  }

  .worry-small {
    margin-inline: auto;
    justify-items: center;
    text-align: center;
  }

  .worry-teacher {
    justify-self: center;
    width: min(280px, 82vw);
  }

}

@media (max-width: 560px) {
  h1 {
    font-size: clamp(38px, 12vw, 54px);
  }

  h2 {
    font-size: 28px;
  }

  .brand span:last-child {
    max-width: 190px;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .brand small {
    display: none;
  }

  .site-header {
    padding-top: 8px;
  }

  .brand img {
    width: min(190px, 58vw);
  }

  .section-head,
  .section-head.align-left {
    text-align: left;
  }

  .hero {
    padding-top: 96px;
  }

  .hero-catch {
    width: min(420px, 100%);
  }

  .hero-text {
    font-size: 15px;
    line-height: 1.8;
    max-width: 34em;
    margin-inline: auto;
  }

  .hero-visual {
    min-height: 430px;
  }

  .hero-catch-overlay {
    left: 18px;
    bottom: 38px;
    width: min(390px, 68vw);
  }

  .hero-visual::after {
    left: -12%;
    bottom: 16px;
    width: 88%;
    height: 240px;
  }

  .hero-badge-free {
    width: 102px;
  }

  .hero-books,
  .hero-booth {
    border-width: 5px;
    border-radius: 16px;
  }

  .hero-books {
    left: 3%;
    width: 43vw;
    height: 25vw;
    bottom: 14px;
  }

  .hero-booth {
    right: 3%;
    width: 49vw;
    height: 28vw;
    bottom: 2px;
  }

  .hero-feature-card {
    grid-template-columns: 74px 1fr;
    gap: 14px;
  }

  .hero-feature-icon {
    width: 66px;
    height: 66px;
  }

  .hero-feature-icon img {
    width: 100%;
    height: 100%;
  }

  .hero-feature-card h2 {
    font-size: 22px;
  }

  .hero-feature-card p {
    font-size: 13px;
  }

  .access-card {
    padding: 22px;
  }

  .worry-top {
    padding: 32px 16px 72px;
    border-radius: 28px;
  }

  .worry-top-title h2 {
    font-size: 30px;
  }

  .worry-top-title span {
    font-size: 16px;
  }

  .worry-main {
    gap: 14px;
  }

  .worry-center-card {
    padding: 18px;
    border-radius: 20px;
  }

  .worry-list li {
    align-items: flex-start;
    gap: 10px;
    font-size: 13px;
    padding: 12px 0;
    border-bottom-width: 2px;
  }

  .worry-list span {
    width: 28px;
    height: 28px;
  }

  .worry-arrow {
    font-size: 26px;
  }

  .worry-bottom {
    padding: 68px 14px 24px;
  }

  .worry-bottom::after {
    top: 70px;
  }

  .worry-small {
    font-size: 18px;
    margin-bottom: 34px;
  }

  .sp-only {
    display: block;
  }

  .worry-solution-copy h3 {
    font-size: 28px;
  }

  .access-list div {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* =============================================
   v3: 選ばれる理由・コース紹介・実績＆声・中間CTA
   ============================================= */

/* ---------- 選ばれる理由 ---------- */
.rn-section {
  padding: clamp(78px, 6.6vw, 98px) 0;
  scroll-margin-top: 90px;
  background:
    radial-gradient(circle at 6% 10%, rgba(79, 195, 247, 0.18), transparent 30%),
    radial-gradient(circle at 92% 90%, rgba(45, 212, 191, 0.12), transparent 28%),
    linear-gradient(180deg, #EAF7FF 0%, #fff 60%);
}

.rn-section .section-head {
  margin-bottom: 56px;
}

/* 各ブロック共通 */
.rn-block {
  display: grid;
  align-items: center;
  gap: clamp(28px, 3.5vw, 52px);
  padding: clamp(32px, 3.5vw, 48px);
  border-radius: 28px;
  margin-bottom: 20px;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid rgba(30, 136, 229, 0.1);
  box-shadow: 0 12px 36px rgba(22, 50, 79, 0.08);
  overflow: hidden;
  position: relative;
}

.rn-block:last-child {
  margin-bottom: 0;
}

/* テキスト左・写真右（01・03） */
.rn-block-photo {
  grid-template-columns: 1fr clamp(300px, 34vw, 400px);
}

/* 写真左・テキスト右（02）：DOM順に合わせて列幅を反転 */
.rn-block-rev {
  grid-template-columns: clamp(300px, 34vw, 400px) 1fr;
}

/* 淡い水色背景（02用） */
.rn-block-ice {
  background:
    radial-gradient(circle at 90% 10%, rgba(79, 195, 247, 0.1), transparent 40%),
    rgba(234, 247, 255, 0.7);
}

/* 大きな装飾ナンバー */
.rn-num-deco {
  display: block;
  font-size: clamp(72px, 8vw, 110px);
  font-weight: 700;
  line-height: 0.82;
  color: rgba(30, 136, 229, 0.09);
  letter-spacing: -0.04em;
  margin-bottom: -10px;
  user-select: none;
}

.rn-tag {
  display: inline-flex;
  margin-bottom: 10px;
  padding: 4px 14px;
  border-radius: 999px;
  background: var(--ice);
  color: var(--blue);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.05em;
  border: 1px solid rgba(30, 136, 229, 0.15);
}

.rn-block-text h3 {
  margin: 8px 0 12px;
  font-size: clamp(19px, 1.6vw, 23px);
  line-height: 1.42;
}

.rn-block-text p {
  color: var(--muted);
  font-size: 15px;
  line-height: 1.86;
  max-width: 560px;
}

/* 写真：全ブロック共通の表示枠 */
.rn-block-figure {
  margin: 0;
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 14px 32px rgba(22, 50, 79, 0.13);
  align-self: center; /* stretch を避け aspect-ratio を優先 */
}

.rn-block-figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
}

/* teacher-01-thumb.webp は正方形なので上寄せで顔を優先 */
.rn-block-figure.rn-figure-portrait img {
  object-position: center top;
}

/* アイコン */
.rn-block-icon-fig {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 160px;
  height: 160px;
}

.rn-block-icon-fig img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 8px 16px rgba(30, 136, 229, 0.14));
}

/* ---------- コース紹介 ---------- */
.crs-section {
  background:
    radial-gradient(circle at 88% 10%, rgba(79, 195, 247, 0.1), transparent 32%),
    linear-gradient(180deg, rgba(234, 247, 255, 0.55) 0%, rgba(247, 251, 255, 0.3) 100%),
    var(--bg);
}

/* 大きな受験カード */
.cfc-card {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 0;
  margin-top: 48px;
  border-radius: 32px;
  overflow: hidden;
  box-shadow: 0 28px 60px rgba(30, 136, 229, 0.16);
}

.cfc-body {
  padding: clamp(32px, 3.5vw, 52px);
  background: linear-gradient(135deg, #1a56d0 0%, #1e88e5 60%, #29a8ee 100%);
  color: #fff;
}

.cfc-body .course-label {
  background: rgba(255, 255, 255, 0.22);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.32);
}

.cfc-body h3 {
  color: #fff;
  font-size: clamp(22px, 2.2vw, 30px);
  margin: 14px 0 16px;
  line-height: 1.35;
}

.cfc-body p {
  color: rgba(255, 255, 255, 0.88);
  font-size: 15px;
  line-height: 1.82;
  max-width: 520px;
}

.cfc-points {
  margin-top: 20px;
  color: rgba(255, 255, 255, 0.92) !important;
}

.cfc-points li::before {
  color: var(--teal) !important;
}

.cfc-btn {
  margin-top: 28px;
  background: #fff;
  color: var(--blue-deep);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.14);
}

.cfc-btn:hover {
  background: var(--ice);
  box-shadow: inset 0 2px 7px rgba(22, 50, 79, 0.12);
}

.cfc-stats {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0;
  background: rgba(255, 255, 255, 0.96);
  border-left: 1px solid rgba(30, 136, 229, 0.1);
}

.cfc-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 24px 20px;
  text-align: center;
  border-bottom: 1px solid rgba(22, 50, 79, 0.07);
  flex: 1;
  gap: 4px;
}

.cfc-stat:last-child {
  border-bottom: none;
}

.cfc-stat-label {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1.4;
}

.cfc-stat-num {
  display: block;
  font-size: clamp(34px, 2.8vw, 44px);
  font-weight: 700;
  color: var(--blue);
  line-height: 1.05;
}

.cfc-stat-unit {
  font-size: 0.48em;
  font-weight: 700;
  vertical-align: baseline;
}

/* サブ3コース */
.crs-sub-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-top: 18px;
}

.crs-sub-card {
  display: flex;
  flex-direction: column;
  padding: 28px;
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(22, 50, 79, 0.09);
  box-shadow: 0 10px 28px rgba(22, 50, 79, 0.07);
  transition: transform 0.22s ease, box-shadow 0.22s ease;
}

.crs-sub-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 44px rgba(30, 136, 229, 0.14);
}

.crs-sub-card h3 {
  margin: 12px 0 10px;
  font-size: 18px;
}

.crs-sub-card p {
  color: var(--muted);
  font-size: 14px;
  line-height: 1.78;
}

.crs-sub-card .course-points {
  margin-top: auto;
  padding-top: 18px;
  font-size: 13px;
}

/* ---------- 成績アップ事例・生徒の声 ---------- */
.vr-section {
  background: #fff;
}

.vr-band {
  padding: clamp(56px, 5.5vw, 80px) 0;
  background:
    radial-gradient(circle at 15% 20%, rgba(255, 255, 255, 0.14), transparent 24%),
    linear-gradient(135deg, #16324F 0%, #1a5fa0 55%, #1e88e5 100%);
  color: #fff;
}

.vr-band-head {
  text-align: center;
  margin-bottom: 42px;
}

.vr-band-title {
  color: #fff;
  font-size: clamp(26px, 2.8vw, 36px);
  margin-top: 8px;
}

.vr-band-note {
  margin-top: 8px;
  color: rgba(255, 255, 255, 0.55);
  font-size: 12px;
}

.eyebrow-white {
  color: rgba(255, 255, 255, 0.75);
}

.eyebrow-white::before {
  background: rgba(255, 255, 255, 0.65);
}

.vr-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2px;
}

.vr-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 24px 16px;
  border-right: 1px solid rgba(255, 255, 255, 0.12);
}

.vr-stat:last-child {
  border-right: none;
}

.vr-stat-num {
  display: block;
  font-size: clamp(44px, 4.5vw, 62px);
  font-weight: 700;
  color: #fff;
  line-height: 1;
  letter-spacing: -0.02em;
}

.vr-stat-unit {
  font-size: 0.42em;
  font-weight: 700;
  vertical-align: baseline;
}

.vr-stat-label {
  display: block;
  margin-top: 10px;
  color: rgba(255, 255, 255, 0.75);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
}

.vr-stat-sub {
  display: block;
  margin-top: 5px;
  color: var(--teal);
  font-size: 12px;
  font-weight: 600;
}

.vr-voices {
  padding: clamp(56px, 5.5vw, 84px) 0 clamp(72px, 6.6vw, 98px);
}

.vr-voices .section-head {
  margin-bottom: 40px;
}

.vr-voice-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 22px;
  margin-top: 42px;
}

/* ---------- レスポンシブ: v3セクション ---------- */
@media (max-width: 1080px) {
  .cfc-card {
    grid-template-columns: 1fr 280px;
  }
  .cfc-stat-num {
    font-size: 36px;
  }
  .vr-stats {
    grid-template-columns: repeat(2, 1fr);
  }
  .vr-stat:nth-child(2) {
    border-right: none;
  }
  .vr-stat:nth-child(3) {
    border-top: 1px solid rgba(255, 255, 255, 0.12);
  }
  .vr-stat:nth-child(4) {
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    border-right: none;
  }
}

@media (max-width: 860px) {
  .rn-block-photo,
  .rn-block-rev {
    grid-template-columns: 1fr;
  }
  /* SP：全ブロック共通でテキスト上・写真下 */
  .rn-block-rev .rn-block-text {
    order: 1;
  }
  .rn-block-rev .rn-block-figure {
    order: 2;
  }
  .rn-num-deco {
    font-size: 72px;
  }
  .cfc-card {
    grid-template-columns: 1fr;
  }
  .cfc-stats {
    flex-direction: row;
    border-left: none;
    border-top: 1px solid rgba(30, 136, 229, 0.1);
  }
  .cfc-stat {
    border-bottom: none;
    border-right: 1px solid rgba(22, 50, 79, 0.07);
    padding: 20px 16px;
  }
  .cfc-stat:last-child {
    border-right: none;
  }
  .crs-sub-grid {
    grid-template-columns: 1fr;
    gap: 14px;
  }
  .vr-stats {
    grid-template-columns: repeat(2, 1fr);
    gap: 1px;
  }
  .vr-voice-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .rn-block {
    padding: 24px 20px;
    border-radius: 22px;
  }
  .rn-num-deco {
    font-size: 56px;
  }
  .rn-block-icon-fig {
    width: 96px;
    height: 96px;
  }
  .cfc-stats {
    flex-direction: column;
  }
  .cfc-stat {
    border-right: none;
    border-bottom: 1px solid rgba(22, 50, 79, 0.07);
    padding: 18px;
  }
  .cfc-stat:last-child {
    border-bottom: none;
  }
  .vr-stat-num {
    font-size: 38px;
  }
}

/* =============================================
   旧v2スタイル：上書き保持（以下はレガシー）
   ============================================= */
/* 選ばれる理由：実績バッジ
   ============================================= */
.reason-photo {
  position: relative;
}

.reason-stats {
  position: absolute;
  bottom: 16px;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  gap: 10px;
  padding: 0 16px;
}

.reason-stat {
  flex: 1;
  max-width: 120px;
  padding: 10px 8px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(30, 136, 229, 0.14);
  box-shadow: 0 8px 20px rgba(22, 50, 79, 0.14);
  text-align: center;
}

.reason-stat b {
  display: block;
  color: var(--blue);
  font-size: clamp(20px, 1.8vw, 26px);
  font-weight: 700;
  line-height: 1.1;
}

.reason-stat b span {
  font-size: 0.6em;
  font-weight: 700;
}

.reason-stat small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
}

/* =============================================
   コース紹介：セクション背景・カード強調
   ============================================= */
.section-courses {
  background:
    radial-gradient(circle at 90% 10%, rgba(79, 195, 247, 0.12), transparent 30%),
    linear-gradient(180deg, rgba(234, 247, 255, 0.6) 0%, rgba(247, 251, 255, 0.4) 100%),
    var(--bg);
}

.course-label-jr   { color: #1565C0; background: #E3F2FD; }
.course-label-exam { color: #6A1B9A; background: #F3E5F5; }
.course-label-hs   { color: #00695C; background: #E0F2F1; }
.course-label-univ { color: #E65100; background: #FFF3E0; }

.course-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 18px;
  color: var(--blue);
  font-size: 14px;
  font-weight: 700;
  border-bottom: 1px solid rgba(30, 136, 229, 0.3);
  padding-bottom: 2px;
  transition: gap 0.2s ease, border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.course-link:hover {
  transform: translateY(1px);
  gap: 8px;
  border-color: var(--blue);
  box-shadow: inset 0 2px 6px rgba(30, 136, 229, 0.12);
}

/* =============================================
   講師紹介：セクション背景・専門タグ
   ============================================= */
.section-teachers {
  background:
    radial-gradient(circle at 8% 80%, rgba(45, 212, 191, 0.1), transparent 28%),
    rgba(255, 255, 255, 0.86);
  border-block: 1px solid rgba(30, 136, 229, 0.08);
}

.teacher-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 10px 0 14px;
}

.teacher-tag {
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--teal-soft);
  color: #00796B;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.03em;
  border: 1px solid rgba(45, 212, 191, 0.28);
}

/* =============================================
   教室案内：ボーダー改善・CTAボタン・マップピン
   ============================================= */
.access-list div {
  border-top-color: rgba(22, 50, 79, 0.12);
}

.access-trial-btn {
  margin-top: 28px;
  width: 100%;
  justify-content: center;
}

.map-pin {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.map-pin-icon {
  width: 28px;
  height: 28px;
  margin-bottom: 2px;
  flex-shrink: 0;
}

/* =============================================
   フッター：CTAボタン・色分離・リンク
   ============================================= */
.footer {
  background:
    radial-gradient(circle at 14% 18%, rgba(255, 255, 255, 0.14), transparent 26%),
    linear-gradient(135deg, #16324F, #1a5fa0 58%, #1e88e5);
}

.footer-list a {
  color: rgba(255, 255, 255, 0.78);
  transition: color 0.18s ease;
}

.footer-list a:hover {
  color: #fff;
  text-decoration: underline;
}

.footer-trial-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-top: 20px;
  padding: 11px 20px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.16);
  border: 1px solid rgba(255, 255, 255, 0.36);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.footer-trial-btn:hover {
  background: rgba(255, 255, 255, 0.26);
  transform: translateY(2px);
  box-shadow: inset 0 2px 7px rgba(22, 50, 79, 0.16);
}

/* =============================================
   追加レスポンシブ対応
   ============================================= */
@media (max-width: 1080px) {
  .reason-stats {
    gap: 8px;
  }
}

@media (max-width: 860px) {
  .reason-stats {
    position: static;
    margin-top: 14px;
    justify-content: space-around;
    padding: 0;
  }

  .reason-stat {
    max-width: none;
  }

  .access-trial-btn {
    width: auto;
  }
}

@media (max-width: 560px) {
  .reason-stats {
    gap: 6px;
  }

  .reason-stat b {
    font-size: 18px;
  }

  .teacher-tags {
    gap: 4px;
  }

  .teacher-tag {
    font-size: 10px;
    padding: 3px 8px;
  }
}

/* =============================================
   講師紹介：横長カード縦積み
   ============================================= */
.tc-section {
  background:
    radial-gradient(circle at 94% 8%, rgba(79, 195, 247, 0.12), transparent 28%),
    rgba(234, 247, 255, 0.55);
  border-block: 1px solid rgba(30, 136, 229, 0.08);
}

/* 4列横並びグリッド */
.tc-list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 42px;
}

.tc-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  border-radius: 20px;
  background: #fff;
  border: 1px solid rgba(22, 50, 79, 0.08);
  box-shadow: 0 8px 24px rgba(22, 50, 79, 0.07);
  padding: 28px 20px 24px;
  transition: transform 0.22s ease, box-shadow 0.22s ease;
}

.tc-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 40px rgba(30, 136, 229, 0.13);
}

/* 写真：丸型サムネイル */
.tc-photo {
  width: 130px;
  height: 130px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
  margin-bottom: 16px;
  border: 3px solid rgba(30, 136, 229, 0.12);
}

.tc-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}

/* テキストエリア */
.tc-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  padding: 0;
}

.tc-body h3 {
  font-size: 17px;
  font-weight: 800;
  color: var(--blue-deep, #16324f);
  margin-bottom: 8px;
}

/* 肩書き：淡い水色のラベル */
.tc-body .teacher-role {
  display: inline-block;
  background: rgba(30, 136, 229, 0.09);
  color: var(--blue, #1e88e5);
  font-size: 11.5px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 4px;
  margin-bottom: 12px;
}

.tc-body p {
  margin-top: 10px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.8;
  text-align: left;
}

/* =============================================
   教室案内：写真＋既存レイアウト
   ============================================= */
.ac-section {
  background:
    radial-gradient(circle at 8% 90%, rgba(45, 212, 191, 0.08), transparent 26%),
    var(--bg);
}

/* Google マップ埋め込みカード */
.ac-map-wrap {
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 10px 32px rgba(22, 50, 79, 0.1);
  border: 1px solid rgba(30, 136, 229, 0.1);
  line-height: 0;
  /* グリッドセルの高さに合わせる */
  display: flex;
  flex-direction: column;
}

.ac-map-frame {
  display: block;
  width: 100%;
  flex: 1;          /* 親の高さいっぱいに伸ばす */
  min-height: 320px;
  border: none;
}

.ac-photo {
  margin: 0 0 24px;
  border-radius: 24px;
  overflow: hidden;
  height: 260px;
  box-shadow: 0 14px 36px rgba(22, 50, 79, 0.1);
}

.ac-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 40%;
  display: block;
}

/* =============================================
   フッター：細部調整
   ============================================= */
.footer-trial-btn {
  margin-top: 20px;
  padding: 12px 22px;
  font-size: 14px;
}

.footer-list {
  gap: 10px;
}

.footer-bottom {
  margin-top: 40px;
}

/* =============================================
   追加レスポンシブ
   ============================================= */
@media (max-width: 1080px) {
  .tc-list {
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
  }
  .tc-card {
    padding: 22px 14px 20px;
  }
  .tc-photo {
    width: 110px;
    height: 110px;
  }
}

@media (max-width: 860px) {
  .tc-list {
    grid-template-columns: repeat(2, 1fr);
    gap: 18px;
  }
  .tc-card {
    padding: 24px 18px 22px;
  }
  .tc-photo {
    width: 120px;
    height: 120px;
  }
  .tc-body {
    padding: 0;
  }
  .ac-photo {
    height: 200px;
  }
}

@media (max-width: 560px) {
  .tc-list {
    grid-template-columns: 1fr;
  }
  .tc-card {
    padding: 24px 20px 22px;
  }
  .tc-photo {
    width: 130px;
    height: 130px;
  }
  .ac-photo {
    height: 160px;
    border-radius: 18px;
  }
}

/* =============================================
   途中CTA（横長バナー型）: .tbc-*
   ============================================= */

.tbc-wrap {
  padding: clamp(40px, 5vw, 64px) 0;
}

.tbc-banner {
  position: relative;
  display: grid;
  grid-template-columns: 180px 1fr 180px;
  align-items: flex-end;
  gap: 0;
  border-radius: 24px;
  overflow: hidden;
  background:
    /* 左側のやわらかい光 */
    radial-gradient(ellipse 160px 140px at 9% 50%, rgba(255,255,255,.13) 0%, transparent 100%),
    /* 右側の淡いティール光 */
    radial-gradient(ellipse 120px 100px at 91% 60%, rgba(45,212,191,.10) 0%, transparent 100%),
    /* 右下コーナーのほんのり明るさ */
    radial-gradient(circle 70px at 94% 90%, rgba(255,255,255,.06) 0%, transparent 100%),
    linear-gradient(120deg, #1565c0 0%, #1e88e5 50%, #29b6f6 100%);
  padding: 0 40px;
  min-height: 220px;
}

/* 装飾ベース */
.tbc-deco {
  position: absolute;
  pointer-events: none;
  user-select: none;
  z-index: 0;
  line-height: 1;
}

/* ── ドットグリッド：左上 ── */
.tbc-deco--dots-tl {
  top: 14px; left: 14px;
  width: 68px; height: 60px;
  background-image: radial-gradient(circle, rgba(255,255,255,.45) 1.8px, transparent 1.8px);
  background-size: 11px 11px;
}

/* ── ドットグリッド：右上 ── */
.tbc-deco--dots-tr {
  top: 14px; right: 14px;
  width: 68px; height: 60px;
  background-image: radial-gradient(circle, rgba(255,255,255,.38) 1.8px, transparent 1.8px);
  background-size: 11px 11px;
}

/* ── ダイヤ形 ── */
/* ドットグリッド右隣（左上） */
.tbc-deco--dia-a { top: 16px;  left: 90px;  font-size: 10px; color: rgba(255,255,255,.65); }
/* ドットグリッド左隣（右上） */
.tbc-deco--dia-b { top: 16px;  right: 90px; font-size: 10px; color: rgba(255,255,255,.60); }
/* 左下エリア */
.tbc-deco--dia-c { bottom: 22px; left: 24px; font-size: 9px;  color: rgba(255,255,255,.50); }
/* 右下エリア */
.tbc-deco--dia-d { bottom: 18px; right: 20px; font-size: 9px; color: rgba(255,255,255,.50); }

/* ── 白スパークル ✦ ── */
/* 男の子エリア上 */
.tbc-deco--sp-a { top: 18px;   left: 182px; font-size: 13px; color: rgba(255,255,255,.80); }
/* 男の子エリア中〜下 */
.tbc-deco--sp-b { bottom: 36px; left: 168px; font-size: 9px;  color: rgba(255,255,255,.60); }
/* 左端・中高さ */
.tbc-deco--sp-c { top: 52%;    left: 10px;  font-size: 8px;  color: rgba(255,255,255,.45); transform: translateY(-50%); }
/* 女の子エリア上 */
.tbc-deco--sp-d { top: 18px;   right: 182px; font-size: 13px; color: rgba(255,255,255,.75); }
/* 女の子エリア中〜下 */
.tbc-deco--sp-e { bottom: 38px; right: 168px; font-size: 9px;  color: rgba(255,255,255,.58); }
/* 右端・中高さ */
.tbc-deco--sp-f { top: 48%;    right: 10px; font-size: 8px;  color: rgba(255,255,255,.42); transform: translateY(-50%); }

/* ── 黄色スパークル（バッジ周辺） ── */
/* バッジ左上 */
.tbc-deco--ysp-a { top: 22px;  left: 152px; font-size: 10px; color: rgba(255,213,0,.85); }
/* バッジ下 */
.tbc-deco--ysp-b { top: 76px;  left: 138px; font-size: 7px;  color: rgba(255,213,0,.70); }

/* 左右イラスト */
.tbc-illust {
  align-self: flex-end;
  overflow: hidden;
}
.tbc-illust img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 200px;
  object-fit: contain;
  object-position: bottom;
}

/* 中央コンテンツ */
.tbc-body {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 28px 24px 32px;
  gap: 12px;
  z-index: 1;
}

.tbc-badge-round {
  position: absolute;
  top: 20px;
  left: -10px;
  width: 68px;
  height: 68px;
  border-radius: 50%;
  background: #ffb800;
  color: #1a3a5c;
  font-size: 11px;
  font-weight: 700;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1.2;
  text-align: center;
  box-shadow: 0 4px 14px rgba(0,0,0,.18);
}
.tbc-badge-round strong { font-size: 17px; }

.tbc-heading {
  color: #fff;
  font-size: clamp(17px, 2.2vw, 26px);
  line-height: 1.4;
  font-weight: 800;
  margin: 0;
}

.tbc-sub {
  color: rgba(255,255,255,.82);
  font-size: 13px;
  margin: 0;
}

.tbc-trust {
  display: flex;
  gap: 8px;
  list-style: none;
  flex-wrap: wrap;
  justify-content: center;
  margin: 0;
  padding: 0;
}
.tbc-trust li {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(255,255,255,.18);
  border: 1px solid rgba(255,255,255,.3);
  border-radius: 999px;
  padding: 6px 14px;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
}
.tbc-trust li .icon { color: #fff; width: 14px; height: 14px; }

.tbc-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: center;
}

.tbc-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 14px 28px;
  border-radius: 999px;
  background: linear-gradient(135deg, #ffca28, #ff9800);
  color: #1a3a5c;
  font-size: 15px;
  font-weight: 800;
  text-decoration: none;
  box-shadow: 0 8px 22px rgba(0,0,0,.18);
  transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
  white-space: nowrap;
}
.tbc-btn-primary:hover {
  transform: translateY(2px);
  filter: brightness(.97);
  box-shadow: inset 0 2px 7px rgba(90, 54, 0, .18);
}

.tbc-btn-secondary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 13px 24px;
  border-radius: 999px;
  background: rgba(255,255,255,.18);
  border: 2px solid rgba(255,255,255,.7);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s ease, transform .18s ease, box-shadow .18s ease;
  white-space: nowrap;
}
.tbc-btn-secondary:hover {
  background: rgba(255,255,255,.3);
  transform: translateY(2px);
  box-shadow: inset 0 2px 7px rgba(22, 50, 79, .16);
}

/* レスポンシブ: tbc */
@media (max-width: 860px) {
  .tbc-banner {
    grid-template-columns: 130px 1fr 130px;
    padding: 0 20px;
    min-height: 180px;
  }
  .tbc-illust img { max-height: 160px; }
  .tbc-badge-round { width: 56px; height: 56px; font-size: 10px; left: -6px; }
  .tbc-badge-round strong { font-size: 14px; }
}

@media (max-width: 600px) {
  .tbc-banner {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    padding: 28px 20px 24px;
    min-height: unset;
    text-align: center;
    border-radius: 20px;
  }
  .tbc-illust { display: none; }
  .tbc-body { padding: 0; }
  .tbc-badge-round {
    position: static;
    margin: 0 auto 8px;
  }
  .tbc-heading { font-size: clamp(16px, 4.5vw, 20px); }
  .tbc-btn-primary, .tbc-btn-secondary { width: 100%; justify-content: center; }
}

/* =============================================
   フッター前メインCTA: .mcta-*
   ============================================= */

.mcta-wrap {
  padding: clamp(56px, 6vw, 88px) 0;
  scroll-margin-top: 90px;
}

.mcta-card {
  position: relative;
  display: grid;
  grid-template-columns: 260px 1fr 260px;  /* イラスト列を広く */
  align-items: flex-end;
  border-radius: 28px;
  overflow: hidden;
  background: #fff;                         /* 白背景に変更 */
  border: 1px solid rgba(30,136,229,.1);
  box-shadow: 0 12px 48px rgba(30,100,200,.08);
  padding: 0 48px;
  min-height: 300px;                        /* 縦を少し詰める */
}

/* 装飾ベース */
.mcta-deco { position: absolute; pointer-events: none; user-select: none; line-height: 1; }

/* ── 淡い大円（控えめに） ── */
.mcta-deco--circle1 {
  top: 14px; left: 14px;
  width: 140px; height: 140px;
  border-radius: 50%;
  background: rgba(30,136,229,.07);
}
.mcta-deco--circle2 {
  bottom: -30px; right: 270px;
  width: 110px; height: 110px;
  border-radius: 50%;
  background: rgba(30,136,229,.06);
}

/* ── 小さな塗り潰し円（カンプの小さな暗い円） ── */
.mcta-deco--dot-a {
  top: 16px; left: 175px;
  width: 26px; height: 26px;
  border-radius: 50%;
  background: rgba(22,100,180,.15);
}
.mcta-deco--dot-b {
  bottom: 22px; right: 178px;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: rgba(22,100,180,.12);
}

/* ── 斜めハッチング円（カンプのストライプ円） ── */
.mcta-deco--stripe-a {
  top: -18px; right: 248px;
  width: 100px; height: 100px;
  border-radius: 50%;
  background: repeating-linear-gradient(
    -45deg,
    rgba(30,136,229,.14) 0px,
    rgba(30,136,229,.14) 2px,
    transparent 2px,
    transparent 9px
  );
}
.mcta-deco--stripe-b {
  bottom: -22px; left: 250px;
  width: 82px; height: 82px;
  border-radius: 50%;
  background: repeating-linear-gradient(
    -45deg,
    rgba(30,136,229,.11) 0px,
    rgba(30,136,229,.11) 2px,
    transparent 2px,
    transparent 9px
  );
}

/* ── ◇ ダイヤ ── */
.mcta-deco--dia-a { top: 20px;    left: 268px;  font-size: 11px; color: rgba(30,136,229,.32); }
.mcta-deco--dia-b { bottom: 24px; right: 266px; font-size: 10px; color: rgba(30,136,229,.28); }

/* ── ✦ 青スパークル ── */
.mcta-deco--sp-a { top: 26px;    right: 312px; font-size: 12px; color: rgba(30,136,229,.42); }
.mcta-deco--sp-b { bottom: 28px; left:  276px; font-size: 9px;  color: rgba(30,136,229,.30); }

/* ── ✦ 黄スパークル ── */
.mcta-deco--ysp-a { top: 34px;    left: 240px;  font-size: 14px; color: rgba(255,190,0,.72); }
.mcta-deco--ysp-b { bottom: 28px; right: 235px; font-size: 14px; color: rgba(255,190,0,.68); }

/* 左右イラスト */
.mcta-illust {
  align-self: flex-end;
}
.mcta-illust img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 360px;        /* 1.2倍に拡大 */
  object-fit: contain;
  object-position: bottom;
}

/* 中央コンテンツ */
.mcta-body {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 36px 24px 36px;  /* 上下余白を削減 */
  gap: 0;
  z-index: 1;
}
.mcta-body .eyebrow { margin-bottom: 6px; }

.mcta-heading {
  color: var(--blue-deep, #16324f);
  font-size: clamp(17px, 1.85vw, 23px); /* 2行目が1行に収まるサイズ */
  font-weight: 800;
  line-height: 1.5;
  margin: 0 0 12px;
  letter-spacing: .01em;
  white-space: nowrap;       /* 強制的に折り返さない */
}

.mcta-sp-break {
  display: none;
}

.mcta-desc {
  color: #4a6080;
  font-size: 13.5px;
  line-height: 1.8;
  margin: 0 0 18px;
}

.mcta-trust {
  display: flex;
  gap: 8px;
  list-style: none;
  flex-wrap: wrap;
  justify-content: center;
  margin: 0 0 22px;
  padding: 0;
}
.mcta-trust li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #f0f6ff;       /* 白カード上で区別できる薄青 */
  border: 1px solid rgba(30,136,229,.18);
  border-radius: 999px;
  padding: 7px 16px;
  color: var(--blue-deep, #16324f);
  font-size: 12.5px;
  font-weight: 700;
  box-shadow: 0 2px 8px rgba(30,100,200,.06);
}
.mcta-trust li .icon { color: var(--blue, #1e88e5); width: 15px; height: 15px; }

.mcta-main-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 56px;
  padding: 14px 40px;
  border-radius: 999px;
  background: linear-gradient(135deg, #ffca28, #ff9800);
  color: #1a3a5c;
  font-size: 16px;
  font-weight: 800;
  text-decoration: none;
  transition: transform .2s ease, filter .2s ease, box-shadow .2s ease;
  margin-bottom: 16px;
}
.mcta-main-btn:hover {
  transform: translateY(2px);
  filter: brightness(.97);
  box-shadow: inset 0 2px 7px rgba(90, 54, 0, .18);
}

.mcta-sub {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  justify-content: center;
}

.mcta-sub-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 11px 22px;
  border-radius: 999px;
  border: 1.5px solid rgba(30,136,229,.3);
  background: #fff;
  color: var(--blue-deep, #16324f);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s ease, border-color .18s ease, transform .18s ease;
  white-space: nowrap;
}
.mcta-sub-link:hover {
  background: rgba(30,136,229,.06);
  border-color: rgba(30,136,229,.5);
  transform: translateY(1px);
  box-shadow: inset 0 2px 6px rgba(30,136,229,.12);
}
.mcta-sub-link--line {
  border-color: rgba(0,190,0,.3);
  color: #1a3a5c;
}
.mcta-sub-link--line:hover {
  background: rgba(0,190,0,.05);
  border-color: rgba(0,190,0,.5);
}
.mcta-sub-link .icon { width: 16px; height: 16px; color: var(--blue, #1e88e5); }
.mcta-sub-link--line .icon { color: #00be00; }

/* レスポンシブ: mcta */
@media (max-width: 1080px) {
  .mcta-card {
    grid-template-columns: minmax(150px, 200px) minmax(0, 1fr) minmax(150px, 200px);
    padding: 0 24px;
  }

  .mcta-heading {
    white-space: normal;
  }
}

@media (max-width: 960px) {
  .mcta-card {
    grid-template-columns: 180px 1fr 180px;
    padding: 0 24px;
    min-height: 260px;
  }
  .mcta-illust img { max-height: 280px; }
}

@media (max-width: 700px) {
  .mcta-card {
    grid-template-columns: 1fr;
    padding: 40px 24px 36px;
    min-height: unset;
    border-radius: 22px;
  }
  .mcta-illust { display: none; }
  .mcta-body { padding: 0; }
  .mcta-heading { font-size: clamp(18px, 5vw, 22px); }
  .mcta-main-btn { width: 100%; justify-content: center; font-size: 16px; }
  .mcta-sub { flex-direction: column; gap: 10px; }
  .mcta-sub-link { width: 100%; justify-content: center; }
}

/* ===== お悩み・ソリューション リデザイン ===== */

/* teacher-appeal デコレーション背景 */
.teacher-appeal { position: relative; overflow: visible; }
.teacher-appeal::before {
  content: "";
  position: absolute; inset: 0;
  background:
    radial-gradient(circle 60px at 15% 20%, rgba(30,136,229,.12) 100%, transparent 0),
    radial-gradient(circle 36px at 80% 70%, rgba(255,159,28,.15) 100%, transparent 0),
    radial-gradient(circle 18px at 60% 10%, rgba(45,212,191,.18) 100%, transparent 0);
  pointer-events: none; z-index: 0;
}
.teacher-appeal::after {
  content: "";
  position: absolute; inset: 0;
  background-image: radial-gradient(rgba(30,136,229,.2) 1.5px, transparent 0);
  background-size: 18px 18px;
  -webkit-mask-image: linear-gradient(135deg, rgba(0,0,0,.35) 0%, transparent 60%);
  mask-image: linear-gradient(135deg, rgba(0,0,0,.35) 0%, transparent 60%);
  pointer-events: none; z-index: 0;
}
.worry-teacher { position: relative; z-index: 1; }

/* マーカー下線 */
.worry-solution-copy h3 .marker {
  background: linear-gradient(transparent 60%, rgba(255,220,50,.65) 60%);
}

/* #solution 背景を白に */
#solution { background: #fff; }

/* sol2 2カラムレイアウト */
.sol2-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: start;
}

/* 左: 青グラデカード */
.sol2-blue-card {
  background: linear-gradient(145deg, #1565C0, #1E88E5 55%, #42A5F5);
  border-radius: 16px;
  padding: 40px 36px;
  color: #fff;
  display: flex;
  flex-direction: column;
  gap: 16px;
  height: 100%;
  box-sizing: border-box;
}
.sol2-blue-card .eyebrow { color: rgba(255,255,255,.8); }
.sol2-blue-card .eyebrow::before,
.sol2-blue-card .eyebrow::after { background: rgba(255,255,255,.6); }
.sol2-blue-card h2 { color: #fff; font-size: clamp(1.1rem, 2.2vw, 1.45rem); }
.sol2-blue-card > p { opacity: .9; line-height: 1.8; font-size: .9rem; }
.sol2-icons { display: flex; gap: 16px; margin-top: auto; padding-top: 24px; }
.sol2-icons img { width: 56px; height: 56px; object-fit: contain; }

/* 右: 4枚の白カード */
.sol2-cards {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.sol2-card {
  background: #fff;
  border: 1.5px solid #E0EEF9;
  border-radius: 12px;
  padding: 20px 24px;
  display: flex;
  align-items: flex-start;
  gap: 20px;
  box-shadow: 0 2px 8px rgba(30,136,229,.06);
}
.sol2-card img { width: 48px; height: 48px; object-fit: contain; flex-shrink: 0; }
.sol2-card h3  { font-size: 1rem; font-weight: 700; color: var(--heading); margin-bottom: 4px; }
.sol2-card p   { font-size: .875rem; color: #555; line-height: 1.7; margin: 0; }

/* tablet */
@media (max-width: 860px) {
  .sol2-layout { grid-template-columns: 1fr; }
  .sol2-blue-card { padding: 32px 28px; height: auto; }
}

/* SP */
@media (max-width: 560px) {
  .sol2-card { padding: 16px; gap: 14px; }
  .sol2-card img { width: 40px; height: 40px; }
}

/* ===== お悩み・ソリューション 追加修正 ===== */

/* 1. h3 2行目を途中で折り返さない (PC) */
.worry-solution-copy h3 .marker {
  white-space: nowrap;
}

/* 2. 先生イラストの足切れ対策 */
.worry-bottom {
  padding-bottom: 0;
  align-items: end;
}
.teacher-appeal {
  align-self: end;
  overflow: visible;
}
.worry-teacher {
  max-height: none;
  width: min(340px, 85%);
  display: block;
  margin-bottom: -2px; /* セクション境界にぴったり揃える */
}

/* 7. マーカーを控えめな下線風に変更 */
.worry-solution-copy h3 .marker {
  background: none;
  text-decoration: underline;
  text-decoration-color: rgba(255, 210, 30, 0.75);
  text-decoration-thickness: 3px;
  text-underline-offset: 4px;
}

/* 3. 青カードのグラデーションを鮮やかに */
.sol2-blue-card {
  background: linear-gradient(145deg, #0d47a1 0%, #1565c0 30%, #1976d2 60%, #2196f3 85%, #42a5f5 100%);
  position: relative;
  overflow: hidden;
}
/* カード内の控えめな幾何学装飾 */
.sol2-blue-card::before {
  content: "";
  position: absolute;
  top: -40px; right: -40px;
  width: 180px; height: 180px;
  border-radius: 50%;
  background: rgba(255,255,255,.07);
  pointer-events: none;
}
.sol2-blue-card::after {
  content: "";
  position: absolute;
  bottom: -30px; left: -30px;
  width: 140px; height: 140px;
  border-radius: 50%;
  background: rgba(255,255,255,.05);
  pointer-events: none;
}

/* 4. 青カード内アイコン再配置 */
.sol2-deco-icons {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-end;
  justify-content: flex-end;
  gap: 12px;
  margin-top: auto;
  padding-top: 28px;
}
.sol2-deco-school {
  width: 64px; height: 64px;
  object-fit: contain;
  opacity: .75;
  filter: brightness(0) invert(1);
}
.sol2-deco-bulb {
  width: 44px; height: 44px;
  object-fit: contain;
  opacity: .6;
  filter: brightness(0) invert(1);
  margin-bottom: 6px;
}
/* 旧 sol2-icons 互換消去 */
.sol2-icons { display: none; }

/* 5 & 6. 右カードのアイコンサイズ統一 + 本文詰め */
.sol2-card img {
  width: 52px;
  height: 52px;
  object-fit: contain;
  flex-shrink: 0;
}
.sol2-card p {
  font-size: .82rem;
  letter-spacing: -.01em;
}

/* PC: 1枚目カードの本文を1行に収める */
@media (min-width: 861px) {
  .sol2-cards li:first-child p {
    white-space: nowrap;
  }
}

/* SP: nowrap 解除 + marker の white-space 解除 */
@media (max-width: 560px) {
  .worry-solution-copy h3 .marker {
    white-space: normal;
  }
  .sol2-cards li:first-child p {
    white-space: normal;
  }
  .worry-teacher {
    width: min(240px, 75vw);
    margin-bottom: 0;
  }
}

/* ===== お悩み・ソリューション 第3次修正 ===== */

/* 1. 先生背後装飾をカンプ寄りに刷新 */
.teacher-appeal::before {
  content: "";
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 280px; height: 280px;
  border-radius: 50%;
  background: rgba(144, 202, 249, 0.18);
  pointer-events: none; z-index: 0;
}
.teacher-appeal::after {
  content: "";
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 340px; height: 340px;
  border-radius: 50%;
  border: 1.5px solid rgba(100, 181, 246, 0.25);
  background: none;
  pointer-events: none; z-index: 0;
}
/* ドットパターン（追加装飾用擬似要素は親に移譲） */
.worry-bottom {
  position: relative;
}
/* 斜めストライプ + 点装飾を .worry-board のbefore/after で実現 */
.worry-board::before {
  content: "";
  position: absolute;
  right: 0; top: 30%;
  width: 200px; height: 200px;
  background-image:
    radial-gradient(circle 2px at 2px 2px, rgba(30,136,229,.18) 100%, transparent 0);
  background-size: 14px 14px;
  pointer-events: none; z-index: 0;
  -webkit-mask-image: radial-gradient(ellipse at center, black 40%, transparent 75%);
  mask-image: radial-gradient(ellipse at center, black 40%, transparent 75%);
}
.worry-board::after {
  content: "";
  position: absolute;
  right: 8%; bottom: 15%;
  width: 48px; height: 48px;
  border-radius: 50%;
  border: 2px solid rgba(30,136,229,.2);
  pointer-events: none; z-index: 0;
}

/* 2. 黄色マーカーを太く自然なハイライトに */
.worry-solution-copy h3 .marker {
  background: linear-gradient(transparent 52%, rgba(255,215,0,.48) 52%);
  text-decoration: none;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  padding-bottom: 2px;
}

/* 3. 補足文下の余白 */
.worry-note {
  margin-bottom: clamp(32px, 4vw, 56px);
}

/* 4 & 5. SOLUTIONカード：本文・アイコン配置 */
.sol2-blue-card > p {
  font-size: .88rem;
  line-height: 1.85;
  opacity: .92;
}
.sol2-deco-icons {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 0;
  margin-top: auto;
  padding-top: 28px;
}
.sol2-deco-bulb {
  width: 44px; height: 44px;
  object-fit: contain;
  opacity: .55;
  filter: brightness(0) invert(1);
}
.sol2-deco-school {
  width: 72px; height: 72px;
  object-fit: contain;
  opacity: .65;
  filter: brightness(0) invert(1);
}

/* 6. 見出し下に黄色アクセントライン */
.sol2-blue-card h2 {
  position: relative;
  padding-bottom: 14px;
}
.sol2-blue-card h2::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 36px; height: 3px;
  background: rgba(255,215,0,.75);
  border-radius: 2px;
}

/* 7. 右カードアイコン統一・余白整理 */
.sol2-card {
  padding: 18px 20px;
  gap: 16px;
  align-items: center;
}
.sol2-card img {
  width: 52px;
  height: 52px;
  object-fit: contain;
  flex-shrink: 0;
  align-self: flex-start;
  margin-top: 2px;
}
.sol2-card h3 { font-size: .95rem; }
.sol2-card p  { font-size: .82rem; letter-spacing: -.01em; }

@media (min-width: 861px) {
  .sol2-cards li:first-child p { white-space: nowrap; }
}
@media (max-width: 560px) {
  .sol2-cards li:first-child p { white-space: normal; }
  .worry-solution-copy h3 .marker { white-space: normal; }
  .sol2-deco-school { width: 56px; height: 56px; }
  .sol2-deco-bulb   { width: 36px; height: 36px; }
}

/* ===== SOLUTIONカード アイコン配置修正 ===== */

/* eyebrow行: 豆電球アイコン + SOLUTIONラベル横並び */
.sol2-eyebrow-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.sol2-eyebrow-row .eyebrow {
  margin: 0;
}

/* 豆電球: SOLUTIONラベル左に小さく。白丸は元画像に入っているのでfilterなし */
.sol2-deco-bulb {
  width: 36px;
  height: 36px;
  object-fit: contain;
  flex-shrink: 0;
  filter: none;
  opacity: 1;
}

/* 学校アイコン: カード右下に絶対配置 */
.sol2-blue-card {
  position: relative;
}
.sol2-deco-school {
  position: absolute;
  right: 20px;
  bottom: 20px;
  width: 80px;
  height: 80px;
  object-fit: contain;
  opacity: .55;
  filter: brightness(0) invert(1);
  pointer-events: none;
}

/* 旧 sol2-deco-icons 無効化 */
.sol2-deco-icons { display: none !important; }

/* ===== SOLUTIONカード カンプ寄せ追加修正 ===== */

/* h2 にテキストアンダーライン（黄色・太め） */
.sol2-blue-card h2 {
  font-size: clamp(1.35rem, 2.6vw, 1.75rem);
  text-decoration: underline;
  text-decoration-color: rgba(255, 210, 30, 0.85);
  text-decoration-thickness: 4px;
  text-underline-offset: 6px;
  padding-bottom: 0;
}
/* 前回追加した ::after の黄ラインは消去 */
.sol2-blue-card h2::after {
  display: none;
}

/* 本文フォントサイズ調整 */
.sol2-blue-card > p {
  font-size: .875rem;
  line-height: 1.9;
}

/* 学校アイコンを大きく */
.sol2-deco-school {
  width: 110px;
  height: 110px;
  right: 16px;
  bottom: 16px;
  opacity: .5;
}

/* ===== SOLUTIONカード 細部修正 ===== */

/* グリッド: 青カードを狭く、右カードを広く */
.sol2-layout {
  grid-template-columns: 5fr 7fr;
}

/* SOLUTIONラベルを黄色・大きく */
.sol2-blue-card .eyebrow {
  color: #FFD700;
  font-size: 1rem;
  letter-spacing: .18em;
  font-weight: 700;
}
.sol2-blue-card .eyebrow::before,
.sol2-blue-card .eyebrow::after {
  background: rgba(255,215,0,.7);
}

/* 豆電球を大きく */
.sol2-deco-bulb {
  width: 52px;
  height: 52px;
}

/* h2: アンダーラインは span のみ、h2自体のdecoration解除 */
.sol2-blue-card h2 {
  text-decoration: none;
  margin-bottom: 20px;
}
.sol2-blue-card h2::after { display: none; }

.sol2-underline {
  text-decoration: underline;
  text-decoration-color: rgba(255, 210, 30, 0.9);
  text-decoration-thickness: 5px;
  text-underline-offset: 5px;
}

/* h2下余白 */
.sol2-blue-card h2 {
  padding-bottom: 18px;
}

@media (max-width: 860px) {
  .sol2-layout { grid-template-columns: 1fr; }
}

/* ===== 選ばれる理由 微調整 ===== */

/* 1. 数字とタグの重なり解消 */
.rn-section .rn-num-deco {
  margin-bottom: 8px;
  line-height: 1;
}

/* タグと見出しの間隔も整理 */
.rn-section .rn-tag {
  margin-bottom: 12px;
}
.rn-section .rn-block-text h3 {
  margin-top: 4px;
  margin-bottom: 14px;
}

/* 2 & 3. 本文を読みやすく（色・サイズ・行間） */
.rn-section .rn-block-text p {
  color: #3a4e62;
  font-size: 15.5px;
  line-height: 1.95;
}

/* 4. 02（淡青背景）の本文をさらに濃く */
.rn-section .rn-block-ice .rn-block-text p {
  color: #2c3e50;
}

/* SP: 数字・タグ重なり対策 */
@media (max-width: 560px) {
  .rn-section .rn-num-deco {
    margin-bottom: 6px;
    font-size: 52px;
  }
}

/* ===== コース紹介 メインカード背景画像 ===== */
.cfc-body {
  background:
    linear-gradient(105deg,
      rgba(21, 86, 190, 0.97) 0%,
      rgba(26, 113, 210, 0.93) 45%,
      rgba(30, 136, 229, 0.78) 70%,
      rgba(41, 168, 238, 0.55) 100%
    ),
    url("images/course-main-bg.webp") center right / cover no-repeat;
  position: relative;
}

/* ===== コース紹介 追加修正 ===== */

/* 1. 実績数値エリアを目立たせる */
.cfc-stats {
  background: #f5f9ff;
  gap: 0;
}

.cfc-stat {
  padding: 22px 16px;
  position: relative;
  background: transparent;
  transition: background 0.2s;
}
.cfc-stat:hover {
  background: rgba(30,136,229,.04);
}

/* 数字を大きく・太く */
.cfc-stat-num {
  font-size: clamp(40px, 3.4vw, 52px);
  font-weight: 800;
  letter-spacing: -.02em;
  line-height: 1;
}

/* ラベルをやや大きく・濃く */
.cfc-stat-label {
  font-size: 11.5px;
  color: #4b657f;
  letter-spacing: .04em;
  order: -1; /* 数字より上に */
  margin-bottom: 4px;
}

/* 数字下の短いアクセントライン */
.cfc-stat-num::after {
  content: "";
  display: block;
  width: 28px;
  height: 3px;
  background: var(--blue);
  border-radius: 2px;
  margin: 8px auto 0;
  opacity: .35;
}

/* 区切り線を少し濃く */
.cfc-stat {
  border-bottom: 1px solid rgba(30,136,229,.1);
}

/* 2. サブカードのリンク下揃え・余白整理 */
.crs-sub-card {
  padding: 28px 28px 24px;
}

/* チェックリストとリンクの間に余白 */
.crs-sub-card .course-points {
  margin-bottom: 20px;
}

/* リンクをカード最下部に揃える */
.crs-sub-card .course-link {
  margin-top: auto;
  margin-bottom: 0;
  padding-bottom: 4px;
}

/* SP調整 */
@media (max-width: 560px) {
  .cfc-stat-num {
    font-size: 38px;
  }
  .crs-sub-card {
    padding: 22px 22px 20px;
  }
}

/* ===== コース紹介 再調整 ===== */

/* 1. 実績エリア：アクセントライン削除、カード風に */
.cfc-stat-num::after {
  display: none;
}

.cfc-stats {
  background: #fff;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  justify-content: center;
}

.cfc-stat {
  background: #f0f7ff;
  border: 1px solid rgba(30,136,229,.12);
  border-radius: 12px;
  padding: 16px 14px;
  margin: 0;
  flex: unset;
  gap: 6px;
}
.cfc-stat:last-child {
  border-bottom: 1px solid rgba(30,136,229,.12);
}

.cfc-stat-label {
  order: 0;
  font-size: 10.5px;
  color: #607d8b;
  letter-spacing: .05em;
  margin-bottom: 2px;
}

.cfc-stat-num {
  order: 1;
  font-size: clamp(42px, 3.6vw, 56px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -.03em;
}

/* 2. course-link をアウトラインボタンに */
.course-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  margin-top: auto;
  padding: 9px 20px;
  border: 1.5px solid rgba(30,136,229,.45);
  border-radius: 999px;
  color: var(--blue);
  font-size: 13px;
  font-weight: 700;
  background: transparent;
  transition: background .18s ease, color .18s ease, border-color .18s ease, transform .18s ease, box-shadow .18s ease;
  text-decoration: none;
}
.course-link:hover {
  background: var(--blue);
  color: #fff;
  border-color: var(--blue);
  transform: translateY(1px);
  box-shadow: inset 0 2px 6px rgba(22, 50, 79, .18);
  gap: 8px;
}

/* 3. サブカード flex-column でボタン下揃え・余白整理 */
.crs-sub-card {
  display: flex;
  flex-direction: column;
  padding: 26px 26px 22px;
}
.crs-sub-card .course-points {
  margin-top: auto;
  padding-top: 14px;
  margin-bottom: 16px;
}
.crs-sub-card .course-link {
  margin-top: 0;
  align-self: flex-start;
}

/* SP */
@media (max-width: 560px) {
  .cfc-stat-num { font-size: 40px; }
  .cfc-stat { padding: 14px 12px; }
  .crs-sub-card { padding: 22px 20px 20px; }
}

/* ===== 実績エリア 再調整（カード背景削除・シンプル化） ===== */
.cfc-stats {
  background: #fff;
  padding: 0;
  gap: 0;
  justify-content: center;
}
.cfc-stat {
  background: none;
  border: none;
  border-radius: 0;
  border-bottom: 1px solid rgba(22,50,79,.07);
  padding: 24px 20px;
  flex: 1;
  gap: 5px;
}
.cfc-stat:last-child {
  border-bottom: none;
}
.cfc-stat-label {
  font-size: 11px;
  color: #7a95aa;
  letter-spacing: .05em;
  font-weight: 600;
  order: 0;
}
.cfc-stat-num {
  font-size: clamp(48px, 4vw, 62px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--blue);
  order: 1;
}
.cfc-stat-num::after { display: none; }

@media (max-width: 560px) {
  .cfc-stat-num { font-size: 44px; }
  .cfc-stat { padding: 20px 16px; }
}

/* ===== コース紹介 実績エリア＆サブカード 最終調整 ===== */

/* --- 右側実績エリア --- */
.cfc-stats {
  background: #fff;
  padding: 0;
  gap: 0;
  justify-content: center;
}
.cfc-stat {
  background: none;
  border: none;
  border-radius: 0;
  border-bottom: 1px solid rgba(22,50,79,.08);
  padding: 28px 24px;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  text-align: center;
}
.cfc-stat:last-child { border-bottom: none; }
.cfc-stat-label {
  order: 0;
  font-size: 14px;
  font-weight: 600;
  color: #4b657f;
  letter-spacing: .03em;
  line-height: 1.4;
}
.cfc-stat-num {
  order: 1;
  font-size: clamp(52px, 4.5vw, 64px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--blue);
}
.cfc-stat-num::after { display: none; }
.cfc-stat-unit {
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 700;
  vertical-align: baseline;
}

/* --- サブ3カード 文字サイズ調整 --- */
.crs-sub-card {
  padding: 28px 26px 24px;
}
.crs-sub-card .course-label {
  font-size: 12.5px;
}
.crs-sub-card h3 {
  font-size: clamp(19px, 1.6vw, 22px);
  font-weight: 700;
  margin: 12px 0 10px;
  line-height: 1.38;
}
.crs-sub-card > p {
  font-size: 15px;
  line-height: 1.82;
  color: #3a4e62;
}
.crs-sub-card .course-points {
  font-size: 14px;
  line-height: 1.75;
}
.crs-sub-card .course-link {
  font-size: 14px;
  padding: 10px 22px;
}

/* SP */
@media (max-width: 560px) {
  .cfc-stat-num { font-size: 48px; }
  .cfc-stat-unit { font-size: 20px; }
  .cfc-stat-label { font-size: 13px; }
  .cfc-stat { padding: 22px 16px; }
  .crs-sub-card h3 { font-size: 19px; }
  .crs-sub-card > p { font-size: 14.5px; }
}

/* ===== コース紹介 全面組み直し ===== */

/* メインカードのグリッド列比 */
.cfc-card {
  grid-template-columns: 1fr 1fr;
}

/* 左：青背景カード（背景画像オーバーレイ）*/
.cfc-body {
  background:
    linear-gradient(105deg,
      rgba(18, 80, 180, 0.97) 0%,
      rgba(24, 110, 210, 0.93) 45%,
      rgba(30, 136, 229, 0.78) 70%,
      rgba(41, 168, 238, 0.50) 100%
    ),
    url("images/course-main-bg.webp") center right / cover no-repeat;
  padding: clamp(32px, 3.5vw, 52px);
}

/* 右：白いフィーチャーエリア */
.cfc-features {
  background: #fff;
  padding: 28px 28px 24px;
  display: flex;
  flex-direction: column;
  border-left: 1px solid rgba(30,136,229,.1);
}
.cfc-features-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--heading);
  padding-bottom: 12px;
  margin-bottom: 4px;
  border-bottom: 2px solid var(--blue);
  letter-spacing: .02em;
}
.cfc-feature-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.cfc-feature-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(22,50,79,.07);
}
.cfc-feature-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.cfc-feature-item img {
  width: 44px;
  height: 44px;
  object-fit: contain;
  flex-shrink: 0;
  margin-top: 2px;
}
.cfc-feature-item h4 {
  font-size: 14px;
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 4px;
  line-height: 1.4;
}
.cfc-feature-item p {
  font-size: 13px;
  color: #4b657f;
  line-height: 1.7;
  margin: 0;
}

/* サブ3カード 再整理 */
.crs-sub-card {
  display: flex;
  flex-direction: column;
  padding: 30px 28px 26px;
  gap: 0;
}
.crs-sub-card .course-label {
  font-size: 12.5px;
  align-self: flex-start;
}
.crs-sub-card h3 {
  font-size: clamp(18px, 1.5vw, 21px);
  font-weight: 700;
  margin: 14px 0 10px;
  line-height: 1.38;
  color: var(--heading);
}
.crs-sub-card > p {
  font-size: 14.5px;
  line-height: 1.82;
  color: #3a4e62;
  margin: 0;
}
.crs-sub-card .course-points {
  font-size: 14px;
  line-height: 1.75;
  margin-top: 14px;
  padding-top: 0;
  margin-bottom: 20px;
}
.crs-sub-card .course-link {
  margin-top: auto;
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 11px 20px;
  border: 1.5px solid rgba(30,136,229,.4);
  border-radius: 999px;
  background: transparent;
  color: var(--blue);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s, color .18s, border-color .18s, transform .18s, box-shadow .18s;
}
.crs-sub-card .course-link:hover {
  background: var(--blue);
  color: #fff;
  border-color: var(--blue);
  transform: translateY(1px);
  box-shadow: inset 0 2px 6px rgba(22, 50, 79, .18);
  gap: 10px;
}

/* レスポンシブ */
@media (max-width: 860px) {
  .cfc-card {
    grid-template-columns: 1fr;
  }
  .cfc-features {
    border-left: none;
    border-top: 1px solid rgba(30,136,229,.1);
    padding: 24px 24px 20px;
  }
  .cfc-features-title { font-size: 14.5px; }
  .cfc-feature-item img { width: 38px; height: 38px; }
}
@media (max-width: 560px) {
  .cfc-body { padding: 28px 22px; }
  .cfc-feature-item { gap: 12px; padding: 12px 0; }
  .cfc-feature-item img { width: 34px; height: 34px; }
  .cfc-feature-item h4 { font-size: 13.5px; }
  .cfc-feature-item p  { font-size: 12.5px; }
  .crs-sub-card { padding: 24px 22px 22px; }
  .crs-sub-card h3 { font-size: 18px; }
}

/* ===== コース紹介 レイアウト比率・文字サイズ・余白 調整 ===== */

/* 1. 左60% 右40% */
.cfc-card {
  grid-template-columns: 60fr 40fr;
}

/* 2. 左カード文字サイズ */
.cfc-body h3 {
  font-size: clamp(24px, 2.4vw, 32px);
  margin: 16px 0 18px;
}
.cfc-body > p {
  font-size: clamp(15px, 1.15vw, 16.5px);
  line-height: 1.85;
  color: rgba(255,255,255,.92);
}
.cfc-body .cfc-points {
  font-size: 15px;
  gap: 8px;
}
.cfc-body .cfc-points li {
  font-size: 15px;
}

/* 3 & 4. 右側アイコン大きく・上揃え */
.cfc-feature-item {
  align-items: flex-start;
  gap: 16px;
  padding: 16px 0;
}
.cfc-feature-item img {
  width: 52px;
  height: 52px;
  flex-shrink: 0;
  margin-top: 0;
}

/* 2. 右側見出し・説明文 */
.cfc-feature-item h4 {
  font-size: 15px;
  font-weight: 700;
  margin-bottom: 5px;
}
.cfc-feature-item p {
  font-size: 13.5px;
  line-height: 1.75;
  color: #445e74;
}

/* 6. 右側余白・タイトル調整 */
.cfc-features {
  padding: 24px 24px 20px;
}
.cfc-features-title {
  font-size: 14.5px;
  margin-bottom: 6px;
  padding-bottom: 10px;
}
.cfc-feature-list {
  justify-content: space-between;
}
.cfc-feature-item:last-child {
  padding-bottom: 0;
}

/* 7. サブカード文字・余白 */
.crs-sub-card {
  padding: 30px 28px 26px;
}
.crs-sub-card h3 {
  font-size: clamp(18px, 1.5vw, 21px);
  font-weight: 700;
  margin: 14px 0 10px;
}
.crs-sub-card > p {
  font-size: 15px;
  line-height: 1.82;
  color: #3a4e62;
}
.crs-sub-card .course-points {
  font-size: 14.5px;
  margin-top: 14px;
  margin-bottom: 20px;
}
.crs-sub-card .course-link {
  font-size: 14.5px;
  padding: 11px 24px;
}

/* レスポンシブ */
@media (max-width: 860px) {
  .cfc-card { grid-template-columns: 1fr; }
  .cfc-feature-item img { width: 44px; height: 44px; }
}
@media (max-width: 560px) {
  .cfc-feature-item img { width: 38px; height: 38px; }
  .cfc-feature-item h4 { font-size: 14px; }
  .cfc-feature-item p  { font-size: 13px; }
  .crs-sub-card { padding: 24px 20px 22px; }
}

/* ===== 左青カード本文 max-width 拡張 ===== */
.cfc-body p {
  max-width: 640px;
}

/* ===== 右側フィーチャーエリア 追加調整 ===== */

/* 1. 見出しを大きく・太く */
.cfc-features-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--heading);
  padding-bottom: 12px;
  margin-bottom: 8px;
  letter-spacing: .01em;
}

/* 2 & 3. 各項目：縦中央揃え・アイコンサイズ統一 */
.cfc-feature-item {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(22,50,79,.07);
}
.cfc-feature-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.cfc-feature-item img {
  width: 56px;
  height: 56px;
  object-fit: contain;
  flex-shrink: 0;
}
.cfc-feature-item div {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.cfc-feature-item h4 {
  font-size: 15px;
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 4px;
  line-height: 1.4;
}
.cfc-feature-item p {
  font-size: 13.5px;
  color: #445e74;
  line-height: 1.72;
  margin: 0;
}

/* 4. 余白バランス */
.cfc-features {
  padding: 24px 22px 20px;
  display: flex;
  flex-direction: column;
}
.cfc-feature-list {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
  margin-top: 0;
}

/* レスポンシブ */
@media (max-width: 860px) {
  .cfc-feature-item img { width: 46px; height: 46px; }
  .cfc-features-title { font-size: 16.5px; }
}
@media (max-width: 560px) {
  .cfc-feature-item img { width: 40px; height: 40px; }
  .cfc-feature-item h4 { font-size: 14px; }
  .cfc-feature-item p  { font-size: 13px; }
}

/* ===== 成績アップ事例・生徒の声 (rv-*) ===== */

.rv-section {
  background: linear-gradient(180deg, #f0f8ff 0%, #fff 60%);
  padding: clamp(64px, 6vw, 100px) 0;
}

/* 2カラムグリッド */
.rv-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-top: 48px;
  align-items: start;
}

/* カラムラベル（タブ風） */
.rv-col-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--blue);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  padding: 8px 20px;
  border-radius: 999px;
  margin-bottom: 14px;
  letter-spacing: .03em;
}
.rv-col-icon { font-size: 15px; }

/* ---- 左：成績カード ---- */
.rv-result-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.rv-result-card {
  display: grid;
  grid-template-columns: 72px 90px 1fr auto;
  align-items: center;
  gap: 12px;
  background: #fff;
  border: 1px solid rgba(30,136,229,.12);
  border-radius: 16px;
  padding: 14px 18px;
  box-shadow: 0 4px 16px rgba(30,136,229,.07);
}

.rv-portrait {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: #e8f4fd;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  overflow: hidden;
  flex-shrink: 0;
}
.rv-portrait img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: bottom;
}

.rv-meta { display: flex; flex-direction: column; gap: 5px; }
.rv-name {
  font-size: 16px;
  font-weight: 700;
  color: var(--heading);
  margin: 0;
  line-height: 1.2;
}
.rv-subject {
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  color: var(--blue);
  background: #e8f4fd;
  border-radius: 999px;
  padding: 2px 10px;
}

.rv-score {
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: center;
}
.rv-score-before,
.rv-score-after {
  font-size: 11px;
  color: #607d8b;
  line-height: 1.4;
  text-align: center;
}
.rv-score-before strong { font-size: 17px; color: #607d8b; font-weight: 700; display: block; }
.rv-score-after  strong { font-size: 17px; color: var(--blue); font-weight: 700; display: block; }
.rv-arrow { font-size: 18px; color: #90a4ae; flex-shrink: 0; }

.rv-up {
  display: flex;
  align-items: baseline;
  gap: 2px;
  text-align: center;
  white-space: nowrap;
}
.rv-up-num {
  font-size: clamp(28px, 3vw, 36px);
  font-weight: 800;
  color: #f59e0b;
  line-height: 1;
}
.rv-up-unit {
  font-size: 13px;
  font-weight: 700;
  color: #f59e0b;
  line-height: 1.3;
}

.rv-note {
  font-size: 12px;
  color: #90a4ae;
  text-align: right;
  margin-top: 8px;
}

/* ---- 右：声カード ---- */
.rv-voice-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.rv-voice-card {
  background: #fff;
  border: 1px solid rgba(30,136,229,.12);
  border-radius: 16px;
  padding: 20px;
  box-shadow: 0 4px 16px rgba(30,136,229,.07);
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 16px;
  align-items: start;
}

.rv-voice-portrait {
  width: 68px;
  height: 68px;
  border-radius: 50%;
  background: #e8f4fd;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  flex-shrink: 0;
}
.rv-voice-portrait img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: bottom;
}

.rv-voice-body { display: flex; flex-direction: column; gap: 6px; }
.rv-voice-quote {
  font-size: 15px;
  font-weight: 700;
  color: var(--heading);
  line-height: 1.5;
  margin: 0;
}
.rv-voice-text {
  font-size: 13.5px;
  color: #4b657f;
  line-height: 1.75;
  margin: 0;
}
.rv-voice-who {
  font-size: 13px;
  font-weight: 700;
  color: var(--blue);
  margin: 4px 0 0;
}

/* ---- 下部CTA ---- */
.rv-cta {
  margin-top: 48px;
  background: linear-gradient(135deg, #eaf7ff 0%, #dff0fd 100%);
  border: 1px solid rgba(30,136,229,.15);
  border-radius: 20px;
  padding: 28px 36px;
  display: grid;
  grid-template-columns: 100px 1fr auto;
  align-items: center;
  gap: 24px;
  box-shadow: 0 6px 24px rgba(30,136,229,.08);
}
.rv-cta-img {
  width: 90px;
  height: 90px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  flex-shrink: 0;
}
.rv-cta-img img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: bottom;
}
.rv-cta-text h3 {
  font-size: clamp(16px, 1.5vw, 20px);
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 6px;
  line-height: 1.45;
}
.rv-cta-text p {
  font-size: 14px;
  color: #4b657f;
  margin: 0;
  line-height: 1.7;
}
.rv-cta-btn {
  white-space: nowrap;
  flex-shrink: 0;
}

/* レスポンシブ */
@media (max-width: 860px) {
  .rv-grid { grid-template-columns: 1fr; gap: 32px; }
  .rv-cta { grid-template-columns: 80px 1fr; gap: 16px; }
  .rv-cta-btn { grid-column: 1 / -1; text-align: center; }
}
@media (max-width: 560px) {
  .rv-result-card {
    grid-template-columns: 60px 1fr;
    grid-template-rows: auto auto;
    gap: 8px 12px;
  }
  .rv-portrait { width: 52px; height: 52px; }
  .rv-meta { grid-column: 2; }
  .rv-score { grid-column: 1 / -1; justify-content: flex-start; }
  .rv-up { grid-column: 1 / -1; }
  .rv-voice-card { grid-template-columns: 56px 1fr; gap: 12px; }
  .rv-voice-portrait { width: 52px; height: 52px; }
  .rv-cta { grid-template-columns: 1fr; text-align: center; padding: 24px 20px; }
  .rv-cta-img { margin: 0 auto; }
  .rv-cta-btn { width: 100%; justify-content: center; }
}

/* ===== 成績アップ事例・生徒の声 追加調整 ===== */

/* 6. 背景：お悩みセクションと同トーン */
.rv-section {
  background:
    linear-gradient(180deg, rgba(234,247,255,.7) 0%, rgba(255,255,255,.9) 55%, #fff 100%),
    url("images/worry-solution-bg.webp") center top / 100% auto repeat-y;
  position: relative;
}
.rv-section::before {
  content: "";
  position: absolute;
  top: 8%; right: 3%;
  width: 240px; height: 240px;
  border-radius: 50%;
  background: rgba(100,181,246,.07);
  pointer-events: none;
}
.rv-section::after {
  content: "";
  position: absolute;
  bottom: 12%; left: 2%;
  width: 160px; height: 160px;
  border-radius: 50%;
  border: 1.5px solid rgba(30,136,229,.1);
  pointer-events: none;
}

/* 1. カラムラベル（アイコン削除済み・見た目微調整） */
.rv-col-label {
  font-size: 14.5px;
  padding: 8px 22px;
}

/* 2. フォントサイズ全体見直し */

/* 成績カード：氏名・科目・点数 */
.rv-result-card {
  padding: 16px 20px;
  gap: 14px;
  align-items: center;
}
.rv-name { font-size: 17px; }
.rv-subject { font-size: 13px; padding: 3px 12px; }
.rv-score-before strong,
.rv-score-after  strong { font-size: 19px; }
.rv-score-before,
.rv-score-after  { font-size: 12px; }
.rv-up-num { font-size: clamp(30px, 3.2vw, 40px); }
.rv-up-unit { font-size: 14px; }
.rv-note { font-size: 13px; }

/* 声カード：見出し・本文・名前 */
.rv-voice-quote { font-size: 16px; line-height: 1.55; }
.rv-voice-text  { font-size: 14.5px; line-height: 1.8; }
.rv-voice-who   { font-size: 14px; }

/* CTA */
.rv-cta-text h3 { font-size: clamp(17px, 1.6vw, 21px); }
.rv-cta-text p  { font-size: 15px; }

/* 3. イラストを一回り大きく */
.rv-portrait {
  width: 76px;
  height: 76px;
}
.rv-result-card {
  grid-template-columns: 80px 96px 1fr auto;
}
.rv-voice-portrait {
  width: 80px;
  height: 80px;
}
.rv-voice-card {
  grid-template-columns: 84px 1fr;
  padding: 22px;
  gap: 18px;
}
.rv-cta-img {
  width: 100px;
  height: 100px;
}
.rv-cta {
  grid-template-columns: 110px 1fr auto;
  padding: 28px 40px;
  gap: 28px;
}

/* 4. 縦中央揃え */
.rv-result-card { align-items: center; }
.rv-voice-card  { align-items: center; }
.rv-cta         { align-items: center; }

/* 5. カード余白 */
.rv-result-list { gap: 14px; }
.rv-voice-list  { gap: 18px; }
.rv-voice-body  { gap: 8px; }

/* SP調整 */
@media (max-width: 860px) {
  .rv-portrait        { width: 64px; height: 64px; }
  .rv-voice-portrait  { width: 68px; height: 68px; }
  .rv-cta { grid-template-columns: 90px 1fr; }
}
@media (max-width: 560px) {
  .rv-result-card {
    grid-template-columns: 64px 1fr;
    grid-template-rows: auto auto auto;
    gap: 8px 12px;
  }
  .rv-portrait { width: 56px; height: 56px; grid-row: 1 / 2; }
  .rv-meta     { grid-column: 2; grid-row: 1; }
  .rv-score    { grid-column: 1 / -1; }
  .rv-up       { grid-column: 1 / -1; }
  .rv-voice-card { grid-template-columns: 60px 1fr; gap: 12px; }
  .rv-voice-portrait { width: 56px; height: 56px; }
  .rv-cta { grid-template-columns: 1fr; text-align: center; padding: 24px 20px; }
  .rv-cta-img  { margin: 0 auto; }
  .rv-cta-btn  { width: 100%; justify-content: center; }
}

/* ===== 成績アップ事例・生徒の声 大幅追加修正 ===== */

/* 2. 背景：お悩みセクションと同じ表現を流用 */
.rv-section {
  background:
    linear-gradient(180deg, rgba(247,251,255,.3) 0%, rgba(255,255,255,.18) 12%, rgba(238,250,255,.16) 45%, rgba(246,252,255,.26) 100%),
    url("images/worry-solution-bg.webp") center top / 100% auto repeat-y,
    #edf9ff;
  position: relative;
  overflow: hidden;
}
/* 左上ドット */
.rv-section::before {
  content: "";
  position: absolute;
  top: 4%; left: 0;
  width: 220px; height: 220px;
  background-image: radial-gradient(circle 2px at 2px 2px, rgba(30,136,229,.22) 100%, transparent 0);
  background-size: 14px 14px;
  -webkit-mask-image: radial-gradient(ellipse at center, black 40%, transparent 75%);
  mask-image: radial-gradient(ellipse at center, black 40%, transparent 75%);
  pointer-events: none; z-index: 0;
}
/* 右上：薄い斜めバー＋輪郭円 */
.rv-section::after {
  content: "";
  position: absolute;
  top: 3%; right: 2%;
  width: 180px; height: 180px;
  border-radius: 50%;
  border: 1.5px solid rgba(30,136,229,.18);
  background: rgba(100,181,246,.06);
  pointer-events: none; z-index: 0;
}
/* コンテナを前面に */
.rv-section .container { position: relative; z-index: 1; }

/* 1. イラストを明確に大きく */

/* 成績カード */
.rv-result-card {
  grid-template-columns: 96px 100px 1fr auto;
  gap: 16px;
  padding: 16px 22px;
  align-items: center;
}
.rv-portrait {
  width: 88px;
  height: 88px;
}
.rv-portrait img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: bottom;
}

/* 氏名・科目・点数 */
.rv-name    { font-size: 18px; }
.rv-subject { font-size: 13.5px; padding: 4px 12px; }
.rv-score   { gap: 10px; }
.rv-score-before strong,
.rv-score-after  strong { font-size: 20px; }
.rv-score-before,
.rv-score-after  { font-size: 12px; }
.rv-up-num  { font-size: clamp(32px, 3.4vw, 42px); }
.rv-up-unit { font-size: 15px; }

/* 声カード */
.rv-voice-card {
  grid-template-columns: 96px 1fr;
  gap: 20px;
  padding: 24px;
  align-items: center;
}
.rv-voice-portrait {
  width: 90px;
  height: 90px;
}
.rv-voice-quote { font-size: 16.5px; line-height: 1.55; }
.rv-voice-text  { font-size: 14.5px; line-height: 1.8; }
.rv-voice-who   { font-size: 14px; }

/* CTA */
.rv-cta {
  grid-template-columns: 130px 1fr auto;
  gap: 28px;
  padding: 28px 40px;
  align-items: center;
}
.rv-cta-img {
  width: 120px;
  height: 120px;
}
.rv-cta-text h3 { font-size: clamp(17px, 1.6vw, 21px); }
.rv-cta-text p  { font-size: 15px; }

/* SP */
@media (max-width: 860px) {
  .rv-grid { grid-template-columns: 1fr; }
  .rv-result-card { grid-template-columns: 82px 90px 1fr auto; }
  .rv-portrait { width: 76px; height: 76px; }
  .rv-voice-portrait { width: 78px; height: 78px; }
  .rv-voice-card { grid-template-columns: 82px 1fr; }
  .rv-cta { grid-template-columns: 100px 1fr; }
  .rv-cta-btn { grid-column: 1 / -1; justify-content: center; }
}
@media (max-width: 560px) {
  .rv-result-card {
    grid-template-columns: 70px 1fr;
    grid-template-rows: auto auto auto;
    gap: 8px 12px;
    padding: 14px 16px;
  }
  .rv-portrait { width: 62px; height: 62px; grid-row: 1; }
  .rv-meta     { grid-column: 2; grid-row: 1; }
  .rv-score    { grid-column: 1 / -1; }
  .rv-up       { grid-column: 1 / -1; }
  .rv-voice-card { grid-template-columns: 68px 1fr; gap: 14px; padding: 18px; }
  .rv-voice-portrait { width: 62px; height: 62px; }
  .rv-cta { grid-template-columns: 1fr; text-align: center; padding: 24px 20px; }
  .rv-cta-img  { margin: 0 auto; width: 90px; height: 90px; }
  .rv-cta-btn  { width: 100%; justify-content: center; }
}

/* ===== rv イラスト さらに拡大 ===== */
.rv-portrait        { width: 110px; height: 110px; }
.rv-voice-portrait  { width: 120px; height: 120px; }
.rv-cta-img         { width: 150px; height: 150px; }

.rv-result-card { grid-template-columns: 118px 100px 1fr auto; align-items: center; }
.rv-voice-card  { grid-template-columns: 128px 1fr; align-items: center; }
.rv-cta         { grid-template-columns: 160px 1fr auto; align-items: center; }

@media (max-width: 860px) {
  .rv-portrait       { width: 90px;  height: 90px; }
  .rv-voice-portrait { width: 100px; height: 100px; }
  .rv-cta-img        { width: 120px; height: 120px; }
  .rv-result-card { grid-template-columns: 98px 96px 1fr auto; }
  .rv-voice-card  { grid-template-columns: 108px 1fr; }
  .rv-cta         { grid-template-columns: 128px 1fr; }
}
@media (max-width: 560px) {
  .rv-portrait       { width: 72px; height: 72px; }
  .rv-voice-portrait { width: 76px; height: 76px; }
  .rv-cta-img        { width: 90px; height: 90px; }
  .rv-result-card { grid-template-columns: 78px 1fr; }
  .rv-voice-card  { grid-template-columns: 84px 1fr; }
}

/* =============================================
   料金プラン リデザイン: .prc-*
   ============================================= */

.prc-section {
  position: relative;
  overflow: hidden;
  padding: clamp(64px, 7vw, 96px) 0;
  background:
    radial-gradient(circle at 8% 20%,  rgba(30,136,229,.07) 0%, transparent 32%),
    radial-gradient(circle at 94% 78%, rgba(79,195,247,.08) 0%, transparent 30%),
    #edf6ff;
}

/* 背景装飾 */
.prc-bg-dot, .prc-bg-dia, .prc-bg-star {
  position: absolute;
  pointer-events: none;
  user-select: none;
}
.prc-bg-dot--tl {
  top: 18px; left: 18px;
  width: 72px; height: 72px;
  background-image: radial-gradient(circle, rgba(30,136,229,.22) 1.6px, transparent 1.6px);
  background-size: 11px 11px;
}
.prc-bg-dot--br {
  bottom: 20px; right: 20px;
  width: 64px; height: 64px;
  background-image: radial-gradient(circle, rgba(30,136,229,.18) 1.6px, transparent 1.6px);
  background-size: 11px 11px;
}
.prc-bg-dia--a { top: 24px;    left: 102px;  color: rgba(30,136,229,.25); font-size: 10px; }
.prc-bg-dia--b { bottom: 28px; right: 102px; color: rgba(30,136,229,.22); font-size: 9px;  }
.prc-bg-star--a { top: 54px;    right: 48px;  color: rgba(30,136,229,.2);  font-size: 9px;  }
.prc-bg-star--b { bottom: 56px; left: 48px;   color: rgba(30,136,229,.18); font-size: 8px;  }

/* グリッド：padding-topでバッジ分の空間を確保 */
.prc-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  align-items: stretch;   /* 全カード同じ高さに揃える */
  margin-top: 48px;
  padding-top: 18px;      /* バッジがはみ出す分 */
}

/* カード共通 */
.prc-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;    /* 上部要素を中央揃え */
  text-align: center;
  background: #fff;
  border: 1.5px solid rgba(30,136,229,.12);
  border-radius: 24px;
  padding: 32px 28px 28px;
  box-shadow: 0 8px 28px rgba(22,50,79,.07);
  transition: transform .2s ease, box-shadow .2s ease;
  overflow: visible;      /* バッジをカード外に出すため */
}
.prc-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 40px rgba(30,136,229,.12);
}

/* おすすめカード：サイズは同じ・枠線と影だけ強調 */
.prc-card--featured {
  border: 2px solid #f5b51b;
  box-shadow: 0 12px 40px rgba(245,181,27,.18), 0 4px 16px rgba(22,50,79,.08);
}
.prc-card--featured:hover {
  transform: translateY(-3px);
  box-shadow: 0 20px 48px rgba(245,181,27,.22), 0 4px 16px rgba(22,50,79,.1);
}

/* リボン：非表示 */
.prc-ribbon { display: none; }

/* おすすめバッジ：カード上端に絶対配置（フロー外） */
.prc-recommend-badge {
  position: absolute;
  top: -14px;
  left: 50%;
  transform: translateX(-50%);
  white-space: nowrap;
  background: linear-gradient(135deg, #ffca28, #ff9800);
  color: #fff;
  font-size: 11.5px;
  font-weight: 800;
  padding: 5px 16px;
  border-radius: 999px;
  box-shadow: 0 3px 10px rgba(255,152,0,.32);
  letter-spacing: .03em;
}

/* 回数・時間ラベル */
.prc-session {
  display: inline-block;
  background: rgba(30,136,229,.08);
  color: var(--blue, #1e88e5);
  font-size: 12px;
  font-weight: 700;
  padding: 4px 14px;
  border-radius: 999px;
  margin-bottom: 10px;
}
.prc-session--featured {
  background: rgba(245,181,27,.12);
  color: #b07800;
}

/* プラン名 */
.prc-name {
  font-size: 19px;
  font-weight: 800;
  color: var(--blue-deep, #16324f);
  margin-bottom: 18px;
  line-height: 1.3;
}

/* 価格エリア：中央揃え */
.prc-price-wrap {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 2px;
  margin-bottom: 4px;
}
.prc-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--muted, #6b7f96);
  margin-right: 3px;
}
.prc-amount {
  font-size: 46px;
  font-weight: 800;
  color: var(--blue, #1e88e5);
  line-height: 1;
  letter-spacing: -.02em;
}
.prc-card--featured .prc-amount {
  color: var(--blue-deep, #16324f);
}
.prc-unit {
  font-size: 15px;
  font-weight: 700;
  color: var(--muted, #6b7f96);
  margin-left: 1px;
}

/* 税込注記 */
.prc-tax {
  font-size: 11.5px;
  color: var(--muted, #6b7f96);
  margin-bottom: 0;
  padding-bottom: 24px;   /* 価格ブロック下余白 */
}

/* 仕切り線：::after は使わない */
.prc-card::after { display: none; }

/* 箇条書き：仕切り線 + 左揃え */
.prc-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 24px;
  flex: 1;
  width: 100%;
  text-align: left;
  border-top: 1px solid rgba(30,136,229,.1);
  padding-top: 20px;
}
.prc-list li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--body, #3d5166);
}
.prc-list li::before {
  content: "✓";
  color: #26c6a0;
  font-weight: 800;
  font-size: 13px;
  flex-shrink: 0;
}

/* CTAボタン：幅いっぱい・下固定 */
.prc-btn {
  display: block;
  width: 100%;
  text-align: center;
  padding: 13px 20px;
  border-radius: 999px;
  border: 2px solid rgba(30,136,229,.3);
  background: #fff;
  color: var(--blue, #1e88e5);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s ease, border-color .18s ease, transform .18s ease, box-shadow .18s ease, filter .18s ease;
  flex-shrink: 0;
}
.prc-btn:hover {
  background: rgba(30,136,229,.06);
  border-color: var(--blue, #1e88e5);
  transform: translateY(1px);
  box-shadow: inset 0 2px 6px rgba(30,136,229,.12);
}
.prc-btn--featured {
  background: linear-gradient(135deg, #ffca28, #ff9800);
  border-color: transparent;
  color: #1a3a5c;
}
.prc-btn--featured:hover {
  background: linear-gradient(135deg, #ffd740, #ffa726);
  border-color: transparent;
  filter: brightness(.97);
  box-shadow: inset 0 2px 7px rgba(90, 54, 0, .18);
}

/* 注記テキスト */
.prc-note {
  text-align: center;
  margin-top: 24px;
  font-size: 12px;
  color: var(--muted, #6b7f96);
}

/* レスポンシブ */
@media (max-width: 900px) {
  .prc-grid {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 28px;
  }
  .prc-recommend-badge {
    top: -14px;
  }
}
@media (max-width: 600px) {
  .prc-amount { font-size: 40px; }
  .prc-card   { padding: 28px 22px 24px; }
}

/* 成績アップ事例: 狭い幅でもカードが縦に間延びしないよう整理 */
@media (max-width: 640px) {
  .rv-result-list {
    gap: 14px;
  }

  .rv-result-card {
    grid-template-columns: 72px minmax(0, 1fr) auto;
    grid-template-rows: auto auto;
    align-items: center;
    gap: 8px 14px;
    padding: 18px;
    border-radius: 18px;
  }

  .rv-portrait {
    grid-column: 1;
    grid-row: 1 / span 2;
    width: 66px;
    height: 66px;
  }

  .rv-meta {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
  }

  .rv-name {
    font-size: 17px;
  }

  .rv-subject {
    width: min(100%, 190px);
    padding-inline: 12px;
  }

  .rv-score {
    grid-column: 2;
    grid-row: 2;
    justify-content: flex-start;
    gap: 8px;
  }

  .rv-up {
    grid-column: 3;
    grid-row: 1 / span 2;
    align-self: center;
    justify-self: end;
  }

  .rv-up-num {
    font-size: clamp(30px, 8vw, 38px);
  }
}

@media (max-width: 430px) {
  .rv-result-card {
    grid-template-columns: 62px minmax(0, 1fr) auto;
    gap: 8px 10px;
    padding: 16px;
  }

  .rv-portrait {
    width: 56px;
    height: 56px;
  }

  .rv-score-before,
  .rv-score-after {
    font-size: 11px;
  }

  .rv-score-before strong,
  .rv-score-after strong {
    font-size: 17px;
  }

  .rv-up-num {
    font-size: 28px;
  }

  .rv-up-unit {
    font-size: 12px;
  }
}

/* ===== レスポンシブ微調整 2026-06 ===== */
.worry-top-title h2 span {
  display: inline;
  margin: 0;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  text-shadow: inherit;
}

@media (max-width: 640px) {
  .worry-top-title h2 span {
    display: block;
  }
}

@media (max-width: 960px) {
  .section-head,
  .section-head.align-left,
  .worry-top-title,
  .crs-section .section-head,
  .rv-section .section-head,
  .tc-section .section-head,
  .prc-section .section-head,
  .ac-section .section-head {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
  }

  .section-head.align-left .eyebrow {
    justify-content: center;
  }
}

@media (max-width: 860px) {
  .sol2-layout {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
  }

  .sol2-blue-card {
    min-height: 280px;
    padding: 36px 32px;
  }

  .sol2-blue-card h2 {
    max-width: 78%;
    font-size: clamp(1.55rem, 5vw, 2.25rem);
  }

  .sol2-blue-card > p {
    max-width: min(38em, 78%);
  }

  .sol2-deco-school {
    right: 24px;
    bottom: 24px;
    width: clamp(84px, 18vw, 128px);
    height: clamp(84px, 18vw, 128px);
    opacity: 0.38;
  }

  .sol2-cards {
    gap: 14px;
  }
}

@media (max-width: 560px) {
  .sol2-blue-card {
    min-height: auto;
    padding: 30px 24px 110px;
  }

  .sol2-blue-card h2,
  .sol2-blue-card > p {
    max-width: none;
  }

  .sol2-deco-school {
    right: 18px;
    bottom: 18px;
    width: 72px;
    height: 72px;
    opacity: 0.24;
  }
}

.rn-num-deco,
.rn-section .rn-num-deco {
  color: rgba(30, 136, 229, 0.2);
}

.cfc-feature-item img {
  width: 58px;
  height: 58px;
}

@media (max-width: 860px) {
  .cfc-feature-item img {
    width: 52px;
    height: 52px;
  }
}

.rv-section::after {
  border: 0;
  background: rgba(100, 181, 246, 0.1);
}

.rv-section::before {
  border-radius: 50%;
  background: rgba(100, 181, 246, 0.12);
  -webkit-mask-image: none;
  mask-image: none;
  opacity: 0.45;
}

@media (max-width: 640px) {
  .rv-subject {
    display: inline-flex;
    width: auto;
    max-width: 100%;
    justify-content: flex-start;
    padding: 4px 12px;
  }
}

@media (max-width: 600px) {
  .tbc-banner {
    position: relative;
    padding-bottom: 112px;
  }

  .tbc-illust {
    position: absolute;
    bottom: 0;
    display: block;
    width: 92px;
    z-index: 1;
    opacity: 0.9;
  }

  .tbc-illust--left {
    left: 8px;
  }

  .tbc-illust--right {
    right: 8px;
  }

  .tbc-illust img {
    max-height: 118px;
  }

  .tbc-body {
    position: relative;
    z-index: 2;
  }
}

@media (max-width: 700px) {
  .mcta-card {
    position: relative;
    padding-bottom: 126px;
  }

  .mcta-illust {
    position: absolute;
    bottom: 0;
    display: block;
    width: min(120px, 30vw);
    z-index: 1;
    opacity: 0.92;
  }

  .mcta-illust--left {
    left: 10px;
  }

  .mcta-illust--right {
    right: 10px;
  }

  .mcta-illust img {
    max-height: 150px;
  }

  .mcta-body {
    position: relative;
    z-index: 2;
  }

  .mcta-sub {
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 8px;
  }

  .mcta-sub-link {
    width: auto;
    flex: 1 1 0;
    min-width: 0;
    padding-inline: 12px;
    font-size: 13px;
  }
}

@media (max-width: 380px) {
  .mcta-sub {
    flex-direction: column;
  }

  .mcta-sub-link {
    width: 100%;
  }
}

@media (max-width: 960px) {
  .footer-grid {
    grid-template-columns: 1fr 1fr;
    align-items: start;
  }

  .footer-grid > div:first-child {
    grid-column: 1 / -1;
  }
}

@media (max-width: 520px) {
  .footer-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 24px 18px;
  }

  .footer-list {
    font-size: 13px;
  }

  .footer-trial-btn {
    width: 100%;
    justify-content: center;
    text-align: center;
  }
}

/* ===== 追加調整: タブレットの見え方 / 成績ラベル ===== */
@media (min-width: 861px) and (max-width: 1120px) {
  .sol2-layout {
    grid-template-columns: minmax(420px, 1fr) minmax(0, 1fr);
    gap: 28px;
  }

  .sol2-blue-card {
    min-height: 560px;
    padding: 44px 40px;
  }

  .sol2-blue-card h2 {
    font-size: clamp(2rem, 4.1vw, 3rem);
  }

  .sol2-blue-card > p {
    font-size: clamp(1rem, 1.65vw, 1.2rem);
    line-height: 1.9;
  }
}

@media (max-width: 960px) {
  .worry-top-title h2 {
    font-size: clamp(36px, 5.3vw, 48px);
    line-height: 1.3;
  }

  .worry-top-title span {
    font-size: clamp(18px, 2.4vw, 24px);
  }
}

@media (max-width: 560px) {
  .worry-top-title h2 {
    font-size: clamp(28px, 7vw, 34px);
  }

  .worry-top-title span {
    font-size: clamp(15px, 4vw, 18px);
  }
}

.rv-subject {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  align-self: flex-start;
  padding: 4px 14px;
  line-height: 1.25;
}

@media (max-width: 640px) {
  .rv-subject {
    width: fit-content;
    max-width: calc(100vw - 190px);
    padding: 4px 12px;
  }
}

/* ===== SOLUTION右カード はみ出し・高さ揃え修正 ===== */
.sol2-layout {
  align-items: stretch;
}

.sol2-blue-card {
  height: auto;
}

.sol2-cards {
  align-self: stretch;
  display: grid;
  grid-template-rows: repeat(4, minmax(0, 1fr));
}

.sol2-card,
.sol2-card > div {
  min-width: 0;
}

.sol2-card h3,
.sol2-card p,
.sol2-cards li:first-child p {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  line-break: strict;
}

@media (max-width: 860px) {
  .sol2-cards {
    display: flex;
  }
}

/* ===== SOLUTION見出し タブレット幅の拡大抑制 ===== */
@media (min-width: 861px) and (max-width: 1120px) {
  .sol2-blue-card h2 {
    font-size: clamp(1.625rem, 2.8vw, 2rem);
    line-height: 1.45;
    letter-spacing: 0;
    white-space: nowrap;
  }
}

/* ===== 下層背景トーン整理 ===== */
:root {
  --section-paper: #ffffff;
  --section-ice: #f7fbff;
  --section-ice-strong: #edf8ff;
  --section-line: rgba(30, 136, 229, 0.12);
  --section-deco-blue: rgba(30, 136, 229, 0.12);
  --section-deco-cyan: rgba(79, 195, 247, 0.16);
  --section-deco-teal: rgba(45, 212, 191, 0.1);
}

.worry-solution-flow,
.crs-section,
.rv-section,
.prc-section,
.mcta-wrap {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

.worry-solution-flow {
  background:
    linear-gradient(180deg, #f7fbff 0%, #eef9ff 44%, #ffffff 100%);
}

.worry-solution-flow::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.55;
  background-image:
    radial-gradient(circle 2px at 2px 2px, rgba(30, 136, 229, 0.16) 100%, transparent 0),
    radial-gradient(circle 8px at 20px 18px, rgba(45, 212, 191, 0.16) 99%, transparent 100%),
    radial-gradient(circle 5px at 78px 62px, rgba(79, 195, 247, 0.2) 99%, transparent 100%);
  background-size: 16px 16px, 120px 100px, 120px 100px;
  background-position: left 5% top 8%, right 8% top 18%, right 6% bottom 20%;
  background-repeat: repeat, no-repeat;
  -webkit-mask-image:
    radial-gradient(ellipse at 6% 15%, #000 0 14%, transparent 25%),
    radial-gradient(ellipse at 94% 22%, #000 0 12%, transparent 24%),
    radial-gradient(ellipse at 95% 72%, #000 0 10%, transparent 22%);
  mask-image:
    radial-gradient(ellipse at 6% 15%, #000 0 14%, transparent 25%),
    radial-gradient(ellipse at 94% 22%, #000 0 12%, transparent 24%),
    radial-gradient(ellipse at 95% 72%, #000 0 10%, transparent 22%);
  -webkit-mask-composite: source-over;
  mask-composite: add;
}

.worry-solution-flow > .section,
.worry-solution-flow > * {
  position: relative;
  z-index: 1;
}

.rn-section,
.tc-section,
.ac-section {
  background: var(--section-paper);
}

.rn-section {
  border-top: 1px solid rgba(30, 136, 229, 0.08);
}

.crs-section {
  background:
    linear-gradient(180deg, #ffffff 0%, var(--section-ice) 28%, var(--section-ice-strong) 100%);
}

.crs-section::before {
  content: "";
  position: absolute;
  right: max(18px, calc((100vw - 1180px) / 2));
  top: 72px;
  width: 132px;
  height: 96px;
  background:
    radial-gradient(circle 3px at 4px 4px, rgba(30, 136, 229, 0.14) 100%, transparent 0);
  background-size: 18px 18px;
  border-radius: 0;
  opacity: 0.8;
  pointer-events: none;
}

.crs-section::after {
  content: "";
  position: absolute;
  left: max(18px, calc((100vw - 1180px) / 2));
  bottom: 70px;
  width: 92px;
  height: 92px;
  border-radius: 50%;
  background: rgba(79, 195, 247, 0.12);
  box-shadow:
    50px -26px 0 -28px rgba(45, 212, 191, 0.24),
    86px 26px 0 -34px rgba(30, 136, 229, 0.2);
  pointer-events: none;
}

.crs-section > .container,
.rv-section > .container,
.prc-section > .container,
.mcta-wrap > .container {
  position: relative;
  z-index: 1;
}

.rv-section {
  background:
    linear-gradient(180deg, #f0f9ff 0%, #ffffff 74%);
}

.rv-section::before {
  top: 5%;
  left: max(16px, calc((100vw - 1180px) / 2));
  width: 120px;
  height: 96px;
  border-radius: 0;
  background-image: radial-gradient(circle 2.5px at 3px 3px, rgba(30, 136, 229, 0.16) 100%, transparent 0);
  background-size: 17px 17px;
  opacity: 0.55;
  -webkit-mask-image: none;
  mask-image: none;
}

.rv-section::after {
  top: auto;
  right: max(18px, calc((100vw - 1180px) / 2));
  bottom: 14%;
  width: 12px;
  height: 12px;
  border: 0;
  border-radius: 50%;
  background: rgba(45, 212, 191, 0.22);
  box-shadow:
    -34px -24px 0 4px rgba(79, 195, 247, 0.12),
    22px 28px 0 8px rgba(30, 136, 229, 0.09),
    -76px 22px 0 -2px rgba(45, 212, 191, 0.16);
  opacity: 1;
}

.tbc-wrap {
  background:
    linear-gradient(180deg, #ffffff 0%, #f6fbff 100%);
}

.tc-section {
  border-block: 1px solid rgba(30, 136, 229, 0.08);
}

.prc-section {
  background:
    linear-gradient(180deg, #ffffff 0%, #f3fbff 44%, #edf8ff 100%);
}

.prc-section::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.55;
  background-image: radial-gradient(circle 2px at 2px 2px, rgba(30, 136, 229, 0.12) 100%, transparent 0);
  background-size: 18px 18px;
  background-position: right 7% top 13%;
  -webkit-mask-image:
    radial-gradient(ellipse at 92% 16%, #000 0 10%, transparent 22%),
    radial-gradient(ellipse at 8% 78%, #000 0 9%, transparent 21%);
  mask-image:
    radial-gradient(ellipse at 92% 16%, #000 0 10%, transparent 22%),
    radial-gradient(ellipse at 8% 78%, #000 0 9%, transparent 21%);
}

.prc-bg-dot,
.prc-bg-dia,
.prc-bg-star {
  opacity: 0.22;
}

.ac-section {
  background: var(--section-paper);
}

.mcta-wrap {
  background:
    linear-gradient(180deg, #ffffff 0%, #f0f9ff 100%);
}

.footer {
  background:
    radial-gradient(circle at 12% 16%, rgba(255, 255, 255, 0.16), transparent 24%),
    radial-gradient(circle at 90% 70%, rgba(79, 195, 247, 0.16), transparent 28%),
    linear-gradient(135deg, #1769d8 0%, #1e88e5 58%, #37b6f5 100%);
}

/* ===== あしらい背景をお悩みセクションのトーンに統一 ===== */
.worry-solution-flow,
.crs-section,
.rv-section,
.prc-section,
.mcta-wrap {
  background:
    linear-gradient(180deg, rgba(247, 251, 255, 0.34) 0%, rgba(255, 255, 255, 0.18) 14%, rgba(238, 250, 255, 0.18) 48%, rgba(246, 252, 255, 0.32) 100%),
    url("images/worry-solution-bg.webp") center top / 100% auto repeat-y,
    #edf9ff;
}

.worry-solution-flow::before,
.crs-section::before,
.crs-section::after,
.rv-section::before,
.rv-section::after,
.prc-section::before,
.mcta-wrap::before,
.mcta-wrap::after {
  content: none;
  display: none;
}

.rn-section,
.tc-section,
.ac-section {
  background: #fff;
}

/* ===== 背景あしらいの配置バランス調整 ===== */
.crs-section {
  background:
    linear-gradient(180deg, #ffffff 0%, #f7fbff 38%, #eef9ff 100%);
}

.mcta-wrap {
  background:
    linear-gradient(180deg, #ffffff 0%, #f7fbff 100%);
}

/* ===== 教室案内〜最終CTAの間隔調整 ===== */
.ac-section {
  padding-bottom: clamp(44px, 4.2vw, 64px);
}

.mcta-wrap {
  padding-top: clamp(34px, 3.8vw, 52px);
}

@media (max-width: 860px) {
  .ac-section {
    padding-bottom: 52px;
  }

  .mcta-wrap {
    padding-top: 42px;
  }
}

/* ===== 最終CTA: 狭い幅での縦伸び・ボタン折返し調整 ===== */
.mcta-main-btn,
.mcta-sub-link {
  white-space: nowrap;
}

.mcta-main-btn {
  width: fit-content;
  max-width: 100%;
}

@media (max-width: 960px) {
  .mcta-card {
    grid-template-columns: minmax(110px, 150px) minmax(0, 1fr) minmax(110px, 150px);
    align-items: end;
    min-height: auto;
    padding: 0 clamp(18px, 3vw, 28px);
  }

  .mcta-body {
    padding: 30px 8px 30px;
  }

  .mcta-illust img {
    max-height: clamp(190px, 26vw, 250px);
  }

  .mcta-heading {
    font-size: clamp(18px, 2.5vw, 21px);
    line-height: 1.45;
    margin-bottom: 10px;
  }

  .mcta-desc {
    margin-bottom: 14px;
  }

  .mcta-trust {
    margin-bottom: 16px;
  }
}

@media (max-width: 700px) {
  .mcta-card {
    grid-template-columns: 1fr;
    padding: 30px 18px 94px;
    border-radius: 22px;
  }

  .mcta-body {
    padding: 0;
  }

  .mcta-illust {
    position: absolute;
    bottom: 0;
    display: block;
    width: min(98px, 25vw);
    z-index: 1;
    opacity: 0.9;
  }

  .mcta-illust--left {
    left: 10px;
  }

  .mcta-illust--right {
    right: 10px;
  }

  .mcta-illust img {
    max-height: 118px;
  }

  .mcta-heading {
    font-size: clamp(17px, 4.6vw, 21px);
  }

  .mcta-sp-break {
    display: block;
  }

  .mcta-desc {
    font-size: 13px;
    line-height: 1.72;
  }

  .mcta-trust {
    gap: 7px;
  }

  .mcta-trust li {
    padding: 6px 12px;
    font-size: 12px;
  }

  .mcta-main-btn {
    width: min(100%, 300px);
    min-height: 52px;
    justify-content: center;
    padding: 12px 22px;
    font-size: 15px;
    margin-bottom: 12px;
  }

  .mcta-sub {
    width: min(100%, 360px);
    margin: 0 auto;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 8px;
  }

  .mcta-sub-link {
    flex: 1 1 0;
    min-width: 0;
    justify-content: center;
    gap: 5px;
    padding: 9px 8px;
    font-size: 12.5px;
  }

  .mcta-sub-link .icon {
    width: 14px;
    height: 14px;
    flex: 0 0 auto;
  }
}

@media (max-width: 420px) {
  .mcta-card {
    padding: 28px 16px 88px;
  }

  .mcta-main-btn {
    width: min(100%, 260px);
    font-size: 14px;
  }

  .mcta-sub {
    width: min(100%, 320px);
  }

  .mcta-sub-link {
    font-size: 12px;
    padding-inline: 6px;
  }
}

@media (min-width: 421px) and (max-width: 700px) {
  .mcta-sp-break {
    display: none;
  }
}

@media (min-width: 421px) and (max-width: 520px) {
  .mcta-card {
    padding-bottom: 78px;
  }

  .mcta-heading {
    font-size: clamp(16px, 4vw, 19px);
    line-height: 1.42;
  }

  .mcta-illust {
    width: min(90px, 22vw);
  }

  .mcta-illust img {
    max-height: 108px;
  }
}

@media (max-width: 420px) {
  .mcta-sp-break {
    display: block;
  }
}

@media (max-width: 340px) {
  .mcta-sub {
    flex-direction: column;
  }

  .mcta-sub-link {
    width: 100%;
  }
}

/* ===== CTA: 中間幅での崩れ防止（最終上書き） ===== */
@media (max-width: 760px) {
  .tbc-banner {
    grid-template-columns: 1fr;
    min-height: auto;
    padding: 30px 20px 106px;
  }

  .tbc-body {
    width: min(100%, 520px);
    margin-inline: auto;
    padding: 0;
  }

  .tbc-badge-round {
    position: static;
    width: 58px;
    height: 58px;
    margin: 0 auto 6px;
    font-size: 10px;
  }

  .tbc-badge-round strong {
    font-size: 14px;
  }

  .tbc-heading {
    font-size: clamp(18px, 3.4vw, 22px);
    line-height: 1.42;
  }

  .tbc-actions {
    width: min(100%, 430px);
    margin-inline: auto;
  }

  .tbc-btn-primary,
  .tbc-btn-secondary {
    flex: 1 1 180px;
    justify-content: center;
    min-width: 0;
  }

  .tbc-illust {
    position: absolute;
    bottom: 0;
    display: block;
    width: clamp(88px, 19vw, 126px);
    z-index: 1;
    opacity: 0.92;
  }

  .tbc-illust--left {
    left: clamp(8px, 2.6vw, 22px);
  }

  .tbc-illust--right {
    right: clamp(8px, 2.6vw, 22px);
  }

  .tbc-illust img {
    max-height: clamp(108px, 22vw, 145px);
  }

  .mcta-card {
    grid-template-columns: 1fr;
    min-height: auto;
    padding: 28px 18px 82px;
    border-radius: 22px;
  }

  .mcta-body {
    width: min(100%, 520px);
    margin-inline: auto;
    padding: 0;
  }

  .mcta-heading {
    white-space: normal;
    text-wrap: balance;
    font-size: clamp(18px, 3.6vw, 22px);
    line-height: 1.42;
    margin-bottom: 10px;
  }

  .mcta-sp-break {
    display: none;
  }

  .mcta-desc {
    font-size: 13px;
    line-height: 1.72;
    margin-bottom: 14px;
  }

  .mcta-trust {
    gap: 7px;
    margin-bottom: 16px;
  }

  .mcta-trust li {
    padding: 6px 12px;
    font-size: 12px;
  }

  .mcta-main-btn {
    width: min(100%, 300px);
    min-height: 52px;
    justify-content: center;
    padding: 12px 22px;
    font-size: 15px;
    margin-bottom: 12px;
  }

  .mcta-sub {
    width: min(100%, 360px);
    margin-inline: auto;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 8px;
  }

  .mcta-sub-link {
    width: auto;
    flex: 1 1 0;
    min-width: 0;
    justify-content: center;
    gap: 5px;
    padding: 9px 8px;
    font-size: 12.5px;
  }

  .mcta-sub-link .icon {
    width: 14px;
    height: 14px;
  }

  .mcta-illust {
    position: absolute;
    bottom: 0;
    display: block;
    width: clamp(82px, 20vw, 118px);
    z-index: 1;
    opacity: 0.9;
  }

  .mcta-illust--left {
    left: clamp(8px, 2.4vw, 18px);
  }

  .mcta-illust--right {
    right: clamp(8px, 2.4vw, 18px);
  }

  .mcta-illust img {
    max-height: clamp(104px, 22vw, 140px);
  }
}

@media (max-width: 520px) {
  .tbc-banner {
    padding: 28px 18px 94px;
  }

  .tbc-heading {
    font-size: clamp(17px, 4.15vw, 20px);
  }

  .tbc-actions {
    width: min(100%, 340px);
  }

  .tbc-btn-primary,
  .tbc-btn-secondary {
    flex: 1 1 100%;
    width: 100%;
  }

  .mcta-card {
    padding: 28px 16px 82px;
  }

  .mcta-heading {
    font-size: clamp(17px, 4.15vw, 20px);
  }

  .mcta-main-btn {
    width: min(100%, 280px);
  }
}

@media (min-width: 431px) and (max-width: 520px) {
  .tbc-banner {
    padding-bottom: 84px;
  }

  .tbc-actions {
    width: min(100%, 390px);
    flex-wrap: nowrap;
    gap: 9px;
  }

  .tbc-btn-primary,
  .tbc-btn-secondary {
    flex: 1 1 0;
    width: auto;
    padding: 12px 12px;
    font-size: 13.5px;
  }

  .tbc-illust {
    width: clamp(78px, 17vw, 96px);
  }

  .tbc-illust img {
    max-height: 104px;
  }

  .mcta-card {
    padding-bottom: 70px;
  }

  .mcta-illust {
    width: min(82px, 18vw);
  }

  .mcta-illust img {
    max-height: 100px;
  }
}

@media (min-width: 761px) and (max-width: 860px) {
  .tbc-banner {
    grid-template-columns: 1fr;
    min-height: auto;
    padding: 32px 24px 112px;
  }

  .tbc-body {
    width: min(100%, 560px);
    margin-inline: auto;
    padding: 0;
  }

  .tbc-badge-round {
    position: static;
    width: 62px;
    height: 62px;
    margin: 0 auto 8px;
    font-size: 10.5px;
  }

  .tbc-badge-round strong {
    font-size: 15px;
  }

  .tbc-heading {
    font-size: clamp(20px, 2.7vw, 24px);
    line-height: 1.42;
  }

  .tbc-actions {
    width: min(100%, 460px);
    margin-inline: auto;
    flex-wrap: nowrap;
    gap: 12px;
  }

  .tbc-btn-primary,
  .tbc-btn-secondary {
    flex: 1 1 0;
    min-width: 0;
    justify-content: center;
    padding: 13px 16px;
    font-size: 14px;
  }

  .tbc-illust {
    position: absolute;
    bottom: 0;
    display: block;
    width: clamp(108px, 16vw, 138px);
    z-index: 1;
    opacity: 0.92;
  }

  .tbc-illust--left {
    left: clamp(16px, 3vw, 30px);
  }

  .tbc-illust--right {
    right: clamp(16px, 3vw, 30px);
  }

  .tbc-illust img {
    max-height: 150px;
  }

  .mcta-card {
    grid-template-columns: 1fr;
    min-height: auto;
    padding: 30px 24px 92px;
    border-radius: 24px;
  }

  .mcta-body {
    width: min(100%, 560px);
    margin-inline: auto;
    padding: 0;
  }

  .mcta-heading {
    white-space: normal;
    text-wrap: balance;
    font-size: clamp(19px, 2.7vw, 23px);
    line-height: 1.42;
    margin-bottom: 10px;
  }

  .mcta-sp-break {
    display: none;
  }

  .mcta-main-btn {
    width: min(100%, 320px);
    justify-content: center;
  }

  .mcta-sub {
    width: min(100%, 390px);
    margin-inline: auto;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 10px;
  }

  .mcta-sub-link {
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    justify-content: center;
  }

  .mcta-illust {
    position: absolute;
    bottom: 0;
    display: block;
    width: clamp(96px, 15vw, 128px);
    z-index: 1;
    opacity: 0.9;
  }

  .mcta-illust--left {
    left: clamp(14px, 2.8vw, 28px);
  }

  .mcta-illust--right {
    right: clamp(14px, 2.8vw, 28px);
  }

  .mcta-illust img {
    max-height: 145px;
  }
}

@media (min-width: 861px) and (max-width: 1120px) {
  .tbc-body {
    padding-top: 34px;
  }

  .tbc-badge-round {
    top: 18px;
    left: clamp(-92px, -8vw, -66px);
    width: 60px;
    height: 60px;
    font-size: 10px;
  }

  .tbc-badge-round strong {
    font-size: 15px;
  }

  .tbc-heading {
    max-width: min(100%, 620px);
    margin-inline: auto;
  }
}

@media (max-width: 380px) {
  .mcta-card {
    padding-bottom: 76px;
  }

  .mcta-sub {
    width: min(100%, 320px);
  }

  .mcta-sub-link {
    font-size: 12px;
    padding-inline: 6px;
  }
}

/* ===== CTAイラスト: 狭い幅でボタンに重ならないための最終ガード ===== */
.tbc-illust,
.mcta-illust {
  pointer-events: none;
}

@media (max-width: 860px) {
  .tbc-banner,
  .mcta-card {
    isolation: isolate;
  }

  .tbc-body,
  .mcta-body {
    position: relative;
    z-index: 2;
  }

  .tbc-illust,
  .mcta-illust {
    bottom: -8px;
    z-index: 1;
  }
}

@media (min-width: 761px) and (max-width: 860px) {
  .tbc-banner {
    padding-bottom: 132px;
  }

  .tbc-illust img {
    max-height: 128px;
  }

  .mcta-card {
    padding-bottom: 124px;
  }

  .mcta-illust img {
    max-height: 120px;
  }
}

@media (max-width: 760px) {
  .tbc-banner {
    padding-bottom: clamp(106px, 22vw, 128px);
  }

  .tbc-illust {
    width: clamp(78px, 18vw, 108px);
    opacity: 0.82;
  }

  .tbc-illust img {
    max-height: clamp(94px, 19vw, 116px);
  }

  .mcta-card {
    padding-bottom: clamp(100px, 21vw, 120px);
  }

  .mcta-illust {
    width: clamp(74px, 18vw, 102px);
    opacity: 0.82;
  }

  .mcta-illust img {
    max-height: clamp(88px, 18vw, 108px);
  }
}

@media (min-width: 421px) and (max-width: 520px) {
  .tbc-banner {
    padding-bottom: 104px;
  }

  .tbc-illust img {
    max-height: 92px;
  }

  .mcta-card {
    padding-bottom: 96px;
  }

  .mcta-illust img {
    max-height: 84px;
  }
}

@media (max-width: 420px) {
  .tbc-banner {
    padding-bottom: 108px;
  }

  .tbc-illust img {
    max-height: 96px;
  }

  .mcta-card {
    padding-bottom: 102px;
  }

  .mcta-illust img {
    max-height: 90px;
  }
}

@media (max-width: 380px) {
  .tbc-illust,
  .mcta-illust {
    display: none;
  }

  .tbc-banner,
  .mcta-card {
    padding-bottom: 28px;
  }
}
