/* ============================================================
   Variables
============================================================ */
:root {
  /* ── PLUNA Brand Palette（海辺の自然光・ライフスタイルブランド） ── */
  --c-bg:       #FFFFFF;  /* White */
  --c-ivory:    #F8F8F6;  /* Warm White */
  --c-panel:    #F8F8F6;
  --c-pink-lt:  #E8F1F5;  /* Pale Blue */
  --c-blush:    #FFFFFF;
  --c-rose-lt:  #E8F1F5;  /* Pale Blue */
  --c-text:     #302C2B;  /* Main Text */
  --c-mid:      #302C2B;
  --c-sub:      #595959;  /* Body Text */
  --c-gold:     #79A9C2;  /* Pluna Blue（小見出し・細いライン用） */
  --c-rose:     #79A9C2;  /* Pluna Blue（メインアクセント） */
  --c-border:   #E8F1F5;  /* Pale Blue系の淡い境界線 */
  --c-white:    #FFFFFF;
  --c-line:     #E8F1F5;

  --f-serif:  'Shippori Mincho', serif;
  --f-sans:   'Zen Kaku Gothic New', "游ゴシック Medium", "Yu Gothic Medium", "游ゴシック体", YuGothic, 'Noto Sans JP', sans-serif;
  --f-en:     'Playfair Display', 'Cormorant Garamond', serif;
  --f-script: 'Dancing Script', cursive;

  --w: 900px;
  --pad: 112px;

  /* ── エイリアス（配色ロールアウト中に個別指定した箇所用） ── */
  --nb-white: #FFFFFF;
  --nb-gray:  #F8F8F6;
  --nb-blue:  #79A9C2;
  --nb-blue-dk: #669AB5;
  --nb-black: #302C2B;
  --nb-sub:   #595959;
}

/* ============================================================
   Preloader
============================================================ */
/* ── Typography preloader ── */
.text-preloader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  pointer-events: auto;
}

.text-preloader.is-done {
  pointer-events: none;
}

/* カーテンパネル */
.text-preloader__curtain {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 51%;
  will-change: transform;
  z-index: 1;
}

.text-preloader__curtain--left {
  left: 0;
  background: var(--c-bg);
  transition: transform 1.5s cubic-bezier(0.85, 0, 0.15, 1) 0.20s;
}

.text-preloader__curtain--right {
  right: 0;
  background: var(--c-bg);
  transition: transform 1.5s cubic-bezier(0.85, 0, 0.15, 1) 0.30s;
}

.text-preloader.is-done .text-preloader__curtain--left  { transform: translateX(-100%); }
.text-preloader.is-done .text-preloader__curtain--right { transform: translateX(100%); }

.text-preloader__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  text-align: center;
  position: relative;
  z-index: 2;
  transition: opacity 0.5s ease;
}

.text-preloader.is-done .text-preloader__inner {
  opacity: 0;
}

.text-preloader__logo {
  width: 180px;
  height: auto;
  opacity: 0;
  animation: plSoftFade 1.4s ease 0.3s both;
}

.text-preloader__name {
  font-family: 'Pinyon Script', cursive;
  font-size: clamp(28px, 4vw, 38px);
  font-weight: 400;
  color: #79A9C2;
  letter-spacing: 0.04em;
  line-height: 1;
  opacity: 0;
  animation: plSoftFade 0.9s ease 2.4s both;
}

.text-preloader__tagline {
  font-family: var(--f-en);
  font-size: 16px;
  letter-spacing: 0.16em;
  color: #79A9C2;
  opacity: 0;
  animation: plSoftFade 0.9s ease 1.6s both;
}

@keyframes plSoftFade {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: none; }
}

.sp-br { display: none; }

@media (prefers-reduced-motion: reduce) {
  .text-preloader__logo,
  .text-preloader__etymology,
  .text-preloader__tagline { animation-duration: 0.1s; }
}

/* ============================================================
   Keyframes
============================================================ */
@keyframes rotateOrn {
  from { transform: rotate(45deg); }
  to   { transform: rotate(405deg); }
}

@keyframes shimmer {
  0%   { left: -100%; }
  100% { left: 160%; }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: none; }
}

@keyframes heroLabel {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}

@keyframes sparkle {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50%       { opacity: 1;   transform: scale(1.25); }
}

/* ============================================================
   Custom Cursor
============================================================ */
@media (pointer: fine) {
  * { cursor: none !important; }
}

#cursor {
  position: fixed;
  top: 0; left: 0;
  width: 0; height: 0;
  background: transparent;
  pointer-events: none;
  z-index: 99999;
  transform: translate(-100px, -100px);
  will-change: transform;
}

#cursor::after {
  content: '✦';
  position: absolute;
  transform: translate(-50%, -50%);
  font-size: 18px;
  line-height: 1;
  color: rgba(121, 169, 194, 0.85);
  transition: font-size 0.22s ease, color 0.22s ease;
  user-select: none;
}

#cursor.is-hover::after {
  font-size: 28px;
  color: rgba(121, 169, 194, 0.45);
}

.cursor-spark {
  position: fixed;
  pointer-events: none;
  z-index: 99998;
  font-size: 11px;
  color: var(--nb-blue);
  transform: translate(-50%, -50%);
  animation: sparkFly 0.90s ease-out both;
  user-select: none;
  line-height: 1;
}

@keyframes sparkFly {
  0%   { opacity: 1;   transform: translate(-50%, -50%)  scale(1.1) rotate(-10deg); }
  50%  { opacity: 0.8; transform: translate(-50%, -120%) scale(1.0) rotate(5deg); }
  100% { opacity: 0;   transform: translate(-50%, -200%) scale(0.3) rotate(20deg); }
}

/* ============================================================
   Scroll Reveal
============================================================ */
.reveal {
  opacity: 0;
  transform: translateY(36px);
  transition: opacity 0.88s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.88s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
}
.reveal-delay-1 { transition-delay: 0.15s; }
.reveal-delay-2 { transition-delay: 0.30s; }
.reveal-delay-3 { transition-delay: 0.45s; }
.reveal-delay-4 { transition-delay: 0.60s; }
.reveal-delay-5 { transition-delay: 0.75s; }

/* ============================================================
   Global Header
============================================================ */
.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 200;
  padding: 10px 48px;
  background: rgba(229, 236, 241, 0.80);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: padding 0.4s ease, box-shadow 0.4s ease;
}

.site-header--white {
  background: #FFFFFF;
}

/* ── New Brand Palette overrides（トップページ ヘッダー限定） ── */
.site-header--white .site-nav__link { color: var(--nb-black); }
.site-header--white .site-nav__link:hover { color: var(--nb-blue); }
.site-header--white .site-nav__link:hover::after { background: var(--nb-blue); }
.site-header--white .site-nav__link--active { color: var(--nb-blue); }
.site-header--white .site-nav__link--active::after { background: var(--nb-blue); }

.site-header.is-scrolled {
  padding: 8px 48px;
  box-shadow: 0 1px 0 rgba(121, 169, 194, 0.18);
}

.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
}

.site-header__logo {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 1;
}

.site-header__tagline {
  font-family: var(--f-en);
  font-size: 9px;
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0.14em;
  color: var(--c-sub);
  margin-top: 2px;
  white-space: nowrap;
}

.site-header__logo img {
  width: 200px;
  height: auto;
  display: block;
}

/* ── 仮テキストロゴ（正式ロゴ画像ができるまでの代替） ── */
.brand-wordmark {
  font-family: var(--f-en);
  font-style: italic;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--c-rose);
  white-space: nowrap;
  display: inline-block;
  line-height: 1;
}
.brand-wordmark--header { font-size: 30px; }
.brand-wordmark--nav { font-size: 24px; }
.brand-wordmark--footer { font-size: 26px; margin-bottom: 4px; }

.site-nav {
  display: flex;
  align-items: center;
  margin-left: auto;
  margin-right: 8px;
}

.site-nav__inner {
  display: flex;
  align-items: center;
}

.site-nav__head,
.site-nav__tagline {
  display: none;
}

.site-nav__list {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 44px;
  list-style: none;
}

.site-nav__list li {
  opacity: 1;
  transform: none;
}

.site-nav__link {
  font-family: var(--f-en);
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.1em;
  color: var(--c-text);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 4px 0;
  position: relative;
  transition: color 0.3s ease;
}
.site-nav__link--tight { letter-spacing: 0.04em; }
.site-nav__ja {
  display: block;
  white-space: nowrap;
}
.site-nav__en {
  display: block;
  font-family: var(--f-sans);
  font-size: 11px;
  letter-spacing: 0.05em;
  color: var(--c-gold);
  font-weight: 400;
  opacity: 0.7;
}
.site-nav__link:hover .site-nav__en {
  opacity: 1;
}
.site-nav__link:hover {
  color: var(--c-gold);
}

.site-nav__link::after {
  content: '';
  position: absolute;
  bottom: -6px; left: 50%;
  width: 0;
  height: 1px;
  background: var(--c-gold);
  transition: width 0.35s ease, opacity 0.35s ease;
  transform: translateX(-50%);
  opacity: 0.8;
}

.site-nav__link:hover { color: var(--c-gold); }
.site-nav__link:hover::after { width: 18px; }
.site-nav__link--active { color: var(--c-rose); }
.site-nav__link--active::after { width: 18px; background: var(--c-rose); }

/* ── Premium nav item (Produce) ── */
.site-nav__link--premium {
  background: var(--c-gold);
  color: #fff !important;
  border: none;
  padding: 6px 16px 6px 12px;
  border-radius: 100px;
  letter-spacing: 0.14em;
  font-style: italic;
  font-size: 10px;
  white-space: nowrap;
  transition: opacity 0.22s;
}
.site-nav__link--premium::before {
  content: '✦';
  font-style: normal;
  margin-right: 5px;
  font-size: 8px;
  opacity: 0.85;
  display: inline;
}
.site-nav__link--premium::after { display: none; }
.site-nav__link--premium:hover { opacity: 0.78; color: #fff; }

/* ── Hamburger toggle（デスクトップでは非表示） ── */
.nav-toggle {
  display: none;
}
.nav-toggle span {
  display: block;
  height: 1px;
  background: var(--c-gold);
  transition: transform 0.4s cubic-bezier(0.76, 0, 0.24, 1), opacity 0.3s ease, width 0.3s ease;
  transform-origin: center;
}
.nav-toggle span:nth-child(1) { width: 24px; }
.nav-toggle span:nth-child(2) { width: 16px; align-self: flex-end; }
.nav-toggle span:nth-child(3) { width: 24px; }
.nav-toggle:hover span:nth-child(2) { width: 24px; }
.nav-toggle.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); width: 24px; }
.nav-toggle.is-open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-toggle.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); width: 24px; }

/* ============================================================
   Reset & Base
============================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }

/* ── Scrollbar ── */
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: linear-gradient(to bottom, var(--c-rose), var(--c-gold));
  border-radius: 10px;
}
* { scrollbar-width: thin; scrollbar-color: var(--c-rose) transparent; }

body {
  background: var(--c-bg);
  color: var(--c-text);
  font-family: var(--f-sans);
  font-weight: 400;
  font-size: 17px;
  line-height: 1.9;
  -webkit-font-smoothing: antialiased;
}

img { display: block; max-width: 100%; height: auto; }
a   { color: inherit; text-decoration: none; }
p   { font-weight: 400; line-height: 1.9; }
p + p { margin-top: 1.2em; }
strong { font-weight: 700; }

body.modal-open { overflow: hidden; }

/* ============================================================
   Layout
============================================================ */
.container {
  width: 100%;
  max-width: var(--w);
  margin: 0 auto;
  padding: 0 40px;
}

/* ============================================================
   Shared Parts
============================================================ */

/* Eyebrow */
.eyebrow {
  font-family: var(--f-en);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.28em;
  color: var(--c-gold);
  text-transform: uppercase;
  margin-bottom: 12px;
}
.eyebrow--c { text-align: center; }

/* ============================================================
   PAIN BRIDGE — Philosophyとチェックリストをつなぐ短い一文
============================================================ */
.pain-bridge {
  background: var(--c-bg);
  padding: 120px var(--pad) 88px;
  text-align: center;
}
.pain-bridge__inner {
  max-width: 560px;
  margin: 0 auto;
}
.pain-bridge__statement {
  font-family: var(--f-serif);
  font-size: clamp(19px, 2.2vw, 24px);
  line-height: 1.9;
  letter-spacing: 0.06em;
  color: var(--nb-blue);
  margin: 0 0 52px;
}
.pain-bridge__question {
  font-family: var(--f-serif);
  font-size: clamp(17px, 1.9vw, 20px);
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 1.8;
  color: var(--c-sub);
  margin: 0;
}
@media (max-width: 768px) {
  .pain-bridge { padding: 72px 24px 56px; }
  .pain-bridge__statement { font-size: 19px; margin-bottom: 40px; }
  .pain-bridge__question { font-size: 17px; }
}

/* ============================================================
   HERO INTRO — 2026-09-27新設。Hero直下、CONCEPTの前に置く導入セクション。
   「毎日は創っていける」の意味を、説明しすぎずほどく短い連なり。
============================================================ */
.hero-intro {
  background: linear-gradient(180deg, #FFFFFF 0%, #F3F6F8 100%);
  padding: 96px var(--pad) 88px;
  text-align: center;
}
.hero-intro__inner {
  max-width: 560px;
  margin: 0 auto;
}
.hero-intro__title {
  font-family: var(--f-serif);
  font-weight: 500;
  font-size: clamp(16px, 1.7vw, 19px);
  line-height: 1.9;
  letter-spacing: 0.03em;
  color: var(--nb-black);
  margin: 0 0 24px;
}
.hero-intro__block {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  letter-spacing: 0.02em;
  color: var(--c-sub);
  margin: 0;
}
.hero-intro__audience {
  font-family: var(--f-sans);
  font-size: 12px;
  letter-spacing: 0.03em;
  color: var(--c-sub);
  opacity: 0.75;
  margin: 24px 0 0;
}
@media (max-width: 768px) {
  .hero-intro { padding: 72px 24px 64px; }
  .hero-intro__title { font-size: 16px; margin-bottom: 20px; }
  .hero-intro__block { font-size: 13.5px; }
}

/* ============================================================
   CONCEPT WORRY — 大切にしたいものがあるからこそ、迷うこともある
   （写真＋01〜05のシンプルな縦リスト構成）
============================================================ */
.concept-worry {
  display: grid;
  grid-template-columns: 25fr 75fr;
  min-height: 300px;
}
.concept-worry__photo {
  position: relative;
  overflow: hidden;
}
.concept-worry__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.concept-worry__body {
  padding: 88px 80px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: var(--c-bg);
}
.concept-worry__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.3vw, 25px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin-bottom: 44px;
}
.concept-worry__title-accent {
  color: var(--nb-blue);
  font-weight: 700;
}
.concept-worry__item {
  display: flex;
  gap: 16px;
  padding: 15px 0;
  border-bottom: 1px solid rgba(121, 169, 194, 0.18);
}
.concept-worry__item:last-of-type {
  border-bottom: none;
}
.concept-worry__check {
  flex-shrink: 0;
  color: var(--nb-blue);
  opacity: 0.7;
  padding-top: 3px;
}
.concept-worry__check svg {
  display: block;
}
.concept-worry__text {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.85;
  color: var(--c-text);
}
.concept-worry__em {
  color: var(--nb-blue);
  font-weight: 500;
}
.concept-worry__note {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.9;
  color: var(--c-sub);
  margin: 32px 0 0;
}
.concept-worry__highlight {
  font-family: var(--f-serif);
  font-size: clamp(16px, 1.7vw, 17.5px);
  font-weight: 500;
  line-height: 1.9;
  color: var(--nb-blue);
  margin: 18px 0 0;
}
.concept-worry__body .concept-worry__link {
  align-self: flex-start;
  margin-top: 32px;
}
@media (max-width: 768px) {
  .concept-worry { grid-template-columns: 1fr; }
  .concept-worry__photo { height: 280px; order: 1; }
  .concept-worry__body { padding: 56px 28px; order: 2; }
  .concept-worry__title { margin-bottom: 32px; }
}

/* ============================================================
   STEPS MODAL — そのための、3つのステップ
============================================================ */
.steps-modal {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
}
.steps-modal.is-open {
  opacity: 1;
  pointer-events: auto;
}
.steps-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(48, 44, 43, 0.32);
}
.steps-modal__panel {
  position: relative;
  background: var(--c-bg);
  max-width: 640px;
  width: 100%;
  max-height: 85vh;
  overflow-y: auto;
  padding: 72px 64px;
  text-align: center;
  transform: translateY(16px);
  transition: transform 0.35s ease;
}
.steps-modal.is-open .steps-modal__panel {
  transform: translateY(0);
}
.steps-modal__close {
  position: absolute;
  top: 20px;
  right: 24px;
  background: none;
  border: none;
  font-size: 26px;
  line-height: 1;
  font-weight: 300;
  color: var(--c-sub);
  cursor: pointer;
  padding: 8px;
}
.steps-modal__close:hover {
  color: var(--nb-black);
}
.steps-modal__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.6vw, 27px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 56px;
}
.steps-modal__list {
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 40px;
}
.steps-modal__num {
  font-family: var(--f-serif);
  font-size: 13px;
  letter-spacing: 0.1em;
  color: var(--nb-blue);
  opacity: 0.6;
  margin: 0 0 10px;
}
.steps-modal__name {
  font-family: var(--f-serif);
  font-size: 18px;
  font-weight: 600;
  color: var(--nb-black);
  margin: 0 0 14px;
}
.steps-modal__desc {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.9;
  color: var(--c-text);
  margin: 0;
}
.steps-modal__em {
  color: var(--nb-blue);
  font-weight: 500;
}
@media (max-width: 768px) {
  .steps-modal { padding: 20px; }
  .steps-modal__panel { padding: 56px 28px; max-height: 88vh; }
  .steps-modal__title { margin-bottom: 40px; }
  .steps-modal__list { gap: 32px; }
}

/* ============================================================
   DIALOGUE WAY — 一人では見えにくいことを、対話の中で
============================================================ */
.dialogue-way {
  padding: 140px var(--pad);
  background: #F4F4F4;
  text-align: center;
}
.dialogue-way__inner {
  max-width: 900px;
  margin: 0 auto;
}
.dialogue-way__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.3vw, 26px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 32px;
}
.dialogue-way__intro {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.95;
  color: var(--c-text);
  max-width: 520px;
  margin: 0 auto 72px;
}
.dialogue-way__stages {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 48px;
  text-align: left;
}
.dialogue-way__stage {
  position: relative;
  padding-top: 44px;
}
.dialogue-way__stage-num {
  font-family: var(--f-en);
  font-size: 76px;
  font-weight: 300;
  letter-spacing: 0;
  line-height: 1;
  color: var(--nb-blue);
  opacity: 0.14;
  position: absolute;
  top: -8px;
  left: -2px;
  z-index: 0;
  pointer-events: none;
  margin: 0;
}
.dialogue-way__stage-name {
  position: relative;
  z-index: 1;
  font-family: var(--f-serif);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--nb-black);
  margin: 0 0 14px;
}
.dialogue-way__stage-desc {
  position: relative;
  z-index: 1;
  font-family: var(--f-sans);
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--c-text);
  margin: 0;
}
.dialogue-way__loop {
  font-family: var(--f-en);
  font-size: 22px;
  color: var(--nb-blue);
  opacity: 0.45;
  margin: 40px 0 0;
}
.dialogue-way__closing {
  font-family: var(--f-serif);
  font-size: clamp(18px, 2.2vw, 22px);
  line-height: 1.8;
  color: var(--nb-blue);
  margin-top: 56px;
}
.dialogue-way__link {
  margin-top: 40px;
}
@media (max-width: 768px) {
  .dialogue-way { padding: 96px 24px; }
  .dialogue-way__intro { margin-bottom: 56px; }
  .dialogue-way__stages { grid-template-columns: 1fr; gap: 40px; }
  .dialogue-way__stage-num { font-size: 60px; }
  .dialogue-way__stage { padding-top: 36px; }
}

/* ============================================================
   WRITE × DIALOGUE — 書くことと対話、それぞれの良さを組み合わせる
============================================================ */
.write-dialogue {
  padding: 140px var(--pad);
  background: var(--c-bg);
  text-align: center;
}
.write-dialogue__inner {
  max-width: 640px;
  margin: 0 auto;
}
.write-dialogue__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 2.8vw, 32px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 32px;
}
.write-dialogue__intro {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: var(--c-text);
  max-width: 460px;
  margin: 0 auto 56px;
}
.write-dialogue__split {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 40px;
  text-align: left;
  align-items: start;
}
.write-dialogue__col-div {
  width: 1px;
  align-self: stretch;
  background: var(--c-border);
}
.write-dialogue__col-label {
  font-family: var(--f-en);
  font-size: 13px;
  letter-spacing: 0.05em;
  color: var(--nb-blue);
  margin: 0 0 16px;
}
.write-dialogue__col-text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.95;
  color: var(--c-text);
  margin: 0;
}
.write-dialogue__closing {
  font-family: var(--f-serif);
  font-size: clamp(16px, 1.9vw, 18px);
  line-height: 1.9;
  color: var(--c-text);
  margin-top: 56px;
}
@media (max-width: 768px) {
  .write-dialogue { padding: 96px 24px; }
  .write-dialogue__split { grid-template-columns: 1fr; gap: 32px; }
  .write-dialogue__col-div { display: none; }
}

/* ============================================================
   TOP CHANGE — 気づきを、現実の変化へ（Customer Successの流れ）
============================================================ */
.top-change {
  padding: 140px var(--pad);
  background: var(--c-bg);
  text-align: center;
}
.top-change__inner {
  max-width: 760px;
  margin: 0 auto;
}
.top-change__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.3vw, 26px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 56px;
}
.top-change__flow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px 6px;
  margin-bottom: 48px;
}
.top-change__node {
  font-family: var(--f-sans);
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--nb-black);
  background: rgba(121, 169, 194, 0.08);
  border: 1px solid rgba(121, 169, 194, 0.22);
  border-radius: 999px;
  padding: 10px 18px;
  white-space: nowrap;
}
.top-change__arrow {
  color: var(--nb-blue);
  opacity: 0.45;
  font-size: 14px;
}
.top-change__text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2.1;
  color: var(--c-sub);
  margin: 0;
}
@media (max-width: 768px) {
  .top-change { padding: 96px 24px; }
  .top-change__flow { gap: 8px; }
  .top-change__node { font-size: 12.5px; padding: 8px 14px; }
}

/* ============================================================
   TOP PHILOSOPHY — 短い宣言としてのフィロソフィー（TOPページ専用・about.htmlとは別文言）
============================================================ */
.top-philosophy {
  padding: 160px var(--pad);
  background: var(--c-ivory);
  text-align: center;
}
.top-philosophy__inner {
  max-width: 560px;
  margin: 0 auto;
}
.top-philosophy__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.5vw, 26px);
  font-weight: 500;
  line-height: 1.7;
  color: var(--nb-blue);
  margin: 16px 0 40px;
}
.top-philosophy__text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2.1;
  color: var(--c-sub);
  margin: 0;
}
@media (max-width: 768px) {
  .top-philosophy { padding: 96px 24px; }
  .top-philosophy__title { margin-bottom: 32px; }
}

/* ============================================================
   SERVICES — SESSION / PROGRAM・WORKSHOP / PLUNA SESSION
   「話す」「テーマ」「時間をかけて」の3つの異なる関わり方
============================================================ */
.services-flow {
  padding: 140px var(--pad) 40px;
  background: var(--c-bg);
}
.services-flow__head {
  max-width: 480px;
  margin: 0 auto 96px;
  text-align: center;
}
.services-flow__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 30px);
  font-weight: 500;
  letter-spacing: 0.03em;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 28px;
}
.services-flow__lead {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: var(--c-sub);
}
.services-flow__block {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
  max-width: 1080px;
  margin: 0 auto 120px;
}
.services-flow__block--reverse .services-flow__photo { order: 2; }
.services-flow__block--reverse .services-flow__body { order: 1; }
.services-flow__block--editorial {
  display: block;
  max-width: 720px;
}
.services-flow__block--editorial .services-flow__photo {
  aspect-ratio: 16 / 9;
  margin-bottom: 48px;
}
.services-flow__block--editorial .services-flow__body {
  max-width: 640px;
  margin: 0 auto;
}
.services-flow__title-row {
  position: relative;
  display: inline-block;
  margin-bottom: 10px;
}
.services-flow__num {
  position: absolute;
  top: -34px;
  left: -24px;
  font-family: var(--f-serif);
  font-size: clamp(64px, 7vw, 84px);
  font-weight: 300;
  color: var(--nb-blue);
  opacity: 0.18;
  line-height: 1;
  z-index: 0;
  margin: 0;
  pointer-events: none;
  user-select: none;
  white-space: nowrap;
}
.services-flow__block--feature {
  gap: 56px;
  margin-bottom: 0;
}
.services-flow__feature {
  max-width: 1080px;
  margin: 0 auto 120px;
  background: rgba(121, 169, 194, 0.05);
  border-radius: 20px;
  padding: 72px;
}
.services-flow__photo {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 6px;
}
.services-flow__badge {
  position: absolute;
  top: 18px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
  display: inline-block;
  color: #fff;
  font-family: var(--f-sans);
  font-size: 12px;
  letter-spacing: 0.1em;
  padding: 8px 22px;
  border-radius: 20px;
  white-space: nowrap;
}
.services-flow__badge--inline {
  position: static;
  transform: none;
  display: inline-block;
  margin-left: -10px;
  margin-bottom: 16px;
}
.services-flow__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.services-flow__eyebrow {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--c-gold);
  margin-bottom: 14px;
}
.services-flow__name {
  position: relative;
  z-index: 1;
  font-family: var(--f-serif);
  font-size: clamp(23px, 2.6vw, 27px);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.4;
  color: var(--nb-black);
  margin-bottom: 0;
  white-space: nowrap;
}
.services-flow__heading {
  font-family: var(--f-sans);
  font-size: 14.5px;
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: 0.02em;
  color: var(--c-sub);
  margin-bottom: 26px;
}
.services-flow__text {
  font-family: var(--f-sans);
  font-size: 15px;
  line-height: 2;
  color: var(--c-text);
  margin-bottom: 24px;
}
.services-flow__note {
  font-family: var(--f-sans);
  font-size: 12.5px;
  line-height: 1.9;
  color: var(--c-sub);
  margin-bottom: 24px;
}
.services-flow__steps {
  margin-bottom: 24px;
}
.services-flow__step {
  margin-bottom: 20px;
}
.services-flow__step:last-child { margin-bottom: 0; }
.services-flow__step-label {
  font-family: var(--f-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: var(--nb-blue);
  margin-bottom: 6px;
}
.services-flow__step-text {
  font-family: var(--f-sans);
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--c-text);
}
.services-flow__offer {
  margin-top: 32px;
  padding-top: 28px;
  border-top: 1px solid var(--c-border);
}
.services-flow__offer-name {
  font-family: var(--f-serif);
  font-size: 16px;
  color: var(--c-text);
  margin-bottom: 6px;
}
.services-flow__offer-en {
  font-family: var(--f-en);
  font-size: 12px;
  font-style: italic;
  color: var(--c-sub);
  margin-left: 8px;
}
.services-flow__offer-meta {
  font-family: var(--f-sans);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--c-sub);
  margin-bottom: 16px;
}
.services-flow__offer-desc {
  font-family: var(--f-sans);
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--c-text);
  margin-bottom: 20px;
}
.services-flow__cross {
  margin-top: 40px;
  padding-top: 28px;
  border-top: 1px dashed var(--c-border);
  font-family: var(--f-sans);
  font-size: 12.5px;
  line-height: 1.9;
  color: var(--c-sub);
}
.services-flow__cross a {
  display: inline-block;
  margin-top: 10px;
  color: var(--nb-blue);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ============================================================
   HOW PLUNA WORKS — 変化の循環（services.html）
============================================================ */
.how-it-works {
  padding: 130px var(--pad) 100px;
  background: rgba(121, 169, 194, 0.04);
}
.how-it-works__inner {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}
.how-it-works__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 30px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 28px;
}
.how-it-works__lead {
  font-family: var(--f-sans);
  font-size: 15px;
  line-height: 2;
  color: var(--c-sub);
  margin-bottom: 64px;
}
.how-it-works__intro {
  font-family: var(--f-sans);
  font-size: 15px;
  line-height: 2;
  color: var(--c-sub);
  max-width: 460px;
  margin: 0 auto 72px;
}

/* ── 気づく → 選ぶ → やってみる、振り返る：3カラムのエディトリアル表示 ── */
.how-it-works__flow {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 48px;
  max-width: 720px;
  margin: 0 auto;
  text-align: left;
}
.how-it-works__title-row {
  position: relative;
  display: inline-block;
  margin-bottom: 14px;
}
.how-it-works__num {
  position: absolute;
  top: -24px;
  left: -14px;
  font-family: var(--f-serif);
  font-size: clamp(52px, 6vw, 64px);
  font-weight: 300;
  color: var(--nb-blue);
  opacity: 0.28;
  line-height: 1;
  z-index: 0;
  margin: 0;
  pointer-events: none;
  user-select: none;
  white-space: nowrap;
}
.how-it-works__node-title {
  position: relative;
  z-index: 1;
  font-family: var(--f-serif);
  font-size: 21px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--nb-black);
  margin-bottom: 0;
  white-space: nowrap;
}
.how-it-works__node {
  position: relative;
}
.how-it-works__node:not(:last-child)::after {
  content: '→';
  position: absolute;
  top: 8px;
  right: -32px;
  font-family: var(--f-sans);
  font-size: 16px;
  color: var(--nb-blue);
  opacity: 0.4;
}
.how-it-works__node-text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.9;
  color: var(--c-sub);
}

/* ── 3STEPを受けたメッセージ ── */
.how-it-works__message {
  max-width: 460px;
  margin: 56px auto 0;
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.6vw, 28px);
  font-weight: 500;
  line-height: 1.65;
  color: var(--nb-black);
  text-align: center;
}

/* ── 短い結び ── */
.how-it-works__closing {
  max-width: 420px;
  margin: 28px auto 96px;
  font-family: var(--f-sans);
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--c-sub);
  text-align: center;
}
@media (max-width: 640px) {
  .how-it-works__flow { grid-template-columns: 1fr; gap: 40px; text-align: center; }
  .how-it-works__num { font-size: 44px; top: -16px; left: -10px; }
  .how-it-works__node:not(:last-child)::after { display: none; }
  .how-it-works__closing { margin-bottom: 72px; }
}
.how-it-works__methods {
  padding-top: 0;
}
.how-it-works__methods-label {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-gold);
  margin-bottom: 14px;
}
.how-it-works__methods-text {
  font-family: var(--f-sans);
  font-size: 13px;
  line-height: 1.9;
  color: var(--c-sub);
  margin-bottom: 40px;
}
.how-it-works__methods-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  max-width: 640px;
  margin: 0 auto;
  text-align: left;
}
.how-it-works__methods-card {
  display: block;
  padding: 32px 28px;
  background: rgba(121, 169, 194, 0.04);
  border: 1px solid rgba(121, 169, 194, 0.16);
  border-radius: 4px;
  text-decoration: none;
  transition: border-color 0.2s, background 0.2s;
}
.how-it-works__methods-card:hover {
  border-color: rgba(121, 169, 194, 0.4);
  background: rgba(121, 169, 194, 0.07);
}
.how-it-works__methods-card-en {
  display: block;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--nb-blue);
  margin-bottom: 14px;
}
.how-it-works__methods-card-desc {
  font-family: var(--f-sans);
  font-size: 13px;
  line-height: 1.8;
  color: var(--c-text);
  margin-bottom: 18px;
}
.how-it-works__methods-card-link {
  display: inline-block;
  font-family: var(--f-sans);
  font-size: 13.5px;
  font-weight: 500;
  color: var(--c-text);
  border-bottom: 1px solid rgba(121, 169, 194, 0.35);
  padding-bottom: 3px;
  transition: border-color 0.2s, color 0.2s;
}
.how-it-works__methods-card:hover .how-it-works__methods-card-link {
  border-color: var(--nb-blue);
  color: var(--nb-blue);
}
@media (max-width: 768px) {
  .how-it-works { padding: 88px 24px; }
  .how-it-works__lead { margin-bottom: 48px; }
}
@media (max-width: 480px) {
  .how-it-works__methods-cards { grid-template-columns: 1fr; gap: 16px; }
}

@media (max-width: 900px) {
  .services-flow__block {
    grid-template-columns: 1fr;
    gap: 28px;
    margin-bottom: 80px;
  }
  .services-flow__block--feature {
    grid-template-columns: 1fr;
    gap: 28px;
    margin-bottom: 0;
  }
  .services-flow__block--reverse .services-flow__photo,
  .services-flow__block--reverse .services-flow__body {
    order: initial;
  }
  .services-flow__feature { padding: 36px 24px; border-radius: 12px; margin-bottom: 80px; }
  .services-flow__photo { max-width: 320px; margin: 0 auto; aspect-ratio: 4 / 3; }
  .services-flow__num { font-size: 52px; top: -22px; left: -14px; }
}
@media (max-width: 768px) {
  .services-flow { padding: 96px 24px 16px; }
  .services-flow__head { margin-bottom: 64px; }
}

@keyframes heartPulse {
  0%, 100% { transform: scale(1);    opacity: 0.55; }
  50%       { transform: scale(1.35); opacity: 1; }
}

/* Section heading */
.sec-title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 30px);
  font-weight: 500;
  letter-spacing: 0.08em;
  line-height: 1.55;
  color: var(--c-text);
  text-align: center;
}

/* Section header block */
.sec-head { margin-bottom: 72px; }

.sec-lead {
  font-size: 14px;
  font-weight: 300;
  letter-spacing: 0.06em;
  line-height: 2.0;
  color: var(--c-text);
  text-align: center;
  margin-top: 24px;
}

/* Gold bar */
.gold-bar {
  width: 36px;
  height: 1px;
  background: var(--c-gold);
  margin-top: 20px;
}
.gold-bar--c {
  margin-left: auto;
  margin-right: auto;
}

/* ============================================================
   Buttons
============================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--f-sans);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.14em;
  padding: 14px 40px;
  border-radius: 40px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.35s ease, color 0.35s ease, border-color 0.35s ease,
              transform 0.25s ease, box-shadow 0.35s ease;
}

.btn::after {
  content: '→';
  font-size: 11px;
  transition: transform 0.22s ease;
}
.btn:hover::after { transform: translateX(4px); }
.btn:hover { transform: translateY(-2px); }

/* Primary: rose gradient */
.btn--rose {
  background: var(--nb-blue-dk);
  color: #fff;
  border: none;
  box-shadow: 0 4px 16px rgba(121, 169, 194, 0.25);
}
.btn--rose:hover {
  background: #5C8CA5;
  box-shadow: 0 6px 20px rgba(121, 169, 194, 0.35);
}

/* Premium: gold solid */
.btn--gold {
  background: linear-gradient(
    105deg,
    #245AA5 0%,
    #245AA5 35%,
    #245AA5 50%,
    #245AA5 65%,
    #245AA5 100%
  );
  background-size: 300% 100%;
  background-position: 0% center;
  color: #fff;
  border: none;
  box-shadow: 0 4px 20px rgba(121, 169, 194, 0.30);
  animation: btnSheen 6s ease-in-out infinite;
}
@keyframes btnSheen {
  0%   { background-position: 0% center; }
  45%  { background-position: 100% center; }
  100% { background-position: 0% center; }
}
.btn--gold:hover {
  animation: none;
  background-position: 50% center;
  box-shadow: 0 6px 24px rgba(121, 169, 194, 0.45);
}

/* Sub: gold outline pill */
.btn--outline-rose {
  background: transparent;
  color: var(--c-rose);
  border: 1px solid var(--c-rose);
}
.btn--outline-rose:hover {
  background: var(--c-rose);
  color: #fff;
  border-color: var(--c-rose);
}
.btn--outline-gold {
  background: transparent;
  color: var(--c-text);
  border: 1px solid var(--c-gold);
}
.btn--outline-gold::after { color: var(--c-gold); }
.btn--outline-gold:hover {
  background: var(--c-gold);
  color: #fff;
  border-color: var(--c-gold);
  box-shadow: 0 6px 20px rgba(121, 169, 194, 0.28);
}
.btn--outline-gold:hover::after { color: #fff; }

/* Dark outline pill (contact section) */
.btn--outline-dark {
  background: transparent;
  color: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(255, 255, 255, 0.40);
  letter-spacing: 0.14em;
}
.btn--outline-dark::after { color: rgba(255,255,255,0.55); }
.btn--outline-dark:hover {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.80);
}

/* ============================================================
   01. Hero
============================================================ */
.hero {
  position: relative;
  min-height: 58vh;
  overflow: hidden;
  display: flex;
  align-items: center;
}

/* テキスト可読性グラデーション（左側のみ・写真は右側で素のまま見せる） */
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(to right,
    rgba(253, 251, 248, 0.4) 0%,
    rgba(253, 251, 248, 0.2) 18%,
    rgba(253, 251, 248, 0.06) 30%,
    rgba(253, 251, 248, 0) 42%
  );
  pointer-events: none;
}

/* Bottom fade into next section */
.hero::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 44px;
  background: linear-gradient(to top, var(--c-bg) 0%, transparent 100%);
  z-index: 10;
  pointer-events: none;
}

/* ── Spotlight overlay ── */
.hero__spotlight {
  display: none;
}


/* ── Floating hearts ── */
.hero__hearts {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 4;
  overflow: hidden;
}

.hero__heart {
  position: absolute;
  bottom: -20px;
  color: rgba(121, 169, 194, 0.22);
  animation: floatHeartSway ease-in-out infinite;
  user-select: none;
  line-height: 1;
}

@keyframes floatHeartSway {
  0%   { transform: translateY(0) translateX(0)    rotate(-8deg) scale(0.9); opacity: 0; }
  12%  { opacity: 1; }
  40%  { transform: translateY(-35vh) translateX(12px)  rotate(6deg)  scale(1.05); }
  70%  { transform: translateY(-65vh) translateX(-9px)  rotate(-4deg) scale(0.95); opacity: 0.55; }
  100% { transform: translateY(-95vh) translateX(6px)   rotate(10deg) scale(0.7); opacity: 0; }
}

@keyframes profileHeartFloat {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  33%       { transform: translateY(-10px) rotate(6deg); }
  66%       { transform: translateY(-5px) rotate(-4deg); }
}

.hero__heart--1 { left: 82%; font-size: 10px; animation-duration:  9s; animation-delay:  0.0s; }
.hero__heart--2 { left: 91%; font-size:  8px; animation-duration: 12s; animation-delay:  4.0s; }
.hero__heart--3,
.hero__heart--4,
.hero__heart--5,
.hero__heart--6,
.hero__heart--7,
.hero__heart--8 { display: none; }


/* ── Left: テキスト ── */
.hero__left {
  position: relative;
  z-index: 3;
  width: 100%;
  max-width: 640px;
  margin: 0;
  padding: 156px clamp(70px, 6vw, 120px) 108px;
  text-align: left;
  opacity: 0;
  transform: translateX(-3%);
}

.hero-loaded .hero__left {
  animation: panelEnter 1.1s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes panelEnter {
  from { opacity: 0; transform: translateY(32px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Content */
.hero__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

/* Label */
.hero__label {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 28px;
  opacity: 0;
}
body.hero-loaded .hero__label {
  animation: heroLabel 1.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) 1.5s both;
}
.hero__label-line {
  display: none;
}

.hero__cta {
  display: inline-block;
  margin-top: 12px;
  padding: 10px 22px;
  border: 1px solid var(--nb-blue-dk);
  color: #fff;
  background: var(--nb-blue-dk);
  font-family: var(--f-sans);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  border-radius: 3px;
  box-shadow: none;
  transition: background 0.2s, color 0.2s, box-shadow 0.2s;
}
.hero__cta:hover {
  background: #5C8CA5;
  border-color: var(--nb-blue-dk);
  color: #fff;
}
.hero__label-text {
  font-family: var(--f-sans);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.2em;
  color: var(--c-gold);
}

/* Heading */
.hero__audience {
  font-family: var(--f-sans);
  font-size: 12.5px;
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: 0.05em;
  color: var(--c-sub);
  margin: 0 0 20px;
}
.hero__heading {
  font-family: var(--f-serif);
  font-size: clamp(18px, 2.1vw, 24px);
  font-weight: 400;
  line-height: 1.85;
  letter-spacing: 0.03em;
  color: var(--nb-black);
  margin-bottom: 52px;
}
.hero__tagline {
  font-family: var(--f-serif);
  font-size: clamp(0.85rem, 1.05vw, 0.95rem);
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.05em;
  color: var(--nb-blue);
  margin-bottom: 28px;
}
.hero__sub {
  font-family: var(--f-serif);
  font-size: clamp(0.76rem, 0.95vw, 0.85rem);
  line-height: 1.8;
  letter-spacing: 0.05em;
  margin-bottom: 36px;
  max-width: 30em;
  color: var(--c-sub);
  opacity: 1;
}

/* 幕が開くように下から登場 */
.hero__heading-line {
  display: block;
  overflow: hidden;
  line-height: 1.75;
}

.hero__heading-inner {
  display: block;
  white-space: nowrap;
  transform: translateY(108%);
}
body.hero-loaded .hero__heading-inner {
  animation: lineReveal 1.3s cubic-bezier(0.16, 1, 0.3, 1) both;
}
body.hero-loaded .hero__heading-line:nth-child(1) .hero__heading-inner { animation-delay: 0.3s; }
body.hero-loaded .hero__heading-line:nth-child(2) .hero__heading-inner { animation-delay: 0.9s; }
body.hero-loaded .hero__heading-line:nth-child(3) .hero__heading-inner { animation-delay: 1.5s; }

@keyframes lineReveal {
  to { transform: translateY(0); }
}

/* ============================================================
   TEXT CHAR REVEAL — 見出しの文字を1文字ずつ表示（JSでcharを生成）
============================================================ */
.char-reveal .char {
  display: inline-block;
  opacity: 0;
  transform: translateY(0.35em);
}
.char-reveal.is-charred .char {
  animation: charRise 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes charRise {
  to { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   PHOTO DRIFT — 写真の緩やかな呼吸するようなズーム
============================================================ */
@keyframes photoDrift {
  0%   { transform: scale(1); }
  100% { transform: scale(1.055); }
}

/* Scroll indicator */
.hero__scroll {
  position: absolute;
  bottom: 40px;
  left: 72px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  z-index: 3;
  opacity: 0;
}
body.hero-loaded .hero__scroll {
  animation: fadeInUp 1.2s ease 3.0s both;
}

.hero__scroll-line {
  display: block;
  width: 1px;
  height: 52px;
  background: linear-gradient(to bottom, var(--c-gold) 0%, transparent 100%);
  transform-origin: top;
  animation: scrollPulse 2.2s ease-in-out 1.8s infinite;
}

@keyframes scrollPulse {
  0%   { transform: scaleY(0); opacity: 0; transform-origin: top; }
  40%  { transform: scaleY(1); opacity: 1; transform-origin: top; }
  60%  { transform: scaleY(1); opacity: 1; transform-origin: bottom; }
  100% { transform: scaleY(0); opacity: 0; transform-origin: bottom; }
}

.hero__scroll-text {
  font-family: var(--f-en);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.36em;
  color: var(--c-gold);
  text-transform: uppercase;
}

.hero__web-accent { color: var(--c-rose); }

/* CTA row */
.hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  opacity: 0;
}
body.hero-loaded .hero__cta {
  animation: fadeInUp 1.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) 2.4s both;
}

/* ── Right: 写真 ── */
.hero__right {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  opacity: 0;
  transform: scale(1.08);
}
body.hero-loaded .hero__right {
  animation: heroPhotoReveal 1.8s cubic-bezier(0.16, 1, 0.3, 1) 0.2s both,
             photoDrift 15s ease-in-out 2s infinite alternate;
}
@keyframes heroPhotoReveal {
  to { opacity: 1; transform: scale(1); }
}

.hero__video {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: 50% 38%;
  position: absolute;
  inset: 0;
  display: block;
  will-change: transform;
  filter: brightness(1.1) saturate(0.9) contrast(1.02);
  transform: scaleX(-1);
}

/* ============================================================
   02. Profile / Welcome
============================================================ */
.profile {
  background: linear-gradient(150deg, #EFF5F7 0%, #F5EFEB 55%, #E7EEF3 100%);
  position: relative;
  overflow: hidden;
}

.profile__hearts {
  position: absolute; inset: 0;
  pointer-events: none; overflow: hidden; z-index: 1;
}
.profile__heart {
  position: absolute; color: var(--c-rose);
  user-select: none; line-height: 1;
  animation: profileHeartFloat ease-in-out infinite;
}
.profile__heart:nth-child(1) { font-size: 13px; top: 20%; right: 5%;  opacity: 0.25; animation-duration: 6.0s; animation-delay: 0.0s; }
.profile__heart:nth-child(2) { font-size:  9px; top: 60%; right: 7%;  opacity: 0.18; animation-duration: 7.5s; animation-delay: 2.0s; }
.profile__heart:nth-child(3) { font-size: 16px; bottom: 28%; right: 3%; opacity: 0.20; animation-duration: 5.5s; animation-delay: 1.0s; }

.profile__inner {
  position: relative; z-index: 2;
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 46%;
  align-items: stretch;
  min-height: 700px;
}

/* ── Left: tall editorial photo ── */
.profile__visual {
  position: relative;
  overflow: hidden;
}

/* Soft left-edge fade blending into background */
.profile__visual::after {
  content: '';
  position: absolute;
  top: 0; left: 0; bottom: 0;
  width: 38%;
  background: linear-gradient(to left, transparent, #F5EFEB 90%);
  z-index: 2;
  pointer-events: none;
}

.profile__photo-wrap {
  position: absolute;
  inset: 0;
}

.profile__photo {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 20%;
  display: block;
  transition: transform 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  will-change: transform;
}

/* ── Right: text — editorial message style ── */
.concept__text {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 80px 80px 80px 56px;
}

/* Large script — writes itself left→right (signature animation) */
.profile__sig-deco {
  font-family: 'Pinyon Script', cursive;
  font-size: clamp(58px, 6.5vw, 92px);
  font-weight: 400;
  color: var(--c-rose);
  line-height: 1.15;
  letter-spacing: 0.02em;
  margin-bottom: 2px;
  opacity: 0.28;
}

/* Rule line */
.profile__rule {
  width: 80px;
  height: 1px;
  background: linear-gradient(to right, var(--c-rose) 40%, transparent);
  margin-bottom: 22px;
}

.profile__label {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.32em;
  color: var(--c-rose);
  text-transform: uppercase;
  margin-bottom: 20px;
}

.profile__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 2.6vw, 36px);
  font-weight: 500;
  letter-spacing: 0.08em;
  line-height: 1.7;
  color: var(--c-text);
  margin-bottom: 32px;
}

.profile__name-em { font-style: normal; color: var(--c-rose); white-space: nowrap; }

.profile__body {
  font-size: 14.5px; color: var(--c-text);
  line-height: 2.2; margin-bottom: 32px;
}

.profile__body em {
  font-style: normal;
  color: var(--c-gold);
  font-family: var(--f-serif);
  font-size: 1.05em;
  letter-spacing: 0.1em;
}

.profile__check {
  list-style: none;
  padding: 0;
  margin-bottom: 28px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.profile__check li {
  font-size: 14.5px;
  line-height: 1.8;
  letter-spacing: 0.06em;
  color: var(--c-text);
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.profile__check li::before {
  content: '□';
  color: var(--c-rose);
  font-size: 14px;
  flex-shrink: 0;
  margin-top: 2px;
}

.profile__tags {
  display: flex; flex-wrap: wrap; gap: 8px;
  list-style: none; padding: 0; margin-bottom: 36px;
}
.profile__tags li {
  font-family: var(--f-sans); font-size: 11px; font-weight: 300;
  letter-spacing: 0.10em; color: var(--c-rose);
  background: rgba(121, 169, 194, 0.08);
  border: 1px solid rgba(121, 169, 194, 0.22);
  border-radius: 100px; padding: 5px 16px;
}

.profile__link {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--f-sans); font-size: 11px; letter-spacing: 0.12em;
  color: var(--c-mid);
  border-bottom: 1px solid var(--c-border); padding-bottom: 3px;
  align-self: flex-start;
  transition: color 0.2s, border-color 0.2s;
}
.profile__link::after { content: '→'; font-size: 11px; transition: transform 0.2s; }
.profile__link:hover  { color: var(--c-rose); border-color: var(--c-rose); }
.profile__link:hover::after { transform: translateX(3px); }

/* ============================================================
   Marquee
============================================================ */
.marquee {
  overflow: hidden;
  padding: 16px 0;
  background: #E5ECF1;
  border-top: 1px solid rgba(121, 169, 194, 0.18);
  border-bottom: 1px solid rgba(121, 169, 194, 0.18);
}

.marquee__track {
  display: flex;
  white-space: nowrap;
  animation: marqueeScroll 32s linear infinite;
  will-change: transform;
}

.marquee__text {
  font-family: var(--f-en);
  font-style: italic;
  font-size: 20px;
  font-weight: 300;
  letter-spacing: 0.22em;
  color: var(--c-gold);
  flex-shrink: 0;
  padding-right: 0;
}

@keyframes marqueeScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ============================================================
   02.5. Concept Strip
============================================================ */
.strip {
  position: relative;
  overflow: hidden;
}

.strip__img-wrap {
  position: relative;
  height: clamp(280px, 48vw, 540px);
}

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

.strip__overlay {
  position: absolute;
  inset: 0;
  background: rgba(42, 36, 36, 0.40);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 24px;
}

.strip__eyebrow {
  font-family: var(--f-en);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: 0.36em;
  color: rgba(255, 255, 255, 0.65);
  text-transform: uppercase;
  margin-bottom: 20px;
}

.strip__phrase {
  font-family: var(--f-serif);
  font-size: clamp(22px, 3.8vw, 44px);
  font-weight: 500;
  letter-spacing: 0.1em;
  line-height: 1.8;
  color: #fff;
}

/* ============================================================
   03. Problems
============================================================ */
/* ============================================================
   03. For You
============================================================ */
.forwho {
  background-color: #e9f0f4;
  background-image: url('images/marble-bg.png');
  background-size: cover;
  background-position: center;
  padding: var(--pad) 0;
  position: relative;
  overflow: hidden;
}
.forwho::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(250, 243, 239, 0.86);
  z-index: 0;
}

/* Large background watermark */
.forwho__watermark {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-family: var(--f-en);
  font-size: clamp(100px, 18vw, 220px);
  font-weight: 300;
  letter-spacing: -0.01em;
  color: rgba(121, 169, 194, 0.08);
  white-space: nowrap;
  pointer-events: none; user-select: none;
  z-index: 0; line-height: 1;
}

.forwho .container { position: relative; z-index: 1; }

.forwho__head {
  text-align: center;
  margin-bottom: 64px;
}

.forwho__title {
  font-family: var(--f-en);
  font-style: italic;
  font-weight: 300;
  line-height: 1.1;
  letter-spacing: 0.01em;
  color: var(--c-text);
  margin-bottom: 20px;
}

.forwho__title-pre {
  font-size: clamp(40px, 5.5vw, 72px);
  display: inline-block;
  vertical-align: baseline;
  margin-right: 0.28em;
  opacity: 0;
  transform: translateX(-20px);
  transition: opacity 0.7s ease 0.1s, transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.1s;
}

.forwho__title-em {
  font-style: italic;
  font-size: clamp(40px, 5.5vw, 72px);
  color: var(--c-rose);
  display: inline-block;
  vertical-align: baseline;
  opacity: 0;
  transform: translateX(20px);
  transition: opacity 0.7s ease 0.35s, transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.35s;
}

.forwho.is-visible .forwho__title-pre {
  opacity: 1; transform: translateX(0);
}
.forwho.is-visible .forwho__title-em {
  opacity: 1; transform: translateX(0);
}

.forwho__sub {
  font-size: 14px;
  font-weight: 300;
  line-height: 2.1;
  letter-spacing: 0.1em;
  color: var(--c-text);
}

/* ── List layout ── */
.forwho__list {
  list-style: none;
  padding: 0;
  margin: 0 auto 72px;
  max-width: 760px;
}

.forwho__item {
  display: block;
  padding: 52px 0;
  border-top: 1px solid rgba(121, 169, 194, 0.2);
  position: relative;
}

.forwho__item::after {
  content: '';
  position: absolute;
  top: -1px; left: 0;
  height: 1px; width: 0;
  background: linear-gradient(to right, var(--c-rose), transparent);
  transition: width 1.1s cubic-bezier(0.16, 1, 0.3, 1) 0.05s;
}
.forwho__item.is-visible::after { width: 100%; }

.forwho__item-num {
  font-family: var(--f-en);
  font-style: italic;
  font-size: 11px;
  font-weight: 300;
  letter-spacing: 0.12em;
  color: var(--c-gold);
  padding-top: 8px;
  opacity: 0;
  transition: opacity 0.6s ease 0.4s;
}
.forwho__item.is-visible .forwho__item-num { opacity: 1; }

.forwho__item-voice {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 32px);
  font-weight: 500;
  letter-spacing: 0.07em;
  line-height: 1.6;
  color: var(--c-text);
  margin-bottom: 20px;
  clip-path: inset(0 0 100% 0);
  transition: clip-path 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.25s;
}
.forwho__item.is-visible .forwho__item-voice { clip-path: inset(0 0 0% 0); }

.forwho__item-note {
  font-size: 13.5px;
  font-weight: 300;
  line-height: 2.1;
  letter-spacing: 0.05em;
  color: var(--c-text);
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.7s ease 0.6s, transform 0.7s ease 0.6s;
}
.forwho__item.is-visible .forwho__item-note { opacity: 1; transform: translateY(0); }

/* ── Closing line ── */
.forwho__closing {
  text-align: center;
  font-family: var(--f-serif);
  font-size: clamp(16px, 1.8vw, 20px);
  font-weight: 400;
  letter-spacing: 0.12em;
  line-height: 2;
  color: var(--c-rose);
  padding-top: 56px;
  border-top: 1px solid rgba(121, 169, 194, 0.2);
  max-width: 600px;
  margin: 0 auto;
}

/* ============================================================
   04. Services
============================================================ */
.services {
  background: var(--c-bg);
  position: relative;
  overflow: hidden;
  min-height: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  padding: 56px 0;
}

/* ── 扉（clip-pathで開閉） ── */
.services__door {
  position: absolute;
  inset: 0;
  z-index: 10;
  background: #dee6ec;
  min-height: 520px;
  transition: clip-path 1.2s cubic-bezier(0.76, 0, 0.24, 1);
  will-change: clip-path;
}

/* 初期状態：左扉は左半分・右扉は右半分 */
.services__door--left  { clip-path: inset(0 50% 0 0); }
.services__door--right { clip-path: inset(0 0 0 50%); }

/* 開いた状態：完全に消える */
.services.doors-open .services__door--left  { clip-path: inset(0 100% 0 0); }
.services.doors-open .services__door--right { clip-path: inset(0 0 0 100%); }

/* ── アーチ装飾（内側＝中央側に配置） ── */
.services__arch {
  position: absolute;
  top: 0;
  right: 0;        /* 左ドアの内側（右端） */
  left: auto;
  width: clamp(120px, 14vw, 200px);
  height: 82%;
  background: rgba(121, 169, 194, 0.10);
  border-radius: 999px 999px 0 0;  /* 上が丸いアーチ形 */
}
.services__arch--right {
  left: 0;         /* 右ドアの内側（左端） */
  right: auto;
}

/* ── Service 番号オーバーレイ（扉が開く前） ── */
.services__step-label {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -56%);
  z-index: 20;
  text-align: center;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  opacity: 1;
  transition: opacity 0.5s ease 0.1s;
}
.services.doors-open .services__step-label {
  opacity: 0;
}
.services__step-num {
  font-family: var(--f-en);
  font-style: italic;
  font-weight: 300;
  line-height: 1;
  color: var(--c-gold);
  letter-spacing: 0.02em;
}
.services__step-1 {
  font-size: clamp(88px, 11vw, 140px);
}
.services__step-st {
  font-size: clamp(32px, 3.8vw, 52px);
  vertical-align: 0.12em;
}
.services__step-service {
  font-family: var(--f-en);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(36px, 5vw, 72px);
  letter-spacing: 0.08em;
  color: var(--c-gold);
  line-height: 1;
}
.services__step-msg {
  font-family: var(--f-serif);
  font-size: clamp(13px, 1.4vw, 18px);
  color: var(--c-gold);
  letter-spacing: 0.18em;
  margin-top: 20px;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.8s ease 2.4s, transform 0.8s ease 2.4s;
}
.services.step-typed .services__step-msg {
  opacity: 1;
  transform: translateY(0);
}

/* ============================================================
   05-alt. Services Two (Service 02 — 扉アニメーション)
============================================================ */
.services-two {
  background: var(--c-bg);
  position: relative;
  overflow: hidden;
  min-height: 680px;
  display: flex;
  align-items: center;
  padding: 80px 0;
}
.services-two__door {
  position: absolute;
  inset: 0;
  z-index: 10;
  background: linear-gradient(135deg, #fdf8f5 0%, #e9f0f4 100%);
  transition: clip-path 1.5s cubic-bezier(0.76, 0, 0.24, 1);
  will-change: clip-path;
}
.services-two__door--left  { clip-path: inset(0 50% 0 0); }
.services-two__door--right { clip-path: inset(0 0 0 50%); }
.services-two.doors-open .services-two__door--left  { clip-path: inset(0 77% 0 0); }
.services-two.doors-open .services-two__door--right { clip-path: inset(0 0 0 77%); }
.services-two__arch {
  position: absolute;
  top: 0;
  right: 0;
  width: clamp(120px, 14vw, 200px);
  height: 82%;
  background: rgba(121, 169, 194, 0.10);
  border-radius: 999px 999px 0 0;
}
.services-two__arch--right { left: 0; right: auto; }
.services-two__step-label {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 20;
  text-align: center;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  opacity: 1;
  transition: opacity 0.5s ease 0.1s;
}
.services-two.doors-open .services-two__step-label { opacity: 0; }
.services-two__step-service {
  font-family: var(--f-en);
  font-weight: 300;
  font-size: clamp(11px, 1.1vw, 14px);
  letter-spacing: 0.55em;
  text-transform: uppercase;
  color: var(--c-gold);
  margin-bottom: -6px;
}
.services-two__step-num {
  font-family: var(--f-en);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(88px, 11vw, 140px);
  line-height: 1;
  color: var(--c-gold);
  letter-spacing: 0.02em;
}
.services-two__step-msg {
  font-family: var(--f-serif);
  font-size: clamp(11px, 1.1vw, 15px);
  color: var(--c-gold);
  letter-spacing: 0.22em;
  margin-top: 14px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.services-two.step-typed .services-two__step-msg {
  opacity: 0.85;
  transform: translateY(0);
}
.services-two__cards {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 26%;
  width: 100%;
  opacity: 0;
  transition: opacity 0.5s ease 1.0s;
}
.services-two.doors-open .services-two__cards { opacity: 1; }

/* ── Lesson Card コンテンツ ── */
.lesson-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  width: 100%;
}
.lesson-card > * {
  opacity: 0;
  transform: translateY(14px);
}
.services.doors-open .lesson-card__badge   { opacity:1; transform:translateY(0); transition: opacity .6s ease 0.7s, transform .6s ease 0.7s; }
.services.doors-open .lesson-card__eyebrow { opacity:1; transform:translateY(0); transition: opacity .6s ease 0.9s, transform .6s ease 0.9s; }
.services.doors-open .lesson-card__title   { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.1s, transform .6s ease 1.1s; }
.services.doors-open .lesson-card__ja      { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.3s, transform .6s ease 1.3s; }
.services.doors-open .lesson-card__desc    { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.4s, transform .6s ease 1.4s; }
.services.doors-open .lesson-card__cta     { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.6s, transform .6s ease 1.6s; }
.lesson-card__badge {
  display: inline-block;
  font-family: var(--f-serif);
  font-size: 10px;
  letter-spacing: 0.14em;
  color: #fff;
  background: var(--c-rose);
  padding: 3px 14px;
  border-radius: 99px;
  margin-bottom: 16px;
}
.lesson-card__eyebrow {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.28em;
  color: var(--c-gold);
  text-transform: uppercase;
  margin-bottom: 12px;
}
.lesson-card__title {
  font-family: var(--f-en);
  font-weight: 300;
  font-size: clamp(24px, 3.0vw, 40px);
  letter-spacing: 0.08em;
  line-height: 1.2;
  margin-bottom: 6px;
  background: linear-gradient(90deg, #245AA5 0%, #245AA5 30%, #245AA5 50%, #245AA5 70%, #245AA5 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: goldShimmer 4s linear infinite;
  animation-play-state: paused;
}
.services-two.doors-open .lesson-card__title { animation-play-state: running; }
.lesson-card__ja {
  font-family: var(--f-serif);
  font-size: 12px;
  letter-spacing: 0.16em;
  color: var(--c-mid);
  margin-bottom: 20px;
}
.lesson-card__desc {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.9;
  color: var(--c-mid);
  margin-bottom: 28px;
}
.lesson-card__cta { margin-top: 4px; }
.salon-feature__cta,
.lesson-card__cta { width: fit-content; align-self: center; padding-left: 28px; padding-right: 28px; }

/* ── 扉フェーズ：家アイコンアニメーション ── */
.services__door-illust {
  position: relative;
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
}
.services__door-icon-wrap {
  position: relative;
  width: clamp(100px, 11vw, 150px);
  aspect-ratio: 1614 / 1690;
}
.services__door-icon-wrap img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.services__door-house {
  clip-path: inset(0 0 100% 0);
  transition: clip-path 2.2s cubic-bezier(0.16, 1, 0.3, 1) 0s;
}
.services.step-typed .services__door-house {
  clip-path: inset(0 0 0% 0);
}
.services__door-heart {
  opacity: 0;
  transform-origin: 29% 48%;
  transform: scale(0.25);
  transition: opacity 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) 1.5s,
              transform 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) 1.5s;
}
.services.step-typed .services__door-heart { opacity: 1; transform: scale(1.08); }
.services__door-float-hearts {
  position: absolute;
  bottom: 50%;
  left: 26%;
  pointer-events: none;
}
.services__door-float-hearts span {
  position: absolute;
  color: var(--c-rose);
  opacity: 0;
}
.services.step-typed .services__door-float-hearts span { animation: salonHeartRise ease-out infinite; }
.services__door-float-hearts span:nth-child(1) { font-size: 10px; left: -18px; animation-delay: 2.4s; animation-duration: 3.0s; }
.services__door-float-hearts span:nth-child(2) { font-size:  8px; left:   4px; animation-delay: 3.2s; animation-duration: 3.4s; }
.services__door-float-hearts span:nth-child(3) { font-size: 11px; left: -28px; animation-delay: 4.0s; animation-duration: 2.8s; }
.services__door-float-hearts span:nth-child(4) { font-size:  7px; left:  14px; animation-delay: 4.8s; animation-duration: 3.2s; }
.services__door-float-hearts span:nth-child(5) { font-size:  9px; left:  -8px; animation-delay: 5.5s; animation-duration: 3.0s; }

/* ── 左扉テキストなし ── */

/* ── サービスカード（2枚並び） ── */
.services__cards {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  width: 100%;
  opacity: 0;
  transition: opacity 0.6s ease 0.4s;
}
.services.doors-open .services__cards { opacity: 1; }

/* ── ジグザグカード ── */
.svc-card {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  height: 520px;
  background: var(--c-bg);
  border-bottom: 1px solid rgba(121, 169, 194, 0.2);
  overflow: hidden;
}
.svc-card:last-child { border-bottom: none; }
.svc-card:nth-child(even) { flex-direction: row-reverse; background: var(--c-blush); }

.svc-card__visual {
  flex: 1;
  overflow: hidden;
  position: relative;
}
.svc-card__visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.8s ease;
}
.svc-card:hover .svc-card__visual img { transform: scale(1.04); }

.svc-card__content {
  flex: 1;
  padding: 48px 8%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  text-align: left;
  position: relative;
}

.svc-card__en {
  font-family: var(--f-en);
  font-size: clamp(12px, 1vw, 14px);
  font-weight: 300;
  font-style: italic;
  letter-spacing: 0.12em;
  color: var(--c-gold);
  opacity: 0.75;
  margin-bottom: 28px;
}
.svc-card__ja {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.5vw, 34px);
  font-weight: 500;
  letter-spacing: 0.08em;
  color: var(--c-text);
  margin-bottom: 8px;
}
.svc-card__meta {
  font-family: var(--f-sans);
  font-size: 13px;
  letter-spacing: 0.08em;
  color: var(--c-sub);
  margin-bottom: 28px;
}
.svc-card__desc {
  font-family: var(--f-sans);
  font-size: clamp(13px, 1.1vw, 15px);
  line-height: 2;
  letter-spacing: 0.04em;
  color: var(--c-text);
  margin-bottom: 36px;
}

@media (max-width: 768px) {
  .svc-card,
  .svc-card:nth-child(even) { flex-direction: column; height: auto; }
  .svc-card__visual { height: 240px; flex: none; }
  .svc-card__content { padding: 48px 24px; text-align: center; align-items: center; }
}

/* ── ウォーターマーク番号 ── */
.svc-watermark {
  position: absolute;
  bottom: 8px;
  right: 8%;
  font-family: 'Shippori Mincho', serif;
  font-style: normal;
  font-weight: 400;
  font-size: clamp(100px, 13vw, 160px);
  color: var(--c-rose);
  opacity: 0.4;
  pointer-events: none;
  user-select: none;
  line-height: 1;
  white-space: nowrap;
  letter-spacing: -0.02em;
}

/* ── サービス提供中バッジ（01・02） ── */
.svc-card__badge {
  position: absolute;
  top: 20px;
  left: 20px;
  z-index: 2;
  font-family: var(--f-en);
  font-size: 11px;
  font-style: italic;
  letter-spacing: 0.15em;
  color: #fff;
  background: rgba(47, 65, 86, 0.55);
  padding: 6px 16px;
  border-radius: 999px;
  backdrop-filter: blur(2px);
}


.salon-feature {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
  text-align: center;
  width: 100%;
}

/* ── SVGイラスト ── */
.salon-feature__illust {
  position: relative;
  display: flex;
  justify-content: center;
}

/* ── ロゴから切り取ったアイコン画像 ── */
.salon-icon-wrap {
  position: relative;
  width: clamp(180px, 24vw, 280px);
  aspect-ratio: 1614 / 1690;
}
.salon-icon-wrap img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* 家アウトライン：上から下にワイプ表示 */
.salon-icon-house {
  clip-path: inset(0 0 100% 0);
  transition: clip-path 1.6s cubic-bezier(0.16, 1, 0.3, 1) 1.2s;
}
.services.doors-open .salon-icon-house {
  clip-path: inset(0 0 0% 0);
}

/* ハートはスプリングで弾む（画像内での中心位置: ~29% 48%） */
.salon-icon-heart {
  opacity: 0;
  transform-origin: 29% 48%;
  transform: scale(0.25);
  transition: opacity 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 2.8s,
              transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 2.8s;
}
.services.doors-open .salon-icon-heart { opacity: 1; transform: scale(1); }

/* 浮かぶハート（ジェムハートの位置に合わせる） */
.salon-float-hearts {
  position: absolute;
  bottom: 50%;
  left: 26%;
  pointer-events: none;
}
.salon-float-hearts span {
  position: absolute;
  color: var(--c-rose);
  opacity: 0;
}
.services.doors-open .salon-float-hearts span { animation: salonHeartRise ease-out infinite; }
.salon-float-hearts span:nth-child(1) { font-size: 10px; left: -18px; animation-delay: 3.2s; animation-duration: 3.0s; }
.salon-float-hearts span:nth-child(2) { font-size: 8px;  left:   4px; animation-delay: 4.1s; animation-duration: 3.4s; }
.salon-float-hearts span:nth-child(3) { font-size: 11px; left: -28px; animation-delay: 5.0s; animation-duration: 2.8s; }
.salon-float-hearts span:nth-child(4) { font-size: 7px;  left:  14px; animation-delay: 5.8s; animation-duration: 3.2s; }
.salon-float-hearts span:nth-child(5) { font-size: 9px;  left:  -8px; animation-delay: 6.6s; animation-duration: 3.0s; }

@keyframes salonHeartRise {
  0%   { opacity: 0;   transform: translateY(0)    scale(1); }
  15%  { opacity: 0.8; }
  100% { opacity: 0;   transform: translateY(-72px) scale(0.3); }
}

/* ── テキスト（ staggered reveal） ── */
.salon-feature__body { display: flex; flex-direction: column; align-items: center; }
.salon-feature__body > * {
  opacity: 0;
  transform: translateY(14px);
}
.services.doors-open .salon-feature__eyebrow { opacity:1; transform:translateY(0); transition: opacity .6s ease 0.6s, transform .6s ease 0.6s; }
.services.doors-open .salon-feature__title   { opacity:1; transform:translateY(0); transition: opacity .6s ease 0.8s, transform .6s ease 0.8s; }
.services.doors-open .salon-feature__ja      { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.0s, transform .6s ease 1.0s; }
.services.doors-open .salon-feature__desc    { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.2s, transform .6s ease 1.2s; }
.services.doors-open .salon-feature__price   { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.4s, transform .6s ease 1.4s; }
.services.doors-open .salon-feature__cta     { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.6s, transform .6s ease 1.6s; }

.salon-feature__eyebrow {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.28em;
  color: var(--c-gold);
  text-transform: uppercase;
  margin-bottom: 12px;
}

/* ゴールドシマーテキスト */
@keyframes goldShimmer {
  0%   { background-position:  200% center; }
  100% { background-position: -200% center; }
}
.salon-feature__title {
  font-family: var(--f-en);
  font-weight: 300;
  font-size: clamp(26px, 3.2vw, 42px);
  letter-spacing: 0.08em;
  line-height: 1.2;
  margin-bottom: 6px;
  background: linear-gradient(90deg, #245AA5 0%, #245AA5 30%, #245AA5 50%, #245AA5 70%, #245AA5 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: goldShimmer 4s linear infinite;
  animation-play-state: paused;
}
.services.doors-open .salon-feature__title { animation-play-state: running; }

.salon-feature__ja {
  font-family: var(--f-serif);
  font-size: 13px;
  letter-spacing: 0.16em;
  color: var(--c-mid);
  margin-bottom: 28px;
}

.salon-feature__desc {
  font-size: 13.5px;
  font-weight: 300;
  line-height: 2.1;
  letter-spacing: 0.05em;
  color: var(--c-text);
  margin-bottom: 16px;
}

.salon-feature__price {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--c-sub);
  margin-bottom: 28px;
}
.salon-feature__price strong {
  font-size: 18px;
  font-weight: 300;
  color: var(--c-gold);
  letter-spacing: 0.04em;
}



/* ============================================================
   05. Voice
============================================================ */

/* ============================================================
   05b. 2nd Step
============================================================ */
.step2 {
  background: var(--c-bg);
  position: relative;
  overflow: hidden;
  min-height: 780px;
  display: flex;
  align-items: center;
  padding: 80px 0;
}

/* ── 扉 ── */
.step2__door {
  position: absolute;
  inset: 0;
  z-index: 10;
  background: linear-gradient(135deg, #d6e3eb 0%, #bfd2df 100%);
  transition: clip-path 1.5s cubic-bezier(0.76, 0, 0.24, 1);
  will-change: clip-path;
}
.step2__door--left  { clip-path: inset(0 50% 0 0); }
.step2__door--right { clip-path: inset(0 0 0 50%); }
.step2.doors-open .step2__door--left  { clip-path: inset(0 77% 0 0); }
.step2.doors-open .step2__door--right { clip-path: inset(0 0 0 77%); }

/* ── アーチ ── */
.step2__arch {
  position: absolute;
  top: 0; right: 0;
  width: clamp(120px, 14vw, 200px);
  height: 82%;
  background: rgba(121, 169, 194, 0.18);
  border-radius: 999px 999px 0 0;
}
.step2__arch--right { left: 0; right: auto; }

/* ── 2nd Step ラベル ── */
.step2__label {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  z-index: 20;
  text-align: center;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  opacity: 1;
  transition: opacity 0.5s ease 0.1s;
}
.step2.doors-open .step2__label { opacity: 0; }

.step2__num {
  font-family: var(--f-en);
  font-style: italic;
  font-weight: 300;
  line-height: 1;
  color: var(--c-gold);
  letter-spacing: 0.02em;
}
.step2__2  { font-size: clamp(88px, 11vw, 140px); }
.step2__nd { font-size: clamp(32px, 3.8vw, 52px); vertical-align: 0.12em; }
.step2__word {
  font-family: var(--f-en);
  font-weight: 300;
  font-size: clamp(16px, 1.8vw, 24px);
  letter-spacing: 0.45em;
  text-transform: uppercase;
  color: var(--c-gold);
}

/* ── コンテンツ ── */
.step2__cards {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 26%;
  width: 100%;
  opacity: 0;
  transition: opacity 0.5s ease 1.0s;
}
.step2.doors-open .step2__cards { opacity: 1; }

.step2__inner {
  width: 100%;
  text-align: center;
}
.step2__inner > * {
  opacity: 0;
  transform: translateY(12px);
}
.step2.doors-open .step2__eyebrow { opacity:1; transform:translateY(0); transition: opacity .6s ease 1.8s, transform .6s ease 1.8s; }
.step2.doors-open .step2__title   { opacity:1; transform:translateY(0); transition: opacity .6s ease 2.0s, transform .6s ease 2.0s; }
.step2.doors-open .step2__list    { opacity:1; transform:translateY(0); transition: opacity .6s ease 2.3s, transform .6s ease 2.3s; }
.step2.doors-open .step2__note    { opacity:1; transform:translateY(0); transition: opacity .6s ease 2.6s, transform .6s ease 2.6s; }
.step2.doors-open .step2__cta     { opacity:1; transform:translateY(0); transition: opacity .6s ease 2.8s, transform .6s ease 2.8s; }

.step2__eyebrow {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--c-gold);
  margin-bottom: 16px;
}
.step2__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.4vw, 30px);
  font-weight: 500;
  line-height: 1.7;
  letter-spacing: 0.08em;
  color: var(--c-text);
  margin-bottom: 40px;
}

/* ── サービスリスト ── */
.step2__list {
  list-style: none;
  width: 100%;
  border-top: 1px solid var(--c-border);
  margin-bottom: 36px;
}
.step2__item {
  display: grid;
  grid-template-columns: 2.5em 1fr auto;
  align-items: center;
  gap: 20px;
  padding: 22px 0;
  border-bottom: 1px solid var(--c-border);
  text-align: left;
}
.step2__item-num {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--c-gold);
  font-weight: 300;
}
.step2__item-name {
  font-family: var(--f-serif);
  font-size: clamp(14px, 1.5vw, 17px);
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--c-text);
  margin-bottom: 4px;
}
.step2__item-desc {
  font-size: 11px;
  font-weight: 300;
  color: var(--c-sub);
  letter-spacing: 0.04em;
  line-height: 1.7;
}
.step2__item-badge {
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--c-rose);
  white-space: nowrap;
}
.step2__item-btn {
  padding: 9px 22px;
  font-size: 11px;
  white-space: nowrap;
  flex-shrink: 0;
}

.step2__note {
  font-family: var(--f-serif);
  font-size: 13px;
  letter-spacing: 0.1em;
  color: var(--c-sub);
  margin-bottom: 28px;
}
.step2__cta { min-width: 220px; }

/* ============================================================
   04.5 WHAT CHANGES — 誇張しない変化の描写
============================================================ */
.grounded-change {
  padding: 120px var(--pad);
  background: var(--c-bg);
  text-align: center;
}
.grounded-change__inner {
  max-width: 560px;
  margin: 0 auto;
}
.grounded-change__line {
  font-family: var(--f-serif);
  font-size: clamp(16px, 1.9vw, 20px);
  line-height: 2;
  letter-spacing: 0.04em;
  color: var(--nb-black);
  margin: 0 0 32px;
}
.grounded-change__line--last {
  margin-bottom: 0;
  color: var(--c-rose);
}
.grounded-change__pair {
  margin-bottom: 44px;
}
.grounded-change__pair .grounded-change__line {
  margin: 0;
}
.grounded-change__before {
  font-family: var(--f-sans);
  font-size: 13px;
  letter-spacing: 0.05em;
  color: var(--c-sub);
  opacity: 0.7;
  margin: 0 0 12px;
}
.grounded-change__before::after {
  content: '↓';
  display: block;
  margin-top: 12px;
  font-size: 12px;
  color: var(--c-rose);
  opacity: 0.5;
}

/* ============================================================
   05.5 SESSION TEASER (index-salon)
============================================================ */
.session-teaser {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  overflow: hidden;
  min-height: 520px;
}
.session-teaser__body {
  position: relative;
  background: var(--c-bg);
  padding: 60px 56px 60px 72px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.session-teaser__photo {
  position: relative;
  overflow: hidden;
}
.session-teaser__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}
.session-teaser__photo::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to right, #fffaf8 0%, transparent 18%);
}
.session-teaser__watermark {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  writing-mode: vertical-rl;
  text-orientation: mixed;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-en);
  font-style: italic;
  font-size: clamp(44px, 6.5vw, 88px);
  font-weight: 300;
  color: #fff;
  opacity: 0.3;
  white-space: nowrap;
  pointer-events: none;
  letter-spacing: 0.08em;
  line-height: 1;
  user-select: none;
  z-index: 3;
}
.session-badge {
  display: inline-block;
  align-self: flex-start;
  margin: 10px 0 4px;
  padding: 4px 16px;
  font-family: var(--f-serif);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: #fff;
  background: var(--nb-blue);
  border-radius: 20px;
}
.session-teaser__title {
  font-family: var(--f-serif);
  font-size: clamp(1.5rem, 2.8vw, 2.2rem);
  font-weight: 400;
  color: var(--c-text);
  line-height: 1.65;
  letter-spacing: 0.06em;
  margin: 14px 0 0;
}
.session-teaser__rule {
  width: 36px;
  height: 1px;
  background: var(--c-gold);
  margin: 22px 0;
}
.session-teaser__desc {
  font-family: var(--f-sans);
  font-size: 0.88rem;
  color: var(--c-text);
  line-height: 2;
  opacity: 0.82;
  margin-bottom: 32px;
}
.session-teaser .btn {
  padding-left: 20px;
  padding-right: 20px;
  align-self: flex-start;
}
@media (max-width: 768px) {
  .sp-br { display: inline; }

  .session-teaser { grid-template-columns: 1fr; }
  .session-teaser__body { padding: 56px 28px 48px; order: 2; }
  .session-teaser__photo { height: 340px; order: 1; }
  .session-teaser__photo::after {
    background: linear-gradient(to bottom, transparent 60%, #fffaf8 100%);
  }
  .session-teaser__watermark { font-size: 32px; }
}

/* ============================================================
   SESSION PAGE (session.html)
============================================================ */

/* — Hero (fullscreen bg) — */
.session-hero {
  position: relative;
  min-height: 88vh;
  background: url('images/hero-journal.jpg') center top / cover no-repeat;
  display: flex;
  align-items: center;
  overflow: hidden;
}
.session-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to right,
    rgba(255,250,248,0.95) 0%,
    rgba(255,250,248,0.82) 38%,
    rgba(255,250,248,0.35) 62%,
    transparent 100%
  );
  z-index: 1;
}
.session-hero__content {
  position: relative;
  z-index: 2;
  max-width: 560px;
  padding: 120px 0 80px 72px;
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.85s ease 0.25s, transform 0.85s cubic-bezier(0.22,1,0.36,1) 0.25s;
}
body.hero-loaded .session-hero__content {
  opacity: 1;
  transform: none;
}
.session-hero__title {
  font-family: var(--f-serif);
  font-size: clamp(1.55rem, 3vw, 2.5rem);
  font-weight: 400;
  color: var(--c-text);
  line-height: 1.5;
  letter-spacing: 0.02em;
  margin: 0;
  white-space: nowrap;
}
.session-hero__subtitle {
  display: block;
  font-family: var(--f-serif);
  font-size: 0.8rem;
  font-style: normal;
  font-weight: 400;
  color: var(--c-gold);
  letter-spacing: 0.18em;
  margin-top: 16px;
}
.session-hero__rule {
  width: 40px;
  height: 1px;
  background: var(--c-gold);
  margin: 28px 0;
}
.session-hero__desc {
  font-family: var(--f-sans);
  font-size: 0.9rem;
  color: var(--c-text);
  line-height: 2.2;
  opacity: 0.82;
  margin-bottom: 16px;
}
.session-hero__price {
  font-family: var(--f-en);
  font-style: italic;
  font-size: 1.15rem;
  color: var(--c-gold);
  letter-spacing: 0.15em;
  margin-bottom: 10px;
}
.session-hero__price-note {
  font-family: var(--f-sans);
  font-size: 0.75rem;
  color: var(--c-text);
  opacity: 0.55;
  line-height: 1.7;
  margin-bottom: 36px;
}
.session-hero__scroll {
  position: absolute;
  bottom: 44px;
  left: 72px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  opacity: 0;
  transition: opacity 0.8s ease 1.4s;
}
body.hero-loaded .session-hero__scroll { opacity: 0.55; }
.session-hero__scroll-text {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.24em;
  color: var(--c-text);
}
.session-hero__scroll-line {
  width: 1px;
  height: 44px;
  background: var(--c-gold);
  transform-origin: top;
  animation: sessionScrollLine 1.8s cubic-bezier(0.22,1,0.36,1) 1.6s both;
}
@keyframes sessionScrollLine {
  from { transform: scaleY(0); }
  to   { transform: scaleY(1); }
}
/* — About — */
.session-about {
  padding: 108px 24px;
  background: #fff;
}
.session-about__inner {
  max-width: 960px;
  margin: 0 auto;
}
.session-about__split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 72px;
  align-items: start;
}
.session-about__photo-wrap {
  position: sticky;
  top: 100px;
}
.session-about__photo {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center top;
  border-radius: 4px;
  display: block;
}
.session-about__content {
  padding-top: 8px;
}
@media (max-width: 768px) {
  .session-about__split {
    grid-template-columns: 1fr;
    gap: 36px;
  }
  .session-about__photo-wrap { position: static; }
  .session-about__photo { aspect-ratio: 3 / 2; object-position: center 20%; }
}
.session-about__title {
  font-family: var(--f-serif);
  font-size: clamp(1.3rem, 2.5vw, 1.85rem);
  font-weight: 400;
  color: var(--c-text);
  letter-spacing: 0.06em;
  line-height: 1.7;
  margin: 16px 0 32px;
}
.session-about__flow-text {
  font-family: var(--f-sans);
  font-size: 15px;
  line-height: 2;
  color: var(--c-text);
  margin-top: 8px;
}
.session-about__list {
  list-style: none;
  margin: 52px 0 0;
}
.session-about__item {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 28px;
  align-items: start;
  padding: 36px 0;
  border-top: 1px solid rgba(121, 169, 194, 0.22);
}
.session-about__item:last-child {
  border-bottom: 1px solid rgba(121, 169, 194, 0.22);
}
.session-about__num {
  font-family: var(--f-en);
  font-style: italic;
  font-size: 2.4rem;
  color: var(--c-rose);
  opacity: 0.28;
  line-height: 1;
  padding-top: 2px;
}
.session-about__item-body { padding-top: 4px; }
.session-about__item-title {
  font-family: var(--f-serif);
  font-size: 1.05rem;
  color: var(--c-text);
  letter-spacing: 0.05em;
  margin-bottom: 10px;
}
.session-about__item-text {
  font-family: var(--f-sans);
  font-size: 0.86rem;
  color: var(--c-text);
  opacity: 0.72;
  line-height: 2;
}
.session-about__note {
  margin-top: 40px;
  padding: 26px 28px;
  background: rgba(121, 169, 194, 0.05);
  border: 1px solid rgba(121, 169, 194, 0.2);
}
.session-about__note-title {
  font-family: var(--f-serif);
  font-size: 13px;
  font-weight: 600;
  color: var(--nb-blue);
  letter-spacing: 0.02em;
  margin-bottom: 10px;
}
.session-about__note-text {
  font-family: var(--f-sans);
  font-size: 12.5px;
  line-height: 1.9;
  color: var(--c-sub);
}

/* — AI section — */
.session-ai {
  padding: 108px 24px;
  background: #f7eee9;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.session-ai__orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(72px);
  pointer-events: none;
}
.session-ai__orb--a {
  width: 400px;
  height: 400px;
  background: radial-gradient(circle, rgba(121, 169, 194, 0.32) 0%, transparent 70%);
  top: -120px;
  right: 8%;
  animation: sessionOrbA 9s ease-in-out infinite alternate;
}
.session-ai__orb--b {
  width: 280px;
  height: 280px;
  background: radial-gradient(circle, rgba(121, 169, 194, 0.22) 0%, transparent 70%);
  bottom: -80px;
  left: 12%;
  animation: sessionOrbB 12s ease-in-out infinite alternate;
}
@keyframes sessionOrbA {
  from { transform: translate(0, 0); }
  to   { transform: translate(-40px, 28px); }
}
@keyframes sessionOrbB {
  from { transform: translate(0, 0); }
  to   { transform: translate(28px, -18px); }
}
.session-ai__inner {
  max-width: 900px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}
.session-ai__inner--split {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: 64px;
  align-items: center;
}
.session-ai__text {
  text-align: left;
}
.session-ai__title {
  font-family: var(--f-serif);
  font-size: clamp(1.25rem, 2.5vw, 1.75rem);
  font-weight: 400;
  color: var(--c-text);
  letter-spacing: 0.06em;
  line-height: 1.7;
  margin: 16px 0 20px;
}
.session-ai__rule {
  width: 40px;
  height: 1px;
  background: var(--c-gold);
  margin: 0 0 24px;
}
.session-ai__desc {
  font-family: var(--f-sans);
  font-size: 0.88rem;
  color: var(--c-text);
  line-height: 2.15;
  opacity: 0.8;
  margin-bottom: 36px;
}
.session-ai__phone {
  display: flex;
  justify-content: center;
}
.session-ai__phone-frame {
  width: 260px;
}
.session-ai__phone-screen {
  width: 100%;
  border-radius: 20px;
  display: block;
  box-shadow: 0 20px 56px rgba(48, 44, 43, 0.16), 0 4px 16px rgba(48, 44, 43, 0.08);
}
@media (max-width: 768px) {
  .session-ai__inner--split {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .session-ai__rule { margin: 0 auto 24px; }
  .session-ai__text { text-align: center; }
  .session-ai__phone-frame { width: 220px; }
}

/* — For You — */
.session-foryou {
  padding: 108px 24px;
  background: #F4F4F4;
}
.session-foryou__inner {
  max-width: 880px;
  margin: 0 auto;
}

/* ── How to use ── */
.session-howto {
  padding: clamp(64px, 10vw, 120px) 24px;
  background: var(--c-bg);
}
.session-howto__inner {
  max-width: 880px;
  margin: 0 auto;
}
.session-howto__lead {
  font-size: 0.93rem;
  color: var(--c-mid);
  margin-bottom: 40px;
  letter-spacing: .03em;
}
.session-howto__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.session-howto__card {
  background: var(--c-white);
  border: 1px solid var(--c-line);
  border-top: 2px solid var(--c-rose);
  padding: 28px 24px;
}
.session-howto__num {
  font-family: var(--f-serif);
  font-size: 0.85rem;
  color: var(--c-rose);
  letter-spacing: .12em;
  margin-bottom: 12px;
}
.session-howto__title {
  font-family: var(--f-serif);
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--c-text);
  line-height: 1.7;
  margin-bottom: 12px;
  letter-spacing: .04em;
}
.session-howto__text {
  font-size: 0.88rem;
  line-height: 1.9;
  color: var(--c-mid);
}
@media (max-width: 640px) {
  .session-howto__grid { grid-template-columns: 1fr; }
}
.session-foryou__lead {
  font-family: var(--f-sans);
  font-size: 0.9rem;
  color: var(--c-text);
  line-height: 2.2;
  opacity: 0.82;
  margin: 0 0 48px;
}
/* ── こんな方に向いています（シンプルチェックリスト） ── */
.session-check-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 40px;
  margin-bottom: 52px;
}
.session-check-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 22px 0;
  border-bottom: 1px solid rgba(121, 169, 194, 0.22);
}
.session-check-item__mark {
  flex-shrink: 0;
  color: var(--c-gold);
  font-size: 0.85rem;
  line-height: 1.9;
}
.session-check-item__text {
  font-family: var(--f-sans);
  font-size: 0.875rem;
  color: var(--c-text);
  line-height: 1.9;
}
@media (max-width: 640px) {
  .session-check-grid { grid-template-columns: 1fr; }
}
.session-foryou__closing {
  font-family: var(--f-serif);
  font-size: clamp(1.05rem, 2vw, 1.3rem);
  color: var(--c-text);
  line-height: 1.8;
  letter-spacing: 0.04em;
  text-align: center;
  padding: 40px 0 0;
}

/* — Flow — */
.session-flow {
  padding: 108px 24px;
  background: #fff;
}
.session-flow__inner {
  max-width: 920px;
  margin: 0 auto;
}
.session-flow__steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  position: relative;
  margin-top: 52px;
}
.session-flow__steps::before {
  content: '';
  position: absolute;
  top: 30px;
  left: 12%;
  right: 12%;
  height: 1px;
  background: linear-gradient(to right,
    transparent 0%,
    rgba(121, 169, 194, 0.4) 10%,
    rgba(121, 169, 194, 0.4) 90%,
    transparent 100%);
}
.session-flow__step {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 0 12px;
}
.session-flow__num {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  border: 1px solid rgba(121, 169, 194, 0.6);
  background: var(--c-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-en);
  font-style: italic;
  font-size: 1.25rem;
  color: var(--c-gold);
  margin-bottom: 20px;
  position: relative;
  z-index: 1;
  flex-shrink: 0;
}
.session-flow__step-title {
  font-family: var(--f-serif);
  font-size: 0.95rem;
  color: var(--c-text);
  letter-spacing: 0.04em;
  margin-bottom: 10px;
  line-height: 1.5;
}
.session-flow__step-text {
  font-family: var(--f-sans);
  font-size: 0.8rem;
  color: var(--c-text);
  opacity: 0.68;
  line-height: 1.9;
}
.session-flow__note {
  font-family: var(--f-sans);
  font-size: 0.82rem;
  color: var(--c-text);
  opacity: 0.6;
  line-height: 1.9;
  text-align: center;
  margin-top: 48px;
  padding-top: 32px;
  border-top: 1px solid rgba(121, 169, 194, 0.18);
}

/* — FAQ — */
.session-faq {
  padding: 108px 24px;
  background: var(--c-bg);
  border-top: 1px solid #E8F1F5;
}
.session-faq__inner {
  max-width: 760px;
  margin: 0 auto;
}
.session-faq__lead {
  font-family: var(--f-sans);
  font-size: 0.88rem;
  color: var(--c-text);
  line-height: 2.1;
  opacity: 0.78;
  margin: 0 0 48px;
}
.session-faq__item {
  border-top: 1px solid rgba(121, 169, 194, 0.2);
}
.session-faq__item:last-child {
  border-bottom: 1px solid rgba(121, 169, 194, 0.2);
}
.session-faq__q {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding: 26px 0;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
}
.session-faq__q-text {
  font-family: var(--f-serif);
  font-size: 0.96rem;
  color: var(--c-text);
  letter-spacing: 0.04em;
  line-height: 1.65;
}
.session-faq__q-icon {
  width: 22px;
  height: 22px;
  flex-shrink: 0;
  border-radius: 50%;
  border: 1px solid rgba(121, 169, 194, 0.5);
  position: relative;
  transition: transform 0.3s ease;
}
.session-faq__q-icon::before,
.session-faq__q-icon::after {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  background: var(--c-gold);
  border-radius: 1px;
}
.session-faq__q-icon::before {
  width: 8px; height: 1px;
  transform: translate(-50%, -50%);
}
.session-faq__q-icon::after {
  width: 1px; height: 8px;
  transform: translate(-50%, -50%);
  transition: transform 0.3s ease, opacity 0.3s;
}
.session-faq__item.is-open .session-faq__q-icon::after {
  transform: translate(-50%, -50%) rotate(90deg);
  opacity: 0;
}
.session-faq__a {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.45s cubic-bezier(0.22,1,0.36,1);
}
.session-faq__item.is-open .session-faq__a {
  max-height: 400px;
}
.session-faq__a-inner {
  font-family: var(--f-sans);
  font-size: 0.875rem;
  color: var(--c-text);
  line-height: 2.1;
  opacity: 0.8;
  padding: 0 40px 28px 0;
}

/* — Responsive — */
@media (max-width: 768px) {
  .session-hero { min-height: 92vh; background-position: 65% top; }
  .session-hero::before {
    background: linear-gradient(
      to bottom,
      rgba(255,250,248,0.92) 0%,
      rgba(255,250,248,0.88) 55%,
      rgba(255,250,248,0.6) 100%
    );
  }
  .session-hero__content { padding: 120px 28px 80px; max-width: 100%; }
  .session-hero__title { font-size: 1.35rem; letter-spacing: 0.03em; }
  .session-hero__scroll { left: 28px; }
  .session-flow__steps {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .session-flow__steps::before { display: none; }
  .session-flow__step {
    flex-direction: row;
    text-align: left;
    gap: 22px;
    padding: 28px 0;
    border-top: 1px solid rgba(121, 169, 194, 0.18);
    align-items: flex-start;
  }
  .session-flow__step:last-child {
    border-bottom: 1px solid rgba(121, 169, 194, 0.18);
  }
  .session-flow__num { margin-bottom: 0; }
  .session-flow__step-body { flex: 1; }
}
@media (max-width: 600px) {
  .session-foryou { padding: 72px 24px; }
  .session-about  { padding: 72px 24px; }
  .session-flow   { padding: 72px 24px; }
  .session-ai     { padding: 72px 24px; }
  .session-faq    { padding: 72px 24px; }
  .session-price  { padding: 72px 24px; }
}

/* ============================================================
   Session Price
============================================================ */
.session-price {
  padding: 112px 24px;
  background: var(--c-ivory);
}
.session-price__inner {
  max-width: 640px;
  margin: 0 auto;
  text-align: center;
}
.session-price__card {
  margin-top: 48px;
  padding: 48px 24px 0;
  border-top: 1px solid rgba(121, 169, 194, 0.25);
}
.session-price__amount {
  font-family: var(--f-serif);
  font-size: clamp(1.3rem, 2.4vw, 1.6rem);
  font-weight: 500;
  color: var(--nb-black);
  line-height: 1;
  letter-spacing: 0.06em;
}
.session-price__currency {
  font-size: 0.75em;
  vertical-align: 0.05em;
  margin-right: 3px;
  color: var(--c-text);
}
.session-price__tax {
  font-family: var(--f-sans);
  font-size: 0.45em;
  vertical-align: 0.3em;
  margin-left: 8px;
  color: var(--c-sub);
  letter-spacing: 0.08em;
}
.session-price__duration {
  font-family: var(--f-sans);
  font-size: 0.8rem;
  color: var(--c-sub);
  letter-spacing: 0.14em;
  margin-top: 10px;
}
.session-price__divider {
  width: 40px;
  height: 1px;
  background: var(--c-border);
  margin: 28px auto;
}
.session-price__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.session-price__list li {
  font-family: var(--f-sans);
  font-size: 0.875rem;
  color: var(--c-text);
  letter-spacing: 0.06em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.session-price__list li::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--c-rose);
  flex-shrink: 0;
}
.session-price__info {
  margin-top: 28px;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
  text-align: left;
}
.session-price__info li {
  font-family: var(--f-sans);
  font-size: 0.82rem;
  line-height: 1.9;
  color: var(--c-text);
  padding-left: 1.2em;
  position: relative;
}
.session-price__info li::before {
  content: '・';
  position: absolute;
  left: 0;
  color: var(--c-rose);
}
.session-price__note {
  margin-top: 24px;
  font-family: var(--f-sans);
  font-size: 0.78rem;
  color: var(--c-sub);
  line-height: 1.9;
}
.session-price__note a {
  color: var(--c-rose);
  text-decoration: underline;
}
@media (max-width: 768px) {
  .session-price__card { padding-top: 36px; }
}

/* ============================================================
   06. VOICE
============================================================ */
.voice {
  background: #fff;
  padding: 110px 80px;
}
.voice__inner {
  max-width: 1140px;
  margin: 0 auto;
}
.voice__eyebrow {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--c-gold);
  margin-bottom: 16px;
  text-align: center;
}
.voice__lead {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 36px);
  font-weight: 400;
  letter-spacing: 0.08em;
  color: var(--c-text);
  text-align: center;
  margin-bottom: 52px;
}
.voice__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 52px;
}
.voice__col {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.voice__card {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.voice__card.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.voice__card {
  background: #fff;
  border: 1px solid rgba(172, 188, 198, 0.18);
  border-radius: 4px;
  padding: 24px 22px 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.voice__card-quote {
  font-family: var(--f-serif);
  font-size: 13px;
  line-height: 1.95;
  letter-spacing: 0.04em;
  color: var(--c-text);
  flex: 1;
}
.voice__card-quote::before {
  content: '❝ ';
  color: var(--c-rose);
  opacity: 0.45;
  font-size: 14px;
}
.voice__hl {
  font-style: normal;
  font-weight: 700;
  background: linear-gradient(transparent 52%, rgba(121, 169, 194, 0.12) 52%);
}
.voice__card-footer {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-top: 14px;
  border-top: 1px solid rgba(172, 188, 198, 0.2);
}
.voice__card-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  border: 1px solid rgba(121, 169, 194, 0.2);
}
.voice__card-initial {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--c-rose), var(--c-gold));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-serif);
  font-size: 13px;
  flex-shrink: 0;
  border: 1px solid rgba(121, 169, 194, 0.2);
}
.voice__card-name {
  font-family: var(--f-sans);
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--c-rose);
}
.voice__footer {
  text-align: center;
}
.voice__more {
  display: inline-block;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.22em;
  color: var(--c-rose);
  text-decoration: none;
  border-bottom: 1px solid rgba(121, 169, 194, 0.45);
  padding-bottom: 2px;
  transition: opacity 0.3s ease;
}
.voice__more:hover { opacity: 0.6; }

/* ============================================================
   07. CTA / Mail Lesson
============================================================ */
.cta {
  position: relative;
  padding: 80px 8vw;
  background: var(--c-bg) url('images/marble-bg.png') center center / cover no-repeat;
  overflow: hidden;
}

.cta::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255,250,248,0.55);
  pointer-events: none;
}

.cta__glass {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 1300px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 60px;
  align-items: center;
  background: none;
  border: none;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
  text-align: left;
}

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

.cta__preview-sp {
  display: none;
}

.cta__preview-img-sp {
  width: 100%;
  border-radius: 0;
  box-shadow: none;
  mix-blend-mode: multiply;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.9s ease, transform 0.9s ease;
}

.cta__preview-img-sp.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.cta__preview-img {
  width: 100%;
  max-width: 960px;
  border-radius: 0;
  box-shadow: none;
  display: block;
  mix-blend-mode: multiply;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.9s ease, transform 0.9s ease;
}

.cta__preview-img.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.cta__form-body {
  width: 100%;
}

.cta__form-body .eyebrow { margin-bottom: 18px; }

.cta__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.4vw, 34px);
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: 1.45;
  color: var(--c-text);
}

.cta__form-body .gold-bar { margin-top: 24px; margin-left: 0; margin-right: auto; }

.cta__lead {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2.0;
  letter-spacing: 0.06em;
  color: var(--c-text);
  margin-top: 20px;
}

.cta__days {
  list-style: none;
  margin: 28px 0 36px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.cta__days li {
  font-family: var(--f-sans);
  font-size: 12.5px;
  letter-spacing: 0.05em;
  color: var(--c-text);
  display: flex;
  align-items: baseline;
  gap: 12px;
  line-height: 1.6;
  border-bottom: 1px solid rgba(121, 169, 194, 0.2);
  padding-bottom: 10px;
}
.cta__days li:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.cta__day-num {
  font-family: var(--f-en);
  font-size: 11px;
  font-style: italic;
  letter-spacing: 0.1em;
  color: var(--c-gold);
  white-space: nowrap;
  min-width: 44px;
}

.cta__desc {
  font-size: 13px;
  color: var(--c-mid);
  line-height: 2.0;
}

.cta__form {
  display: flex;
  flex-direction: column;
  gap: 20px;
  margin-top: 40px;
  text-align: left;
}

.cta__name-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.cta__field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cta__field label {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.22em;
  color: var(--c-mid);
  text-transform: uppercase;
}

.cta__required {
  color: var(--c-rose);
  margin-left: 2px;
}

.cta__field input {
  font-family: var(--f-sans);
  font-size: 14px;
  color: var(--c-text);
  background: transparent;
  border: none;
  border-bottom: 1px solid rgba(121, 169, 194, 0.4);
  padding: 10px 0;
  outline: none;
  transition: border-color 0.25s;
  width: 100%;
  box-sizing: border-box;
  border-radius: 0;
}

.cta__field input:focus {
  border-bottom-color: var(--c-rose);
}

.cta__field input::placeholder {
  color: rgba(120, 100, 105, 0.3);
}

.cta__submit {
  margin-top: 8px;
}

.cta__submit .btn {
  width: 100%;
  justify-content: center;
}

/* ============================================================
   07. Contact
============================================================ */
/* cursor sparkle */
@keyframes sparkFly {
  0%   { opacity: 0.85; transform: translate(-50%, -50%) scale(1); }
  100% { opacity: 0;    transform: translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(0.15); }
}
.cursor-spark {
  position: fixed;
  pointer-events: none;
  z-index: 9990;
  font-size: 13px;
  color: var(--nb-blue);
  animation: sparkFly 0.8s ease-out forwards;
  will-change: transform, opacity;
}


.contact-sec {
  position: relative;
  background: var(--c-bg);
  padding: 160px 40px;
  text-align: center;
  overflow: hidden;
}

.contact-sec__orb {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(60px);
}
.contact-sec__orb--a {
  width: 560px; height: 560px;
  background: radial-gradient(circle, rgba(121, 169, 194, 0.14) 0%, transparent 70%);
  top: -80px; left: -100px;
}
.contact-sec__orb--b {
  width: 440px; height: 440px;
  background: radial-gradient(circle, rgba(178, 201, 217, 0.12) 0%, transparent 70%);
  bottom: -60px; right: -80px;
}
.contact-sec__orb--c {
  width: 320px; height: 320px;
  background: radial-gradient(circle, rgba(121, 169, 194, 0.10) 0%, transparent 70%);
  top: 40%; left: 60%;
}

.contact-sec__inner {
  position: relative;
  z-index: 1;
  max-width: 800px;
  width: 100%;
  margin: 0 auto;
}

.contact-sec__en {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.3em;
  color: var(--c-rose);
  margin-bottom: 32px;
}

.contact-sec__title {
  font-family: var(--f-serif);
  font-size: clamp(19px, 2.1vw, 30px);
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: 1.6;
  color: var(--c-text);
  word-break: keep-all;
  overflow-wrap: anywhere;
  margin-bottom: 40px;
  margin-top: 20px;
}

.contact-sec__desc {
  font-size: 14px;
  color: var(--c-mid);
  line-height: 2.2;
  letter-spacing: 0.06em;
  margin-bottom: 56px;
}

.contact-sec__btns {
  display: flex;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
}

.contact-sec__cols {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin-top: 40px;
  width: 100%;
  max-width: 420px;
  margin-left: auto;
  margin-right: auto;
}
.contact-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 40px 48px;
  gap: 16px;
}
.contact-col__label {
  font-family: var(--f-en);
  font-style: italic;
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--c-gold);
}
.contact-col__title {
  font-family: var(--f-serif);
  font-size: clamp(16px, 1.8vw, 22px);
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: 1.7;
  color: var(--c-text);
}
.contact-col__rule {
  width: 30px;
  height: 1px;
  background: var(--c-gold);
  opacity: 0.6;
}
.contact-col__desc {
  font-family: var(--f-sans);
  font-size: 13px;
  line-height: 1.9;
  letter-spacing: 0.04em;
  color: var(--c-mid);
  flex: 1;
}
.contact-col .btn--rose {
  background: transparent;
  color: var(--c-rose);
  border: 1px solid var(--c-rose);
  box-shadow: none;
}
.contact-col .btn--rose:hover {
  background: var(--c-rose);
  color: #fff;
}

/* ── New Brand Palette overrides（トップページ CONTACT 限定） ── */
.contact-sec--nb { background: var(--nb-white); border-top: 1px solid #E8F1F5; }
.contact-sec--nb .eyebrow { color: var(--nb-blue); }
.contact-sec--nb .contact-sec__title { color: var(--nb-black); }
.contact-sec--nb .contact-col__label { color: var(--nb-blue); }
.contact-sec--nb .contact-col__title { color: var(--nb-black); }
.contact-sec--nb .contact-col__rule { background: var(--nb-blue); opacity: 1; }
.contact-sec--nb .contact-col__desc { color: var(--nb-sub); }
.contact-sec--nb .contact-col .btn--rose {
  color: var(--nb-blue);
  border-color: var(--nb-blue);
}
.contact-sec--nb .contact-col .btn--rose:hover {
  background: var(--nb-blue);
  border-color: var(--nb-blue);
  color: #fff;
}

.btn--lg {
  padding: 20px 56px;
  font-size: 13px;
  letter-spacing: 0.18em;
}

.btn--outline-rose {
  border: 1px solid var(--c-rose);
  color: var(--c-rose);
  background: transparent;
  font-family: var(--f-sans);
  font-size: 13px;
  letter-spacing: 0.14em;
  padding: 14px 40px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: background 0.25s, color 0.25s;
}
.btn--outline-rose:hover {
  background: var(--c-rose);
  color: #fff;
}

/* ============================================================
   08. Follow Me
============================================================ */
/* ── Book Section ────────────────────────────── */
.book-sec {
  background: #fdf6f4;
  padding: 100px 40px;
}

.book-sec__wrap {
  max-width: 1040px;
  margin: 0 auto;
}
.book-sec__eyebrow { margin-bottom: 20px; }
.book-sec__lower { margin-top: 32px; }

.book-sec__inner {
  max-width: 1040px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 64px;
  align-items: center;
}

.book-sec__img {
  width: 100%;
  border-radius: 8px;
  display: block;
}

.book-sec__body {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.book-sec__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 34px);
  font-weight: 500;
  line-height: 1.65;
  color: var(--c-text);
  margin-top: 10px;
}

.book-sec__meta {
  font-family: var(--f-sans);
  font-size: 12px;
  letter-spacing: 0.08em;
  color: var(--c-gold);
  margin-top: -8px;
}

.book-sec__desc {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.95;
  color: var(--c-text);
  opacity: 0.8;
  margin: 0 0 20px;
}

.book-sec__actions {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  margin-top: 8px;
}

.book-sec__reviews {
  display: flex;
  align-items: center;
  gap: 10px;
}

.book-sec__review-link {
  font-family: var(--f-sans);
  font-size: 11.5px;
  letter-spacing: 0.06em;
  color: var(--c-mid);
  text-decoration: none;
  transition: color 0.2s;
}

.book-sec__review-link:hover { color: var(--c-rose); }

.book-sec__review-sep {
  font-size: 11px;
  color: var(--c-mid);
  opacity: 0.4;
}

.marker {
  background: linear-gradient(transparent 55%, rgba(121, 169, 194, 0.18) 55%);
  font-weight: 700;
}

.book-sec__rule {
  height: 1px;
  background: rgba(121, 169, 194, 0.35);
}

.book-sec__avail {
  font-family: var(--f-sans);
  font-size: 11.5px;
  letter-spacing: 0.06em;
  color: var(--c-mid);
  opacity: 0.75;
  margin: -4px 0 0;
}

.book-sec__footer {
  max-width: 1040px;
  margin: 40px auto 0;
  padding: 0 40px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  text-align: center;
}

.book-sec__carousel {
  overflow: hidden;
  max-width: 1040px;
  margin: 48px auto 0;
  padding: 4px 0;
}

.book-sec__carousel:hover .book-sec__carousel-track {
  animation-play-state: paused;
}

.book-sec__carousel-track {
  display: flex;
  width: max-content;
  animation: book-carousel 36s linear infinite;
}

@keyframes book-carousel {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.book-sec__voice-card {
  width: 290px;
  flex-shrink: 0;
  margin-right: 18px;
  background: #fff;
  border: 1px solid rgba(121, 169, 194, 0.22);
  border-radius: 8px;
  padding: 26px 22px 22px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-sizing: border-box;
}

.book-sec__voice-stars {
  font-size: 14px;
  color: var(--c-gold);
  letter-spacing: 3px;
}

.book-sec__voice-text {
  font-family: var(--f-serif);
  font-size: 14px;
  line-height: 1.85;
  color: var(--c-text);
  margin: 0;
}

.book-sec__voice-name {
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.08em;
  color: var(--c-gold);
}

/* ── Nav social icons ────────────────────────── */
.site-nav__item--social {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 4px;
}

.site-nav__social-link {
  display: flex;
  align-items: center;
  color: var(--c-text);
  opacity: 0.55;
  transition: opacity 0.2s;
}

.site-nav__social-link:hover { opacity: 1; }

.site-nav__ws-btn {
  display: inline-flex;
  align-items: center;
  font-family: var(--f-sans);
  font-size: 11px;
  letter-spacing: 0.15em;
  font-weight: 600;
  color: #fff;
  background: var(--c-rose);
  border-radius: 20px;
  padding: 5px 12px;
  white-space: nowrap;
  opacity: 0.85;
  transition: opacity 0.2s;
}
.site-nav__ws-btn:hover {
  opacity: 1;
}

/* ── Fixed side CTA ─────────────────────────── */
.header-cta {
  font-family: var(--f-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.1em;
  color: #fff;
  background: var(--c-gold);
  padding: 8px 20px;
  border-radius: 20px;
  white-space: nowrap;
  text-decoration: none;
  transition: background 0.25s, transform 0.25s;
  flex-shrink: 0;
}

.header-cta:hover {
  background: #245AA5;
  transform: translateY(-1px);
}

/* ── Footer social icons ─────────────────────── */
.footer__social {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-bottom: 16px;
}

.footer__social-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid currentColor;
  color: var(--c-text);
  opacity: 0.45;
  transition: opacity 0.2s, border-color 0.2s;
}

.footer__social-link:hover { opacity: 0.9; }

/* ── Produce Marquee ── */
.produce-marquee {
  background: #fff;
  padding: 72px 24px 56px;
  border-top: 1px solid rgba(121, 169, 194, 0.12);
  text-align: center;
}

.produce-marquee__text {
  font-family: 'Bodoni Moda', serif;
  font-style: italic;
  font-size: clamp(40px, 6.5vw, 80px);
  font-weight: 400;
  letter-spacing: 0.04em;
  color: var(--c-gold);
  line-height: 1.4;
  min-height: 1.4em;
}

.produce-marquee__line {
  width: 1px;
  height: 0;
  background: linear-gradient(to bottom, var(--c-gold), transparent);
  margin: 32px auto 0;
  transition: height 1.2s ease;
}
.produce-marquee__line.is-visible {
  height: 64px;
}

.produce-marquee__sub {
  font-family: var(--f-serif);
  font-size: 18px;
  letter-spacing: 0.12em;
  color: var(--c-mid);
  text-align: center;
  margin-top: 24px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 1s ease, transform 1s ease;
}
.produce-marquee__sub.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.produce-premium.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── Produce Premium Section ── */
.produce-premium {
  position: relative;
  padding: 140px 80px;
  text-align: center;
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 1.4s ease, transform 1.4s ease;
  overflow: hidden;
  background: #111619;
}
.produce-premium__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: 0.45;
}
.produce-premium::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(20, 26, 29, 0.52);
  z-index: 1;
}
.produce-premium__inner {
  position: relative;
  z-index: 2;
  max-width: 660px;
  margin: 0 auto;
}
.produce-premium::after {
  content: 'Produce Plan';
  position: absolute;
  top: -20px;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Bodoni Moda', serif;
  font-style: italic;
  font-size: clamp(60px, 12vw, 160px);
  font-weight: 400;
  letter-spacing: 0.06em;
  color: rgba(255, 255, 255, 0.07);
  white-space: nowrap;
  pointer-events: none;
  z-index: 1;
}

.produce-premium__eyebrow {
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.38em;
  text-transform: uppercase;
  color: var(--c-gold);
  display: block;
  margin-bottom: 36px;
}
.produce-premium__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 3.5vw, 38px);
  font-weight: 400;
  color: rgba(255,250,245,0.95);
  line-height: 2.0;
  letter-spacing: 0.06em;
  margin-bottom: 40px;
}
.produce-premium__title em {
  font-style: normal;
  color: var(--c-gold);
  font-family: var(--f-serif);
}
.produce-premium__desc {
  font-family: var(--f-serif);
  font-size: clamp(15px, 1.5vw, 17px);
  line-height: 2.4;
  letter-spacing: 0.06em;
  color: rgba(255,250,245,0.82);
  margin-bottom: 64px;
}
.produce-premium .btn { margin-top: 8px; }
@media (max-width: 768px) {
  .produce-premium {
    padding: 100px 32px;
    background-attachment: scroll;
  }
}

/* ============================================================
   09. Footer
============================================================ */
/* ── Back to top ─────────────────────────────── */
.back-top {
  position: fixed;
  bottom: 72px;
  right: 64px;
  width: 52px;
  height: 64px;
  border-radius: 40px;
  border: 1px solid rgba(121, 169, 194, 0.3);
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 4px 18px rgba(121, 169, 194, 0.14);
  color: var(--c-rose);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0;
  opacity: 0;
  pointer-events: none;
  transform: translateY(10px);
  transition: opacity 0.4s ease, transform 0.4s ease, box-shadow 0.3s, background 0.3s, color 0.3s;
  z-index: 400;
}
.back-top.is-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}
.back-top:hover {
  background: var(--c-rose);
  color: #fff;
  box-shadow: 0 8px 28px rgba(121, 169, 194, 0.32);
  transform: translateY(-4px);
}
.back-top__arrow {
  display: block;
  width: 20px;
  height: 20px;
}
.back-top__label {
  font-family: var(--f-en);
  font-size: 9px;
  letter-spacing: 0.2em;
  line-height: 1;
}


.footer {
  position: relative;
  background: var(--c-bg);
  text-align: center;
  overflow: hidden;
}
.footer__bottom {
  position: relative;
  z-index: 1;
  padding: 48px 40px 40px;
}

.footer__logo {
  display: inline-block;
  margin-bottom: 24px;
}

.footer__logo-img {
  height: 64px;
  width: auto;
  opacity: 0.85;
  transition: opacity 0.25s;
}
.footer__logo:hover .footer__logo-img { opacity: 1; }

.footer__nav {
  display: flex;
  justify-content: center;
  gap: 28px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}

.footer__nav a {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;
  color: rgba(68, 85, 97, 0.7);
  transition: color 0.2s;
}
.footer__nav a:hover { color: var(--c-rose); }

.footer__nav--legal {
  margin-top: 12px;
  gap: 20px;
}

.footer__copy {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.12em;
  color: rgba(68, 85, 97, 0.5);
}

/* ── New Brand Palette overrides（トップページ フッター限定） ── */
.footer--nb { background: var(--nb-white); }
.footer--nb .brand-wordmark--footer { color: var(--nb-blue); }
.footer--nb .footer__nav a { color: var(--nb-black); }
.footer--nb .footer__nav a:hover { color: var(--nb-blue); }
.footer--nb .footer__nav--legal a { color: var(--nb-sub); }
.footer--nb .footer__nav--legal a:hover { color: var(--nb-blue); }
.footer--nb .footer__copy { color: var(--nb-sub); }
.footer--nb .footer__social-link { color: var(--nb-sub); }
.footer--nb .footer__social-link:hover { color: var(--nb-blue); opacity: 1; }


/* ============================================================
   Responsive — 1024px (tablet landscape)
============================================================ */
@media (max-width: 1024px) {
  .site-header { padding: 20px 40px; }
  .site-header.is-scrolled { padding: 14px 40px; }
  .profile__inner { gap: 40px; }
  .services__cards { padding: 0; }
  .step2__cards { padding: 0 18%; }
  .step2__inner { padding: 80px 48px; }

  /* ─── ナビをドロワーへ切り替え（タブレット幅以下） ─── */
  .nav-toggle {
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: flex-end;
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    z-index: 1001;
  }

  .header-cta { display: none; }

  .site-nav {
    position: fixed;
    top: 0; right: 0;
    width: 80vw;
    max-width: 320px;
    height: 100vh;
    background: rgba(229, 236, 241, 0.98);
    flex-direction: column;
    justify-content: center;
    align-items: center;
    margin: 0;
    transform: translateX(100%);
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
    z-index: 1000;
  }
  .site-nav.is-open { transform: translateX(0); }
  .site-header--white .site-nav { background: rgba(255, 255, 255, 0.98); }

  .site-nav__inner { flex-direction: column; align-items: center; }

  .site-nav__head { display: block; margin-bottom: 40px; }
  .site-nav__head img { width: 120px; }

  .site-nav__list {
    flex-direction: column;
    gap: 28px;
    text-align: center;
  }

  .site-nav__tagline {
    display: block;
    margin-top: 40px;
    font-size: 10px;
    letter-spacing: 0.2em;
    color: var(--c-sub);
    font-family: var(--f-en);
    font-style: italic;
  }

  .site-nav__link { font-size: 13px; letter-spacing: 0.22em; }
  .site-nav__item--premium {
    margin-top: 8px;
  }

  .site-header--white .site-nav__tagline { color: var(--nb-sub); }
  .site-header--white .site-nav__link { color: var(--nb-black); }
}

/* ============================================================
   Responsive — 768px (tablet / mobile)
============================================================ */
@media (max-width: 768px) {

  /* ─── Header ─── */
  .site-header { padding: 18px 24px; }
  .site-header.is-scrolled { padding: 14px 24px; }
  .site-header__logo img { width: 140px; }
  .site-header__tagline { font-size: 7.5px; letter-spacing: 0.08em; }

  /* ─── Hero ─── */
  .hero { min-height: 88vh; align-items: center; }
  .hero::before {
    background: linear-gradient(
        to bottom,
        rgba(253, 251, 248, 0.55) 0%,
        rgba(253, 251, 248, 0.30) 40%,
        rgba(253, 251, 248, 0.50) 80%,
        rgba(253, 251, 248, 0.85) 100%
      );
  }
  .hero__video { object-fit: cover; object-position: 50% 30%; }
  .hero__left { max-width: 100%; padding: 110px 28px 80px; }
  .hero__ornament { display: none; }
  .hero__scroll { left: 0; right: 0; bottom: 24px; margin: 0 auto; transform: none; }
  body.hero-loaded .hero__scroll { animation: fadeInUp 1.2s ease 3.0s both; left: 0; right: 0; }
  .hero__heading { font-size: clamp(22px, 6.5vw, 30px); margin-bottom: 28px; }
  .hero__heading-line { white-space: normal; }
  .hero__heading-inner { white-space: normal; }
  .hero__cta { flex-direction: column; gap: 12px; }
  .hero__cta .btn { width: 100%; justify-content: center; }

  /* ─── Profile ─── */
  .profile__inner { grid-template-columns: 1fr; min-height: unset; }
  .profile__visual { height: 70vw; max-height: 400px; min-height: 260px; order: 1; }
  .profile__visual::after { display: none; }
  .concept__text { order: 2; padding: 48px 24px 56px; }
  .profile__body { letter-spacing: 0; font-size: 13.5px; }
  .profile__sig-deco { font-size: clamp(46px, 12vw, 68px); }

  /* ─── Strip ─── */
  .strip__img-wrap { height: 60vw; min-height: 220px; }
  .strip__phrase { letter-spacing: 0.06em; }

  /* ─── For You ─── */
  .forwho { padding: 80px 0 88px; }
  .forwho__item { padding: 32px 0; }
  .forwho__sub { font-size: 13px; }
  .forwho__item-voice { font-size: 18px; }

  /* ─── Marquee ─── */
  .marquee { display: none; }

  /* ─── Services ─── */
  .services { min-height: 0; height: auto; overflow: visible; padding: 0 0 56px; flex-direction: column; align-items: stretch; }
  .services.doors-open { min-height: 0; height: auto; }
  .services__door { display: none; }
  .services__step-label {
    position: static;
    transform: none;
    padding: 64px 24px 40px;
    opacity: 1;
  }
  .services.doors-open .services__step-label { opacity: 1; }
  .services.doors-open .services__cards { opacity: 0; transition: opacity 0.9s ease 3.4s; }
  .services.step-typed .services__cards { opacity: 1; }
  .services__step-msg { font-size: 15px; }
  .services__door-icon-wrap { width: 90px; }
  .services__cards { padding: 0; gap: 0; }
  .salon-feature__cta, .lesson-card__cta { margin-top: 20px; }
  .svc-watermark { font-size: 56px; top: 14px; }
  .step2__cards { padding: 0 2%; }
  .salon-feature { gap: 20px; }
  .salon-feature__title { font-size: 32px; }
  .lesson-card__title { font-size: 32px; }
  .salon-feature__desc { font-size: 13px; }

  /* ─── Step 2 ─── */
  .step2 { min-height: 520px; }
  .step2.doors-open .step2__door--left  { clip-path: inset(0 95% 0 0); }
  .step2.doors-open .step2__door--right { clip-path: inset(0 0 0 95%); }
  .step2__inner { padding: 72px 24px; }
  .step2__title { font-size: clamp(20px, 5.5vw, 28px); }
  .step2__item { padding: 18px 0; gap: 12px; grid-template-columns: 2em 1fr auto; }
  .step2__item-name { font-size: 14px; }
  .step2__item-btn { padding: 8px 16px; font-size: 10px; }

  /* ─── Voice ─── */
  .voice { padding: 80px 32px; }
  .voice__grid { grid-template-columns: 1fr; }

  /* ─── CTA ─── */
  .cta { padding: 60px 24px; }
  .cta__glass { grid-template-columns: 1fr; gap: 36px; }
  .cta__image-col { display: none; }
  .cta__preview-sp { display: block; margin: 20px 0; }
  .cta__name-row { grid-template-columns: 1fr; }

  /* ─── Contact ─── */
  .contact-sec { padding: 96px 0; }
  .contact-sec__inner { padding: 0 24px; }
  .contact-sec__inner .eyebrow { font-size: 14px; }
  .contact-sec__title { font-size: clamp(20px, 5.5vw, 32px); }
  .contact-col { padding: 36px 24px; }
  .contact-sec__btns { flex-direction: column; align-items: center; gap: 14px; }
  .contact-sec__btns .btn { width: 100%; max-width: 320px; justify-content: center; }

  /* ─── Book ─── */
  .book-sec { padding: 72px 20px; }
  .book-sec__eyebrow { margin-bottom: 16px; }
  .book-sec__inner { grid-template-columns: 90px 1fr; gap: 16px; align-items: center; }
  .book-sec__img { max-width: 90px; border-radius: 0; }
  .book-sec__body { text-align: left; gap: 8px; }
  .book-sec__lower { margin-top: 20px; text-align: left; }
  .book-sec__voice-card { width: 240px; }
  .book-sec__title { font-size: 17px; line-height: 1.5; }

  /* ─── Footer ─── */
  .footer__bottom { padding: 36px 24px 28px; }
  .footer__logo-img { height: 30px; }
  .footer__nav { gap: 16px; }
  .footer__nav--legal { gap: 14px; margin-top: 8px; }

  /* ─── Back to top ─── */
  .back-top { bottom: 72px; right: 52px; width: 44px; height: 56px; }
}

/* ============================================================
   Responsive — 480px (small mobile)
============================================================ */
@media (max-width: 480px) {
  .hero__heading { font-size: 20px; }
  .forwho__item-voice { font-size: 16px; }
  .services { min-height: 0; }
  .step2 { min-height: 460px; }
  .voice { padding: 64px 20px; }
  .cta__name-row { grid-template-columns: 1fr; }
  .book-sec__img { max-width: 110px; border-radius: 0; }
  .contact-sec__btns .btn { font-size: 12px; }
  .footer__nav { gap: 12px; }
}

/* ============================================================
   Sub-page: Page Hero
============================================================ */
.page-hero {
  padding: 160px var(--pad) 96px;
  background: var(--c-bg);
}

.page-hero__label {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--f-en);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--c-sub);
  margin-bottom: 28px;
}

.page-hero__label .hero__label-line {
  display: block;
  width: 36px;
  height: 1px;
  background: var(--c-rose);
  flex-shrink: 0;
}

.page-hero__heading {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.5vw, 30px);
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: 0.06em;
  color: var(--c-text);
}

@media (max-width: 768px) {
  .page-hero {
    padding: 120px 28px 72px;
  }
  .page-hero__heading {
    font-size: 30px;
  }
}

/* ============================================================
   Door Loader (sub-pages)
============================================================ */
.door-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: auto;
}

.door-loader__panel {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 50%;
  background: var(--c-bg);
  transition: transform 1.2s cubic-bezier(0.76, 0, 0.24, 1);
  will-change: transform;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.door-loader__panel--left {
  left: 0;
  transform: translateX(0);
  border-right: 1px solid var(--c-border);
}

.door-loader__panel--right {
  right: 0;
  transform: translateX(0);
  border-left: 1px solid var(--c-border);
}

/* arch decoration inside each panel */
.door-loader__panel--left::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 160px;
  height: 200px;
  background: var(--c-pink-lt);
  border-radius: 80px 80px 0 0;
  opacity: 0.55;
}

.door-loader__panel--right::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 160px;
  height: 200px;
  background: var(--c-pink-lt);
  border-radius: 80px 80px 0 0;
  opacity: 0.55;
}

/* logo centered over the split */
.door-loader__logo {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
  width: 120px;
  opacity: 1;
  transition: opacity 0.4s ease;
  pointer-events: none;
}

/* open state */
.door-loader.is-open .door-loader__panel--left {
  transform: translateX(-100%);
}

.door-loader.is-open .door-loader__panel--right {
  transform: translateX(100%);
}

.door-loader.is-open .door-loader__logo {
  opacity: 0;
}

.door-loader.is-done {
  pointer-events: none;
}


/* ========================================
   LESSON FEATURE (index-salon)
======================================== */
.lesson-feature {
  padding: 100px 40px;
  background: var(--c-bg);
}
.lesson-feature__inner {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: center;
}
.lesson-feature__visual {
  overflow: hidden;
  border-radius: 4px;
}
.lesson-feature__img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}
.lesson-feature__visual:hover .lesson-feature__img {
  transform: scale(1.03);
}
.lesson-feature__badge {
  display: inline-block;
  font-family: var(--f-sans);
  font-size: 11px;
  letter-spacing: .12em;
  color: #fff;
  background: var(--c-rose);
  padding: 4px 14px;
  border-radius: 2px;
  margin-bottom: 20px;
}
.lesson-feature__title {
  font-family: var(--f-serif);
  font-size: clamp(26px, 3vw, 36px);
  font-weight: 500;
  color: var(--c-text);
  letter-spacing: .05em;
  line-height: 1.4;
  margin: 12px 0 24px;
}
.lesson-feature__desc {
  font-family: var(--f-sans);
  font-size: 15px;
  line-height: 2;
  color: var(--c-text);
  opacity: .8;
  margin-bottom: 36px;
}
@media (max-width: 768px) {
  .lesson-feature {
    padding: 72px 24px;
  }
  .lesson-feature__inner {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .lesson-feature__img {
    height: 260px;
  }
}

/* ── Nav LINE CTA button ───────────────────────────── */
@keyframes line-btn-shimmer {
  0%   { transform: translateX(-100%) skewX(-15deg); }
  100% { transform: translateX(260%) skewX(-15deg); }
}

.site-nav__item--line {
  margin-left: 12px;
}
.site-nav__line-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--f-sans);
  font-size: 11.5px;
  letter-spacing: .14em;
  color: #fff !important;
  background: linear-gradient(135deg, #245AA5 0%, #245AA5 100%);
  padding: 8px 22px 8px 18px;
  border-radius: 999px;
  white-space: nowrap;
  overflow: hidden;
  text-decoration: none;
  box-shadow: 0 2px 12px rgba(121, 169, 194, .3);
  transition: transform .3s ease, box-shadow .3s ease;
}
.site-nav__line-btn::after {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent);
  transform: translateX(-100%) skewX(-15deg);
}
.site-nav__line-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(121, 169, 194, .45);
}
.site-nav__line-btn:hover::after {
  animation: line-btn-shimmer .55s ease forwards;
}
.site-nav__line-heart {
  font-size: 12px;
  line-height: 1;
  display: inline-block;
  animation: heartbeat 2.8s ease-in-out infinite;
}
@keyframes heartbeat {
  0%, 100% { transform: scale(1); }
  25%       { transform: scale(1.3); }
  40%       { transform: scale(1); }
  55%       { transform: scale(1.15); }
  70%       { transform: scale(1); }
}
.site-nav__line-text {
  font-size: 11.5px;
  letter-spacing: .12em;
}

/* ── Hero LINE heart ───────────────────────────────── */
.hero-line-heart {
  display: inline-block;
  animation: heartbeat 2.8s ease-in-out infinite;
  margin-right: 2px;
}
@media (max-width: 768px) {
  .site-nav__item--line {
    margin-left: 0;
    margin-top: 8px;
  }
  .site-nav__line-btn {
    margin: 4px 0;
  }
}

/* ── Text marker highlight ─────────────────────────── */
.text-marker {
  background: linear-gradient(transparent 55%, rgba(121, 169, 194, .18) 55%);
  padding-bottom: 2px;
  font-weight: 500;
}

/* ========================================
   CONCEPT MODAL
======================================== */
.concept-more-btn {
  background: none;
  border: 1px solid var(--c-rose);
  border-radius: 999px;
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: .2em;
  color: var(--c-rose);
  padding: 9px 20px;
  cursor: pointer;
  transition: background .25s ease, color .25s ease;
  margin-top: 16px;
  display: inline-flex;
  width: fit-content;
  align-items: center;
  gap: 8px;
}
.concept-more-btn::after {
  content: '→';
  font-size: 13px;
  transition: transform .25s ease;
}
.concept-more-btn:hover {
  background: var(--c-rose);
  color: #fff;
}
.concept-more-btn:hover::after {
  transform: translateX(4px);
}

/* ── Days Modal ────────────────────────────────── */
.cta__days-btn {
  display: inline-block;
  margin: 20px 0 32px;
  background: none;
  border: none;
  font-family: var(--f-sans);
  font-style: normal;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.14em;
  color: var(--c-gold);
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 4px;
  transition: opacity 0.2s;
}
.cta__days-btn:hover { opacity: 0.7; }

.days-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s;
}
.days-modal.is-open { opacity: 1; pointer-events: auto; }
.days-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(48, 44, 43, 0.45);
  backdrop-filter: blur(4px);
}
.days-modal__panel {
  position: relative;
  z-index: 1;
  background: var(--c-bg);
  border-radius: 12px;
  padding: 52px 48px;
  width: 90%;
  max-width: 560px;
  max-height: 90vh;
  overflow-y: auto;
  transform: translateY(20px);
  transition: transform 0.35s cubic-bezier(0.25,0.46,0.45,0.94);
}
.days-modal.is-open .days-modal__panel { transform: translateY(0); }
.days-modal__close {
  position: absolute;
  top: 16px;
  right: 20px;
  background: none;
  border: none;
  font-size: 22px;
  color: var(--c-mid);
  cursor: pointer;
  line-height: 1;
  padding: 4px 8px;
}
.days-modal__eyebrow {
  font-family: var(--f-en);
  font-style: italic;
  font-size: 12px;
  letter-spacing: 0.18em;
  color: var(--c-gold);
  margin-bottom: 10px;
}
.days-modal__title {
  font-family: var(--f-serif);
  font-size: 20px;
  font-weight: 400;
  letter-spacing: 0.08em;
  color: var(--c-text);
  margin-bottom: 16px;
}
.days-modal__rule {
  width: 40px;
  height: 1px;
  background: var(--c-gold);
  margin-bottom: 28px;
}
.days-modal__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.days-modal__list li {
  display: flex;
  align-items: baseline;
  gap: 16px;
  font-family: var(--f-sans);
  font-size: 13px;
  line-height: 1.65;
  letter-spacing: 0.04em;
  color: var(--c-text);
  padding: 13px 0;
  border-bottom: 1px solid rgba(121, 169, 194, 0.2);
}
.days-modal__list li:last-child { border-bottom: none; }
.days-modal__num {
  font-family: var(--f-en);
  font-style: italic;
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--c-gold);
  white-space: nowrap;
  min-width: 40px;
}

@media (max-width: 768px) {
  .svc-card__ja { font-size: 28px; }
}

/* ========================================
   BLOG（新着記事 / 自動更新）
======================================== */
.blog-sec {
  background: var(--c-bg);
  padding: 100px 40px;
}
.blog-sec__wrap {
  max-width: 1040px;
  margin: 0 auto;
  text-align: center;
}
.blog-sec .eyebrow { text-align: center; }
.blog-sec__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 3vw, 34px);
  font-weight: 500;
  color: var(--c-text);
  margin-bottom: 16px;
}
.blog-sec__lead {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: var(--c-mid);
  margin-bottom: 56px;
}
.blog-sec__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  text-align: left;
}
.blog-sec__loading,
.blog-sec__error {
  grid-column: 1 / -1;
  font-family: var(--f-sans);
  font-size: 13px;
  color: var(--c-sub);
  text-align: center;
  padding: 48px 0;
}
.blog-sec__error a {
  color: var(--c-rose);
  text-decoration: underline;
  margin-left: 6px;
}
.blog-card {
  display: block;
  background: #fff;
  border: 1px solid var(--c-border);
  border-radius: 10px;
  overflow: hidden;
  text-decoration: none;
  transition: transform .4s ease, box-shadow .4s ease;
}
.blog-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 34px rgba(48, 44, 43, 0.10);
}
.blog-card__thumb {
  aspect-ratio: 699 / 367; /* アイキャッチ実寸比に合わせて左右が切れないように */
  overflow: hidden;
  background: linear-gradient(135deg, var(--c-blush), var(--c-pink-lt));
}
.blog-card__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .6s ease;
}
.blog-card:hover .blog-card__thumb img { transform: scale(1.04); }
.blog-card__thumb--ph {
  display: flex;
  align-items: center;
  justify-content: center;
}
.blog-card__thumb--ph span {
  font-family: var(--f-script);
  font-size: 30px;
  color: var(--c-rose);
  opacity: .55;
}
.blog-card__body { padding: 22px 22px 26px; }
.blog-card__date {
  display: block;
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: .12em;
  color: var(--c-gold);
  margin-bottom: 10px;
}
.blog-card__ttl {
  font-family: var(--f-serif);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.75;
  color: var(--c-text);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.blog-sec__footer { margin-top: 56px; }

@media (min-width: 768px) {
  .blog-sec__grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 600px) {
  .blog-sec { padding: 72px 22px; }
  .blog-sec__lead { margin-bottom: 40px; }
  .blog-sec__footer { margin-top: 44px; }
}

/* — WHERE TO START（01 Trial / 02 Ongoing Coaching / 03 Journaling） — */
.start-path {
  background: var(--c-bg);
  padding: 124px var(--pad) 138px;
}
.start-path__inner {
  max-width: 1120px;
  margin: 0 auto;
  position: relative;
}
.start-path__head {
  text-align: center;
  margin-bottom: 48px;
}
.start-path__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 30px);
  font-weight: 500;
  line-height: 1.7;
  color: var(--nb-black);
  margin-top: 20px;
}

.start-path__group-label {
  text-align: center;
  font-family: var(--f-serif);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: var(--nb-blue);
  margin: 0 0 32px;
}
.start-path__group-label--journal {
  margin-top: 96px;
}

/* — 入口ナビ：体験セッション／ジャーナリングの2つのみ — */
.start-path__nav {
  max-width: 620px;
  margin: 0 auto 148px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.start-path__nav-item {
  display: flex;
  align-items: center;
  gap: 28px;
  padding: 28px 40px;
  background: var(--c-bg);
  border: 1px solid var(--c-border);
  border-radius: 4px;
  text-align: left;
  transition: background 0.25s ease, border-color 0.25s ease;
}
.start-path__nav-item:hover {
  border-color: rgba(121, 169, 194, 0.55);
  background: var(--c-ivory);
}
.start-path__nav-item--featured {
  background: var(--c-pink-lt);
  border-color: transparent;
}
.start-path__nav-item--featured:hover {
  background: var(--c-pink-lt);
  border-color: rgba(121, 169, 194, 0.4);
}
.start-path__nav-main {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 6px 22px;
}
.start-path__nav-feel {
  font-family: var(--f-serif);
  font-size: 17px;
  font-weight: 500;
  color: var(--nb-black);
  letter-spacing: 0.02em;
}
.start-path__nav-name {
  font-family: var(--f-sans);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--c-sub);
}
.start-path__nav-arrow {
  flex-shrink: 0;
  margin-left: 12px;
  font-family: var(--f-en);
  color: var(--nb-blue);
  font-size: 15px;
}

.start-path__row {
  display: flex;
  scroll-margin-top: 110px;
}
.start-path__row--01 { justify-content: flex-start; }
.start-path__row--02 { justify-content: flex-end; }
.start-path__row--journal {
  justify-content: center;
  margin-top: 148px;
}

.start-path__block {
  max-width: 440px;
  text-align: left;
}
.start-path__block--main {
  max-width: 760px;
  padding: 58px 88px;
  background: radial-gradient(ellipse 82% 90% at 50% 45%,
    var(--c-pink-lt) 0%,
    var(--c-pink-lt) 52%,
    rgba(232, 241, 245, 0.5) 76%,
    rgba(232, 241, 245, 0) 100%
  );
}
@media (min-width: 981px) {
  .start-path__block--main { margin-right: -36px; }
}
.start-path__block--journal {
  max-width: 500px;
  text-align: left;
}

.start-path__num {
  display: block;
  font-family: var(--f-en);
  font-size: 28px;
  letter-spacing: 0.15em;
  color: var(--c-rose);
  opacity: 0.85;
  margin-bottom: 14px;
}
.start-path__label {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-sub);
  margin-bottom: 20px;
}
.start-path__heading {
  font-family: var(--f-serif);
  font-size: clamp(23px, 2.6vw, 27px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin-bottom: 22px;
}
.start-path__heading--lg {
  font-size: clamp(25px, 3vw, 32px);
  margin-bottom: 28px;
}
.start-path__desc {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 2;
  color: var(--c-sub);
  margin-bottom: 26px;
}
.start-path__meta {
  font-family: var(--f-sans);
  font-size: 12.5px;
  letter-spacing: 0.03em;
  color: var(--c-rose);
  margin-bottom: 22px;
}
.start-path__note {
  font-family: var(--f-sans);
  font-size: 13px;
  line-height: 1.8;
  color: var(--c-sub);
  margin-bottom: 20px;
}
.start-path__quote {
  font-family: var(--f-serif);
  font-size: 17px;
  letter-spacing: 0.03em;
  line-height: 1.8;
  color: var(--nb-blue);
  margin-bottom: 26px;
}

.start-path__breakdown {
  position: relative;
  margin: 20px 0 32px;
}
.start-path__bd-item {
  margin-bottom: 28px;
}
.start-path__bd-item:last-child {
  margin-bottom: 0;
}
.start-path__bd-icon {
  display: block;
  width: 26px;
  height: 26px;
  color: var(--nb-blue-dk);
  opacity: 0.85;
  margin-bottom: 10px;
}
.start-path__bd-label {
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.15em;
  color: var(--nb-blue-dk);
  margin-bottom: 8px;
}
.start-path__bd-text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.85;
  color: var(--c-text);
  max-width: 380px;
}

/* ============================================================
   WHERE TO START — アコーディオン（省スペース化）
============================================================ */
.start-path__accordion {
  max-width: 640px;
  margin: 0 auto;
}
.acc-item {
  border-bottom: 1px solid var(--c-border);
}
.acc-item:first-child {
  border-top: 1px solid var(--c-border);
}
.acc-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 26px 4px;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
}
.acc-trigger__thumb {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  overflow: hidden;
}
.acc-trigger__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.acc-trigger__num {
  flex-shrink: 0;
  width: 26px;
  font-family: var(--f-en);
  font-size: 16px;
  letter-spacing: 0.1em;
  color: var(--c-rose);
  opacity: 0.75;
}
.acc-trigger__text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.acc-trigger__heading {
  font-family: var(--f-serif);
  font-size: 17px;
  letter-spacing: 0.03em;
  color: var(--nb-black);
}
.acc-trigger__icon {
  position: relative;
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}
.acc-trigger__icon::before,
.acc-trigger__icon::after {
  content: '';
  position: absolute;
  background: var(--nb-blue);
  transition: transform 0.3s ease, opacity 0.3s ease;
}
.acc-trigger__icon::before { top: 50%; left: 0; width: 100%; height: 1px; transform: translateY(-50%); }
.acc-trigger__icon::after { left: 50%; top: 0; width: 1px; height: 100%; transform: translateX(-50%); }
.acc-item.is-open .acc-trigger__icon::after { transform: translateX(-50%) scaleY(0); opacity: 0; }
.acc-panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.acc-item.is-open .acc-panel {
  grid-template-rows: 1fr;
}
.acc-panel__inner {
  overflow: hidden;
  min-height: 0;
}
.acc-panel__inner > *:first-child {
  padding-top: 4px;
}
.acc-panel__inner > *:last-child {
  margin-bottom: 32px;
}
@media (max-width: 768px) {
  .acc-trigger { padding: 22px 0; gap: 14px; }
  .acc-trigger__heading { font-size: 16px; }
  .acc-trigger__thumb { width: 40px; height: 40px; }
}

.start-path__curve {
  display: block;
  width: 88%;
  height: 180px;
  margin: 36px auto;
  overflow: visible;
}
.start-path__curve path {
  fill: none;
  stroke: rgba(121, 169, 194, 0.38);
  stroke-width: 1.2;
  stroke-linecap: round;
}

@media (max-width: 980px) {
  .start-path__row--02 .start-path__block--main { max-width: 100%; }
}

@media (max-width: 768px) {
  .start-path { padding: 80px 24px 94px; }
  .start-path__head { margin-bottom: 36px; }
  .start-path__nav { margin: 0 0 100px; gap: 14px; }
  .start-path__nav-item { padding: 22px 22px; gap: 16px; }
  .start-path__nav-main { flex-direction: column; align-items: flex-start; gap: 6px; }
  .start-path__nav-feel { font-size: 16px; }
  .start-path__row--01,
  .start-path__row--02 {
    justify-content: center;
  }
  .start-path__row--journal {
    margin-top: 76px;
  }
  .start-path__block,
  .start-path__block--main,
  .start-path__block--journal {
    max-width: 100%;
    width: 100%;
  }
  .start-path__block--main {
    padding: 48px 28px;
    background: radial-gradient(ellipse 90% 92% at 50% 45%,
      var(--c-pink-lt) 0%,
      var(--c-pink-lt) 60%,
      rgba(232, 241, 245, 0.5) 82%,
      rgba(232, 241, 245, 0) 100%
    );
  }
  .start-path__heading { font-size: 22px; }
  .start-path__heading--lg { font-size: 24px; }
  .start-path__curve {
    width: 56px;
    height: 90px;
    margin: 16px auto;
  }
}

/* — FOR YOU（こんな思いはありませんか？） — */
.foryou-sec {
  background: var(--c-bg);
  padding: 100px var(--pad);
}
.foryou-sec__inner {
  max-width: 880px;
  margin: 0 auto;
  text-align: center;
}
.foryou-sec__inner .eyebrow { color: var(--nb-blue); }
.foryou-sec__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 30px);
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--nb-black);
  margin-bottom: 56px;
}
.foryou-sec__intro {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 2.1;
  color: var(--c-sub);
  max-width: 480px;
  margin: 0 auto 56px;
}
.foryou-sec__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 56px;
  text-align: left;
  margin-bottom: 64px;
}
.foryou-sec__col {
  list-style: none;
}
.foryou-item {
  position: relative;
  padding: 16px 0 16px 32px;
  border-bottom: 1px solid rgba(48, 44, 43, 0.14);
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.9;
  color: var(--nb-black);
}
.foryou-sec__col .foryou-item:last-child { border-bottom: none; }
.foryou-item::before {
  content: '';
  position: absolute;
  left: 2px;
  top: 50%;
  width: 12px;
  height: 7px;
  border-left: 2px solid var(--nb-blue);
  border-bottom: 2px solid var(--nb-blue);
  transform: translateY(-65%) rotate(-45deg);
}
.foryou-sec__stories {
  display: flex;
  flex-direction: column;
  gap: 48px;
  max-width: 620px;
  margin: 0 auto 64px;
  text-align: left;
}
.foryou-story__num {
  display: block;
  font-family: var(--f-en);
  font-size: 26px;
  letter-spacing: 0.12em;
  color: var(--c-rose);
  opacity: 0.8;
  margin-bottom: 10px;
}
.foryou-story__title {
  font-family: var(--f-serif);
  font-size: clamp(17px, 2vw, 20px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin-bottom: 14px;
}
.foryou-story__text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: var(--c-sub);
}
.foryou-sec__msg {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 2.1;
  color: var(--nb-black);
  max-width: 460px;
  margin: 0 auto;
}
@media (max-width: 768px) {
  .foryou-sec { padding: 72px 24px; }
  .foryou-sec__title { margin-bottom: 36px; }
  .foryou-sec__intro { text-align: left; max-width: none; margin-bottom: 40px; }
  .foryou-sec__stories { gap: 40px; margin-bottom: 44px; }
  .foryou-sec__grid { grid-template-columns: 1fr; gap: 0; margin-bottom: 44px; }
  .foryou-item { font-size: 14px; padding: 14px 0 14px 30px; }
  .foryou-sec__msg { text-align: left; max-width: none; }
}

/* — FAQ (homepage) — */
.faq-sec {
  padding: 96px 40px;
  background: var(--c-bg);
  position: relative;
  z-index: 2;
}
.faq-sec__wrap {
  max-width: 780px;
  margin: 0 auto;
}
.faq-sec__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 3vw, 28px);
  font-weight: 500;
  color: var(--c-text);
  margin-bottom: 56px;
  letter-spacing: .06em;
}
.faq-sec__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.faq-item {
  border-top: 1px solid rgba(121, 169, 194, .25);
  padding: 28px 0;
}
.faq-item:last-child {
  border-bottom: 1px solid rgba(121, 169, 194, .25);
}
.faq-item__q {
  font-family: var(--f-serif);
  font-size: 16px;
  font-weight: 500;
  color: var(--c-gold);
  line-height: 1.7;
  margin: 0;
  display: flex;
  gap: 12px;
  align-items: flex-start;
  width: 100%;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  text-align: left;
}
.faq-item__q::before {
  content: 'Q.';
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 18px;
  color: var(--c-gold);
  flex-shrink: 0;
  margin-top: 1px;
}
.faq-item__q-text { flex: 1; }
.faq-item__icon {
  flex-shrink: 0;
  position: relative;
  width: 13px;
  height: 13px;
  margin-top: 6px;
}
.faq-item__icon::before,
.faq-item__icon::after {
  content: '';
  position: absolute;
  background: var(--c-gold);
  transition: transform 0.3s ease, opacity 0.3s ease;
}
.faq-item__icon::before { top: 50%; left: 0; width: 100%; height: 1px; transform: translateY(-50%); }
.faq-item__icon::after { left: 50%; top: 0; width: 1px; height: 100%; transform: translateX(-50%); }
.faq-item.is-open .faq-item__icon::after { transform: translateX(-50%) rotate(90deg); opacity: 0; }
.faq-item__a {
  font-size: 14.5px;
  line-height: 2;
  color: var(--c-text);
  padding-left: 28px;
  opacity: .88;
  max-height: 0;
  overflow: hidden;
  margin: 0;
  transition: max-height 0.4s ease, margin-top 0.4s ease;
}
.faq-item.is-open .faq-item__a { max-height: 640px; margin-top: 12px; }
@media (max-width: 600px) {
  .faq-sec { padding: 72px 22px; }
  .faq-sec__title { margin-bottom: 40px; }
  .faq-item__a { font-size: 14px; padding-left: 0; }
}

/* ── New Brand Palette overrides（トップページ FAQ 限定） ── */
#faq { background: var(--nb-gray); }
#faq .eyebrow { color: var(--nb-blue); }
#faq .faq-sec__title { color: var(--nb-black); }
#faq .faq-item { border-top-color: rgba(48, 44, 43, 0.14); }
#faq .faq-item:last-child { border-bottom-color: rgba(48, 44, 43, 0.14); }
#faq .faq-item__q,
#faq .faq-item__q::before { color: var(--nb-blue); }
#faq .faq-item__a { color: var(--nb-black); }


/* ============================================================
   03.5. Stats
============================================================ */
.stats-sec {
  padding: 80px 40px;
  background: linear-gradient(135deg, #DDE7ED 0%, #E7EEF3 55%, #F5EFEB 100%);
  position: relative;
  overflow: hidden;
}
.stats-sec__inner {
  max-width: 900px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  position: relative;
  z-index: 1;
}
.stats-item {
  text-align: center;
  padding: 40px 20px;
  border-right: 1px solid rgba(121, 169, 194, 0.2);
}
.stats-item:last-child { border-right: none; }
.stats-num {
  font-family: var(--f-sans);
  font-size: clamp(44px, 5.5vw, 68px);
  font-weight: 300;
  color: var(--c-text);
  line-height: 1;
  margin-bottom: 10px;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 1px;
}
.stats-unit {
  font-family: var(--f-serif);
  font-size: 0.38em;
  color: var(--c-gold);
  letter-spacing: 0.06em;
  font-weight: 400;
}
.stats-label {
  font-family: var(--f-sans);
  font-size: 11px;
  font-weight: 300;
  letter-spacing: 0.12em;
  color: var(--c-sub);
}
@media (max-width: 768px) {
  .stats-sec { padding: 56px 24px; }
  .stats-sec__inner { grid-template-columns: repeat(2, 1fr); }
  .stats-item { border-right: 1px solid rgba(121, 169, 194, 0.2); border-bottom: 1px solid rgba(121, 169, 194, 0.2); }
  .stats-item:nth-child(2n) { border-right: none; }
  .stats-item:nth-child(3), .stats-item:nth-child(4) { border-bottom: none; }
}

/* ============================================================
   05.5. Voices
============================================================ */
.voices-sec {
  padding: 120px 40px;
  background: var(--c-bg);
  position: relative;
  overflow: hidden;
}
.voices-sec::before {
  content: '"';
  position: absolute;
  top: -60px;
  left: -16px;
  font-family: var(--f-en);
  font-size: 360px;
  font-weight: 300;
  color: rgba(121, 169, 194, 0.05);
  line-height: 1;
  pointer-events: none;
  user-select: none;
}
.voices-sec__inner {
  max-width: 1080px;
  margin: 0 auto;
  text-align: center;
}
.voices-sec__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 500;
  letter-spacing: 0.1em;
  color: var(--c-text);
  margin-bottom: 64px;
}
.voices-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  text-align: left;
}
.voice-card {
  background: #fff;
  border-radius: 16px;
  padding: 40px 32px 32px;
  position: relative;
  box-shadow: 0 4px 28px rgba(121, 169, 194, 0.07);
  transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              box-shadow 0.4s ease;
}
.voice-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 12px 40px rgba(121, 169, 194, 0.14);
}
.voice-card__mark {
  font-family: var(--f-en);
  font-size: 52px;
  font-weight: 300;
  color: var(--c-rose);
  opacity: 0.22;
  line-height: 1;
  margin-bottom: 14px;
}
.voice-card__text {
  font-size: 14px;
  line-height: 2.1;
  color: var(--c-text);
  letter-spacing: 0.04em;
  margin-bottom: 28px;
}
.voice-card__author {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-top: 20px;
  border-top: 1px solid rgba(121, 169, 194, 0.15);
}
.voice-card__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: linear-gradient(135deg, #F8F8F6 0%, #E8E7E3 100%);
  flex-shrink: 0;
  overflow: hidden;
}
.voice-card__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
}
.voice-card__avatar--2 { background: linear-gradient(135deg, #F2F1EE 0%, #E8E7E3 100%); }
.voice-card__avatar--3 { background: linear-gradient(135deg, #E8E7E3 0%, #DCDAD4 100%); }
.voice-card__name {
  font-family: var(--f-serif);
  font-size: 14px;
  font-weight: 500;
  color: var(--c-text);
  letter-spacing: 0.06em;
}
.voice-card__meta {
  font-size: 11px;
  color: var(--c-sub);
  letter-spacing: 0.08em;
  margin-top: 2px;
  font-weight: 300;
}
@media (max-width: 768px) {
  .voices-sec { padding: 80px 24px; }
  .voices-grid { grid-template-columns: 1fr; gap: 20px; }
}

/* ============================================================
   Photo placeholder backgrounds (demo without actual images)
============================================================ */
.hero__right {
  background: linear-gradient(160deg, #F8F8F6 0%, #E8E7E3 45%, #DCDAD4 100%);
}
.profile__visual {
  background: linear-gradient(160deg, #F8F8F6 0%, #E8E7E3 100%);
}
.svc-card__visual {
  background: linear-gradient(135deg, #F8F8F6 0%, #EFEEEB 100%);
}
.svc-card:nth-child(2) .svc-card__visual {
  background: linear-gradient(135deg, #F1F0ED 0%, #E8E7E3 100%);
}
.svc-card:nth-child(3) .svc-card__visual {
  background: linear-gradient(135deg, #EFEEEB 0%, #E4E2DD 100%);
}
.session-teaser__photo {
  background: linear-gradient(160deg, #F8F8F6 0%, #DCDAD4 100%);
}
.cta__image-col {
  background: linear-gradient(135deg, #F8F8F6 0%, #EFEEEB 100%);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cta__preview-img,
.cta__preview-img-sp {
  background: linear-gradient(135deg, #F8F8F6 0%, #EFEEEB 100%);
  min-height: 180px;
  border-radius: 6px;
}

/* ============================================================
   Contact Form
============================================================ */
.contact-form-sec {
  padding: 80px var(--pad) 120px;
  background: #fff;
}
.contact-form {
  max-width: 620px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.contact-form__row {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.contact-form__label {
  font-family: var(--f-sans);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--c-text);
}
.contact-form__label .req {
  color: var(--c-rose);
  margin-left: 4px;
  font-size: 10px;
}
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form textarea,
.contact-form select {
  width: 100%;
  border: 1px solid var(--c-border);
  border-radius: 3px;
  background: var(--c-bg);
  padding: 14px 16px;
  font-family: var(--f-sans);
  font-size: 13.5px;
  color: var(--c-text);
  transition: border-color 0.2s;
}
.contact-form input:focus,
.contact-form textarea:focus,
.contact-form select:focus {
  outline: none;
  border-color: var(--c-rose);
}
.contact-form textarea { resize: vertical; min-height: 140px; }
.contact-form__submit {
  margin-top: 8px;
  align-self: center;
}
.contact-form__note {
  text-align: center;
  font-family: var(--f-sans);
  font-size: 12px;
  color: var(--c-sub);
  margin-top: 8px;
}
.contact-form__note a { color: var(--c-rose); }

/* ============================================================
   Legal Pages (Privacy / Terms)
   — imported from real preshine.jp/pp.html + sct.html
============================================================ */
.legal-page {
  padding: 160px 40px 120px;
  max-width: 760px;
  margin: 0 auto;
}
.legal-page__eyebrow {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--c-rose);
  margin-bottom: 16px;
}
.legal-page__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 3vw, 32px);
  font-weight: 400;
  letter-spacing: 0.06em;
  color: var(--c-text);
  margin-bottom: 12px;
}
.legal-page__title-en {
  display: block;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: rgba(86, 109, 124, 0.5);
  margin-top: 8px;
  font-weight: 400;
}
.legal-page__rule {
  width: 40px;
  height: 1px;
  background: var(--c-rose);
  opacity: 0.4;
  margin: 32px 0 56px;
}
.legal-page__lead {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: rgba(41, 52, 59, 0.75);
  margin-bottom: 52px;
}
.legal-section {
  margin-bottom: 40px;
  padding-bottom: 40px;
  border-bottom: 1px solid rgba(121, 169, 194, 0.12);
}
.legal-section:last-of-type { border-bottom: none; }
.legal-section__title {
  font-family: var(--f-serif);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.08em;
  color: var(--c-text);
  margin-bottom: 14px;
}
.legal-section__body {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: rgba(41, 52, 59, 0.75);
}
.legal-table {
  width: 100%;
  border-collapse: collapse;
}
.legal-table th,
.legal-table td {
  padding: 20px 24px;
  text-align: left;
  border-bottom: 1px solid rgba(121, 169, 194, 0.12);
  vertical-align: top;
  line-height: 1.85;
}
.legal-table th {
  font-family: var(--f-serif);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--c-text);
  white-space: nowrap;
  width: 220px;
  background: rgba(121, 169, 194, 0.06);
}
.legal-table td {
  font-family: var(--f-sans);
  font-size: 14px;
  color: rgba(41, 52, 59, 0.75);
}
.legal-table tr:first-child th,
.legal-table tr:first-child td {
  border-top: 1px solid rgba(121, 169, 194, 0.12);
}
.legal-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 72px;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--c-rose);
  text-decoration: none;
  transition: opacity 0.2s;
}
.legal-back:hover { opacity: 0.65; }
.legal-back svg { flex-shrink: 0; }
@media (max-width: 768px) {
  .legal-page { padding: 120px 24px 80px; }
  .legal-table th, .legal-table td { padding: 14px 16px; font-size: 13px; }
  .legal-table th { width: 130px; white-space: normal; }
}

/* ============================================================
   About Page (ab-*) — imported from real preshine.jp/profile.html
============================================================ */
/* ═══════════════════════════════════════════
       HERO
    ═══════════════════════════════════════════ */
    .ab-hero {
      display: grid;
      grid-template-columns: 55fr 45fr;
      align-items: start;
    }

.ab-hero__img-col {
      position: relative;
      overflow: hidden;
      height: 480px;
    }

.ab-hero__img-col::after {
      content: '';
      position: absolute;
      top: 0; right: 0;
      width: 30%;
      height: 100%;
      background: linear-gradient(to right, transparent, #f5efeb);
      pointer-events: none;
    }

.ab-hero__img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: 55% 62%;
      display: block;
      filter: brightness(0.98) saturate(0.88);
      animation: photoDrift 18s ease-in-out infinite alternate;
    }

.ab-hero__text-col {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 88px 56px 64px 56px;
      background: var(--c-bg);
      position: relative;
    }

.ab-hero__eyebrow {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 9px;
      letter-spacing: 0.4em;
      text-transform: uppercase;
      color: var(--c-gold);
      margin-bottom: 40px;
      display: flex;
      align-items: center;
      gap: 14px;
    }

.ab-hero__eyebrow::before {
      content: '';
      width: 32px; height: 1px;
      background: var(--c-gold);
      opacity: 0.5;
    }

.ab-hero__catch {
      font-family: var(--f-serif);
      font-size: clamp(24px, 2.8vw, 32px);
      font-weight: 500;
      line-height: 1.55;
      letter-spacing: 0.04em;
      color: var(--c-text);
      margin-bottom: 12px;
    }

.ab-hero__catch em,
.ab-hero__catch-accent {
      font-style: normal;
      color: var(--c-rose);
    }
.ab-hero__catch-line {
      display: inline-block;
    }

.ab-hero__sub-catch {
      font-family: var(--f-serif);
      font-size: clamp(14px, 1.5vw, 18px);
      font-weight: 400;
      letter-spacing: 0.08em;
      color: rgba(57, 73, 83, 0.5);
      margin-bottom: 40px;
    }

.ab-hero__divider {
      width: 48px;
      height: 1px;
      background: rgba(121, 169, 194, 0.35);
      margin-bottom: 36px;
    }

.ab-hero__lead {
      max-width: 460px;
      margin-bottom: 40px;
    }
.ab-hero__lead p {
      font-family: var(--f-sans);
      font-size: 14px;
      line-height: 1.9;
      color: var(--c-text);
      letter-spacing: 0.04em;
      margin-top: 0;
      margin-bottom: 22px;
    }
.ab-hero__lead p:last-child { margin-bottom: 0; }

.ab-hero__name {
      display: flex;
      flex-direction: column;
      gap: 4px;
    }

.ab-hero__name-ja {
      font-family: var(--f-serif);
      font-size: 12px;
      letter-spacing: 0.25em;
      color: rgba(57, 73, 83, 0.45);
    }

.ab-hero__name-en {
      font-family: 'Pinyon Script', cursive;
      font-size: clamp(40px, 5vw, 60px);
      color: var(--c-rose);
      opacity: 0.55;
      line-height: 1.1;
    }

/* ═══════════════════════════════════════════
       MARQUEE
    ═══════════════════════════════════════════ */
    .ab-marquee {
      overflow: hidden;
      background: var(--c-rose);
      padding: 13px 0;
      white-space: nowrap;
    }

.ab-marquee__track {
      display: inline-flex;
      animation: marqueeScroll 28s linear infinite;
    }

.ab-marquee__text {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 10px;
      letter-spacing: 0.3em;
      color: rgba(255,255,255,0.85);
      padding-right: 40px;
    }

.ab-marquee__sep {
      font-size: 9px;
      color: rgba(255,255,255,0.4);
      padding-right: 40px;
    }

@keyframes marqueeScroll {
      from { transform: translateX(0); }
      to   { transform: translateX(-50%); }
    }

/* ═══════════════════════════════════════════
       STATS STRIP
    ═══════════════════════════════════════════ */
    .ab-stats {
      background: #fff;
      border-top: 1px solid rgba(121, 169, 194, 0.1);
      border-bottom: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-stats__inner {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr 1fr;
    }

.ab-stat {
      text-align: center;
      padding: 52px 24px;
      border-right: 1px solid rgba(121, 169, 194, 0.1);
      position: relative;
    }

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

.ab-stat__num {
      font-family: 'Cormorant Garamond', var(--f-en);
      font-size: clamp(44px, 5.5vw, 68px);
      font-weight: 300;
      font-style: italic;
      color: var(--c-rose);
      line-height: 1;
      display: block;
      margin-bottom: 2px;
    }

.ab-stat__unit {
      font-family: var(--f-serif);
      font-size: 14px;
      font-style: normal;
      color: var(--c-rose);
      letter-spacing: 0.05em;
    }

.ab-stat__label {
      font-family: var(--f-serif);
      font-size: 13px;
      letter-spacing: 0.1em;
      color: var(--c-text);
      margin: 14px 0 8px;
      display: block;
    }

.ab-stat__desc {
      font-family: var(--f-sans);
      font-size: 11px;
      line-height: 1.8;
      color: rgba(57, 73, 83, 0.5);
      letter-spacing: 0.04em;
    }

/* ═══════════════════════════════════════════
       PROFILE
    ═══════════════════════════════════════════ */
    .ab-profile {
      background: #fff;
      padding: 104px 80px;
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-profile__inner {
      max-width: 860px;
      margin: 0 auto;
      display: grid;
      grid-template-columns: 190px 1fr;
      gap: 48px;
      align-items: start;
    }

.ab-profile__photo-col {
      position: relative;
    }
.ab-profile__photo-col::before {
      content: '';
      position: absolute;
      top: 16px;
      left: 16px;
      right: -16px;
      bottom: -16px;
      border: 1px solid var(--nb-blue);
      opacity: 0.4;
      z-index: 0;
    }
.ab-profile__photo {
      position: relative;
      z-index: 1;
      width: 100%;
      aspect-ratio: 3/4;
      object-fit: cover;
      object-position: center top;
      display: block;
    }

.ab-profile__info { padding-top: 8px; max-width: 680px; }

.ab-profile__eyebrow {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 12px;
      letter-spacing: 0.32em;
      text-transform: uppercase;
      color: var(--c-rose);
      margin-bottom: 10px;
      display: block;
    }

.ab-profile__name-ja {
      font-family: var(--f-serif);
      font-size: clamp(22px, 2.6vw, 28px);
      font-weight: 400;
      letter-spacing: 0.14em;
      color: #302C2B;
      opacity: 1;
      display: block;
      line-height: 1.2;
    }

.ab-profile__name-reading {
      font-family: var(--f-sans);
      font-size: 11px;
      letter-spacing: 0.2em;
      color: rgba(57, 73, 83, 0.4);
      display: block;
      margin-top: 6px;
      margin-bottom: 6px;
    }

.ab-profile__name-en {
      font-family: 'Cormorant Garamond', var(--f-en);
      font-size: 13px;
      font-style: italic;
      letter-spacing: 0.2em;
      color: var(--c-rose);
      display: block;
      margin-top: 6px;
      margin-bottom: 14px;
    }

.ab-profile__title {
      font-family: var(--f-serif);
      font-size: 13px;
      letter-spacing: 0.1em;
      color: var(--c-sub);
      margin-bottom: 24px;
      display: block;
    }

.ab-profile__bio {
      font-family: var(--f-sans);
      font-size: 14px;
      line-height: 1.9;
      color: #555555;
      opacity: 1;
      letter-spacing: 0.03em;
      max-width: 640px;
      margin-bottom: 20px;
    }

.ab-profile__link {
      font-family: var(--f-sans);
      font-size: 13px;
      letter-spacing: 0.08em;
      color: var(--c-rose);
      text-decoration: none;
      border-bottom: 1px solid rgba(121, 169, 194, 0.5);
      padding-bottom: 3px;
      transition: border-color 0.2s, opacity 0.2s;
    }
.ab-profile__link:hover { border-color: var(--c-rose); opacity: 0.75; }
.ab-profile__link span { display: inline-block; transition: transform 0.2s; }

.svc-glance__link {
      display: inline-block;
      font-family: var(--f-sans);
      font-size: 12px;
      letter-spacing: 0.1em;
      color: var(--c-rose);
      text-decoration: none;
      border-bottom: 1px solid rgba(121, 169, 194, 0.4);
      padding-bottom: 3px;
      transition: border-color 0.2s, opacity 0.2s, transform 0.2s;
    }
.svc-glance__link:hover { border-color: var(--c-rose); opacity: 0.75; transform: translateX(2px); }
.ab-profile__link:hover span { transform: translateX(3px); }

/* ═══════════════════════════════════════════
       QUOTE / MANIFESTO
    ═══════════════════════════════════════════ */
    .ab-quote {
      background: var(--c-bg);
      padding: 104px 80px;
      text-align: center;
    }

.ab-quote__inner { max-width: 760px; margin: 0 auto; }

.ab-quote__eyebrow {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 9px;
      letter-spacing: 0.4em;
      text-transform: uppercase;
      color: var(--c-gold);
      margin-bottom: 48px;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 14px;
    }

.ab-quote__eyebrow::before,
    .ab-quote__eyebrow::after {
      content: '';
      width: 32px; height: 1px;
      background: rgba(121, 169, 194, 0.35);
    }

.ab-quote__text {
      font-family: var(--f-serif);
      font-size: clamp(22px, 3vw, 38px);
      font-weight: 400;
      line-height: 1.9;
      letter-spacing: 0.06em;
      color: var(--c-text);
      margin-bottom: 40px;
    }

.ab-quote__text em {
      font-style: normal;
      color: var(--c-rose);
    }

.ab-quote__divider {
      width: 1px;
      height: 48px;
      background: linear-gradient(to bottom, rgba(121, 169, 194, 0.15), rgba(121, 169, 194, 0.4), rgba(121, 169, 194, 0.15));
      margin: 52px auto 0;
    }

.ab-quote__key {
      margin-top: 40px;
      text-align: center;
    }

.ab-quote__key-icon {
      display: block;
      font-family: var(--f-en);
      font-size: 14px;
      color: var(--c-gold);
      letter-spacing: 0.2em;
      margin-bottom: 28px;
      opacity: 0.8;
    }

.ab-quote__key-text {
      font-family: var(--f-serif);
      font-size: clamp(17px, 2.2vw, 24px);
      font-weight: 400;
      line-height: 2;
      letter-spacing: 0.08em;
      color: var(--c-text);
    }

/* ─── before note ─── */
    .ab-before-note {
      padding: 0 80px 80px;
      background: var(--c-bg);
    }

.ab-before-note__inner {
      max-width: 760px;
      margin: 0 auto;
      padding: 40px 48px;
      border: 1px solid rgba(121, 169, 194, 0.2);
      border-left: 3px solid rgba(121, 169, 194, 0.5);
      background: rgba(252,248,242,0.7);
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 32px;
    }

.ab-before-note__text {
      font-family: var(--f-body);
      font-size: 13px;
      line-height: 2;
      color: rgba(41, 52, 59, 0.65);
      letter-spacing: 0.04em;
    }

.ab-before-note__link {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      white-space: nowrap;
      font-family: var(--f-en);
      font-size: 10px;
      letter-spacing: 0.2em;
      color: var(--c-gold);
      text-decoration: none;
      transition: opacity 0.2s;
      flex-shrink: 0;
    }

.ab-before-note__link:hover { opacity: 0.65; }

/* ═══════════════════════════════════════════
       MY WEEK — Weekly schedule
    ═══════════════════════════════════════════ */
    .ab-week {
      padding: 104px 80px;
      background: var(--c-bg);
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-week__inner { max-width: 1100px; margin: 0 auto; }

.ab-week__heading {
      font-family: var(--f-serif);
      font-size: clamp(24px, 2.8vw, 38px);
      font-weight: 400;
      letter-spacing: 0.08em;
      color: var(--c-text);
      margin-bottom: 6px;
    }

.ab-week__sub {
      font-family: 'Pinyon Script', cursive;
      font-size: clamp(30px, 4vw, 50px);
      color: var(--c-rose);
      opacity: 0.5;
      display: block;
      margin-bottom: 56px;
      line-height: 1;
    }

/* 毎日バー */
    .ab-week-daily {
      display: flex;
      align-items: center;
      gap: 16px;
      padding: 16px 24px;
      background: rgba(121, 169, 194, 0.06);
      border: 1px solid rgba(121, 169, 194, 0.12);
      margin-bottom: 2px;
    }

.ab-week-daily__label {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 9px;
      letter-spacing: 0.35em;
      text-transform: uppercase;
      color: var(--c-gold);
      white-space: nowrap;
      flex-shrink: 0;
    }

.ab-week-daily__items {
      display: flex;
      gap: 12px;
      flex-wrap: wrap;
    }

.ab-week-daily__item {
      font-family: var(--f-sans);
      font-size: 11px;
      letter-spacing: 0.06em;
      color: rgba(57, 73, 83, 0.6);
    }

.ab-week-daily__item::before {
      content: '·';
      margin-right: 6px;
      color: var(--c-rose);
      opacity: 0.5;
    }

/* デスクトップ：AMPMラッパーは透過 */
    .ab-wday__am, .ab-wday__pm { display: contents; }

/* 7日グリッド */
    .ab-week-schedule {
      display: grid;
      grid-template-columns: repeat(7, 1fr);
      gap: 2px;
    }

.ab-wday {
      background: #fff;
      padding: 28px 16px 32px;
      text-align: center;
    }

.ab-wday--weekend { background: #faeff0; }

.ab-wday--off { background: #faeff0; }

.ab-wday__en {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 13px;
      letter-spacing: 0.25em;
      text-transform: uppercase;
      color: var(--c-gold);
      display: block;
      margin-bottom: 16px;
    }

.ab-wday__ja {
      font-family: var(--f-serif);
      font-size: 18px;
      font-weight: 400;
      color: var(--c-text);
      display: block;
      margin-bottom: 20px;
    }

.ab-wday--weekend .ab-wday__ja { color: var(--c-rose); opacity: 0.7; }

.ab-wday__ampm {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 10px;
      letter-spacing: 0.2em;
      color: rgba(57, 73, 83, 0.6);
      text-align: left;
      margin-top: 14px;
      margin-bottom: 6px;
    }

.ab-wday__ampm:first-of-type { margin-top: 0; }

.ab-wday__tags {
      display: flex;
      flex-direction: column;
      gap: 5px;
    }

.ab-wday__tag {
      font-family: var(--f-sans);
      font-size: 11px;
      letter-spacing: 0.03em;
      padding: 6px 8px;
      border-radius: 2px;
      line-height: 1.3;
      display: flex;
      align-items: center;
      gap: 5px;
      white-space: nowrap;
    }

.ab-wday__tag svg {
      width: 13px;
      height: 13px;
      flex-shrink: 0;
      stroke-width: 1.8;
    }

.ab-wday__tag--work {
      background: rgba(121, 169, 194, 0.1);
      color: #2f4156;
    }

.ab-wday__tag--body {
      background: rgba(121, 169, 194, 0.1);
      color: #417293;
    }

.ab-wday__tag--family {
      background: rgba(121, 169, 194, 0.1);
      color: #4e6a7c;
    }

.ab-wday__tag--free {
      background: rgba(121, 169, 194, 0.1);
      color: #4F6371;
    }

/* ═══════════════════════════════════════════
       STORY
    ═══════════════════════════════════════════ */
    .ab-story {
      padding: 104px 80px;
      background: #fff;
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-story__inner { max-width: 1100px; margin: 0 auto; }

.ab-story__grid {
      display: grid;
      grid-template-columns: 1fr 340px;
      gap: 80px;
      align-items: start;
    }

.ab-story__heading {
      font-family: var(--f-serif);
      font-size: clamp(24px, 2.8vw, 32px);
      font-weight: 500;
      letter-spacing: 0.06em;
      color: var(--c-text);
      line-height: 1.6;
      margin-bottom: 48px;
    }

.ab-story__heading em {
      font-style: normal;
      color: var(--c-rose);
    }

.ab-timeline { position: relative; padding-left: 36px; }

.ab-timeline::before {
      content: '';
      position: absolute;
      left: 0; top: 8px; bottom: 0;
      width: 1px;
      background: linear-gradient(to bottom, rgba(121, 169, 194, 0.4), transparent);
    }

.ab-tl-item {
      position: relative;
      padding-bottom: 0;
      border-bottom: 1px solid rgba(121, 169, 194, 0.18);
      opacity: 0;
      transform: translateX(-10px);
      transition: opacity 0.6s ease, transform 0.6s ease;
    }
.ab-tl-item:last-child { border-bottom: none; }

.ab-tl-item.is-visible { opacity: 1; transform: translateX(0); }

.ab-tl-item::before {
      content: '';
      position: absolute;
      left: -40px; top: 24px;
      width: 7px; height: 7px;
      border-radius: 50%;
      background: var(--c-rose);
      opacity: 0.45;
    }

.ab-tl-q {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
      width: 100%;
      padding: 18px 0;
      background: none;
      border: none;
      cursor: pointer;
      text-align: left;
    }

.ab-tl-q-text { display: block; }

.ab-tl-icon {
      width: 20px;
      height: 20px;
      flex-shrink: 0;
      margin-top: 2px;
      border-radius: 50%;
      border: 1px solid rgba(121, 169, 194, 0.5);
      position: relative;
      transition: transform 0.3s ease;
    }
.ab-tl-icon::before,
.ab-tl-icon::after {
      content: '';
      position: absolute;
      top: 50%; left: 50%;
      background: var(--c-gold);
      border-radius: 1px;
    }
.ab-tl-icon::before { width: 8px; height: 1px; transform: translate(-50%, -50%); }
.ab-tl-icon::after {
      width: 1px; height: 8px;
      transform: translate(-50%, -50%);
      transition: transform 0.3s ease, opacity 0.3s;
    }
.ab-tl-item.is-open .ab-tl-icon::after { transform: translate(-50%, -50%) rotate(90deg); opacity: 0; }

.ab-tl-year {
      display: block;
      font-family: 'Cormorant Garamond', var(--f-en);
      font-size: 12px;
      font-style: italic;
      letter-spacing: 0.15em;
      color: var(--c-gold);
      margin-bottom: 6px;
    }

.ab-tl-title {
      display: block;
      font-family: var(--f-serif);
      font-size: 15px;
      font-weight: 500;
      letter-spacing: 0.06em;
      color: var(--c-text);
    }

.ab-tl-a {
      max-height: 0;
      overflow: hidden;
      transition: max-height 0.5s cubic-bezier(0.22,1,0.36,1);
    }
.ab-tl-item.is-open .ab-tl-a { max-height: 2600px; }

.ab-tl-desc {
      font-family: var(--f-sans);
      font-size: 14px;
      line-height: 2;
      color: var(--c-sub);
      letter-spacing: 0.04em;
      padding: 0 30px 28px 0;
    }

.ab-story__photo-col { position: sticky; top: 100px; }

.ab-story__img-wrap {
      position: relative;
    }

.ab-story__photo { width: 100%; aspect-ratio: 3/4; object-fit: cover; display: block; object-position: center 30%; }

.ab-story__caption {
      font-family: 'Cormorant Garamond', var(--f-en);
      font-size: 11px;
      font-style: italic;
      letter-spacing: 0.15em;
      color: rgba(57, 73, 83, 0.38);
      margin-top: 10px;
      text-align: right;
    }

/* ═══════════════════════════════════════════
       FAMILY
    ═══════════════════════════════════════════ */
    .ab-family {
      padding: 104px 80px;
      background: var(--c-bg);
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-family__inner {
      max-width: 1100px; margin: 0 auto;
      display: grid; grid-template-columns: 1fr 1fr;
      gap: 96px; align-items: center;
    }

.ab-family__heading {
      font-family: var(--f-serif);
      font-size: clamp(24px, 2.8vw, 36px);
      font-weight: 400;
      letter-spacing: 0.06em;
      color: var(--c-text);
      line-height: 1.7;
      margin-bottom: 24px;
    }

.ab-family__heading em { font-style: normal; color: var(--c-rose); }

.ab-family__body {
      font-family: var(--f-sans);
      font-size: 14px;
      line-height: 2.3;
      color: rgba(57, 73, 83, 0.68);
      letter-spacing: 0.05em;
    }

.ab-family__members { display: flex; flex-direction: column; gap: 14px; margin-top: 40px; }

.ab-member {
      display: flex; align-items: center; gap: 18px;
      padding: 18px 22px;
      background: rgba(255,255,255,0.72);
      border: 1px solid rgba(121, 169, 194, 0.12);
    }

.ab-member__icon { font-size: 20px; flex-shrink: 0; }

.ab-member__label {
      font-family: var(--f-serif);
      font-size: 13px;
      letter-spacing: 0.08em;
      color: var(--c-text);
      margin-bottom: 2px;
    }

.ab-member__desc {
      font-family: var(--f-sans);
      font-size: 12px;
      color: rgba(57, 73, 83, 0.52);
      letter-spacing: 0.04em;
    }

/* ═══════════════════════════════════════════
       FOR YOU — 価値観セクション
    ═══════════════════════════════════════════ */
    .ab-foryou {
      background: var(--c-bg);
      padding: 120px 60px;
      text-align: center;
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-foryou__inner {
      max-width: 640px;
      margin: 0 auto;
    }

.ab-foryou__thanks {
      font-family: var(--f-serif);
      font-size: 13px;
      letter-spacing: 0.12em;
      color: rgba(57, 73, 83, 0.45);
      margin-bottom: 56px;
    }

.ab-foryou__lead {
      font-family: var(--f-serif);
      font-size: clamp(16px, 2.2vw, 22px);
      font-weight: 400;
      line-height: 2.2;
      letter-spacing: 0.06em;
      color: var(--c-text);
      margin-bottom: 0;
    }

.ab-foryou__lead em {
      font-style: normal;
      color: var(--c-rose);
    }

.ab-foryou__divider {
      width: 1px;
      height: 56px;
      background: linear-gradient(to bottom, transparent, rgba(121, 169, 194, 0.35), transparent);
      margin: 56px auto;
    }

.ab-foryou__prompt-label {
      font-family: var(--f-serif);
      font-size: 14px;
      letter-spacing: 0.1em;
      color: rgba(57, 73, 83, 0.5);
      margin-bottom: 52px;
    }

.ab-foryou__prompts {
      display: flex;
      flex-direction: column;
      gap: 48px;
      margin-bottom: 72px;
    }

.ab-foryou__prompt {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 14px;
    }

.ab-foryou__prompt-num {
      font-family: 'Cormorant Garamond', var(--f-en);
      font-size: 11px;
      font-style: italic;
      letter-spacing: 0.2em;
      color: var(--c-gold);
      opacity: 0.7;
    }

.ab-foryou__prompt-q {
      font-family: var(--f-serif);
      font-size: clamp(17px, 2.2vw, 24px);
      font-weight: 400;
      letter-spacing: 0.06em;
      line-height: 1.9;
      color: var(--c-text);
    }

.ab-foryou__sign {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 16px;
      padding-top: 56px;
      border-top: 1px solid rgba(121, 169, 194, 0.15);
    }

.ab-foryou__sign-text {
      font-family: var(--f-serif);
      font-size: 14px;
      letter-spacing: 0.1em;
      color: rgba(57, 73, 83, 0.55);
    }

.ab-foryou__sign-name {
      font-family: 'Pinyon Script', cursive;
      font-size: 44px;
      color: var(--c-rose);
      opacity: 0.5;
      line-height: 1;
    }

.ab-foryou__prompt-next {
      margin-top: 20px;
      background: none;
      border: none;
      font-family: var(--f-serif);
      font-size: 15px;
      letter-spacing: 0.08em;
      color: var(--c-rose);
      cursor: pointer;
      opacity: 0.75;
      transition: opacity 0.2s, transform 0.2s;
      padding: 0;
    }

.ab-foryou__prompt-next:hover {
      opacity: 1;
      transform: translateX(4px);
    }

/* ═══════════════════════════════════════════
       CTA
    ═══════════════════════════════════════════ */
    .ab-cta {
      background: #fff;
      border-top: 1px solid rgba(121, 169, 194, 0.12);
      text-align: center;
      padding: 104px 40px;
    }

.ab-cta__script {
      font-family: 'Pinyon Script', cursive;
      font-size: clamp(44px, 5.5vw, 72px);
      color: var(--c-rose);
      opacity: 0.45;
      display: block;
      margin-bottom: 28px;
      line-height: 1;
    }

.ab-cta__title {
      font-family: var(--f-serif);
      font-size: clamp(20px, 2.5vw, 32px);
      font-weight: 400;
      letter-spacing: 0.08em;
      color: var(--c-text);
      line-height: 1.75;
      margin-bottom: 16px;
    }

.ab-cta__desc {
      font-family: var(--f-sans);
      font-size: 13px;
      line-height: 2.1;
      color: rgba(57, 73, 83, 0.55);
      margin-bottom: 44px;
      letter-spacing: 0.06em;
    }

/* ═══════════════════════════════════════════
       ACHIEVEMENT
    ═══════════════════════════════════════════ */
    .ab-achieve {
      background: #fff;
      padding: 104px 80px;
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-achieve__inner { max-width: 1100px; margin: 0 auto; }

.ab-achieve__list {
      list-style: none;
      padding: 0;
      margin: 0;
      display: flex;
      flex-wrap: wrap;
      gap: 0;
      border-top: 1px solid rgba(121, 169, 194, 0.12);
      border-left: 1px solid rgba(121, 169, 194, 0.12);
    }

.ab-achieve__item {
      font-family: var(--f-sans);
      font-size: 13px;
      line-height: 1.7;
      color: rgba(57, 73, 83, 0.7);
      letter-spacing: 0.04em;
      padding: 24px 32px;
      border-bottom: 1px solid rgba(121, 169, 194, 0.12);
      border-right: 1px solid rgba(121, 169, 194, 0.12);
      width: calc(50% - 0px);
      box-sizing: border-box;
      position: relative;
    }

.ab-achieve__item::before {
      content: '';
      display: inline-block;
      width: 6px;
      height: 1px;
      background: var(--c-gold);
      opacity: 0.6;
      margin-right: 12px;
      vertical-align: middle;
    }

/* ═══════════════════════════════════════════
       BOOK
    ═══════════════════════════════════════════ */
    .ab-book {
      background: var(--c-bg);
      padding: 104px 80px;
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-book__inner {
      max-width: 1000px;
      margin: 0 auto;
      display: grid;
      grid-template-columns: 200px 1fr;
      gap: 80px;
      align-items: center;
    }

.ab-book__cover-wrap {
      position: relative;
    }

.ab-book__cover {
      width: 100%;
      display: block;
      box-shadow: 8px 12px 40px rgba(48, 44, 43, 0.14);
    }

.ab-book__cover-placeholder {
      width: 100%;
      aspect-ratio: 3/4;
      background: rgba(121, 169, 194, 0.08);
      border: 1px solid rgba(121, 169, 194, 0.18);
      display: flex;
      align-items: center;
      justify-content: center;
      font-family: var(--f-serif);
      font-size: 11px;
      letter-spacing: 0.1em;
      color: rgba(57, 73, 83, 0.35);
    }

.ab-book__eyebrow {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 9px;
      letter-spacing: 0.4em;
      text-transform: uppercase;
      color: var(--c-gold);
      margin-bottom: 28px;
      display: flex;
      align-items: center;
      gap: 14px;
    }

.ab-book__eyebrow::before {
      content: '';
      width: 28px; height: 1px;
      background: rgba(121, 169, 194, 0.4);
    }

.ab-book__title {
      font-family: var(--f-serif);
      font-size: clamp(20px, 2.5vw, 30px);
      font-weight: 400;
      letter-spacing: 0.06em;
      color: var(--c-text);
      line-height: 1.7;
      margin-bottom: 8px;
    }

.ab-book__title-en {
      font-family: 'Cormorant Garamond', var(--f-en);
      font-size: 12px;
      font-style: italic;
      letter-spacing: 0.15em;
      color: rgba(57, 73, 83, 0.38);
      display: block;
      margin-bottom: 32px;
    }

.ab-book__body {
      font-family: var(--f-sans);
      font-size: 14px;
      line-height: 2.3;
      color: rgba(57, 73, 83, 0.68);
      letter-spacing: 0.05em;
      margin-bottom: 32px;
    }

.ab-book__meta {
      font-family: var(--f-sans);
      font-size: 11px;
      color: rgba(57, 73, 83, 0.4);
      letter-spacing: 0.06em;
      line-height: 1.8;
    }

/* ═══════════════════════════════════════════
       EMPATHY
    ═══════════════════════════════════════════ */
    .ab-empathy {
      padding: 104px 80px;
      background: var(--c-bg);
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-empathy__inner { max-width: 780px; margin: 0 auto; }

.ab-empathy__heading {
      font-family: var(--f-serif);
      font-size: clamp(22px, 2.8vw, 30px);
      font-weight: 400;
      letter-spacing: 0.06em;
      color: var(--c-text);
      line-height: 1.6;
      margin-bottom: 56px;
      text-align: center;
    }

.ab-empathy__heading em { font-style: normal; color: var(--c-rose); }

.ab-empathy__list {
      list-style: none;
      padding: 0;
      margin: 0 0 56px;
      display: flex;
      flex-direction: column;
    }

.ab-empathy__item {
      font-family: var(--f-sans);
      font-size: 14px;
      line-height: 1.8;
      color: var(--c-text);
      letter-spacing: 0.04em;
      padding: 22px 0 22px 28px;
      border-bottom: 1px solid rgba(121, 169, 194, 0.12);
      position: relative;
    }

.ab-empathy__item:first-child { border-top: 1px solid rgba(121, 169, 194, 0.12); }

.ab-empathy__item::before {
      content: '';
      position: absolute;
      left: 0;
      top: 50%;
      transform: translateY(-50%);
      width: 12px;
      height: 1px;
      background: var(--c-rose);
      opacity: 0.5;
    }

.ab-empathy__close {
      font-family: var(--f-serif);
      font-size: clamp(16px, 2vw, 22px);
      font-weight: 400;
      letter-spacing: 0.08em;
      color: var(--c-text);
      text-align: center;
      line-height: 1.8;
    }

/* ═══════════════════════════════════════════
       WHAT I DO
    ═══════════════════════════════════════════ */
    .ab-whatido {
      padding: 104px 80px;
      background: #fff;
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-whatido__inner { max-width: 1100px; margin: 0 auto; }

.ab-whatido__heading {
      font-family: var(--f-serif);
      font-size: clamp(24px, 3vw, 38px);
      font-weight: 400;
      letter-spacing: 0.06em;
      color: var(--c-text);
      line-height: 1.6;
      margin-bottom: 64px;
    }

.ab-whatido__heading em { font-style: normal; color: var(--c-rose); }

.ab-whatido__grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 2px;
    }

.ab-whatido__item {
      padding: 48px 40px;
      background: var(--c-bg);
    }

.ab-whatido__num {
      font-family: 'Cormorant Garamond', var(--f-en);
      font-size: 32px;
      font-style: italic;
      letter-spacing: 0.2em;
      color: var(--c-gold);
      display: block;
      margin-bottom: 16px;
    }

.ab-whatido__title {
      font-family: var(--f-serif);
      font-size: 20px;
      font-weight: 400;
      letter-spacing: 0.06em;
      color: var(--c-text);
      margin-bottom: 16px;
    }

.ab-whatido__desc {
      font-family: var(--f-sans);
      font-size: 13px;
      line-height: 2.1;
      color: rgba(57, 73, 83, 0.7);
      letter-spacing: 0.04em;
    }

/* ═══════════════════════════════════════════
       CLIENT RESULTS
    ═══════════════════════════════════════════ */
    .ab-results {
      padding: 104px 80px;
      background: var(--c-bg);
      border-top: 1px solid rgba(121, 169, 194, 0.1);
    }

.ab-results__inner { max-width: 1100px; margin: 0 auto; }

.ab-results__heading {
      font-family: var(--f-serif);
      font-size: clamp(24px, 3vw, 38px);
      font-weight: 400;
      letter-spacing: 0.06em;
      color: var(--c-text);
      line-height: 1.6;
      margin-bottom: 64px;
    }

.ab-results__heading em { font-style: normal; color: var(--c-rose); }

.ab-results__grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 24px;
    }

.ab-results__card {
      background: #fff;
      padding: 40px 36px;
      border: 1px solid rgba(121, 169, 194, 0.12);
    }

.ab-results__tag {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 9px;
      letter-spacing: 0.3em;
      text-transform: uppercase;
      color: var(--c-gold);
      display: block;
      margin-bottom: 20px;
    }

.ab-results__result {
      font-family: var(--f-serif);
      font-size: clamp(17px, 2vw, 22px);
      font-weight: 400;
      letter-spacing: 0.04em;
      color: var(--c-text);
      line-height: 1.7;
      margin-bottom: 16px;
    }

.ab-results__result em { font-style: normal; color: var(--c-rose); }

.ab-results__detail {
      font-family: var(--f-sans);
      font-size: 12px;
      line-height: 2;
      color: rgba(57, 73, 83, 0.55);
      letter-spacing: 0.04em;
    }

.ab-profile__results {
      margin-top: 32px;
      padding-top: 28px;
      border-top: 1px solid rgba(121, 169, 194, 0.15);
    }

.ab-profile__results-label {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 9px;
      letter-spacing: 0.3em;
      text-transform: uppercase;
      color: var(--c-gold);
      margin-bottom: 14px;
    }

.ab-profile__results-list {
      list-style: none;
      padding: 0;
      margin: 0 0 14px;
      display: flex;
      flex-direction: column;
      gap: 8px;
    }

.ab-profile__results-list li {
      font-family: var(--f-sans);
      font-size: 12px;
      line-height: 1.7;
      color: rgba(57, 73, 83, 0.65);
      letter-spacing: 0.04em;
      padding-left: 16px;
      position: relative;
    }

.ab-profile__results-list li::before {
      content: '';
      position: absolute;
      left: 0;
      top: 50%;
      transform: translateY(-50%);
      width: 8px;
      height: 1px;
      background: var(--c-gold);
      opacity: 0.6;
    }

.ab-profile__results-note {
      font-family: var(--f-sans);
      font-size: 11px;
      line-height: 1.8;
      color: rgba(57, 73, 83, 0.4);
      letter-spacing: 0.04em;
    }

.ab-results__intro {
      font-family: var(--f-sans);
      font-size: 13px;
      line-height: 2;
      color: rgba(57, 73, 83, 0.6);
      letter-spacing: 0.05em;
      margin-bottom: 36px;
    }

.ab-results__list {
      list-style: none;
      padding: 0;
      margin: 0 0 0;
      display: flex;
      flex-direction: column;
    }

.ab-results__list-item {
      font-family: var(--f-sans);
      font-size: 14px;
      line-height: 1.8;
      color: var(--c-text);
      letter-spacing: 0.04em;
      padding: 20px 0 20px 28px;
      border-bottom: 1px solid rgba(121, 169, 194, 0.12);
      position: relative;
    }

.ab-results__list-item:first-child { border-top: 1px solid rgba(121, 169, 194, 0.12); }

.ab-results__list-item::before {
      content: '';
      position: absolute;
      left: 0;
      top: 50%;
      transform: translateY(-50%);
      width: 12px;
      height: 1px;
      background: var(--c-gold);
      opacity: 0.7;
    }

.ab-results__note {
      font-family: var(--f-sans);
      font-size: 12px;
      line-height: 2.2;
      color: rgba(57, 73, 83, 0.5);
      letter-spacing: 0.04em;
      margin-top: 40px;
      text-align: center;
      padding-top: 40px;
      border-top: 1px solid rgba(121, 169, 194, 0.12);
    }

/* ═══════════════════════════════════════════
       AI PROOF
    ═══════════════════════════════════════════ */
    .ab-aiproof {
      padding: 104px 80px;
      background: var(--c-text);
      text-align: center;
    }

.ab-aiproof__inner { max-width: 780px; margin: 0 auto; }

.ab-aiproof .ab-section-label {
      color: rgba(121, 169, 194, 0.7);
      justify-content: center;
    }

.ab-aiproof .ab-section-label::after { display: none; }

.ab-aiproof__heading {
      font-family: var(--f-serif);
      font-size: clamp(26px, 3.5vw, 44px);
      font-weight: 400;
      letter-spacing: 0.06em;
      color: #f5efeb;
      line-height: 1.65;
      margin-bottom: 44px;
    }

.ab-aiproof__heading em { font-style: normal; color: #245AA5; }

.ab-aiproof__lead {
      font-family: var(--f-serif);
      font-size: clamp(14px, 1.8vw, 18px);
      font-weight: 400;
      letter-spacing: 0.06em;
      line-height: 2.2;
      color: rgba(250,248,244,0.72);
      margin-bottom: 36px;
    }

.ab-aiproof__note {
      font-family: var(--f-sans);
      font-size: 13px;
      line-height: 2.3;
      color: rgba(250,248,244,0.45);
      letter-spacing: 0.05em;
      max-width: 600px;
      margin: 0 auto;
    }

/* ═══════════════════════════════════════════
       NEW CTA
    ═══════════════════════════════════════════ */
    .ab-newcta {
      padding: 104px 80px;
      background: var(--c-bg);
      text-align: center;
    }

.ab-newcta__inner { max-width: 700px; margin: 0 auto; }

.ab-newcta__heading {
      font-family: var(--f-serif);
      font-size: clamp(20px, 2.4vw, 26px);
      font-weight: 400;
      letter-spacing: 0.06em;
      color: var(--c-text);
      line-height: 1.4;
      margin-bottom: 24px;
    }

.ab-newcta__lead {
      font-family: var(--f-sans);
      font-size: 13px;
      line-height: 2.2;
      color: rgba(57, 73, 83, 0.65);
      letter-spacing: 0.05em;
      margin-bottom: 52px;
    }

.ab-newcta__buttons {
      display: flex;
      justify-content: center;
      gap: 16px;
      flex-wrap: wrap;
    }

.ab-newcta__btn {
      font-family: var(--f-serif);
      font-size: 14px;
      letter-spacing: 0.1em;
      text-decoration: none;
      padding: 18px 40px;
      transition: all 0.25s;
    }

.ab-newcta__btn--primary {
      background: var(--c-rose);
      color: #fff;
    }

.ab-newcta__btn--primary:hover { opacity: 0.85; }

.ab-newcta__btn--secondary {
      background: transparent;
      color: var(--c-text);
      border: 1px solid rgba(57, 73, 83, 0.2);
    }

.ab-newcta__btn--secondary:hover { border-color: var(--c-rose); color: var(--c-rose); }

.ab-newcta__sub {
      margin-top: 24px;
      font-size: 0.82rem;
      color: #79A9C2;
      line-height: 1.9;
    }

.ab-newcta__sub a {
      color: var(--c-rose);
      text-decoration: underline;
      text-underline-offset: 3px;
    }

/* ═══════════════════════════════════════════
       UTILITIES
    ═══════════════════════════════════════════ */
    .ab-section-label {
      font-family: 'Josefin Sans', var(--f-en);
      font-size: 9px;
      letter-spacing: 0.4em;
      text-transform: uppercase;
      color: var(--c-gold);
      margin-bottom: 44px;
      display: flex;
      align-items: center;
      gap: 14px;
    }

.ab-section-label::after {
      content: '';
      flex: 1; height: 1px;
      background: linear-gradient(to right, rgba(121, 169, 194, 0.25), transparent);
    }

/* ============================================================
   Session Page extras (sr-*, session-hero__badge, etc.)
   — imported from real preshine.jp/session.html
============================================================ */
    /* ── Hero badge ── */
    .session-hero__badge {
      display: inline-block;
      font-size: 0.72rem;
      letter-spacing: .18em;
      color: var(--c-rose);
      border: 1px solid var(--c-rose);
      border-radius: 2em;
      padding: 4px 16px;
      margin-bottom: 18px;
      font-family: var(--f-sans);
    }

/* ── Hero sample link ── */
    .session-hero__sample-link {
      display: block;
      margin-top: 14px;
      background: none;
      border: none;
      font-size: 0.82rem;
      color: var(--c-rose);
      letter-spacing: .06em;
      cursor: pointer;
      text-decoration: underline;
      text-underline-offset: 3px;
      opacity: .85;
      transition: opacity .2s;
    }

.session-hero__sample-link:hover { opacity: 1; }

/* ── Flow photo background + glass ── */
    .session-flow {
      background: url('images/flatlay-02.jpg') center top / cover no-repeat !important;
      position: relative;
    }

.session-flow::before {
      content: '';
      position: absolute;
      inset: 0;
      background: rgba(255, 255, 255, 0.78);
      pointer-events: none;
    }

.session-flow__inner {
      position: relative;
      z-index: 1;
    }

.session-flow__glass {
      background: rgba(255, 255, 255, 0.9);
      backdrop-filter: blur(14px);
      -webkit-backdrop-filter: blur(14px);
      border: 1px solid rgba(255, 255, 255, 0.75);
      border-radius: 4px;
      padding: clamp(36px, 5vw, 60px) clamp(28px, 5vw, 56px);
    }

/* ── Voice stars ── */
    .voice__card-stars {
      font-size: 0.75rem;
      color: var(--c-gold);
      letter-spacing: 0.1em;
      margin-bottom: 2px;
    }

/* ── Hero catch line ── */
    .session-hero__catch {
      font-family: var(--f-serif);
      font-size: clamp(0.95rem, 1.8vw, 1.3rem);
      font-weight: 400;
      color: var(--c-text);
      line-height: 1.8;
      letter-spacing: 0.05em;
      margin: 14px 0 0;
      opacity: 0.88;
    }

/* ── Session Report Section ── */
    .sr-section {
      padding: 88px 24px;
      background: var(--c-bg);
    }

.sr-section__inner {
      max-width: 860px;
      margin: 0 auto;
      text-align: center;
    }

.sr-section__title {
      font-family: var(--f-serif);
      font-size: clamp(1.45rem, 3vw, 2rem);
      font-weight: 500;
      color: var(--c-text);
      line-height: 1.7;
      margin-bottom: 18px;
    }

.sr-section__title em { font-style: normal; color: var(--c-rose); }

.sr-section__desc {
      font-size: 0.93rem;
      line-height: 2;
      color: #7a6a6a;
      margin-bottom: 48px;
    }

/* ── Slide Deck ── */
    .sr-deck {
      display: flex;
      justify-content: center;
      gap: 10px;
      flex-wrap: wrap;
      margin-bottom: 40px;
    }

.sr-slide {
      width: 120px;
      background: #fff;
      border: 1px solid #E8F1F5;
      border-radius: 6px;
      padding: 16px 10px 14px;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 6px;
      transition: transform .25s, box-shadow .25s;
    }

.sr-slide__num {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.3rem;
      color: var(--c-rose);
      line-height: 1;
    }

.sr-slide__label {
      font-size: 0.65rem;
      letter-spacing: .12em;
      text-transform: uppercase;
      color: #245AA5;
    }

.sr-section__cta {
      border: 1px solid var(--c-rose);
      background: transparent;
      color: var(--c-rose);
      padding: 13px 36px;
      border-radius: 2em;
      font-size: 0.88rem;
      letter-spacing: .1em;
      cursor: pointer;
      transition: background .2s, color .2s;
    }

.sr-section__cta:hover {
      background: var(--c-rose);
      color: #fff;
    }

/* ── Modal ── */
    .sr-modal {
      display: none;
      position: fixed;
      inset: 0;
      z-index: 1000;
      align-items: center;
      justify-content: center;
    }

.sr-modal.is-open { display: flex; }

.sr-modal__overlay {
      position: absolute;
      inset: 0;
      background: rgba(48, 44, 43,.55);
      backdrop-filter: blur(4px);
    }

.sr-modal__box {
      position: relative;
      z-index: 1;
      width: 92vw;
      max-width: 960px;
      max-height: 88vh;
      background: #fff;
      border-radius: 8px;
      overflow: hidden;
      display: flex;
      flex-direction: column;
    }

.sr-modal__close {
      position: absolute;
      top: 12px;
      right: 16px;
      background: none;
      border: none;
      font-size: 1.6rem;
      color: #245AA5;
      cursor: pointer;
      z-index: 2;
      line-height: 1;
    }

.sr-modal__scroll {
      overflow-y: auto;
      overflow-x: hidden;
      flex: 1;
      padding: 12px;
      background: #cad4da;
    }

.sr-modal__iframe-wrap {
      transform-origin: top left;
    }

.sr-modal__iframe {
      width: 1130px;
      height: 2600px;
      border: none;
      display: block;
    }

/* ── Price includes ── */
    .session-price__includes {
      list-style: none;
      padding: 0;
      margin: 0 0 16px;
      display: flex;
      flex-direction: column;
      gap: 10px;
      text-align: left;
      font-size: 0.9rem;
      color: var(--c-text);
      line-height: 1.6;
    }

.session-price__includes li { display: flex; align-items: flex-start; gap: 10px; }

.session-price__check {
      color: #79A9C2;
      flex-shrink: 0;
      margin-top: 1px;
    }

.session-price__check--hi { color: var(--c-rose); font-weight: 700; }

/* ============================================================
   formrun-style form CTA card (replaces native <form>)
============================================================ */
.formrun-card {
  max-width: 480px;
  margin: 0 auto;
  text-align: center;
  background: var(--c-ivory);
  border: 1px solid var(--c-border);
  border-radius: 10px;
  padding: 48px 40px;
}
.formrun-card__icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #fff;
  border: none;
  box-shadow: 0 6px 18px rgba(121, 169, 194, 0.18);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 24px;
  color: var(--nb-blue);
}
.formrun-card__text {
  font-family: var(--f-sans);
  font-size: 13px;
  color: var(--c-text);
  line-height: 1.9;
  opacity: 0.8;
  margin-bottom: 28px;
}
.formrun-card__note {
  margin-top: 20px;
  font-family: var(--f-sans);
  font-size: 12px;
  color: var(--c-sub);
}
.formrun-card__note a { color: var(--c-rose); }

/* ============================================================
   About Page (ab-*) — mobile responsive
   — imported verbatim from real preshine.jp/profile.html
============================================================ */
    @media (max-width: 900px) {
      .ab-hero { grid-template-columns: 1fr; }
      .ab-hero__img-col { height: 220px; }
      .ab-hero__text-col { padding: 52px 28px 72px; }
      .ab-hero__catch { font-size: clamp(22px, 6vw, 30px); }

      .ab-stats__inner { grid-template-columns: 1fr 1fr; }
      .ab-stat { padding: 36px 16px; }
      .ab-stat:nth-child(2) { border-right: none; }
      .ab-stat:nth-child(3) { border-top: 1px solid rgba(121, 169, 194, 0.1); border-right: 1px solid rgba(121, 169, 194, 0.1); }
      .ab-stat:nth-child(4) { border-top: 1px solid rgba(121, 169, 194, 0.1); border-right: none; }

      .ab-quote { padding: 72px 28px; }


      .ab-week { padding: 72px 24px; }
      .ab-week-schedule { grid-template-columns: 1fr; gap: 2px; }
      .ab-wday {
        display: flex;
        flex-direction: row;
        align-items: stretch;
        padding: 0;
        text-align: left;
        min-height: 60px;
      }
      .ab-wday__en {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 48px;
        flex-shrink: 0;
        font-size: 11px;
        letter-spacing: 0.2em;
        margin-bottom: 0;
        border-right: 1px solid rgba(121, 169, 194, 0.12);
      }
      .ab-wday__ja { display: none !important; }
      .ab-wday__am, .ab-wday__pm {
        display: flex;
        flex-direction: column;
        justify-content: center;
        flex: 1;
        padding: 10px 12px;
      }
      .ab-wday__am {
        border-right: 1px solid rgba(121, 169, 194, 0.2);
      }
      .ab-wday__ampm {
        font-size: 8px;
        letter-spacing: 0.2em;
        color: rgba(57, 73, 83, 0.4);
        margin-bottom: 6px;
        display: block;
        margin-top: 0;
      }
      .ab-wday__tags {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 4px;
        margin-top: 0 !important;
      }
      .ab-wday__tag { font-size: 10px; padding: 4px 6px; white-space: nowrap; }
      .ab-wday--allday .ab-wday__am { flex: 2; border-right: none; }
      .ab-week-daily { flex-direction: column; align-items: flex-start; gap: 10px; }

      .ab-story { padding: 72px 28px; }
      .ab-story__grid { grid-template-columns: 1fr; gap: 56px; }
      .ab-story__photo-col { position: static; order: -1; }
      .ab-story__photo { aspect-ratio: 4/3; }
      .ab-timeline { padding-left: 24px; }
      .ab-tl-item::before { left: -28px; }

      .ab-family { padding: 72px 28px; }
      .ab-family__inner { grid-template-columns: 1fr; gap: 48px; }
      .ab-empathy { padding: 72px 28px; }
      .ab-mission { padding: 72px 28px; }
      .ab-whatido { padding: 72px 28px; }
      .ab-whatido__grid { grid-template-columns: 1fr; gap: 2px; }
      .ab-results { padding: 72px 28px; }
      .ab-results__grid { grid-template-columns: 1fr; gap: 16px; }
      .ab-aiproof { padding: 72px 28px; }
      .ab-newcta { padding: 72px 28px; }
      .ab-newcta__heading { font-size: 20px; }
      .ab-newcta__buttons { flex-direction: column; align-items: center; }
      .ab-newcta__btn { width: 100%; max-width: 320px; text-align: center; }
      .ab-foryou { padding: 72px 28px; }
      .ab-cta { padding: 72px 24px; }

      .ab-achieve { padding: 72px 28px; }

      .ab-book { padding: 72px 28px; }
      .ab-book__inner { grid-template-columns: 1fr; gap: 40px; }
      .ab-book__cover-wrap { max-width: 220px; }
    }

/* ============================================================
   2026-07-09 モバイル修正まとめ
============================================================ */
/* --pad（112px）はデスクトップ向け大余白。モバイルで詰まりすぎ・
   はみ出しの原因になっていたため縮小 */
@media (max-width: 768px) {
  :root { --pad: 24px; }
}

/* ボタンが横幅の狭いカード内で右にはみ出すのを防ぐ */
@media (max-width: 480px) {
  .formrun-card .btn,
  .contact-form__submit .btn,
  .session-price__card .btn {
    width: 100%;
    justify-content: center;
    white-space: normal;
  }
}

@media (max-width: 480px) {
  .ab-hero__catch { font-size: 26px; line-height: 1.5; }
  .ab-hero__eyebrow { margin-bottom: 24px; }
}

/* .ab-profile / .ab-achieve モバイル対応（追記漏れ分） — 本物より */
@media (max-width: 768px) {
  .ab-profile { padding: 72px 28px; }
  .ab-profile__inner { grid-template-columns: 1fr; gap: 36px; }
  .ab-profile__photo-col { max-width: 140px; margin: 0 auto; }
  .ab-profile__photo { max-width: 140px; aspect-ratio: 1/1; object-position: center 20%; }
  .ab-achieve__item { width: 100%; }
  .journaling-flow { grid-template-columns: 1fr; }
}

/* ab-hero がスマホで固定ヘッダーの下に重なって見える問題を解消 */
@media (max-width: 900px) {
  .ab-hero { padding-top: 81px; }
}

/* 光沢アニメーション付きバッジ（Pluna Blue） */
.badge--shine {
  background: linear-gradient(90deg, #5c8fa8 0%, var(--c-rose) 25%, #cdeaf3 50%, var(--c-rose) 75%, #5c8fa8 100%);
  background-size: 300% auto;
  animation: plunaShimmer 7s linear infinite;
}
@keyframes plunaShimmer {
  0% { background-position: 200% center; }
  100% { background-position: -200% center; }
}

/* ============================================================
   Global Header Nav — always a hamburger trigger + drawer overlay
   （画面幅を問わず、通常時はアイコンのみ表示。クリックで一覧を展開）
============================================================ */
.nav-toggle {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: flex-end;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  z-index: 1001;
}
.nav-toggle__label { display: none; }

.site-nav__backdrop {
  position: fixed;
  inset: 0;
  background: rgba(48, 44, 43, 0.28);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.4s ease;
  z-index: 999;
}
.site-nav__backdrop.is-open { opacity: 1; pointer-events: auto; }

.site-nav {
  position: fixed;
  top: 0; right: 0;
  width: 80vw;
  max-width: 360px;
  height: 100vh;
  margin: 0;
  background: rgba(229, 236, 241, 0.98);
  border-left: 1px solid rgba(121, 169, 194, 0.4);
  box-shadow: -16px 0 44px rgba(48, 44, 43, 0.16);
  flex-direction: column;
  justify-content: center;
  align-items: center;
  overflow-y: auto;
  transform: translateX(100%);
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 1000;
}
.site-nav.is-open { transform: translateX(0); }
.site-header--white .site-nav { background: rgba(255, 255, 255, 0.98); }

.site-nav__inner { flex-direction: column; align-items: center; }

.site-nav__head { display: block; margin-bottom: 40px; }
.site-nav__head img { width: 120px; }

.site-nav__list {
  flex-direction: column;
  gap: 0;
  width: 100%;
  text-align: center;
}
.site-nav__list > li {
  width: 100%;
  max-width: 240px;
  margin: 0 auto;
  padding: 15px 0;
  border-bottom: 1px solid rgba(121, 169, 194, 0.22);
}
.site-nav__list > li:first-child {
  border-top: 1px solid rgba(121, 169, 194, 0.22);
}
.site-header--white .site-nav__list > li,
.site-header--white .site-nav__list > li:first-child {
  border-color: rgba(48, 44, 43, 0.12);
}

.site-nav__tagline {
  display: block;
  margin-top: 40px;
  font-size: 10px;
  letter-spacing: 0.2em;
  color: var(--c-sub);
  font-family: var(--f-en);
  font-style: italic;
}
.site-header--white .site-nav__tagline { color: var(--nb-sub); }

.site-nav__link { font-size: 13px; letter-spacing: 0.22em; }
.site-nav__item--premium { margin-top: 8px; }

.site-nav__link--trial {
  flex-direction: row;
  justify-content: center;
  gap: 12px;
}
.site-nav__trial-badge {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid rgba(121, 169, 194, 0.45);
  background: rgba(121, 169, 194, 0.08);
  color: var(--nb-blue);
  font-family: var(--f-sans);
  font-size: 9px;
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1.35;
}
.site-nav__trial-badge.badge--shine {
  border-color: transparent;
  color: #fff;
  background: linear-gradient(90deg, #5c8fa8 0%, var(--c-rose) 25%, #cdeaf3 50%, var(--c-rose) 75%, #5c8fa8 100%);
  background-size: 300% auto;
  animation: plunaShimmer 7s linear infinite;
}
.site-nav__trial-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.site-nav__link--trial .site-nav__ja { color: var(--nb-blue); }
.site-nav__link--trial .site-nav__en {
  font-family: var(--f-sans);
  font-size: 9.5px;
  letter-spacing: 0.08em;
  color: var(--nb-blue);
  opacity: 0.6;
  margin-top: 1px;
}
.site-nav__link--trial:hover .site-nav__ja { color: var(--nb-blue); }
.site-nav__link--trial:hover .site-nav__trial-badge {
  background: rgba(121, 169, 194, 0.14);
  border-color: var(--nb-blue);
}
.site-nav__link--trial::after { background: var(--nb-blue); }

@media (min-width: 1025px) {
  .site-nav { width: 420px; }
}

/* ============================================================
   Global Header Nav — 2026-09-27追記
   PC幅（1024px〜）は常時インラインの横並びメニューに戻す。
   ハンバーガー＋ドロワーはスマホ・タブレット幅のみ維持。
============================================================ */
@media (min-width: 1024px) {
  .nav-toggle { display: none; }
  .site-nav__backdrop { display: none; }
  .site-nav {
    position: static;
    width: auto;
    max-width: none;
    height: auto;
    margin: 0 0 0 auto;
    background: none;
    border-left: none;
    box-shadow: none;
    transform: none;
    transition: none;
    overflow: visible;
    z-index: auto;
  }
  .site-nav__inner { flex-direction: row; align-items: center; }
  .site-nav__head { display: none; }
  .site-nav__list {
    flex-direction: row;
    gap: 36px;
    width: auto;
    text-align: left;
  }
  .site-nav__list > li {
    width: auto;
    max-width: none;
    margin: 0;
    padding: 0;
    border: none !important;
  }
  .site-nav__tagline { display: none; }
  .site-nav__link { font-size: 12px; letter-spacing: 0.12em; }
  .site-nav__link--trial { flex-direction: row; gap: 8px; }
  .site-nav__trial-badge { width: 32px; height: 32px; font-size: 8px; }
}

/* ============================================================
   ABOUT — Pluna という名前に込めた3つの意味
============================================================ */
.ab-name {
  padding: 120px var(--pad);
  background: var(--c-ivory);
  text-align: center;
}
.ab-name__inner {
  max-width: 520px;
  margin: 0 auto;
}
.ab-name__rule {
  width: 32px;
  height: 1px;
  margin: 0 auto 32px;
  background: #5E6F7A;
  opacity: 0.55;
}
.ab-name__heading {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 30px);
  font-weight: 500;
  line-height: 1.7;
  letter-spacing: 0.03em;
  color: var(--nb-black);
  margin-bottom: 56px;
}
.ab-name__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 48px;
  max-width: 880px;
  margin: 0 auto 72px;
  text-align: center;
}
.ab-name__item {
  padding: 36px 24px;
  border: 1px solid rgba(121, 169, 194, 0.3);
}
.ab-name__num {
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.1em;
  color: #5E6F7A;
  opacity: 0.75;
  margin-bottom: 14px;
}
.ab-name__word-big {
  font-family: var(--f-serif);
  font-size: clamp(18px, 2.2vw, 21px);
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--nb-black);
  margin-bottom: 14px;
}
.ab-name__word-rule {
  width: 20px;
  height: 1px;
  margin: 0 auto 16px;
  background: #5E6F7A;
  opacity: 0.4;
}
.ab-name__word-text {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.8;
  color: var(--c-text);
}
.ab-name__text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: var(--c-text);
  margin-bottom: 24px;
}
.ab-name__text--spaced {
  margin-top: 36px;
  margin-bottom: 36px;
}
.ab-name__highlight {
  font-family: var(--f-serif);
  font-size: clamp(19px, 2.4vw, 23px);
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.02em;
  color: #5E6F7A;
  margin: 48px auto 48px;
  max-width: 440px;
}
@media (max-width: 900px) {
  .ab-name__grid { grid-template-columns: 1fr; gap: 44px; max-width: 320px; }
}
@media (max-width: 600px) {
  .ab-name { padding: 96px 28px 100px; }
  .ab-name__heading { margin-bottom: 44px; }
  .ab-name__grid { margin-bottom: 56px; }
  .ab-name__word-big { font-size: 19px; }
  .ab-name__text--spaced { margin-top: 32px; margin-bottom: 32px; }
  .ab-name__highlight { margin: 36px auto 36px; }
}

/* ============================================================
   WHAT I BELIEVE — about.html／4つの景色でリズムをつくる
   白＋写真（導入） → 白＋2カラム（対話） → 色面＋循環図（思想） → 白（フィナーレ）
============================================================ */

/* 01｜INTRO — 大きな見出し＋写真を一つのまとまりに */
.believe-hero {
  padding: 150px var(--pad) 120px;
  background: var(--c-bg);
}
.believe-hero__grid {
  display: grid;
  grid-template-columns: 1.25fr 1fr;
  align-items: center;
  gap: 72px;
  max-width: 1140px;
  margin: 0 auto;
}
.believe-hero__eyebrow { text-align: left; margin-bottom: 20px; }
.believe-hero__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 2.8vw, 32px);
  font-weight: 500;
  line-height: 1.55;
  letter-spacing: 0.02em;
  color: var(--nb-black);
  margin-bottom: 32px;
}
.believe-hero__lead p {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.95;
  color: var(--c-text);
  margin-bottom: 24px;
}
.believe-hero__lead p:last-child { margin-bottom: 0; }
.believe-hero__photo img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  display: block;
}

/* 02｜APPROACH — TALK & QUESTION / JOURNALING を、What I Believeの一部として統合 */
.believe-dialog__body {
  max-width: 900px;
  margin: 88px auto 0;
  padding-top: 64px;
  border-top: 1px solid rgba(121, 169, 194, 0.18);
}
.believe-dialog__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.4vw, 26px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  text-align: center;
  margin: 0 0 28px;
}
.believe-dialog__intro {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 2;
  color: var(--c-text);
  text-align: center;
  max-width: 460px;
  margin: 0 auto 56px;
}
.believe-dialog__cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  margin-bottom: 40px;
}
.believe-dialog__card {
  padding: 40px 36px;
  background: rgba(121, 169, 194, 0.04);
  border: 1px solid rgba(121, 169, 194, 0.16);
  border-radius: 4px;
}
.believe-dialog__name {
  display: block;
  font-family: var(--f-en);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.22em;
  color: var(--nb-blue);
  margin-bottom: 14px;
}
.believe-dialog__desc {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.95;
  color: var(--c-text);
}
.believe-dialog__relation {
  font-family: var(--f-serif);
  font-size: clamp(15px, 1.8vw, 17px);
  line-height: 1.9;
  letter-spacing: 0.02em;
  color: var(--nb-blue);
  text-align: center;
}

/* 04｜LAST MESSAGE — フィナーレ、1つのメッセージだけ強く残す */
.believe-final {
  padding: 150px var(--pad) 160px;
  background: var(--c-bg);
  text-align: center;
}
.believe-final__rule {
  width: 1px;
  height: 56px;
  background: var(--nb-blue);
  opacity: 0.4;
  margin: 0 auto 40px;
}
.believe-final__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 3vw, 32px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin-bottom: 24px;
}
.believe-final__text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.9;
  color: var(--c-sub);
  margin-bottom: 36px;
}

@media (max-width: 900px) {
  .believe-hero__grid { grid-template-columns: 1fr; gap: 40px; }
  .believe-hero__eyebrow,
  .believe-hero__title,
  .believe-hero__lead { text-align: center; }
  .believe-dialog__cards { grid-template-columns: 1fr; gap: 24px; }
  .believe-dialog__body { margin-top: 64px; padding-top: 48px; }
}
@media (max-width: 600px) {
  .believe-hero { padding: 110px 28px 96px; }
  .believe-hero__title { font-size: 22px; line-height: 1.6; }
  .believe-dialog__card { padding: 32px 28px; }
  .believe-final { padding: 100px 28px 120px; }
}

/* ============================================================
   FUTURE VISION — services.html／こんなこれからを、一緒につくっていきます。
============================================================ */
.svc-future {
  position: relative;
  padding: 140px var(--pad) 130px;
  background: var(--c-bg);
  overflow: hidden;
}
.svc-future__photo {
  position: absolute;
  top: 0;
  right: 0;
  width: 42%;
  height: 100%;
  z-index: 0;
}
.svc-future__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.45;
}
.svc-future__photo::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to right,
    var(--c-bg) 0%,
    rgba(255, 255, 255, 0.75) 30%,
    rgba(255, 255, 255, 0.25) 65%,
    rgba(255, 255, 255, 0) 100%);
}
.svc-future__inner {
  position: relative;
  z-index: 1;
  max-width: 600px;
}
.svc-future__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 3vw, 32px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 20px;
}
.svc-future__subtitle {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.9;
  color: var(--c-sub);
  max-width: 460px;
  margin-bottom: 48px;
}
.svc-future__cta-note {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.8;
  color: var(--nb-black);
  margin-bottom: 20px;
}
.svc-future__list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 48px;
}
.svc-future__card {
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  max-width: 480px;
  padding: 16px 22px;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: 8px;
}
.svc-future__card--in {
  background: #FAFAF9;
}
.svc-future__check {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(143, 175, 163, 0.16);
  color: #8FAFA3;
  font-size: 10px;
}
.svc-future__card p {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.55;
  color: #333333;
}
@media (max-width: 900px) {
  .svc-future__photo { width: 55%; }
}
@media (max-width: 640px) {
  .svc-future { padding: 96px 24px; }
  .svc-future__photo { display: none; }
  .svc-future__title { margin-bottom: 48px; }
  .svc-future__card,
  .svc-future__card--in { max-width: 100%; }
  .svc-future__list { gap: 16px; margin-bottom: 48px; }
}

/* ============================================================
   SERVICE MENU — services.html／PLUNA PROGRAM・PERSONAL COACHING 一覧
============================================================ */
.svc-menu {
  padding: 96px var(--pad);
  background: linear-gradient(180deg, #E8F1F5 0%, #EFF6F8 100%);
}
.svc-menu__head {
  max-width: 480px;
  margin: 0 auto 56px;
  text-align: center;
}
.svc-menu__title {
  font-family: var(--f-serif);
  font-size: clamp(22px, 2.8vw, 30px);
  font-weight: 500;
  letter-spacing: 0.03em;
  color: var(--nb-black);
  margin: 14px 0 0;
}
.svc-menu__audience {
  font-family: var(--f-sans);
  font-size: 12.5px;
  letter-spacing: 0.03em;
  color: var(--c-sub);
  margin: 12px 0 0;
}
.svc-menu__title--en {
  font-family: var(--f-en);
  font-style: normal;
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--c-gold);
  margin-top: 0;
}
.svc-menu__row-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 48px;
  max-width: 1080px;
  margin: 0 auto;
}
.svc-menu__col {
  width: 100%;
  text-align: left;
  text-decoration: none;
  display: flex;
  flex-direction: column;
}
.svc-menu__thumb {
  width: 68%;
  max-width: 232px;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  margin: 0 auto 17px;
  animation: photoDrift 13s ease-in-out infinite alternate;
}
.svc-menu__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}
.svc-menu__col:hover .svc-menu__thumb img { transform: scale(1.04); }
.svc-menu__line {
  width: 28px;
  height: 1px;
  margin: 0 auto 10px;
  background: var(--nb-blue);
  opacity: 0.45;
}
.svc-menu__num {
  font-family: var(--f-en);
  font-size: 24px;
  letter-spacing: 0.02em;
  color: var(--nb-black);
  margin-bottom: 4px;
}
.svc-menu__num-en {
  font-style: italic;
  text-transform: none;
  color: var(--nb-black);
  opacity: 1;
}
.svc-menu__name {
  font-family: var(--f-sans);
  font-size: 13px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 0.05em;
  color: var(--c-sub);
  margin-bottom: 28px;
}
.svc-menu__heading {
  font-family: var(--f-sans);
  font-size: 14.5px;
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: 0.02em;
  color: var(--c-sub);
  margin-bottom: 18px;
}
.svc-menu__desc {
  font-family: var(--f-sans);
  font-size: 13.5px;
  line-height: 1.85;
  color: var(--c-sub);
  margin-bottom: 14px;
}
.svc-menu__view-more {
  font-size: 11px;
  padding: 10px 28px;
  margin-top: auto;
  align-self: flex-start;
}
@media (max-width: 900px) {
  .svc-menu__row-list { grid-template-columns: 1fr; gap: 64px; max-width: 340px; }
}
@media (max-width: 768px) {
  .svc-menu { padding: 72px 24px 0; }
  .svc-menu__col { width: 100%; max-width: 340px; }
  .svc-menu__thumb {
    max-width: 260px;
    margin-top: 0;
  }
}

/* ── PLUNA PROGRAM の見出し前カテゴリ表記の余白調整 ── */
.services-flow__block .services-flow__offer-name {
  margin-top: -6px;
}
.services-flow__payoff {
  font-family: var(--f-serif);
  font-size: 15.5px;
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1.8;
  color: var(--nb-blue);
  margin: 4px 0 24px;
}

/* ── TRIAL SESSION（PERSONAL COACHINGへの静かな入口） ── */
.pc-trial {
  margin-top: 64px;
  padding-top: 48px;
  border-top: 1px solid rgba(121, 169, 194, 0.2);
}

/* ── TOPページ：TRIAL SESSION（独立セクション） ── */
.top-trial {
  padding: 100px var(--pad) 120px;
  background: var(--c-bg);
  border-top: 1px solid var(--c-border);
}
.top-trial .pc-trial {
  max-width: 900px;
  margin: 0 auto;
  padding-top: 0;
  border-top: none;
}
@media (max-width: 600px) {
  .top-trial { padding: 72px 24px 96px; }
}
.pc-trial__eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--c-gold);
  margin-bottom: 32px;
  text-align: left;
}
.pc-trial__eyebrow::after {
  content: '✦';
  font-size: 10px;
  color: var(--nb-blue);
  opacity: 0.5;
  text-transform: none;
  letter-spacing: 0;
}
.pc-trial__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 64px;
  align-items: start;
  text-align: left;
}
.pc-trial__heading {
  font-family: var(--f-serif);
  font-size: clamp(23px, 2.8vw, 29px);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.02em;
  color: var(--nb-black);
  margin-bottom: 30px;
}
.pc-trial__text {
  font-family: var(--f-sans);
  font-size: 15px;
  line-height: 1.95;
  color: var(--c-text);
}
.pc-trial__text p {
  margin-top: 0;
  margin-bottom: 22px;
}
.pc-trial__text p:last-child { margin-bottom: 0; }
.pc-trial__em {
  color: var(--nb-blue);
  font-weight: 500;
}
.pc-trial__aside {
  margin-top: 28px;
  padding: 32px 28px;
  background: rgba(121, 169, 194, 0.045);
  border-left: 2px solid rgba(121, 169, 194, 0.35);
}
.pc-trial__label-en {
  display: block;
  font-family: var(--f-en);
  font-size: 12px;
  font-style: italic;
  letter-spacing: 0.1em;
  color: var(--nb-blue);
  opacity: 0.8;
  margin-bottom: 16px;
}
.pc-trial__offer-meta {
  font-family: var(--f-sans);
  font-size: 12px;
  letter-spacing: 0.03em;
  color: var(--c-sub);
  margin-bottom: 26px;
  padding-bottom: 22px;
  border-bottom: 1px solid rgba(121, 169, 194, 0.18);
}
.pc-trial__book {
  display: block;
  text-align: center;
  font-family: var(--f-sans);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--nb-blue-dk, var(--nb-blue));
  text-decoration: none;
  background: rgba(121, 169, 194, 0.08);
  border: 1px solid rgba(121, 169, 194, 0.5);
  border-radius: 4px;
  padding: 14px 18px;
  margin-bottom: 16px;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.pc-trial__book:hover {
  background: rgba(121, 169, 194, 0.16);
  border-color: var(--nb-blue);
  color: var(--nb-blue);
}
.pc-trial__cta {
  display: inline-block;
  font-family: var(--f-sans);
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.02em;
  color: var(--c-sub);
  text-decoration: none;
  border-bottom: 1px solid rgba(121, 169, 194, 0.25);
  padding-bottom: 3px;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.pc-trial__cta:hover {
  color: var(--nb-blue);
  border-color: var(--nb-blue);
}

/* ── TOPページ：TRIAL SESSION 写真パネル版 ── */
.top-trial--photo {
  padding: 0;
  background: transparent;
  border-top: none;
}
.pc-trial--photo {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  min-height: 460px;
  background: #F4F4F4;
  border-top: none;
  margin-top: 0;
  padding-top: 0;
}
.pc-trial--photo .pc-trial__photo {
  position: relative;
  overflow: hidden;
}
.pc-trial--photo .pc-trial__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.pc-trial--photo .pc-trial__panel {
  padding: 80px 64px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: left;
}
.pc-trial__rule {
  width: 40px;
  height: 1px;
  background: rgba(121, 169, 194, 0.4);
  margin: 0 0 32px;
}
.pc-trial__badge {
  display: inline-block;
  width: fit-content;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.12em;
  color: #fff;
  padding: 6px 18px;
  border-radius: 20px;
  margin-bottom: 16px;
}
.pc-trial__view-more {
  margin-top: 28px;
  align-self: flex-start;
}
@media (max-width: 900px) {
  .pc-trial--photo { grid-template-columns: 1fr; min-height: 0; }
  .pc-trial--photo .pc-trial__photo { height: 280px; order: 1; }
  .pc-trial--photo .pc-trial__panel { padding: 56px 28px; order: 2; }
}
@media (max-width: 900px) {
  .pc-trial { margin-top: 48px; padding-top: 32px; }
  .pc-trial__grid { grid-template-columns: 1fr; gap: 32px; }
  .pc-trial__heading { font-size: clamp(21px, 5vw, 25px); }
  .pc-trial__aside { margin-top: 0; }
}

/* ── PERSONAL COACHINGで大切にする3つ（行き来する関係） ── */
.pc-values {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 20px;
}
.pc-values__item {
  flex: 1 1 0;
  min-width: 0;
}
.pc-values__num {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.1em;
  color: #5E6F7A;
  opacity: 0.75;
  margin-bottom: 10px;
}
.pc-values__label {
  font-family: var(--f-serif);
  font-size: 16px;
  font-weight: 600;
  color: var(--nb-black);
  margin-bottom: 14px;
}
.pc-values__text {
  font-family: var(--f-sans);
  font-size: 12.5px;
  line-height: 1.85;
  color: var(--c-sub);
}
.pc-values__arrow {
  flex: 0 0 auto;
  font-family: var(--f-en);
  font-size: 16px;
  color: var(--nb-blue);
  opacity: 0.5;
  padding-top: 30px;
}
@media (max-width: 768px) {
  .pc-values { flex-direction: column; align-items: center; gap: 40px; }
  .pc-values__arrow { transform: rotate(90deg); padding-top: 0; }
}

.support-flow__loop {
  margin-top: 18px;
  font-family: var(--f-sans);
  font-size: 12px;
  line-height: 1.7;
  color: var(--nb-blue);
  opacity: 0.8;
}

/* ============================================================
   NOTE COLUMN — note連携のコラムカード（TOP／記事一覧ページ共通）
============================================================ */
.note-section {
  padding: 120px var(--pad);
  background: var(--c-bg);
  text-align: center;
}
.note-section__title {
  font-family: var(--f-serif);
  font-size: clamp(24px, 2.8vw, 30px);
  font-weight: 500;
  color: var(--nb-black);
  margin: 14px 0 64px;
}
.note-section__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
  max-width: 1000px;
  margin: 0 auto;
  text-align: left;
}
.note-section__grid--dummy {
  opacity: 0.55;
}
.note-card {
  display: block;
  text-decoration: none;
  color: inherit;
}
.note-card--dummy {
  cursor: default;
  pointer-events: none;
}
.note-card__thumb {
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  margin-bottom: 18px;
  background: #F4F4F4;
}
.note-card__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}
.note-card:hover .note-card__thumb img {
  transform: scale(1.04);
}
.note-card__date {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--c-sub);
  margin-bottom: 10px;
}
.note-card__title {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.75;
  color: var(--nb-black);
}
.note-section__empty {
  font-family: var(--f-sans);
  font-size: 13.5px;
  color: var(--c-sub);
  grid-column: 1 / -1;
  text-align: center;
  padding: 40px 0;
}
.note-section__more {
  margin-top: 56px;
}
@media (max-width: 768px) {
  .note-section { padding: 72px 24px; }
  .note-section__grid { grid-template-columns: 1fr; gap: 40px; }
}

/* ============================================================
   TOP REDESIGN ADDITIONS — 2026-09-27
   CHANGEの情景リスト／SERVICESの③持ち帰るもの／ABOUT／TRIAL・CTA(LINE)
============================================================ */
.top-change__scenes {
  text-align: left;
  max-width: 560px;
  margin: 0 auto 48px;
}
.top-change__scene {
  display: flex;
  gap: 16px;
  padding: 15px 0;
  border-bottom: 1px solid rgba(121, 169, 194, 0.18);
}
.top-change__scene:last-child { border-bottom: none; }
.top-change__check {
  flex-shrink: 0;
  color: var(--nb-blue);
  padding-top: 3px;
}
.top-change__check svg { display: block; }
.top-change__scene-text {
  font-family: var(--f-sans);
  font-size: 14px;
  line-height: 1.85;
  color: var(--c-text);
  margin: 0;
}

.svc-menu__takeaway {
  font-family: var(--f-serif);
  font-size: 13px;
  font-style: italic;
  color: var(--nb-blue);
  line-height: 1.7;
  margin: 0 0 18px;
}

.top-about {
  padding: 140px var(--pad);
  background: var(--c-ivory);
}
.top-about__head {
  text-align: center;
  max-width: 560px;
  margin: 0 auto 64px;
}
.top-about__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.3vw, 26px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 28px;
}
.top-about__lead {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.95;
  color: var(--c-text);
  margin: 0;
}
/* TOPのABOUTだけ写真を小さめに（about.html本体のプロフィール写真サイズは変更しない） */
.top-about .ab-profile__inner { grid-template-columns: 140px 1fr; }

.top-trial-cta {
  padding: 140px var(--pad);
  background: var(--c-bg);
  text-align: center;
}
.top-trial-cta__inner {
  max-width: 520px;
  margin: 0 auto;
}
.top-trial-cta__title {
  font-family: var(--f-serif);
  font-size: clamp(20px, 2.3vw, 26px);
  font-weight: 500;
  line-height: 1.6;
  color: var(--nb-black);
  margin: 16px 0 28px;
}
.top-trial-cta__lead {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 1.95;
  color: var(--c-text);
  margin: 0 0 20px;
}
.top-trial-cta__desc {
  font-family: var(--f-sans);
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--c-sub);
  margin: 0 0 40px;
}
.top-trial-cta__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
}
.top-trial-cta__qr {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin: 4px 0;
}
.top-trial-cta__qr img {
  display: block;
  border: 1px solid rgba(121, 169, 194, 0.25);
  border-radius: 4px;
}
.top-trial-cta__qr-label {
  font-family: var(--f-sans);
  font-size: 11.5px;
  letter-spacing: 0.05em;
  color: var(--c-sub);
  margin: 0;
}
.top-trial-cta__sub-link {
  font-family: var(--f-sans);
  font-size: 13px;
  letter-spacing: 0.08em;
  color: var(--c-rose);
  text-decoration: none;
  border-bottom: 1px solid rgba(121, 169, 194, 0.5);
  padding-bottom: 3px;
  transition: border-color 0.2s, opacity 0.2s;
}
.top-trial-cta__sub-link:hover { border-color: var(--c-rose); opacity: 0.75; }
.top-trial-cta__sub-link span { display: inline-block; transition: transform 0.2s; }
.top-trial-cta__sub-link:hover span { transform: translateX(3px); }

@media (max-width: 768px) {
  .top-about { padding: 96px 24px; }
  .top-trial-cta { padding: 96px 24px; }
  .dialogue-way__stages[style*="repeat(2"] { grid-template-columns: 1fr !important; }
}

/* METHOD短縮版（2026-09-28）: 見出し＋4つの言葉のみ、説明文なし */
.dialogue-way--compact { padding: 104px var(--pad); }
.dialogue-way__stages--compact {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 14px 36px;
  margin: 8px 0 0;
}
.dialogue-way__stages--compact .dialogue-way__stage-name { margin: 0; }
@media (max-width: 768px) {
  .dialogue-way--compact { padding: 72px 24px; }
  .dialogue-way__stages--compact { gap: 10px 24px; }
}

/* LIFE CLOSING（2026-09-28）: 積み重ねが人生になる、という締めくくり */
.top-life-closing {
  background: var(--c-bg);
  padding: 120px var(--pad) 104px;
  text-align: center;
}
.top-life-closing__inner {
  max-width: 480px;
  margin: 0 auto;
}
.top-life-closing__block {
  font-family: var(--f-sans);
  font-size: 14.5px;
  line-height: 2;
  color: var(--c-text);
  margin: 0 0 32px;
}
.top-life-closing__block:last-child { margin-bottom: 0; }
.top-life-closing__block--em {
  font-family: var(--f-serif);
  font-size: clamp(18px, 2vw, 21px);
  line-height: 1.9;
  letter-spacing: 0.03em;
  color: var(--nb-blue);
}
@media (max-width: 768px) {
  .top-life-closing { padding: 88px 24px 72px; }
}
