.ryt200-lp {
  --paper: #fffdf9;
  --cream: #f7f3eb;
  --ink: #332a22;
  --green: #536a36;
  --green-dark: #294b24;
  --green-soft: #87936a;
  --terra: #bf5e3c;
  --gold: #b39b63;
  --line: #ded7c8;
  --shadow: 0 12px 30px rgb(61 48 34 / 10%);
}

.ryt200-lp,
.ryt200-lp *,
.ryt200-lp *::before,
.ryt200-lp *::after { box-sizing: border-box; }
.ryt200-lp {
  margin: 0 auto;
  color: var(--ink);
  font-family: "Noto Sans JP", sans-serif;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}
.ryt200-lp a { color: inherit; text-decoration: none; }
.ryt200-lp img { display: block; max-width: 100%; }
.ryt200-lp h1, .ryt200-lp h2, .ryt200-lp h3, .ryt200-lp p { margin-top: 0; }
.ryt200-lp h1, .ryt200-lp h2, .ryt200-lp h3 { font-family: "Shippori Mincho", "Noto Serif JP", serif; }
.ryt200-lp em { color: var(--terra); font-style: normal; }

.page {
  width: min(100%, 500px);
  margin: 0 auto;
  overflow: hidden;
  background: var(--paper);
  box-shadow: 0 0 50px rgb(40 35 28 / 12%);
  container-type: inline-size;
  container-name: lp;
}

.image-section {
  position: relative;
  isolation: isolate;
  background-color: var(--paper);
  background-repeat: no-repeat;
  background-position: center top;
  background-size: 100% auto;
}

.reveal { opacity: 0; transform: translateY(24px); transition: opacity .75s ease, transform .75s ease; }
.reveal.is-visible { opacity: 1; transform: none; }

.hero {
  position: relative;
  min-height: 0;
  padding: calc(68px + var(--site-header-height, 48px)) 42px 46px;
  background: url("images/hero_bg.png") center top / 100% 100% no-repeat, var(--paper);
}
.hero__person { position: absolute; z-index: 0; top: -72px; right: -13%; width: 92%; height: auto; pointer-events: none; }
.hero__copy { position: relative; z-index: 2; width: 65%; }
.hero__lead {
  margin: 0 0 30px;
  font: 500 clamp(20px, 4.2cqw, 34px)/1.75 "Shippori Mincho", serif;
  letter-spacing: .08em;
}
.hero__alliance { margin-bottom: 0; font: 700 clamp(18px, 4.2cqw, 33px)/1.4 "Noto Serif JP", serif; white-space: nowrap; }
.hero__title-row { display: flex; align-items: center; gap: 4px; }
.hero h1 { display: flex; align-items: flex-end; margin: -2px 0 20px; line-height: 1; white-space: nowrap; }
.hero h1 strong { color: var(--terra); font-size: clamp(54px, 12cqw, 90px); font-weight: 500; letter-spacing: -.04em; }
.hero h1 span { padding-bottom: 8px; font-size: clamp(26px, 6cqw, 48px); }
.hero__seal { width: clamp(72px, 14cqw, 110px); height: auto; filter: grayscale(1) brightness(.38); }
.hero__badges { display: grid; gap: 14px; max-width: 330px; margin: 22px 0; }
.hero__badges span { padding: 12px 20px; border: 2px solid var(--green-soft); border-radius: 10px; background: rgb(255 255 255 / 82%); font: 700 clamp(16px, 3.2cqw, 24px) "Noto Serif JP", serif; }
.hero__badges i { margin-right: 10px; color: var(--green); font-size: .95em; }
.course-pick { display: grid; gap: 10px; width: 100%; max-width: 410px; padding: 18px 26px 24px; border-radius: 9px; background: rgb(191 94 60 / 94%); color: #fff; box-shadow: var(--shadow); text-align: center; }
.course-pick p, .course-pick b { margin: 0; font: 600 clamp(19px, 3.7cqw, 28px) "Noto Serif JP", serif; }
.course-pick span { padding: 9px 16px; border-radius: 30px; background: white; color: var(--ink); font: 600 clamp(18px, 3.6cqw, 28px) "Noto Serif JP", serif; }
.course-pick span i { margin-right: 10px; color: var(--green); font-size: .82em; }
.hero__features { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 30px; padding: 22px 0; border-radius: 10px; background: rgb(255 255 255 / 92%); box-shadow: var(--shadow); text-align: center; }
.hero__features div { padding: 0 12px; line-height: 1em; }
.hero__features div + div { border-left: 1px solid var(--line);line-height: 1em; }
.hero__features i { display: grid; width: 58px; height: 58px; margin: 0 auto 9px; place-items: center; border: 1px solid var(--green-soft); border-radius: 50%; color: var(--green); font-style: normal; font-size: 28px; }
.hero__features b { font-family: "Noto Serif JP", serif; font-size: clamp(10px, 2.6cqw, 18px); line-height: 1.55; }
.price-box { position: relative; z-index: 2; margin-top: 38px; padding: 12px 25px 22px; border: 2px solid #dfd0b8; border-radius: 12px; background: rgb(255 253 249 / 94%); text-align: center; }
.price-box > p { display: inline-block; margin: -32px 0 10px; padding: 5px 30px; background: var(--terra); color: white; font: 500 clamp(17px, 3.6cqw, 27px) "Noto Serif JP", serif; clip-path: polygon(5% 0,95% 0,100% 50%,95% 100%,5% 100%,0 50%); }
.price-box > div { display: flex; align-items: center; justify-content: center; gap: 18px; }
.price-box span { display: grid; width: 68px; height: 68px; place-items: center; border-radius: 50%; background: var(--green-soft); color: white; font-family: "Noto Serif JP", serif; }
.price-box small { font: 600 16px/1.45 "Noto Serif JP", serif; }
.price-box strong { color: var(--terra); font: 500 clamp(46px, 10cqw, 76px)/1 "Noto Serif JP", serif; white-space: nowrap; }
.price-box > b { font: 500 clamp(17px, 4cqw, 28px) "Noto Serif JP", serif; }

.cta-band { display: flex; align-items: center; gap: 20px; min-height: 142px; padding: 24px 40px; background: linear-gradient(100deg, #65743e, #7d8952); color: white; }
.ryt200-lp .cta-band,
.ryt200-lp .cta-band:link,
.ryt200-lp .cta-band:visited,
.ryt200-lp .cta-band:hover,
.ryt200-lp .cta-band:active { color: #fff; }
.cta-band__icon { display: grid; flex: 0 0 70px; width: 70px; height: 70px; place-items: center; border: 1px solid white; border-radius: 50%; font-size: 32px; }
.cta-band__icon i { color: inherit; font-size: 1em; line-height: 1; }
.cta-band > span:nth-child(2) { display: grid; flex: 1; }
.cta-band b { font: 600 clamp(16px, 3cqw, 30px) "Noto Serif JP", serif; border-bottom: 1px solid rgb(255 255 255 / 50%); }
.cta-band small { font-size: clamp(14px, 3cqw, 21px); }
.cta-band > i { display: grid; flex: 0 0 58px; width: 58px; height: 58px; padding: 0; place-items: center; border-radius: 50%; background: white; color: var(--green); font-size: 28px; line-height: 1; }
.cta-band > i::before { display: block; margin: 0; line-height: 1; transform: translateX(1px); }

.about { aspect-ratio: 1024 / 977; min-height: 0; padding: clamp(42px, 8cqw, 78px) clamp(22px, 5.2cqw, 40px); overflow: hidden; background-image: url("images/about.png"); background-size: cover; }
.about::before { content: ""; position: absolute; z-index: 0; inset: 0; background: linear-gradient(90deg, rgb(255 253 249 / 96%) 0%, rgb(255 253 249 / 91%) 44%, rgb(255 253 249 / 55%) 67%, transparent 88%); pointer-events: none; }
.about__copy { position: relative; z-index: 1; width: 68%; text-shadow: 0 1px 0 rgb(255 255 255 / 80%); }
.about h2 { font-size: 20px; font-weight: 500; line-height: 1.65; letter-spacing: .02em; }
.about p { font: 500 clamp(15px, 3cqw, 22px)/2 "Noto Serif JP", serif; }

/* 既存サイトの #content .about より詳細度を上げ、共通CSSの背景・文字色を無効化 */
#content .ryt200-lp .about {
  aspect-ratio: 1024 / 977;
  min-height: 0;
  padding: clamp(42px, 8cqw, 78px) clamp(22px, 5.2cqw, 40px);
  overflow: hidden;
  background: var(--paper) url("images/about.png") center top / cover no-repeat;
  color: var(--ink);
  text-align: left;
}
#content .ryt200-lp .about h2 {
  max-inline-size: none;
  margin: 0 0 .83em;
  color: var(--ink);
  font-size: 20px;
  font-weight: 500;
  line-height: 1.65;
  letter-spacing: .02em;
  text-align: left;
}
#content .ryt200-lp .about p {
  max-inline-size: none;
  margin: 0;
  color: var(--ink);
  font: 500 clamp(15px, 3cqw, 22px)/2 "Noto Serif JP", serif;
  text-align: left;
}
.ornament { display: block; width: 190px; height: 38px; margin: -6px 0 13px; overflow: hidden; background: url("images/ashirai2.png") center / contain no-repeat; color: transparent; font-size: 0; }

.paths { padding-bottom: 46px; background-image: none; background-color: #fffdf9; }
.band-title { margin: 0 0 2px; padding: 16px 30px; background: #667540; color: white; text-align: center; font-size: clamp(18px, 4.2cqw, 32px); font-weight: 500; }
.path-list article { position: relative; display: flex; align-items: center; min-height: 174px; padding: 22px 43% 22px 38px; overflow: hidden; border-bottom: 1px solid #ebe5dc; background: #fffdf9; }
.path-list article::after { content: ""; position: absolute; z-index: 1; inset: 0 32% 0 0; background: linear-gradient(90deg, #fffdf9 68%, rgb(255 253 249 / 0)); pointer-events: none; }
.path-list article > div { position: relative; z-index: 2; }
.path__icon { position: relative; z-index: 2; flex: 0 0 84px; width: 84px; height: 84px; margin-right: 26px; object-fit: contain; }
.path__photo { position: absolute; z-index: 0; top: 0; right: 0; width: 48%; height: 100%; object-fit: cover; }
.path-list h3 { margin: 0 0 4px; color: var(--terra); font-size: clamp(21px, 4.4cqw, 32px); line-height: 1.45; }
.path-list article:nth-child(2) h3 { color: var(--green); }
.path-list article:nth-child(3) h3 { color: #ad8037; }
.path-list article:nth-child(4) h3 { color: #886d65; }
.path-list p { margin: 0; font-size: clamp(13px, 2.5cqw, 17px); font-weight: 600; line-height: 1.6; }
.possibility { margin: 38px 38px 0; padding: 28px 22px; border: 1px solid #dfd3c2; border-radius: 12px; background: rgb(255 255 255 / 86%); box-shadow: var(--shadow); text-align: center; }
.possibility h3 { font-size: clamp(18px, 4cqw, 29px); line-height: 1.65; }
.possibility > div { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.possibility span { display: grid; align-content: center; min-height: 116px; border: 1px solid #acb591; border-radius: 50%; color: var(--green); font-size: 28px; }
.possibility span > i { margin-bottom: 4px; color: var(--green); font-size: .72em; line-height: 1; }
.possibility span b { color: var(--ink); font-size: clamp(10px, 2cqw, 14px); line-height: 1.45; }
.possibility > p { margin: 24px 0 0; font: 500 clamp(14px, 2.8cqw, 19px)/1.9 "Noto Serif JP", serif; }

.section-head { position: relative; text-align: center; }
.section-head h2 { color: var(--green-dark); font-size: clamp(34px, 7cqw, 52px); font-weight: 500; letter-spacing: .08em; }
.schedule .section-head h2::after, .purification .section-head h2::after, .curriculum .section-head h2::after, .faq .section-head h2::after { content: ""; display: block; width: min(190px, 48%); height: 34px; margin: 3px auto 0; background: url("images/ashirai2.png") center / contain no-repeat; }
.voices .section-head::before, .voices .section-head::after, .faq .section-head::before, .faq .section-head::after { content: ""; position: absolute; z-index: 0; top: -14px; width: 68px; height: 126px; background: url("images/ashirai1.png") center / contain no-repeat; opacity: .68; pointer-events: none; }
.voices .section-head::before, .faq .section-head::before { left: -12px; }
.voices .section-head::after, .faq .section-head::after { right: -12px; transform: scaleX(-1); }
.section-head > * { position: relative; z-index: 1; }
.section-head > span { color: var(--green); font-size: 45px; }
.section-head > p { font-family: "Noto Serif JP", serif; }
.schedule { padding: 55px 42px 58px; background-image: none; background-color: #fff; }
.schedule .section-head > span { display: block; width: 74px; height: 55px; margin: 0 auto 4px; overflow: hidden; background: url("images/ashirai1.png") center / contain no-repeat; color: transparent; font-size: 0; transform: rotate(43deg); transform-origin: center; }
.schedule .section-head h2 { margin: 0; color: var(--green-dark); font-size: clamp(25px, 6.8cqw, 29px); line-height: 1.5; letter-spacing: .1em; white-space: nowrap; }
.schedule .section-head h2::after { content: "◇"; display: flex; width: min(240px, 72%); height: 18px; margin: 2px auto 5px; align-items: center; justify-content: center; background: linear-gradient(#cfc3a3, #cfc3a3) left center / 47% 1px no-repeat, linear-gradient(#cfc3a3, #cfc3a3) right center / 47% 1px no-repeat; color: #b7a77e; font: 10px/1 serif; }
.schedule .section-head .schedule-ribbon { position: relative; display: block; width: max-content; max-width: 100%; margin: 0 auto; padding: 6px 31px; border: 0; background: linear-gradient(90deg, transparent 9%, rgb(255 255 255 / 38%) 9%, rgb(255 255 255 / 38%) calc(9% + 1px), transparent calc(9% + 1px), transparent calc(91% - 1px), rgb(255 255 255 / 38%) calc(91% - 1px), rgb(255 255 255 / 38%) 91%, transparent 91%), #a6a58a; color: white; clip-path: polygon(0 0,100% 0,96% 50%,100% 100%,0 100%,4% 50%); font: 500 clamp(17px, 4.7cqw, 20px) "Noto Serif JP", serif; letter-spacing: .08em; white-space: nowrap; }
.schedule-list { display: grid; gap: 24px; margin-top: 34px; }
.schedule-card { position: relative; min-height: 335px; padding: 28px 34px; overflow: hidden; border: 1px solid #e4dfd7; border-radius: 18px; background: linear-gradient(135deg, #fff, #faf9f4); box-shadow: 0 7px 20px rgb(64 55 42 / 6%); }
.schedule-card__body { position: relative; z-index: 2; width: 67%; }
.schedule-card > img { position: absolute; z-index: 1; right: -10%; bottom: -15%; width: 50%; height: auto; object-fit: contain; object-position: center bottom; opacity: .9; pointer-events: none; }
.schedule-card h3 { width: max-content; margin: -8px 0 18px -34px; padding: 7px 50px 7px 34px; background: linear-gradient(90deg, var(--green-dark), #779161); color: white; font-size: clamp(19px, 3.8cqw, 28px); clip-path: polygon(0 0,100% 0,93% 50%,100% 100%,0 100%); }
.schedule-card p { margin: 10px 0; color: var(--green-soft); font-size: clamp(24px, 5cqw, 36px); }
.schedule-card p > i { display: inline-block; width: 1.2em; color: var(--green-soft); font-size: .72em; vertical-align: middle; }
.schedule-card p b { margin-left: 14px; color: var(--ink); font: 500 clamp(17px, 3.8cqw, 27px)/1.65 "Noto Serif JP", serif; }
.schedule-card p > i + b { margin-left: 10px; }
.schedule-card a,
.schedule-card .calendar-button { display: inline-flex; margin-top: 8px; padding: 9px 18px; align-items: center; gap: 3px; border: 0; border-radius: 7px; background: #718b5b; color: white; font: 600 .8em/1.5 "Noto Sans JP", sans-serif; cursor: pointer; }
.schedule-card a i,
.schedule-card .calendar-button i { margin-right: 3px; }
.schedule-card .calendar-button:hover { background: #60784d; }
.schedule-card .calendar-button:focus-visible { outline: 3px solid rgb(113 139 91 / 35%); outline-offset: 3px; }
.schedule__note { margin: 30px 0 0; text-align: center; font: 500 clamp(14px, 2.8cqw, 20px)/1.9 "Noto Serif JP", serif; }

/* 開催カレンダーモーダル：LPのoverflowの外側に置き、画面全体へ表示 */
.calendar-modal {
  position: fixed;
  z-index: 10050;
  inset: 0;
  display: grid;
  padding: 24px;
  place-items: center;
  visibility: hidden;
  opacity: 0;
  transition: opacity .2s ease, visibility .2s ease;
}
.calendar-modal.is-active { visibility: visible; opacity: 1; }
.calendar-modal__backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: rgb(0 0 0 / 65%);
  cursor: pointer;
}
.calendar-modal__content {
  position: relative;
  z-index: 1;
  width: min(92vw, 900px);
  max-height: 90vh;
  padding: 38px 18px 18px;
  overflow: auto;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 18px 60px rgb(0 0 0 / 30%);
  transform: translateY(12px);
  transition: transform .2s ease;
}
.calendar-modal.is-active .calendar-modal__content { transform: none; }
.calendar-modal__content img {
  display: block;
  width: 100%;
  height: auto;
  max-height: calc(90vh - 56px);
  margin: 0 auto;
  object-fit: contain;
}
.calendar-modal__close {
  position: absolute;
  z-index: 2;
  top: 5px;
  right: 10px;
  width: 34px;
  height: 34px;
  border: 0;
  background: transparent;
  color: #333;
  font: 700 30px/1 sans-serif;
  cursor: pointer;
}
body.is-calendar-modal-open { overflow: hidden; }

.voices { padding: 58px 40px 48px; background: linear-gradient(#faf9f5, #fff); }
.voices .section-head small { color: var(--green); font-size: clamp(16px, 3cqw, 22px); }
.voices .section-head h2 { margin: 10px 0 0; color: var(--ink); font-size: clamp(45px, 9cqw, 66px); }
.voices .section-head i { color: var(--gold); font: italic 30px serif; }
.voices .section-head p { margin: 20px auto 34px; font-size: clamp(14px, 3cqw, 20px); }
.voice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 18px; }
.voice-card { display: flex; min-width: 0; margin: 0; padding: 16px 16px 18px; flex-direction: column; border: 1px solid #eeeae3; background: #fff; box-shadow: 0 5px 15px rgb(44 39 32 / 10%); }
.voice-card > img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; object-position: center; background: #efefed; }
.voice-card > p { margin: 13px 1px 0; font-size: clamp(11px, 2cqw, 14px); font-weight: 600; line-height: 1.65; }
.voice-card--title { align-items: center; justify-content: center; background: #fbf8f1; color: var(--green); text-align: center; }
.voice-card--title h3 { margin: 22px 0; font: 500 clamp(22px, 4.6cqw, 34px)/1.75 "Noto Serif JP", serif; }
.voice-title-art__ornament { display: flex; width: 74%; align-items: center; gap: 10px; color: #af9d6c; font-size: 19px; }
.voice-title-art__ornament::before, .voice-title-art__ornament::after { content: ""; height: 1px; flex: 1; background: #cdbf96; }
.voice-title-art__ornament:last-child { transform: rotate(180deg); }
.change-card { margin-top: 30px; padding: 28px 34px; border: 1px solid #ded6c8; border-radius: 10px; background: #fffdf8; box-shadow: var(--shadow); }
.change-card h3 { font-size: clamp(20px, 5cqw, 36px); }
.change-card p { margin-bottom: 0; font-family: "Noto Serif JP", serif; }

.contents { padding: 70px 40px 40px; background: #fff; }
.purification { position: relative; padding-bottom: 68px; }
.purification::before, .purification::after { content: ""; position: absolute; top: -30px; width: 72px; height: 132px; background: url("images/ashirai1.png") center / contain no-repeat; opacity: .7; pointer-events: none; }
.purification::before { left: -8px; transform: rotate(-10deg); }
.purification::after { right: -8px; transform: rotate(10deg) scaleX(-1); }
.purification .section-head h2 { margin: 3px 0 20px; color: var(--green-dark); font-size: clamp(42px, 8cqw, 62px); }
.purification .section-head p { font-size: clamp(14px, 2.6cqw, 19px); }
.purification .purification-ribbon { display: flex; width: min(285px, 100%); min-height: 38px; margin: 24px auto 0; padding: 5px 31px; align-items: center; justify-content: center; border: 0; background: linear-gradient(90deg, transparent 9%, rgb(255 255 255 / 28%) 9%, rgb(255 255 255 / 28%) calc(9% + 1px), transparent calc(9% + 1px), transparent calc(91% - 1px), rgb(255 255 255 / 28%) calc(91% - 1px), rgb(255 255 255 / 28%) 91%, transparent 91%), #789064; color: white; clip-path: polygon(0 0,100% 0,96% 50%,100% 100%,0 100%,4% 50%); font: 500 clamp(15px, 4cqw, 17px) "Noto Serif JP", serif; letter-spacing: .02em; white-space: nowrap; }
.clean-list { display: grid; max-width: 650px; margin: 0 auto; padding: 12px 36px; border-radius: 15px; background: linear-gradient(100deg, #fffdf9, #fff); box-shadow: 0 7px 25px rgb(56 44 31 / 5%); list-style: none; }
.clean-list li { display: grid; grid-template-columns: 120px 1fr; align-items: center; min-height: 124px; font: 500 clamp(17px, 3.4cqw, 25px)/1.55 "Noto Serif JP", serif; }
.clean-list li + li span { border-top: 1px dotted #aaa596; }
.clean-list img { width: 104px; height: 104px; object-fit: contain; }
.clean-list span { display: block; padding: 27px 0; }
.clean-list strong { font-weight: 600; }
.center-copy { margin: 20px 0 26px; color: var(--ink); text-align: center; font: 500 clamp(14px, 2.8cqw, 20px) "Noto Serif JP", serif; }
.info-box { position: relative; max-width: 650px; min-height: 155px; margin: 0 auto 24px; padding: 20px 20% 18px 17px; overflow: visible; border: 1px solid var(--green); border-radius: 12px; background: #fff; font: 500 13px/1.85 "Noto Serif JP", serif; }
.info-box p { position: relative; z-index: 2; max-width: 270px; margin: 0; }
.info-box strong { color: var(--green); }
.info-box img { position: absolute; z-index: 3; right: -8%; bottom: -25%; width: 78%; height: 152%; max-width: none; object-fit: contain; object-position: right bottom; pointer-events: none; }
.teacher { position: relative; padding: 42px 0 20px; border-top: 1px solid var(--line); }
.teacher > h2 { margin-bottom: 6px; color: var(--green-dark); font-size: 18px; line-height: 1.65; letter-spacing: 0; }
.teacher > h2 em { display: block; width: max-content; max-width: 100%; border-bottom: 2px solid #b4bd9f; color: var(--green); font-size: 1.35em; }
.teacher-intro { position: relative; display: grid; grid-template-columns: 54% 46%; align-items: center; min-height: 140px; }
.teacher-intro p { position: relative; z-index: 2; margin: 0; font: 500 clamp(9px, 2.45cqw, 10.5px)/1.85 "Noto Serif JP", serif; white-space: nowrap; }
.teacher-intro strong { color: var(--green); }
.teacher-intro img { width: 120%; max-width: none; margin-left: -15%; }
.teacher-box { display: grid; grid-template-columns: minmax(0, 1fr); align-items: center; margin: 20px 0 0; padding: 20px 24px 24px; border-radius: 15px; background: linear-gradient(145deg, #faf8f3, #fff); font-family: "Noto Serif JP", serif; box-shadow: 0 7px 20px rgb(55 47 37 / 6%); }
.teacher-box > img { width: 82%; max-width: 320px; margin: 0 auto 14px; }
.teacher-box > div { position: relative; z-index: 2; }
.teacher-box p { margin: 0; font-size: 13px; line-height: 1.85; }
.teacher-box ul { margin: 12px 0; padding: 0; color: var(--green); font-size: clamp(14px, 2.7cqw, 20px); list-style: none; }
.teacher-box li::before { content: "❧"; display: inline-block; margin-right: 9px; color: #9ba88a; }
.teacher__end { max-width: none !important; margin: 30px auto 0; text-align: center; font: 500 clamp(16px, 3.1cqw, 22px)/1.8 "Noto Serif JP", serif !important; }
.teacher__end strong { color: var(--green); }

.curriculum { padding: 65px 38px; background-image: none; background-color: #fff; }
.curriculum .section-head { position: relative; padding: 0 22px 18px; }
.curriculum .section-head::before, .curriculum .section-head::after { content: ""; position: absolute; z-index: 0; top: -12px; width: 43px; height: 88px; background: url("images/ashirai1.png") center / contain no-repeat; opacity: .72; pointer-events: none; }
.curriculum .section-head::before { left: -12px; }
.curriculum .section-head::after { right: -12px; transform: scaleX(-1); }
.curriculum .section-head small { display: block; color: var(--ink); font: 500 12px "Noto Serif JP", serif; letter-spacing: .02em; }
.curriculum .section-head h2 { margin: 4px 0 9px; color: var(--green-dark); font-size: clamp(14px, 4.45cqw, 19px); line-height: 1.5; letter-spacing: .04em; white-space: nowrap; }
.curriculum .section-head h2::after { display: none; }
.curriculum .section-head p { margin: 0; font: 500 clamp(9px, 2.45cqw, 10.5px) "Noto Serif JP", serif; white-space: nowrap; }
.curriculum-list { display: grid; gap: 14px; margin-top: 34px; }
.curriculum-list article { position: relative; display: grid; min-height: 245px; padding: 25px 38% 22px 25px; overflow: hidden; border: 1px solid #e8e4dd; border-radius: 14px; background: linear-gradient(135deg, #fff, #fbfaf7); box-shadow: 0 6px 18px rgb(60 52 40 / 5%); }
.curriculum-list article > div { position: relative; z-index: 2; }
.curriculum-list article > img { position: absolute; z-index: 1; right: 1%; bottom: 2%; width: 35%; height: 92%; object-fit: contain; opacity: .82; pointer-events: none; }
.curriculum-list h3 { margin-bottom: 10px; color: var(--green-dark); font-size: clamp(20px, 4cqw, 29px); }
.curriculum-list h3 b { display: inline-grid; width: 47px; height: 47px; margin-right: 10px; place-items: center; border-radius: 7px; background: var(--green-dark); color: white; }
.curriculum-list p, .curriculum-list ul { margin: 0; font-size: clamp(11px, 2cqw, 14px); line-height: 1.75; }
.curriculum-list ul { margin-top: 5px; padding-left: 1.3em; }
.curriculum-list ul li { list-style-type: disc!important; }
.curriculum__note { margin-top: 24px; color: var(--green); text-align: center; font-size: 13px; }

.faq { padding: 70px 38px 75px; background-image: radial-gradient(circle at 8% 15%, rgb(120 142 83 / 7%), transparent 25%), radial-gradient(circle at 92% 85%, rgb(179 155 99 / 8%), transparent 25%); background-color: #fff; }
.faq .section-head { min-height: 105px; overflow: hidden; border: 0; background: transparent; box-shadow: none; }
.faq .section-head::before, .faq .section-head::after { content: ""; display: block; position: absolute; z-index: 0; top: 3px; width: 38px; height: 78px; background: url("images/ashirai1.png") center / contain no-repeat; opacity: .76; pointer-events: none; }
.faq .section-head::before { left: 2px; transform: rotate(-8deg); }
.faq .section-head::after { right: 2px; transform: rotate(8deg) scaleX(-1); }
.faq .section-head h2 { margin: 0 0 12px; color: var(--green-dark); font-size: clamp(21px, 5.8cqw, 25px); line-height: 1.45; letter-spacing: .16em; white-space: nowrap; }
.faq .section-head h2::after { content: ""; display: block; width: 145px; height: 1px; margin: 6px auto 0; background: #c9b98f; }
.faq .section-head p { margin: 0; font: 500 clamp(7.5px, 2.2cqw, 9.5px) "Noto Serif JP", serif; letter-spacing: .02em; white-space: nowrap; }
.faq-head-person { position: absolute !important; z-index: 2 !important; top: -15px; right: 34px; width: 92px; height: 125px; max-width: none; border: 0; background: transparent; box-shadow: none; object-fit: contain; object-position: center top; pointer-events: none; }
.faq-list { display: grid; gap: 14px; margin-top: 40px; }
.faq-card { position: relative; min-height: 190px; padding: 22px 27% 24px 26px; overflow: hidden; border: 1px solid #ece8e1; border-radius: 14px; background: rgb(255 255 255 / 90%); box-shadow: 0 4px 15px rgb(40 35 28 / 4%); }
.faq-card h3 { position: relative; margin: 0 0 15px; padding: 0 0 13px 46px; border-bottom: 1px dotted #a8a294; color: var(--green-dark); font-size: clamp(17px, 3.2cqw, 23px); font-weight: 600; }
.faq-card h3::before { content: "Q"; position: absolute; left: 0; top: -2px; display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; background: var(--green-dark); color: white; font-family: serif; }
.faq-card__answer { position: relative; }
.faq-card__answer p { position: relative; z-index: 2; margin: 0; padding-left: 46px; font-size: clamp(12px, 2.2cqw, 15px); line-height: 1.8; }
.faq-card__answer p::before { content: "A"; position: absolute; left: 0; top: 0; display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; background: var(--gold); color: white; font-family: serif; }
.faq-card > img { position: absolute; z-index: 1; top: 50%; right: 18px; width: 22%; height: 76%; transform: translateY(-50%); object-fit: contain; object-position: center; opacity: .88; pointer-events: none; }
.faq__end { margin-top: 26px; color: var(--green); text-align: center; font-family: "Noto Serif JP", serif; }

.contact { padding: 70px 36px 85px; background: linear-gradient(145deg, #eef0e6, #f8f3e8); text-align: center; }
.contact img { width: 100px; margin: 0 auto 18px; opacity: .82; }
.contact > p:first-of-type { margin-bottom: 7px; color: var(--gold); font: 500 18px serif; letter-spacing: .18em; }
.contact h2 { color: var(--green-dark); font-size: clamp(28px, 5.6cqw, 42px); }
.contact a { display: block; max-width: 540px; margin: 30px auto 14px; padding: 18px 25px; border-radius: 8px; background: var(--terra); color: white; box-shadow: 0 12px 25px rgb(151 65 39 / 20%); font-weight: 700; }
.contact small { display: block; color: #81796e; font-size: 11px; }
@container lp (max-width: 620px) {
  .hero { min-height: 0; padding: calc(38px + var(--site-header-height, 48px)) 20px 30px; }
  .hero__person { top: 0px; right: -10%; width: 112%; }
  .hero__copy { width: 70%; }
  .hero__lead { margin-bottom: 16px; }
  .hero__seal { position: static; width: 74px; }
  .hero__badges { gap: 9px; }
  .hero__badges span { padding: 8px 11px; }
  .course-pick { padding: 12px 15px 16px; }
  .hero__features { margin-top: 24px; padding: 14px 0; }
  .hero__features i { width: 44px; height: 44px; font-size: 21px; }
  .hero__features div { padding: 0 5px; }
  .price-box { margin-top: 34px; padding: 10px 12px 16px; }
  .price-box > div { gap: 8px; }
  .price-box span { width: 52px; height: 52px; font-size: 12px; }
  .price-box small { font-size: 12px; }
  .cta-band { min-height: 100px; gap: 12px; padding: 18px 20px; }
  .cta-band__icon { flex-basis: 50px; width: 50px; height: 50px; font-size: 24px; }
  .cta-band > i { flex-basis: 43px; width: 43px; height: 43px; font-size: 23px; }
  .about { aspect-ratio: auto; min-height: 0; padding: 36px 22px 32px; background-position: center top; }
  #content .ryt200-lp .about { aspect-ratio: auto; min-height: 0; padding: 36px 22px 32px; background-position: center top; }
  .about::before { background: linear-gradient(90deg, rgb(255 253 249 / 98%) 0%, rgb(255 253 249 / 94%) 55%, rgb(255 253 249 / 66%) 76%, transparent 100%); }
  .about__copy { width: 86%; }
  .about h2 { max-width: 100%; font-size: 20px; line-height: 1.72; overflow-wrap: anywhere; }
  .about p { margin-bottom: 0; font-size: clamp(13px, 3.2cqw, 15px); line-height: 1.9; overflow-wrap: anywhere; }
  #content .ryt200-lp .about h2 { max-width: 100%; font-size: 20px; line-height: 1.72; overflow-wrap: anywhere; }
  #content .ryt200-lp .about p { margin-bottom: 0; font-size: clamp(13px, 3.2cqw, 15px); line-height: 1.9; overflow-wrap: anywhere; }
  .ornament { width: 150px; height: 30px; margin-top: -3px; }
  .path-list article { min-height: 142px; padding: 14px 35% 14px 18px; }
  .path-list article::after { right: 23%; }
  .path__icon { flex-basis: 54px; width: 54px; height: 54px; margin-right: 10px; }
  .path__photo { width: 39%; }
  .path-list h3 { font-size: 16px; line-height: 1.42; }
  .path-list p { font-size: 11px; line-height: 1.55; }
  .possibility { margin: 25px 18px 0; padding: 22px 10px; }
  .possibility > div { gap: 5px; }
  .possibility span { min-height: 84px; font-size: 20px; }
  .schedule { padding: 40px 20px; }
  .schedule-list { gap: 16px; margin-top: 22px; }
  .schedule-card { min-height: 270px; padding: 20px 22px; }
  .schedule-card__body { width: 68%; }
  .schedule-card > img { right: -6%; width: 45%; opacity: .76; }
  .schedule-card h3 { margin-left: -22px; padding-left: 22px; }
  .voices { padding: 44px 20px; }
  .voice-grid { gap: 14px 9px; }
  .voice-card { padding: 9px 9px 12px; }
  .voice-card > p { margin-top: 8px; font-size: clamp(9px, 2.45cqw, 12px); line-height: 1.6; }
  .voice-card--title h3 { margin: 14px 0; font-size: clamp(18px, 4.8cqw, 27px); line-height: 1.7; }
  .voice-title-art__ornament { width: 78%; font-size: 15px; }
  .contents { padding: 50px 22px; }
  .purification { padding-bottom: 55px; }
  .purification::before, .purification::after { top: -12px; width: 46px; height: 92px; }
  .purification .purification-ribbon { padding-right: 25px; padding-left: 25px; }
  .clean-list { padding: 8px 14px; }
  .clean-list li { grid-template-columns: 88px 1fr; min-height: 94px; }
  .clean-list img { width: 78px; height: 78px; }
  .clean-list span { width: auto; height: auto; margin: 0; padding: 21px 0; }
  .info-box { min-height: 155px; padding: 20px 20% 18px 17px; font-size: 13px; line-height: 1.85; }
  .info-box img { right: -15%; bottom: -25%; width: 78%; height: 152%; }
  .teacher { padding-top: 42px; }
  .teacher > h2 { font-size: 18px; line-height: 1.65; letter-spacing: 0; }
  .teacher > h2 em { font-size: 1.55em; }
  .teacher-intro { grid-template-columns: 54% 46%; min-height: 140px; }
  .teacher-intro p { font-size: clamp(9px, 2.45cqw, 10.5px); line-height: 1.85; white-space: nowrap; }
  .teacher-intro img { width: 120%; margin-left: -15%; }
  .teacher-box { grid-template-columns: minmax(0, 1fr); margin-top: 20px; padding: 16px 18px 22px; }
  .teacher-box > img { width: 82%; max-width: 300px; margin: 0 auto 12px; }
  .teacher-box p { font-size: 13px; line-height: 1.85; }
  .teacher-box ul { margin: 8px 0; }
  .purification .section-head h2::after, .curriculum .section-head h2::after { width: 145px; height: 27px; }
  .voices .section-head::before, .voices .section-head::after { width: 43px; height: 88px; }
  .curriculum { padding: 46px 18px; }
  .curriculum-list { gap: 10px; margin-top: 22px; }
  .curriculum-list article { min-height: 220px; padding: 18px 36% 16px 16px; }
  .curriculum-list article > img { right: 0; width: 36%; height: 88%; opacity: .72; }
  .curriculum-list h3 { margin-bottom: 5px; }
  .curriculum-list h3 b { width: 38px; height: 38px; }
  .faq { padding: 45px 18px 65px; }
  .faq-list { gap: 9px; margin-top: 25px; }
  .faq-card { min-height: 178px; padding: 16px 28% 18px 15px; }
  .faq-card h3 { margin-bottom: 11px; padding-left: 39px; }
  .faq-card h3::before, .faq-card__answer p::before { width: 29px; height: 29px; }
  .faq-card__answer p { padding-left: 39px; }
  .faq-card > img { right: 8px; width: 24%; height: 70%; opacity: .82; }
}

@media (max-width: 480px) {
  .ryt200-lp {
    width: 100%;
    max-width: none;
    overflow-x: hidden;
  }

  .page {
    width: 100%;
    max-width: none;
    margin: 0;
    box-shadow: none;
  }

  .curriculum .section-head { padding-right: 4px; padding-left: 4px; }
}

/* =========================================================
   Final layout contract
   - Design frame: 390px
   - Desktopも同じモバイルLPを中央表示
   - 375 / 390 / 414 / 430pxで同一レイアウト
   ========================================================= */
html,
body {
  -webkit-text-size-adjust: 100% !important;
  text-size-adjust: 100% !important;
}

#content-wrapper .inner,
.header,
.fixed-content {
  width: min(100%, 390px) !important;
  max-width: 390px !important;
  margin-right: auto !important;
  margin-left: auto !important;
}

.header {
  right: 0;
  left: 0;
}

.fixed-content {
  right: 0;
  left: 0;
}

/* 既存サイトの section { padding: 100px 20px; } をLP内では明示的に解除 */
#content .ryt200-lp > section.hero { padding: calc(38px + var(--site-header-height, 48px)) 16px 30px; }
#content .ryt200-lp > section.about { padding: 36px 22px 32px; }
#content .ryt200-lp > section.paths { padding: 0 0 22px; }
#content .ryt200-lp > section.schedule { padding: 34px 16px 40px; }
#content .ryt200-lp > section.voices { padding: 44px 20px; }
#content .ryt200-lp > section.contents { padding: 42px 16px; }
#content .ryt200-lp > section.curriculum { padding: 42px 16px 34px; }
#content .ryt200-lp > section.faq { padding: 42px 16px 58px; }
#content .ryt200-lp > section.contact { padding: 56px 18px 76px; }

.ryt200-lp.page {
  --font-caption: 10.5px;
  --font-small: 11px;
  --font-body: 12px;
  --font-body-large: 13px;
  --font-card-title: 16px;
  --font-section-title: 24px;
  width: min(100%, 390px);
  max-width: 390px;
  margin: 0 auto;
  overflow-x: clip;
  box-shadow: 0 0 36px rgb(40 35 28 / 10%);
}

/* 390px基準では端末ごとのSafari専用縮小を使用しない */
.hero { padding-right: 16px; padding-left: 16px; }
.hero__copy { width: 72%; }
.hero__person { right: -7%; width: 108%; }
.hero h1 strong { font-size: clamp(44px, 12cqw, 52px); }
.hero h1 span { font-size: clamp(19px, 5.5cqw, 23px); }
.hero__seal { flex: 0 0 54px; width: 54px; }
.hero__badges,
.course-pick { max-width: 270px; }

.price-box { margin-right: 0; margin-left: 0; padding-right: 12px; padding-left: 12px; }
.price-box > p { padding-right: 18px; padding-left: 18px; font-size: 15px; }
.price-box > div {
  display: grid;
  grid-template-columns: 46px 45px minmax(0, 1fr);
  gap: 4px;
}
.price-box span { width: 46px; height: 46px; font-size: 10px; }
.price-box small { font-size: 10px; line-height: 1.4; }
.price-box strong { font-size: 36px; letter-spacing: -.04em; }
.price-box > b { font-size: 14px; }

.cta-band { gap: 10px; padding: 16px; }
.cta-band__icon { flex-basis: 44px; width: 44px; height: 44px; font-size: 21px; }
.cta-band b { font-size: 14px; line-height: 1.5; }
.cta-band small { font-size: 12px; }
.cta-band > i { flex-basis: 38px; width: 38px; height: 38px; font-size: 20px; }

.path-list article { min-height: 132px; padding: 14px 32% 14px 12px; }
.path-list article::after { right: 23%; }
.path__icon { flex-basis: 42px; width: 42px; height: 42px; margin-right: 8px; }
.path__photo { width: 33%; }
.path-list h3 { font-size: var(--font-card-title); line-height: 1.38; }
.path-list p { font-size: var(--font-small); line-height: 1.5; }
.paths { padding: 0 0 22px; }
.possibility { margin: 24px 16px 0; padding: 20px 8px; }
.possibility > div { gap: 4px; }
.possibility span { min-height: 76px; padding: 4px 2px; }
.possibility span b { font-size: var(--font-caption); line-height: 1.35; }
.possibility > p { font-size: var(--font-body); line-height: 1.8; }

.schedule { padding: 34px 16px 40px; }
.schedule-card { min-height: 250px; padding: 18px 16px; }
.schedule-card__body { width: 78%; }
.schedule-card > img { position: absolute; z-index: 1; right: -10%; bottom: -15%; width: 50%; height: auto; object-fit: contain; object-position: center bottom; opacity: .9; pointer-events: none; }
.schedule-card h3 { margin-left: -16px; padding: 7px 32px 7px 16px; font-size: var(--font-card-title); }
.schedule-card p { font-size: 18px; }
.schedule-card p b { margin-left: 6px; font-size: var(--font-body-large); line-height: 1.55; }
.schedule-card p > i + b { margin-left: 5px; }
.schedule-card .calendar-button { padding: 8px 10px; font-size: var(--font-small); }
.schedule__note { font-size: var(--font-body); line-height: 1.75; }

.contents { padding: 42px 16px; }
.clean-list { padding-right: 10px; padding-left: 10px; }
.clean-list li { grid-template-columns: 72px minmax(0, 1fr); }
.clean-list img { width: 64px; height: 64px; }
.clean-list span { font-size: var(--font-body-large); }
.center-copy { font-size: var(--font-body); line-height: 1.7; }
.info-box { padding-right: 28%; font-size: var(--font-small); line-height: 1.7; }
.info-box img { right: -20%; bottom: -20%; width: 80%; height: 116%; }
.teacher-intro { grid-template-columns: minmax(0, 58%) minmax(0, 42%); }
.teacher-intro p { font-size: var(--font-small); white-space: normal; }
.teacher-intro img { width: 108%; margin-left: -6%; }

.curriculum { padding: 42px 16px 34px; }
.curriculum-list article { min-height: 0; padding: 14px 24% 12px 14px; }
.curriculum-list article > img { right: 1%; bottom: 8px; width: 23%; height: calc(100% - 16px); }
.curriculum-list h3 { font-size: var(--font-card-title); line-height: 1.45; }
.curriculum-list h3 b { width: 31px; height: 31px; margin-right: 5px; }
.curriculum-list p,
.curriculum-list ul { font-size: var(--font-small); line-height: 1.6; }
.curriculum__note { margin-top: 16px; font-size: var(--font-small); }

.faq { padding: 42px 16px 58px; }
.faq-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 76px;
  column-gap: 10px;
  min-height: 0;
  padding: 14px;
  overflow: hidden;
}
.faq-card h3 { grid-column: 1 / -1; padding-left: 35px; font-size: var(--font-card-title); line-height: 1.5; }
.faq-card h3::before,
.faq-card__answer p::before { width: 26px; height: 26px; }
.faq-card__answer { grid-column: 1; min-width: 0; }
.faq-card__answer p { padding-left: 34px; font-size: var(--font-small); line-height: 1.7; }
.faq-card > img {
  position: static;
  grid-column: 2;
  grid-row: 2;
  align-self: center;
  width: 76px;
  height: 94px;
  margin: 0;
  transform: none;
  object-fit: contain;
}

.contact { padding: 56px 18px 76px; }
.contact h2 { font-size: 21px; line-height: 1.55; }
.contact > p { font-size: var(--font-body); line-height: 1.7; }
.contact a { padding: 14px 9px; font-size: var(--font-body); }

/* セクション間で共通の文字階層 */
.ryt200-lp .section-head > p,
.voices .section-head p,
.purification .section-head p,
.faq__end,
.change-card p,
.teacher-box p { font-size: var(--font-body); }
.ryt200-lp .section-head > small,
.voices .section-head small,
.curriculum .section-head small { font-size: var(--font-small); }
.schedule .section-head h2,
.voices .section-head h2,
.purification .section-head h2,
.faq .section-head h2 { font-size: var(--font-section-title); }
.voice-card > p { font-size: var(--font-small); }

/* 右側の無料相談CTAは画面右端に追従表示する */
.fixed-side-buttons {
  right: max(0px, env(safe-area-inset-right));
}
.fixed-content a { padding: 11px 5px; font-size: 14px; }

@media (max-width: 389px) {
  .ryt200-lp.page,
  #content-wrapper .inner,
  .header,
  .fixed-content {
    width: 100% !important;
  }

  .hero h1 strong { font-size: 42px; }
  .hero__seal { flex-basis: 50px; width: 50px; }
  .price-box strong { font-size: 34px; }
}

/* Tablet未満では中央390pxの外側にPC専用背景を表示しない */
@media (max-width: 767px) {
  html,
  body,
  #content-wrapper {
    background: var(--paper, #fffdf9) !important;
  }

  #content-wrapper {
    background-image: none !important;
    background-attachment: scroll !important;
  }
}

/* =========================================================
   Typography scale
   Display 40 / H1 36 / H2 30 / H3 24 / H4 20
   Body Large 18 / Body 16 / Small 14 / Caption 12
   ========================================================= */
.ryt200-lp.page {
  --type-display: 40px;
  --type-h1: 36px;
  --type-h2: 30px;
  --type-h3: 24px;
  --type-h4: 20px;
  --type-body-large: 18px;
  --type-body: 16px;
  --type-small: 14px;
  --type-caption: 12px;
  font-size: var(--type-body);
}

#content .ryt200-lp h1 { font-size: var(--type-h1); }
#content .ryt200-lp h2 { font-size: var(--type-h2); }
#content .ryt200-lp h3 { font-size: var(--type-h3); }
#content .ryt200-lp h4 { font-size: var(--type-h4); }
#content .ryt200-lp p,
#content .ryt200-lp li { font-size: var(--type-body); }

/* Display */
#content .ryt200-lp .hero h1 strong,
#content .ryt200-lp .price-box strong { font-size: var(--type-display); }

/* H1相当 */
#content .ryt200-lp .hero h1 { font-size: var(--type-h1); }

/* H2相当 */
#content .ryt200-lp .section-head h2,
#content .ryt200-lp .teacher > h2,
#content .ryt200-lp .contact h2 { font-size: var(--type-h2); }

/* H3相当 */
#content .ryt200-lp .possibility h3,
#content .ryt200-lp .schedule-card h3,
#content .ryt200-lp .curriculum-list h3 { font-size: var(--type-h3); }

/* H4相当 */
#content .ryt200-lp .hero__alliance,
#content .ryt200-lp .hero h1 span,
#content .ryt200-lp .course-pick p,
#content .ryt200-lp .course-pick b,
#content .ryt200-lp .change-card h3,
#content .ryt200-lp .price-box > p { font-size: var(--type-h4); }

/* Body Large */
#content .ryt200-lp .faq-card h3,
#content .ryt200-lp .path-list h3,
#content .ryt200-lp .schedule-card p b,
#content .ryt200-lp .clean-list span,
#content .ryt200-lp .voice-card--title h3,
#content .ryt200-lp .teacher__end,
#content .ryt200-lp .contact > p { font-size: var(--type-body-large); }

/* Body */
#content .ryt200-lp .band-title,
#content .ryt200-lp .hero__badges span,
#content .ryt200-lp .course-pick span,
#content .ryt200-lp .possibility > p,
#content .ryt200-lp .schedule__note,
#content .ryt200-lp .info-box,
#content .ryt200-lp .teacher-intro p,
#content .ryt200-lp .teacher-box p,
#content .ryt200-lp .teacher-box li,
#content .ryt200-lp .curriculum-list p,
#content .ryt200-lp .curriculum-list li,
#content .ryt200-lp .cta-band b,
#content .ryt200-lp .purification-ribbon,
#content .ryt200-lp .faq-card__answer p { font-size: var(--type-body); }

/* Small */
#content .ryt200-lp .about p,
#content .ryt200-lp .hero__lead,
#content .ryt200-lp .hero__features b,
#content .ryt200-lp .path-list p,
#content .ryt200-lp .price-box small,
#content .ryt200-lp .cta-band small,
#content .ryt200-lp .schedule-card .calendar-button,
#content .ryt200-lp .voice-card > p,
#content .ryt200-lp .section-head > p,
#content .ryt200-lp .curriculum__note,
#content .ryt200-lp .faq__end,
#content .ryt200-lp .contact a,
#content .ryt200-lp .contact small { font-size: var(--type-caption); }

/* Caption */
#content .ryt200-lp .possibility span b,
#content .ryt200-lp .section-head > small,
#content .ryt200-lp .price-box span { font-size: var(--type-caption); }

/* 390px幅でタイポグラフィを保つため、カードは内容量に追従 */
#content .ryt200-lp .path-list article {
  min-height: 170px;
  padding-right: 20%;
}
#content .ryt200-lp .path-list h3 { line-height: 1.4; }
#content .ryt200-lp .path-list p { line-height: 1.65; }
#content .ryt200-lp .schedule-card { min-height: 285px; }
#content .ryt200-lp .schedule-card__body { width: 80%; }
#content .ryt200-lp .curriculum-list article {
  min-height: 0;
  padding-right: 29%;
}
#content .ryt200-lp .curriculum-list h3 { line-height: 1.45; }
#content .ryt200-lp .curriculum-list p,
#content .ryt200-lp .curriculum-list ul { line-height: 1.75; }
#content .ryt200-lp .faq-card {
  grid-template-columns: minmax(0, 1fr) 72px;
  column-gap: 8px;
}
#content .ryt200-lp .faq-card h3 { line-height: 1.45; }
#content .ryt200-lp .faq-card__answer p { line-height: 1.75; }

@media (max-width: 389px) {
  .ryt200-lp.page {
    --type-display: 40px;
    --type-h1: 36px;
    --type-h2: 30px;
    --type-h3: 24px;
    --type-h4: 20px;
    --type-body-large: 18px;
    --type-body: 16px;
    --type-small: 14px;
    --type-caption: 12px;
  }
}

/* Curriculum / FAQ cards: タイトル → 本文 → 画像 */
#content .ryt200-lp .curriculum-list article {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-height: 0;
  padding: 16px;
  overflow: hidden;
}

#content .ryt200-lp .curriculum-list article > div {
  grid-column: 1;
  min-width: 0;
}

#content .ryt200-lp .curriculum-list article > img {
  position: static;
  grid-column: 1;
  width: 50%;
  height: auto;
  margin: 14px auto 0;
  object-fit: contain;
  opacity: .82;
}

#content .ryt200-lp .curriculum-list h3 {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  margin: 0 0 14px;
  line-height: 1.45;
}

/* 01〜06は見出し文字ではなくアイコンとして扱う */
#content .ryt200-lp .curriculum-list h3 b {
  display: grid;
  width: 34px;
  height: 34px;
  margin: 0;
  padding: 0;
  place-items: center;
  align-self: center;
  border-radius: 7px;
  font: 500 16px/1 "Noto Serif JP", serif;
  letter-spacing: 0;
}

#content .ryt200-lp .faq-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-height: 0;
  padding: 16px;
  overflow: hidden;
}

#content .ryt200-lp .faq-card h3 {
  display: grid;
  grid-column: 1;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  margin: 0 0 14px;
  padding: 0 0 13px;
  line-height: 1.45;
}

/* Qは見出し文字ではなくアイコンとして扱う */
#content .ryt200-lp .faq-card h3::before {
  position: static;
  display: grid;
  width: 34px;
  height: 34px;
  margin: 0;
  place-items: center;
  align-self: center;
  border-radius: 50%;
  font: 500 16px/1 serif;
}

#content .ryt200-lp .faq-card__answer {
  grid-column: 1;
  min-width: 0;
}

#content .ryt200-lp .faq-card__answer p {
  padding-left: 44px;
}

#content .ryt200-lp .faq-card__answer p::before {
  width: 30px;
  height: 30px;
  font-size: 14px;
  line-height: 1;
}

#content .ryt200-lp .faq-card > img {
  position: static;
  grid-column: 1;
  grid-row: auto;
  width: 50%;
  height: auto;
  margin: 14px auto 0;
  transform: none;
  object-fit: contain;
  opacity: .88;
}

/* 講師紹介：地球の画像を上、紹介文を下に配置 */
#content .ryt200-lp .teacher-intro {
  display: flex;
  min-height: 0;
  margin-top: 18px;
  flex-direction: column;
  align-items: center;
}

#content .ryt200-lp .teacher-intro img {
  order: 1;
  width: min(270px, 82%);
  max-width: 100%;
  height: auto;
  margin: 0 auto;
  object-fit: contain;
}

#content .ryt200-lp .teacher-intro p {
  order: 2;
  width: 100%;
  margin: 18px 0 0;
  padding: 0 6px;
  font-size: var(--type-body);
  line-height: 1.85;
  white-space: normal;
  text-align: left;
}

/* 卒業後の道：左の白背景から右の写真へ自然につなぐ */
#content .ryt200-lp .path-list article::after {
  z-index: 1;
  inset: 0;
  background: linear-gradient(
    90deg,
    #fffdf9 0%,
    #fffdf9 28%,
    rgb(255 253 249 / 96%) 38%,
    rgb(255 253 249 / 86%) 48%,
    rgb(255 253 249 / 70%) 58%,
    rgb(255 253 249 / 50%) 68%,
    rgb(255 253 249 / 30%) 78%,
    rgb(255 253 249 / 14%) 88%,
    rgb(255 253 249 / 0%) 100%
  );
}

/* 写真をテキスト側まで広げ、長いグラデーションの下へ回り込ませる */
#content .ryt200-lp .path-list .path__photo {
  right: 0;
  width: 58%;
}

#content .ryt200-lp .path-list article > div,
#content .ryt200-lp .path-list .path__icon {
  z-index: 2;
}

/* =========================================================
   Canonical typography — このブロックだけが最終文字サイズを決定
   ========================================================= */
html,
body {
  -webkit-text-size-adjust: 100% !important;
  text-size-adjust: 100% !important;
}

#content .ryt200-lp {
  font-size: var(--type-body);
  font-synthesis: none;
}

/* Display 40 */
#content .ryt200-lp .hero h1 strong,
#content .ryt200-lp .price-box strong {
  font-size: var(--type-display);
}

/* H1 36 */
#content .ryt200-lp .hero h1 {
  font-size: var(--type-h1);
}

/* H2 30 */
#content .ryt200-lp .section-head h2,
#content .ryt200-lp .teacher > h2,
#content .ryt200-lp .contact h2 {
  font-size: var(--type-h2);
}

/* H3 24 */
#content .ryt200-lp .possibility h3,
#content .ryt200-lp .schedule-card h3,
#content .ryt200-lp .curriculum-list h3 {
  font-size: var(--type-h3);
}

/* H4 20 */
#content .ryt200-lp .hero__alliance,
#content .ryt200-lp .hero h1 span,
#content .ryt200-lp .course-pick p,
#content .ryt200-lp .course-pick b,
#content .ryt200-lp .change-card h3,
#content .ryt200-lp .price-box > p,
#content .ryt200-lp .path-list h3,
#content .ryt200-lp .faq-card h3 {
  font-size: var(--type-h4);
}

/* Body Large 18 */
#content .ryt200-lp .hero__badges span,
#content .ryt200-lp .course-pick span,
#content .ryt200-lp .schedule-card p b,
#content .ryt200-lp .clean-list span,
#content .ryt200-lp .teacher__end {
  font-size: var(--type-body-large);
}

/* Body 16 */
#content .ryt200-lp p,
#content .ryt200-lp li,
#content .ryt200-lp .path-list p,
#content .ryt200-lp .possibility > p,
#content .ryt200-lp .schedule__note,
#content .ryt200-lp .info-box,
#content .ryt200-lp .teacher-intro p,
#content .ryt200-lp .teacher-box p,
#content .ryt200-lp .teacher-box li,
#content .ryt200-lp .curriculum-list p,
#content .ryt200-lp .curriculum-list li,
#content .ryt200-lp .cta-band b,
#content .ryt200-lp .faq-card__answer p,
#content .ryt200-lp .contact > p,
#content .ryt200-lp .purification-ribbon {
  font-size: var(--type-body);
}

/* Small 14 */
#content .ryt200-lp .about p,
#content .ryt200-lp .hero__features b,
#content .ryt200-lp .price-box small,
#content .ryt200-lp .cta-band small,
#content .ryt200-lp .schedule-card .calendar-button,
#content .ryt200-lp .voice-card > p,
#content .ryt200-lp .section-head > p,
#content .ryt200-lp .curriculum__note,
#content .ryt200-lp .faq__end,
#content .ryt200-lp .contact a,
#content .ryt200-lp .contact small {
  font-size: var(--type-small);
}

/* Caption 12 */
#content .ryt200-lp .hero__lead,
#content .ryt200-lp .possibility span b,
#content .ryt200-lp .section-head > small,
#content .ryt200-lp .price-box span {
  font-size: var(--type-caption);
}

/* 文字階層の例外：番号・Q/A・装飾アイコン */
#content .ryt200-lp .curriculum-list h3 b,
#content .ryt200-lp .faq-card h3::before {
  font-size: 16px;
}

#content .ryt200-lp .faq-card__answer p::before {
  font-size: 14px;
}

#content .ryt200-lp .bi {
  font-size: 1em;
}

/* =========================================================
   Mobile first view
   端末の最初の画面内に、価格カードまで収まりやすい密度にする。
   全体の文字スケールは維持し、FV内の補助情報だけを例外化する。
   ========================================================= */
@media (max-width: 767px) {
  #content .ryt200-lp > section.hero {
    padding: calc(12px + var(--site-header-height, 48px)) 10px 14px;
  }

  #content .ryt200-lp .hero__copy {
    width: 72%;
  }

  #content .ryt200-lp .hero__person {
    top: -90px;
    right: -15%;
    width: 120%;
  }

  #content .ryt200-lp .hero__lead {
    margin-bottom: 7px;
    font-size: 12px;
    line-height: 1.55;
  }

  #content .ryt200-lp .hero__alliance {
    font-size: 16px;
    line-height: 1.3;
  }

  #content .ryt200-lp .hero h1 {
    margin-bottom: 8px;
  }

  #content .ryt200-lp .hero h1 strong {
    font-size: 40px;
  }

  #content .ryt200-lp .hero h1 span {
    padding-bottom: 4px;
    font-size: 16px;
  }

  #content .ryt200-lp .hero__seal {
    flex-basis: 44px;
    width: 44px;
  }

  #content .ryt200-lp .hero__badges {
    gap: 5px;
    width: min(100%, 230px);
    max-width: 230px;
    margin: 7px 0;
  }

  #content .ryt200-lp .hero__badges span {
    padding: 5px 8px;
    border-width: 1px;
    border-radius: 6px;
    font-size: 14px;
    line-height: 1.35;
  }

  #content .ryt200-lp .hero__badges i {
    margin-right: 6px;
  }

  #content .ryt200-lp .course-pick {
    gap: 5px;
    width: min(100%, 230px);
    max-width: 230px;
    padding: 8px 10px 9px;
  }

  #content .ryt200-lp .course-pick p,
  #content .ryt200-lp .course-pick b {
    font-size: 14px;
    line-height: 1.35;
  }

  #content .ryt200-lp .course-pick span {
    padding: 5px 10px;
    font-size: 14px;
    line-height: 1.35;
  }

  #content .ryt200-lp .course-pick span i {
    margin-right: 6px;
  }

  #content .ryt200-lp .hero__features {
    margin-top: 10px;
    padding: 8px 0;
  }

  #content .ryt200-lp .hero__features div {
    padding: 0 4px;
  }

  #content .ryt200-lp .hero__features i {
    width: 30px;
    height: 30px;
    margin-bottom: 4px;
    font-size: 15px;
  }

  #content .ryt200-lp .hero__features b {
    font-size: 10px;
    line-height: 1.45;
  }

  #content .ryt200-lp .price-box {
    margin-top: 18px;
    padding: 11px 10px 10px;
  }

  #content .ryt200-lp .price-box > p {
    min-width: min(250px, 82%);
    margin: -26px auto 7px;
    padding: 4px 16px;
    font-size: 14px;
    line-height: 1.35;
  }

  #content .ryt200-lp .price-box > div {
    grid-template-columns: 42px 48px minmax(0, 1fr);
    gap: 5px;
    width: min(100%, 310px);
    margin: 0 auto;
    align-items: center;
  }

  #content .ryt200-lp .price-box span {
    width: 42px;
    height: 42px;
    font-size: 9px;
  }

  #content .ryt200-lp .price-box small {
    font-size: 9px;
    line-height: 1.4;
    text-align: center;
  }

  #content .ryt200-lp .price-box strong {
    justify-self: center;
    font-size: 31px;
    letter-spacing: -.035em;
  }

  #content .ryt200-lp .price-box > b {
    display: block;
    width: min(100%, 310px);
    margin: 2px auto 0;
    padding-left: 100px;
    font-size: 11px;
    line-height: 1.35;
    text-align: center;
  }
}

/* 価格特典画像と横方向のはみ出し対策 */
html,
body,
#content-wrapper,
#content {
  max-width: 100%;
  overflow-x: hidden;
}

#content .ryt200-lp > .hero {
  overflow: hidden;
}

#content .ryt200-lp .hero__person {
  max-width: none;
}

#content .ryt200-lp .price-box__bonus,
#content .ryt200-lp .price-box__period {
  display: block;
  width: min(100%, 300px);
  height: auto;
  margin-right: auto;
  margin-left: auto;
  object-fit: contain;
}

#content .ryt200-lp .price-box__bonus {
  margin-top: 0;
  margin-bottom: 5px;
}

#content .ryt200-lp .price-box__period {
  margin-top: 5px;
  margin-bottom: 0;
}

/* 価格ボックスはスクロール表示アニメーションを使用しない */
#content .ryt200-lp .price-box {
  opacity: 1;
  transform: none;
  transition: none;
}

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
}
