/* Design Tokens — Frame 1（figma-full.json の SOLID より） */
:root {
  --color-page: #fffbf3;
  --color-surface: #ffffff;
  --color-brand: #ce2424;
  --color-text: #161616;
  --color-text-muted: #5c5c5c;
  --color-white: #ffffff;
  --color-accent-blue: #1e4d8b;
  --color-line: #d8d8d8;
  --color-price-head: #ffefef;
  --color-cell-general: #fce4ec;
  --color-cell-accent: #e3f2fd;
  --color-cell-night: #fff3e0;

  --font-inter: "Inter", system-ui, sans-serif;
  --font-display: "Monomaniac One", "Bebas Neue", system-ui, sans-serif;
  /* FV 右下英字ブランド（Amiri のイタリックウェブフォント） */
  --font-fv-brand: "Amiri", Georgia, "Times New Roman", serif;
  --font-jp: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif;

  --layout-max: 1400px;
  /* .l-main の最大幅（左右パディングを含めた外寸 1200px） */
  --main-max: 1200px;
  /* タブレット以上：.l-main の左右パディング（内側の列幅は --content-max） */
  --main-padding-desktop: 30px;
  /* パディング内のコンテンツ最大幅（= main-max − 左右30px） */
  --content-max: calc(var(--main-max) - 2 * var(--main-padding-desktop));
  --main-content-max: var(--main-max);
  /* スマホ時 .l-main の左右パディング（全幅ブロックの負マージン基準） */
  --main-padding-sp: 15px;
  --space-inline: 16px;
  --space-page: 130px;
  --space-gutter: 30px;

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-7: 32px;
  --space-8: 40px;
  --space-9: 48px;
  --space-10: 56px;
  --space-11: 64px;
  --space-12: 80px;

  --header-height: 70px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-pill: 999px;
  /* LINE / Instagram ボタン（アプリアイコンに近い丸角） */
  --radius-sns: 9px;

  --border-width: 1px;
  --border-width-strong: 2px;

  /* ヘッダー（Figma Frame 1 / Rectangle 3 高さ 70px） */
  --text-header-name: 20px;
  --text-header-slug: 12px;
  --letter-header-slug: 0.2em;
  --text-nav: 14px;
  --text-header-tel: 20px;
  --text-header-bizhours: 14px;
  /* フッター */
  --text-footer-site: 20px;
  --text-footer-addr: 15px;
  --text-footer-copy: 12px;
  --footer-sns-gap: 12px;
  --footer-sns-gap-pc: 22px;
  /* フッター LINE / Instagram テキストボタン（Figma 寄せ） */
  --color-footer-link-btn: #ce2525;
  --footer-link-btn-w: 230px;
  --footer-link-btn-h: 50px;
  --text-hero-tag: clamp(26px, 4vw, 40px);
  --text-hero-lead: clamp(15px, 1.8vw, 18px);
  --text-hero-panel: 14px;
  --text-hero-brand: clamp(28px, 8vw, 80px);
  --text-lead-title: clamp(22px, 3.2vw, 36px);
  --text-lead-sub: 16px;
  --text-split-title: 25px;
  --text-split-body: 15px;
  --text-section-en: 20px;
  --text-section-ja: 30px;
  --text-features-label: 20px;
  --text-staff-name: 20px;
  --text-staff-body: 15px;
  --text-table: 15px;
  --text-table-head: 20px;
  --text-schedule-time-col: 15px;
  --text-note: 13px;
  --text-cta-title: clamp(22px, 2.5vw, 30px);
  --text-cta-en: 20px;
  --text-cta-body: 15px;
  --text-cta-btn: 15px;
  --text-footer: 12px;

  --line-snug: 1.35;
  --line-relaxed: 1.65;

  --weight-bold: 700;
  --weight-semibold: 600;
  --weight-medium: 500;
  --weight-regular: 400;

  --letter-wide: 0.04em;

  --bp-md: 768px;
  --bp-lg: 1024px;

  --viewport-min: 100vh;

  --text-error-title: 30px;
  --text-error-code: 20px;
  --text-error-body: 15px;
  --line-error-body: 28px;
  --letter-error-code: 6px;
  --pad-btn-y: 14px;
  --radius-btn-pill: 30px;

  --size-header-mark: 44px;
  --size-footer-mark: 36px;
  --size-staff-face: 160px;
  --size-staff-face-lg: 200px;

  --hero-min-h: 360px;
  --hero-radius: 10px;
  --hero-aspect-w: 1140;
  --hero-aspect-h: 618;
  /* Google 埋め込み既定 600×450（4:3）に合わせる */
  --map-aspect-w: 4;
  --map-aspect-h: 3;
}

@media (min-width: 1024px) {
  :root {
    --space-inline: var(--space-page);
  }
}

body {
  font-kerning: normal;
  font-optical-sizing: auto;
  font-variant-east-asian: proportional-width jis04;
  font-feature-settings: "palt" 1, "kern" 1;
  letter-spacing: 0.02em;
  text-align: justify;
}

.l-html {
  font-family: var(--font-jp);
  color: var(--color-text);
  background-color: var(--color-page);
  line-height: var(--line-relaxed);
}

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

.l-body {
  margin: 0;
  min-height: var(--viewport-min);
  display: flex;
  flex-direction: column;
}

.l-body__shell {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  max-width: var(--layout-max);
  margin-inline: auto;
}

.l-body__shell--error .l-main--error {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
}

.l-main {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 0;
  box-sizing: border-box;
  width: 100%;
  max-width: var(--main-content-max);
  margin-inline: auto;
}

@media (max-width: 767px) {
  .l-main {
    padding-inline: var(--main-padding-sp);
  }

  .c-section {
    padding-inline: 0;
  }
}

@media (min-width: 768px) {
  .l-main {
    padding-inline: var(--main-padding-desktop);
  }
}

/* ---------- First View（ヒーロー） ---------- */
/* Figma タイポ: Noto Sans CJK JP → Web は Noto Sans JP */
.c-fv {
  --fv-lead-shadow: 0 2px 14px rgba(0, 0, 0, 0.58);
  --fv-brand-red: #ce2525;
  /* 英字ブランド：右は枠外へ（正の値を right で反転）。下は .c-fv__inner 下端からの距離 */
  --fv-brand-outset-x: 40px;
  --fv-brand-outset-y: 40px;
  width: 100%;
  margin-top: 50px;
  margin-bottom: 0;
  padding-inline: var(--space-4);
  box-sizing: border-box;
  overflow-x: visible;
  overflow-y: visible;
}

@media (min-width: 768px) {
  .c-fv {
    padding-inline: 0;
  }

  .c-fv__inner {
    padding-bottom: clamp(4.5rem, 11vw, 9rem);
  }
}

.c-fv__inner {
  position: relative;
  width: 100%;
  max-width: var(--content-max);
  margin-inline: auto;
  overflow-x: visible;
  overflow-y: visible;
  /* ブランドがステージ下にはみ出す分（次セクションと干渉しないよう最低限） */
  padding-bottom: clamp(2.5rem, 8vw, 5rem);
}

.c-fv__stage {
  position: relative;
  width: 100%;
  overflow: hidden;
  aspect-ratio: var(--hero-aspect-w) / var(--hero-aspect-h);
  border-radius: var(--hero-radius);
}

.c-fv__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.c-fv__media picture {
  display: block;
  width: 100%;
  height: 100%;
}

.c-fv__photo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 35%;
}

.c-fv__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  box-sizing: border-box;
  /* 募集バナー位置と共有（左右・下・上） */
  --fv-overlay-inline: clamp(14px, 4vw, 70px);
  --fv-overlay-bottom: clamp(14px, 4vw, 70px);
  --fv-overlay-top: clamp(16px, 5vw, 100px);
  padding: var(--fv-overlay-bottom) var(--fv-overlay-inline);
  padding-top: var(--fv-overlay-top);
}

.c-fv__overlay .c-fv__recruit {
  pointer-events: auto;
}

.c-fv__lead {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  align-self: stretch;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  container-type: inline-size;
  container-name: fv-lead;
}

.c-fv__tagline {
  margin: 0 0 40px;
  font-family: var(--font-jp);
  font-size: 40px;
  font-style: normal;
  font-weight: var(--weight-regular);
  line-height: 1.25;
  color: #fff;
  letter-spacing: normal;
  text-shadow: var(--fv-lead-shadow);
  word-break: keep-all;
  line-break: strict;
}

/* リード幅が狭いとき（〜380px）：1 行に収まるよう字詰め＋ nowrap */
@container fv-lead (max-width: 380px) {
  .c-fv__tagline {
    white-space: nowrap;
    font-size: clamp(17px, 6.2cqi, 40px);
  }
}

.c-fv__text {
  margin: 0;
  font-family: var(--font-jp);
  font-size: 18px;
  font-style: normal;
  font-weight: var(--weight-regular);
  line-height: 40px;
  color: #fff;
  text-shadow: var(--fv-lead-shadow);
}

.c-fv__recruit {
  position: absolute;
  z-index: 2;
  left: var(--fv-overlay-inline);
  bottom: var(--fv-overlay-bottom);
  width: auto;
  max-width: min(520px, 62%);
}

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

.c-fv__recruit-img--sp {
  display: none;
}

@media (min-width: 768px) {
  .c-fv__overlay {
    --fv-overlay-inline: 70px;
    --fv-overlay-bottom: 70px;
    --fv-overlay-top: 100px;
    padding: var(--fv-overlay-bottom) var(--fv-overlay-inline);
    padding-top: var(--fv-overlay-top);
  }

  .c-fv__recruit {
    max-width: 390px;
  }

  .c-fv__recruit-img--pc {
    max-width: 390px;
    width: 100%;
    height: auto;
  }
}

/* タブレット幅：オーバーレイの余白を詰め、リードと募集・ブランドの干渉を防ぐ */
@media (min-width: 768px) and (max-width: 1024px) {
  .c-fv__overlay {
    --fv-overlay-inline: clamp(28px, 4.5vw, 52px);
    --fv-overlay-bottom: clamp(28px, 3.8vw, 56px);
    --fv-overlay-top: clamp(52px, 7.5vw, 84px);
    padding: var(--fv-overlay-bottom) var(--fv-overlay-inline);
    padding-top: var(--fv-overlay-top);
  }

  .c-fv__tagline {
    font-size: clamp(26px, 3.2vw, 34px);
    margin-bottom: clamp(20px, 2.5vw, 32px);
  }

  .c-fv__text {
    font-size: clamp(15px, 1.6vw, 17px);
    line-height: 1.55;
  }

  .c-fv__recruit {
    max-width: min(360px, 46vw);
  }

  .c-fv__recruit-img--pc {
    max-width: min(360px, 46vw);
  }

  .c-fv__brand-line {
    font-size: clamp(40px, 6vw, 64px);
    letter-spacing: clamp(3px, 0.5vw, 6px);
  }

  .c-fv__brand {
    --fv-brand-outset-x: clamp(18px, 2.8vw, 36px);
  }
}

@media (min-width: 768px) and (max-width: 900px) {
  .c-fv__brand-line {
    font-size: 58px;
  }
}

.c-fv__brand {
  position: absolute;
  z-index: 2;
  /* ステージ右下を基準に、枠の外側へ。1140 内側からはみ出してよい */
  right: calc(-1 * var(--fv-brand-outset-x));
  bottom: var(--fv-brand-outset-y);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0;
  text-align: right;
  pointer-events: none;
}

.c-fv__brand-line {
  font-family: var(--font-fv-brand);
  font-style: italic;
  font-weight: 700;
  line-height: 100%;
  color: var(--fv-brand-red);
  text-transform: uppercase;
  display: block;
}

@media (min-width: 1025px) {
  .c-fv__brand-line {
    font-size: 80px;
    letter-spacing: 8px;
  }
}

@media (max-width: 767px) {
  .c-fv {
    margin-top: 15px;
    padding-inline: 0;
  }

  .c-fv__overlay {
    --fv-overlay-inline: 30px;
    --fv-overlay-top: 35px;
    padding: var(--fv-overlay-bottom) var(--fv-overlay-inline);
    padding-top: var(--fv-overlay-top);
  }

  .c-fv__stage {
    aspect-ratio: unset;
    height: 700px;
    min-height: 700px;
    margin-top: 0;
  }

  .c-fv__photo {
    object-position: center 30%;
  }

  .c-fv__recruit {
    left: var(--fv-overlay-inline);
    right: var(--fv-overlay-inline);
    bottom: 150px;
    width: auto;
    max-width: 390px;
    margin-inline: 0;
    box-sizing: border-box;
    transform: none;
    text-align: left;
  }

  .c-fv__recruit-img--pc {
    display: none;
  }

  .c-fv__recruit-img--sp {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    margin-inline: 0;
  }

  .c-fv__tagline {
    /* 狭い幅でも 1 行に収まるよう（~350px 相当を想定） */
    font-size: clamp(17px, 6.2vw, 23px);
    line-height: 1.35;
    margin-bottom: 15px;
    white-space: nowrap;
  }

  .c-fv__text {
    font-size: 15px;
    line-height: 1.6;
  }

  .c-fv__brand {
    /* 意図: 狭い幅では控えめに枠外へ（0〜12px、希望 4vw）。clamp(12px,4vw,0px) は MIN>MAX のため正規化 */
    --fv-brand-outset-x: clamp(0px, 4vw, 12px);
    bottom: 15px;
  }

  .c-fv__brand-line {
    font-size: 50px;
    line-height: 100%;
    letter-spacing: 4px;
  }
}


.c-header {
  flex-shrink: 0;
  width: 100%;
  background-color: var(--color-brand);
  color: var(--color-white);
}

.c-header__inner {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  box-sizing: border-box;
  min-height: var(--header-height);
  max-width: var(--main-content-max);
  margin-inline: auto;
  padding-block: 6px;
  /* .l-main と同じ：外寸 --main-max 内に左右パディング */
  padding-inline: var(--main-padding-sp);
}

@media (min-width: 720px) {
  .c-header__inner {
    flex-wrap: nowrap;
    padding-block: 0;
    height: var(--header-height);
  }
}

@media (min-width: 768px) {
  .c-header__inner {
    padding-inline: var(--main-padding-desktop);
  }
}

.c-header__brand {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.c-header__mark {
  display: block;
  width: var(--size-header-mark);
  height: var(--size-header-mark);
  border-radius: var(--radius-sm);
  object-fit: contain;
  flex-shrink: 0;
}

.c-header__titles {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
  min-width: 0;
}

.c-header__name {
  font-family: var(--font-jp);
  font-weight: var(--weight-bold);
  font-size: var(--text-header-name);
  line-height: 1.2;
  letter-spacing: 0.02em;
  color: var(--color-white);
  text-decoration: none;
}

.c-header__slug {
  margin: 0;
  font-family: var(--font-inter);
  font-weight: var(--weight-semibold);
  font-size: var(--text-header-slug);
  line-height: 1.2;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-white);
}

.c-header__end {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: clamp(12px, 2.5vw, 28px);
  flex-shrink: 0;
  margin-left: auto;
}

.c-header__contact {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  gap: 2px;
  flex-shrink: 0;
  text-align: right;
}

.c-header__tel-row {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  color: var(--color-white);
  text-decoration: none;
  white-space: nowrap;
}

.c-header__tel-row:hover {
  opacity: 0.88;
}

.c-header__tel-row:focus-visible {
  outline: 2px solid var(--color-white);
  outline-offset: 3px;
  border-radius: 2px;
}

.c-header__tel-icon {
  flex-shrink: 0;
  object-fit: contain;
  border-radius: var(--radius-sns);
}

.c-header__tel-icon--pc {
  display: block;
  width: 22px;
  height: 22px;
  border-radius: 0;
}

.c-header__tel-icon--sp {
  display: none;
  width: 44px;
  height: 44px;
}

.c-header__tel-num {
  font-family: var(--font-inter);
  font-size: var(--text-header-tel);
  font-weight: var(--weight-semibold);
  line-height: 1.2;
  letter-spacing: 0.02em;
}

.c-header__bizhours {
  margin: 0;
  font-family: var(--font-inter);
  font-size: var(--text-header-bizhours);
  font-weight: var(--weight-regular);
  line-height: 1.35;
  color: var(--color-white);
  white-space: nowrap;
}

.c-header__sns {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.c-header__sns-btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: none;
  border-radius: var(--radius-sns);
  overflow: hidden;
  text-decoration: none;
  flex-shrink: 0;
  transition: opacity 0.15s ease, transform 0.15s ease;
}

.c-header__sns-btn:hover {
  opacity: 0.9;
  transform: scale(1.03);
}

.c-header__sns-btn:focus-visible {
  outline: 2px solid var(--color-white);
  outline-offset: 3px;
}

.c-header__sns-btn--line {
  background-color: #06c755;
}

.c-header__sns-btn--instagram {
  background-color: transparent;
}

.c-header__sns-img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
  pointer-events: none;
}

/* スマホ: 1 行ヘッダー・電話は icon-phone2.svg のみ（白角丸＋赤受話器は素材内。親に白を敷かない）・番号・営業時間は非表示 */
@media (max-width: 719px) {
  .c-header__inner {
    flex-wrap: nowrap;
    align-items: center;
    gap: 12px;
  }

  .c-header__brand {
    flex: 1 1 auto;
    min-width: 0;
    gap: calc(12px * 0.9);
  }

  .c-header__mark {
    width: calc(var(--size-header-mark) * 0.9);
    height: calc(var(--size-header-mark) * 0.9);
  }

  .c-header__titles {
    gap: calc(2px * 0.9);
  }

  .c-header__name {
    font-size: calc(var(--text-header-name) * 0.9);
    letter-spacing: calc(0.02em * 0.9);
  }

  .c-header__slug {
    font-size: calc(var(--text-header-slug) * 0.9);
    letter-spacing: calc(var(--letter-header-slug) * 0.9);
  }

  .c-header__end {
    width: auto;
    flex-wrap: nowrap;
    align-items: center;
    gap: 10px;
  }

  .c-header__contact {
    align-items: center;
    text-align: center;
  }

  .c-header__bizhours {
    display: none;
  }

  .c-header__tel-icon--pc {
    display: none;
  }

  .c-header__tel-icon--sp {
    display: block;
    width: 35px;
    height: 35px;
    max-width: none;
    max-height: none;
    object-fit: contain;
    object-position: center;
    border-radius: var(--radius-sns);
    pointer-events: none;
  }

  .c-header__tel-num {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
  }

  .c-header__tel-row {
    position: relative;
    flex-shrink: 0;
    box-sizing: border-box;
    width: 35px;
    height: 35px;
    padding: 0;
    gap: 0;
    white-space: normal;
    align-items: center;
    justify-content: center;
    background-color: transparent;
    border-radius: var(--radius-sns);
    overflow: visible;
    transition: opacity 0.15s ease, transform 0.15s ease;
  }

  .c-header__tel-row:hover {
    opacity: 0.9;
    transform: scale(1.03);
  }

  .c-header__tel-row:focus-visible {
    border-radius: var(--radius-sns);
  }

  .c-header__sns-btn {
    width: 35px;
    height: 35px;
  }
}

/* 旧ヘッダーナビ（404 等で使用） */
.c-header__nav {
  flex: 1 1 auto;
  display: flex;
  justify-content: flex-end;
}

.c-header__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-5);
}

.c-header__item {
  margin: 0;
}

.c-header__link {
  font-family: var(--font-inter);
  font-size: var(--text-nav);
  font-weight: var(--weight-semibold);
  color: var(--color-white);
  text-decoration: none;
  white-space: nowrap;
}

.c-header__link--static {
  cursor: default;
  text-decoration: none;
  pointer-events: none;
}

.c-hero {
  padding-block: var(--space-7);
  padding-inline: var(--space-inline);
  background-color: var(--color-page);
}

.c-hero__stage {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: 1fr;
  max-width: var(--content-max);
  margin-inline: auto;
  border-radius: var(--hero-radius);
  overflow: hidden;
  box-shadow: 0 18px 48px rgba(22, 22, 22, 0.14);
}

.c-hero__media {
  grid-column: 1;
  grid-row: 1;
  display: block;
  width: 100%;
  aspect-ratio: var(--hero-aspect-w) / var(--hero-aspect-h);
  background-color: #2a2a2a;
}

.c-hero__media picture {
  display: block;
  width: 100%;
  height: 100%;
}

.c-hero__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.c-hero__overlay {
  grid-column: 1;
  grid-row: 1;
  z-index: 1;
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding-block: clamp(var(--space-6), 5vw, var(--space-10));
  padding-inline: clamp(var(--space-4), 4vw, var(--space-9));
  background: linear-gradient(
    to top,
    rgba(22, 22, 22, 0.72) 0%,
    rgba(22, 22, 22, 0.28) 42%,
    rgba(22, 22, 22, 0) 72%
  );
  pointer-events: none;
}

.c-hero__grid {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  width: 100%;
  max-width: 34rem;
  pointer-events: auto;
}

.c-hero__tagline {
  margin: 0;
  font-family: var(--font-jp);
  font-size: var(--text-hero-tag);
  font-weight: var(--weight-medium);
  line-height: 1.25;
  letter-spacing: 0.02em;
  color: var(--color-white);
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.45);
}

.c-hero__lead {
  margin: 0;
  max-width: 34rem;
  font-family: var(--font-jp);
  font-size: var(--text-hero-lead);
  font-weight: var(--weight-medium);
  line-height: 2.15;
  letter-spacing: 0.02em;
  color: var(--color-white);
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
}

.c-recruit {
  position: relative;
  z-index: 1;
  padding-block: 0 var(--space-10);
  padding-inline: var(--space-inline);
  margin-block-start: 0;
  background-color: transparent;
}

@media (min-width: 768px) {
  .c-recruit {
    margin-block-start: clamp(-2.75rem, -5vw, -1.5rem);
  }
}

.c-recruit__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-3);
  padding-block: var(--space-8);
  padding-inline: var(--space-7);
  background-color: var(--color-surface);
  border-radius: var(--hero-radius);
  border: var(--border-width) solid rgba(22, 22, 22, 0.06);
  box-shadow: 0 16px 40px rgba(22, 22, 22, 0.08);
}

.c-recruit__badge {
  margin: 0;
  font-family: var(--font-inter);
  font-size: clamp(28px, 5vw, 40px);
  font-weight: var(--weight-medium);
  line-height: 1.1;
  color: var(--color-brand);
}

.c-recruit__line {
  margin: 0;
  font-family: var(--font-jp);
  font-size: clamp(18px, 2.4vw, 25px);
  font-weight: var(--weight-medium);
  line-height: 1.3;
  color: var(--color-brand);
}

.c-recruit__brand {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--text-hero-brand);
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: 0.1em;
  color: var(--color-brand);
}

.c-recruit__note {
  margin: 0;
  font-family: var(--font-jp);
  font-size: 15px;
  font-weight: var(--weight-medium);
  line-height: 1.65;
  color: var(--color-brand);
}

.c-hero__panel {
  align-self: start;
  background-color: var(--color-surface);
  padding-block: var(--space-4);
  padding-inline: var(--space-5);
  border-radius: var(--radius-md);
  box-shadow: 0 var(--space-2) var(--space-6) rgba(0, 0, 0, 0.18);
}

.c-hero__panel-brand {
  margin: 0;
  font-weight: var(--weight-bold);
  font-size: var(--text-hero-panel);
  color: var(--color-brand);
}

.c-hero__panel-sub {
  margin: var(--space-2) 0 0;
  font-size: var(--text-note);
  color: var(--color-text-muted);
}

.c-hero__brandline {
  align-self: end;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: flex-end;
}

.c-hero__brandline-part {
  font-family: var(--font-inter);
  font-weight: var(--weight-bold);
  font-size: var(--text-hero-brand);
  line-height: var(--line-snug);
  letter-spacing: var(--letter-wide);
}

.c-hero__brandline-part--red {
  color: var(--color-brand);
  text-shadow: 0 0 2px var(--color-white);
}

.c-hero__brandline-part--blue {
  color: var(--color-accent-blue);
  text-shadow: 0 0 2px var(--color-white);
}

.c-lead {
  padding-block: var(--space-11);
  padding-inline: var(--space-inline);
}

.c-lead__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-4);
}

.c-lead__title {
  margin: 0;
  font-size: var(--text-lead-title);
  font-weight: var(--weight-bold);
  line-height: var(--line-snug);
  color: var(--color-brand);
}

.c-lead__sub {
  margin: 0;
  font-size: var(--text-lead-sub);
  color: var(--color-brand);
  font-weight: var(--weight-medium);
}

.c-split {
  padding-block-start: 0;
  padding-block-end: calc(35px + var(--space-9));
  padding-inline: var(--space-inline);
}

.c-split__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-gutter);
}

.c-split__visual {
  flex: 1 1 50%;
  min-width: 0;
  margin: 0;
}

.c-split__img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--hero-radius);
  object-fit: cover;
}

#features .c-split__img {
  border-radius: 0;
}

.c-split__body {
  flex: 1 1 50%;
  background-color: var(--color-surface);
  border: var(--border-width) solid rgba(22, 22, 22, 0.08);
  border-radius: var(--hero-radius);
  box-shadow: 0 10px 28px rgba(22, 22, 22, 0.06);
  padding: 25px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

.c-split__title {
  margin: 0;
  font-size: clamp(18px, 0.55vw + 17px, 25px);
  font-weight: var(--weight-bold);
  color: var(--color-brand);
}

.c-split__text {
  margin: 0;
  font-size: var(--text-split-body);
  line-height: 28px;
  font-weight: var(--weight-regular);
  color: var(--color-text);
}

/* FEATURES 等：スマホは画像の下にカードが重なる（モバイルデザイン） */
@media (max-width: 767px) {
  .c-split {
    padding-block-start: 0;
    padding-block-end: calc(-10px + var(--space-9));
    /* 横は .c-section の余白に任せ、写真を広く */
    padding-inline: 0;
  }

  .c-split__inner {
    gap: 0;
  }

  .c-split__visual {
    width: 100%;
    max-width: 100%;
    flex: 1 1 auto;
    align-self: stretch;
  }

  .c-split__img {
    width: 83%;
    max-width: 83%;
    margin-inline: auto;
    border-radius: var(--hero-radius) var(--hero-radius) 0 0;
  }

  #features .c-split__img {
    border-radius: 0;
  }

  /* 1・3件目：画像左／白カード右・幅96% */
  #features .c-section__inner > article:nth-of-type(odd) .c-split__img {
    margin-inline-start: 0;
    margin-inline-end: auto;
  }

  #features .c-section__inner > article:nth-of-type(odd) .c-split__body {
    width: 96%;
    max-width: 96%;
    margin-inline-start: auto;
    margin-inline-end: 0;
  }

  /* 2件目：画像右／白カード左・幅96% */
  #features .c-section__inner > article:nth-of-type(even) .c-split__img {
    margin-inline-start: auto;
    margin-inline-end: 0;
  }

  #features .c-section__inner > article:nth-of-type(even) .c-split__body {
    width: 96%;
    max-width: 96%;
    margin-inline-start: 0;
    margin-inline-end: auto;
  }

  .c-split__body {
    margin-top: clamp(-45px, -14vw, -28px);
    margin-inline: var(--space-2);
    position: relative;
    z-index: 1;
    padding: 25px;
    border-radius: var(--radius-md);
    box-shadow: 0 14px 36px rgba(22, 22, 22, 0.12);
  }

  #features .c-split__body {
    width: 100%;
    max-width: 100%;
    flex: 1 1 auto;
    box-shadow: none;
    border-radius: 10px;
    border: 0;
  }

  .c-split__text {
    line-height: 1.7;
  }
}

.c-video {
  padding-block: clamp(var(--space-10), 7vw, 100px) var(--space-9);
  padding-inline: var(--space-inline);
}

/* FEATURES 直後：.c-split の下余白と足し算で広くならないよう */
#features + .c-video {
  padding-block-start: 0;
}

.c-video__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}

.c-video__frame {
  position: relative;
  width: 100%;
  max-width: 750px;
  margin-inline: auto;
  border-radius: 0;
  overflow: hidden;
  border: var(--border-width) solid var(--color-line);
  aspect-ratio: 16 / 9;
  background-color: #0f0f0f;
}

.c-video__iframe {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

@media (max-width: 767px) {
  .c-video {
    padding-inline: 0;
  }
}

.c-video__thumb {
  display: block;
  width: 100%;
  height: auto;
}

.c-section {
  padding-top: clamp(72px, 10vw, 110px);
  padding-bottom: clamp(var(--space-10), 8vw, var(--space-12));
  padding-inline: var(--space-inline);
}

.c-section__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* セクション共通 H2（Figma: 日＋英 2 段・中央） */
.c-h2 {
  margin: 0 0 70px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  max-width: 100%;
}

.c-h2__ja {
  display: block;
  margin: 0;
  color: #ce2525;
  text-align: center;
  font-family: var(--font-jp);
  font-size: 30px;
  font-style: normal;
  font-weight: 700;
  line-height: 40px;
}

.c-h2__en {
  display: block;
  margin: 12px 0 0;
  color: #ce2525;
  text-align: center;
  font-family: var(--font-inter);
  font-size: 20px;
  font-style: normal;
  font-weight: 600;
  line-height: normal;
  letter-spacing: 6px;
  text-transform: uppercase;
}

@media (max-width: 767px) {
  .c-h2 {
    margin-bottom: 30px;
  }

  .c-h2__ja {
    font-size: clamp(22px, 5.2vw, 30px);
    line-height: 1.33;
  }

  .c-h2__en {
    margin-top: 10px;
    font-size: clamp(14px, 3.4vw, 20px);
    letter-spacing: clamp(3px, 1.6vw, 6px);
  }
}

.c-section__note {
  margin: 0;
  padding-left: 20px;
  font-size: var(--text-note);
  color: #161616;
}

/* 講師紹介：PC は2列、スマホは縦積み（同一カード構造） */
.c-staff__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(var(--space-6), 4vw, var(--space-gutter));
  align-items: stretch;
}

.c-staff {
  width: 100%;
  min-width: 0;
}

.c-staff__card {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
  width: 100%;
  max-width: 560px;
  margin-inline: auto;
  padding: 50px;
  border: 2px solid #ce2525;
  border-radius: 14px;
  background-color: var(--color-surface);
  overflow: hidden;
  box-sizing: border-box;
}

@media (max-width: 767px) {
  .c-staff__card {
    padding: 30px;
  }
}

.c-staff__intro {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  padding: 0;
}

.c-staff__avatar {
  width: auto;
  height: auto;
  flex-shrink: 0;
  overflow: visible;
}

.c-staff__face {
  display: block;
  width: 250px;
  height: 250px;
  border-radius: var(--radius-pill);
  object-fit: cover;
  margin-bottom: 40px;
}

.c-staff__name {
  margin: 0;
  box-sizing: border-box;
  width: 100%;
  padding-block: 10px;
  padding-inline: clamp(14px, 4vw, 22px);
  border-radius: var(--radius-pill);
  font-size: clamp(14px, 3.6vw, var(--text-staff-name));
  font-weight: var(--weight-regular);
  line-height: 1.35;
  text-align: center;
  color: var(--color-white);
  background-color: #ce2525;
}

.c-staff__bio {
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.c-staff__row {
  display: grid;
  grid-template-columns: minmax(3.5em, 4.8em) minmax(0, 1fr);
  gap: var(--space-3) var(--space-4);
  align-items: start;
}

.c-staff__label {
  margin: 0;
  font-size: var(--text-staff-body);
  font-weight: var(--weight-bold);
  line-height: 1.6;
  color: var(--color-text);
}

.c-staff__list {
  margin: 0;
  padding-left: 1.15em;
  font-size: var(--text-staff-body);
  line-height: 1.65;
  font-weight: var(--weight-regular);
  color: var(--color-text);
}

.c-staff__list li {
  margin-block: 0.15em;
}

.c-staff__text {
  margin: 0;
  font-size: var(--text-staff-body);
  line-height: 1.65;
  font-weight: var(--weight-regular);
  color: var(--color-text);
}

.c-table-wrap {
  width: 100%;
  overflow-x: auto;
  border: var(--border-width) solid #ce2525;
  border-radius: 0;
  background-color: var(--color-surface);
}

/* スケジュール：時間レール＋本表（Figma：赤ヘッダー・縦罫線のみ・枠外に時刻） */
.c-schedule-shell {
  /* 30分1行の高さ（レール・本表で同一。padding 込みの外寸） */
  --schedule-slot-row-h: 25px;
  /* 曜日ヘッダー行の高さ（レールのスペーサーと本表の .c-schedule__day で一致） */
  --schedule-thead-h: 50px;
  /* 9:00〜22:00 上辺ラベルの微調整（translateY に加算） */
  --schedule-boundary-label-nudge: 0px;
  display: flex;
  align-items: stretch;
  gap: 0;
  width: 100%;
  max-width: var(--content-max);
  margin-inline: auto;
  box-sizing: border-box;
  border-radius: 0;
  overflow: hidden;
}

.c-schedule__rail {
  display: flex;
  flex-direction: column;
  flex: 0 0 auto;
  min-width: 0;
  align-self: stretch;
  background-color: var(--color-page);
}

.c-schedule__rail-table {
  /* flex で縦に伸ばさない（本表と行位置がズレる原因になる） */
  flex: 0 0 auto;
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border-top: 0;
  border-bottom: 0;
  border-left: 0;
  border-right: none;
  background-color: var(--color-page);
  box-sizing: border-box;
}

.c-schedule__rail-table thead th.c-schedule__rail-thead-spacer {
  height: var(--schedule-thead-h);
  min-height: 0;
  padding-block: 0;
  padding-inline: var(--space-2);
  font-family: var(--font-jp);
  font-size: var(--text-table-head);
  font-weight: var(--weight-regular);
  line-height: 40px;
  color: transparent;
  background-color: var(--color-page);
  border: 0;
  border-right: none;
  box-sizing: border-box;
  vertical-align: middle;
}

.c-schedule__rail-time {
  padding-block: 6px;
  padding-inline: var(--space-3) var(--space-2);
  font-family: var(--font-inter);
  font-variant-numeric: tabular-nums;
  font-size: var(--text-schedule-time-col);
  font-weight: var(--weight-regular);
  line-height: 1.35;
  text-align: right;
  vertical-align: middle;
  color: #ce2525;
  background-color: var(--color-page);
  border-top: 0;
  border-bottom: 0;
  border-left: 0;
  border-right: none;
  white-space: nowrap;
  min-width: 3.75rem;
  box-sizing: border-box;
}

.c-schedule__rail-sync {
  width: 0;
  min-width: 0;
  max-width: 0;
  height: var(--schedule-slot-row-h);
  padding-block: 0;
  padding-inline: 0;
  margin: 0;
  border: 0;
  overflow: hidden;
  box-sizing: border-box;
  font-size: clamp(12px, 2.4vw, var(--text-table));
  line-height: 1.35;
  vertical-align: middle;
  color: transparent;
  background-color: var(--color-page);
}

.c-schedule__rail-table tbody th.c-schedule__rail-time[rowspan="2"] {
  height: calc(2 * var(--schedule-slot-row-h));
  box-sizing: border-box;
}

.c-schedule__rail-table tbody th.c-schedule__rail-time:not([rowspan]) {
  height: var(--schedule-slot-row-h);
  box-sizing: border-box;
}

.c-schedule__rail-table tbody th.c-schedule__rail-time {
  padding-block: 0;
}

.c-table-wrap--schedule {
  flex: 1 1 auto;
  min-width: 0;
  align-self: stretch;
  border: 0;
  border-radius: 0;
  background: none;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

.c-schedule {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-inter);
  font-size: var(--text-table);
  font-weight: var(--weight-regular);
  min-width: 640px;
  box-sizing: border-box;
}

.c-schedule th,
.c-schedule td,
.c-price th,
.c-price td {
  font-weight: var(--weight-regular);
}

.c-schedule th strong,
.c-schedule td strong,
.c-price th strong,
.c-price td strong {
  font-weight: var(--weight-regular);
}

.c-schedule__rail-table th,
.c-schedule__rail-table td {
  font-weight: var(--weight-regular);
}

.c-schedule__rail-table th strong,
.c-schedule__rail-table td strong {
  font-weight: var(--weight-regular);
}

.c-schedule--slots {
  min-width: 760px;
  font-family: var(--font-jp);
}

.c-schedule--slots .c-schedule__day,
.c-schedule--slots .c-schedule__cell:not(.c-schedule__cell--general):not(.c-schedule__cell--junior) {
  min-width: 5.25rem;
}

.c-schedule--slots .c-schedule__cell--general,
.c-schedule--slots .c-schedule__cell--junior {
  min-width: 6.5rem;
}

.c-schedule thead th {
  background-color: #ce2525;
  color: var(--color-white);
}

.c-schedule__day {
  height: var(--schedule-thead-h);
  min-height: 0;
  padding-block: 0;
  padding-inline: var(--space-2);
  font-family: var(--font-jp);
  font-size: var(--text-table-head);
  font-weight: var(--weight-regular);
  line-height: 40px;
  text-align: center;
  vertical-align: middle;
  box-sizing: border-box;
  background-color: #ce2525;
  color: var(--color-white);
  border-top: 0;
  border-bottom: 1px solid #ce2525;
  border-left: 1px solid #ce2525;
  border-right: 0;
}

.c-schedule__day:first-child {
  border-left: 1px solid #ce2525;
}

.c-schedule__day:last-child {
  border-right: 1px solid #ce2525;
}

/* レール側：1時間ぶん縦結合の中央寄せ */
.c-schedule__rail-time.c-schedule__time--pair {
  vertical-align: middle;
}

/* 9:00〜22:00：各ブロック先頭行の上辺（30分境界）の中央に文字の中心を合わせる */
.c-schedule__rail-time.c-schedule__rail-time--on-boundary {
  vertical-align: top;
  margin-top: 0;
  padding-block: 0;
  position: relative;
  z-index: 2;
}

.c-schedule__rail-time-label {
  position: absolute;
  white-space: nowrap;
  font-family: var(--font-inter);
  font-variant-numeric: tabular-nums;
  font-size: var(--text-schedule-time-col);
  font-weight: var(--weight-regular);
  line-height: 1.35;
  color: #ce2525;
}

.c-schedule__rail-time--on-boundary .c-schedule__rail-time-label {
  top: 0;
  left: var(--space-3);
  right: var(--space-2);
  transform: translateY(calc(-50% + var(--schedule-boundary-label-nudge)));
  text-align: right;
}

.c-schedule__cell {
  padding-block: 6px;
  padding-inline: var(--space-2);
  text-align: center;
  vertical-align: middle;
  color: var(--color-text);
  background-color: #fff;
  border-top: 0;
  border-bottom: 0;
  border-left: 1px solid #ce2525;
  border-right: 0;
  line-height: 2.4;
  font-size: clamp(12px, 2.4vw, var(--text-table));
  box-sizing: border-box;
}

.c-schedule--slots tbody td.c-schedule__cell:not([rowspan]) {
  height: var(--schedule-slot-row-h);
  box-sizing: border-box;
}

.c-schedule--slots tbody td.c-schedule__cell {
  padding-block: 0;
}

.c-schedule--slots tbody td.c-schedule__cell[rowspan="4"] {
  height: calc(4 * var(--schedule-slot-row-h));
}

.c-schedule--slots tbody td.c-schedule__cell[rowspan="5"] {
  height: calc(5 * var(--schedule-slot-row-h));
}

.c-schedule__cell:last-child {
  border-right: 1px solid #ce2525;
}

.c-schedule--slots tbody tr:last-child > .c-schedule__cell {
  border-bottom: 1px solid #ce2525;
}

.c-schedule__cell--general {
  background: #ffefef;
  font-weight: var(--weight-regular);
  color: var(--color-text);
}

.c-schedule__cell--junior {
  background: #eff1ff;
  font-weight: var(--weight-regular);
  color: var(--color-text);
}

@media (max-width: 767px) {
  .c-section__inner > .c-schedule-shell {
    width: 100%;
    max-width: var(--content-max);
    margin-inline: auto;
    padding-inline: 0;
    box-sizing: border-box;
  }

  .c-table-wrap--schedule {
    border-radius: 0;
    border-left: 0;
    border-right: 0;
  }

  .c-schedule-shell {
    border-radius: 0;
    --schedule-slot-row-h: 20px;
  }
}

.c-price-tables {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}

.c-price-block {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 80px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

.c-price-block.c-price-block--junior {
  margin-bottom: 0;
}

.c-price-block__title {
  margin: 0;
  padding-bottom: 8px;
  border-bottom: 1px solid #ce2525;
  color: #ce2525;
  font-family: "Noto Sans CJK JP", "Noto Sans JP", var(--font-jp);
  font-size: 20px;
  font-style: normal;
  font-weight: 700;
  line-height: normal;
  box-sizing: border-box;
}

.c-price-block__line {
  margin: 0;
  font-size: var(--text-table);
  font-weight: var(--weight-medium);
  color: var(--color-text);
}

.c-price-block__subhead {
  margin: 0;
  font-size: var(--text-table);
  font-weight: var(--weight-bold);
  color: var(--color-text);
}

.c-price-block__note {
  margin-block-start: var(--space-2);
  padding-left: 20px;
}

.c-section__note.c-price-block__note {
  margin-block-start: 0;
}

.c-price {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--text-table);
  border: var(--border-width) solid #ce2525;
}

.c-price__th {
  padding-block: var(--space-3);
  padding-inline: var(--space-4);
  text-align: left;
  font-weight: var(--weight-regular);
  color: var(--color-brand);
  border: var(--border-width) solid #ce2525;
  background-color: var(--color-surface);
  width: 32%;
}

.c-price__th--pink {
  background-color: var(--color-price-head);
  color: var(--color-text);
}

.c-price__td {
  padding-block: var(--space-3);
  padding-inline: var(--space-4);
  border: var(--border-width) solid #ce2525;
  background-color: var(--color-surface);
}

.c-price__td--num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* 料金ブロック内：セル高さ 40px・枠は #000（本表外枠も統一） */
.c-price-block .c-price {
  border: 1px solid #000;
}

.c-price-block .c-price__th,
.c-price-block .c-price__td {
  height: 40px;
  min-height: 40px;
  padding-block: 0;
  padding-inline: var(--space-3);
  border: 1px solid #000;
  box-sizing: border-box;
  vertical-align: middle;
}

/* 一般の部：2列テーブル 480px・左寄せ・左に余白・TH は太字にしない */
.c-price--general {
  width: 480px;
  max-width: 100%;
  margin-left: 20px;
  margin-right: 0;
  box-sizing: border-box;
}

.c-price--general .c-price__th {
  width: 50%;
  text-align: center;
  font-weight: var(--weight-regular);
  color: var(--color-text);
}

.c-price--general .c-price__td,
.c-price--general .c-price__td--num {
  text-align: center;
}

/* ジュニア料金：3列＋2段ヘッダー。横スクロールは .c-price-block に委譲 */
.c-price--junior {
  width: 720px;
  max-width: 100%;
  min-width: 0;
  margin-left: 20px;
  margin-right: 0;
  box-sizing: border-box;
}

.c-price--junior .c-price__th,
.c-price--junior .c-price__td {
  text-align: center;
  vertical-align: middle;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.c-price--junior .c-price__th {
  width: auto;
  font-weight: var(--weight-regular);
}

/* 夕方・夜のサブヘッダー行 */
.c-price--junior thead tr:nth-child(2) .c-price__th {
  background-color: #ededed;
  color: var(--color-text);
}

.c-price--junior .c-price__td--num {
  text-align: center;
}

@media (max-width: 767px) {
  .c-price-block {
    overflow-x: visible;
    max-width: 100%;
  }

  .c-price--general {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
  }

  #price .c-price-block--junior {
    width: 100%;
    max-width: var(--content-max);
    margin-inline: auto;
    padding-inline: 0;
    box-sizing: border-box;
  }

  .c-price--junior {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin-left: 0;
  }

  .c-price--junior .c-price__th,
  .c-price--junior .c-price__td {
    padding-inline: var(--space-2);
    font-size: clamp(12px, 3.3vw, 14px);
    line-height: 1.45;
  }
}

.c-access__addr {
  margin: 0 0 10px;
  font-size: var(--text-split-body);
  font-weight: var(--weight-regular);
  text-align: center;
}

/* アクセス：.c-section の横パディングで地図が狭くなるのを防ぐ（地図は .l-main 内いっぱい＝最大 --content-max） */
#access.c-section {
  padding-inline: 0;
}

#access .c-section__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  margin-bottom: 100px;
  width: 100%;
  box-sizing: border-box;
}

@media (min-width: 768px) {
  #access.c-section {
    padding-bottom: clamp(var(--space-10), 8vw, 120px);
  }

  #access .c-section__inner {
    margin-bottom: 150px;
  }
}

#access .c-h2 {
  padding-inline: var(--space-inline);
  box-sizing: border-box;
}

/* 住所はコンテンツ幅（inner）の左端に揃える */
#access .c-access__addr {
  padding-inline: 0;
  text-align: left;
  box-sizing: border-box;
}

/* FEATURES：.c-section と .c-split の横パディングをやめ、inner を --content-max いっぱいに */
#features.c-section {
  padding-inline: 0;
}

#features .c-section__inner {
  width: 100%;
  max-width: var(--content-max);
  margin-inline: auto;
  box-sizing: border-box;
}

#features .c-h2 {
  padding-inline: var(--space-inline);
  box-sizing: border-box;
}

#features .c-split {
  padding-inline: 0;
}

#features .c-split__body {
  border-radius: 10px;
  background: #fff;
  box-shadow: none;
  border: 0;
  padding: 25px;
}

/* 講師紹介：横パディングを外し inner を --content-max に */
#staff.c-section {
  padding-inline: 0;
  padding-bottom: calc(clamp(var(--space-10), 8vw, var(--space-12)) / 2);
}

#staff .c-section__inner {
  width: 100%;
  max-width: var(--content-max);
  margin-inline: auto;
  box-sizing: border-box;
}

#staff .c-h2 {
  padding-inline: var(--space-inline);
  box-sizing: border-box;
}

/* スケジュール：FEATURES / STAFF と同様、セクション横パディングを外し inner を --content-max */
#schedule.c-section {
  padding-inline: 0;
}

#schedule .c-section__inner {
  width: 100%;
  max-width: var(--content-max);
  margin-inline: auto;
  box-sizing: border-box;
}

#schedule .c-h2 {
  padding-inline: var(--space-inline);
  box-sizing: border-box;
}

#schedule .c-section__note {
  padding-right: var(--space-inline);
  box-sizing: border-box;
}

/* 料金：スケジュール等と同様、セクション横パディングを外し inner を --content-max */
#price.c-section {
  padding-inline: 0;
  padding-bottom: 30px;
}

#price .c-section__inner {
  width: 100%;
  max-width: var(--content-max);
  margin-inline: auto;
  box-sizing: border-box;
}

#price .c-h2 {
  padding-inline: var(--space-inline);
  box-sizing: border-box;
}

#price .c-price-block--junior {
  padding-inline: 0;
  box-sizing: border-box;
}

.c-access__map {
  position: relative;
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  height: 500px;
  margin-inline: 0;
  border-radius: 0;
  overflow: hidden;
  border: 0;
  box-shadow: none;
}

.c-access__frame {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

/* マップ直下：コンテンツ幅を超えて最大 1400px・隙間なし・角丸なし（SP は 3 枚目非表示） */
.c-access__strip-wrap {
  width: min(100vw, var(--layout-max));
  margin-inline: auto;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
  margin-block-start: var(--space-6);
}

@media (max-width: 767px) {
  .c-access__strip-wrap {
    width: 100vw;
    max-width: 100vw;
    margin-inline: calc(50% - 50vw);
    padding: 0;
    left: auto;
    transform: none;
    box-sizing: border-box;
  }
}

.c-access__strip {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  width: 100%;
  gap: 0;
  border-radius: 0;
  overflow: hidden;
}

.c-access__strip-cell {
  display: flex;
  flex-direction: column;
  flex: 1 1 33.333%;
  min-width: 0;
}

.c-access__shot {
  display: block;
  width: 100%;
  flex: 1 1 auto;
  min-height: 200px;
  height: 100%;
  object-fit: cover;
  object-position: center;
  border-radius: 0;
  box-shadow: none;
}

@media (max-width: 767px) {
  .c-access__strip-cell--hide-sp {
    display: none;
  }

  .c-access__strip-cell:not(.c-access__strip-cell--hide-sp) {
    flex: 1 1 50%;
  }
}

/* お問い合わせ帯（Figma 寄せ・角丸10px・#CE2525）※横パディングなしで .l-main 内いっぱい＝--content-max */
.c-cta {
  padding-block: var(--space-8);
  padding-inline: 0;
  background-color: transparent;
  color: var(--color-white);
}

.c-cta__shell {
  width: 100%;
  max-width: none;
  margin-inline: 0;
}

.c-cta__inner {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin-inline: 0;
  min-height: 232px;
  padding-block: clamp(var(--space-5), 3vw, var(--space-8));
  padding-inline: clamp(var(--space-5), 4vw, var(--space-10));
  border-radius: 10px;
  background-color: #ce2525;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: var(--space-5);
}

.c-cta__copy {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  align-items: flex-start;
  min-width: 0;
}

/* CTA 内は .c-cta__copy の gap で見出しと本文の間隔を取る */
.c-cta .c-h2 {
  margin-bottom: 0;
}

.c-cta .c-h2__ja,
.c-cta .c-h2__en {
  color: var(--color-white);
}

.c-cta__text {
  margin: 0;
  font-size: var(--text-cta-body);
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.95);
}

@media (max-width: 767px) {
  .c-cta__copy {
    align-items: center;
    width: 100%;
  }

  .c-cta .c-h2 {
    align-items: center;
    text-align: center;
  }

  .c-cta .c-h2__ja {
    font-family: var(--font-inter);
    font-size: 20px;
    font-style: normal;
    font-weight: var(--weight-semibold);
    line-height: normal;
    text-align: center;
    color: var(--color-white);
  }

  .c-cta .c-h2__en {
    text-align: center;
  }

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

  .c-cta__card-num {
    font-size: 20px;
  }
}

.c-cta__card {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  align-self: center;
  justify-content: center;
  box-sizing: border-box;
  width: 336px;
  max-width: 100%;
  height: 73.09px;
  min-height: 73.09px;
  padding-block: 0;
  padding-inline: 14px 36px;
  border-radius: 5px;
  background-color: #fff;
  color: #ce2525;
  text-decoration: none;
  box-shadow: none;
  transition: opacity 0.15s ease, transform 0.15s ease;
}

.c-cta__card:hover {
  opacity: 0.94;
}

.c-cta__card:focus-visible {
  outline: 2px solid var(--color-white);
  outline-offset: 3px;
}

.c-cta__card-main {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  flex: 1 1 auto;
  min-width: 0;
  text-align: center;
}

.c-cta__card-line {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

.c-cta__card-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 22px;
}

.c-cta__card-icon svg {
  display: block;
  width: 16px;
  height: 22px;
}

.c-cta__card-num {
  font-family: var(--font-inter);
  font-size: 25px;
  font-style: normal;
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  line-height: normal;
  text-align: center;
  color: #ce2525;
}

.c-cta__card-hours {
  margin-top: 0;
  font-family: var(--font-inter);
  font-size: 14px;
  font-style: normal;
  font-weight: var(--weight-regular);
  line-height: 25px;
  text-align: center;
  color: #ce2525;
}

.c-cta__card-arrow {
  position: absolute;
  top: 50%;
  right: 10px;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  height: 24px;
  flex-shrink: 0;
}

.c-cta__card-arrow svg {
  display: block;
  height: 24px;
  width: auto;
}

.c-footer {
  background-color: var(--color-page);
  padding-block: var(--space-8);
  padding-inline: var(--space-inline);
}

.c-footer__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-4);
}

.c-footer__inner--legacy {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
}

.c-footer__title-block {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-1);
  min-width: 0;
}

.c-footer__lead {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-3);
  width: 100%;
}

@media (min-width: 720px) {
  .c-footer__lead {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-rows: auto auto;
    gap: var(--space-4);
    align-items: start;
  }

  .c-footer__title-block {
    grid-column: 1;
    grid-row: 1;
  }

  .c-footer__sns {
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
    justify-content: flex-end;
  }

  .c-footer__copy {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}

.c-footer__row {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}

.c-footer__row--head {
  align-items: center;
}

.c-footer__site-name {
  margin: 0;
  font-family: var(--font-jp);
  font-size: var(--text-footer-site);
  font-weight: var(--weight-medium);
  line-height: 1.2;
  color: var(--color-text);
}

.c-footer__sns {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--footer-sns-gap);
}

@media (min-width: 720px) {
  .c-footer__sns {
    gap: var(--footer-sns-gap-pc);
  }
}

@media (max-width: 719px) {
  .c-footer__inner {
    gap: var(--space-3);
  }

  .c-footer__site-name {
    font-weight: var(--weight-bold);
  }

  .c-footer__sns {
    justify-content: flex-start;
    flex-wrap: nowrap;
    width: 100%;
  }
}

.c-footer__sns-btn {
  position: relative;
  box-sizing: border-box;
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  width: var(--footer-link-btn-w);
  max-width: 100%;
  height: var(--footer-link-btn-h);
  padding-inline: 16px 40px;
  border: var(--border-width) solid var(--color-footer-link-btn);
  border-radius: var(--radius-sm);
  background-color: var(--color-white);
  color: var(--color-footer-link-btn);
  font-family: var(--font-inter);
  font-weight: var(--weight-semibold);
  font-size: 15px;
  line-height: 1.2;
  text-decoration: none;
  flex-shrink: 0;
  transition: opacity 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.c-footer__sns-btn:hover {
  opacity: 0.88;
}

.c-footer__sns-btn:focus-visible {
  outline: 2px solid var(--color-footer-link-btn);
  outline-offset: 3px;
}

.c-footer__sns-btn-label {
  display: block;
  width: 100%;
  text-align: center;
}

.c-footer__sns-btn--line .c-footer__sns-btn-label {
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.c-footer__sns-btn-ext {
  position: absolute;
  top: 50%;
  right: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: translateY(-50%);
  color: inherit;
  pointer-events: none;
}

.c-footer__sns-btn-ext svg {
  display: block;
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}

@media (max-width: 719px) {
  .c-footer__sns-btn {
    flex: 1 1 calc(50% - var(--footer-sns-gap) / 2);
    width: auto;
    max-width: var(--footer-link-btn-w);
    min-width: 0;
    flex-shrink: 1;
  }
}

.c-footer__addr {
  margin: 0;
  font-family: var(--font-jp);
  font-size: var(--text-footer-addr);
  font-weight: var(--weight-regular);
  line-height: 1.65;
  color: var(--color-text);
}

.c-footer__row--foot {
  margin-block-start: var(--space-2);
  align-items: center;
}

.c-footer__copy {
  margin: 0;
  font-family: var(--font-inter);
  font-size: var(--text-footer-copy);
  font-weight: var(--weight-regular);
  line-height: 1.4;
  color: var(--color-text);
}

/* 旧フッター（404 等） */
.c-footer__brand {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: var(--space-3);
}

.c-footer__mark {
  display: block;
  width: var(--size-footer-mark);
  height: var(--size-footer-mark);
  border-radius: var(--radius-sm);
  object-fit: contain;
}

.c-footer__name {
  font-size: var(--text-footer);
  font-weight: var(--weight-bold);
  color: var(--color-text);
}

.c-error {
  width: 100%;
  padding-block: var(--space-11);
  padding-inline: var(--space-inline);
}

.c-error__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
  align-items: center;
  text-align: center;
}

.c-error__title {
  margin: 0;
  font-size: var(--text-error-title);
  font-weight: var(--weight-bold);
  color: var(--color-brand);
}

.c-error__code {
  margin: 0;
  font-family: var(--font-inter);
  font-weight: var(--weight-semibold);
  font-size: var(--text-error-code);
  letter-spacing: var(--letter-error-code);
  color: var(--color-brand);
}

.c-error__text {
  margin: 0;
  font-size: var(--text-error-body);
  line-height: var(--line-error-body);
  color: var(--color-text);
}

.c-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding-block: var(--pad-btn-y);
  padding-inline: var(--space-8);
  border-radius: var(--radius-btn-pill);
  font-weight: var(--weight-bold);
  font-size: var(--text-error-body);
  text-decoration: none;
  background-color: var(--color-brand);
  color: var(--color-white);
  border: var(--border-width-strong) solid var(--color-brand);
}

@media (min-width: 768px) {
  .c-split__inner {
    flex-direction: row;
    align-items: stretch;
    gap: var(--space-gutter);
  }

  .c-split--img-right .c-split__inner {
    flex-direction: row-reverse;
  }

  .c-split__body {
    margin-top: 0;
    margin-inline: 0;
  }

  .c-split__img {
    border-radius: var(--hero-radius);
  }

  #features .c-split__img {
    border-radius: 0;
  }

  #features .c-split__inner {
    gap: 0;
    align-items: flex-end;
    justify-content: flex-start;
  }

  /* 狭いタブレット幅でも親を超えないよう、50% + 固定550px を避けて縮小可能にする */
  #features .c-split__visual {
    flex: 1 1 50%;
    min-width: 0;
    width: 50%;
    max-width: 50%;
  }

  #features .c-split__body {
    flex: 1 1 50%;
    min-width: 0;
    width: auto;
    max-width: min(550px, 50%);
    min-height: 305px;
    height: auto;
    overflow: visible;
    box-sizing: border-box;
    z-index: 1;
    transform: translateY(40px);
    padding: 40px;
  }

  /* 幅が狭いときは重なりを弱め、はみ出しを抑える（-60 〜 -24 の間で -5vw） */
  #features .c-split--img-left .c-split__body {
    margin-inline-start: clamp(-60px, -5vw, -24px);
  }

  #features .c-split--img-right .c-split__body {
    margin-inline-end: clamp(-60px, -5vw, -24px);
  }

  /* 1・3 と同様に写真をカード高にフィット（img-right と対称） */
  #features .c-split--img-left .c-split__img {
    width: 100%;
    height: 100%;
    min-height: 305px;
    object-fit: cover;
  }

  #features .c-split--img-right .c-split__img {
    width: 100%;
    height: 100%;
    min-height: 305px;
    object-fit: cover;
  }

  .c-staff__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-gutter);
  }

  .c-staff__card {
    max-width: none;
    height: 100%;
  }

  .c-cta__inner {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    height: 232px;
    min-height: 232px;
    gap: var(--space-7);
  }

  .c-cta .c-h2 {
    align-items: flex-start;
    text-align: left;
  }

  .c-cta .c-h2__ja,
  .c-cta .c-h2__en {
    text-align: left;
  }

  .c-cta__card {
    width: 336px;
    max-width: 100%;
    flex-shrink: 0;
  }
}

@media (min-width: 1024px) {
  .c-hero {
    padding-block: var(--space-9);
  }
}
