@charset "UTF-8";

/* ==========================================================
   Variables
   モノトーン × 明朝の、余白を大きくとったエディトリアル調
   ========================================================== */
:root {
  --color-bg:        #FFFFFF;
  --color-bg-sub:    #F5F4F1;  /* わずかに温かみのあるオフホワイト */
  --color-ink:       #111111;  /* 見出し・黒帯 */
  --color-text:      #1A1A1A;
  --color-text-sub:  #5E5E5E;
  --color-border:    #D9D7D2;
  --color-line-dark: rgba(255, 255, 255, .28);

  --font-ja: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --font-en: "Cormorant Garamond", "Shippori Mincho", serif;

  --content-width: 1120px;
  --gutter: 24px;
  --section-space: 88px;
  --header-h: 88px;
  --ease: .3s ease;

  --fs-body: .9375rem;
  --fs-lead: 1.125rem;
  --fs-h2: clamp(1.375rem, 2.4vw, 1.75rem);
  --fs-h3: 1.0625rem;
  --fs-en: .9375rem;
  --fs-caption: .75rem;
}

/* ==========================================================
   Base
   ========================================================== */
*, *::before, *::after { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-h);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-ja);
  font-size: 15px;
  font-weight: 500;          /* 明朝は細く見えるため本文も500で読みやすく */
  line-height: 1.9;
  letter-spacing: .05em;
  overflow-x: hidden;
  font-variant-numeric: lining-nums;
}
body.is-locked { overflow: hidden; }
/* 大きな透かし文字（.about__watermark）が右にはみ出し、タブレット幅で横スクロールが出るのを防ぐ */
.about { overflow-x: clip; }
/* .container の左右余白を padding ショートハンドで 0 に上書きしていたため、
   1168px 未満で本文が画面の端に張り付いていた。左右だけ .container の余白に戻す */
.apply .apply__grid.container,
.academy .academy__body.container,
.philosophy .philosophy__inner.container { padding-left: var(--gutter); padding-right: var(--gutter); }
h1, h2, h3, h4, p, ul, ol, dl, dd, figure, blockquote { margin: 0; }
ul, ol { padding: 0; list-style: none; }
address { font-style: normal; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; transition: color var(--ease), background var(--ease), opacity var(--ease), border-color var(--ease); }
button { font: inherit; color: inherit; cursor: pointer; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }

.container { max-width: calc(var(--content-width) + var(--gutter) * 2); margin: 0 auto; padding: 0 var(--gutter); }
.container--narrow { max-width: calc(880px + var(--gutter) * 2); }
.section { padding: var(--section-space) 0; }
.section--sub { background: var(--color-bg-sub); }
.about { padding-top: 64px; padding-bottom: 0; }
.u-pc { display: inline; }
.u-sp { display: none; }
.u-visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* ==========================================================
   Image placeholder（画像差し替え用）
   img の src を入れると画像が表示され、IMAGE表記は隠れます
   ========================================================== */
.ph {
  position: relative;
  display: block;
  overflow: hidden;
  background: #DAD8D3;
}
.ph::before {
  content: "IMAGE";
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--font-en);
  font-size: 1.125rem;
  letter-spacing: .3em;
  color: #8E8B84;
}
.ph img { position: relative; width: 100%; height: 100%; object-fit: cover; }
.ph img[src=""], .ph img:not([src]) { visibility: hidden; }
.ph:has(img[src]:not([src=""]))::before { content: none; }
.ph--fv    { aspect-ratio: 1024 / 522; } /* 横長ヒーロー画像の比率（文字・顔が切れないよう元比率のまま） */
.ph--about { aspect-ratio: 3 / 4; }
.ph--work  { aspect-ratio: 3 / 2; }
.ph--modal { aspect-ratio: 16 / 9; }
.ph--scene { aspect-ratio: 3 / 2; }
.ph--tall  { aspect-ratio: 3 / 4; }
.ph--contact { aspect-ratio: 4 / 3; }
.about__img { object-position: 50% 12%; }
.about__full { object-position: 50% 20%; }
.ph--scene img[src*="seminar"] { object-position: 50% 35%; }
.ph--contact img { object-position: 50% 18%; }

/* ==========================================================
   Links / Buttons
   ========================================================== */
/* 細い線の円形ボタン（参考サイトの「制作実績を見る」風） */
.circle-btn {
  position: relative;
  display: inline-grid;
  place-items: center;
  flex-shrink: 0;
  width: 184px;
  height: 184px;
  border: 1px solid var(--color-ink);
  border-radius: 50%;
  color: var(--color-ink);
  text-align: center;
  transition: background .4s ease, color .4s ease, transform .4s ease;
}
.fv .circle-btn { animation: pulseRing 2.8s ease-out infinite; }
.fv .circle-btn:hover { animation-play-state: paused; }
.circle-btn:hover { background: var(--color-ink); color: #fff; transform: scale(1.06) rotate(6deg); }
.circle-btn__label {
  padding-bottom: 4px;
  border-bottom: 1px solid currentColor;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.7;
  letter-spacing: .1em;
}
.circle-btn--light { border-color: #fff; color: #fff; }
.circle-btn--light:hover { background: #fff; color: var(--color-ink); transform: scale(1.06) rotate(-6deg); }
.circle-btn--lg { width: 260px; height: 260px; }
.circle-btn--lg .circle-btn__label { font-size: 1.1875rem; }

.text-link {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding-bottom: 4px;
  border-bottom: 1px solid currentColor;
  font-weight: 700;
  letter-spacing: .1em;
}
.text-link::after {
  content: "";
  width: 32px;
  height: 1px;
  background: currentColor;
  transition: width var(--ease);
}
.text-link:hover::after { width: 48px; }

/* ==========================================================
   Logo
   ========================================================== */
.logo { display: inline-flex; align-items: center; flex-shrink: 0; }
.logo__img { width: auto; height: 44px; }
.logo:hover { opacity: .75; }
.footer__logo .logo__img { height: 48px; }

/* ==========================================================
   Section heading（英字ラベル＋明朝の大見出し）
   ========================================================== */
.section-head { margin-bottom: 28px; }
.section-head__en {
  display: flex;
  align-items: center;
  gap: 16px;
  font-family: var(--font-en);
  font-size: var(--fs-en);
  font-weight: 500;
  letter-spacing: .2em;
  color: var(--color-text-sub);
}
.section-head__en::before { content: ""; width: 40px; height: 1px; background: currentColor; }
.section-head__ja {
  margin-top: 6px;
  font-size: var(--fs-h2);
  font-weight: 500;
  line-height: 1.45;
  letter-spacing: .1em;
  color: var(--color-ink);
}
.section-head--center { margin-bottom: 0; text-align: center; }
.section-head--center .section-head__en { justify-content: center; }
.section-head--invert .section-head__en { color: rgba(255,255,255,.55); }
.section-head--invert .section-head__ja { color: #fff; }

/* ==========================================================
   0. Header
   ========================================================== */
.header {
  position: fixed;
  top: 16px;
  right: 24px;
  left: 24px;
  z-index: 100;
  height: 70px;
  border: 1px solid rgba(17, 17, 17, .16);
  background: rgba(255, 255, 255, .72);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .7),
    0 18px 48px rgba(17, 17, 17, .08);
  backdrop-filter: blur(18px) saturate(1.2);
  -webkit-backdrop-filter: blur(18px) saturate(1.2);
  transition: background .45s ease, box-shadow .45s ease, border-color .45s ease;
}
.header.is-scrolled {
  border-color: rgba(17, 17, 17, .22);
  background: rgba(255, 255, 255, .92);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .85),
    0 14px 40px rgba(17, 17, 17, .12);
}
.header--film:not(.is-scrolled) {
  border-color: transparent;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.header--film:not(.is-scrolled) .logo__img {
  filter: brightness(0) invert(1);
}
.header--film:not(.is-scrolled) .nav__link { color: #fff; }
.header--film:not(.is-scrolled) .nav__cta {
  border-color: rgba(255, 255, 255, .85);
  color: #fff;
  background: transparent;
}
.header--film:not(.is-scrolled) .nav__cta--juku,
.header--film:not(.is-scrolled) .nav__cta--primary {
  background: rgba(255, 255, 255, .12);
  color: #fff;
}
.header--film:not(.is-scrolled) .nav__cta::before { background: #fff; }
.header--film:not(.is-scrolled) .nav__cta:hover { color: var(--color-ink); }
.header--film:not(.is-scrolled) .header__toggle-bar { background: #fff; }
body.is-locked .header--film:not(.is-scrolled) .header__toggle-bar { background: var(--color-ink); }
body.is-locked .header--film:not(.is-scrolled) .logo__img { filter: none; }
.header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  height: 100%;
  padding: 0 18px 0 16px;
}
.header__brand {
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 0;
}
.header__place {
  display: grid;
  padding-left: 16px;
  border-left: 1px solid rgba(17, 17, 17, .18);
  font-family: var(--font-en);
  font-size: .75rem;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: .22em;
  color: var(--color-text-sub);
}
.header__place span { display: block; }
.header__toggle { display: none; }
.nav { display: flex; align-items: center; gap: 20px; }
.nav__list { display: flex; align-items: center; gap: 16px; }
.nav__link {
  position: relative;
  font-family: var(--font-en);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .08em;
  color: var(--color-ink);
}
.nav__link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 2px;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .4s ease;
}
.nav__link:hover::after { transform: scaleX(1); transform-origin: left; }
.nav__ctas {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  gap: 8px;
}
.nav__cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: 8px 12px;
  border: 1px solid var(--color-ink);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .08em;
  white-space: nowrap;
  color: var(--color-ink);
  transition: color .4s ease;
}
.nav__cta::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--color-ink);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .5s cubic-bezier(.22, 1, .36, 1);
}
.nav__cta:hover { color: #fff; background: transparent; }
.nav__cta:hover::before { transform: scaleX(1); }
.nav__cta--primary {
  color: #fff;
  background: var(--color-ink);
}
.nav__cta--primary::before { background: #fff; }
.nav__cta--primary:hover { color: var(--color-ink); }

/* ==========================================================
   1. FV
   ========================================================== */
.fv {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: 100vh;
  min-height: 100dvh;
  padding: calc(var(--header-h) + 56px) 0 72px;
  overflow: hidden;
  color: var(--color-ink);
  background: #f4f2ee;
}
.fv__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.fv__bg img {
  width: 100%;
  height: 118%;
  object-fit: cover;
  object-position: 50% 40%;
  will-change: transform;
  animation: kenburns 28s ease-in-out alternate infinite;
}
.fv__video {
  display: none;
}
.fv--film {
  color: #fff;
  background: #0b0b0b;
}
.fv--film .fv__bg img {
  height: 100%;
  animation: none;
  object-position: 50% 42%;
}
.fv--film .fv__video {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 42%;
}
.fv--film .fv__bg::after {
  background:
    linear-gradient(180deg, rgba(8,8,8,.28) 0%, rgba(8,8,8,.12) 38%, rgba(8,8,8,.72) 100%);
}
.fv--film .fv__bg::before { opacity: .25; }
.fv--film .fv__title,
.fv--film .fv__sub,
.fv--film .fv__en,
.fv--film .fv__lead,
.fv--film .fv__lead-foot,
.fv--film .fv__credit,
.fv--film .fv__name,
.fv--film .fv__name-en,
.fv--film .fv__role,
.fv--film .fv__field-ja,
.fv--film .fv__field-en,
.fv--film .fv__field-num,
.fv--film .fv__free-text,
.fv--film .fv .text-link,
.fv--film .text-link,
.fv--film .fv__scroll { color: #fff; }
.fv--film .fv__sub,
.fv--film .fv__en,
.fv--film .fv__lead-foot,
.fv--film .fv__role,
.fv--film .fv__name-en,
.fv--film .fv__field-en { color: rgba(255,255,255,.82); }
.fv--film .circle-btn { border-color: #fff; color: #fff; }
.fv--film .circle-btn:hover { background: #fff; color: var(--color-ink); }
.fv--film .fv__free-badge { background: #fff; color: var(--color-ink); }
.fv--film .fv__credit { border-top-color: rgba(255,255,255,.28); }
.fv--film .fv__lead span + span { border-left-color: rgba(255,255,255,.35); }
.fv__sound {
  position: absolute;
  z-index: 3;
  top: calc(var(--header-h) + 8px);
  right: 24px;
  left: auto;
  bottom: auto;
  padding: 8px 14px;
  border: 1px solid rgba(255,255,255,.7);
  background: rgba(0,0,0,.35);
  color: #fff;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .14em;
  backdrop-filter: blur(8px);
}
.fv__sound:hover { background: #fff; color: var(--color-ink); }
.fv__sound[aria-pressed="true"] { background: #fff; color: var(--color-ink); }
.fv__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(244,242,238,.88) 0%, rgba(244,242,238,.42) 42%, rgba(244,242,238,.08) 72%),
    linear-gradient(180deg, rgba(255,255,255,.18) 0%, rgba(244,242,238,.08) 38%, rgba(244,242,238,.55) 100%);
}
.fv__bg::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image:
    repeating-linear-gradient(0deg, transparent 0 71px, rgba(17,17,17,.035) 72px),
    repeating-linear-gradient(90deg, transparent 0 71px, rgba(17,17,17,.025) 72px);
  pointer-events: none;
}
.fv__inner {
  position: relative;
  z-index: 2;
  width: 100%;
}
.fv__inner::before {
  content: "ZAIMU";
  position: absolute;
  right: 0;
  bottom: -0.15em;
  font-family: var(--font-en);
  font-size: clamp(5rem, 18vw, 14rem);
  font-weight: 400;
  line-height: .8;
  letter-spacing: .12em;
  color: rgba(17, 17, 17, .05);
  pointer-events: none;
}
.fv__en {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 20px;
  font-family: var(--font-en);
  font-size: .8125rem;
  font-weight: 500;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--color-text-sub);
}
.fv__en span { display: inline-flex; align-items: center; gap: 20px; }
.fv__en span + span::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--color-ink);
  opacity: .45;
}
.fv__title {
  margin-top: 22px;
  font-weight: 500;
  color: var(--color-ink);
}
.fv__line { display: block; }
.fv__title-pc { display: block; }
.fv__title-sp { display: none; }
.fv__sub { display: none; }
.about__meta-sp { display: none; }
.fv__line--lead {
  font-size: clamp(1.25rem, 2.3vw, 1.875rem);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .2em;
  color: var(--color-ink);
}
.fv__line--main {
  margin-top: .06em;
  font-size: clamp(2.35rem, 6.8vw, 5.35rem);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: .04em;
}
/* --- キャッチコピーの動き：1文字ずつ浮かび上がる。「数字」は一度だけ小さく弾む --- */
.fv__char { display: inline-block; }
html:not(.no-js) .fv__title:not(.is-inview) .fv__char { opacity: 0; }
.fv__title.is-inview .fv__char {
  animation: fvCharIn .9s cubic-bezier(.22, 1, .36, 1) both;
  animation-delay: calc(var(--i) * 55ms + 150ms);
}
.fv__title.is-inview .fv__char--key {
  animation:
    fvCharIn .9s cubic-bezier(.22, 1, .36, 1) both,
    fvKeyPop .7s cubic-bezier(.34, 1.56, .64, 1) both;
  animation-delay: calc(var(--i) * 55ms + 150ms), 2.1s;
}
@keyframes fvCharIn {
  from { opacity: 0; transform: translateY(.55em) rotate(3deg); filter: blur(6px); }
  to   { opacity: 1; transform: none; filter: blur(0); }
}
@keyframes fvKeyPop {
  0%, 100% { transform: none; }
  45% { transform: translateY(-.08em) scale(1.08); }
}
.fv__em { font-weight: 700; }
.fv__row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 40px 64px;
  margin-top: 44px;
}
.fv__fields {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
}
.fv__field {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 2px;
  padding: 0 36px 0 0;
  border: 0;
  background: none;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
}
.fv__field + .fv__field {
  padding-left: 36px;
  border-left: 1px solid var(--color-ink);
}
.fv__field-num {
  grid-row: 1 / 3;
  align-self: center;
  font-family: var(--font-en);
  font-size: 1.375rem;
  font-weight: 500;
  letter-spacing: .08em;
  line-height: 1;
}
.fv__field-ja {
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .16em;
  line-height: 1.4;
}
.fv__field-en {
  font-family: var(--font-en);
  font-size: .875rem;
  font-weight: 500;
  letter-spacing: .18em;
  color: var(--color-text-sub);
}
.fv__lead {
  display: flex;
  flex-wrap: wrap;
  max-width: none;
  margin-top: 28px;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .18em;
  line-height: 1.7;
}
.fv__lead span {
  display: inline-block;
  padding-right: 22px;
}
.fv__lead span + span {
  padding-left: 22px;
  border-left: 1px solid var(--color-border);
}
.fv__lead-foot {
  max-width: 28em;
  margin-top: 14px;
  font-size: .875rem;
  letter-spacing: .08em;
  color: var(--color-text-sub);
  line-height: 1.85;
}
.fv__col--cta { display: grid; gap: 0; justify-items: start; align-content: end; }
.fv__free {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 28px;
  font-weight: 700;
  line-height: 1.7;
}
.fv__free-badge {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--color-ink);
  color: #fff;
  font-size: .9375rem;
  letter-spacing: .1em;
  animation: pulseBadge 2.4s ease-in-out infinite;
}
.fv__free-text span { display: inline-block; }
.fv__actions { display: flex; align-items: center; gap: 40px; }
.fv__action-links {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
}
.fv .text-link { color: var(--color-ink); }
.fv--film .text-link { color: #fff; }
.fv--film .text-link::after { background: #fff; }
.fv__credit {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 4px 24px;
  margin-top: 72px;
  padding-top: 18px;
  border-top: 1px solid var(--color-border);
  max-width: 52em;
}
.fv__name { font-size: 1.125rem; font-weight: 700; letter-spacing: .12em; }
.fv__name-en {
  margin-left: 14px;
  font-family: var(--font-en);
  font-size: 1.125rem;
  font-weight: 500;
  letter-spacing: .08em;
  color: var(--color-text-sub);
}
.fv__role { font-size: .9375rem; color: var(--color-text-sub); line-height: 1.8; }
.fv__scroll {
  position: absolute;
  z-index: 2;
  right: 40px;
  bottom: 28px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  font-family: var(--font-en);
  font-size: 1rem;
  letter-spacing: .2em;
  writing-mode: vertical-rl;
  color: var(--color-ink);
}
.fv__scroll::after {
  content: "";
  width: 1px;
  height: 96px;
  background: linear-gradient(var(--color-ink) 50%, var(--color-border) 50%);
  background-size: 1px 200%;
  animation: scrollLine 2.4s ease-in-out infinite;
}
@keyframes scrollLine {
  0%   { background-position: 0 100%; }
  100% { background-position: 0 -100%; }
}

/* 社長塾：FV下端のクレジット行 */
.juku-banner {
  position: relative;
  background: var(--color-ink);
  color: #fff;
}
.fv--film .juku-banner {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 4;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.55) 48%, rgba(0,0,0,.72) 100%);
  color: #fff;
  backdrop-filter: none;
}
.fv--film .juku-banner::before { display: none; }
.fv--film {
  padding-bottom: 0;
}
.fv--film .fv__inner { padding-bottom: 72px; }
.fv--film .fv__scroll { display: none; }
.juku-banner::before { content: none; }
.juku-banner__inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: baseline;
  gap: 12px 28px;
  padding: 22px 0 24px;
  border-top: 1px solid rgba(255,255,255,.32);
}
.juku-banner__en {
  font-family: var(--font-en);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .28em;
}
.juku-banner__ja {
  font-size: .875rem;
  font-weight: 500;
  letter-spacing: .2em;
}
.juku-banner__go {
  justify-self: end;
  padding-bottom: 3px;
  border-bottom: 1px solid currentColor;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .22em;
}
.juku-banner__go:hover { opacity: .65; }
.juku-banner__tag,
.juku-banner__copy,
.juku-banner__links,
.juku-banner__btn,
.juku-banner__more { display: none; }

/* ==========================================================
   2. About
   ========================================================== */
.about .section-head { margin-bottom: 28px; }
.about .section-head__en { font-size: .9375rem; }
.about .section-head__ja {
  margin-top: 6px;
  font-size: clamp(1.375rem, 2.4vw, 1.75rem);
}
.about__intro {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 36px 40px;
  align-items: start;
}
.about__message {
  display: grid;
  gap: .85em;
  font-size: .9375rem;
  line-height: 1.9;
  letter-spacing: .05em;
  color: var(--color-ink);
}
.about__lead {
  font-size: clamp(1.0625rem, 1.6vw, 1.25rem);
  font-weight: 500;
  line-height: 1.75;
  letter-spacing: .06em;
}
.about__em {
  background: linear-gradient(transparent calc(100% - 2px), var(--color-ink) calc(100% - 2px));
  padding-bottom: .04em;
  font-weight: 700;
}
.about__photo { position: relative; }
.about__photo .ph--about { position: relative; aspect-ratio: 3 / 4; }
.about__photo .ph--about::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to top, rgba(8,8,8,.55), transparent 42%);
  pointer-events: none;
}
.about__photo .ph--about img {
  height: 100%;
  object-fit: cover;
  transition: transform 1.4s cubic-bezier(.22, 1, .36, 1);
}
.about__photo:hover .ph--about img { transform: scale(1.06); }
.about__photo-caption {
  position: absolute;
  left: 10px;
  bottom: 10px;
  z-index: 2;
  margin: 0;
  color: #fff;
  font-size: .6875rem;
  font-weight: 700;
  letter-spacing: .2em;
}
.about__table-wrap {
  display: grid;
  grid-template-columns: 88px 1fr;
  gap: 16px;
  margin-top: 40px;
  padding-top: 28px;
  border-top: 1px solid var(--color-border);
}
.about__table-label {
  font-family: var(--font-en);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .12em;
  line-height: 1.6;
  color: var(--color-text-sub);
}
.profile-table { display: grid; }
.profile-table__row {
  display: grid;
  grid-template-columns: 88px 1fr;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--color-border);
}
.profile-table__row:first-child { padding-top: 0; }
.profile-table dt {
  font-family: var(--font-en);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .06em;
  line-height: 1.6;
  color: var(--color-text-sub);
}
.profile-table dd { font-size: .9375rem; line-height: 1.75; }
.about__scenes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 32px;
}
.about__scene .ph--scene { aspect-ratio: 16 / 9; }
.about__scene {
  position: relative;
  margin: 0;
  overflow: hidden;
}
.about__scene img {
  height: 100%;
  object-fit: cover;
  transition: transform 1.2s cubic-bezier(.22, 1, .36, 1);
}
.about__scene:hover img { transform: scale(1.08); }
.about__scene figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  margin: 0;
  padding: 28px 12px 8px;
  background: linear-gradient(transparent, rgba(8,8,8,.72));
  color: #fff;
  font-size: .6875rem;
  font-weight: 700;
  letter-spacing: .18em;
}

/* ==========================================================
   Philosophy（経営理念）
   ========================================================== */
.philosophy {
  position: relative;
  margin-top: 48px;
  margin-bottom: 0;
  overflow: hidden;
  color: var(--color-ink);
  background: var(--color-bg);
  border-top: 1px solid var(--color-border);
}
.philosophy__watermark {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 0;
  margin: 0;
  transform: translate(-50%, -52%);
  font-family: var(--font-en);
  font-size: clamp(4.5rem, 18vw, 11rem);
  font-weight: 400;
  line-height: .8;
  letter-spacing: .08em;
  color: var(--color-ink);
  opacity: .05;
  pointer-events: none;
  user-select: none;
  white-space: nowrap;
}
.philosophy__bg { display: none; }
.philosophy__inner {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 6px 40px;
  align-items: baseline;
  padding: 56px 0 64px;
}
.philosophy__en {
  grid-column: 1;
  font-family: var(--font-en);
  font-size: .875rem;
  font-weight: 500;
  letter-spacing: .36em;
  color: var(--color-text-sub);
}
.philosophy__label {
  grid-column: 1;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .32em;
  color: var(--color-ink);
}
.philosophy__inner blockquote {
  grid-column: 2;
  grid-row: 1 / span 2;
  margin: 0;
  padding-left: 28px;
  border-left: 1px solid var(--color-ink);
}
.philosophy__inner blockquote p {
  font-size: clamp(1.0625rem, 2vw, 1.375rem);
  font-weight: 500;
  line-height: 1.85;
  letter-spacing: .1em;
}
.philosophy__em {
  box-shadow: inset 0 -1px 0 var(--color-ink);
  padding-bottom: .06em;
  font-weight: 700;
}

/* ==========================================================
   3. Services
   ========================================================== */
.services {
  position: relative;
  overflow: hidden;
  padding: 72px 0 80px;
  background: #0b0b0b;
  color: #fff;
}
.services :focus-visible { outline-color: #fff; }
.services .section-head { margin-bottom: 28px; }
.services .section-head__en { font-size: .9375rem; }
.services .section-head__ja {
  margin-top: 6px;
  font-size: clamp(1.375rem, 2.4vw, 1.75rem);
}
.services__watermark { display: none; }
.services__list {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0;
  border-top: 1px solid rgba(255,255,255,.16);
}
.service {
  position: relative;
  display: grid;
  grid-template-columns: 2.4em 1fr;
  gap: 12px;
  align-items: start;
  overflow: hidden;
  min-height: 0;
  padding: 20px 20px 22px 0;
  margin: 0;
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.16);
  transition: background .4s ease;
}
.service:nth-child(odd) { padding-right: 28px; }
.service:nth-child(even) { padding-left: 28px; border-left: 1px solid rgba(255,255,255,.16); }
.service:hover { background: transparent; }
.service__num {
  position: static;
  font-family: var(--font-en);
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.7;
  letter-spacing: .08em;
  color: rgba(255,255,255,.4);
  opacity: 1;
  pointer-events: none;
}
.service:hover .service__num {
  opacity: 1;
  transform: none;
  color: #fff;
}
.service__body { position: relative; z-index: 1; max-width: none; }
.service__en {
  font-family: var(--font-en);
  font-size: .8125rem;
  font-weight: 500;
  letter-spacing: .2em;
  color: rgba(255,255,255,.45);
}
.service__title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  margin-top: 4px;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .08em;
  color: #fff;
}
.service__badge {
  padding: 1px 8px;
  background: #fff;
  color: var(--color-ink);
  font-size: .6875rem;
  letter-spacing: .1em;
}
.service__text {
  margin-top: 8px;
  font-size: .875rem;
  color: rgba(255,255,255,.72);
  line-height: 1.75;
}
.service__link { margin-top: 10px; color: #fff; font-size: .8125rem; }
.profile-table a { border-bottom: 1px solid currentColor; }
.profile-table a:hover { opacity: .7; }

/* ==========================================================
   3b. Study（黒字化本気塾）
   ========================================================== */
.study__grid {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) 1.15fr;
  gap: 64px 72px;
  align-items: start;
}
.study__kicker {
  font-size: .9375rem;
  font-weight: 700;
  letter-spacing: .2em;
  color: var(--color-text-sub);
}
.study__lead {
  margin: 12px 0 24px;
  font-size: var(--fs-lead);
  font-weight: 700;
  line-height: 1.7;
  letter-spacing: .08em;
  color: var(--color-ink);
}
.study__body > p { max-width: 40em; }
.study__meta {
  margin: 36px 0 40px;
  border-top: 1px solid var(--color-ink);
}
.study__meta div {
  display: grid;
  grid-template-columns: 5.5em 1fr;
  gap: 16px;
  padding: 16px 0;
  border-bottom: 1px solid var(--color-border);
}
.study__meta dt { font-weight: 700; letter-spacing: .12em; color: var(--color-text-sub); }
.study__next + .study__next { margin-top: 16px; }

/* ==========================================================
   3c. 社長塾（経営者育成プログラム）
   ========================================================== */
.academy {
  position: relative;
  overflow: hidden;
  background: #0b0b0b;
  color: #fff;
}
.academy :focus-visible { outline-color: #fff; }
.academy__watermark {
  position: absolute;
  right: -4%;
  top: 6%;
  z-index: 0;
  margin: 0;
  font-family: var(--font-en);
  font-size: clamp(5rem, 14vw, 11rem);
  font-weight: 400;
  line-height: .75;
  letter-spacing: .02em;
  color: #fff;
  opacity: .045;
  pointer-events: none;
  user-select: none;
}
.academy__hero {
  position: relative;
  min-height: 0;
  display: grid;
  align-items: start;
  padding: calc(var(--header-h) + 20px) 0 36px;
}
.academy__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.academy__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 35%;
  filter: saturate(.45) contrast(1.08) brightness(.55);
}
.academy__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to bottom, rgba(6,6,6,.45), rgba(6,6,6,.55) 40%, rgba(6,6,6,.92));
}
.academy__hero-inner { position: relative; z-index: 1; max-width: 920px; }
.academy__en {
  font-family: var(--font-en);
  font-size: var(--fs-en);
  letter-spacing: .36em;
  color: rgba(255,255,255,.62);
}
.academy__kicker {
  margin-top: 8px;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .18em;
  color: rgba(255,255,255,.78);
}
.academy__badge {
  display: inline-block;
  margin-top: 16px;
  padding: 4px 12px;
  border: 1px solid rgba(255,255,255,.55);
  font-family: var(--font-en);
  font-size: .8125rem;
  letter-spacing: .24em;
}
.academy__title {
  margin-top: 12px;
  font-size: var(--fs-h2);
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: .08em;
}
.academy__title span { display: block; }
.academy__mission {
  max-width: 36em;
  margin-top: 16px;
  font-size: var(--fs-body);
  line-height: 1.95;
  color: rgba(255,255,255,.9);
}
.academy__seat {
  margin-top: 24px;
  font-size: .9375rem;
  letter-spacing: .16em;
  color: rgba(255,255,255,.7);
}
.academy__body { position: relative; z-index: 1; padding: 24px 0 140px; }
.academy__block { margin-top: 88px; }
.academy__label {
  font-family: var(--font-en);
  font-size: var(--fs-en);
  letter-spacing: .28em;
  color: rgba(255,255,255,.5);
}
.academy__h {
  margin-top: 10px;
  font-size: var(--fs-h2);
  font-weight: 500;
  letter-spacing: .12em;
}
.academy__worries {
  display: grid;
  gap: 0;
  margin-top: 36px;
  border-top: 1px solid rgba(255,255,255,.2);
}
.academy__worries li {
  position: relative;
  padding: 22px 0 22px 1.4em;
  border-bottom: 1px solid rgba(255,255,255,.16);
  font-size: var(--fs-lead);
  letter-spacing: .1em;
  line-height: 1.7;
}
.academy__worries li::before {
  content: "—";
  position: absolute;
  left: 0;
  color: rgba(255,255,255,.45);
}
.academy__invite {
  margin-top: 28px;
  font-size: var(--fs-body);
  letter-spacing: .1em;
  color: rgba(255,255,255,.82);
}
.academy__points {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  margin-top: 88px;
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.16);
}
.academy__point {
  position: relative;
  overflow: hidden;
  min-height: 240px;
  padding: 36px 32px 40px;
  background: #0b0b0b;
}
.academy__point-num {
  position: absolute;
  right: 12px;
  top: 8px;
  font-family: var(--font-en);
  font-size: 5.5rem;
  line-height: .85;
  letter-spacing: -.04em;
  opacity: .12;
}
.academy__point h3 {
  position: relative;
  font-size: var(--fs-h3);
  letter-spacing: .16em;
}
.academy__point p {
  position: relative;
  margin-top: 16px;
  color: rgba(255,255,255,.78);
  line-height: 1.95;
}
.academy__curric {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  margin-top: 36px;
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.16);
}
.academy__curric li {
  display: grid;
  gap: 10px;
  min-height: 140px;
  padding: 28px 24px;
  background: #0b0b0b;
}
.academy__curric span {
  font-family: var(--font-en);
  font-size: .9375rem;
  letter-spacing: .2em;
  color: rgba(255,255,255,.5);
}
.academy__curric strong {
  font-size: var(--fs-h3);
  font-weight: 700;
  letter-spacing: .1em;
  line-height: 1.6;
}
.academy__facts {
  margin-top: 72px;
  border-top: 1px solid rgba(255,255,255,.2);
}
.academy__facts dl { display: grid; }
.academy__facts div {
  display: grid;
  grid-template-columns: 6.5em 1fr;
  gap: 16px;
  padding: 22px 0;
  border-bottom: 1px solid rgba(255,255,255,.16);
}
.academy__facts dt {
  font-weight: 700;
  letter-spacing: .16em;
  color: rgba(255,255,255,.55);
}
.academy__facts dd { line-height: 1.9; }
.academy__faculty {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 24px 20px;
  margin-top: 36px;
}
.academy__faculty li {
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.2);
}
.academy__faculty-name {
  font-size: var(--fs-h3);
  font-weight: 700;
  letter-spacing: .1em;
}
.academy__faculty p { margin-top: 8px; font-size: .875rem; line-height: 1.7; color: rgba(255,255,255,.72); }
.academy__faculty-motto {
  font-family: var(--font-en);
  letter-spacing: .08em !important;
  color: rgba(255,255,255,.5) !important;
}
/* --- 社長塾：トップページは要約だけ（詳細は academy.html） --- */
.academy--teaser {
  border-top: 12px solid var(--color-bg);
}
.academy--teaser .academy__hero { padding: 104px 0 104px; }
.academy-teaser__facts {
  display: grid;
  grid-template-columns: repeat(4, auto);
  justify-content: start;
  margin-top: 36px;
  border-top: 1px solid rgba(255,255,255,.2);
  border-bottom: 1px solid rgba(255,255,255,.2);
}
.academy-teaser__facts li { padding: 16px 28px; line-height: 1.6; }
.academy-teaser__facts li:first-child { padding-left: 0; }
.academy-teaser__facts li + li { border-left: 1px solid rgba(255,255,255,.16); }
.academy-teaser__facts span {
  display: block;
  font-size: .8125rem;
  letter-spacing: .16em;
  color: rgba(255,255,255,.6);
}
.academy-teaser__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 24px 40px; margin-top: 40px; }
.academy-teaser__apply { color: #fff; }
.academy--page .academy__breadcrumb { margin-bottom: 40px; }
.academy__cta {
  display: grid;
  justify-items: center;
  gap: 28px;
  margin-top: 96px;
  text-align: center;
}
.academy__cta-note {
  font-size: .9375rem;
  letter-spacing: .08em;
  color: rgba(255,255,255,.7);
}
.academy__cta-note a { border-bottom: 1px solid currentColor; }
.academy__cta-note a:hover { opacity: .75; }

/* ==========================================================
   4. Works
   ========================================================== */
.works__intro {
  padding: 80px 0 64px;
  background: var(--color-ink);
  color: #fff;
  text-align: center;
}
.works__hero {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(16px, 3vw, 40px);
}
.works__kanji {
  font-size: clamp(1.5rem, 2.8vw, 2rem);
  font-weight: 400;
  line-height: 1;
  letter-spacing: .2em;
  color: rgba(255, 255, 255, .55);
}
.works__heading h2 {
  margin-top: 6px;
  font-size: var(--fs-h2);
  font-weight: 500;
  letter-spacing: .16em;
  line-height: 1.4;
}
.works__en {
  font-family: var(--font-en);
  font-size: var(--fs-en);
  font-weight: 500;
  letter-spacing: .24em;
  color: rgba(255, 255, 255, .65);
}
.works__lead { margin-top: 20px; font-size: var(--fs-body); color: rgba(255, 255, 255, .88); }
.works__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 72px 40px;
}
.works__noscript { text-align: center; }
.works__more { margin-top: 88px; text-align: center; }
.work-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: none;
  text-align: left;
  transition: transform .55s cubic-bezier(.22, 1, .36, 1);
}
.work-card:hover { transform: translateY(-12px); }
.work-card .ph img { transition: transform .8s ease, filter .8s ease; filter: grayscale(.15); }
.work-card .ph img[src*="work-office"] { object-position: 50% 40%; }
.work-card .ph img[src*="work-kessan"] { object-position: 50% 40%; }
.work-card .ph img[src*="work-passbook"] { object-position: 50% 40%; }
.work-card .ph img[src*="work-team"] { object-position: 50% 40%; }
.work-card .ph img[src*="work-meeting"] { object-position: 50% 40%; }
.modal .ph img[src*="work-"] { object-position: 50% 40%; }
.work-card:hover .ph img { transform: scale(1.1); filter: none; }
.work-card__body { display: flex; flex-direction: column; flex: 1; padding-top: 20px; }
.work-card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--color-ink);
}
.work-card__case { font-family: var(--font-en); font-size: var(--fs-en); font-weight: 500; letter-spacing: .08em; }
.work-card__category { font-size: .875rem; font-weight: 700; letter-spacing: .1em; }
.work-card__title { margin-top: 16px; font-size: var(--fs-h3); font-weight: 700; line-height: 1.7; color: var(--color-ink); }
.work-card__summary { margin-top: 10px; font-size: .9375rem; line-height: 1.9; color: var(--color-text-sub); }
.work-card__tags { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: auto; padding-top: 16px; }
.tag { font-size: .875rem; color: var(--color-text-sub); }
.tag::before { content: "#"; margin-right: 2px; font-family: var(--font-en); }
.work-card:hover .work-card__title { text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1px; }

/* ==========================================================
   Modal
   ========================================================== */
.modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  padding: 24px;
}
.modal[hidden] { display: none; }
.modal__overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, .78); animation: fadeIn .4s ease; }
.modal__content {
  position: relative;
  width: 100%;
  max-width: 840px;
  max-height: calc(100vh - 48px);
  overflow-y: auto;
  background: #fff;
  animation: modalIn .4s ease;
}
.modal__content:focus { outline: none; }
.modal__close {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border: 1px solid var(--color-ink);
  border-radius: 50%;
  background: #fff;
  transition: background var(--ease), color var(--ease);
}
.modal__close:hover { background: var(--color-ink); color: #fff; }
.modal__close svg { width: 22px; height: 22px; }
.modal__body { padding: 44px 56px 56px; }
.modal__case { font-family: var(--font-en); font-size: 1.125rem; font-weight: 500; letter-spacing: .1em; color: var(--color-text-sub); }
.modal__title { margin-top: 6px; font-size: clamp(1.3125rem, 2.4vw, 1.625rem); font-weight: 700; line-height: 1.6; color: var(--color-ink); }
.modal__meta {
  display: grid;
  margin: 28px 0 12px;
  border-top: 1px solid var(--color-ink);
  font-size: .9375rem;
}
.modal__meta div { display: flex; gap: 20px; padding: 14px 0; border-bottom: 1px solid var(--color-border); }
.modal__meta div[hidden] { display: none; }
.modal__meta dt { flex-shrink: 0; width: 5em; font-weight: 700; color: var(--color-text-sub); }
.modal__heading { margin-top: 28px; font-size: 1.0625rem; font-weight: 700; letter-spacing: .12em; }
.modal__heading::before { content: "— "; color: var(--color-text-sub); }
.modal__text { margin-top: 8px; }
.modal__link { margin-top: 36px; }
.modal__link[hidden] { display: none; }
@keyframes fadeIn { from { opacity: 0; } }
@keyframes modalIn { from { opacity: 0; transform: translateY(20px); } }

/* ==========================================================
   5. FAQ
   ========================================================== */
.faq__list { border-top: 1px solid var(--color-ink); }
.faq__item { border-bottom: 1px solid var(--color-border); }
.faq__q { font-size: var(--fs-h3); }
.faq__btn {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  padding: 30px 64px 30px 56px;
  border: 0;
  background: none;
  font-weight: 700;
  line-height: 1.7;
  letter-spacing: .06em;
  text-align: left;
}
.faq__btn::before {
  content: "Q.";
  position: absolute;
  left: 0;
  font-family: var(--font-en);
  font-size: var(--fs-en);
  font-weight: 500;
  color: var(--color-text-sub);
}
.faq__btn:hover { opacity: .7; }
.faq__icon { position: absolute; right: 8px; width: 22px; height: 22px; transition: transform .4s ease; }
.faq__icon::before, .faq__icon::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--color-ink);
}
.faq__icon::after { transform: rotate(90deg); }
.faq__btn[aria-expanded="true"] .faq__icon { transform: rotate(45deg); } /* ＋ → × */
.faq__a { position: relative; padding: 0 40px 32px 56px; }
.faq__a::before {
  content: "A.";
  position: absolute;
  left: 0;
  font-family: var(--font-en);
  font-size: var(--fs-en);
  font-weight: 500;
  line-height: 1.3;
  color: var(--color-ink);
}

/* ==========================================================
   6. Contact
   ========================================================== */
.contact {
  padding: var(--section-space) 0 48px;
  overflow: hidden;
  background: var(--color-ink);
  color: #fff;
}
.contact__grid {
  display: grid;
  grid-template-columns: 1fr minmax(280px, 42%);
  align-items: center;
  gap: 56px 64px;
}
.contact__visual {
  position: relative;
  justify-self: stretch;
}
.contact__btn {
  position: absolute;
  right: -12px;
  bottom: -28px;
  background: var(--color-ink);
}
.contact__lead { max-width: 34em; margin-top: 28px; font-size: var(--fs-body); color: rgba(255, 255, 255, .9); }
.contact__address { margin-top: 36px; font-size: .9375rem; line-height: 1.9; color: rgba(255, 255, 255, .72); }
.sns { display: flex; flex-wrap: wrap; gap: 12px 32px; margin-top: 28px; }
.sns__link {
  padding-bottom: 2px;
  border-bottom: 1px solid var(--color-line-dark);
  font-size: .9375rem;
  color: rgba(255, 255, 255, .88);
}
.sns__link:hover { border-color: #fff; color: #fff; }
.contact__signature {
  margin-top: 120px;
  font-family: var(--font-en);
  font-size: clamp(3.5rem, 12.5vw, 11rem);
  font-weight: 400;
  line-height: 1;
  letter-spacing: .01em;
  white-space: nowrap;
  color: rgba(255, 255, 255, .92);
}
.contact :focus-visible { outline-color: #fff; }

/* ==========================================================
   1b. Video（CapCut）
   ========================================================== */
.reel { padding-top: 56px; padding-bottom: 56px; background: var(--color-bg); }
.reel__lead {
  max-width: 28em;
  margin: -8px 0 24px;
  font-size: var(--fs-body);
  color: var(--color-text-sub);
  letter-spacing: .08em;
}
.reel__player {
  overflow: hidden;
  background: #111;
  border: 1px solid var(--color-border);
  aspect-ratio: 16 / 9;
}
.reel__player video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #111;
  vertical-align: top;
}

/* ==========================================================
   5b. Updates（SNS最新）
   ========================================================== */
.updates__lead {
  max-width: 36em;
  margin: -8px 0 40px;
  font-size: var(--fs-body);
  line-height: 2;
}
.updates__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 40px 28px;
  align-items: start;
}
.update-col__title {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  margin-bottom: 20px;
  font-size: var(--fs-h3);
  font-weight: 700;
  letter-spacing: .12em;
}
.update-col__title span {
  font-family: var(--font-en);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .16em;
  color: var(--color-text-sub);
}
.update-col__frame {
  overflow: hidden;
  height: 560px;
  background: #fff;
  border: 1px solid var(--color-border);
}
.update-col__frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}
.update-col__fallback {
  display: grid;
  align-content: start;
  gap: 24px;
  min-height: 280px;
  padding: 36px 28px;
  background: #fff;
  border: 1px solid var(--color-border);
}
.update-col__fallback p { line-height: 1.9; }
.update-col__more { margin-top: 20px; }
.yt-feed { display: grid; gap: 16px; }
.yt-feed__player {
  display: block;
  width: 100%;
  height: 560px;
  border: 0;
  background: #111;
}
.yt-feed__status {
  padding: 28px 20px;
  border: 1px solid var(--color-border);
  background: #fff;
  color: var(--color-text-sub);
}
.yt-card {
  display: grid;
  grid-template-columns: 112px 1fr;
  gap: 14px;
  align-items: center;
  padding: 0;
  border: 1px solid var(--color-border);
  background: #fff;
  color: inherit;
  text-align: left;
  transition: transform .45s cubic-bezier(.22, 1, .36, 1), border-color .45s ease;
}
.yt-card:hover { transform: translateY(-4px); border-color: var(--color-ink); }
.yt-card img {
  width: 112px;
  height: 112px;
  object-fit: cover;
}
.yt-card__body { padding: 12px 14px 12px 0; }
.yt-card__label {
  font-family: var(--font-en);
  font-size: .8125rem;
  letter-spacing: .16em;
  color: var(--color-text-sub);
}
.yt-card__title {
  display: -webkit-box;
  margin-top: 6px;
  overflow: hidden;
  font-size: .9375rem;
  font-weight: 700;
  line-height: 1.55;
  letter-spacing: .04em;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
#yt-probe {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

/* ==========================================================
   7. Footer
   ========================================================== */
.footer { padding: 44px 0; }
.footer__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.footer__meta { display: flex; align-items: center; gap: 32px; }
.footer__link { font-size: .875rem; color: var(--color-text-sub); border-bottom: 1px solid transparent; }
.footer__link:hover { color: var(--color-ink); border-color: currentColor; }
.footer__copy { font-size: .875rem; color: var(--color-text-sub); }
.pagetop {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 90;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border: 1px solid var(--color-ink);
  border-radius: 50%;
  background: #fff;
  color: var(--color-ink);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity var(--ease), visibility var(--ease), transform var(--ease), background var(--ease), color var(--ease);
}
.pagetop.is-show { opacity: 1; visibility: visible; transform: none; }
.pagetop:hover { background: var(--color-ink); color: #fff; }
.pagetop svg { width: 22px; height: 22px; }

.section-head__ja, .fv__title, .story-hero__title, .story-index__title, .pager__title,
.story-epigraph p, .story-cta__title, .work-card__title, .modal__title, .service__title,
.status-hero__title, .status-intro__goal, .status-way__title, .status-step__title,
.philosophy__inner blockquote p, .about__lead, .academy__title { word-break: auto-phrase; }

/* ==========================================================
   Status（中小企業の現状）
   ========================================================== */
.status-hero {
  position: relative;
  min-height: 72vh;
  min-height: 72dvh;
  display: flex;
  align-items: flex-end;
  padding: calc(var(--header-h) + 40px) 0 88px;
  overflow: hidden;
  color: #fff;
  background: #0b0b0b;
}
.status-hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.status-hero__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 18%;
  filter: saturate(.7) contrast(1.05) brightness(.85);
}
.status-hero__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, rgba(6,6,6,.9) 0%, rgba(6,6,6,.55) 48%, rgba(6,6,6,.28) 100%),
              linear-gradient(to top, rgba(6,6,6,.7), transparent 45%);
}
.status-hero__inner { position: relative; z-index: 1; width: 100%; }
.status-hero .breadcrumb { margin-bottom: 56px; }
.status-hero__en {
  font-family: var(--font-en);
  font-size: var(--fs-en);
  letter-spacing: .18em;
  color: rgba(255,255,255,.7);
}
.status-hero__kicker {
  margin-top: 20px;
  font-size: .9375rem;
  font-weight: 700;
  letter-spacing: .28em;
}
.status-hero__title {
  margin-top: 8px;
  font-size: clamp(1.5rem, 2.8vw, 2rem);
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: .1em;
}
.status-hero__lead {
  margin-top: 28px;
  max-width: 22em;
  font-size: var(--fs-lead);
  line-height: 2;
  color: rgba(255,255,255,.88);
}
.status-intro__grid {
  display: grid;
  grid-template-columns: 1.2fr minmax(240px, 320px);
  gap: 64px 80px;
  align-items: start;
}
.status-intro__text { display: grid; gap: 1.4em; max-width: 40em; font-size: var(--fs-body); line-height: 2.1; }
.status-intro__goal {
  font-size: var(--fs-h2);
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1.8;
  color: var(--color-ink);
}
.status-ways {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px 64px;
  border-top: 1px solid var(--color-ink);
}
.status-way {
  display: grid;
  gap: 16px;
  padding: 48px 0;
  border-bottom: 1px solid var(--color-border);
}
.status-way__num { font-family: var(--font-en); font-size: var(--fs-en); color: var(--color-text-sub); }
.status-way__title { font-size: var(--fs-h3); font-weight: 700; letter-spacing: .08em; color: var(--color-ink); }
.status-consult__lead { max-width: 42em; margin-bottom: 64px; font-size: var(--fs-body); line-height: 2.1; }
.status-steps { display: grid; gap: 0; border-top: 1px solid var(--color-ink); }
.status-step {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 8px 24px;
  padding: 40px 0;
  border-bottom: 1px solid var(--color-border);
}
.status-step__num { font-family: var(--font-en); font-size: var(--fs-en); line-height: 1.2; color: var(--color-text-sub); }
.status-step__title { grid-column: 2; font-size: var(--fs-h3); font-weight: 700; letter-spacing: .08em; color: var(--color-ink); }
.status-step p { grid-column: 2; max-width: 44em; }
.status-worries { display: grid; gap: 0; border-top: 1px solid var(--color-ink); }
.status-worries li {
  padding: 22px 0 22px 36px;
  border-bottom: 1px solid var(--color-border);
  position: relative;
  font-weight: 700;
  line-height: 1.9;
}
.status-worries li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1.35em;
  width: 20px;
  height: 1px;
  background: var(--color-ink);
}
.status-worries__note { max-width: 40em; margin: 40px 0 28px; line-height: 2.1; }

/* ==========================================================
   8. Stories（コンサル実話：一覧・記事ページ）
   ========================================================== */
.page-stories main { padding-top: var(--header-h); }

/* パンくず */
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: 4px 0; font-size: .875rem; color: var(--color-text-sub); }
.breadcrumb li + li::before { content: "/"; margin: 0 12px; color: var(--color-border); }
.breadcrumb a { border-bottom: 1px solid transparent; }
.breadcrumb a:hover { border-color: currentColor; color: var(--color-ink); }
.breadcrumb--light ol { color: rgba(255, 255, 255, .7); }
.breadcrumb--light li + li::before { color: rgba(255, 255, 255, .35); }
.breadcrumb--light a:hover { color: #fff; }

/* --- 一覧ページ --- */
.stories-hero {
  padding: 56px 0 120px;
  background: var(--color-ink);
  color: #fff;
  text-align: center;
}
.stories-hero .breadcrumb { margin-bottom: 88px; text-align: left; }
.stories-hero__lead { margin-top: 56px; font-size: var(--fs-body); line-height: 2.1; color: rgba(255, 255, 255, .88); }

.story-index { border-top: 1px solid var(--color-ink); }
.story-index__item { border-bottom: 1px solid var(--color-border); }
.story-index__link {
  position: relative;
  display: grid;
  grid-template-columns: 180px 1fr 72px;
  align-items: center;
  gap: 32px;
  padding: 48px 24px;
  transition: background .5s ease, color .5s ease;
}
.story-index__no {
  font-family: var(--font-en);
  font-size: clamp(4rem, 8vw, 7rem);
  font-weight: 400;
  line-height: .9;
  color: var(--color-ink);
  transition: color .5s ease, transform .6s ease;
}
.story-index__body { display: grid; gap: 10px; }
.story-index__meta { display: flex; flex-wrap: wrap; gap: 4px 20px; font-size: .875rem; color: var(--color-text-sub); letter-spacing: .1em; }
.story-index__meta time { font-family: var(--font-en); font-size: 1.0625rem; letter-spacing: .08em; }
.story-index__title { font-size: var(--fs-h2); font-weight: 700; line-height: 1.5; letter-spacing: .08em; color: var(--color-ink); }
.story-index__summary { max-width: 40em; font-size: .9375rem; line-height: 1.95; color: var(--color-text-sub); }
.story-index__arrow {
  position: relative;
  justify-self: end;
  width: 64px;
  height: 64px;
  border: 1px solid currentColor;
  border-radius: 50%;
}
.story-index__arrow::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 18px;
  width: 26px;
  height: 1px;
  background: currentColor;
}
.story-index__arrow::after {
  content: "";
  position: absolute;
  top: calc(50% - 4px);
  left: 36px;
  width: 8px;
  height: 8px;
  border-top: 1px solid currentColor;
  border-right: 1px solid currentColor;
  transform: rotate(45deg);
}
.story-index__link:hover { background: var(--color-ink); color: #fff; }
.story-index__link:hover .story-index__no,
.story-index__link:hover .story-index__title { color: #fff; }
.story-index__link:hover .story-index__meta,
.story-index__link:hover .story-index__summary { color: rgba(255, 255, 255, .75); }
.story-index__link:hover .story-index__no { transform: translateX(8px); }

/* --- 記事ページ：ヒーロー --- */
.story-hero { padding: 56px 0 96px; }
.story-hero__head {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: end;
  gap: 24px 56px;
  margin-top: 72px;
}
.story-hero__no {
  display: grid;
  font-family: var(--font-en);
  font-size: clamp(6rem, 15vw, 13rem);
  font-weight: 400;
  line-height: .8;
  color: var(--color-ink);
}
.story-hero__no-label { font-size: var(--fs-en); letter-spacing: .3em; line-height: 1; margin-bottom: 16px; color: var(--color-text-sub); }
.story-hero__text { padding-bottom: 8px; }
.story-hero__series { font-size: .9375rem; font-weight: 700; letter-spacing: .2em; color: var(--color-text-sub); }
.story-hero__title {
  margin-top: 10px;
  font-size: clamp(1.5rem, 2.8vw, 2rem);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: .08em;
  color: var(--color-ink);
}
.story-hero__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 18px;
  margin-top: 20px;
  font-size: .9375rem;
  color: var(--color-text-sub);
}
.story-hero__meta time { font-family: var(--font-en); font-size: 1.125rem; letter-spacing: .08em; color: var(--color-ink); }
.story-hero__cat { padding: 0 12px; border: 1px solid var(--color-ink); font-weight: 700; color: var(--color-ink); }
.story-tag { font-size: .875rem; }

.story-epigraph {
  max-width: 900px;
  margin: 104px auto 0;
  text-align: center;
}
.story-epigraph blockquote p {
  font-size: var(--fs-h2);
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: .1em;
  color: var(--color-ink);
}
.story-epigraph blockquote p::before,
.story-epigraph blockquote p::after { font-family: var(--font-en); font-size: 1.4em; line-height: 0; color: var(--color-text-sub); }
.story-epigraph blockquote p::before { content: "“"; margin-right: .15em; }
.story-epigraph blockquote p::after  { content: "”"; margin-left: .15em; }
.story-epigraph figcaption { margin-top: 20px; font-size: .9375rem; letter-spacing: .2em; color: var(--color-text-sub); }

/* --- 記事ページ：数字で見る（黒帯のKPI行） --- */
.story-figures { padding: 96px 0; background: var(--color-ink); color: #fff; }
.story-figures__title {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 48px;
  font-size: 1rem;
  font-weight: 500;
  letter-spacing: .2em;
  color: rgba(255, 255, 255, .75);
}
.story-figures__title span { font-family: var(--font-en); font-size: 1.25rem; letter-spacing: .24em; }
.story-figures__title::after { content: ""; flex: 1; height: 1px; background: var(--color-line-dark); }
.stat-row { display: grid; grid-template-columns: repeat(3, 1fr); }
.stat { padding: 8px 40px 8px 0; }
.stat + .stat { padding-left: 40px; border-left: 1px solid var(--color-line-dark); }
.stat__label { font-size: .9375rem; letter-spacing: .1em; color: rgba(255, 255, 255, .78); }
.stat__value {
  margin-top: 12px;
  font-family: var(--font-en);
  font-size: clamp(3.25rem, 6vw, 5rem);
  font-weight: 500;
  line-height: 1;
  letter-spacing: .01em;
  white-space: nowrap;
}
.stat__unit { margin-left: 6px; font-family: var(--font-ja); font-size: 1.125rem; font-weight: 500; letter-spacing: .08em; }
.stat__before { margin-top: 16px; font-size: .9375rem; color: rgba(255, 255, 255, .7); }
.story-figures__note { margin-top: 40px; font-size: .875rem; color: rgba(255, 255, 255, .62); }

/* --- 記事ページ：本文 --- */
.story-body {
  max-width: calc(760px + var(--gutter) * 2);
  margin: 0 auto;
  padding: 120px var(--gutter) 40px;
  font-size: var(--fs-body);
  line-height: 2.2;
}
.story-body > * + * { margin-top: 32px; }
.story-h {
  margin-top: 88px !important;
  padding-top: 28px;
  border-top: 1px solid var(--color-ink);
  font-size: var(--fs-h2);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .1em;
  color: var(--color-ink);
}
.story-list { display: grid; gap: 8px; }
.story-list li { position: relative; padding-left: 36px; font-weight: 700; }
.story-list li::before { content: ""; position: absolute; left: 0; top: 1.1em; width: 20px; height: 1px; background: var(--color-ink); }

/* 帳簿風の数字の並び */
.ledger { margin-top: 48px !important; margin-bottom: 48px; }
.ledger__label { font-family: var(--font-en); font-size: 1rem; letter-spacing: .2em; color: var(--color-text-sub); }
.ledger__list { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 12px; border-top: 1px solid var(--color-ink); border-bottom: 1px solid var(--color-ink); }
.ledger__item { padding: 18px 16px; }
.ledger__item + .ledger__item { border-left: 1px solid var(--color-border); }
.ledger__item dt { font-size: .875rem; color: var(--color-text-sub); line-height: 1.6; }
.ledger__item dd { margin-top: 4px; font-size: 1.375rem; font-weight: 700; line-height: 1.4; letter-spacing: .04em; color: var(--color-ink); }

/* 計算式 */
.formula { margin-top: 48px !important; margin-bottom: 48px; padding: 32px 0; border-top: 1px solid var(--color-ink); border-bottom: 1px solid var(--color-ink); }
.formula__label { font-family: var(--font-ja); font-size: .9375rem; font-weight: 700; letter-spacing: .16em; color: var(--color-text-sub); }
.formula__row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px 20px; margin-top: 16px; }
.formula__term { display: grid; gap: 2px; }
.formula__key { font-size: .875rem; line-height: 1.6; color: var(--color-text-sub); }
.formula__val { font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 700; line-height: 1.3; letter-spacing: .04em; color: var(--color-ink); }
.formula__term--result .formula__val { border-bottom: 2px solid var(--color-ink); }
.formula__op { padding-bottom: 4px; font-family: var(--font-en); font-size: 1.75rem; line-height: 1.3; color: var(--color-text-sub); }

/* 表 */
.story-table { margin-top: 48px !important; margin-bottom: 48px; overflow-x: auto; }
.story-table table { width: 100%; min-width: 520px; border-collapse: collapse; font-size: 1rem; line-height: 1.6; }
.story-table caption { padding-bottom: 12px; text-align: left; font-size: .9375rem; font-weight: 700; letter-spacing: .12em; color: var(--color-text-sub); }
.story-table th, .story-table td { padding: 16px 14px; border-bottom: 1px solid var(--color-border); text-align: right; font-variant-numeric: tabular-nums lining-nums; white-space: nowrap; }
.story-table thead th { border-top: 1px solid var(--color-ink); border-bottom: 1px solid var(--color-ink); font-size: .875rem; font-weight: 700; color: var(--color-text-sub); }
.story-table th:first-child { text-align: left; padding-left: 0; }
.story-table tbody th { font-weight: 700; color: var(--color-ink); }
.story-table .is-em { font-weight: 700; color: var(--color-ink); }
.story-table thead .is-em { color: var(--color-ink); }
.story-table tbody td.is-em { background: var(--color-bg-sub); }

/* 会話 */
.talk { margin-top: 40px !important; }
.talk__who {
  display: inline-block;
  padding: 2px 14px;
  font-size: .875rem;
  font-weight: 700;
  letter-spacing: .16em;
  line-height: 1.8;
}
.talk__body { display: grid; gap: .6em; margin-top: 14px; }
.talk--client .talk__who { border: 1px solid var(--color-ink); color: var(--color-ink); }
.talk--client .talk__body { padding-left: 24px; border-left: 1px solid var(--color-ink); }
.talk--miyata { padding: 32px 36px; background: var(--color-bg-sub); }
.talk--miyata .talk__who { background: var(--color-ink); color: #fff; }

/* 宮田より */
.story-closing {
  margin-top: 96px !important;
  padding: 48px 0 0;
  border-top: 1px solid var(--color-ink);
}
.story-closing__label { font-size: 1rem; font-weight: 700; letter-spacing: .16em; }
.story-closing__label span { margin-right: 10px; font-family: var(--font-en); font-size: 1.375rem; font-weight: 500; letter-spacing: .1em; color: var(--color-text-sub); }
.story-closing__body { display: grid; gap: .8em; margin-top: 20px; font-size: var(--fs-lead); line-height: 2.1; color: var(--color-ink); }
.story-source {
  margin-top: 80px !important;
  padding-top: 20px;
  border-top: 1px solid var(--color-border);
  font-size: .875rem;
  line-height: 1.9;
  color: var(--color-text-sub);
}
.story-source a { border-bottom: 1px solid currentColor; }
.story-source a:hover { color: var(--color-ink); }

/* 前後の記事 */
.pager {
  width: min(var(--content-width), calc(100% - var(--gutter) * 2));
  padding: 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: stretch;
  margin: 64px auto 120px;
  border-top: 1px solid var(--color-ink);
  border-bottom: 1px solid var(--color-ink);
}
.pager__item { display: grid; align-content: center; gap: 4px; padding: 36px 24px; transition: background .4s ease, color .4s ease; }
.pager__item--next { text-align: right; }
.pager__item:not(.is-empty):hover { background: var(--color-ink); color: #fff; }
.pager__dir { font-family: var(--font-en); font-size: 1rem; letter-spacing: .24em; color: var(--color-text-sub); }
.pager__no { font-family: var(--font-en); font-size: 2.25rem; line-height: 1.1; }
.pager__title { font-size: .9375rem; font-weight: 700; line-height: 1.6; }
.pager__item:hover .pager__dir { color: rgba(255, 255, 255, .7); }
.pager__index {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  padding: 24px 40px;
  border-left: 1px solid var(--color-border);
  border-right: 1px solid var(--color-border);
  font-size: .875rem;
  font-weight: 700;
  letter-spacing: .16em;
}
.pager__index-icon { display: grid; grid-template-columns: repeat(2, 8px); gap: 4px; }
.pager__index-icon::before, .pager__index-icon::after { content: ""; width: 8px; height: 8px; border: 1px solid currentColor; }
.pager__index:hover { background: var(--color-bg-sub); }

/* 記事下のお問い合わせ */
.story-cta { padding: 120px 0; background: var(--color-ink); color: #fff; }
.story-cta__inner { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 48px 96px; }
.story-cta__title { margin-top: 12px; font-size: var(--fs-h2); font-weight: 500; line-height: 1.6; letter-spacing: .1em; }
.story-cta__lead { margin-top: 28px; font-size: 1.0625rem; color: rgba(255, 255, 255, .88); }
.story-cta :focus-visible { outline-color: #fff; }

/* ==========================================================
   Scroll fade-in（ゆっくり・控えめ）
   ========================================================== */
.js-fade {
  opacity: 0;
  transform: translateY(36px);
  transition: opacity 1.05s cubic-bezier(.22, 1, .36, 1), transform 1.05s cubic-bezier(.22, 1, .36, 1);
  transition-delay: var(--stagger, 0ms);
}
.js-fade.is-inview { opacity: 1; transform: none; }
.no-js .js-fade { opacity: 1; transform: none; }

@keyframes kenburns {
  from { transform: scale(1.04) translate3d(0, 0, 0); }
  to { transform: scale(1.14) translate3d(0, -2.4%, 0); }
}
@keyframes kenburnsSoft {
  from { transform: scale(1.02) translate3d(0, 0, 0); }
  to { transform: scale(1.1) translate3d(0, -1.6%, 0); }
}
@keyframes pulseRing {
  0%, 100% { box-shadow: 0 0 0 0 rgba(17, 17, 17, .22); }
  55% { box-shadow: 0 0 0 18px rgba(17, 17, 17, 0); }
}
@keyframes lineGrow {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}
@keyframes headerIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes pulseBadge {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}
@keyframes riseIn {
  from { opacity: 0; transform: translateY(1.1em); }
  to { opacity: 1; transform: none; }
}

/* ==========================================================
   Responsive
   ========================================================== */
@media (max-width: 1320px) {
  .header__place { display: none; }
  .header__toggle {
    position: relative;
    z-index: 2;
    display: block;
    width: 48px;
    height: 48px;
    margin-right: -8px;
    border: 0;
    background: none;
  }
  .header__toggle-bar {
    position: absolute;
    left: 10px;
    width: 28px;
    height: 1px;
    background: var(--color-ink);
    transition: transform var(--ease);
  }
  .header__toggle-bar:nth-child(1) { top: 20px; }
  .header__toggle-bar:nth-child(2) { top: 28px; }
  .header__toggle[aria-expanded="true"] .header__toggle-bar:nth-child(1) { transform: translateY(4px) rotate(30deg); }
  .header__toggle[aria-expanded="true"] .header__toggle-bar:nth-child(2) { transform: translateY(-4px) rotate(-30deg); }
  .nav {
    position: fixed;
    inset: 0;
    z-index: 90;
    height: 100vh;
    height: 100dvh;
    flex-direction: column;
    justify-content: center;
    gap: 32px;
    padding: 96px var(--gutter) 64px;
    overflow-y: auto;
    background: rgba(255, 255, 255, .96);
    opacity: 0;
    visibility: hidden;
    transition: opacity .4s ease, visibility .4s ease;
  }
  .nav.is-open { opacity: 1; visibility: visible; }
  .nav__list { flex-direction: column; gap: 8px; }
  .nav__link { display: block; padding: 8px 12px; font-size: 1.5rem; text-align: center; }
  .nav__ctas { flex-direction: column; align-items: stretch; gap: 12px; width: min(320px, 100%); }
  .nav__cta { padding: 14px 24px; font-size: .9375rem; text-align: center; }
}

@media (max-width: 1024px) {
  :root { --section-space: 112px; }
  .header { top: 12px; right: 16px; left: 16px; height: 64px; }
  .header__place { display: none; }
  .header__inner { padding: 0 var(--gutter); }
  .fv__row { grid-template-columns: 1fr; }
  .fv__col--cta { grid-template-columns: 1fr auto; align-items: center; gap: 32px; }
  .about__intro { grid-template-columns: 160px 1fr; gap: 28px; }
  .about__table-wrap { grid-template-columns: 1fr; gap: 8px; }
  .service:nth-child(odd),
  .service:nth-child(even) { padding-left: 0; padding-right: 16px; }
  .academy__points { grid-template-columns: 1fr; }
  .academy__curric { grid-template-columns: repeat(2, 1fr); }
  .academy__faculty { grid-template-columns: repeat(3, 1fr); }
  .works__grid { grid-template-columns: repeat(2, 1fr); gap: 64px 32px; }
  .updates__grid { grid-template-columns: 1fr; }
  .story-index__link { grid-template-columns: 130px 1fr 64px; gap: 24px; }
  .stat { padding-right: 24px; }
  .stat + .stat { padding-left: 24px; }
  .story-cta__inner { gap: 48px; }
}

@media (max-width: 768px) {
  :root { --gutter: 20px; --section-space: 80px; --header-h: 72px; }
  body { font-size: 15px; }
  .u-pc { display: none; }
  .u-sp { display: inline; }
  .section-head { margin-bottom: 28px; }

  /* Header / Nav (SP) */
  .header { top: 10px; right: 12px; left: 12px; height: 56px; }
  .header__place { display: none; }
  .logo__img { height: 36px; }
  .footer__logo .logo__img { height: 40px; }
  .nav__link { font-size: 1.75rem; }

  /* FV：キャッチを1行に。100vhに積まない */
  .fv {
    align-items: flex-end;
    min-height: 0;
    padding: calc(var(--header-h) + 28px) 0 36px;
  }
  .fv__bg img { object-position: 50% 35%; }
  .fv__bg::after {
    background:
      linear-gradient(180deg, rgba(244,242,238,.55) 0%, rgba(244,242,238,.28) 36%, rgba(244,242,238,.78) 100%);
  }
  .fv__inner::before { display: none; }
  .fv__en,
  .fv__title-pc,
  .fv__fields,
  .fv__lead,
  .fv__lead-foot,
  .fv__free,
  .fv__role { display: none; }
  .fv__title-sp { display: block; }
  .fv__title { margin-top: 0; }
  .fv__sub {
    display: block;
    margin-top: 12px;
    font-size: .9375rem;
    font-weight: 500;
    letter-spacing: .14em;
    color: var(--color-text-sub);
  }
  .fv__row { margin-top: 28px; gap: 22px; }
  .fv__col:not(.fv__col--cta) { display: none; }
  .fv__col--cta { grid-template-columns: 1fr; justify-items: start; gap: 14px; }

  /* About */
  .about { padding-top: 48px; }
  .about .section-head { margin-bottom: 20px; }
  .about__more { display: none; }
  .about__intro { grid-template-columns: 1fr; gap: 20px; }
  .about__photo { margin: 0 calc(var(--gutter) * -1); }
  .about__photo .ph--about { aspect-ratio: 4 / 5; max-height: 360px; }
  .about__photo-caption {
    display: block;
    left: 16px;
    bottom: 14px;
    font-size: .75rem;
    letter-spacing: .22em;
  }
  .about__message { gap: .65em; font-size: 1rem; line-height: 1.8; }
  .about__lead { font-size: 1.0625rem; letter-spacing: .04em; }
  .about__table-wrap { grid-template-columns: 1fr; gap: 8px; margin-top: 24px; padding-top: 20px; }
  .about__table-label { display: none; }
  .about__scenes {
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;
    margin: 20px calc(var(--gutter) * -1) 0;
  }
  .about__scene:last-child { grid-column: auto; }
  .about__scene figcaption { font-size: .5625rem; letter-spacing: .08em; padding: 22px 8px 8px; }
  .philosophy { margin-top: 28px; }
  .philosophy__inner {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 40px 0;
  }
  .philosophy__inner blockquote {
    grid-column: 1;
    grid-row: auto;
    margin-top: 16px;
    padding-left: 16px;
  }
  .profile-table__row { grid-template-columns: 1fr; gap: 2px; padding: 10px 0; }
  .profile-table__row:first-child { padding-top: 0; }
  .profile-table dt { font-size: 1.0625rem; }

  /* Services */
  .services { padding: 56px 0 64px; }
  .services__list { grid-template-columns: 1fr; }
  .service,
  .service:nth-child(odd),
  .service:nth-child(even) {
    grid-template-columns: 2.2em 1fr;
    padding: 16px 0;
    border-left: 0;
  }
  .service__num { font-size: 1rem; }

  /* Study */
  .study__grid { grid-template-columns: 1fr; gap: 36px; }
  .study__meta div { grid-template-columns: 4.5em 1fr; gap: 12px; padding: 14px 0; }
  .academy__hero { min-height: 0; padding: calc(var(--header-h) + 40px) 0 64px; }
  .apply__grid { grid-template-columns: 1fr; gap: 48px; padding: 56px 0 88px; }
  .apply-form__row { grid-template-columns: 1fr; }
  .academy__points,
  .academy__curric,
  .academy__faculty { grid-template-columns: 1fr; }
  .academy__facts div { grid-template-columns: 4.5em 1fr; }
  .academy__body { padding-bottom: 96px; }

  /* Works */
  .works__intro { padding: 64px 0 56px; }
  .works__lead { margin-top: 20px; font-size: 1rem; }
  .works__grid { grid-template-columns: 1fr; max-width: 560px; margin: 0 auto; gap: 56px; }

  .status-hero { min-height: 0; padding: calc(var(--header-h) + 32px) 0 64px; }
  .status-hero .breadcrumb { margin-bottom: 36px; }
  .status-hero__lead { font-size: 1.0625rem; }
  .status-intro__grid { grid-template-columns: 1fr; gap: 40px; }
  .status-intro__photo { max-width: 280px; }
  .status-ways { grid-template-columns: 1fr; gap: 0; }
  .status-way { padding: 32px 0; }
  .status-consult__lead { margin-bottom: 40px; font-size: 1.0625rem; }
  .status-step { grid-template-columns: 48px 1fr; padding: 28px 0; }
  .status-worries li { padding: 18px 0 18px 28px; }

  /* FAQ */
  .faq__q { font-size: var(--fs-h3); }
  .faq__btn { padding: 24px 44px 24px 44px; }
  .faq__btn::before, .faq__a::before { font-size: var(--fs-en); }
  .faq__icon { right: 4px; width: 18px; height: 18px; }
  .faq__a { padding: 0 8px 26px 44px; }

  /* Modal */
  .modal { padding: 12px; }
  .modal__content { max-height: calc(100vh - 24px); }
  .modal__body { padding: 28px 22px 36px; }

  /* Contact */
  .updates__grid { grid-template-columns: 1fr; }
  .update-col__frame { height: 480px; }
  .contact { padding: 88px 0 32px; }
  .contact__grid { grid-template-columns: 1fr; justify-items: start; }
  .contact__lead { margin-top: 28px; font-size: 1rem; }
  .contact__cta { justify-self: center; }
  .contact__visual { width: 100%; max-width: 520px; }
  .contact__btn { right: 12px; bottom: -24px; }
  .circle-btn--lg { width: 220px; height: 220px; }
  .contact__signature { margin-top: 72px; }

  /* Stories */
  .stories-hero { padding: 32px 0 80px; }
  .stories-hero .breadcrumb { margin-bottom: 56px; }
  .stories-hero__lead { margin-top: 40px; font-size: 1rem; }
  .story-index__link { grid-template-columns: 1fr 48px; gap: 12px 16px; padding: 36px 4px; }
  .story-index__no { grid-column: 1 / -1; font-size: 3.5rem; }
  .story-index__arrow { width: 48px; height: 48px; align-self: end; }
  .story-index__arrow::before { left: 12px; width: 22px; }
  .story-index__arrow::after { left: 26px; }
  .story-hero { padding: 28px 0 72px; }
  .story-hero__head { grid-template-columns: 1fr; margin-top: 48px; gap: 20px; }
  .story-hero__no { font-size: 6rem; }
  .story-epigraph { margin-top: 64px; text-align: left; }
  .story-figures { padding: 72px 0; }
  .stat-row { grid-template-columns: 1fr; }
  .stat, .stat + .stat { padding: 24px 0; border-left: 0; }
  .stat + .stat { border-top: 1px solid var(--color-line-dark); }
  .story-body { padding-top: 72px; font-size: 1rem; line-height: 2.1; }
  .ledger__list { grid-template-columns: repeat(2, 1fr); }
  .ledger__item:nth-child(3) { border-left: 0; }
  .ledger__item:nth-child(n+3) { border-top: 1px solid var(--color-border); }
  .talk--miyata { padding: 24px 20px; }
  .talk--client .talk__body { padding-left: 18px; }
  .pager { grid-template-columns: 1fr 1fr; margin-bottom: 80px; }
  .pager__index { grid-column: 1 / -1; grid-row: 2; flex-direction: row; border: 0; border-top: 1px solid var(--color-border); padding: 20px; }
  .pager__item { padding: 28px 12px; }
  .pager__no { font-size: 1.75rem; }
  .story-cta { padding: 88px 0; }
  .story-cta__inner { grid-template-columns: 1fr; justify-items: start; }
  .story-cta .circle-btn { justify-self: center; }

  /* Footer */
  .footer { padding-bottom: 96px; }
  .footer__inner, .footer__meta { flex-direction: column; gap: 14px; }
  .pagetop { right: 16px; bottom: 16px; width: 48px; height: 48px; }
}


@media (max-width: 480px) {
  .fv__title { letter-spacing: .06em; }
}

/* ==========================================================
   Apply（社長塾・本気塾 申し込み）
   ========================================================== */
.apply-hero {
  position: relative;
  overflow: hidden;
  padding: calc(var(--header-h) + 28px) 0 48px;
  color: #fff;
  background: #0b0b0b;
}
.apply-hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.apply-hero__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 35%;
  filter: saturate(.45) contrast(1.08) brightness(.5);
}
.apply-hero__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to right, rgba(6,6,6,.82), rgba(6,6,6,.4) 70%, rgba(6,6,6,.55));
}
.apply-hero__inner { position: relative; z-index: 1; }
.apply-hero .breadcrumb { margin-bottom: 28px; }
.apply-hero__en {
  font-family: var(--font-en);
  font-size: var(--fs-en);
  letter-spacing: .36em;
  color: rgba(255,255,255,.62);
}
.apply-hero__kicker {
  margin-top: 8px;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .18em;
}
.apply-hero__title {
  margin-top: 12px;
  font-size: var(--fs-h2);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .08em;
}
.apply-hero__lead {
  max-width: 32em;
  margin-top: 16px;
  font-size: var(--fs-body);
  line-height: 1.95;
  color: rgba(255,255,255,.88);
}
.apply { background: var(--color-bg); }
.apply__grid {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.15fr);
  gap: 72px;
  padding: 80px 0 120px;
  align-items: start;
}
.apply__label {
  font-family: var(--font-en);
  font-size: var(--fs-en);
  letter-spacing: .28em;
  color: var(--color-text-sub);
}
.apply__side-title,
.apply__form-title {
  margin-top: 8px;
  font-size: var(--fs-h2);
  font-weight: 500;
  letter-spacing: .08em;
}
.apply__note {
  margin-top: 16px;
  margin-bottom: 36px;
  color: var(--color-text-sub);
}
.apply__facts { margin-top: 28px; }
.apply__facts div {
  display: grid;
  grid-template-columns: 5.5em 1fr;
  gap: 16px;
  padding: 14px 0;
  border-top: 1px solid var(--color-border);
}
.apply__facts div:last-child { border-bottom: 1px solid var(--color-border); }
.apply__facts dt {
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .12em;
  color: var(--color-text-sub);
}
.apply__facts dd { line-height: 1.8; }
.apply__tel {
  margin: 28px 0 24px;
  font-size: .9375rem;
  color: var(--color-text-sub);
}
.apply__tel a { border-bottom: 1px solid currentColor; }
.apply-form { display: grid; gap: 22px; }
.apply-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.apply-field { display: grid; gap: 8px; }
.apply-field span {
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .12em;
}
.apply-field em,
.apply-check em {
  margin-left: .4em;
  font-style: normal;
  font-weight: 500;
  color: var(--color-text-sub);
}
.apply-field input,
.apply-field select,
.apply-field textarea {
  width: 100%;
  padding: 10px 0 12px;
  border: 0;
  border-bottom: 1px solid var(--color-ink);
  border-radius: 0;
  background: transparent;
  color: var(--color-ink);
  font: inherit;
  letter-spacing: .06em;
}
.apply-field textarea { resize: vertical; min-height: 8em; }
.apply-field input:focus-visible,
.apply-field select:focus-visible,
.apply-field textarea:focus-visible {
  outline: none;
  border-bottom-width: 2px;
}
.apply-check {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: .9375rem;
  line-height: 1.7;
}
.apply-check input { margin-top: .45em; accent-color: var(--color-ink); }
.apply-hero--consult .apply-hero__bg img { object-position: 50% 30%; }
.apply__flow-title {
  margin-top: 40px;
  font-size: var(--fs-h3);
  font-weight: 700;
  letter-spacing: .1em;
}
.apply__flow { display: grid; margin-top: 12px; }
.apply__flow li {
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 12px 0;
  border-top: 1px solid var(--color-border);
  line-height: 1.7;
}
.apply__flow li:last-child { border-bottom: 1px solid var(--color-border); }
.apply__flow span { font-family: var(--font-en); font-size: 1.125rem; color: var(--color-text-sub); }
.apply-choices {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 20px;
  margin: 0;
  padding: 0;
  border: 0;
  min-width: 0;
  max-width: 100%;
}
.apply-choices legend {
  grid-column: 1 / -1;
  margin-bottom: 10px;
  padding: 0;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .12em;
}
.apply-choices legend em { margin-left: .4em; font-style: normal; font-weight: 500; color: var(--color-text-sub); }
.apply-form__submit {
  justify-self: start;
  margin-top: 8px;
  padding: 16px 36px;
  border: 1px solid var(--color-ink);
  background: var(--color-ink);
  color: #fff;
  letter-spacing: .16em;
  font-weight: 700;
  transition: color .4s ease, background .4s ease;
}
.apply-form__submit:hover { background: #fff; color: var(--color-ink); }
.apply-form__submit:disabled { opacity: .55; cursor: wait; }
.apply-done h2 {
  font-size: var(--fs-h2);
  font-weight: 500;
}
.apply-done p { margin-top: 16px; }
.apply-thanks {
  min-height: 70vh;
  display: grid;
  align-items: center;
  padding: calc(var(--header-h) + 48px) 0 96px;
}
.apply-thanks__inner { max-width: 36em; }
.apply-thanks h1 {
  margin-top: 12px;
  font-size: var(--fs-h2);
  font-weight: 500;
  letter-spacing: .08em;
}
.apply-thanks p { margin-top: 20px; }
.apply-thanks__tel { color: var(--color-text-sub); }
.apply-thanks__tel a { border-bottom: 1px solid currentColor; }
.apply-thanks__links { margin-top: 36px; }

/* ==========================================================
   SP最適化（768px以下）：コンパクトに、読みやすく
   ─ 本文を16pxに上げ、字間を詰めて1行の文字数を確保
   ─ 縦に長くなっていた About / 社長塾 / 支援事例 / 最新の発信 を圧縮
   ========================================================== */
.works__swipe { display: none; }

@media (max-width: 768px) {
  :root {
    --section-space: 64px;
    --fs-body: 1rem;
    --color-text-sub: #4a4a4a;   /* 小さな補足文字も読めるよう少し濃く */
  }

  /* --- 文字：大きく・字間は控えめに --- */
  body { font-size: 16px; line-height: 1.85; letter-spacing: .03em; }
  .section-head__ja { letter-spacing: .06em; }
  .section-head__en { font-size: .875rem; }

  /* --- About：写真を全面に、本文は短く --- */
  .about__intro { grid-template-columns: 1fr; gap: 20px; }
  .about__photo { margin: 0 calc(var(--gutter) * -1); }
  .about__photo-caption { display: block; }
  .about__message { display: grid; font-size: 1rem; }
  .about__message > * { grid-column: auto; }
  .about__message > .about__lead { font-size: 1.0625rem; line-height: 1.75; }
  .profile-table__row { grid-template-columns: 5.4em 1fr; gap: 12px; padding: 12px 0; }
  .profile-table dt { font-size: .9375rem; }
  .profile-table dd { font-size: .9375rem; }

  /* --- Services --- */
  .service,
  .service:nth-child(odd),
  .service:nth-child(even) { padding: 14px 0; }

  /* --- 社長塾：大きな箱を詰めて、講座・講師は2列に --- */
  #academy .academy__hero { padding: 64px 0 48px; }
  .academy__body { padding-top: 8px; padding-bottom: 64px; }
  .academy__block { margin-top: 48px; }
  .academy__points { margin-top: 36px; }
  .academy__point { min-height: 0; padding: 18px 18px 20px 64px; }
  /* 番号も <p> なので .academy__point p より強い指定で左に絶対配置する */
  .academy__point .academy__point-num { position: absolute; left: 18px; right: auto; top: 18px; margin: 0; font-size: 1.875rem; line-height: 1; opacity: .5; }
  .academy__point h3 { margin-top: 0; }
  .academy__point p { margin-top: 6px; line-height: 1.8; color: rgba(255,255,255,.88); }
  .academy__curric { grid-template-columns: 1fr 1fr; margin-top: 20px; }
  .academy__curric li { min-height: 0; gap: 2px; padding: 14px; }
  .academy__curric span { font-size: .8125rem; letter-spacing: .1em; }
  .academy__curric strong { font-size: .9375rem; letter-spacing: .04em; }
  .academy__facts { margin-top: 40px; }
  .academy__facts div { grid-template-columns: 4.5em 1fr; gap: 10px; padding: 12px 0; }
  .academy__faculty { grid-template-columns: 1fr 1fr; gap: 20px 16px; margin-top: 20px; }
  .academy__faculty li { padding-top: 12px; }
  .academy__faculty-name { font-size: .9375rem; }
  .academy__faculty p { margin-top: 4px; font-size: .8125rem; color: rgba(255,255,255,.8); }
  .academy__cta .circle-btn--lg { width: 180px; height: 180px; }
  .academy--teaser .academy__hero { padding: 64px 0 64px; }
  .academy-teaser__facts { grid-template-columns: 1fr 1fr; margin-top: 28px; }
  .academy-teaser__facts li,
  .academy-teaser__facts li:first-child { padding: 12px 0; }
  .academy-teaser__facts li + li { border-left: 0; }
  .academy-teaser__facts li:nth-child(even) { padding-left: 16px; border-left: 1px solid rgba(255,255,255,.16); }
  .academy-teaser__facts li:nth-child(n+3) { border-top: 1px solid rgba(255,255,255,.16); }
  .academy-teaser__actions { gap: 20px 28px; margin-top: 32px; }
  .academy--page .academy__breadcrumb { margin-bottom: 28px; }

  /* --- 支援事例：縦に6枚並べず、横スワイプのカルーセルに --- */
  .works__intro { padding: 56px 0 48px; }
  .works__body { padding-top: 40px; padding-bottom: 56px; }
  .works__swipe {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-bottom: 12px;
    font-size: .8125rem;
    letter-spacing: .1em;
    color: var(--color-text-sub);
  }
  .works__swipe::after { content: ""; width: 32px; height: 1px; background: currentColor; }
  .works__grid {
    display: flex;
    gap: 16px;
    max-width: none;
    margin: 0 calc(var(--gutter) * -1);
    padding: 0 var(--gutter) 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding: 0 var(--gutter);
    overscroll-behavior-x: contain;
  }
  .works__grid > li { flex: 0 0 80%; scroll-snap-align: start; }
  .works__grid .js-fade { opacity: 1; transform: none; }
  .work-card:hover { transform: none; }
  .work-card__body { padding-top: 14px; }
  .work-card__title { margin-top: 10px; font-size: 1rem; line-height: 1.6; }
  .work-card__summary {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: .875rem;
    line-height: 1.75;
  }
  .works__more { margin-top: 32px; }

  /* --- 申し込みページ（社長塾・本気塾・無料相談）：1カラムで入力しやすく --- */
  .apply-hero { padding: calc(var(--header-h) + 28px) 0 36px; }
  .apply-hero .breadcrumb { margin-bottom: 20px; }
  .apply-hero__title { font-size: 1.5rem; }
  .apply__grid { grid-template-columns: 1fr; gap: 48px; padding-top: 36px; padding-bottom: 72px; }
  .apply__facts { margin-top: 20px; }
  .apply__facts div { grid-template-columns: 4.5em 1fr; gap: 12px; padding: 12px 0; }
  .apply__facts dt { font-size: .875rem; letter-spacing: .06em; }
  .apply__tel { margin: 24px 0 20px; }
  .apply__note { margin-bottom: 28px; }
  .apply-form { gap: 20px; }
  .apply-form__row { grid-template-columns: 1fr; gap: 20px; }
  .apply-field span,
  .apply-choices legend { font-size: .875rem; letter-spacing: .06em; }
  .apply-field input,
  .apply-field select,
  .apply-field textarea {
    min-height: 48px;
    padding: 12px 14px;
    border: 1px solid #b8b8b8;
    border-radius: 6px;
    background: #fff;
    font-size: 16px;             /* 16px未満だと iPhone が入力時に拡大してしまう */
    letter-spacing: .02em;
  }
  .apply-field input:focus-visible,
  .apply-field select:focus-visible,
  .apply-field textarea:focus-visible {
    border-color: var(--color-ink);
    border-bottom-width: 1px;
    box-shadow: 0 0 0 1px var(--color-ink);
  }
  .apply-field textarea { min-height: 9em; }
  .apply-check { font-size: .9375rem; gap: 10px; }
  .apply-check input { flex-shrink: 0; width: 20px; height: 20px; margin-top: .2em; }
  .apply-choices { grid-template-columns: 1fr; gap: 12px; }
  .apply-form__submit { justify-self: stretch; width: 100%; padding: 18px 20px; font-size: 1rem; }

  /* --- 動画 --- */
  .reel { padding-top: 36px; padding-bottom: 40px; }
  .reel__lead { margin-bottom: 16px; }
  .reel__player {
    margin: 0 calc(var(--gutter) * -1);
    border-left: 0;
    border-right: 0;
  }

  /* --- 最新の発信 --- */
  .updates__lead { margin-bottom: 28px; }
  .updates__grid { gap: 32px; }
  .update-col__frame { height: 400px; }
  .update-col__fallback { min-height: 0; gap: 16px; padding: 20px; }
  .update-col__title { margin-bottom: 12px; }
}

/* ==========================================================
   Reduced motion
   ========================================================== */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  .js-fade { opacity: 1; transform: none; }
  .fv__char, .fv__em { animation-delay: 0s !important; }
  .fv__bg img,
  .philosophy__bg img,
  .academy__bg img { height: 100%; animation: none; }
  .fv .circle-btn,
  .fv__free-badge { animation: none; }
  .work-card:hover,
  .service:hover { transform: none; }
  .about__photo:hover .ph--about img,
  .about__scene:hover img { transform: none; }
  .service:hover .service__num { transform: none; }
}

/* ==========================================================
   SP FV / About — file 末尾で再指定（先の768pxルールに負けない）
   ========================================================== */
@media (max-width: 768px) {
  .fv {
    align-items: flex-end;
    min-height: 0 !important;
    height: auto;
    padding: calc(var(--header-h) + 24px) 0 32px;
  }
  .fv--film {
    min-height: 100svh !important;
    height: 100svh;
    padding: calc(var(--header-h) + 12px) 0 24px;
  }
  .fv__inner::before,
  .fv__en,
  .fv__title-pc,
  .fv__fields,
  .fv__lead,
  .fv__lead-foot,
  .fv__free,
  .fv__role,
  .fv__scroll { display: none !important; }
  .fv__col:not(.fv__col--cta) { display: none !important; }
  .fv__title { margin-top: 0; }
  .fv__title-sp {
    display: block !important;
    font-size: clamp(2rem, 9.2vw, 2.55rem);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: .06em;
  }
  .fv__sp-lead { display: block; margin-bottom: .3em; font-size: .56em; letter-spacing: .14em; }
  .fv__sp-main { display: block; }
  .fv__sub {
    display: block !important;
    margin-top: 12px;
    font-size: .9375rem;
    font-weight: 500;
    letter-spacing: .14em;
    color: var(--color-text-sub);
  }
  .fv--film .fv__sub,
  .fv--film .fv__credit,
  .fv--film .fv__name,
  .fv--film .text-link {
    color: #fff !important;
  }
  .fv--film .text-link::after { background: #fff !important; }
  .fv--film .juku-banner { display: block !important; }
  .juku-banner__inner {
    grid-template-columns: 1fr auto;
    padding: 16px 0 18px;
    gap: 6px 16px;
  }
  .juku-banner__en { display: none; }
  .juku-banner__ja { font-size: .8125rem; letter-spacing: .14em; }
  .fv__row { margin-top: 22px; gap: 16px; }
  .fv__col--cta { display: grid; grid-template-columns: 1fr; justify-items: start; gap: 12px; }
  .fv__actions { flex-direction: column; align-items: flex-start; gap: 14px; }
  .fv__credit { margin-top: 24px; padding-top: 12px; }
  .circle-btn { width: 120px; height: 120px; }

  .about { padding-top: 40px; }
  .about .section-head { margin-bottom: 16px; }
  .about .section-head__en {
    font-family: var(--font-en);
    font-size: .8125rem;
    letter-spacing: .28em;
  }
  .about .section-head__ja {
    font-size: 1.25rem;
    letter-spacing: .18em;
  }
  .about__more,
  .about__table-wrap,
  .about__scenes { display: none !important; }
  .about__intro {
    display: grid !important;
    grid-template-columns: 104px minmax(0, 1fr) !important;
    gap: 4px 16px !important;
    align-items: center;
  }
  .about__photo {
    width: 104px !important;
    max-width: 104px !important;
    min-width: 0 !important;
    margin: 0 !important;
    overflow: hidden;
  }
  .about__photo .ph--about {
    display: block;
    width: 104px !important;
    max-width: 104px !important;
    aspect-ratio: 3 / 4 !important;
    height: auto !important;
    max-height: none !important;
    border: 1px solid rgba(17, 17, 17, .16);
  }
  .about__photo .ph--about img {
    width: 104px !important;
    max-width: 104px !important;
    height: 100% !important;
    animation: none !important;
  }
  .about__photo .ph--about::after { display: none; }
  .about__photo-caption { display: none !important; }
  .about__message {
    margin-top: 0 !important;
    gap: 0;
    font-size: .9375rem;
    line-height: 1.7;
  }
  .about__lead {
    font-size: .9375rem !important;
    letter-spacing: .04em;
    line-height: 1.7 !important;
  }
  .about__meta-sp {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    margin-top: 22px;
    padding: 0;
    column-gap: 16px;
  }
  .about__meta-sp-row {
    display: grid;
    gap: 2px;
    padding: 12px 0;
    border-top: 1px solid rgba(17, 17, 17, .16);
  }
  .about__meta-sp-row:nth-child(n+3) { border-bottom: 1px solid rgba(17, 17, 17, .16); }
  .about__meta-sp-row:last-child { border-bottom: 1px solid rgba(17, 17, 17, .16); }
  .about__meta-sp dt {
    font-family: var(--font-en);
    font-size: .6875rem;
    font-weight: 500;
    letter-spacing: .2em;
    color: #6a6a6a;
  }
  .about__meta-sp dd {
    font-size: .875rem;
    font-weight: 500;
    letter-spacing: .04em;
    color: var(--color-ink);
  }
  .philosophy { margin-top: 32px; }
}

@media (max-width: 390px) {
  .fv { padding: calc(var(--header-h) + 20px) 0 28px; }
  .fv__title-sp {
    font-size: 1.875rem;
    letter-spacing: .04em;
  }
}

/* ==========================================================
   申し込みページ（無料相談・社長塾・本気塾）スマホ
   末尾指定：先の768pxルールに負けない
   ========================================================== */
.apply-picks {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  margin: 20px 0 32px;
  padding: 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  list-style: none;
}
.apply-picks li {
  display: grid;
  gap: 4px;
  padding: 16px 18px 16px 0;
}
.apply-picks li + li { padding-left: 18px; border-left: 1px solid var(--color-border); }
.apply-picks strong {
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .16em;
  color: var(--color-text-sub);
}
.apply-picks span {
  font-size: .9375rem;
  letter-spacing: .06em;
  line-height: 1.5;
}
.apply-hero__to-form { display: none; }
.apply-form,
.apply-form__row,
.apply-field { min-width: 0; max-width: 100%; }

/* ==========================================================
   SP motion — 余白は増やさず、写真と文字にゆっくりした動き
   （末尾指定：先の768pxルールに負けない）
   ========================================================== */
@media (max-width: 768px) {
  .js-fade {
    transform: translateY(20px);
    transition-duration: .9s;
  }

  .header { animation: headerIn .8s ease both; }

  .fv__bg img {
    height: 124%;
    animation: kenburns 36s ease-in-out alternate infinite;
  }
  .fv--film .fv__bg img {
    height: 100%;
    animation: none;
  }
  .fv__sound { top: calc(var(--header-h) + 4px); right: 16px; }
  .fv .circle-btn { animation: pulseRing 3.2s ease-out infinite; }

  .juku-banner__inner { padding: 16px 0 18px; }

  .about__photo .ph--about img {
    will-change: auto;
    animation: none;
  }
  .about__photo:hover .ph--about img { transform: none; }

  .philosophy { overflow: hidden; }
  .philosophy__bg img {
    height: 118%;
    will-change: transform;
    animation: kenburnsSoft 40s ease-in-out alternate infinite;
  }
  .academy__hero { overflow: hidden; }
  .academy__bg img {
    height: 118%;
    will-change: transform;
    animation: kenburnsSoft 38s ease-in-out alternate infinite;
  }
}

@media (prefers-reduced-motion: reduce) {
  .header,
  .juku-banner::before,
  .fv__bg img,
  .about__photo .ph--about img,
  .philosophy__bg img,
  .academy__bg img,
  .fv .circle-btn { animation: none !important; }
  .juku-banner::before { transform: none; }
  .js-fade { opacity: 1; transform: none; }
  .fv__bg img,
  .philosophy__bg img,
  .academy__bg img { height: 100%; }
  .fv--film .fv__video,
  .fv__sound { display: none !important; }
}

/* ==========================================================
   Apply SP — 申し込み3ページをスマホで読みやすく
   ========================================================== */
@media (max-width: 768px) {
  fieldset { min-width: 0; max-width: 100%; }

  .apply-hero {
    min-height: 0 !important;
    padding: calc(var(--header-h) + 6px) 0 22px !important;
  }
  .apply-hero__inner { max-width: none; }
  .apply-hero .breadcrumb,
  .apply-hero__en,
  .apply-hero__lead { display: none !important; }
  .apply-hero__kicker {
    margin-top: 0;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .1em;
    line-height: 1.5;
  }
  .apply-hero__title {
    margin-top: 8px;
    font-size: clamp(1.75rem, 8vw, 2.125rem);
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: .08em;
    overflow-wrap: normal;
    word-break: keep-all;
  }
  .apply-hero__to-form {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-top: 16px;
    padding-bottom: 2px;
    border-bottom: 1px solid rgba(255,255,255,.7);
    font-size: .8125rem;
    font-weight: 700;
    letter-spacing: .16em;
    color: #fff;
  }
  .apply-hero__to-form::after {
    content: "";
    width: 24px;
    height: 1px;
    background: currentColor;
  }

  .apply__grid {
    display: flex;
    flex-direction: column;
    gap: 36px;
    padding: 24px 0 calc(72px + env(safe-area-inset-bottom, 0px));
  }
  .apply__main { order: -1; }
  .apply__side-title,
  .apply__form-title {
    font-size: 1.25rem;
    letter-spacing: .08em;
    line-height: 1.4;
  }
  .apply__note {
    margin-top: 8px;
    margin-bottom: 20px;
    font-size: .9375rem;
    line-height: 1.7;
    letter-spacing: .03em;
  }
  .apply-picks {
    grid-template-columns: 1fr;
    margin: 12px 0 22px;
  }
  .apply-picks li {
    grid-template-columns: 4.2em 1fr;
    align-items: baseline;
    gap: 10px;
    padding: 11px 0;
  }
  .apply-picks li + li {
    padding-left: 0;
    border-left: 0;
    border-top: 1px solid var(--color-border);
  }
  .apply-picks strong {
    font-family: var(--font-ja);
    font-size: .8125rem;
    letter-spacing: .1em;
  }
  .apply-picks span {
    font-size: .9375rem;
    letter-spacing: .04em;
  }
  .apply__facts div {
    grid-template-columns: 4.2em 1fr;
    gap: 10px;
    padding: 10px 0;
  }
  .apply__facts dt {
    font-size: .75rem;
    letter-spacing: .06em;
  }
  .apply__facts dd {
    font-size: .9375rem;
    line-height: 1.7;
    overflow-wrap: break-word;
    word-break: normal;
  }
  .apply__flow li { padding: 10px 0; font-size: .9375rem; }
  .apply__tel { font-size: .875rem; overflow-wrap: break-word; }

  .apply-form { gap: 16px; }
  .apply-form__row {
    grid-template-columns: 1fr !important;
    gap: 16px;
  }
  .apply-field input,
  .apply-field select,
  .apply-field textarea {
    width: 100%;
    max-width: 100%;
    min-height: 48px;
    padding: 12px 14px;
    border: 1px solid #c8c8c8;
    border-radius: 8px;
    background: #fff;
    font-size: 16px;
    letter-spacing: .02em;
    -webkit-appearance: none;
    appearance: none;
  }
  .apply-field select {
    padding-right: 40px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23111' stroke-width='1.2' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    background-size: 12px 8px;
  }
  .apply-field textarea { min-height: 8.5em; }
  .apply-choices {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .apply-check {
    font-size: .9375rem;
    line-height: 1.6;
  }
  .apply-check input {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    margin-top: .15em;
  }
  .apply-form__submit {
    justify-self: stretch;
    width: 100%;
    min-height: 52px;
    padding: 16px 18px;
    font-size: 1rem;
    letter-spacing: .12em;
  }

  .apply-thanks {
    min-height: 0;
    padding: 100px 0 72px;
  }
  .apply-thanks h1 {
    font-size: 1.375rem;
    letter-spacing: .04em;
    line-height: 1.45;
    overflow-wrap: normal;
    word-break: keep-all;
  }
  .apply-thanks__tel {
    letter-spacing: .02em;
    overflow-wrap: break-word;
  }
}

@media (max-width: 390px) {
  .apply-hero { padding: calc(var(--header-h) + 4px) 0 20px !important; }
  .apply-hero__title { font-size: 1.75rem; }
}

@media (max-width: 768px) {
  #about .about__intro {
    display: grid !important;
    grid-template-columns: 104px minmax(0, 1fr) !important;
  }
  #about .about__photo,
  #about .about__photo .ph--about,
  #about .about__photo img {
    width: 104px !important;
    max-width: 104px !important;
    min-width: 0 !important;
  }
}
