@charset "UTF-8";

/* =========================================================
   reset
   ========================================================= */
html,
body,
div,
span,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
address,
cite,
code,
del,
dfn,
em,
img,
ins,
q,
s,
small,
strong,
sub,
sup,
var,
b,
u,
i,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
section,
summary,
time,
mark,
audio,
video {
  padding: 0;
  margin: 0;
  font: inherit;
  font-size: 100%;
  vertical-align: baseline;
  border: 0;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

ol,
ul {
  list-style: none;
}

blockquote,
q {
  quotes: none;
}

table {
  border-spacing: 0;
  border-collapse: collapse;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}

address {
  font-style: normal;
}

input,
select,
textarea,
button {
  font: inherit;
  color: inherit;
}

/* =========================================================
   base
   ========================================================= */
:root {
  --color-white: #f1f1f1;
  --color-kairos: #1f1918;
  --color-gray: #a2a2a2;
  --color-black: #343434;
  --color-light-gray: #cfcfcf;
  --color-tiny-gray: #e4e4e4;
  --color-text-sub: #3d3d3d;
  --color-line: #7c7c7c;
  --font-mincho: "Yu Mincho", YuMincho, "Hiragino Mincho ProN", "Hiragino Mincho Pro", "Noto Serif JP", serif;
  /* ヘッダーの高さ。position: fixed の分を body の padding-top で確保するため、
     .header__inner / body / .sp_nav の3箇所でこの変数を共有する */
  --header-h: 80px;
  /* ゆっくり立ち上がってすっと止まる、落ち着いたイージング */
}

html {
  scroll-behavior: smooth;
  /* 固定ヘッダーにアンカー先が隠れないように */
  scroll-padding-top: var(--header-h);
}

body {
  /* ヘッダーが position: fixed になった分、上に詰まらないよう高さ分を確保 */
  padding-top: var(--header-h);
  font-family: var(--font-mincho);
  font-weight: 500;
  color: var(--color-black);
  background-color: var(--color-white);
  -webkit-font-smoothing: antialiased;
}

body.is-fixed {
  overflow: hidden;
}

main {
  display: block;
}

/* =========================================================
   header
   ========================================================= */
.header {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 300;
  background-color: var(--color-kairos);
}

.header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.header__nav {
  display: flex;
  align-items: center;
}

.header__nav_list {
  display: flex;
  align-items: center;
}

.header__nav_list a {
  position: relative;
  display: inline-block;
  color: #fff;
}

/* 下線は border ではなく擬似要素にして、フェード＋横方向の伸びで滑らかに出し入れする */
.header__nav_list a::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  content: "";
  background-color: #fff;
  opacity: 0;
  transform: scaleX(0.3);
  transition: opacity 0.4s ease, transform 0.4s ease;
}

.header__nav_list a:hover::after,
.header__nav_list .is-current a::after {
  opacity: 1;
  transform: scaleX(1);
}

.header__reserve {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  white-space: nowrap;
  background-color: #3a3a3a;
  transition: opacity 0.3s ease;
}

.header__reserve:hover {
  opacity: 0.8;
}

.c-drawer {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 30px;
  height: 20px;
  cursor: pointer;
}

.c-drawer span {
  display: block;
  height: 1px;
  background-color: var(--color-white);
  transition: transform 0.3s, opacity 0.3s, width 0.3s;
}

.c-drawer span:nth-child(1) {
  width: 30px;
}

.c-drawer span:nth-child(2) {
  width: 20px;
}

.c-drawer span:nth-child(3) {
  width: 25px;
}

.c-drawer.active span:nth-child(1) {
  width: 30px;
  transform: translateY(9.5px) rotate(45deg);
}

.c-drawer.active span:nth-child(2) {
  opacity: 0;
}

.c-drawer.active span:nth-child(3) {
  width: 30px;
  transform: translateY(-9.5px) rotate(-45deg);
}

.sp_nav {
  position: fixed;
  top: var(--header-h);
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 100;
  overflow-y: auto;
  visibility: hidden;
  /* 写真の上にKAIROSカラーを重ねた背景 */
  background-image: linear-gradient(rgba(31, 25, 24, 0.9), rgba(31, 25, 24, 0.9)), url("../images/hero--sp.jpg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  opacity: 0;
  transition: opacity 0.3s, visibility 0.3s;
}

.sp_nav.active {
  visibility: visible;
  opacity: 1;
}

.sp_nav__list li {
  border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}

.sp_nav__list li:first-child {
  border-top: 1px solid rgba(255, 255, 255, 0.3);
}

.sp_nav__list a {
  display: flex;
  align-items: center;
  color: #fff;
}

.sp_nav__num {
  color: var(--color-gray);
}

.sp_nav__ja {
  margin-left: auto;
  color: var(--color-gray);
}

.sp_nav__reserve {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-black);
  background-color: var(--color-light-gray);
  transition: opacity 0.3s ease;
}

.sp_nav__reserve:hover {
  opacity: 0.8;
}

/* =========================================================
   common parts
   ========================================================= */
.c-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-align: center;
  background-color: #2c2c2c;
  transition: opacity 0.3s ease;
}

/* 常時表示のCTA。ヘッダー(300)より下、SPメニュー(100)より下に置く */
.c-float_cta {
  position: fixed;
  right: 0;
  bottom: 0;
  z-index: 90;
  display: flex;
  align-items: center;
  color: #fff;
  white-space: nowrap;
  background-color: var(--color-kairos);
  /* フッターと背景色が同じで輪郭が消えるため、白いフチと淡いグローで浮かせる。
     明るい背景の上では、最後の暗い影が効く */
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.32),
    0 4px 24px rgba(255, 255, 255, 0.16),
    0 4px 18px rgba(31, 25, 24, 0.3);
  transition: opacity 0.3s ease;
}

.c-float_cta:hover {
  opacity: 0.8;
}

.c-float_cta__icon {
  flex: 0 0 auto;
}

@media (prefers-reduced-motion: reduce) {
  .c-float_cta {
    transition: none;
  }
}

.c-btn:hover {
  opacity: 0.8;
}

.c-link {
  position: relative;
  display: inline-block;
  padding-bottom: 5px;
}

/* すでに線が引かれているリンク。ホバーで右→左に引き直す */
.c-link::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  content: "";
  background-color: var(--color-line);
  transform: scaleX(1);
  transform-origin: right center;
}

.c-link:hover::after {
  animation: line-redraw 0.7s ease;
}

@keyframes line-redraw {
  0% {
    transform: scaleX(1);
    transform-origin: right center;
  }

  45% {
    transform: scaleX(0);
    transform-origin: right center;
  }

  46% {
    transform: scaleX(0);
    transform-origin: left center;
  }

  100% {
    transform: scaleX(1);
    transform-origin: left center;
  }
}

.c-heading_en,
.c-heading_en--left {
  font-weight: 600;
}

.c-heading_en {
  text-align: center;
}

.c-step {
  display: inline-block;
  padding: 4px;
  border: 1px solid var(--color-kairos);
}

.c-required {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 13px;
  color: #fff;
  background-color: #d88a8b;
}

.page_header {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background-color: var(--color-white);
}

.page_header__ja {
  font-weight: 600;
  line-height: 1.5;
  color: var(--color-black);
}

.page_header__en {
  line-height: 1;
  color: var(--color-gray);
}

/* =========================================================
   front-page
   ========================================================= */
.top_kv img,
.concept_kv img,
.space_kv img {
  display: block;
  width: 100%;
  object-fit: cover;
  /* 高さを固定して切り抜くため、中央が必ず残るようにする */
  object-position: center;
}

/* 写真の縦横比が変わってもレイアウトが動かないよう、表示の比率を固定して中央で切り抜く。
   比率はデザイン当時の画像（about.jpg / limited.jpg / closing.jpg など）に合わせている。
   枠ではなく img 側に指定することで、幅が auto になるSPでも循環参照にならない。 */
.top_about__img img,
.top_limited__img img,
.top_closing__img img,
.concept_philosophy__img img,
.concept_foryou__img img,
.space_private__img img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
  object-position: center;
}

.top_about__img img {
  aspect-ratio: 1443 / 834;
}

.top_limited__img img {
  aspect-ratio: 322 / 383;
}

.top_closing__img img,
.concept_philosophy__img img,
.concept_foryou__img img,
.space_private__img img {
  aspect-ratio: 1160 / 1336;
}

.top_map {
  font-size: 0;
}

.top_map iframe {
  display: block;
  width: 100%;
  border: 0;
}

.top_intro {
  text-align: center;
  background-color: var(--color-white);
}

.top_about {
  background-color: var(--color-tiny-gray);
}

.top_about__inner {
  display: flex;
  align-items: flex-start;
  justify-content: center;
}

.top_about__title {
  font-weight: 600;
}

.top_space {
  background-color: var(--color-white);
}

.top_space__head {
  text-align: center;
}

/* SPACE スライダー（自動で横に流れる） */
.top_space__slider {
  overflow: hidden;
}

.top_space__slider_track {
  display: flex;
  align-items: flex-start;
  width: max-content;
  /* 2周分を並べ、半分だけ動かして先頭に戻すことで途切れなく見せる */
  animation: top_space_scroll 60s linear infinite;
}

.top_space__slider_track li {
  flex: 0 0 auto;
}

.top_space__slider_track img {
  width: 100%;
  object-fit: cover;
}

@keyframes top_space_scroll {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-50%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .top_space__slider_track {
    animation: none;
  }
}

.top_space__link,
.top_plan__link,
.top_access__link {
  text-align: center;
}

/* LIMITED MEMBERSHIP */
.top_limited {
  background-color: var(--color-tiny-gray);
}

.top_limited__inner {
  display: flex;
  align-items: center;
  justify-content: center;
}

.top_limited__img img {
  width: 100%;
}

.top_limited__label,
.top_limited__title {
  font-weight: 600;
}

.top_limited__label {
  color: #7e756f;
}

.top_limited__line {
  display: block;
  width: 30px;
  height: 1px;
  background-color: #7e756f;
}

.top_plan {
  text-align: center;
  background-color: var(--color-white);
}

.top_access {
  text-align: center;
  background-color: #e7e7e7;
}

.top_access__name {
  font-weight: 600;
  color: #1a1a1a;
}

.top_access__address,
.top_access__route {
  color: var(--color-text-sub);
}

.top_closing {
  background-color: #f1f1f1;
}

.top_closing__inner {
  display: flex;
  align-items: center;
  justify-content: center;
}

.top_closing__title {
  font-weight: 600;
}

/* =========================================================
   concept
   ========================================================= */
.concept_intro {
  text-align: center;
  background-color: var(--color-tiny-gray);
}

.concept_intro__title {
  font-weight: 600;
}

.concept_philosophy {
  background-color: var(--color-white);
}

.concept_foryou {
  background-color: var(--color-tiny-gray);
}

.concept_philosophy__inner,
.concept_foryou__inner {
  display: flex;
  align-items: center;
  justify-content: center;
}

.concept_foryou__link {
  text-align: right;
}

.concept_closing {
  text-align: center;
  background-color: var(--color-white);
}

/* =========================================================
   space
   ========================================================= */
.space_catch,
.space_rotation,
.space_amenity {
  text-align: center;
}

.space_catch {
  background-color: var(--color-tiny-gray);
}

.space_catch__text {
  line-height: 1.8;
}

.space_private {
  background-color: var(--color-tiny-gray);
}

.space_private__inner,
.space_inbody__inner {
  display: flex;
  align-items: center;
  justify-content: center;
}

.space_rotation {
  background-color: var(--color-white);
}

.space_inbody {
  background-color: var(--color-tiny-gray);
}

.space_inbody__title {
  font-weight: 600;
}

.space_inbody__list {
  display: flex;
  justify-content: center;
}

.space_inbody__list li {
  text-align: center;
  background-color: var(--color-white);
}

.space_inbody__list_title {
  font-weight: 600;
  color: #1a1a1a;
}

.space_machine {
  text-align: center;
  background-color: var(--color-white);
}

.space_machine__title {
  font-weight: 600;
  color: #1a1a1a;
}

/* 枠のサイズは変えずに、中の画像だけを拡大する */
.space_machine__img {
  overflow: hidden;
}

.space_machine__list img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}

@media (hover: hover) {
  .space_machine__list img {
    transition: transform 0.6s ease;
  }

  .space_machine__list li:hover img {
    transform: scale(1.1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .space_machine__list img {
    transition: none;
  }
}

.space_machine__list p {
  color: var(--color-text-sub);
  text-align: left;
}

.space_amenity {
  background-color: var(--color-tiny-gray);
}

.space_amenity__title {
  font-weight: 600;
  line-height: 1.8;
}

.space_amenity__list {
  display: flex;
  justify-content: center;
}

.space_amenity__list li {
  color: var(--color-text-sub);
  text-align: center;
  background-color: var(--color-white);
}

/* =========================================================
   trainer
   ========================================================= */
.trainer_profile {
  background-color: var(--color-tiny-gray);
}

.trainer_profile__inner {
  display: flex;
  align-items: flex-start;
  justify-content: center;
}

.trainer_profile__name_en,
.trainer_profile__subtitle {
  font-weight: 600;
  color: #1a1a1a;
}

.trainer_profile__name_ja {
  color: #4a4a4a;
}

.trainer_profile__list {
  color: #1a1a1a;
}

.trainer_message {
  text-align: center;
  background-color: var(--color-white);
}

.trainer_message__title {
  font-weight: 600;
}

/* =========================================================
   plan
   ========================================================= */
.plan_intro {
  background-color: var(--color-tiny-gray);
}

.plan_intro__inner {
  text-align: center;
}

.plan_intro__title {
  font-weight: 600;
}

/* 料金表（MONTHLY / TICKET / OTHER） */
.plan_price__head {
  font-weight: 600;
  text-align: center;
}

.plan_price__row {
  display: flex;
  align-items: center;
  border-top: 1px solid #9d9d9d;
}

.plan_price__list li:last-child {
  border-bottom: 1px solid #9d9d9d;
}

.plan_price__count {
  /* 文字数が違っても説明文の開始位置が揃うよう左揃えで固定 */
  text-align: left;
}

.plan_price__desc {
  flex: 1;
  text-align: left;
}

.plan_price__amount {
  text-align: right;
}

.plan_price__annotation {
  text-align: left;
}

.plan_price__link {
  text-align: center;
}

.plan_included {
  background-color: var(--color-white);
}

.plan_included__title,
.plan_value__title,
.plan_flow__title {
  font-weight: 600;
}

.plan_included__label {
  font-weight: 600;
}

.plan_included__list {
  display: grid;
}

.plan_included__list li {
  text-align: center;
  border-bottom: 1px solid #000;
}

.plan_value {
  background-color: var(--color-tiny-gray);
}

.plan_value__list {
  display: flex;
  flex-wrap: wrap;
}

.plan_value__item_label,
.plan_value__item_title {
  font-weight: 600;
}

.plan_value__item_label {
  color: #7e756f;
}

.plan_value__item_line {
  display: block;
  width: 30px;
  height: 1px;
  background-color: #7e756f;
}

.plan_value__quote {
  border-left: 2px solid #7f7f7f;
}

.plan_value__quote_title {
  font-weight: 600;
}

.plan_flow {
  background-color: var(--color-white);
}

.plan_flow__cta {
  text-align: center;
  background-color: var(--color-light-gray);
}

.plan_flow__cta_text {
  font-weight: 600;
}

.plan_flow__list {
  display: flex;
}

.plan_flow__list li {
  position: relative;
  background-color: var(--color-tiny-gray);
}

.plan_flow__list_title {
  font-weight: 600;
}

.plan_flow__link {
  text-align: center;
}

/* =========================================================
   contact
   ========================================================= */
.contact_intro {
  text-align: center;
  background-color: var(--color-tiny-gray);
}

.contact_intro__cta {
  background-color: var(--color-light-gray);
}

.contact_flow {
  background-color: var(--color-tiny-gray);
}

.contact_flow__title {
  font-weight: 600;
  text-align: center;
}

.contact_flow__list {
  display: flex;
}

.contact_flow__list li {
  background-color: var(--color-white);
}

.contact_flow__list_title {
  font-weight: 600;
}

.contact_form {
  background-color: var(--color-tiny-gray);
}

.contact_form__title {
  font-weight: 600;
  text-align: center;
}

.contact_form__body {
  display: flex;
  flex-direction: column;
}

.contact_form__row {
  display: flex;
}

.contact_form__item {
  flex: 1;
}

.contact_form__label {
  display: block;
}

.contact_form__input,
.contact_form__textarea {
  width: 100%;
  background-color: #fff;
  border: 1px solid var(--color-light-gray);
}

.contact_form__input::placeholder,
.contact_form__textarea::placeholder {
  color: var(--color-light-gray);
}

.contact_form__agree a {
  text-decoration: underline;
}

.contact_form__textarea {
  min-height: 250px;
  resize: vertical;
}

.contact_form__agree {
  display: flex;
  align-items: center;
}

.contact_form__agree input {
  width: auto;
  margin-right: 8px;
}

.contact_form__submit {
  align-self: center;
  color: #fff;
  cursor: pointer;
  background-color: var(--color-kairos);
  border: 0;
  transition: opacity 0.3s ease;
}

.contact_form__submit:hover {
  opacity: 0.8;
}

/* ---------------------------------------------------------
   Contact Form 7 が挿入する要素の調整。
   フォームの見た目はテーマ側のクラスで作り、ここでは
   プラグインが足す span / エラー表示 / 送信結果だけを整える。
   --------------------------------------------------------- */

/* 入力欄を包む span は inline のままだと width: 100% が効かない */
.wpcf7-form-control-wrap {
  display: block;
}

.contact_form__agree .wpcf7-list-item {
  margin: 0;
}

.contact_form__agree label {
  display: flex;
  align-items: center;
  cursor: pointer;
}

.contact_form__action {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 送信中のスピナーは常に幅を持つため、流し込みのままだとボタンの中央寄せがずれる */
.contact_form__action .wpcf7-spinner {
  position: absolute;
  top: 50%;
  right: 0;
  margin: 0;
  transform: translateY(-50%);
}

/* 入力エラー */
.contact_form__body .wpcf7-not-valid-tip {
  margin-top: 6px;
  font-size: 0.85em;
  color: #c0392b;
}

.contact_form__input.wpcf7-not-valid,
.contact_form__textarea.wpcf7-not-valid {
  border-color: #c0392b;
}

/* 送信結果のメッセージ。プラグイン側の指定より詳細度を上げて打ち消す */
.wpcf7 form.contact_form__body .wpcf7-response-output {
  padding: 1em;
  margin: 0;
  font-size: 0.9em;
  text-align: center;
  border-width: 1px;
}

/* =========================================================
   faq
   ========================================================= */
.faq {
  background-color: var(--color-tiny-gray);
}

.faq__tab {
  display: flex;
}

.faq__tab a {
  display: block;
  color: #616161;
  text-align: center;
  border-bottom: 1px solid #b2b2b2;
  transition: color 0.3s ease, border-bottom-color 0.3s ease;
}

.faq__tab a:hover {
  color: var(--color-black);
  border-bottom-color: #8c8c8c;
}

.faq__tab a.is-active {
  color: var(--color-black);
  border-bottom-color: var(--color-black);
}

/* 選択中のカテゴリのみ表示する */
.faq__panel {
  display: none;
}

.faq__panel.is-active {
  display: block;
}

.faq__category {
  font-weight: 600;
}

.faq-question {
  display: flex;
  align-items: center;
  cursor: pointer;
  background-color: var(--color-white);
}

.faq__mark {
  font-weight: 600;
}

.faq-question .faq__text {
  flex: 1;
  font-weight: 600;
}

.faq__icon {
  position: relative;
  flex-shrink: 0;
}

.faq__icon::before,
.faq__icon::after {
  position: absolute;
  top: 50%;
  left: 50%;
  content: "";
  background-color: var(--color-black);
  transform: translate(-50%, -50%);
}

.faq__icon::before {
  width: 100%;
  height: 1px;
}

.faq__icon::after {
  width: 1px;
  height: 100%;
  transition: transform 0.3s;
}

.faq-question.open .faq__icon::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.faq-answer {
  max-height: 0;
  overflow: hidden;
  background-color: var(--color-light-gray);
  /* 余白は内側の .faq-answer__inner が持つ。
     ここで padding をアニメーションさせると開いた瞬間の
     高さ計算に余白が含まれず、長文が切れるため。 */
  transition: max-height 0.3s ease;
}

.faq-answer__inner {
  display: flex;
  align-items: flex-start;
}

.faq-answer .faq__mark {
  color: #1a1a1a;
}

/* =========================================================
   legal (terms / privacypolicy / cancelpolicy)
   ========================================================= */
.legal {
  background-color: var(--color-tiny-gray);
}

.legal__title {
  font-weight: 600;
  /* 「第10条 月額プランの…繰越」のように、見出しの2行目に1文字だけ落ちるのを防ぐ */
  text-wrap: balance;
}

/* リセットで font: inherit にしているため、太字は明示的に指定する */
strong,
b {
  font-weight: 700;
}

.legal__date {
  text-align: right;
}

/* 箇条書き。折り返した行の頭を、番号や中点ではなく本文の頭に揃える */
.legal__list li {
  display: flex;
}

.legal__list_mark {
  flex: 0 0 auto;
}

/* 桁数が違っても本文の開始位置が揃うよう、マーカーの幅を固定する */
.legal__list--num .legal__list_mark {
  min-width: 1.9em;
}

.legal__list--dot .legal__list_mark {
  min-width: 1.2em;
}

/* =========================================================
   footer
   ========================================================= */
.footer {
  overflow: hidden;
  color: #fff;
  text-align: center;
  background-color: var(--color-kairos);
}

.footer__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.footer__sns {
  display: flex;
  justify-content: center;
}

.footer__info_name {
  font-weight: 600;
}

.footer__nav_list,
.footer__nav_policy {
  display: flex;
  justify-content: center;
}

.footer small {
  display: block;
}

/* フッターのリンクもホバーが分かるようにする */
.footer__logo a,
.footer__sns a {
  display: block;
  transition: opacity 0.3s ease;
}

.footer__logo a:hover,
.footer__sns a:hover {
  opacity: 0.6;
}

.footer__nav_list a,
.footer__nav_policy a {
  position: relative;
  display: inline-block;
  padding-bottom: 3px;
}

.footer__nav_list a::after,
.footer__nav_policy a::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  content: "";
  background-color: currentcolor;
  opacity: 0;
  transform: scaleX(0.3);
  transition: opacity 0.4s ease, transform 0.4s ease;
}

.footer__nav_list a:hover::after,
.footer__nav_policy a:hover::after {
  opacity: 1;
  transform: scaleX(1);
}

/* SPドロワー内のリンク */
.sp_nav__list a {
  transition: opacity 0.3s ease;
}

.sp_nav__list a:hover {
  opacity: 0.7;
}

/* アニメーションを抑制する設定の環境では動きを止める */
@media (prefers-reduced-motion: reduce) {
  .header__nav_list a::after,
  .footer__nav_list a::after,
  .footer__nav_policy a::after {
    transition: none;
  }

  .c-link:hover::after {
    animation: none;
  }
}

/* =========================================================
   説明テキストの統一
   本文・説明にあたるテキストは明朝 / #343434 / font-weight: 300 に揃える。
   見出し、リード（強調行）、CTAの一文は対象外。
   ========================================================= */
.top_intro__text,
.top_about__text,
.top_space__text,
.top_plan__text,
.top_limited__text,
.top_closing__text,
.concept_intro__text p,
.concept_philosophy__text,
.concept_closing__text,
.space_catch__text,
.space_rotation__text p,
.space_inbody__text,
.space_inbody__list_text,
.space_machine__text,
.space_amenity__text,
.trainer_message__text p,
.plan_intro__text,
.plan_included__text,
.plan_value__item_text,
.plan_value__quote_text,
.plan_flow__list_text,
.plan_price__desc,
.plan_price__annotation,
.plan_price__amount_note,
.contact_intro__text,
.contact_flow__list_text,
.contact_form__note,
.faq-answer .faq__text,
.legal__lead,
.legal__text,
.legal__list {
  font-family: var(--font-mincho);
  font-weight: 300;
  color: var(--color-black);
}

/* =========================================================
   animation
   FVは読み込み時にふわっとフェードイン。以降の要素はスクロールで下から現れる。
   is-loaded / data-reveal はJSが付けるため、JSが動かない環境ではそのまま表示される。
   ========================================================= */

/* FV（TOPのキービジュアル、下層ページの見出し）とヘッダー */
html.is-loaded .header,
html.is-loaded .top_kv,
html.is-loaded .page_header {
  animation: fade-in 1s ease-out both;
}

@keyframes fade-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

/* 「フェード＋少し下から」の1種類だけ。並んだ要素は --reveal-delay で少し遅らせる */
[data-reveal] {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
  transition-delay: var(--reveal-delay, 0s);
}

[data-reveal].is-inview {
  opacity: 1;
  transform: none;
}

/* アニメーションを抑制する設定の環境では動かさない */
@media (prefers-reduced-motion: reduce) {

  html.is-loaded .header,
  html.is-loaded .top_kv,
  html.is-loaded .page_header {
    animation: none;
  }

  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* =========================================================
   PC
   ========================================================= */

/* =========================================================
   PC : 900px 以上
   1440px のデザインを基準に vw 化。1440px 以上ではデザイン値で固定。
   ========================================================= */
@media screen and (min-width: 900px) {
  :root {
    --header-h: min(5.5556vw, 80px);
  }

  .pc_none {
    display: none !important;
  }

  /* header */
  .header__inner {
    height: var(--header-h);
    padding: 0 min(2.0833vw, 30px) 0 min(1.3889vw, 20px);
  }

  .header__logo img {
    width: min(12.8472vw, 185px);
    height: min(3.1944vw, 46px);
    object-fit: contain;
  }

  .header__nav {
    gap: min(2.4306vw, 35px);
  }

  .header__nav_list {
    gap: min(2.4306vw, 35px);
  }

  .header__nav_list a {
    padding-bottom: min(0.2778vw, 4px);
    font-size: min(0.9722vw, 14px);
    letter-spacing: 1px;
  }

  .header__reserve {
    height: min(3.0556vw, 44px);
    padding: 0 min(1.8056vw, 26px);
    font-size: min(1.3194vw, 19px);
    font-weight: 600;
    letter-spacing: 0.9px;
  }

  .c-float_cta {
    right: min(1.6667vw, 24px);
    bottom: min(1.6667vw, 24px);
    gap: min(0.8333vw, 12px);
    padding: min(1.0417vw, 15px) min(1.8056vw, 26px);
    font-size: min(1.1111vw, 16px);
    font-weight: 600;
    letter-spacing: 0.9px;
  }

  .c-float_cta__icon {
    width: min(1.5278vw, 22px);
    height: min(1.5278vw, 22px);
  }

  /* common */
  .c-btn {
    padding: min(0.8333vw, 12px) min(2.7778vw, 40px);
    font-size: min(1.6667vw, 24px);
    letter-spacing: 1.28px;
  }

  .c-link {
    font-size: min(1.3889vw, 20px);
    letter-spacing: 1px;
  }

  .c-heading_en {
    font-size: min(2.7778vw, 40px);
    letter-spacing: 1.86px;
  }

  .c-heading_en--left {
    font-size: min(2.7778vw, 40px);
    line-height: min(3.8194vw, 55px);
    letter-spacing: 0.5px;
  }

  .c-step {
    font-size: min(0.8333vw, 12px);
    letter-spacing: 0.48px;
  }

  .c-required {
    width: min(2.1528vw, 31px);
    height: min(1.1806vw, 17px);
    font-size: 10px;
    letter-spacing: 0.4px;
  }

  .page_header {
    height: min(22.9167vw, 330px);
    padding: min(8.3333vw, 120px) min(1.6667vw, 24px);
  }

  .page_header__inner {
    width: 100%;
    max-width: min(88.8889vw, 1280px);
    margin: 0 auto;
  }

  .page_header__ja {
    margin-bottom: min(0.5556vw, 8px);
    font-size: min(2.7778vw, 40px);
    letter-spacing: 1.6px;
  }

  .page_header__en {
    font-size: min(1.3889vw, 20px);
    letter-spacing: 0.8px;
  }

  /* front-page */
  .top_kv img {
    height: min(58.4722vw, 842px);
  }

  .top_intro {
    padding: min(6.6667vw, 96px) min(1.6667vw, 24px) min(7.2222vw, 104px);
  }

  .top_intro__title {
    margin-bottom: min(2.3611vw, 34px);
    font-size: min(2.5vw, 36px);
    font-weight: 600;
    letter-spacing: 0.5px;
  }

  .top_intro__text {
    margin-bottom: min(2.3611vw, 34px);
    font-size: min(1.1111vw, 16px);
    line-height: min(1.8958vw, 27.3px);
  }

  .top_about {
    padding: min(11.1111vw, 160px) min(5.2778vw, 76px) min(13.8889vw, 200px);
  }

  .top_about__inner {
    max-width: min(89.4444vw, 1288px);
    gap: min(6.3889vw, 92px);
    margin: 0 auto;
  }

  .top_about__img {
    flex: 0 1 min(50.4861vw, 727px);
  }

  .top_about__content {
    flex: 0 0 min(32.5694vw, 469px);
    padding-top: min(0.9722vw, 14px);
  }

  .top_about__title {
    margin-bottom: min(2vw, 28.8px);
    /* 35px だと2行目が1px溢れて「。」だけ3行目に落ちるため少しだけ下げる */
    font-size: min(2.3611vw, 34px);
    line-height: min(3.2083vw, 46.2px);
    letter-spacing: 1.12px;
  }

  .top_about__text {
    font-size: min(1.0764vw, 15.5px);
    line-height: min(1.8667vw, 26.88px);
  }

  .top_about__link {
    padding-top: min(5.6944vw, 82px);
    text-align: right;
  }

  .top_space {
    padding: min(8.3333vw, 120px) 0 min(6.25vw, 90px);
  }

  .top_space__lead {
    padding-top: min(4.2361vw, 61px);
    font-size: min(2.3611vw, 34px);
    font-weight: 600;
    letter-spacing: 1.3px;
  }

  .top_space__text {
    padding-top: min(2.1528vw, 31px);
    font-size: min(1.25vw, 18px);
    letter-spacing: 0.36px;
  }

  .top_space__slider {
    padding: min(11.1111vw, 160px) 0 min(5.5556vw, 80px);
  }

  .top_space__slider_track li {
    /* gap ではなく margin-right にすることで、半分ずらしたときに継ぎ目がずれない */
    width: min(27.7778vw, 400px);
    margin-right: min(1.25vw, 18px);
  }

  /* 奇数番目を下げ、偶数番目を上に置く */
  .top_space__slider_track li:nth-child(odd) {
    padding-top: min(4.8611vw, 70px);
  }

  .top_space__slider_track img {
    height: min(20.8333vw, 300px);
  }

  .top_limited {
    padding: min(5.5556vw, 80px) 0;
  }

  .top_limited__inner {
    max-width: min(89.4444vw, 1288px);
    gap: min(6.25vw, 90px);
    margin: 0 auto;
  }

  .top_limited__img {
    flex: 0 0 min(36.3194vw, 523px);
  }

  .top_limited__content {
    flex: 0 1 min(35.2083vw, 507px);
  }

  .top_limited__label {
    margin-bottom: min(1.5278vw, 22px);
    font-size: min(1.25vw, 18px);
    line-height: 1.5;
    letter-spacing: 3.6px;
  }

  .top_limited__title {
    margin-bottom: min(2.2222vw, 32px);
    font-size: min(2.3611vw, 34px);
    line-height: 1.8;
    letter-spacing: 1.36px;
  }

  .top_limited__line {
    margin-bottom: min(2.2222vw, 32px);
  }

  .top_limited__text {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .top_limited__link {
    padding-top: min(3.0556vw, 44px);
  }

  .top_plan {
    padding: min(11.1111vw, 160px) 0 min(15.4167vw, 222px);
  }

  .top_plan__lead {
    padding-top: min(3.6806vw, 53px);
    font-size: min(1.8056vw, 26px);
    letter-spacing: 0.8px;
  }

  .top_plan__head .c-heading_en {
    letter-spacing: min(0.3375vw, 4.86px);
  }

  .top_plan__text {
    padding-top: min(1.9444vw, 28px);
    font-size: min(1.1806vw, 17px);
    letter-spacing: 0.5px;
  }

  .top_plan__price {
    max-width: min(76.3889vw, 1100px);
    padding: 0;
    margin: 0 auto;
  }

  /* .top_plan__link {
    padding-top: min(5.7639vw, 83px);
  } */

  .top_map iframe {
    height: min(41.6667vw, 600px);
  }

  .top_access {
    padding: min(11.1111vw, 160px) min(1.6667vw, 24px) min(5.9722vw, 86px);
  }

  .top_access__name {
    margin-bottom: min(2.0833vw, 30px);
    font-size: min(1.8056vw, 26px);
    letter-spacing: 1.68px;
  }

  .top_access__address {
    margin-bottom: min(2.0833vw, 30px);
    font-size: min(1.1111vw, 16px);
    line-height: min(1.7799vw, 25.63px);
  }

  .top_access__route {
    font-size: min(1.1111vw, 16px);
    line-height: min(1.7799vw, 25.63px);
  }

  .top_access__link {
    padding-top: min(2.7778vw, 40px);
  }

  .top_closing {
    padding: min(6.9444vw, 100px) min(4.1667vw, 60px);
  }

  .top_closing__inner {
    max-width: min(87.6389vw, 1262px);
    gap: min(10.4861vw, 151px);
    padding-right: min(4.1667vw, 60px);
    margin: 0 auto;
  }

  .top_closing__img {
    flex: 0 1 min(36.8056vw, 530px);
  }

  .top_closing__content {
    flex: 0 0 min(31.3889vw, 452px);
  }

  .top_closing__title {
    margin-bottom: min(2.1458vw, 30.9px);
    font-size: min(2.7778vw, 40px);
    line-height: min(3.8194vw, 55px);
    letter-spacing: 0.5px;
  }

  .top_closing__text {
    font-size: min(1.1111vw, 16px);
    line-height: min(1.8667vw, 26.88px);
  }

  .top_closing__link {
    padding-top: min(3.2708vw, 47.1px);
    text-align: right;
  }

  /* concept */
  .concept_kv img {
    height: min(48.6111vw, 700px);
  }

  .concept_intro {
    padding: min(10.7639vw, 155px) min(3.5417vw, 51px) min(9.7222vw, 140px);
  }

  .concept_intro__title {
    margin-bottom: min(4.1667vw, 60px);
    font-size: min(2.5vw, 36px);
    line-height: 1.8;
  }

  .concept_intro__text p {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .concept_intro__text p + p {
    margin-top: min(1.9444vw, 28px);
  }

  .concept_philosophy,
  .concept_foryou {
    padding: min(6.9444vw, 100px) min(4.1667vw, 60px);
  }

  /* 2つのセクションで外形が揃うよう、片側の padding をやめて
     テキスト＋gap＋画像の実寸を max-width にして中央寄せする */
  .concept_philosophy__inner,
  .concept_foryou__inner {
    max-width: min(71.6667vw, 1032px);
    gap: min(3.4722vw, 50px);
    margin: 0 auto;
  }

  .concept_philosophy__content,
  .concept_foryou__content {
    flex: 0 0 min(31.3889vw, 452px);
  }

  .concept_philosophy__img,
  .concept_foryou__img {
    flex: 0 1 min(36.8056vw, 530px);
  }

  .concept_philosophy__lead {
    margin: min(2.1458vw, 30.9px) 0;
    font-size: min(1.6667vw, 24px);
    font-weight: 600;
    line-height: 1.8;
  }

  .concept_philosophy__text {
    /* 16px では2行目が452pxの枠に収まらず1文字だけ落ちるため下げる */
    font-size: min(1.0417vw, 15px);
    line-height: min(1.8667vw, 26.88px);
  }

  .concept_foryou__list {
    margin-top: min(2.1458vw, 30.9px);
  }

  .concept_foryou__list li {
    font-size: min(1.1111vw, 16px);
    font-weight: 600;
    line-height: 1.8;
    letter-spacing: 0.64px;
    color: #373737;
  }

  .concept_foryou__list li + li {
    margin-top: min(1.0417vw, 15px);
  }

  .concept_foryou__link {
    padding-top: min(3.6111vw, 52px);
  }

  .concept_closing {
    padding: min(12.1528vw, 175px) min(1.6667vw, 24px) min(11.1111vw, 160px);
  }

  .concept_closing__text {
    margin-bottom: min(5.2083vw, 75px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  /* space */
  .space_kv img {
    height: min(48.6111vw, 700px);
  }

  .space_catch {
    padding: min(6.9444vw, 100px) min(3.4722vw, 50px);
  }

  .space_catch__text {
    font-size: min(2.5vw, 36px);
  }

  .space_private {
    padding: min(6.9444vw, 100px) min(4.1667vw, 60px);
  }

  .space_private__inner {
    max-width: min(87.6389vw, 1262px);
    gap: min(4.1667vw, 60px);
    padding-left: min(4.1667vw, 60px);
    margin: 0 auto;
  }

  .space_private__content {
    flex: 0 0 min(31.3889vw, 452px);
  }

  .space_private__img {
    flex: 0 1 min(36.8056vw, 530px);
  }

  .space_private__lead {
    margin-top: min(2.1458vw, 30.9px);
    /* 24px では452pxの枠に収まらず「う。」だけ2行目に落ちるため下げる */
    font-size: min(1.5278vw, 22px);
    font-weight: 600;
    line-height: 1.8;
  }

  .space_rotation {
    padding: min(10.7639vw, 155px) min(3.5417vw, 51px) min(9.7222vw, 140px);
  }

  .space_rotation__title {
    margin-bottom: min(4.1667vw, 60px);
    font-size: min(2.5vw, 36px);
    font-weight: 600;
    line-height: 1.8;
  }

  .space_rotation__text {
    margin-bottom: min(4.1667vw, 60px);
  }

  .space_rotation__text p {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .space_rotation__text p + p {
    margin-top: min(1.9444vw, 28px);
  }

  .space_inbody {
    padding: min(7.6389vw, 110px) min(3.5417vw, 51px) min(8.3333vw, 120px);
  }

  .space_inbody__inner {
    max-width: min(92.9167vw, 1338px);
    gap: min(6.25vw, 90px);
    margin: 0 auto;
  }

  .space_inbody__img {
    flex: 0 0 min(32.6389vw, 470px);
  }

  .space_inbody__content {
    flex: 0 1 min(39.9306vw, 575px);
  }

  .space_inbody__title {
    margin-bottom: min(2.4306vw, 35px);
    font-size: min(2.7778vw, 40px);
    line-height: min(4.1667vw, 60px);
    letter-spacing: 1.3px;
  }

  .space_inbody__text {
    font-size: min(1.1111vw, 16px);
    line-height: min(2.2222vw, 32px);
  }

  .space_inbody__text + .space_inbody__text {
    margin-top: min(2.4306vw, 35px);
  }

  .space_inbody__list {
    max-width: min(77.4306vw, 1115px);
    gap: min(2.0833vw, 30px);
    margin: min(3.8889vw, 56px) auto 0;
  }

  .space_inbody__list li {
    flex: 0 0 min(24.5139vw, 353px);
    padding: min(2.0833vw, 30px) min(1.9444vw, 28px) min(2.5vw, 36px);
  }

  .space_inbody__list_title {
    padding: min(0.6944vw, 10px) 0;
    font-size: min(1.3889vw, 20px);
    letter-spacing: 0.78px;
  }

  .space_inbody__list_text {
    font-size: min(0.9722vw, 14px);
    line-height: min(1.5833vw, 22.8px);
  }

  .space_machine {
    padding: min(11.1111vw, 160px) 0;
  }

  .space_machine__title {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(2.7778vw, 40px);
    letter-spacing: 1.86px;
  }

  .space_machine__text {
    font-size: min(1.25vw, 18px);
    letter-spacing: 0.36px;
  }

  .space_machine__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: min(2.0833vw, 30px);
    max-width: min(86.5972vw, 1247px);
    margin: min(6.9444vw, 100px) auto 0;
  }

  .space_machine__list p {
    margin-top: min(1.1111vw, 16px);
    font-size: min(1.25vw, 18px);
    font-weight: 600;
    letter-spacing: 0.36px;
  }

  .space_amenity {
    padding: min(10.7639vw, 155px) min(3.5417vw, 51px) min(9.7222vw, 140px);
  }

  .space_amenity__title {
    margin-bottom: min(4.1667vw, 60px);
    font-size: min(2.5vw, 36px);
  }

  .space_amenity__text {
    margin-bottom: min(4.1667vw, 60px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .space_amenity__list {
    max-width: min(77.4306vw, 1115px);
    gap: min(2.0833vw, 30px);
    margin: min(4.1667vw, 60px) auto 0;
  }

  .space_amenity__list li {
    flex: 0 0 min(24.5139vw, 353px);
    padding: min(2.0833vw, 30px) min(1.9444vw, 28px);
    font-size: min(1.1111vw, 16px);
    font-weight: 600;
    line-height: min(1.5833vw, 22.8px);
  }

  /* trainer */
  .trainer_profile {
    padding: min(10.7639vw, 155px) min(3.5417vw, 51px) min(9.7222vw, 140px);
  }

  /* 画像＋gap＋テキストの実寸を max-width にして中央寄せする
     （画像が大きすぎて左に重心が寄っていたため画像を縮小） */
  .trainer_profile__inner {
    max-width: min(80.5556vw, 1160px);
    gap: min(5.5556vw, 80px);
    margin: 0 auto;
  }

  .trainer_profile__img {
    flex: 0 0 min(38.8889vw, 560px);
  }

  .trainer_profile__content {
    flex: 0 1 min(36.1111vw, 520px);
    padding-top: min(0.4167vw, 6px);
  }

  .trainer_profile__name_en {
    margin-bottom: min(0.9722vw, 14px);
    font-size: min(2.6389vw, 38px);
    letter-spacing: 1.92px;
  }

  .trainer_profile__name_ja {
    font-size: min(0.9722vw, 14px);
    font-weight: 600;
    letter-spacing: 1px;
  }

  .trainer_profile__subtitle {
    margin: min(3.125vw, 45px) 0 min(1.5278vw, 22px);
    font-size: min(1.3889vw, 20px);
    letter-spacing: 0.8px;
  }

  .trainer_profile__list li {
    font-size: min(0.9722vw, 14px);
    font-weight: 600;
    line-height: min(1.7604vw, 25.35px);
  }

  .trainer_message {
    padding: min(10vw, 144px) min(1.6667vw, 24px) min(11.1111vw, 160px);
  }

  .trainer_message__title {
    margin-bottom: min(4.7222vw, 68px);
    font-size: min(2.5vw, 36px);
    letter-spacing: 1.68px;
  }

  .trainer_message__lead {
    margin-bottom: min(4.0278vw, 58px);
    font-size: min(1.6667vw, 24px);
    letter-spacing: 0.95px;
  }

  .trainer_message__text {
    margin-bottom: min(5.5556vw, 80px);
  }

  .trainer_message__text p {
    font-size: min(1.1111vw, 16px);
    line-height: min(1.8667vw, 26.88px);
  }

  .trainer_message__text p + p {
    margin-top: min(2.0833vw, 30px);
  }

  /* plan */
  .plan_intro__inner {
    max-width: min(61.1111vw, 880px);
    padding: min(11.1111vw, 160px) min(1.6667vw, 24px) 0;
    margin: 0 auto;
  }

  .plan_intro__title {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(2.5vw, 36px);
    line-height: 1.5;
    letter-spacing: 1.44px;
  }

  .plan_intro__text {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .plan_price {
    max-width: min(61.1111vw, 880px);
    padding: 0 min(1.6667vw, 24px) min(8.3333vw, 120px);
    margin: min(6.25vw, 90px) auto 0;
  }

  .plan_price__head {
    margin-bottom: min(1.6667vw, 24px);
  }

  .plan_price__head--gap {
    margin-top: min(5vw, 72px);
  }

  .plan_price__head_en {
    margin-bottom: min(0.5556vw, 8px);
    font-size: min(1.3889vw, 20px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  .plan_price__head_ja {
    font-size: min(0.9722vw, 14px);
    line-height: 1.5;
    letter-spacing: 0.56px;
  }

  .plan_price__row {
    gap: min(2.5vw, 36px);
    padding: min(2.5vw, 36px) min(1.6667vw, 24px);
  }

  /* 「食事指導」（4文字）まで収まる幅で全行固定する */
  .plan_price__count {
    flex: 0 0 min(7.6389vw, 110px);
    font-size: min(1.6667vw, 24px);
    letter-spacing: 0.96px;
  }

  .plan_price__desc {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  /* 「その他」はサービス名が長いため、この表だけ見出し幅を広げる */
  .plan_price__list--other .plan_price__count {
    flex-basis: min(13.8889vw, 200px);
  }

  .plan_price__amount {
    /* 「税込／有効期限8ヶ月」が1行に収まる幅（必要139px）を確保する */
    flex: 0 0 min(10.4167vw, 150px);
  }

  .plan_price__annotation {
    margin-top: min(1.6667vw, 24px);
    font-size: 12px;
    line-height: 1.5;
    letter-spacing: 0.4px;
  }

  .plan_price__amount_num {
    margin-bottom: min(0.5556vw, 8px);
    font-size: min(2.2222vw, 32px);
    letter-spacing: 1.28px;
  }

  .plan_price__amount_note {
    font-size: min(0.9722vw, 14px);
    letter-spacing: 0.56px;
  }

  .plan_price__link {
    margin-top: min(5.5556vw, 80px);
  }

  /* .plan_price が後から効くため、TOP側のリード下の余白は詳細度を上げる */
  .plan_price.top_plan__price {
    margin-top: min(7.6389vw, 110px);
  }

  .plan_included__inner,
  .plan_value__inner,
  .plan_flow__inner {
    max-width: min(61.1111vw, 880px);
    padding: min(8.3333vw, 120px) min(1.6667vw, 24px);
    margin: 0 auto;
  }

  .plan_included__label {
    margin-bottom: min(1.0417vw, 15px);
    font-size: min(1.3889vw, 20px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  .plan_included__title {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(1.9444vw, 28px);
    line-height: 1.5;
    letter-spacing: 1.12px;
  }

  .plan_included__text {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .plan_included__list {
    grid-template-columns: repeat(4, 1fr);
    /* 横幅はこれ以上取れないため、縦方向のgapだけ広げて窮屈さを解消する */
    column-gap: min(1.1111vw, 16px);
    row-gap: min(2.2222vw, 32px);
  }

  .plan_included__list li {
    padding-bottom: min(0.3472vw, 5px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.5;
    letter-spacing: 0.64px;
  }

  .plan_value__title,
  .plan_flow__title {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(1.9444vw, 28px);
    line-height: 1.5;
    letter-spacing: 1.12px;
  }

  .plan_value__list {
    justify-content: space-between;
    gap: min(1.1111vw, 16px);
  }

  .plan_value__item {
    flex: 0 0 min(27.7778vw, 400px);
    padding: min(0.9722vw, 14px) 0;
  }

  .plan_value__item_label {
    margin-bottom: min(0.8333vw, 12px);
    font-size: 12px;
    line-height: 1.5;
    letter-spacing: 2.4px;
  }

  .plan_value__item_title {
    margin-bottom: min(1.3889vw, 20px);
    /* 改行位置（<br>）を保ったまま収まる上限は28.1px */
    font-size: min(1.5278vw, 22px);
    line-height: 1.8;
    letter-spacing: 0.72px;
  }

  .plan_value__item_line {
    margin-bottom: min(1.3889vw, 20px);
  }

  .plan_value__item_text {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.44px;
  }

  .plan_value__quote {
    padding: min(2.7778vw, 40px);
    margin-top: min(2.7778vw, 40px);
  }

  .plan_value__quote_title {
    margin-bottom: min(1.6667vw, 24px);
    font-size: min(1.3889vw, 20px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  .plan_value__quote_text {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .plan_flow__cta {
    padding: min(2.7778vw, 40px);
    margin-bottom: min(2.7778vw, 40px);
  }

  .plan_flow__cta_text {
    margin-bottom: min(1.6667vw, 24px);
    font-size: min(1.3889vw, 20px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  /* 右へ流れる導線を表す矢印（シェブロン）形。
     右端を尖らせ、左端に同じ形の切り欠きを作って隣同士を噛み合わせる。 */
  .plan_flow__list li {
    --chevron: min(1.1806vw, 17px);
    --seam: 3px;

    flex: 1;
    /* 横のpaddingを厚めに取って余白を作る（その分、縦は伸びる） */
    padding: min(2.0833vw, 30px) min(2.4306vw, 35px);
    clip-path: polygon(
      0 0,
      calc(100% - var(--chevron)) 0,
      100% 50%,
      calc(100% - var(--chevron)) 100%,
      0 100%,
      var(--chevron) 50%
    );

    /* 切り欠きの分だけ左に寄せて噛み合わせ、seam の分だけ細い隙間を残す */
    margin-left: calc(var(--seam) - var(--chevron));
  }

  /* 左端は切り欠きなし、右端は尖らせない */
  .plan_flow__list li:first-child {
    margin-left: 0;
    clip-path: polygon(
      0 0,
      calc(100% - var(--chevron)) 0,
      100% 50%,
      calc(100% - var(--chevron)) 100%,
      0 100%
    );
  }

  .plan_flow__list li:last-child {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, var(--chevron) 50%);
  }

  .plan_flow__list_title {
    /* 見出しが2行になるSTEPがあるため、2行分の高さを確保して
       4つの説明文の開始位置を揃える */
    min-height: 3em;
    margin: min(0.5556vw, 8px) 0 min(1.6667vw, 24px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.5;
    letter-spacing: 0.64px;
  }

  .plan_flow__list_text {
    font-size: min(0.8333vw, 12px);
    line-height: 1.7;
    letter-spacing: 0.56px;
  }

  .plan_flow__link {
    margin-top: min(2.7778vw, 40px);
  }

  /* contact */
  /* flowセクション（コンテンツ幅900px）に合わせて全セクションの幅を統一する */
  .contact_intro__inner {
    max-width: min(65.8333vw, 948px);
    padding: min(6.9444vw, 100px) min(1.6667vw, 24px);
    margin: 0 auto;
  }

  .contact_intro__text {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(1.0417vw, 15px);
    line-height: 1.9;
  }

  .contact_intro__cta {
    padding: min(2.0833vw, 30px);
  }

  .contact_intro__cta_text {
    margin-bottom: min(1.3889vw, 20px);
    font-size: min(1.1111vw, 16px);
    font-weight: 600;
  }

  .contact_intro__cta .c-btn {
    font-size: min(1.25vw, 18px);
  }

  .contact_flow {
    padding: 0 min(1.6667vw, 24px) min(6.9444vw, 100px);
  }

  .contact_flow__title {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(1.9444vw, 28px);
    letter-spacing: 2px;
  }

  .contact_flow__list {
    max-width: min(62.5vw, 900px);
    margin: 0 auto;
  }

  /* planページの「体験トレーニングの流れ」と同じ矢印（シェブロン）形。
     3カラムなのでボックスが広く取れ、その分縦は短くなる。 */
  .contact_flow__list li {
    --chevron: min(1.1806vw, 17px);
    --seam: 3px;

    flex: 1;
    /* 横のpaddingを厚めに取って余白を作る（その分、縦は伸びる） */
    padding: min(3.4722vw, 50px) min(3.1944vw, 46px);
    clip-path: polygon(
      0 0,
      calc(100% - var(--chevron)) 0,
      100% 50%,
      calc(100% - var(--chevron)) 100%,
      0 100%,
      var(--chevron) 50%
    );
    margin-left: calc(var(--seam) - var(--chevron));
  }

  .contact_flow__list li:first-child {
    margin-left: 0;
    clip-path: polygon(
      0 0,
      calc(100% - var(--chevron)) 0,
      100% 50%,
      calc(100% - var(--chevron)) 100%,
      0 100%
    );
  }

  .contact_flow__list li:last-child {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, var(--chevron) 50%);
  }

  .contact_flow__list_title {
    margin: min(0.5556vw, 8px) 0 min(1.6667vw, 24px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.5;
    letter-spacing: 0.64px;
  }

  /* カラム幅に対して <br> の位置だと文字が溢れるため、自然折り返しにする */
  .contact_flow__list_text br {
    display: none;
  }

  .contact_flow__list_text {
    font-size: min(0.8333vw, 12px);
    line-height: 1.7;
    letter-spacing: 0.56px;
  }

  .contact_form__inner {
    max-width: min(65.8333vw, 948px);
    padding: min(5.5556vw, 80px) min(1.6667vw, 24px) min(6.9444vw, 100px);
    margin: 0 auto;
  }

  .contact_form__title {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(1.8056vw, 26px);
    letter-spacing: 2px;
  }

  .contact_form__body {
    gap: min(1.3889vw, 20px);
  }

  .contact_form__row {
    gap: min(1.3889vw, 20px);
  }

  .contact_form__label {
    margin-bottom: min(0.5556vw, 8px);
    font-size: min(0.9722vw, 14px);
  }

  .contact_form__input,
  .contact_form__textarea {
    padding: min(0.8333vw, 12px);
    font-size: min(0.9722vw, 14px);
  }

  .contact_form__note {
    margin-top: min(0.4167vw, 6px);
    font-size: min(0.8333vw, 12px);
  }

  .contact_form__agree {
    font-size: min(0.9028vw, 13px);
  }

  .contact_form__submit {
    padding: min(0.9722vw, 14px) min(4.1667vw, 60px);
    font-size: min(1.1111vw, 16px);
    letter-spacing: 2px;
  }

  /* faq */
  .faq__inner {
    max-width: min(69.4444vw, 1000px);
    padding: min(11.8056vw, 170px) min(1.6667vw, 24px) min(11.1111vw, 160px);
    margin: 0 auto;
  }

  .faq__tab {
    gap: min(1.6667vw, 24px);
    margin-bottom: min(3.0556vw, 44px);
  }

  .faq__tab li {
    flex: 1;
  }

  .faq__tab a {
    padding: min(0.8333vw, 12px) min(1.1111vw, 16px);
    font-size: min(1.1111vw, 16px);
    font-weight: 600;
    letter-spacing: 0.5px;
  }

  .faq__category {
    margin-bottom: min(2.7778vw, 40px);
    font-size: min(2.0833vw, 30px);
    letter-spacing: 1.2px;
  }

  .faq__item + .faq__item {
    margin-top: min(2.7778vw, 40px);
  }

  .faq-question {
    gap: min(1.3889vw, 20px);
    padding: min(1.5278vw, 22px) min(2.3611vw, 34px);
  }

  .faq-question .faq__mark {
    width: min(3.0556vw, 44px);
    font-size: min(1.6667vw, 24px);
  }

  .faq-question .faq__text {
    font-size: min(1.25vw, 18px);
    letter-spacing: 0.42px;
  }

  .faq__icon {
    width: min(1.6667vw, 24px);
    height: min(1.6667vw, 24px);
  }

  .faq-answer__inner {
    /* 上下の余白はQと同じ値に揃える */
    gap: min(1.3889vw, 20px);
    padding: min(1.5278vw, 22px) min(2.3611vw, 34px);
  }

  .faq-answer .faq__mark {
    width: min(3.0556vw, 44px);
    font-size: min(1.6667vw, 24px);
  }

  .faq-answer .faq__text {
    flex: 1;
    font-size: min(1.1111vw, 16px);
    line-height: min(1.8056vw, 26px);
  }

  /* legal */
  .legal__inner {
    max-width: min(61.1111vw, 880px);
    padding: min(10.7639vw, 155px) min(1.6667vw, 24px);
    margin: 0 auto;
  }

  .legal__lead {
    margin-bottom: min(2.0833vw, 30px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .legal__block + .legal__block {
    margin-top: min(2.0833vw, 30px);
  }

  .legal__title {
    margin-bottom: min(0.6944vw, 10px);
    font-size: min(1.3889vw, 20px);
    line-height: 1.8;
    letter-spacing: 0.8px;
  }

  .legal__text,
  .legal__list {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
  }

  .legal__text + .legal__text,
  .legal__text + .legal__list,
  .legal__list + .legal__text {
    margin-top: min(1.1111vw, 16px);
  }

  .legal__date {
    margin-top: min(2.0833vw, 30px);
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
  }

  /* footer */
  .footer {
    padding: min(8.3333vw, 120px) min(1.6667vw, 24px) min(2.7778vw, 40px);
  }

  .footer__inner {
    gap: min(4.1667vw, 60px);
  }

  .footer__logo img {
    width: min(22.2222vw, 320px);
    height: min(5.625vw, 81px);
    object-fit: contain;
  }

  .footer__sns {
    gap: min(1.1111vw, 16px);
  }

  .footer__sns img {
    width: min(2.2222vw, 32px);
    height: min(2.2222vw, 32px);
  }

  .footer__info {
    width: min(22.7083vw, 327px);
  }

  .footer__info_name {
    margin-bottom: min(2.0833vw, 30px);
    font-size: min(1.6667vw, 24px);
    letter-spacing: 0.96px;
  }

  .footer__info_address {
    font-size: min(1.1111vw, 16px);
    line-height: 1.8;
    letter-spacing: 0.64px;
  }

  .footer__nav {
    /* 7項目＋gapで564px必要なため、518pxでは項目が枠からはみ出していた */
    width: min(39.1667vw, 564px);
    padding-bottom: min(3.8194vw, 55px);
  }

  .footer__nav_list,
  .footer__nav_policy {
    gap: min(2.2222vw, 32px);
    height: min(3.3333vw, 48px);
    align-items: center;
    font-size: min(0.9722vw, 14px);
    letter-spacing: 0.56px;
  }

  .footer small {
    margin-top: min(4.1667vw, 60px);
    font-size: min(0.9722vw, 14px);
    letter-spacing: 0.56px;
  }
}

/* =========================================================
   SP / TABLET : 899px 以下
   390px のデザインを基準に vw 化。（600px 相当で拡大停止）
   ========================================================= */
@media screen and (max-width: 899px) {
  :root {
    --header-h: min(16.4103vw, 98.4615px);
  }

  .sp_none {
    display: none !important;
  }

  /* header */
  .header__inner {
    height: var(--header-h);
    padding: 0 min(4.1026vw, 24.6154px);
  }

  .header__logo img {
    width: min(30.7692vw, 184.6154px);
    height: min(7.6923vw, 46.1538px);
    object-fit: contain;
  }

  .sp_nav {
    padding: min(11.5385vw, 69.2308px) min(9.4872vw, 56.9231px) min(16.4103vw, 98.4615px);
  }

  .sp_nav__list a {
    padding: min(2.5641vw, 15.3846px);
  }

  .sp_nav__num {
    margin-right: min(3.8462vw, 23.0769px);
    font-size: min(2.0513vw, 12.3077px);
    letter-spacing: 0.32px;
  }

  .sp_nav__en {
    font-size: min(3.5897vw, 21.5385px);
    font-weight: 600;
    letter-spacing: 0.56px;
  }

  .sp_nav__ja {
    font-size: min(2.0513vw, 12.3077px);
    letter-spacing: 0.32px;
  }

  .sp_nav__reserve {
    width: min(79.4872vw, 476.9231px);
    padding: min(4.1026vw, 24.6154px);
    margin: min(10.2564vw, 61.5385px) auto 0;
    font-size: min(4.1026vw, 24.6154px);
    font-weight: 600;
    letter-spacing: 0.64px;
  }

  /* common */
  .c-btn {
    width: 100%;
    max-width: min(79.4872vw, 476.9231px);
    padding: min(4.1026vw, 24.6154px);
    font-size: min(4.1026vw, 24.6154px);
    font-weight: 600;
    letter-spacing: 0.64px;
    background-color: var(--color-black);
  }

  .c-link {
    font-size: min(4.1026vw, 24.6154px);
    font-weight: 600;
    letter-spacing: 0.64px;
  }

  .c-heading_en,
  .c-heading_en--left {
    font-size: min(5.1282vw, 30.7692px);
    letter-spacing: 0.5px;
  }

  .c-step {
    font-size: min(3.0769vw, 18.4615px);
    letter-spacing: 0.48px;
  }

  .c-required {
    width: min(7.9487vw, 47.6923px);
    height: min(4.359vw, 26.1538px);
    font-size: min(2.5641vw, 15.3846px);
    letter-spacing: 0.4px;
  }

  .page_header {
    height: min(52.3077vw, 313.8462px);
    padding: min(10.2564vw, 61.5385px) min(4.1026vw, 24.6154px);
  }

  .page_header__ja {
    margin-bottom: min(2.0513vw, 12.3077px);
    font-size: min(6.1538vw, 36.9231px);
    letter-spacing: 0.96px;
  }

  .page_header__en {
    font-size: min(4.1026vw, 24.6154px);
    letter-spacing: 0.64px;
  }

  /* front-page */
  .top_kv img {
    height: min(179.4872vw, 1076.9231px);
  }

  .top_intro {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .top_intro__title {
    margin-bottom: min(4.1026vw, 24.6154px);
    font-size: min(5.1282vw, 30.7692px);
    font-weight: 600;
    letter-spacing: 0.5px;
  }

  .top_intro__text {
    margin-bottom: min(10.2564vw, 61.5385px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .top_about {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  /* 縦積み時は各ブロックを幅いっぱいに。
     さらに content の子を inner の直接itemに出して、
     「コンセプトについて」だけを画像の下・中央に置く。 */
  .top_about__inner {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }

  .top_about__content {
    display: contents;
  }

  .top_about__title {
    order: 1;
  }

  .top_about__text {
    order: 2;
  }

  .top_about__img {
    order: 3;
    margin-top: min(10.2564vw, 61.5385px);
  }

  .top_about__link {
    order: 4;
  }

  .top_about__title {
    margin-bottom: min(4.1026vw, 24.6154px);
    font-size: min(5.1282vw, 30.7692px);
    line-height: 1.5;
    letter-spacing: 0.5px;
  }

  .top_about__text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .top_about__link {
    margin-top: min(10.2564vw, 61.5385px);
    text-align: center;
  }

  .top_space {
    padding: min(16.4103vw, 98.4615px) 0;
  }

  .top_space__head {
    padding: 0 min(4.1026vw, 24.6154px);
  }

  .top_space__lead {
    padding-top: min(4.1026vw, 24.6154px);
    font-size: min(3.8462vw, 23.0769px);
    font-weight: 600;
    letter-spacing: 0.6px;
  }

  .top_space__text {
    padding-top: min(4.1026vw, 24.6154px);
    font-size: min(3.0769vw, 18.4615px);
    letter-spacing: 0.48px;
  }

  .top_space__slider {
    padding: min(10.2564vw, 61.5385px) 0 min(14.359vw, 86.1538px);
  }

  .top_space__slider_track li {
    width: min(82.0513vw, 492.3077px);
    margin-right: min(2.0513vw, 12.3077px);
  }

  .top_space__slider_track li:nth-child(odd) {
    padding-top: min(10.2564vw, 61.5385px);
  }

  .top_space__slider_track img {
    height: min(61.5385vw, 369.2308px);
  }

  .top_space__link {
    padding: 0 min(4.1026vw, 24.6154px);
  }

  .top_limited {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .top_limited__inner {
    flex-direction: column;
    gap: min(10.2564vw, 61.5385px);
  }

  .top_limited__img,
  .top_limited__content {
    flex: 1 1 auto;
    width: 100%;
  }

  .top_limited__label {
    margin-bottom: min(3.5897vw, 21.5385px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.5;
    letter-spacing: 2.4px;
  }

  .top_limited__title {
    margin-bottom: min(5.1282vw, 30.7692px);
    font-size: min(5.1282vw, 30.7692px);
    line-height: 1.8;
    letter-spacing: 0.72px;
  }

  .top_limited__line {
    margin-bottom: min(5.1282vw, 30.7692px);
  }

  .top_limited__text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .top_limited__link {
    margin-top: min(8.2051vw, 49.2308px);
  }

  .top_plan {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .top_plan__lead {
    padding-top: min(4.1026vw, 24.6154px);
    font-size: min(3.8462vw, 23.0769px);
    font-weight: 600;
    letter-spacing: 0.6px;
  }

  .top_plan__text {
    padding-top: min(4.1026vw, 24.6154px);
    font-size: min(3.0769vw, 18.4615px);
    letter-spacing: 0.48px;
  }

  .top_plan__price {
    padding: 0;
    margin-top: min(7.6923vw, 46.1538px);
  }

  .top_plan__link {
    padding-top: min(7.6923vw, 46.1538px);
  }

  .top_map iframe {
    height: min(68.4615vw, 410.7692px);
  }

  .top_access {
    padding: min(20.5128vw, 123.0769px) min(4.1026vw, 24.6154px) min(16.4103vw, 98.4615px);
  }

  .top_access__name {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.1282vw, 30.7692px);
    letter-spacing: 1.68px;
  }

  .top_access__address {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: min(5.1282vw, 30.7692px);
  }

  .top_access__route {
    font-size: min(3.0769vw, 18.4615px);
    line-height: min(5.1282vw, 30.7692px);
  }

  .top_access__link {
    padding-top: min(5.1282vw, 30.7692px);
  }

  .top_closing {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .top_closing__inner {
    flex-direction: column;
    gap: min(10.2564vw, 61.5385px);
  }

  .top_closing__title {
    margin-bottom: min(4.1026vw, 24.6154px);
    font-size: min(5.1282vw, 30.7692px);
    line-height: 1.5;
    letter-spacing: 0.5px;
  }

  .top_closing__text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .top_closing__link {
    margin-top: min(6.1538vw, 36.9231px);
    text-align: center;
  }

  /* concept */
  .concept_kv img {
    height: min(82.0513vw, 492.3077px);
  }

  .concept_intro {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .concept_intro__title {
    margin-bottom: min(10.2564vw, 61.5385px);
    font-size: min(5.1282vw, 30.7692px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  .concept_intro__text p {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .concept_intro__text p + p {
    margin-top: min(6.1538vw, 36.9231px);
  }

  .concept_philosophy,
  .concept_foryou {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  /* 縦積み時は各ブロックを幅いっぱいに（shrink-to-fitで中途半端に
     中央寄せされるのを防ぐ） */
  .concept_philosophy__inner,
  .concept_foryou__inner {
    flex-direction: column;
    align-items: stretch;
    gap: min(10.2564vw, 61.5385px);
  }

  /* FOR YOU は「空間と設備を見る」だけを画像の下・中央に置く */
  .concept_foryou__inner {
    gap: 0;
  }

  .concept_foryou__content {
    display: contents;
  }

  .concept_foryou__content h2 {
    order: 1;
  }

  .concept_foryou__list {
    order: 2;
  }

  .concept_foryou__img {
    order: 3;
    margin-top: min(10.2564vw, 61.5385px);
  }

  .concept_foryou__link {
    order: 4;
  }

  .concept_philosophy__lead {
    margin: min(4.1026vw, 24.6154px) 0;
    font-size: min(3.5897vw, 21.5385px);
    font-weight: 600;
    line-height: 1.8;
  }

  .concept_philosophy__text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .concept_foryou__list {
    margin-top: min(4.1026vw, 24.6154px);
  }

  .concept_foryou__list li {
    font-size: min(3.0769vw, 18.4615px);
    font-weight: 600;
    line-height: 1.8;
    letter-spacing: 0.48px;
    color: #373737;
  }

  .concept_foryou__list li + li {
    margin-top: min(1.0256vw, 6.1538px);
  }

  .concept_foryou__link {
    margin-top: min(10.2564vw, 61.5385px);
    text-align: center;
  }

  .concept_closing {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .concept_closing__text {
    margin-bottom: min(10.2564vw, 61.5385px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  /* space */
  .space_kv img {
    height: min(82.0513vw, 492.3077px);
  }

  .space_catch {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .space_catch__text {
    font-size: min(5.1282vw, 30.7692px);
  }

  .space_private {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .space_private__inner {
    flex-direction: column;
    gap: min(10.2564vw, 61.5385px);
  }

  .space_private__lead {
    margin-top: min(4.1026vw, 24.6154px);
    font-size: min(3.5897vw, 21.5385px);
    font-weight: 600;
    line-height: 1.8;
  }

  .space_rotation {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .space_rotation__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.1282vw, 30.7692px);
    font-weight: 600;
    line-height: 1.5;
  }

  .space_rotation__text {
    margin-bottom: min(10.2564vw, 61.5385px);
  }

  .space_rotation__text p {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .space_rotation__text p + p {
    margin-top: min(6.1538vw, 36.9231px);
  }

  .space_inbody {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .space_inbody__inner {
    flex-direction: column;
    gap: min(6.1538vw, 36.9231px);
  }

  .space_inbody__img {
    align-self: flex-start;
    /* タブレット幅でも比率を保てるよう % 指定にする */
    width: 72%;
  }

  .space_inbody__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.1282vw, 30.7692px);
    line-height: 1.5;
    letter-spacing: 1.3px;
  }

  .space_inbody__text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .space_inbody__text + .space_inbody__text {
    margin-top: min(4.1026vw, 24.6154px);
  }

  .space_inbody__list {
    flex-direction: column;
    gap: min(4.1026vw, 24.6154px);
    margin-top: min(10.2564vw, 61.5385px);
  }

  .space_inbody__list li {
    padding: min(4.1026vw, 24.6154px) min(7.1795vw, 43.0769px);
  }

  .space_inbody__list_title {
    padding-bottom: min(2.0513vw, 12.3077px);
    font-size: min(4.1026vw, 24.6154px);
    letter-spacing: 0.78px;
  }

  .space_inbody__list_text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .space_machine {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .space_machine__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.1282vw, 30.7692px);
    letter-spacing: 0.8px;
  }

  .space_machine__text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .space_machine__list {
    margin-top: min(10.2564vw, 61.5385px);
  }

  .space_machine__list li + li {
    margin-top: min(6.1538vw, 36.9231px);
  }

  .space_machine__list p {
    margin-top: min(2.0513vw, 12.3077px);
    font-size: min(3.5897vw, 21.5385px);
    font-weight: 600;
  }

  .space_amenity {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .space_amenity__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.0256vw, 30.1538px);
    line-height: 1.5;
  }

  .space_amenity__text {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(3.0256vw, 18.1538px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .space_amenity__list {
    flex-direction: column;
    gap: min(4.1026vw, 24.6154px);
    margin-top: min(10.2564vw, 61.5385px);
  }

  .space_amenity__list li {
    padding: min(5.1282vw, 30.7692px);
    font-size: min(3.5897vw, 21.5385px);
    font-weight: 600;
  }

  /* trainer */
  .trainer_profile {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .trainer_profile__inner {
    flex-direction: column;
    gap: min(10.2564vw, 61.5385px);
  }

  .trainer_profile__name_en {
    margin-bottom: min(2.0513vw, 12.3077px);
    font-size: min(6.1538vw, 36.9231px);
    letter-spacing: 1.92px;
  }

  .trainer_profile__name_ja {
    font-size: min(3.0769vw, 18.4615px);
    font-weight: 600;
    letter-spacing: 1px;
  }

  .trainer_profile__subtitle {
    margin: min(5.1282vw, 30.7692px) 0 min(2.0513vw, 12.3077px);
    font-size: min(4.1026vw, 24.6154px);
    letter-spacing: 0.8px;
  }

  .trainer_profile__list li {
    font-size: min(3.0769vw, 18.4615px);
    font-weight: 600;
    line-height: min(5.1282vw, 30.7692px);
  }

  .trainer_message {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .trainer_message__title {
    margin-bottom: min(10.2564vw, 61.5385px);
    font-size: min(5.1282vw, 30.7692px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  .trainer_message__lead {
    margin-bottom: min(10.2564vw, 61.5385px);
    font-size: min(3.5897vw, 21.5385px);
    line-height: 1.8;
    letter-spacing: 0.56px;
  }

  .trainer_message__text {
    margin-bottom: min(14.359vw, 86.1538px);
    text-align: center;
  }

  .trainer_message__text p {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .trainer_message__text p + p {
    margin-top: min(4.1026vw, 24.6154px);
  }

  /* plan */
  .plan_intro__inner {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px) 0;
  }

  .plan_intro__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    /* 狭い端末幅で「制」だけ2行目に落ちるため少し下げる */
    font-size: min(5.7436vw, 34.4615px);
    line-height: 1.5;
    letter-spacing: 0.96px;
  }

  .plan_intro__text {
    font-size: min(3.5897vw, 21.5385px);
    line-height: 1.8;
  }

  .plan_price {
    padding: 0 min(4.1026vw, 24.6154px) min(16.4103vw, 98.4615px);
    margin-top: min(14.359vw, 86.1538px);
  }

  .plan_price__head {
    margin-bottom: min(4.1026vw, 24.6154px);
  }

  .plan_price__head--gap {
    margin-top: min(14.359vw, 86.1538px);
  }

  .plan_price__head_en {
    margin-bottom: min(2.0513vw, 12.3077px);
    font-size: min(4.1026vw, 24.6154px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  .plan_price__head_ja {
    font-size: min(2.5641vw, 15.3846px);
    line-height: 1.5;
    letter-spacing: 0.56px;
  }

  .plan_price__row {
    flex-direction: column;
    align-items: flex-start;
    gap: min(2.5641vw, 15.3846px);
    padding: min(4.1026vw, 24.6154px) 0;
  }

  .plan_price__count {
    font-size: min(4.6154vw, 27.6923px);
    letter-spacing: 0.96px;
  }

  .plan_price__desc {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .plan_price__annotation {
    margin-top: min(4.1026vw, 24.6154px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.5;
    text-align: left;
  }

  .plan_price__amount {
    text-align: left;
  }

  .plan_price__amount_num {
    font-size: min(6.1538vw, 36.9231px);
    letter-spacing: 1.28px;
  }

  .plan_price__amount_note {
    font-size: min(2.5641vw, 15.3846px);
  }

  .plan_price__link {
    margin-top: min(10.2564vw, 61.5385px);
  }

  .plan_included__inner,
  .plan_value__inner,
  .plan_flow__inner {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .plan_included__title,
  .plan_value__title,
  .plan_flow__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.0256vw, 30.1538px);
    line-height: 1.5;
    letter-spacing: 1.12px;
  }

  .plan_included__label {
    margin-bottom: min(2.5641vw, 15.3846px);
    font-size: min(4.1026vw, 24.6154px);
    line-height: 1.5;
    letter-spacing: 0.8px;
  }

  .plan_included__text {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .plan_included__list {
    grid-template-columns: repeat(2, 1fr);
    gap: min(4.1026vw, 24.6154px);
  }

  .plan_included__list li {
    padding-bottom: min(1.2821vw, 7.6923px);
    font-size: min(3.5897vw, 21.5385px);
    line-height: 1.5;
  }

  .plan_value__list {
    flex-direction: column;
    gap: min(8.2051vw, 49.2308px);
  }

  .plan_value__item {
    flex: 1 1 auto;
    padding: 0;
  }

  .plan_value__item_label {
    margin-bottom: min(2.0513vw, 12.3077px);
    font-size: min(2.5641vw, 15.3846px);
    line-height: 1.5;
    letter-spacing: 2.4px;
  }

  .plan_value__item_title {
    margin-bottom: min(3.0769vw, 18.4615px);
    font-size: min(3.5897vw, 21.5385px);
    line-height: 1.8;
    letter-spacing: 0.72px;
  }

  .plan_value__item_line {
    margin-bottom: min(3.0769vw, 18.4615px);
  }

  .plan_value__item_text {
    font-size: min(2.8205vw, 16.9231px);
    line-height: 1.8;
    letter-spacing: 0.44px;
  }

  .plan_value__item_title {
    margin-bottom: min(2.0513vw, 12.3077px);
    font-size: min(4.1026vw, 24.6154px);
    letter-spacing: 0.8px;
  }

  .plan_value__item_text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .plan_value__quote {
    padding: min(5.1282vw, 30.7692px);
    margin-top: min(6.1538vw, 36.9231px);
  }

  .plan_value__quote_title {
    margin-bottom: min(4.1026vw, 24.6154px);
    font-size: min(4.1026vw, 24.6154px);
    line-height: 1.5;
  }

  .plan_value__quote_text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .plan_flow__cta {
    padding: min(6.1538vw, 36.9231px);
    margin-bottom: min(6.1538vw, 36.9231px);
  }

  .plan_flow__cta_text {
    margin-bottom: min(4.1026vw, 24.6154px);
    font-size: min(3.5897vw, 21.5385px);
    line-height: 1.8;
  }

  .plan_flow__list {
    flex-direction: column;
  }

  /* SPは縦積みなので、矢印は下向きにする。
     下端を尖らせ、上端に同じ形の切り欠きを作って噛み合わせる。 */
  .plan_flow__list li {
    /* PCと同じ7.7%程度の深さにして、下向きの矢印として読めるようにする */
    --chevron: min(7.6923vw, 46.1538px);
    --seam: 3px;

    padding: calc(min(7.1795vw, 43.0769px) + var(--chevron)) min(6.1538vw, 36.9231px);
    clip-path: polygon(
      0 0,
      50% var(--chevron),
      100% 0,
      100% calc(100% - var(--chevron)),
      50% 100%,
      0 calc(100% - var(--chevron))
    );

    /* 切り欠きの分だけ上に寄せて噛み合わせ、seam の分だけ細い隙間を残す */
    margin-top: calc(var(--seam) - var(--chevron));
  }

  /* 上端は切り欠きなし、下端は尖らせない */
  .plan_flow__list li:first-child {
    margin-top: 0;
    padding-top: min(7.1795vw, 43.0769px);
    clip-path: polygon(
      0 0,
      100% 0,
      100% calc(100% - var(--chevron)),
      50% 100%,
      0 calc(100% - var(--chevron))
    );
  }

  .plan_flow__list li:last-child {
    padding-bottom: min(7.1795vw, 43.0769px);
    clip-path: polygon(0 0, 50% var(--chevron), 100% 0, 100% 100%, 0 100%);
  }

  .plan_flow__list_title {
    margin: min(2.5641vw, 15.3846px) 0 min(5.1282vw, 30.7692px);
    font-size: min(3.5897vw, 21.5385px);
    line-height: 1.5;
  }

  .plan_flow__list_text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .plan_flow__link {
    margin-top: min(6.1538vw, 36.9231px);
  }

  /* contact */
  .contact_intro__inner {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .contact_intro__text {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    text-align: left;
  }

  .contact_intro__cta {
    padding: min(6.1538vw, 36.9231px);
  }

  .contact_intro__cta_text {
    font-weight: 600;
    margin-bottom: min(4.1026vw, 24.6154px);
    font-size: min(3.5897vw, 21.5385px);
    line-height: 1.8;
  }

  .contact_flow {
    padding: 0 min(4.1026vw, 24.6154px) min(16.4103vw, 98.4615px);
  }

  .contact_flow__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.1282vw, 30.7692px);
    letter-spacing: 2px;
  }

  .contact_flow__list {
    flex-direction: column;
  }

  /* SPは縦積みなので矢印は下向き（planページと同じ） */
  .contact_flow__list li {
    --chevron: min(7.6923vw, 46.1538px);
    --seam: 3px;

    padding: calc(min(6.1538vw, 36.9231px) + var(--chevron)) min(6.1538vw, 36.9231px);
    clip-path: polygon(
      0 0,
      50% var(--chevron),
      100% 0,
      100% calc(100% - var(--chevron)),
      50% 100%,
      0 calc(100% - var(--chevron))
    );
    margin-top: calc(var(--seam) - var(--chevron));
  }

  .contact_flow__list li:first-child {
    margin-top: 0;
    padding-top: min(6.1538vw, 36.9231px);
    clip-path: polygon(
      0 0,
      100% 0,
      100% calc(100% - var(--chevron)),
      50% 100%,
      0 calc(100% - var(--chevron))
    );
  }

  .contact_flow__list li:last-child {
    padding-bottom: min(6.1538vw, 36.9231px);
    clip-path: polygon(0 0, 50% var(--chevron), 100% 0, 100% 100%, 0 100%);
  }

  .contact_flow__list_title {
    margin: min(2.5641vw, 15.3846px) 0 min(5.1282vw, 30.7692px);
    font-size: min(3.5897vw, 21.5385px);
  }

  .contact_flow__list_text {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .contact_form__inner {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .contact_form__title {
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.1282vw, 30.7692px);
    letter-spacing: 2px;
  }

  .contact_form__body {
    gap: min(5.1282vw, 30.7692px);
  }

  .contact_form__row {
    flex-direction: column;
    gap: min(5.1282vw, 30.7692px);
  }

  .contact_form__label {
    margin-bottom: min(2.0513vw, 12.3077px);
    font-size: min(3.5897vw, 21.5385px);
  }

  .contact_form__input,
  .contact_form__textarea {
    padding: min(2.0513vw, 12.3077px) min(2.8205vw, 16.9231px);
    font-size: min(3.5897vw, 21.5385px);
  }

  .contact_form__note {
    margin-top: min(1.5385vw, 9.2308px);
    font-size: min(2.8205vw, 16.9231px);
  }

  .contact_form__agree {
    font-size: min(3.0769vw, 18.4615px);
  }

  .contact_form__submit {
    width: min(58.9744vw, 353.8462px);
    padding: min(4.1026vw, 24.6154px);
    font-size: min(4.1026vw, 24.6154px);
    letter-spacing: 2px;
  }

  /* faq */
  .faq__inner {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .faq__tab {
    flex-wrap: wrap;
    gap: min(3.0769vw, 18.4615px);
    margin-bottom: min(6.1538vw, 36.9231px);
  }

  .faq__tab li {
    flex: 0 0 calc(50% - min(1.5385vw, 9.2308px));
  }

  .faq__tab a {
    padding: min(3.0769vw, 18.4615px) min(2.0513vw, 12.3077px);
    font-size: min(3.0769vw, 18.4615px);
    font-weight: 600;
    letter-spacing: 0.5px;
  }

  .faq__category {
    padding-top: min(5.1282vw, 30.7692px);
    margin-bottom: min(6.1538vw, 36.9231px);
    font-size: min(5.1282vw, 30.7692px);
    letter-spacing: 1.2px;
  }

  .faq__item + .faq__item {
    margin-top: min(5.1282vw, 30.7692px);
  }

  .faq-question {
    gap: min(2.5641vw, 15.3846px);
    padding: min(4.1026vw, 24.6154px) min(5.1282vw, 30.7692px);
  }

  .faq-question .faq__mark {
    width: min(6.9231vw, 41.5385px);
    font-size: min(4.1026vw, 24.6154px);
  }

  .faq-question .faq__text {
    font-size: min(3.0769vw, 18.4615px);
    letter-spacing: 0.42px;
  }

  .faq__icon {
    width: min(4.1026vw, 24.6154px);
    height: min(4.1026vw, 24.6154px);
  }

  .faq-answer__inner {
    /* 上下の余白はQと同じ値に揃える */
    gap: min(2.5641vw, 15.3846px);
    padding: min(4.1026vw, 24.6154px) min(5.1282vw, 30.7692px);
  }

  .faq-answer .faq__mark {
    width: min(6.9231vw, 41.5385px);
    font-size: min(4.1026vw, 24.6154px);
  }

  .faq-answer .faq__text {
    flex: 1;
    font-size: min(3.0769vw, 18.4615px);
    line-height: min(4.6154vw, 27.6923px);
  }

  .c-float_cta {
    right: min(3.0769vw, 18.4615px);
    bottom: min(3.0769vw, 18.4615px);
    gap: min(2.0513vw, 12.3077px);
    padding: min(3.0769vw, 18.4615px) min(4.1026vw, 24.6154px);
    font-size: min(3.3333vw, 20px);
    font-weight: 600;
    letter-spacing: 0.6px;
  }

  .c-float_cta__icon {
    width: min(4.6154vw, 27.6923px);
    height: min(4.6154vw, 27.6923px);
  }

  /* legal */
  .legal__inner {
    padding: min(16.4103vw, 98.4615px) min(4.1026vw, 24.6154px);
  }

  .legal__lead {
    margin-bottom: min(7.6923vw, 46.1538px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .legal__block + .legal__block {
    margin-top: min(7.6923vw, 46.1538px);
  }

  .legal__title {
    margin-bottom: min(2.5641vw, 15.3846px);
    font-size: min(4.1026vw, 24.6154px);
    line-height: 1.8;
    letter-spacing: 0.8px;
  }

  .legal__text,
  .legal__list {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  .legal__text + .legal__text,
  .legal__text + .legal__list,
  .legal__list + .legal__text {
    margin-top: min(3.0769vw, 18.4615px);
  }

  .legal__date {
    margin-top: min(7.6923vw, 46.1538px);
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
  }

  /* footer */
  .footer {
    padding: min(16.4103vw, 98.4615px) min(6.1538vw, 36.9231px) min(10.2564vw, 61.5385px);
  }

  .footer__inner {
    gap: min(10.2564vw, 61.5385px);
  }

  .footer__logo img {
    width: min(58.4615vw, 350.7692px);
    height: min(14.6154vw, 87.6923px);
    object-fit: contain;
  }

  .footer__sns {
    gap: min(4.1026vw, 24.6154px);
  }

  .footer__sns img {
    width: min(5.1282vw, 30.7692px);
    height: min(5.1282vw, 30.7692px);
  }

  .footer__info {
    width: min(62.8205vw, 376.9231px);
  }

  .footer__info_name {
    margin-bottom: min(5.1282vw, 30.7692px);
    font-size: min(4.6154vw, 27.6923px);
    letter-spacing: 0.72px;
  }

  .footer__info_address {
    font-size: min(3.0769vw, 18.4615px);
    line-height: 1.8;
    letter-spacing: 0.48px;
  }

  .footer__nav {
    width: 100%;
  }

  .footer__nav_list {
    flex-wrap: wrap;
    gap: min(4.1026vw, 24.6154px) min(10.2564vw, 61.5385px);
    margin-bottom: min(5.1282vw, 30.7692px);
    font-size: min(3.5897vw, 21.5385px);
    letter-spacing: 0.56px;
  }

  .footer__nav_policy {
    flex-direction: column;
    gap: min(4.1026vw, 24.6154px);
    font-size: min(3.0769vw, 18.4615px);
    letter-spacing: 0.48px;
  }

  .footer small {
    margin-top: min(10.2564vw, 61.5385px);
    font-size: min(3.0769vw, 18.4615px);
    letter-spacing: 0.48px;
  }
}
