/* ===================================================================
   THE REV — Top Page  |  Tone & Manner stylesheet
   白 + 木目 / ダークグレー / 明朝 × 細ゴシック / 最大余白
   =================================================================== */

:root{
  /* --- color --- */
  --paper:      #FBFAF7;   /* crisp warm white */
  --paper-2:    #F4F0E8;   /* soft sand */
  --paper-3:    #EFE9DD;   /* deeper sand */
  --wood:       #C2A982;   /* wood accent */
  --wood-deep:  #9C8160;   /* deep wood */
  --ink:        #232220;   /* near-black dark gray (NOT #000) */
  --ink-soft:   #5C574F;   /* muted body */
  --ink-faint:  #968F82;   /* captions */
  --line:       #E4DDCF;   /* hairline */
  --line-soft:  #ECE7DB;
  --charcoal:   #26241F;   /* CTA fill */
  --cta-gold:   #D4BA8F;   /* brighter gold for CTA pull */
  --cta-gold-h: #E0C8A1;   /* CTA hover */

  /* --- type --- */
  --serif: "Shippori Mincho", "Hiragino Mincho ProN", serif;
  --sans:  "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", sans-serif;
  --latin: "Jost", sans-serif;

  /* --- rhythm (generous: 2-3x normal) --- */
  --sec-pad: clamp(96px, 13vw, 200px);
  --gutter:  clamp(20px, 6vw, 96px);
  --maxw:    1180px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:400;
  font-size:16px;
  line-height:1.95;
  letter-spacing:.02em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{ display:block; max-width:100%; }

/* ---------- shared rhythm ---------- */
.wrap{ width:min(var(--maxw), 92vw); margin-inline:auto; }
.section{ padding-block:var(--sec-pad); position:relative; }
.section + .section{ border-top:0; }

/* eyebrow latin label */
.eyebrow{
  font-family:var(--latin);
  font-weight:300;
  font-size:clamp(11px,1vw,13px);
  letter-spacing:.42em;
  text-transform:uppercase;
  color:var(--wood-deep);
  margin:0 0 clamp(22px,3vw,40px);
  display:flex; align-items:center; gap:16px;
}
.eyebrow::before{
  content:""; width:34px; height:1px; background:var(--wood);
  display:inline-block; flex:0 0 auto;
}
.eyebrow.center{ justify-content:center; }
.eyebrow.center::after{
  content:""; width:34px; height:1px; background:var(--wood); display:inline-block;
}

/* headings */
.serif{ font-family:var(--serif); font-weight:500; }
h1,h2,h3{ font-family:var(--serif); font-weight:500; color:var(--ink); margin:0; }
.h-display{
  font-size:clamp(30px,5.2vw,60px);
  line-height:1.5;
  letter-spacing:.03em;
  font-weight:500;
}
.h-sec{
  font-size:clamp(25px,3.6vw,42px);
  line-height:1.55;
  letter-spacing:.04em;
}
.h-sub{
  font-size:clamp(19px,2.1vw,26px);
  line-height:1.7;
  letter-spacing:.06em;
}
.lead{
  font-size:clamp(15px,1.25vw,17px);
  color:var(--ink-soft);
  line-height:1.8;
  letter-spacing:.05em;
  font-weight:400;
}
.caption{ color:var(--ink-faint); font-size:13px; letter-spacing:.08em; line-height:1.9; }

/* ---------- buttons ---------- */
.cta{
  display:inline-flex; align-items:center; gap:14px;
  font-family:var(--sans); font-weight:500;
  font-size:clamp(15px,1.2vw,18px); letter-spacing:.14em;
  color:var(--ink); background:var(--cta-gold);
  padding:21px 44px; border:0; cursor:pointer;
  text-decoration:none; box-shadow:0 10px 38px -14px rgba(120,88,38,.55);
  transition:background .35s ease, transform .35s ease, box-shadow .35s ease;
}
.cta:hover{ background:var(--cta-gold-h); transform:translateY(-2px); box-shadow:0 16px 44px -14px rgba(120,88,38,.6); }
.cta .arrow{ width:22px; height:1px; background:var(--ink); position:relative; }
.cta .arrow::after{
  content:""; position:absolute; right:0; top:-3px; width:7px; height:7px;
  border-top:1px solid var(--ink); border-right:1px solid var(--ink);
  transform:rotate(45deg);
}
.cta-note{ font-size:13px; color:#5C564D; letter-spacing:.05em; margin-top:14px; line-height:1.75; }
.cta-ghost{
  display:inline-flex; align-items:center; gap:12px;
  font-family:var(--latin); font-weight:300; letter-spacing:.22em; text-transform:uppercase;
  font-size:12px; color:var(--ink); text-decoration:none; padding-bottom:6px;
  border-bottom:1px solid var(--ink);
}

/* ---------- image slots ---------- */
image-slot{
  --is-empty-bg:var(--paper-2);
  background:var(--paper-2);
  border:1px solid var(--line);
}

/* ---------- baked media ---------- */
.media-fill{ width:100%; height:100%; object-fit:cover; display:block; }

/* ---------- site loader (opening fade) ---------- */
#site-loader{
  position:fixed; inset:0; z-index:9999;
  background:#232220;
  display:flex; align-items:center; justify-content:center;
  opacity:1; visibility:visible;
  transition:opacity .72s ease, visibility .72s ease;
}
#site-loader.loaded{ opacity:0; visibility:hidden; pointer-events:none; }
#site-loader .loader-logo{
  width:min(340px,70vw); height:auto; display:block;
  opacity:0; transform:translateY(6px);
  animation:loaderLogoIn 1s cubic-bezier(.2,.7,.2,1) .05s forwards;
}
@keyframes loaderLogoIn{ to{ opacity:1; transform:none; } }
/* ロゴクリック遷移元：背景だけの目隠しカバー（ロゴ演出はしない） */
#site-loader.is-brand-cover{ transition:none; }
#site-loader.is-brand-cover .loader-logo{ animation:none; opacity:0; }
@media (prefers-reduced-motion:reduce){
  #site-loader{ transition:opacity .3s ease, visibility .3s ease; }
  #site-loader .loader-logo{ animation:none; opacity:1; transform:none; }
}

/* ---------- ボトムCTAコピーの改行制御（PC1行／SP2行） ---------- */
.copy-mobile{ display:none; }
@media (max-width:640px){
  .copy-desktop{ display:none; }
  .copy-mobile{ display:inline; }
}

/* ---------- SOLUTION見出し：スマホの字余り（意味の途中改行）を防ぐ ---------- */
.solution-lead{ text-wrap:balance; }
.solution-lead .sp-break{ display:none; }
@media(max-width:640px){
  .solution-lead{ text-wrap:normal; }
  .solution-lead .sp-break{ display:block; }
}
/* ---------- EMPATHY見出し：スマホは意味の切れ目で改行 ---------- */
.empathy-lead{ text-wrap:balance; }
.empathy-lead .sp-break{ display:none; }
@media(max-width:640px){
  .empathy-lead{
    text-wrap:normal;
    font-size:clamp(18px,5.4vw,24px);  /* 2行目「こんな悩みを抱えていませんか。」が1行に収まるサイズ */
    letter-spacing:.02em;
  }
  .empathy-lead .sp-break{ display:block; }
}
/* ---------- TRAINER見出し：他のメインコピーと同じ体裁で中央配置 ---------- */
/* 他のメインコピーより文字数が多いので、PC・タブレットではひと回り小さくして
   主張を抑える（スマホ表示は現状が良いため 641px 以上のみ調整）。 */
.trainer-lead{ text-wrap:balance; }
.trainer-lead .sp-break{ display:none; }
@media(min-width:641px){
  .trainer-lead{ font-size:clamp(22px,2.6vw,31px); line-height:1.6; letter-spacing:.03em; }
}
@media(max-width:640px){
  .trainer-lead{
    text-wrap:normal;
    font-size:clamp(16px,4.7vw,23px);  /* 長い1行目「〜続けられそう」と、」も語中で割れないサイズ */
    letter-spacing:.01em;
    line-height:1.7;
  }
  .trainer-lead .sp-break{ display:block; }
}

/* ---------- shared page-head (sub pages) ---------- */
.page-head{ background:var(--ink); color:#EFEAE0; padding-top:clamp(120px,15vw,180px); padding-bottom:clamp(50px,7vw,90px); }
.page-head .wrap{ width:min(1080px,90vw); }
.page-head .eyebrow{ color:var(--wood); }
.page-head .eyebrow::before{ background:var(--wood); }
.page-back{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--latin); font-weight:400; font-size:11.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--wood); text-decoration:none; transition:color .3s;
}
.page-back:hover{ color:#fff; }
.page-back .a{ width:16px; height:1px; background:currentColor; position:relative; }
.page-back .a::after{ content:""; position:absolute; left:0; top:-3px; width:6px; height:6px; border-bottom:1px solid currentColor; border-left:1px solid currentColor; transform:rotate(45deg); }
.page-display{ font-family:var(--latin); font-weight:300; font-size:clamp(48px,8vw,104px); letter-spacing:.04em; line-height:.98; color:#F3EEE4; margin:18px 0 0; }
.page-sub{ font-family:var(--serif); font-weight:500; font-size:clamp(18px,2vw,24px); letter-spacing:.08em; color:#D9D1C2; margin:24px 0 0; }

/* shared page-body stub */
.page-body{ background:var(--ink); color:#EFEAE0; padding-top:clamp(40px,5vw,72px); padding-bottom:clamp(100px,14vw,180px); }
.page-body .wrap{ width:min(720px,88vw); }
.page-stub{ border-top:1px solid rgba(244,240,232,.14); padding-top:clamp(50px,6vw,80px); text-align:left; }
.stub-kicker{ font-family:var(--latin); font-weight:400; font-size:11px; letter-spacing:.28em; text-transform:uppercase; color:var(--wood); margin:0 0 24px; }
.page-stub h2{ font-family:var(--serif); font-weight:600; font-size:clamp(22px,2.8vw,34px); letter-spacing:.06em; line-height:1.55; color:#F3EEE4; margin:0 0 clamp(28px,3.6vw,44px); text-wrap:pretty; }
.page-stub p{ color:#D8D0C2; font-weight:400; font-size:clamp(15px,1.3vw,16px); line-height:1.95; letter-spacing:.05em; margin:0 0 clamp(38px,5vw,58px); text-wrap:pretty; }

/* dark-page header treatment (recovery / facility / trainer detail) */
body.tpage,
body:has(.page-head){ background:var(--ink); color:#EFEAE0; }
body:has(.page-head) .site-header{ position:fixed; background:transparent; box-shadow:none; }
body:has(.page-head) .nav a{ color:rgba(239,234,224,.78); }
body:has(.page-head) .nav a:hover{ color:#fff; }
body:has(.page-head) .nav .cta-mini{ color:var(--ink); }

.nav-link.is-current{ color:var(--wood) !important; }

/* ---------- facility mini (top page) ---------- */
.facility-mini{ background:var(--paper); }
.fac-grid{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(20px,3vw,56px);
  max-width:1020px; margin-inline:auto;
}
.fac-item{ text-align:center; padding:clamp(10px,1.5vw,20px) 8px; }
.fac-icon{
  width:54px; height:54px; margin:0 auto 22px;
  color:var(--wood-deep);
  display:flex; align-items:center; justify-content:center;
}
.fac-icon svg{ width:100%; height:100%; display:block; }
.fac-kicker{
  font-family:var(--latin); font-weight:400; font-size:11px;
  letter-spacing:.28em; text-transform:uppercase; color:var(--wood-deep);
  margin:0 0 12px;
}
.fac-title{
  font-family:var(--serif); font-weight:600;
  font-size:clamp(16px,1.6vw,19px); letter-spacing:.06em; line-height:1.6;
  color:var(--ink); margin:0; text-wrap:pretty;
}
.fac-cta{ text-align:center; margin-top:clamp(40px,5vw,64px); }
.text-link{
  display:inline-flex; align-items:center; gap:14px;
  font-family:var(--sans); font-weight:400; font-size:13.5px; letter-spacing:.12em;
  color:var(--ink); text-decoration:none;
  padding-bottom:6px; border-bottom:1px solid var(--ink);
  transition:color .3s ease, border-color .3s ease, gap .3s ease;
}
.text-link:hover{ color:var(--wood-deep); border-color:var(--wood-deep); gap:18px; }
.text-link-arrow{ width:20px; height:1px; background:currentColor; position:relative; }
.text-link-arrow::after{
  content:""; position:absolute; right:0; top:-3px; width:6px; height:6px;
  border-top:1px solid currentColor; border-right:1px solid currentColor;
  transform:rotate(45deg);
}
@media (max-width:720px){
  .fac-grid{ grid-template-columns:1fr; gap:38px; max-width:380px; }
  .fac-item{ padding:0; }
  .fac-icon{ width:46px; height:46px; margin-bottom:18px; }
}

/* ---------- header ---------- */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:100;
  display:flex; align-items:center; justify-content:space-between;
  padding:18px clamp(20px,4vw,56px);
  /* padding（レイアウト）や backdrop-filter（ぼかし）はスクロール時の
     再レイアウト・再描画が重くカクつきの原因になるため使わない。
     背景色と影のみを滑らかに変える（合成のみで軽い）。 */
  transition:background-color .35s ease, box-shadow .35s ease;
}
.site-header.scrolled{
  background:rgba(250,249,246,.96);
  box-shadow:0 1px 0 var(--line-soft);
}
.brand{ font-family:var(--latin); font-weight:400; letter-spacing:.5em; font-size:18px; color:var(--ink); text-indent:.5em; display:flex; align-items:center; }


/* light nav over unscrolled hero (top page) */
body:has(.hero) .site-header:not(.scrolled) .nav a{ color:rgba(239,234,224,.85); text-shadow:0 1px 12px rgba(0,0,0,.35); }
body:has(.hero) .site-header:not(.scrolled) .nav a:hover{ color:#fff; }
body:has(.hero) .site-header:not(.scrolled) .nav .nav-en{ color:var(--wood); }
body:has(.hero) .site-header:not(.scrolled) .nav .cta-mini{ color:var(--ink); text-shadow:none; }
.nav{ display:flex; align-items:center; gap:clamp(18px,2.4vw,40px); }
.nav a{
  font-family:var(--sans); font-weight:300; font-size:13px; letter-spacing:.14em;
  color:var(--ink-soft); text-decoration:none; transition:color .3s;
}
.nav .nav-link{ display:inline-flex; flex-direction:column; align-items:center; gap:4px; font-family:var(--sans); font-weight:400; font-size:12.5px; letter-spacing:.14em; }
.nav .nav-en{ font-family:var(--latin); font-weight:400; font-size:8.5px; letter-spacing:.34em; text-transform:uppercase; color:var(--wood); opacity:.85; }
.nav a:hover{ color:var(--ink); }
.nav .cta-mini{
  font-family:var(--sans); font-weight:500; font-size:11.5px; letter-spacing:.1em;
  color:var(--ink); background:var(--cta-gold); padding:8px 16px; text-decoration:none;
  transition:background .3s ease;
}
.nav .cta-mini:hover{ background:var(--cta-gold-h); }
.nav-min{ display:none; }
@media(max-width:860px){
  .nav .nav-link{ display:none; }
  .nav-min{ display:inline-flex; }
}

/* ---------- hero ---------- */
.hero{ position:relative; min-height:100svh; display:flex; align-items:flex-end; overflow:hidden; }
.hero-media{ position:absolute; inset:0; transform:translateZ(0); will-change:transform; }
.hero-media .media-fill{
  position:absolute; inset:0;
  transform-origin:50% 45%;
  /* Ken Burns：自動でゆっくり拡大＋わずかにパン。
     ease-in-out は前後で動きが止まって見えるため linear を使い、
     常に一定速度で動き続けるようにする。alternate で継ぎ目なく往復。 */
  animation:heroKenBurns 20s linear infinite alternate;
  backface-visibility:hidden;
  will-change:transform;
}
@keyframes heroKenBurns{
  from{ transform:scale(1) translate3d(0,0,0); }
  to{   transform:scale(1.16) translate3d(-2%,-2.2%,0); }
}
@media (prefers-reduced-motion:reduce){
  .hero-media .media-fill{ animation:none; transform:scale(1.02) translateZ(0); }
}
.hero-media image-slot{ width:100%; height:100%; border:0; --is-empty-bg:#3a352e; background:#3a352e; }
.hero::after{ /* readability scrim bottom-left */
  content:""; position:absolute; inset:0;
  background:linear-gradient(245deg, transparent 40%, rgba(20,18,15,.10) 62%, rgba(20,18,15,.62) 100%);
  pointer-events:none;
}
.hero-inner{
  position:relative; z-index:2; width:100%;
  display:flex; justify-content:flex-start; align-items:flex-end;
  padding:0 clamp(20px,6vw,110px) clamp(80px,10vw,140px);
}
.hero-copy{ max-width:720px; text-align:left; }
.hero-copy .h-display{ color:#F2F1ED; text-shadow:0 2px 44px rgba(0,0,0,.5); font-size:clamp(27px,4.1vw,46px); line-height:1.5; letter-spacing:.02em; }
.hero-eyebrow{ justify-content:flex-start; color:#E7D8BE; }
.hero-eyebrow::before{ background:#E7D8BE; }
.hero-cta-wrap{ display:flex; flex-direction:column; align-items:flex-start; margin-top:clamp(26px,4vw,46px); }
.hero .cta-note{ color:rgba(255,255,255,.82); }
.scroll-hint{
  position:absolute; left:50%; bottom:26px; transform:translateX(-50%); z-index:2;
  font-family:var(--latin); font-size:10px; letter-spacing:.4em; color:rgba(255,255,255,.8);
  writing-mode:vertical-rl; text-orientation:mixed; display:flex; align-items:center; gap:12px;
}
.scroll-hint::after{ content:""; width:1px; height:46px; background:rgba(255,255,255,.6); }
@media(max-width:768px){
  .hero-inner{ padding-bottom:132px; }
  .scroll-hint{ writing-mode:horizontal-tb; flex-direction:column; gap:10px; bottom:22px; font-size:9px; letter-spacing:.32em; text-indent:.32em; }
  .scroll-hint::after{ height:34px; }
}

/* ---------- empathy ---------- */
.empathy{ background:var(--paper); }
.empathy-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(14px,1.4vw,20px);
  margin-top:clamp(20px,3vw,40px);
}
.pain{
  background:#FBFAF7; padding:clamp(32px,4vw,52px) clamp(30px,3.6vw,48px);
  display:flex; flex-direction:column;
  border:1px solid var(--line-soft);
  box-shadow:0 14px 38px rgba(0,0,0,.04);
}
.pain-idx{
  font-family:var(--latin); font-weight:400; font-size:12px;
  letter-spacing:.24em; color:var(--wood-deep); margin:0; text-transform:uppercase;
}
.pain-title{
  font-family:var(--serif); font-weight:600; font-size:clamp(19px,1.9vw,23px);
  letter-spacing:.07em; color:var(--ink); margin:12px 0 18px;
  position:relative; padding-bottom:18px;
}
.pain-title::after{ content:""; position:absolute; left:0; bottom:0; width:30px; height:1px; background:var(--wood); }
.pain p{ margin:0; color:var(--ink-soft); font-size:15px; line-height:1.95; letter-spacing:.05em; text-wrap:pretty; }
.empathy-close{
  text-align:center; margin-top:clamp(64px,8vw,120px);
  display:flex; flex-direction:column; gap:8px; align-items:center;
}
.empathy-close p{ margin:0; }

/* ---------- solution (Z layout) ---------- */
.solution{ background:var(--paper-2); }
.pillar{
  display:grid; grid-template-columns:1fr 1fr; align-items:center;
  gap:clamp(36px,6vw,110px);
  margin-top:clamp(110px,15vw,210px);
}
.pillar:first-of-type{ margin-top:clamp(56px,7vw,110px); }
.pillar.flip .pillar-media{ order:2; }
.pillar-media image-slot{ width:100%; height:auto; aspect-ratio:4/5; border:0; }
.pillar-media .media-fill{ width:100%; aspect-ratio:4/5; border:0; box-shadow:0 30px 60px -34px rgba(40,30,14,.5); }
.pillar.flip .pillar-text{ order:1; }
.pillar-text .kicker{
  font-family:var(--latin); font-weight:400; letter-spacing:.3em; text-transform:uppercase;
  font-size:12px; color:var(--wood-deep); margin:0 0 18px;
}
.pillar-text h3{ font-size:clamp(21px,2.5vw,30px); line-height:1.55; letter-spacing:.04em; margin-bottom:22px; }
.pillar-text h3 .mark{ display:block; font-size:.62em; color:var(--ink-soft); letter-spacing:.18em; font-weight:500; margin-bottom:8px; font-family:var(--latin); }
.pillar-text p{ margin:0; max-width:560px; color:var(--ink-soft); font-size:15.5px; line-height:1.8; letter-spacing:.05em; }
.pillar-spec{ display:flex; gap:26px; margin-top:26px; flex-wrap:wrap; }
.pillar-spec .s{ display:flex; flex-direction:column; gap:3px; }
.pillar-spec .s b{ font-family:var(--serif); font-weight:600; font-size:21px; color:var(--ink); letter-spacing:.04em; }
.pillar-spec .s span{ font-size:11px; letter-spacing:.12em; color:var(--ink-faint); font-family:var(--latin); text-transform:uppercase; }

/* ---------- trainer ---------- */
.trainer{ background:var(--ink); color:#EFEAE0; }
.trainer .eyebrow{ color:var(--wood); }
.trainer .eyebrow::before{ background:var(--wood); }

/* about trainer (top page) — natural, asymmetric collage */
.about-trainer{ background:var(--paper); color:var(--ink); padding-block:clamp(140px,14vw,200px); }
/* トレーナー章：中央のメインコピー（他セクションと同じ体裁） */
.about-trainer .eyebrow.center{ margin-bottom:14px; }
.about-trainer .trainer-lead{ margin:0 auto clamp(56px,7vw,84px); }
.at-grid{ display:grid; grid-template-columns:minmax(320px,44%) 1fr; gap:clamp(48px,6vw,96px); align-items:start; }
.at-catch{
  font-family:var(--serif); font-weight:600; font-size:clamp(21px,2.1vw,26px);
  letter-spacing:.05em; line-height:1.6; color:var(--ink); margin:18px 0 clamp(28px,3vw,40px);
}
.at-text p{
  font-family:var(--sans); font-weight:400; font-size:15px; letter-spacing:.04em;
  line-height:1.9; color:var(--ink-soft); margin:0 0 1.4em;
  text-wrap:pretty;
  /* 日本語の禁則を厳格に適用し、単語や語句の途中で改行させない */
  word-break:normal;
  overflow-wrap:normal;
  line-break:strict;
}
/* 氏名・固有名詞など、途中で折り返したくない語 */
.nowrap{ white-space:nowrap; }
@media(max-width:640px){
  .at-text p{
    font-size:14px;
    line-height:2.0;
    letter-spacing:.01em;   /* 字間を詰めて1行の収容文字数を増やし、端の折り返しを減らす */
  }
}
.at-text .at-closing{
  font-family:var(--serif); font-weight:600; color:var(--ink);
  font-size:clamp(15px,1.15vw,16.5px); line-height:1.85; letter-spacing:.05em;
  margin-top:1.7em;
}
.at-sign{
  font-family:var(--serif); font-weight:600; font-size:17px; letter-spacing:.1em; color:var(--ink);
  margin:clamp(28px,3vw,40px) 0 0;
}
.at-sign small{ display:block; font-family:var(--latin); font-weight:300; font-size:11px; letter-spacing:.24em; text-transform:uppercase; color:var(--ink-faint); margin-top:6px; }
.at-career{ margin-top:clamp(36px,4vw,52px); padding-top:clamp(24px,2.6vw,32px); border-top:1px solid var(--line); }
.at-career-label{
  font-family:var(--latin); font-weight:400; font-size:11px; letter-spacing:.26em;
  text-transform:uppercase; color:var(--wood-deep); margin:0 0 14px;
}
.at-career-lead{ font-family:var(--serif); font-weight:600; font-size:15px; letter-spacing:.06em; color:var(--ink); margin:0 0 22px; }
.at-career-cols{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(20px,3vw,40px); }
.at-career-cat{
  font-family:var(--serif); font-weight:600; font-size:13.5px; letter-spacing:.1em; color:var(--ink);
  margin:0 0 10px; padding-bottom:8px; border-bottom:1px solid var(--line);
}
.at-career-cols ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.at-career-cols li{ font-family:var(--sans); font-weight:400; font-size:13px; letter-spacing:.03em; line-height:1.7; color:var(--ink); }
.at-career-cols li span{ color:var(--ink-faint); font-size:12px; }
@media(max-width:920px){
  .at-grid{ grid-template-columns:1fr; }
  .at-career-cols{ grid-template-columns:1fr; }
}


/* trainer teaser (top page) — light, centered, flat */
.trainer-teaser{ background:var(--paper); color:var(--ink); text-align:center; }
.tz{
  display:flex; flex-direction:column; align-items:center;
  max-width:520px; margin-inline:auto; gap:20px;
}
.tz-label{
  font-family:var(--latin); font-weight:400; font-size:11px; letter-spacing:.26em;
  text-transform:uppercase; color:var(--wood-deep); margin:0;
}
.tz-photo{ flex:0 0 auto; width:110px; height:110px; border-radius:50%; overflow:hidden; background:#ece8e0; box-shadow:0 16px 36px -20px rgba(70,52,22,.35); }
.tz-photo img{ width:100%; height:100%; object-fit:cover; }
.tz-name{ font-family:var(--serif); font-weight:600; font-size:clamp(20px,2.2vw,26px); letter-spacing:.08em; color:var(--ink); margin:0; }
.tz-name small{ display:block; font-family:var(--latin); font-weight:300; font-size:12px; letter-spacing:.22em; color:var(--ink-faint); margin-top:8px; text-transform:uppercase; }
.tz-line{ font-family:var(--sans); font-weight:400; font-size:clamp(14px,1.4vw,16px); letter-spacing:.06em; color:var(--ink-soft); margin:0; }
.tz-link{
  display:inline-flex; align-items:center; gap:12px; margin-top:4px;
  font-family:var(--latin); font-weight:400; font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink); text-decoration:none; padding:14px 30px;
  border:1px solid var(--ink); transition:background .35s ease, color .35s ease;
}
.tz-link:hover{ background:var(--ink); color:var(--paper); }
.tz-link.is-disabled{ pointer-events:none; opacity:.45; }
.tz-link.is-disabled:hover{ background:transparent; color:var(--ink); }
.tz-arrow{ width:18px; height:1px; background:currentColor; position:relative; }
.tz-arrow::after{ content:""; position:absolute; right:0; top:-3px; width:6px; height:6px; border-top:1px solid currentColor; border-right:1px solid currentColor; transform:rotate(45deg); }
.trainer-grid{
  display:grid; grid-template-columns:300px 1fr; gap:clamp(36px,4.5vw,64px); align-items:center;
  max-width:860px; margin-inline:auto;
}
.trainer-media image-slot{ width:100%; aspect-ratio:3/4; border:0; --is-empty-bg:#2e2c28; background:#2e2c28; }

/* trainer spec table */
.trainer-stats{ margin:clamp(24px,2.8vw,34px) 0 clamp(44px,5.5vw,68px); }
.tstat{
  display:grid; grid-template-columns:auto 1fr; align-items:baseline; gap:24px;
  padding:clamp(20px,2.4vw,26px) 2px;
  border-bottom:1px solid rgba(244,240,232,.12);
}
.tstat:first-child{ border-top:1px solid rgba(244,240,232,.12); }
.tstat dt{
  font-family:var(--sans); font-weight:300; font-size:12.5px; letter-spacing:.14em;
  color:var(--wood); white-space:nowrap;
}
.tstat dd{
  margin:0; text-align:right; font-family:var(--sans); font-weight:400;
  font-size:17px; letter-spacing:.04em; color:#F2F1ED; line-height:1.3;
}
.tstat dd span{ font-family:var(--sans); font-weight:300; font-size:15px; letter-spacing:.06em; color:#F2F1ED; margin-left:3px; }
.trainer h2{ color:#F3EEE4; }
.trainer .name{ font-family:var(--serif); font-weight:500; font-size:clamp(22px,2.4vw,30px); letter-spacing:.08em; margin:6px 0 4px; color:#fff; }
.trainer .name small{ display:block; font-family:var(--latin); font-weight:300; font-size:13px; letter-spacing:.28em; color:var(--wood); margin-top:10px; }
.trainer p .accent{ color:#F0E9DB; }

/* ---------- pricing & faq ---------- */
.pricing{ background:var(--paper); }
.price-table{
  border-top:1px solid var(--ink);
  margin-top:clamp(24px,3vw,44px);
}
.price-row{
  display:grid; grid-template-columns:1fr auto; align-items:baseline; gap:24px;
  padding:clamp(22px,2.6vw,34px) 4px;
  border-bottom:1px solid var(--line);
}
.price-row .pname{ font-family:var(--serif); font-weight:500; font-size:clamp(17px,1.8vw,22px); letter-spacing:.06em; }
.price-row .pname small{ display:block; font-family:var(--sans); font-weight:300; font-size:12.5px; color:var(--ink-faint); letter-spacing:.08em; margin-top:6px; }
.price-row .pval{ font-family:var(--serif); font-weight:600; font-size:clamp(20px,2.4vw,30px); letter-spacing:.04em; white-space:nowrap; }
.price-row .pval span{ font-family:var(--sans); font-weight:300; font-size:13px; color:var(--ink-faint); margin-left:6px; letter-spacing:.06em; }


.faq{ margin-top:clamp(70px,9vw,120px); max-width:860px; margin-inline:auto; }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-q{
  width:100%; background:none; border:0; cursor:pointer;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  padding:clamp(22px,2.4vw,30px) 2px; text-align:left;
  font-family:var(--sans); font-weight:400; font-size:clamp(15px,1.3vw,17px);
  color:var(--ink); letter-spacing:.04em; line-height:1.7;
}
.faq-q .qi{ font-family:var(--latin); color:var(--wood-deep); margin-right:26px; font-size:14px; }
.faq-icon{ position:relative; width:16px; height:16px; flex:0 0 auto; }
.faq-icon::before,.faq-icon::after{ content:""; position:absolute; background:var(--ink-soft); transition:transform .35s ease, opacity .3s; }
.faq-icon::before{ top:50%; left:0; width:100%; height:1px; transform:translateY(-50%); }
.faq-icon::after{ left:50%; top:0; width:1px; height:100%; transform:translateX(-50%); }
.faq-item.open .faq-icon::after{ transform:translateX(-50%) scaleY(0); }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .45s ease; }
.faq-a p{ margin:0; padding:0 2px clamp(24px,2.6vw,32px); color:var(--ink-soft); font-size:14.5px; line-height:1.8; letter-spacing:.05em; max-width:62ch; }

/* ---------- instagram ---------- */
.insta{ background:var(--paper-2); }
.insta-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; flex-wrap:wrap; margin-bottom:clamp(28px,3.5vw,48px); }
.insta-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(8px,1vw,14px); }
.insta-grid image-slot{ width:100%; aspect-ratio:1/1; border:0; }
.insta-grid .ig{ display:block; width:100%; aspect-ratio:1/1; overflow:hidden; position:relative; }
.insta-grid .ig .media-fill{ transition:transform .8s cubic-bezier(.2,.7,.2,1), filter .6s; filter:grayscale(.15); }
.insta-grid .ig:hover .media-fill{ transform:scale(1.06); filter:grayscale(0); }

/* instagram profile card */
.ig-profile{ display:flex; align-items:center; gap:clamp(20px,3vw,40px); text-decoration:none; background:var(--paper); border:1px solid var(--line); padding:clamp(22px,3vw,36px) clamp(24px,3.4vw,44px); transition:border-color .35s ease, transform .35s ease; }
.ig-profile:hover{ border-color:var(--ink); transform:translateY(-2px); }
.ig-avatar{ flex:0 0 auto; width:clamp(76px,9vw,108px); height:clamp(76px,9vw,108px); border-radius:50%; overflow:hidden; background:var(--paper-3); border:1px solid var(--line); }
.ig-avatar image-slot{ width:100%; height:100%; border:0; }
.ig-meta{ display:flex; flex-direction:column; gap:6px; }
.ig-handle{ font-family:var(--sans); font-weight:500; font-size:clamp(15px,1.8vw,18px); color:var(--ink); margin:0; letter-spacing:.04em; }
.ig-name{ font-family:var(--latin); font-weight:300; font-size:11.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-faint); margin:0; }
.ig-follow{ display:inline-flex; align-items:center; gap:10px; margin-top:8px; font-family:var(--sans); font-weight:500; font-size:13.5px; letter-spacing:.06em; color:var(--wood-deep); }

/* ---------- access ---------- */
.access{ background:var(--paper); }
.access-grid{ display:grid; grid-template-columns:1.15fr 1fr; gap:clamp(36px,5vw,80px); align-items:center; }
.access-map{ width:100%; aspect-ratio:16/11; background:var(--paper-3); border:1px solid var(--line); display:flex; align-items:center; justify-content:center; }
.access-map .caption{ text-align:center; }
.access-info dl{ margin:0; }
.access-info .arow{ display:grid; grid-template-columns:120px 1fr; gap:18px; padding:18px 0; border-bottom:1px solid var(--line); }
.access-info dt{ font-family:var(--latin); font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--wood-deep); padding-top:4px; }
.access-info dd{ margin:0; font-size:15px; color:var(--ink-soft); line-height:1.9; }

/* ---------- bottom CTA ---------- */
.bottom-cta{ background:var(--paper-3); text-align:center; }
.bottom-cta .h-sec{ max-width:20ch; margin-inline:auto; }
.bottom-cta .cta{ margin-top:clamp(34px,4vw,52px); font-size:clamp(15px,1.2vw,17px); padding:24px 56px; }

/* ---------- footer ---------- */
.site-footer{ background:var(--ink); color:#B8B1A4; padding:clamp(60px,7vw,100px) 0 40px; }
.foot-top{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:36px; }
.foot-brand .b{ font-family:var(--latin); letter-spacing:.5em; font-size:20px; color:#fff; text-indent:.5em; }
.foot-logo{ height:30px; width:auto; display:block; opacity:.96; }
.foot-brand p{ margin:16px 0 0; font-size:12.5px; letter-spacing:.08em; line-height:2; color:#8C857A; }
.foot-col h4{ font-family:var(--latin); font-weight:300; font-size:11px; letter-spacing:.24em; text-transform:uppercase; color:var(--wood); margin:0 0 18px; }
.foot-col a{ display:block; color:#B8B1A4; text-decoration:none; font-size:13px; letter-spacing:.06em; padding:6px 0; transition:color .3s; }
.foot-col a:hover{ color:#fff; }
.foot-bottom{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px;
  margin-top:clamp(48px,6vw,80px); padding-top:28px; border-top:1px solid #3a372f; }
.foot-bottom span{ font-size:11px; letter-spacing:.1em; color:#736D62; }
.foot-bottom .ll{ font-family:var(--latin); }

/* ---------- mobile fine-tuning ---------- */
@media(max-width:560px){
  /* hero copy: keep phrases unbroken, logo line fits */
  .hero-copy .fv-main{ font-size:22px; letter-spacing:.06em; }
  .fv-logo{ max-width:min(42vw,168px) !important; }
  .fv-sub{ font-size:13px; letter-spacing:.06em; }
  .hero .cta{ font-size:13.5px; padding:16px 26px; white-space:nowrap; gap:12px; }
  .cta-note{ font-size:12.5px; }
  /* headings avoid mid-word breaks */
  .h-sec,.h-sub,.pillar-text h3,.fac-title,.at-catch{ text-wrap:balance; }
  body{ text-wrap:pretty; }
  /* footer: compact type */
  .foot-top{ grid-template-columns:1fr 1fr; gap:26px 20px; }
  .foot-brand{ grid-column:1/-1; }
  .foot-logo{ height:22px; }
  .foot-brand p{ font-size:11px; margin-top:12px; line-height:1.9; }
  .foot-col h4{ font-size:9.5px; letter-spacing:.2em; margin-bottom:12px; }
  .foot-col a{ font-size:12px; padding:5px 0; }
  .foot-bottom{ margin-top:36px; padding-top:20px; }
  .foot-bottom span{ font-size:9.5px; }
}

/* ---------- reveal animation ---------- */
@media (prefers-reduced-motion:no-preference){
  .reveal{ opacity:0; transform:translateY(26px); transition:opacity 1s cubic-bezier(.2,.7,.2,1), transform 1s cubic-bezier(.2,.7,.2,1); }
  .reveal.in{ opacity:1; transform:none; }
  .reveal.d1{ transition-delay:.08s; } .reveal.d2{ transition-delay:.16s; } .reveal.d3{ transition-delay:.24s; }
}

/* ---------- responsive ---------- */
@media(max-width:860px){
  body{ font-size:15px; }
  .empathy-grid{ grid-template-columns:1fr; }
  .pillar{ grid-template-columns:1fr; gap:28px; }
  .pillar.flip .pillar-media{ order:0; }
  .pillar.flip .pillar-text{ order:0; }
  .pillar-media image-slot{ height:auto; aspect-ratio:16/10; }
  .trainer-grid{ grid-template-columns:1fr; justify-items:center; text-align:left; max-width:440px; }
  .trainer-text{ width:100%; }
  .trainer-media image-slot{ aspect-ratio:4/5; max-width:300px; }
  .access-grid{ grid-template-columns:1fr; }
  .insta-grid{ grid-template-columns:repeat(2,1fr); }
  .foot-top{ grid-template-columns:1fr 1fr; gap:30px; }
  .hero-copy{ max-width:100%; }
  .hero-copy .h-display{ font-size:clamp(24px,6.4vw,34px); }
}

/* ===================================================================
   TRAINER DETAIL PAGE  (/trainer)
   =================================================================== */
.tpage{ background:var(--ink); color:#EFEAE0; }
.tpage .site-header{ position:fixed; background:transparent; box-shadow:none; }
.tpage .nav a{ color:rgba(239,234,224,.78); }
.tpage .nav a:hover{ color:#fff; }
.tpage .nav .cta-mini{ color:var(--ink); }

.tpage-back{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--latin); font-weight:400; font-size:11.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--wood); text-decoration:none; transition:color .3s;
}
.tpage-back:hover{ color:#fff; }
.tpage-back .a{ width:16px; height:1px; background:currentColor; position:relative; }
.tpage-back .a::after{ content:""; position:absolute; left:0; top:-3px; width:6px; height:6px; border-bottom:1px solid currentColor; border-left:1px solid currentColor; transform:rotate(45deg); }

/* hero / intro */
.tdetail-hero{ padding-top:clamp(120px,15vw,180px); padding-bottom:clamp(70px,9vw,120px); }
.tdetail-hero .wrap{ width:min(1080px,90vw); }
.tdetail-top{
  display:grid; grid-template-columns:1.1fr 1fr; gap:clamp(40px,6vw,90px); align-items:center;
}
.tdetail-portrait{ width:100%; aspect-ratio:4/5; overflow:hidden; background:#1d1b18; box-shadow:0 40px 90px -40px rgba(0,0,0,.7); }
.tdetail-portrait img{ width:100%; height:100%; object-fit:cover; }
.tdetail-display{
  font-family:var(--latin); font-weight:300; font-size:clamp(48px,8vw,104px); letter-spacing:.04em;
  line-height:.98; color:#F3EEE4; margin:18px 0 0;
}
.tdetail-sub{ font-family:var(--serif); font-weight:500; font-size:clamp(22px,2.6vw,32px); letter-spacing:.1em; color:#fff; margin:26px 0 0; }
.tdetail-sub small{ display:block; font-family:var(--latin); font-weight:300; font-size:13px; letter-spacing:.28em; color:var(--wood); margin-top:12px; }

/* stats — reuse tstat styling but lay out as a row band */
.tdetail-stats{ border-top:1px solid rgba(244,240,232,.14); margin-top:clamp(60px,7vw,90px); }
.tdetail-stats .wrap{ width:min(1080px,90vw); }
.tdetail-statgrid{ display:grid; grid-template-columns:repeat(3,1fr); }
.tdstat{ padding:clamp(34px,4vw,52px) 0; border-bottom:1px solid rgba(244,240,232,.14); }
.tdstat + .tdstat{ border-left:1px solid rgba(244,240,232,.14); padding-left:clamp(28px,3vw,44px); }
.tdstat dt{ font-family:var(--sans); font-weight:300; font-size:12px; letter-spacing:.18em; color:var(--wood); margin:0 0 14px; }
.tdstat dd{ margin:0; font-family:var(--serif); font-weight:600; font-size:clamp(30px,4vw,52px); letter-spacing:.02em; color:#F5F1E8; line-height:1; }
.tdstat dd span{ font-family:var(--sans); font-weight:300; font-size:14px; letter-spacing:.06em; color:var(--wood); margin-left:8px; }

/* prose / 想い */
.tdetail-prose{ padding:clamp(80px,10vw,140px) 0; }
.tdetail-prose .wrap{ width:min(720px,88vw); }
.tdetail-prose .eyebrow{ color:var(--wood); }
.tdetail-prose .eyebrow::before{ background:var(--wood); }
.tdetail-prose h2{ font-family:var(--serif); font-weight:600; font-size:clamp(24px,3vw,38px); letter-spacing:.06em; line-height:1.5; color:#F3EEE4; margin:18px 0 clamp(30px,4vw,48px); text-wrap:pretty; }
.tdetail-prose p{ color:#D8D0C2; font-weight:400; font-size:clamp(15px,1.3vw,17px); line-height:1.95; letter-spacing:.05em; margin:0 0 1.6em; text-wrap:pretty; }
.tdetail-prose p .accent{ color:#F3EDDF; font-weight:500; }
.tdetail-prose .method{ margin-top:clamp(48px,6vw,80px); padding-top:clamp(40px,5vw,60px); border-top:1px solid rgba(244,240,232,.14); }

/* gallery */
.tdetail-gallery{ padding:0 0 clamp(80px,10vw,140px); }
.tdetail-gallery .wrap{ width:min(1080px,90vw); }
.tgal-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(10px,1.4vw,18px); margin-top:clamp(28px,3.5vw,48px); }
.tgal{ position:relative; aspect-ratio:3/4; overflow:hidden; background:#1d1b18; }
.tgal img{ width:100%; height:100%; object-fit:cover; transition:transform .9s cubic-bezier(.2,.7,.2,1), filter .6s; filter:grayscale(.2); }
.tgal:hover img{ transform:scale(1.05); filter:grayscale(0); }
.tgal .cap{ position:absolute; left:0; bottom:0; right:0; padding:18px 18px 16px; font-family:var(--latin); font-weight:400; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:#fff; background:linear-gradient(transparent, rgba(15,13,11,.78)); }

/* bottom CTA on dark */
.tdetail-cta{ background:#1c1a17; text-align:center; padding:clamp(80px,10vw,130px) 0; border-top:1px solid rgba(244,240,232,.1); }
.tdetail-cta .eyebrow{ color:var(--wood); justify-content:center; }
.tdetail-cta .eyebrow::before{ background:var(--wood); }
.tdetail-cta h2{ font-family:var(--serif); font-weight:600; font-size:clamp(26px,3.4vw,42px); letter-spacing:.05em; line-height:1.5; color:#F3EEE4; margin:18px auto clamp(32px,4vw,46px); max-width:20ch; }

/* ===================================================================
   PRICING DETAIL PAGE  (/料金)
   =================================================================== */
.pricing-detail{ background:var(--paper); color:var(--ink); }
.pricing-detail .wrap{ width:min(900px,90vw); }
.price-intro{ max-width:660px; margin:0 0 clamp(20px,3vw,40px); }
.price-intro p{ color:var(--ink-soft); font-size:clamp(15px,1.3vw,16px); line-height:1.95; letter-spacing:.05em; margin:0; text-wrap:pretty; }
.price-note-top{ color:var(--ink-faint); font-size:12.5px; letter-spacing:.06em; margin:0 0 clamp(48px,6vw,80px); }

/* featured frontend band */
.price-feature{
  display:grid; grid-template-columns:1fr auto; align-items:center; gap:24px;
  background:var(--ink); color:#F2EEE5;
  padding:clamp(28px,3.6vw,46px) clamp(26px,3.4vw,48px);
  margin-bottom:clamp(56px,7vw,90px);
}
.price-feature .pf-tag{ font-family:var(--latin); font-weight:400; font-size:10.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--wood); margin:0 0 12px; }
.price-feature h2{ font-family:var(--serif); font-weight:600; font-size:clamp(19px,2.1vw,26px); letter-spacing:.05em; line-height:1.45; color:#F5F1E8; margin:0; }
.price-feature p.pf-desc{ margin:12px 0 0; color:#CFC7B8; font-size:13.5px; line-height:1.7; letter-spacing:.05em; }
.price-feature .pf-val{ font-family:var(--serif); font-weight:600; font-size:clamp(30px,4vw,46px); letter-spacing:.02em; color:#fff; white-space:nowrap; text-align:right; }
.price-feature .pf-val span{ display:block; font-family:var(--sans); font-weight:300; font-size:12.5px; letter-spacing:.08em; color:var(--wood); margin-top:6px; }

/* category */
.price-cat{ margin-top:clamp(58px,7.5vw,100px); }
.price-cat:first-of-type{ margin-top:0; }
.price-cat-head{ display:flex; align-items:baseline; gap:clamp(14px,1.8vw,24px); padding-bottom:clamp(16px,2vw,24px); border-bottom:1px solid var(--ink); }
.price-cat-num{ font-family:var(--latin); font-weight:300; font-size:clamp(26px,3.2vw,42px); letter-spacing:.02em; color:var(--wood); line-height:1; flex:0 0 auto; }
.price-cat-titles{ flex:1 1 auto; }
.price-cat-titles h2{ font-family:var(--serif); font-weight:600; font-size:clamp(19px,2.1vw,26px); letter-spacing:.05em; line-height:1.4; margin:0; }
.price-cat-titles p{ margin:9px 0 0; color:var(--ink-soft); font-size:13.5px; line-height:1.7; letter-spacing:.04em; text-wrap:pretty; }

.price-subhead{ font-family:var(--sans); font-weight:500; font-size:13.5px; letter-spacing:.1em; color:var(--ink); margin:clamp(30px,3.6vw,46px) 0 0; display:flex; align-items:center; gap:12px; }
.price-subhead::before{ content:""; width:18px; height:1px; background:var(--wood); flex:0 0 auto; }

.pricing-detail .price-table{ margin-top:clamp(8px,1.2vw,16px); }
.price-row .pname .ptag{ display:inline-block; font-family:var(--latin); font-weight:400; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--wood-deep); border:1px solid var(--wood); padding:3px 9px; margin:0 0 12px; line-height:1; }

/* trial row — gold rule top & bottom (matches home) */
.pricing-detail .price-row.is-trial{ border-top:1px solid rgba(194,169,130,.6) !important; border-bottom:1px solid rgba(194,169,130,.6); }

/* feature row accent (home + detail) */
.price-row.feature{ position:relative; }
.price-row.feature::before{ content:""; position:absolute; left:calc(-1*clamp(8px,1.6vw,16px)); top:20%; bottom:20%; width:2px; background:var(--wood); }
.price-row.feature .pval{ color:var(--wood-deep); }

@media(max-width:820px){
  .price-feature{ grid-template-columns:1fr; gap:16px; }
  .price-feature .pf-val{ text-align:left; }
  .tdetail-top{ grid-template-columns:1fr; gap:32px; }
  .tdetail-portrait{ max-width:380px; }
  .tdetail-display{ font-size:clamp(44px,16vw,80px); }
  .tdetail-statgrid{ grid-template-columns:1fr; }
  .tdstat + .tdstat{ border-left:0; padding-left:0; }
  .tgal-grid{ grid-template-columns:1fr 1fr; }
}




  /* ---- FIRST VIEW copy overrides (brand-core) ---- */
  .fv-tagline{
    font-family:var(--latin);
    font-size:11px;
    font-weight:400;
    color:#C2A982;
    letter-spacing:0.2em;
    margin:0 0 24px;
    text-transform:none;
  }
  .fv-tagline::before{ content:none; }
  .fv-logo{ display:inline-block; height:.82em; width:auto; vertical-align:-0.02em; margin-left:.12em; }
  .fv-nowrap{ white-space:nowrap; }
  .hero-copy .fv-main{
    font-family:var(--serif);
    font-weight:500;
    font-size:32px;
    line-height:1.6;
    color:#F2F1ED;
    text-align:left;
    text-align-last:left;
    text-shadow:0 2px 44px rgba(0,0,0,.5);
    letter-spacing:.02em;
    margin:0;
    text-wrap:balance;
  }
  .fv-sub{
    font-family:var(--sans);
    font-weight:400;
    font-size:14px;
    color:#AAAAAA;
    line-height:1.9;
    letter-spacing:.04em;
    margin:16px 0 0;
    text-align:left;
  }
  @media(max-width:768px){
    .hero-copy .fv-main{ font-size:23px; }
    .fv-tagline{ letter-spacing:0.18em; }
    .fv-logo{ height:.82em; width:auto; max-width:56vw; vertical-align:-0.02em; }
  }
  @media(max-width:400px){
    .hero-copy .fv-main{ font-size:22px; }
  }
  /* ---- facility mini: gold kicker + lead ---- */
  .facility-mini .fac-kicker{
    color:#C2A982;
    text-transform:uppercase;
  }
  .facility-mini .fac-title{
    font-weight:600;
    margin-bottom:16px;
  }
  .facility-mini .fac-lead{
    font-family:var(--sans);
    font-weight:400;
    font-size:13px;
    line-height:2;
    letter-spacing:.02em;
    color:var(--ink-soft, #6f6a63);
    margin:0;
    text-align:left;
    text-wrap:pretty;
  }
  .facility-mini .fac-grid{ gap:clamp(40px,4vw,60px); }
  @media(max-width:720px){
    .facility-mini .fac-lead{ text-align:left; }
    .facility-mini .fac-grid{ gap:44px; }
  }
  /* ---- pricing: light luxury bar-list ---- */
  #pricing{ background:#F9F9F8; padding-top:160px; padding-bottom:160px; }
  #pricing > .wrap{ max-width:960px; }
  .price-lux{
    background:transparent;
    padding:0;
    margin-top:clamp(40px,5vw,64px);
    border:0;
  }
  .plux-list{ list-style:none; margin:0; padding:0; display:block; }
  .plux-row{
    display:flex; align-items:center; justify-content:space-between; gap:24px;
    padding:32px 0; margin:0;
    border-bottom:1px solid rgba(194,169,130,.2);
  }
  .plux-row.is-trial{
    border-top:1px solid rgba(194,169,130,.6);
    border-bottom:1px solid rgba(194,169,130,.6);
  }
  .plux-name{
    font-family:var(--serif); font-weight:500; font-size:20px;
    letter-spacing:.03em; color:#232220; line-height:1.5;
  }
  .plux-idx{
    font-family:var(--serif); font-weight:500; font-size:14px; letter-spacing:.1em;
    color:#C2A982; display:inline-block; width:40px;
  }
  .plux-name small{
    font-family:var(--sans); font-weight:300; font-size:12.5px; letter-spacing:.06em;
    color:var(--ink-faint); margin-left:14px;
  }
  .plux-val{
    font-family:var(--serif); font-weight:600; font-size:26px; letter-spacing:.05em;
    color:#232220; white-space:nowrap; display:inline-flex; align-items:baseline;
  }
  .plux-tax{
    font-family:var(--sans); font-weight:400; font-size:15px; color:#C2A982;
    margin-left:16px; letter-spacing:.04em;
  }
  .plux-cta{ text-align:center; margin-top:64px; }
  .btn-outline-gold{
    display:inline-flex; align-items:center; gap:14px;
    font-family:var(--sans); font-weight:400; font-size:15px; letter-spacing:.14em;
    color:#232220; text-decoration:none;
    padding:18px 46px; border:1px solid rgba(194,169,130,.7);
    background:transparent; transition:background .3s ease, color .3s ease, gap .3s ease, border-color .3s ease;
  }
  .btn-outline-gold:hover{ background:#C2A982; color:#fff; border-color:#C2A982; gap:20px; }
  .bog-arrow{ width:20px; height:1px; background:currentColor; position:relative; }
  .bog-arrow::after{
    content:""; position:absolute; right:0; top:-3px; width:6px; height:6px;
    border-top:1px solid currentColor; border-right:1px solid currentColor; transform:rotate(45deg);
  }
  @media(max-width:768px){
    #pricing{ padding-top:96px; padding-bottom:96px; }
    .plux-row{ flex-direction:column; align-items:flex-start; gap:0; padding:28px 0; }
    .plux-name{ margin-bottom:12px; font-size:18px; }
    .plux-val{ font-size:23px; }
    .plux-name small{ display:block; margin-left:0; margin-top:6px; }

    /* 「税込」「月額」は補足情報。主張を落として金額を主役にする
       （コントラスト確保のため、薄すぎない中間グレーを使用） */
    .plux-val .plux-tax{
      font-size:11.5px;
      color:#6B655C;              /* 白地でコントラスト比 約5.4：可読性を維持しつつ後退させる */
      margin-left:10px;
      letter-spacing:.02em;
      font-weight:300;
    }

    /* 初回体験だけ、ほんの少し特別に見せる（詰め込み感の緩和） */
    .plux-row.is-trial{
      background:linear-gradient(180deg, rgba(194,169,130,.10), rgba(194,169,130,.04));
      border-top:1px solid rgba(194,169,130,.55);
      border-bottom:1px solid rgba(194,169,130,.55);
      margin:0 -16px 6px;
      padding:30px 16px 28px;
      border-radius:2px;
    }
    .plux-row.is-trial .plux-name{ font-size:19px; }
    .plux-row.is-trial .plux-val{ font-size:26px; color:var(--ink); }
    /* 「まずはここから」の小さな目印 */
    .plux-row.is-trial .plux-idx::after{
      content:"START HERE";
      font-family:var(--latin); font-size:9px; letter-spacing:.18em;
      color:var(--wood-deep); margin-left:10px; white-space:nowrap;
      vertical-align:1px;
    }
    .plux-row.is-trial .plux-idx{ width:auto; margin-right:12px; }
  }



/* ===== (1) Mobile hamburger + drawer ===== */
.nav-toggle{ display:none; }
.rev-drawer{ display:none; }
@media(max-width:860px){
  /* hide desktop text links + inline CTA, show hamburger */
  .site-header .nav .nav-link,
  .site-header .nav .cta-mini{ display:none !important; }
  .nav-toggle{
    display:inline-flex; flex-direction:column; justify-content:center; gap:5px;
    width:44px; height:44px; padding:10px; margin-left:auto;
    background:transparent; border:0; cursor:pointer; -webkit-tap-highlight-color:transparent;
  }
  .nav-toggle span{
    display:block; height:1.5px; width:100%; background:var(--ink);
    transition:transform .35s ease, opacity .3s ease;
  }
  body:has(.hero) .site-header:not(.scrolled) .nav-toggle span{ background:#EFEAE0; }
  .tpage .site-header .nav-toggle span,
  body:has(.page-head) .site-header .nav-toggle span{ background:#EFEAE0; }
  .site-header.scrolled .nav-toggle span{ background:var(--ink); }
  /* open state → X */
  
  
  
  

  .rev-drawer{
    display:block; position:fixed; inset:0; z-index:1000;
    background:rgba(24,23,21,.97); backdrop-filter:blur(6px);
    opacity:0; visibility:hidden; transition:opacity .4s ease, visibility .4s ease;
    padding:96px 32px 40px;
  }
  /* ドロワーを開いている間はヘッダーのクリック判定を無効化し、
     ×ボタンがヘッダー nav に覆われて反応しない問題を防ぐ */
  body.drawer-open .site-header{ pointer-events:none; }
  body.drawer-open .rev-drawer{ pointer-events:auto; }
  body.drawer-open .rev-drawer{ opacity:1; visibility:visible; }
  .rev-drawer-close{
    position:absolute; top:22px; right:20px; width:44px; height:44px;
    background:transparent; border:0; color:#EFEAE0; font-size:26px; line-height:1; cursor:pointer;
    z-index:10;
  }
  .rev-drawer nav{ position:relative; z-index:1; display:flex; flex-direction:column; gap:6px; }
  .rev-drawer a.d-link{
    display:flex; align-items:baseline; gap:14px;
    padding:18px 4px; border-bottom:1px solid rgba(194,169,130,.22);
    color:#F3EEE4; text-decoration:none;
    font-family:var(--sans); font-weight:400; font-size:18px; letter-spacing:.1em;
  }
  .rev-drawer a.d-link .d-en{
    font-family:var(--latin); font-size:10px; letter-spacing:.32em;
    text-transform:uppercase; color:var(--wood);
  }
  .rev-drawer .d-cta{
    display:block; margin-top:30px; text-align:center;
    padding:18px; border-radius:6px; background:var(--cta-gold); color:var(--ink);
    text-decoration:none; font-family:var(--sans); font-weight:500; letter-spacing:.14em;
  }
  .rev-drawer .d-ig{
    display:inline-flex; align-items:center; gap:8px; margin-top:26px;
    color:var(--wood); text-decoration:none; font-family:var(--latin);
    font-size:12px; letter-spacing:.24em;
  }
}


/* ===== (3) What is THE REV. section ===== */
.whatis{ background:var(--paper-2); }
.whatis .wrap{ width:min(880px,90vw); text-align:center; }
.whatis .h-lead{
  font-family:var(--serif); font-weight:600;
  font-size:clamp(24px,3.4vw,40px); line-height:1.7; letter-spacing:.06em;
  color:var(--ink); margin:26px auto 30px; text-wrap:balance;
}
.whatis .h-lead .mk{ color:var(--wood-deep); }
.whatis .wi-body{
  font-family:var(--sans); font-weight:300; font-size:clamp(15px,1.42vw,18px);
  line-height:2.1; letter-spacing:.05em; color:#4A453E;
  max-width:36em; margin:0 auto;
}
.whatis .wi-sign{
  margin-top:34px; font-family:var(--latin); font-size:11px;
  letter-spacing:.34em; text-transform:uppercase; color:var(--ink-faint);
}



/* ---- fixed dual CTA (spec 2-3) : replaces Instagram bar ---- */
.rev-fixed-cta{ display:none; }
@media(max-width:860px){
  .rev-fixed-cta{
    display:grid; grid-template-columns:1fr 1.25fr; align-items:stretch;
    position:fixed; left:0; right:0; bottom:0; z-index:150;
    /* 固定バーは常時表示のため backdrop-filter を使うとスクロール毎に
       ぼかしの再描画が走りカクつく。ほぼ不透明の背景色のみにする。 */
    background:rgba(24,23,21,.985);
    /* バー内側にborderを引くと、金色ボタンの上に黒い線（余白）が乗って見えるため、
       境界線はバーの外側（ページ側）にshadowで描き、ボタンは上端まで色を敷き詰める */
    border-top:0;
    box-shadow:0 -1px 0 rgba(194,169,130,.22);
  }
  .rev-fixed-cta a{
    display:flex; align-items:center; justify-content:center; text-align:center;
    min-height:58px; text-decoration:none;
    /* セーフエリア分は各ボタン側で確保し、下端まで色を敷き詰める
       （コンテナ側に padding を持たせると金色ボタンの下に黒帯が出る） */
    padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));
    font-family:var(--sans); font-size:13.5px; letter-spacing:.08em; line-height:1.5;
  }
  .rev-fixed-cta .fc-price{
    color:#F3EEE4; border-right:1px solid rgba(194,169,130,.28);
    transition:background .25s ease, color .25s ease;
  }
  .rev-fixed-cta .fc-price:active{ background:rgba(194,169,130,.14); }
  .rev-fixed-cta .fc-book{
    background:var(--cta-gold); color:var(--ink); font-weight:500;
    gap:10px; transition:background .25s ease;
  }
  /* 予約ボタンに控えめな矢印を添えて、タップ導線を明確にする */
  .rev-fixed-cta .fc-book::after{
    content:""; flex:0 0 auto;
    width:6px; height:6px;
    border-top:1.5px solid currentColor; border-right:1.5px solid currentColor;
    transform:translateX(-1px) rotate(45deg); opacity:.7;
  }
  .rev-fixed-cta .fc-book:active{ background:var(--cta-gold-h); }
  body{ padding-bottom:calc(62px + env(safe-area-inset-bottom,0px)); }
  body.drawer-open .rev-fixed-cta{ display:none; }
}
/* ---- accessibility ---- */
a:focus-visible,button:focus-visible{ outline:2px solid var(--wood); outline-offset:3px; }
/* ---- footer legal ---- */
.foot-legal{ display:flex; flex-wrap:wrap; gap:8px 22px; margin-top:20px; }
.foot-legal a{
  font-family:var(--sans); font-size:12.5px; letter-spacing:.05em;
  color:rgba(239,234,224,.72); text-decoration:none; min-height:44px;
  display:inline-flex; align-items:center;
}
.foot-legal a:hover{ color:#fff; }
.foot-corp{
  margin-top:16px; font-family:var(--sans); font-size:12.5px; line-height:2;
  letter-spacing:.05em; color:rgba(239,234,224,.6);
}
.cta-note{
  display:block; margin-top:12px; font-family:var(--sans);
  /* CTA周辺の補足は小さすぎると読みづらいため、サイズとコントラストを引き上げる
     （#5C564D は紙地に対しコントラスト比 約6.95：AAを十分に満たす） */
  font-size:13px; letter-spacing:.05em; color:#5C564D; line-height:1.75;
}



.logo-inline{
  display:inline-block; height:.82em; width:auto; vertical-align:baseline;
  margin:0 .06em; position:relative; top:.02em;
}
.h-lead .logo-inline{ height:.9em; }



.connect-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(16px,2vw,26px); }
.connect-card{
  display:flex; gap:clamp(16px,2vw,22px); align-items:flex-start;
  padding:clamp(24px,3vw,34px); background:var(--paper); border:1px solid var(--line);
  text-decoration:none; transition:border-color .3s ease, transform .3s ease;
}
.connect-card:hover{ border-color:var(--wood); transform:translateY(-2px); }
.connect-icon{ flex:none; width:clamp(38px,4vw,46px); height:clamp(38px,4vw,46px);
  display:flex; align-items:center; justify-content:center; color:var(--wood-deep); }
.connect-icon svg{ width:100%; height:100%; }
.connect-body{ display:flex; flex-direction:column; gap:4px; }
.connect-label{ font-family:var(--latin); font-size:11px; letter-spacing:.28em;
  text-transform:uppercase; color:var(--wood-deep); }
.connect-handle{ font-family:var(--sans); font-weight:500; font-size:clamp(15px,1.7vw,17px);
  letter-spacing:.06em; color:var(--ink); }
.connect-desc{ font-family:var(--sans); font-weight:300; font-size:13px; line-height:1.9;
  letter-spacing:.03em; color:var(--ink-soft); margin:6px 0 10px; }
.connect-cta{ font-family:var(--sans); font-size:13px; letter-spacing:.06em; color:var(--wood-deep); }
@media(max-width:720px){ .connect-grid{ grid-template-columns:1fr; } }








  .sp-body{ background:var(--paper); color:var(--ink); }
  .sp-body .wrap{ width:min(980px,90vw); }
  /* tabs */
  .sp-tabs{ display:grid; grid-template-columns:1fr 1fr; gap:0; border:1px solid var(--line); border-radius:4px; overflow:hidden; margin-bottom:clamp(56px,7vw,96px); }
  .sp-tab{
    appearance:none; background:transparent; border:0; cursor:pointer; text-align:center;
    padding:clamp(20px,2.6vw,30px) 16px; transition:background .35s ease, color .35s ease;
  }
  .sp-tab + .sp-tab{ border-left:1px solid var(--line); }
  .sp-tab .t-en{ display:block; font-family:var(--latin); font-weight:400; font-size:10.5px; letter-spacing:.26em; text-transform:uppercase; color:var(--wood-deep); margin-bottom:8px; }
  .sp-tab .t-ja{ display:block; font-family:var(--serif); font-weight:600; font-size:clamp(15px,1.7vw,19px); letter-spacing:.08em; color:var(--ink); }
  .sp-tab[aria-selected="true"]{ background:var(--ink); }
  .sp-tab[aria-selected="true"] .t-ja{ color:var(--paper); }
  .sp-tab[aria-selected="true"] .t-en{ color:var(--wood); }
  .sp-panel{ display:none; }
  .sp-panel.is-active{ display:block; }
  /* section head inside panel */
  .sp-head{ max-width:720px; margin-bottom:clamp(44px,5vw,64px); }
  .sp-head .eyebrow{ margin-bottom:16px; }
  .sp-head h2{ font-family:var(--serif); font-weight:600; font-size:clamp(24px,3vw,34px); letter-spacing:.06em; line-height:1.5; margin:0 0 20px; }
  .sp-head p{ font-family:var(--sans); font-weight:300; font-size:15px; line-height:1.9; letter-spacing:.04em; color:var(--ink-soft); margin:0; }
  .sp-hl{ font-style:normal; font-family:var(--serif); font-weight:600; color:var(--ink); background:linear-gradient(transparent 68%, rgba(194,169,130,.35) 68%); padding:0 2px; }
  /* subheads */
  .sp-sub{
    font-family:var(--latin); font-weight:400; font-size:11px; letter-spacing:.26em; text-transform:uppercase;
    color:var(--wood-deep); margin:clamp(56px,6vw,80px) 0 8px;
  }
  .sp-sub-ja{ font-family:var(--serif); font-weight:600; font-size:clamp(19px,2.2vw,24px); letter-spacing:.08em; margin:0 0 clamp(28px,3vw,40px); }
  /* mechanism steps */
  .sp-steps{ display:grid; gap:0; border-top:1px solid var(--line); }
  .sp-step{ display:grid; grid-template-columns:72px 1fr; gap:clamp(16px,3vw,40px); padding:clamp(24px,3vw,34px) 4px; border-bottom:1px solid var(--line); align-items:start; }
  .sp-step .n{ font-family:var(--latin); font-weight:300; font-size:clamp(26px,3vw,36px); letter-spacing:.06em; color:var(--wood); line-height:1.1; }
  .sp-step h4{ font-family:var(--serif); font-weight:600; font-size:16px; letter-spacing:.06em; margin:0 0 8px; }
  .sp-step p{ font-family:var(--sans); font-weight:300; font-size:14px; line-height:1.85; letter-spacing:.03em; color:var(--ink-soft); margin:0; }
  /* merit cards */
  .sp-merits{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2vw,28px); }
  .sp-merit{ border:1px solid var(--line); border-radius:4px; padding:clamp(22px,2.6vw,32px); }
  .sp-merit .m-n{ display:block; font-family:var(--latin); font-weight:300; font-size:11px; letter-spacing:.24em; color:var(--wood-deep); margin-bottom:14px; }
  .sp-merit h4{ font-family:var(--serif); font-weight:600; font-size:15.5px; letter-spacing:.06em; line-height:1.6; margin:0 0 10px; }
  .sp-merit p{ font-family:var(--sans); font-weight:300; font-size:13px; line-height:1.8; letter-spacing:.03em; color:var(--ink-soft); margin:0; }
  /* accordion */
  .sp-acc{ border-top:1px solid var(--line); }
  .sp-acc-item{ border-bottom:1px solid var(--line); }
  .sp-acc-q{
    appearance:none; background:none; border:0; width:100%; cursor:pointer; text-align:left;
    display:flex; align-items:center; justify-content:space-between; gap:20px; padding:clamp(20px,2.4vw,26px) 4px;
  }
  .sp-acc-q .q-t{ font-family:var(--serif); font-weight:600; font-size:15.5px; letter-spacing:.06em; color:var(--ink); }
  .sp-acc-q .q-t small{ font-family:var(--sans); font-weight:300; font-size:12.5px; letter-spacing:.04em; color:var(--ink-faint); margin-left:14px; }
  .sp-acc-icon{ position:relative; flex:0 0 14px; width:14px; height:14px; }
  .sp-acc-icon::before,.sp-acc-icon::after{ content:""; position:absolute; inset:0; margin:auto; background:var(--wood-deep); transition:transform .35s ease, opacity .35s ease; }
  .sp-acc-icon::before{ width:14px; height:1px; }
  .sp-acc-icon::after{ width:1px; height:14px; }
  .sp-acc-item.open .sp-acc-icon::after{ transform:rotate(90deg); opacity:0; }
  .sp-acc-a{ max-height:0; overflow:hidden; transition:max-height .5s ease; }
  .sp-acc-a-in{ padding:0 4px clamp(22px,2.6vw,28px); }
  .sp-acc-a p, .sp-acc-a li{ font-family:var(--sans); font-weight:300; font-size:14px; line-height:1.9; letter-spacing:.03em; color:var(--ink-soft); margin:0; }
  .sp-acc-a ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
  .sp-acc-a li{ padding-left:18px; position:relative; }
  .sp-acc-a li::before{ content:""; position:absolute; left:0; top:.75em; width:8px; height:1px; background:var(--wood); }
  /* evidence strip */
  .sp-proof{ border:1px solid var(--line); border-radius:4px; padding:clamp(28px,3.4vw,44px); display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,3vw,40px); }
  .sp-proof h5{ font-family:var(--latin); font-weight:400; font-size:10.5px; letter-spacing:.24em; text-transform:uppercase; color:var(--wood-deep); margin:0 0 12px; }
  .sp-proof p{ font-family:var(--sans); font-weight:300; font-size:13px; line-height:1.85; letter-spacing:.03em; color:var(--ink-soft); margin:0; }
  .sp-proof b{ font-family:var(--serif); font-weight:600; color:var(--ink); }
  /* safety note */
  .sp-note{ font-family:var(--sans); font-weight:300; font-size:12.5px; letter-spacing:.04em; line-height:1.8; color:var(--ink-faint); margin-top:20px; }
  /* bottom cta */
  .sp-cta{ text-align:center; padding-top:clamp(72px,9vw,120px); }
  .sp-cta p{ font-family:var(--serif); font-weight:600; font-size:clamp(19px,2.2vw,25px); letter-spacing:.08em; margin:0 0 28px; }
  @media(max-width:820px){
    .sp-merits{ grid-template-columns:1fr; }
    .sp-proof{ grid-template-columns:1fr; }
    .sp-step{ grid-template-columns:48px 1fr; }
  }


.logo-inline{display:inline-block;height:.82em;width:auto;vertical-align:baseline;margin:0 .05em;position:relative;top:.02em}


.sol-mini-note{
  font-family:var(--sans); font-weight:300; font-size:12.5px; line-height:1.95;
  letter-spacing:.03em; color:var(--ink-faint); margin-top:clamp(14px,1.6vw,18px);
}
.sol-disclaimer{
  border-top:1px solid var(--line); padding-top:clamp(22px,2.6vw,30px);
  margin-top:clamp(8px,1vw,14px);
}
.sol-disc-title{
  font-family:var(--latin); font-size:11px; letter-spacing:.24em; text-transform:uppercase;
  color:var(--ink-faint); margin:0 0 12px;
}
.sol-disclaimer p:not(.sol-disc-title){
  font-family:var(--sans); font-weight:300; font-size:12px; line-height:1.95;
  letter-spacing:.03em; color:var(--ink-faint); margin:0 0 .8em;
}
.sol-disclaimer p:last-child{ margin-bottom:0; }

/* restyle the former blue links → quiet brand link with underline + arrow */
.sol-price-link{
  display:inline-flex; align-items:center; gap:9px; margin-top:6px; min-height:44px;
  font-family:var(--sans); font-weight:300; font-size:13.5px; letter-spacing:.08em;
  color:var(--ink) !important; text-decoration:none;
  border:0; border-bottom:1px solid var(--wood); padding-bottom:3px;
  transition:color .25s ease, border-color .25s ease;
}
.sol-price-link:hover{ color:var(--wood-deep) !important; border-color:var(--wood-deep); }
.sol-price-link::after{
  content:""; width:16px; height:6px; flex:none;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 6'><path d='M0 3h14M11 1l3 2-3 2' fill='none' stroke='black' stroke-width='1'/></svg>") no-repeat center/contain;
          mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 6'><path d='M0 3h14M11 1l3 2-3 2' fill='none' stroke='black' stroke-width='1'/></svg>") no-repeat center/contain;
}



/* ---------- section rhythm: alternating grounds ---------- */
.sol-band{ padding:clamp(64px,8vw,110px) 0; }
.sol-band--tint{ background:var(--paper-2); }
.sol-band--deep{ background:var(--charcoal); }
.sol-band--deep .sol-sec h2,
.sol-band--deep .sol-sec h3{ color:#F3EEE4; }
.sol-band--deep .sol-sec p,
.sol-band--deep .sol-list li{ color:rgba(243,238,228,.76); }
.sol-band--deep .sol-sec h2 .num{ color:var(--wood); }

/* ---------- big stat callout ---------- */
.sol-stats{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(14px,2vw,28px); margin:clamp(30px,4vw,46px) 0 0;
}
.sol-stat{ text-align:center; padding:clamp(20px,2.4vw,28px) 8px;
  border:1px solid var(--line); background:var(--paper); }
.sol-band--tint .sol-stat{ background:var(--paper); }
.sol-stat .fig{
  display:block; font-family:var(--latin); font-weight:300;
  font-size:clamp(30px,5vw,52px); line-height:1; letter-spacing:.02em;
  color:var(--ink);
}
.sol-stat .fig em{ font-style:normal; font-size:.42em; letter-spacing:.1em; margin-left:.25em; color:var(--wood-deep); }
.sol-stat .cap{
  display:block; margin-top:12px; font-family:var(--sans); font-weight:300;
  font-size:12px; letter-spacing:.1em; color:var(--ink-faint);
}
@media(max-width:600px){ .sol-stats{ grid-template-columns:1fr; } }

/* ---------- signature: dissolved oxygen figure ---------- */








/* molecules animate in when visible */


 }



/* ---------- two-up comparison ---------- */
.sol-vs{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(14px,2vw,24px);
  margin-top:clamp(26px,3.2vw,38px); }
.sol-vs-card{ padding:clamp(22px,2.6vw,30px); border:1px solid var(--line); background:var(--paper); }
.sol-vs-card.is-ours{ border-color:var(--wood); }
.sol-vs-tag{
  font-family:var(--latin); font-size:10.5px; letter-spacing:.24em; text-transform:uppercase;
  color:var(--ink-faint); }
.sol-vs-card.is-ours .sol-vs-tag{ color:var(--wood-deep); }
.sol-vs-title{ font-family:var(--serif); font-size:clamp(16px,2vw,20px); color:var(--ink); margin:10px 0 12px; }
.sol-vs-card p{ font-size:13px !important; line-height:1.95 !important; margin:0 !important; }
@media(max-width:640px){ .sol-vs{ grid-template-columns:1fr; } }

/* ---------- role split (酸素ルーム / DENBA) ---------- */
.sol-roles{ margin-top:clamp(26px,3.2vw,38px); border-top:1px solid var(--line); }
.sol-roles .row{ display:grid; grid-template-columns:1fr 1fr; border-bottom:1px solid var(--line); }
.sol-roles .row > div{ padding:16px clamp(12px,1.6vw,20px);
  font-family:var(--sans); font-weight:300; font-size:13px; line-height:1.9; color:var(--ink-soft); }
.sol-roles .row > div:first-child{ border-right:1px solid var(--line); }
.sol-roles .head > div{ font-family:var(--latin); font-size:11px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--wood-deep); }

/* ---------- scene cards ---------- */
.sol-scenes{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(12px,1.8vw,20px);
  margin-top:clamp(20px,2.6vw,30px); }
.sol-scene{ display:flex; gap:14px; align-items:flex-start;
  padding:clamp(18px,2.2vw,24px); background:var(--paper); border:1px solid var(--line); }
.sol-scene .idx{ flex:none; font-family:var(--latin); font-size:11px; letter-spacing:.2em;
  color:var(--wood-deep); padding-top:3px; }
.sol-scene p{ margin:0 !important; font-size:13px !important; line-height:1.9 !important; }
@media(max-width:640px){ .sol-scenes{ grid-template-columns:1fr; } }

/* ---------- step flow ---------- */
.sol-flow{ margin-top:clamp(22px,2.8vw,32px); }
.sol-step{ position:relative; padding:0 0 clamp(22px,2.6vw,30px) clamp(46px,5vw,62px); }
.sol-step:last-child{ padding-bottom:0; }
.sol-step::before{
  content:""; position:absolute; left:13px; top:22px; bottom:0; width:1px; background:var(--line); }
.sol-step:last-child::before{ display:none; }
.sol-step .dot{
  position:absolute; left:0; top:2px; width:27px; height:27px; border-radius:50%;
  border:1px solid var(--wood); color:var(--wood-deep); background:var(--paper);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--latin); font-size:11px; }
.sol-band--tint .sol-step .dot{ background:var(--paper-2); }
.sol-step p{ margin:0 !important; }
.sol-step .st{ font-family:var(--sans); font-weight:500; font-size:14.5px; color:var(--ink);
  letter-spacing:.05em; margin-bottom:5px !important; display:block; }

/* ---------- pull statement ---------- */
.sol-pull{
  margin:clamp(40px,5vw,64px) 0; text-align:center;
  font-family:var(--serif); font-weight:600;
  font-size:clamp(19px,2.8vw,30px); line-height:1.85; letter-spacing:.05em;
  color:var(--ink); text-wrap:balance;
}
.sol-pull .mk{ color:var(--wood-deep); }
.sol-band--deep .sol-pull{ color:#F3EEE4; }
.sol-band--deep .sol-pull .mk{ color:var(--wood); }



.sol-sec--tint{ position:relative; z-index:0;
  padding-top:clamp(48px,6vw,80px); padding-bottom:clamp(48px,6vw,80px); }
.sol-sec--tint::before{
  content:""; position:absolute; top:0; left:50%; transform:translateX(-50%);
  width:100vw; height:100%; background:var(--paper-2); z-index:-1;
}
/* EMS vs DENBA sensory scale */
.sens-scale{ margin-top:clamp(22px,2.8vw,32px); }
.sens-row{ display:grid; grid-template-columns:132px 1fr; align-items:center;
  gap:clamp(10px,1.6vw,18px); padding:13px 0; border-bottom:1px solid var(--line); }
.sens-row:last-child{ border-bottom:0; }
.sens-name{ font-family:var(--sans); font-weight:400; font-size:13px;
  letter-spacing:.05em; color:var(--ink); }
.sens-name small{ display:block; font-family:var(--latin); font-size:10px;
  letter-spacing:.18em; color:var(--ink-faint); margin-top:3px; }
.sens-bar{ display:flex; gap:5px; align-items:center; }
.sens-bar i{ width:26px; height:5px; border-radius:2px; background:var(--line); display:block; }
.sens-bar i.on{ background:var(--wood); }
.sens-bar.is-ours i.on{ background:var(--wood-deep); }
.sens-note{ margin-left:10px; font-family:var(--sans); font-weight:300;
  font-size:11.5px; color:var(--ink-faint); }
@media(max-width:560px){
  .sens-row{ grid-template-columns:1fr; gap:8px; }
}



/* duration chooser */
.dur-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(12px,1.8vw,20px);
  margin-top:clamp(22px,2.8vw,32px); }
.dur-card{ padding:clamp(20px,2.4vw,28px) 12px; text-align:center;
  border:1px solid var(--line); background:var(--paper); }
.dur-card.is-rec{ border-color:var(--wood); }
.dur-min{ font-family:var(--latin); font-weight:300; font-size:clamp(26px,4vw,40px);
  line-height:1; color:var(--ink); }
.dur-min em{ font-style:normal; font-size:.34em; letter-spacing:.14em; margin-left:.2em; color:var(--ink-faint); }
.dur-for{ margin-top:12px; font-family:var(--sans); font-weight:300; font-size:12.5px;
  line-height:1.85; color:var(--ink-soft); }
.dur-tag{ display:inline-block; margin-top:10px; padding:3px 10px;
  font-family:var(--latin); font-size:9.5px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--wood-deep); border:1px solid var(--wood); }
@media(max-width:600px){ .dur-grid{ grid-template-columns:1fr; } }

/* safety emphasis box */
.safe-box{ border:1px solid var(--wood); background:var(--paper);
  padding:clamp(22px,2.6vw,30px); margin-top:clamp(18px,2.2vw,24px); }
.safe-box h3{ margin-top:0 !important; }
.safe-box .sol-list li::before{ background:var(--wood-deep); }



.kp{
  margin:clamp(20px,2.6vw,30px) 0; padding:clamp(18px,2.2vw,26px) clamp(20px,2.6vw,30px);
  border-left:2px solid var(--wood); background:var(--paper);
}
.sol-sec--tint .kp{ background:var(--paper); }
.kp p{ margin:0 !important; font-family:var(--serif) !important; font-weight:600;
  font-size:clamp(15px,1.8vw,18px) !important; line-height:2 !important;
  letter-spacing:.05em; color:var(--ink) !important; }
.kp p .mk{ color:var(--wood-deep); }



.plate{
  position:relative; margin:clamp(30px,4vw,48px) 0 0;
  padding:0 0 clamp(14px,1.8vw,20px);
}
/* offset brass rule behind the photo — the "passe-partout" */
.plate-frame{ position:relative; }
.plate-frame::before{
  content:""; position:absolute; z-index:0;
  top:clamp(12px,1.6vw,20px); left:clamp(12px,1.6vw,20px);
  right:calc(-1 * clamp(12px,1.6vw,20px)); bottom:calc(-1 * clamp(12px,1.6vw,20px));
  border:1px solid var(--wood); pointer-events:none;
}
.plate-frame.is-left::before{
  left:calc(-1 * clamp(12px,1.6vw,20px)); right:clamp(12px,1.6vw,20px);
}
.plate-img{
  position:relative; z-index:1; display:block; width:100%; height:auto;
  filter:saturate(.94);
}
/* index label sitting on the image edge */
.plate-tag{
  position:absolute; z-index:2; top:0; left:0;
  background:var(--paper); color:var(--wood-deep);
  padding:8px 14px; font-family:var(--latin); font-size:10px;
  letter-spacing:.26em; text-transform:uppercase; white-space:nowrap;
}
.sol-sec--tint .plate-tag{ background:var(--paper-2); }
/* caption */
.plate-cap{
  display:flex; align-items:baseline; gap:12px;
  margin-top:clamp(22px,2.6vw,30px);
}
.plate-cap .no{
  flex:none; font-family:var(--latin); font-size:11px; letter-spacing:.2em;
  color:var(--wood-deep); padding-top:2px;
}
.plate-cap p{
  margin:0 !important; font-family:var(--sans) !important; font-weight:300;
  font-size:12.5px !important; line-height:1.95 !important;
  letter-spacing:.03em; color:var(--ink-faint) !important;
}
/* reveal */
.plate{ opacity:0; transform:translateY(14px); transition:opacity .9s ease, transform .9s ease; }
.plate.is-in{ opacity:1; transform:none; }
@media(prefers-reduced-motion:reduce){
  .plate{ opacity:1 !important; transform:none !important; transition:none !important; }
}
@media(max-width:640px){
  .plate-frame::before{ top:8px; left:8px; right:-8px; bottom:-8px; }
  .plate-frame.is-left::before{ left:-8px; right:8px; }
  .plate-tag{ font-size:9px; padding:6px 10px; letter-spacing:.2em; }
}



  .sol-wrap{ width:min(860px,90vw); margin-inline:auto; }
  .sol-sec{ margin-top:clamp(62px,7.6vw,104px); }
  .sol-sec:first-of-type{ margin-top:0; }
  .sol-sec h2{
    font-family:var(--serif); font-weight:600;
    font-size:clamp(20px,2.5vw,29px); line-height:1.65; letter-spacing:.05em;
    color:var(--ink); margin:0 0 clamp(16px,2vw,22px);
  }
  .sol-sec h2 .num{
    font-family:var(--latin); font-weight:300; font-size:.62em;
    letter-spacing:.2em; color:var(--wood-deep); margin-right:14px;
  }
  .sol-sec h3{
    font-family:var(--sans); font-weight:500; font-size:clamp(15px,1.7vw,17px);
    letter-spacing:.06em; color:var(--ink); margin:clamp(26px,3vw,34px) 0 12px;
  }
  .sol-sec p{
    font-family:var(--sans); font-weight:300; font-size:clamp(14px,1.5vw,15.5px);
    line-height:2.15; letter-spacing:.04em; color:var(--ink-soft); margin:0 0 1.1em;
  }
  .sol-list{ list-style:none; padding:0; margin:0 0 1.2em; }
  .sol-list li{
    position:relative; padding-left:22px; margin-bottom:11px;
    font-family:var(--sans); font-weight:300; font-size:clamp(13.5px,1.5vw,15px);
    line-height:2.0; letter-spacing:.04em; color:var(--ink-soft);
  }
  .sol-list li::before{
    content:""; position:absolute; left:2px; top:.95em;
    width:7px; height:1px; background:var(--wood);
  }
  .sol-note{
    background:var(--paper-3); border-left:2px solid var(--wood);
    padding:clamp(22px,2.8vw,30px) clamp(20px,2.6vw,32px);
    margin:clamp(28px,3.4vw,40px) 0;
  }
  .sol-note p{ margin-bottom:.9em; font-size:clamp(13px,1.45vw,14.5px); }
  .sol-note p:last-child{ margin-bottom:0; }
  .sol-note strong{ font-weight:500; color:var(--ink); }
  .sol-spec{ border-top:1px solid var(--line); margin-top:clamp(22px,2.6vw,30px); }
  .sol-spec dl{ display:grid; grid-template-columns:170px 1fr; margin:0; }
  .sol-spec dt,.sol-spec dd{
    border-bottom:1px solid var(--line); padding:15px 4px; margin:0;
    font-family:var(--sans); font-size:13.5px; line-height:1.9; letter-spacing:.04em;
  }
  .sol-spec dt{ font-weight:500; color:var(--ink); }
  .sol-spec dd{ color:var(--ink-soft); }
  @media(max-width:640px){
    .sol-spec dl{ grid-template-columns:1fr; }
    .sol-spec dt{ border-bottom:0; padding-bottom:0; }
    .sol-spec dd{ padding-top:6px; }
  }



  .price-cat-foot{
    margin-top:clamp(14px,1.8vw,20px);
    font-family:var(--sans); font-weight:300; font-size:12.5px; line-height:1.95;
    letter-spacing:.03em; color:var(--ink-faint);
  }
  .pricing-detail .price-row .pval span{ display:block; margin-top:6px;
    font-size:12px; letter-spacing:.06em; color:var(--wood-deep); }



.price-cat{ position:relative; z-index:0; }
.price-cat--tint{ padding-top:clamp(40px,5vw,64px); padding-bottom:clamp(40px,5vw,64px); }
.price-cat--tint::before{
  content:""; position:absolute; top:0; left:50%; transform:translateX(-50%);
  width:100vw; height:100%; background:#FAFBFB; z-index:-1;
}
.price-cat--hero{
  border:1px solid var(--wood); background:var(--paper);
  padding:clamp(28px,3.6vw,46px) clamp(22px,3vw,40px);
  margin-top:clamp(40px,5vw,60px);
}
.price-cat--hero .hero-note{
  margin-top:clamp(16px,2vw,22px);
  font-family:var(--sans); font-weight:300; font-size:12.5px; letter-spacing:.04em;
  color:var(--ink-faint);
}
.price-row--rec{
  background:linear-gradient(to right, rgba(194,169,130,.10), rgba(194,169,130,.02));
  border-left:2px solid var(--wood);
  padding-left:clamp(14px,1.8vw,22px) !important;
}



/* tighter rows inside the long conditioning category */
#cat-recovery .price-row{ padding-top:clamp(15px,1.8vw,22px); padding-bottom:clamp(15px,1.8vw,22px); }
/* subtle sub-group labels within conditioning */
.price-subgroup{
  margin-top:clamp(20px,2.4vw,28px); margin-bottom:2px;
  font-family:var(--latin); font-size:10.5px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--wood-deep);
}
.price-subgroup:first-of-type{ margin-top:clamp(8px,1vw,12px); }
/* pull per-session sub in tighter */
#cat-recovery .price-row .pval span{ margin-top:4px; }



  .price-catnav{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px;
    margin:clamp(28px,3.4vw,44px) auto 0; }
  .price-catnav a{
    display:inline-flex; align-items:center; padding:11px 20px; min-height:44px;
    border:1px solid var(--line); border-radius:999px; text-decoration:none;
    font-family:var(--sans); font-size:13px; letter-spacing:.1em; color:var(--ink-soft);
    background:var(--paper); transition:background .3s ease,color .3s ease,border-color .3s ease;
  }
  .price-catnav a:hover,.price-catnav a:focus-visible{
    background:var(--wood); border-color:var(--wood); color:#fff; }
  .price-cat{ scroll-margin-top:96px; }



      /* カテゴリの区切り：大きな番号＋余白＋短いウッドのアクセントで区切る（罫線は足さない） */
      .pricing-detail .price-cat{ margin-top:clamp(84px,10.5vw,148px); }
      .pricing-detail .price-cat-head{
        border-top:0; border-bottom:0; position:relative;
        padding-top:0; padding-bottom:clamp(18px,2.2vw,26px);
      }
      .pricing-detail .price-cat-head::after{
        content:""; position:absolute; left:0; bottom:0;
        width:34px; height:2px; background:var(--wood);
      }
      .pricing-detail .price-cat-num{ font-size:clamp(44px,5.4vw,72px); }
      .pricing-detail .price-table{ border-top:0; }
      .pricing-detail .price-table .price-row:first-child{ border-top:1px solid var(--line); }

      /* per-session unit price line + two-tier price */
      .pricing-detail .pname small.unit{ color:var(--wood-deep); }
      .pricing-detail .price-row .pval{ text-align:right; }
      .pricing-detail .price-row .pname .ptag{ margin:0 0 10px; display:table; }
      .pricing-detail .price-cat-titles h2 .en{
        display:inline-block; font-family:var(--latin); font-weight:300; font-size:.52em;
        letter-spacing:.24em; text-transform:uppercase; color:var(--wood-deep); margin-left:14px; vertical-align:middle;
      }
      @media(max-width:768px){
        .pricing-detail .price-row{ grid-template-columns:1fr; gap:10px; }
        .pricing-detail .price-row .pval{ text-align:left; }
      }
    


.legal-dl{ border-top:1px solid var(--line); margin-top:clamp(20px,2.6vw,32px); }
.legal-dl .lrow{ display:grid; grid-template-columns:210px 1fr; border-bottom:1px solid var(--line); }
.legal-dl dt{
  padding:clamp(18px,2.2vw,24px) clamp(12px,1.6vw,20px);
  font-family:var(--sans); font-weight:500; font-size:13.5px; letter-spacing:.04em;
  color:var(--ink); background:#FAFBFB; border-right:1px solid var(--line);
}
.legal-dl dd{
  padding:clamp(18px,2.2vw,24px) clamp(14px,1.8vw,22px); margin:0;
  font-family:var(--sans); font-weight:300; font-size:13.5px; line-height:2.0;
  letter-spacing:.03em; color:var(--ink-soft);
}
.legal-dl dd strong{ font-weight:500; color:var(--ink); display:inline-block; margin-top:6px; }
.legal-dl dd .grp{ display:block; margin-top:12px; }
.legal-dl dd .grp:first-child{ margin-top:0; }
.legal-dl dd .gh{ font-weight:500; color:var(--wood-deep); font-size:12.5px; letter-spacing:.06em; }
.legal-dl dd ul{ list-style:none; padding:0; margin:4px 0 0; }
.legal-dl dd li{ padding-left:14px; position:relative; margin-bottom:3px; }
.legal-dl dd li::before{ content:""; position:absolute; left:0; top:.9em; width:6px; height:1px; background:var(--wood); }
.legal-foot{ margin-top:clamp(22px,2.8vw,32px); }
.legal-foot p{ font-family:var(--sans); font-weight:300; font-size:12px; line-height:1.95;
  letter-spacing:.03em; color:var(--ink-faint); margin:0 0 .7em; padding-left:16px; position:relative; }
.legal-foot p::before{ content:"※"; position:absolute; left:0; color:var(--wood-deep); }
@media(max-width:640px){
  .legal-dl .lrow{ grid-template-columns:1fr; }
  .legal-dl dt{ border-right:0; border-bottom:1px solid var(--line); }
}



/* light content area on the dark tpage shell (same pattern as solution) */
.doc-body{ background:var(--paper); color:var(--ink); }
.doc-body .wrap{ color:var(--ink); }
/* footer stays dark as designed */



.pp-intro{ font-family:var(--sans); font-weight:300; font-size:14px; line-height:2.1;
  letter-spacing:.03em; color:var(--ink-soft); }
.pp-dates{ margin-top:clamp(18px,2.2vw,26px); font-family:var(--sans); font-size:12px;
  letter-spacing:.05em; color:var(--ink-faint); }
.pp-art{ margin-top:clamp(38px,4.4vw,56px); }
.pp-art h2{
  font-family:var(--serif); font-weight:600; font-size:clamp(16px,2vw,21px);
  letter-spacing:.05em; color:var(--ink); margin:0 0 clamp(12px,1.6vw,18px);
  padding-left:14px; border-left:2px solid var(--wood); line-height:1.6;
}
.pp-art h2 .no{ font-family:var(--latin); font-size:.7em; letter-spacing:.14em;
  color:var(--wood-deep); margin-right:10px; }
.pp-art p{ font-family:var(--sans); font-weight:300; font-size:13.5px; line-height:2.1;
  letter-spacing:.03em; color:var(--ink-soft); margin:0 0 1em; }
.pp-art ol,.pp-art ul{ margin:0 0 1em; padding-left:0; list-style:none; counter-reset:pp; }
.pp-art ol li{ counter-increment:pp; position:relative; padding-left:30px; margin-bottom:9px;
  font-family:var(--sans); font-weight:300; font-size:13.5px; line-height:1.95;
  letter-spacing:.03em; color:var(--ink-soft); }
.pp-art ol li::before{ content:counter(pp); position:absolute; left:0; top:0;
  font-family:var(--latin); font-size:12px; color:var(--wood-deep); }
.pp-art ul li{ position:relative; padding-left:16px; margin-bottom:8px;
  font-family:var(--sans); font-weight:300; font-size:13.5px; line-height:1.95;
  letter-spacing:.03em; color:var(--ink-soft); }
.pp-art ul li::before{ content:""; position:absolute; left:0; top:.9em; width:7px; height:1px; background:var(--wood); }
.pp-contact{ margin-top:clamp(14px,1.8vw,22px); padding:clamp(20px,2.4vw,28px);
  background:#FAFBFB; border:1px solid var(--line); }
.pp-contact dl{ margin:0; display:grid; grid-template-columns:120px 1fr; gap:10px 18px; }
.pp-contact dt{ font-family:var(--sans); font-weight:500; font-size:12.5px; color:var(--ink); margin:0; }
.pp-contact dd{ font-family:var(--sans); font-weight:300; font-size:12.5px; color:var(--ink-soft);
  margin:0; line-height:1.8; }
@media(max-width:560px){ .pp-contact dl{ grid-template-columns:1fr; gap:2px 0; }
  .pp-contact dd{ margin-bottom:10px; } }


/* ===================================================================
   コンディショニング 都度利用マトリクス（回数券表と揃えた見た目）
   =================================================================== */
.visit-matrix{ margin-top:6px; border-top:1px solid var(--line); }
.visit-matrix .vm-row{
  display:grid; grid-template-columns:120px 1fr; align-items:center;
  border-bottom:1px solid var(--line);
}
.visit-matrix .vm-dur{
  display:flex; align-items:baseline; gap:4px;
  padding:14px clamp(10px,1.4vw,16px);
  font-family:var(--latin); font-weight:300; font-size:clamp(19px,2.2vw,24px);
  color:var(--ink); border-right:1px solid var(--line);
}
.visit-matrix .vm-dur small{ font-family:var(--sans); font-size:12px; color:var(--ink-faint); }
.visit-matrix .vm-dur em{
  font-style:normal; margin-left:6px; padding:2px 7px;
  font-family:var(--latin); font-size:9.5px; letter-spacing:.14em;
  color:var(--wood-deep); border:1px solid var(--wood); white-space:nowrap;
}
.visit-matrix .vm-price{
  padding:14px clamp(12px,1.6vw,20px); text-align:right;
  font-family:var(--serif); font-weight:600; font-size:clamp(17px,2vw,21px);
  color:var(--ink);
}
.visit-matrix .vm-price i{
  display:block; margin-top:3px; font-style:normal;
  font-family:var(--sans); font-weight:300; font-size:11px; color:var(--ink-faint);
}
.visit-matrix .vm-row.is-rec{
  background:linear-gradient(to right, rgba(194,169,130,.10), rgba(194,169,130,.02));
}
@media(max-width:520px){
  .visit-matrix .vm-row{ grid-template-columns:96px 1fr; }
  .visit-matrix .vm-dur em{ display:block; margin:4px 0 0; width:fit-content; }
}


/* ===================================================================
   コンディショニング統合料金表
   =================================================================== */
.cond-matrix{ margin-top:clamp(18px,2.2vw,26px); border-top:1px solid var(--line); }
.cond-matrix .cm-head,
.cond-matrix .cm-row{
  display:grid; grid-template-columns:1.05fr 1fr 1.25fr 1.25fr;
  align-items:center; border-bottom:1px solid var(--line);
}
.cond-matrix .cm-head{ padding:12px 0; }
.cond-matrix .cm-head span{
  font-family:var(--latin); font-size:10.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-faint); text-align:right; padding:0 clamp(8px,1.2vw,16px);
}
.cond-matrix .cm-head span:first-child{ text-align:left; }
.cond-matrix .cm-row{ padding:clamp(15px,1.9vw,22px) 0; }
.cond-matrix .cm-row.is-rec{
  background:linear-gradient(to right, rgba(194,169,130,.10), rgba(194,169,130,.02));
  border-left:2px solid var(--wood);
}
.cm-dur{
  font-family:var(--serif); font-size:clamp(17px,2.1vw,21px); color:var(--ink);
  padding:0 clamp(8px,1.2vw,16px); display:flex; align-items:baseline; gap:4px; flex-wrap:wrap;
}
.cm-dur small{ font-size:12px; font-family:var(--sans); font-weight:300; color:var(--ink-soft); }
.cm-dur em{
  font-style:normal; font-family:var(--latin); font-size:9.5px; letter-spacing:.16em;
  color:var(--wood-deep); border:1px solid var(--wood); padding:2px 7px; margin-left:2px;
}
.cm-cell{
  text-align:right; padding:0 clamp(8px,1.2vw,16px);
  display:flex; flex-direction:column; align-items:flex-end; gap:3px;
}
.cm-cell b{
  font-family:var(--sans); font-weight:400; font-size:clamp(14px,1.7vw,17px);
  letter-spacing:.02em; color:var(--ink);
}
.cm-cell i{
  font-style:normal; font-family:var(--sans); font-weight:300; font-size:11px;
  color:var(--ink-faint);
}
.cm-note{
  margin-top:14px; font-family:var(--sans); font-weight:300; font-size:11.5px;
  letter-spacing:.03em; color:var(--ink-faint);
}
@media(max-width:700px){
  .cond-matrix .cm-head{ display:none; }
  .cond-matrix .cm-row{
    grid-template-columns:1fr 1fr; gap:10px 8px;
    padding:clamp(16px,2.4vw,20px) 0;
  }
  .cm-dur{ grid-column:1 / -1; padding-bottom:4px; }
  .cm-cell{ align-items:flex-start; text-align:left; }
  .cm-cell::before{
    font-family:var(--latin); font-size:9.5px; letter-spacing:.16em; text-transform:uppercase;
    color:var(--ink-faint); margin-bottom:1px;
  }
  .cm-row .cm-cell:nth-of-type(1)::before{ content:"都度"; }
  .cm-row .cm-cell:nth-of-type(2)::before{ content:"5回券"; }
  .cm-row .cm-cell:nth-of-type(3)::before{ content:"10回券"; }
  .cm-row .cm-cell:nth-of-type(1){ grid-column:1 / -1; }
}

/* ===================================================================
   solution：確認事項ブロック
   他の見出しは左にブラスの縦線＋余白があるのに対し、ここだけ
   縁ぴったりから始まり左に寄って見えていた。内側に余白を与えて
   本文の視覚的な起点を他セクションと揃える。
   =================================================================== */
.sol-disclaimer{
  box-sizing:border-box; width:100%;
  /* .kp と同じ内側余白・同じ縦線幅で、テキストの起点を完全に揃える */
  padding-left:clamp(20px,2.6vw,30px);
  padding-right:clamp(20px,2.6vw,30px);
  border-left:2px solid var(--line);
}
.sol-disclaimer .sol-disc-title{ margin-left:0; }

/* ===================================================================
   本文中のロゴタイプ（THE REV.）— 光学調整
   明朝の見出し・本文の中で、周囲の文字と大きさ・ベースラインを揃える。
   ロゴは大文字のみで構成されるため、和文の全角字面より一段大きく
   見せないと「浮いて」しまう。cap-height を基準に合わせる。
   =================================================================== */
.logo-inline{
  display:inline-block !important;
  width:auto !important;
  height:0.78em !important;          /* 和文のcap-heightに合わせる */
  vertical-align:baseline !important;
  position:relative !important;
  top:0.045em !important;            /* ベースラインへ落とし込む */
  margin:0 0.14em 0 0.02em !important; /* 後続の助詞との間に自然な字間 */
}
/* 見出し（明朝・太め）の中ではやや大きめに */
.h-lead .logo-inline,
h2 .logo-inline{
  height:0.82em !important;
  top:0.05em !important;
  margin:0 0.16em 0 0.02em !important;
}
/* 本文（ゴシック・細め）の中では少し控えめに */
.wi-body .logo-inline,
p .logo-inline{
  height:0.74em !important;
  top:0.04em !important;
}


/* ===================================================================
   ヘッダーロゴ：2枚重ねで確実に切り替える（フィルター依存を廃止）
   ・最上部＝ヘッダー透明で背景が暗い → 白ロゴ
   ・スクロール後＝ヘッダーが明るい紙色 → 黒ロゴ
   ・法定ページ（.tpage）＝常にダークヘッダー → 常に白ロゴ
   =================================================================== */
.brand{ position:relative; display:inline-flex; align-items:center; }
.brand-logo{
  height:23px; width:auto; display:block;
  transition:opacity .35s ease;
}
.brand-logo--dark{
  position:absolute; left:0; top:50%; transform:translateY(-50%);
  opacity:0; pointer-events:none;
}
.brand-logo--light{ opacity:1; }
/* スクロールしてヘッダーが明るくなったら黒ロゴへ */
.site-header.scrolled .brand-logo--light{ opacity:0; }
.site-header.scrolled .brand-logo--dark{ opacity:1; }
/* 法定ページはヘッダーが常にダーク＝白ロゴ固定 */
.tpage .site-header .brand-logo--light,
body:has(.page-head) .site-header .brand-logo--light{ opacity:1 !important; }
.tpage .site-header .brand-logo--dark,
body:has(.page-head) .site-header .brand-logo--dark{ opacity:0 !important; }
@media(prefers-reduced-motion:reduce){ .brand-logo{ transition:none; } }


/* ===================================================================
   キャリア写真ストリップ（トレーナー紹介の脇に添えるグラフィック）
   1枚を大きく、残り2枚を段違いに重ねて「資料を並べた」印象にする。
   =================================================================== */
.career-strip{
  display:grid;
  grid-template-columns:1fr 1fr;
  grid-template-rows:auto auto;
  gap:clamp(12px,1.6vw,20px);
  align-items:start;
}
.cs-item{
  position:relative; margin:0; overflow:hidden;
  background:var(--paper-2);
}
.cs-item--main{ grid-column:1 / -1; }
.cs-item img{
  display:block; width:100%; height:100%; object-fit:cover;
  filter:saturate(.9) contrast(1.02);
  transition:transform 1.1s cubic-bezier(.2,.7,.2,1);
}
.cs-item--main img{ aspect-ratio:4/3; }
.cs-item--sub img{ aspect-ratio:1/1; }
.cs-item:hover img{ transform:scale(1.03); }
/* ブラスの細枠を内側にオフセット */
.cs-item::after{
  content:""; position:absolute; inset:10px;
  border:1px solid rgba(194,169,130,.55);
  pointer-events:none;
}
/* 番号＋ラベル */
.cs-item figcaption{
  position:absolute; left:0; bottom:0;
  display:flex; align-items:baseline; gap:8px;
  padding:9px 14px;
  background:rgba(35,34,32,.82);
  backdrop-filter:blur(2px);
}
.cs-no{
  font-family:var(--latin); font-size:9.5px; letter-spacing:.2em;
  color:var(--wood);
}
.cs-label{
  font-family:var(--latin); font-size:10px; letter-spacing:.22em;
  text-transform:uppercase; color:#F0EBE2;
}
/* 段違いに落として単調さを消す */
.cs-item--sub:last-child{ transform:translateY(clamp(14px,2.2vw,30px)); }

@media(max-width:860px){
  .career-strip{ gap:10px; }
  .cs-item--sub:last-child{ transform:none; }
  .cs-item::after{ inset:7px; }
  .cs-item figcaption{ padding:7px 11px; }
  .cs-label{ font-size:9px; letter-spacing:.18em; }
}
@media(prefers-reduced-motion:reduce){
  .cs-item img{ transition:none; }
  .cs-item:hover img{ transform:none; }
}


/* ===================================================================
   料金ページ下部「ご利用にあたって」— 補足なので簡潔・可読性優先
   =================================================================== */
.terms-mini{
  list-style:none; margin:clamp(22px,2.8vw,32px) 0 0; padding:0;
  border-top:1px solid rgba(194,169,130,.28);
}
.terms-mini li{
  display:grid; grid-template-columns:96px 1fr; gap:16px;
  padding:clamp(14px,1.7vw,18px) 0;
  border-bottom:1px solid rgba(194,169,130,.18);
  font-family:var(--sans); font-weight:300; font-size:13.5px; line-height:1.85;
  color:#E6E1D8;
}
.terms-mini li span{
  font-family:var(--latin); font-weight:400; font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--wood); padding-top:3px;
}
.terms-legal-links{
  display:flex; flex-wrap:wrap; gap:10px 24px; margin-top:clamp(22px,2.8vw,30px);
}
.terms-legal-links a{
  font-family:var(--sans); font-size:12.5px; letter-spacing:.04em;
  color:var(--wood); text-decoration:none; border-bottom:1px solid rgba(194,169,130,.4);
  padding-bottom:2px; transition:color .25s ease;
}
.terms-legal-links a:hover{ color:#E0C8A1; }
@media(max-width:560px){
  .terms-mini li{ grid-template-columns:1fr; gap:3px; }
  .terms-mini li span{ padding-top:0; }
}

/* ===================================================================
   「Notes（ご利用にあたって）」— あくまで補足。主張を弱め、
   ブログのカテゴリーメニューに見えないよう控えめに整える。
   （#terms-info 内のみに限定。他セクションには影響しない）
   =================================================================== */
#terms-info{ padding-block:clamp(28px,4vw,44px); }
#terms-info .wrap{
  border-top:1px solid rgba(194,169,130,.16);
  padding-top:clamp(24px,3vw,36px);
}
/* 見出し類は小さく・静かに。eyebrow の装飾ラインも消す */
#terms-info .eyebrow{
  font-size:10px; letter-spacing:.32em; color:var(--wood);
  opacity:.7; margin:0 0 8px; gap:0;
}
#terms-info .eyebrow::before{ display:none; }
#terms-info .h-sec{
  font-family:var(--sans); font-weight:400;
  font-size:14px !important; letter-spacing:.06em;
  color:#CFC9BF; margin:0 0 6px;
}
/* リストは区切り線を弱め、ラベルも本文になじむ控えめな表示に */
#terms-info .terms-mini{
  border-top:0; margin-top:12px;
  font-size:12.5px;
}
#terms-info .terms-mini li{
  grid-template-columns:76px 1fr; gap:12px;
  padding:9px 0;
  border-bottom:1px solid rgba(194,169,130,.10);
  font-size:12.5px; line-height:1.75; color:#B9B4AB;
}
#terms-info .terms-mini li:last-child{ border-bottom:0; }
#terms-info .terms-mini li span{
  font-size:10px; letter-spacing:.1em; color:var(--wood);
  opacity:.72; font-weight:400;
}
#terms-info .terms-legal-links{ margin-top:16px; }
#terms-info .terms-legal-links a{
  font-size:11.5px; color:var(--wood); opacity:.85;
  border-bottom-color:rgba(194,169,130,.28);
}
@media(max-width:560px){
  #terms-info .terms-mini li{ grid-template-columns:1fr; gap:1px; }
}

/* 料金ページ末尾：利用規約への簡潔な導線（補足程度・予約CTAより目立たせない） */
#terms-info .price-terms-link{ margin:0; }
#terms-info .price-terms-link p{
  font-family:var(--sans); font-weight:300;
  font-size:12.5px; line-height:1.9; letter-spacing:.02em;
  color:#B9B4AB; margin:0 0 10px; max-width:60ch;
}
#terms-info .price-terms-link a{
  display:inline-block;
  font-family:var(--sans); font-size:12.5px; letter-spacing:.04em;
  color:var(--wood); text-decoration:none;
  border-bottom:1px solid rgba(194,169,130,.4); padding-bottom:2px;
  transition:color .25s ease;
}
#terms-info .price-terms-link a:hover{ color:#E0C8A1; }


/* ===================================================================
   法定ページ（特商法・プライバシー）のヘッダー
   絶対配置だとスクロールで流れて消えるため固定に変更。
   本文は明るい紙地なので、スクロール後は紙色の背景＋黒ロゴにする。
   =================================================================== */
.tpage .site-header,
body:has(.page-head) .site-header{
  position:fixed !important; top:0; left:0; right:0; z-index:900;
  transition:background .35s ease, box-shadow .35s ease;
}
.tpage .site-header.scrolled,
body:has(.page-head) .site-header.scrolled{
  background:rgba(251,250,247,.94) !important;
  box-shadow:0 1px 0 rgba(35,34,32,.07) !important;
  backdrop-filter:blur(8px);
}
/* スクロール後は文字とロゴを暗色へ */
.tpage .site-header.scrolled .nav a,
body:has(.page-head) .site-header.scrolled .nav a{ color:var(--ink) !important; }
.tpage .site-header.scrolled .brand-logo--light,
body:has(.page-head) .site-header.scrolled .brand-logo--light{ opacity:0 !important; }
.tpage .site-header.scrolled .brand-logo--dark,
body:has(.page-head) .site-header.scrolled .brand-logo--dark{ opacity:1 !important; }
/* ハンバーガーの線もスクロール後は暗色に */
.tpage .site-header.scrolled .nav-toggle span,
body:has(.page-head) .site-header.scrolled .nav-toggle span{ background:var(--ink) !important; }

/* ファーストビューの地域・業態表示（B1） */
.fv-locale{
  margin:6px 0 0; font-family:var(--sans); font-weight:300;
  font-size:clamp(11.5px,1.3vw,13px); letter-spacing:.12em;
  color:rgba(239,234,224,.82);
}
@media(max-width:640px){ .fv-locale{ letter-spacing:.08em; } }

/* ===================================================================
   What is THE REV. — 白背景に配置し、繰り上げに伴い余白を調整
   （直前の共感セクション末尾ブロックを削除したため）
   =================================================================== */
.whatis{
  background:var(--paper) !important;   /* 白（#FBFAF7）ベース */
  padding-top:clamp(70px,8vw,110px) !important;
  padding-bottom:clamp(70px,8vw,110px) !important;
}
/* Train. Condition. Recover. を締めの位置で少し強調 */
.whatis .wi-sign{
  margin-top:clamp(30px,3.6vw,44px);
  font-family:var(--latin); font-weight:400;
  font-size:clamp(11px,1.3vw,13px); letter-spacing:.3em;
  text-transform:uppercase; color:var(--wood-deep);
}
.whatis .wi-sign::before{
  content:""; display:block; width:34px; height:1px;
  background:var(--wood); margin:0 auto clamp(16px,2vw,22px);
}

/* 画像読み込み時のちらつき軽減（先読みと併用）
   ロゴ類は独自の表示制御があるため対象外にする。 */
.media-fill[loading="lazy"],
.plate-img[loading="lazy"],
.cs-item img[loading="lazy"]{
  transition:opacity .5s ease;
}
/* JSが動かない場合でも必ず見えるよう、初期値は不透明のまま。
   読み込み中の背景だけ敷いて、体感のちらつきを抑える。 */
.media-fill[loading="lazy"],
.plate-img[loading="lazy"],
.cs-item img[loading="lazy"]{
  background:linear-gradient(180deg, var(--paper-2), var(--paper-3));
}
@media(prefers-reduced-motion:reduce){
  .media-fill[loading="lazy"],
  .plate-img[loading="lazy"],
  .cs-item img[loading="lazy"]{ transition:none; }
}

/* ===================================================================
   実績帯（Trust Strip）— ファーストビュー直下
   ファーストビューより目立たせず、静かに信頼を補強する。
   =================================================================== */
.trust-strip{
  background:var(--paper-2);
  border-top:1px solid rgba(194,169,130,.22);
  border-bottom:1px solid rgba(194,169,130,.22);
  padding-block:clamp(28px,3.6vw,56px);
}
.trust-strip-inner{
  width:min(1080px,90vw); margin:0 auto;
  display:grid; grid-template-columns:repeat(3,1fr);
}
.trust-item{
  text-align:center; padding:4px clamp(10px,1.8vw,24px);
  border-left:1px solid rgba(194,169,130,.24);
}
.trust-item:first-child{ border-left:0; }
.trust-value{
  margin:0 0 8px; font-family:var(--latin); font-weight:300;
  font-size:clamp(26px,3.4vw,40px); line-height:1.15; letter-spacing:.02em;
  color:var(--ink);
}
.trust-value span{
  font-size:.52em; margin-left:2px; color:var(--wood-deep); vertical-align:super;
}
.trust-value--text{
  font-family:var(--sans); font-weight:400;
  font-size:clamp(13px,1.6vw,17px); letter-spacing:.08em; line-height:1.5;
  padding-top:clamp(4px,1vw,10px);
}
.trust-label{
  margin:0; font-family:var(--sans); font-weight:300;
  font-size:clamp(10.5px,1.15vw,12.5px); letter-spacing:.06em; line-height:1.7;
  color:var(--ink-faint);
}
@media(max-width:760px){
  .trust-strip{ padding-block:clamp(28px,5vw,36px); }
  .trust-strip-inner{ grid-template-columns:1fr; gap:0; }
  .trust-item{
    border-left:0; border-top:1px solid rgba(194,169,130,.2);
    padding:clamp(14px,3vw,18px) 8px;
  }
  .trust-item:first-child{ border-top:0; padding-top:0; }
  .trust-value{ font-size:clamp(24px,7vw,32px); margin-bottom:5px; }
  .trust-value--text{ font-size:clamp(13px,3.6vw,15px); padding-top:0; }
}

/* ===================================================================
   リカバリーの利用価値ブロック（solution §03）
   既存のセクション表現に合わせ、控えめな3項目グリッドで示す。
   =================================================================== */
.sol-value-grid{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(12px,1.8vw,20px);
  margin-top:clamp(24px,3vw,34px);
}
.sol-value-item{
  padding:clamp(18px,2.2vw,24px) clamp(14px,1.8vw,20px);
  background:var(--paper);
  border:1px solid rgba(194,169,130,.28);
}
.sol-value-num{
  display:block; margin-bottom:10px;
  font-family:var(--latin); font-size:10.5px; letter-spacing:.2em;
  color:var(--wood-deep);
}
.sol-value-item p{
  margin:0 !important; font-family:var(--sans) !important; font-weight:400;
  font-size:clamp(12.5px,1.4vw,14px) !important; line-height:1.75 !important;
  letter-spacing:.03em; color:var(--ink) !important;
}
@media(max-width:760px){
  .sol-value-grid{ grid-template-columns:1fr; gap:10px; }
  .sol-value-item{ padding:14px 16px; display:flex; align-items:baseline; gap:12px; }
  .sol-value-num{ margin-bottom:0; flex:none; }
}

/* 酸素ルーム紹介の2段落目（1段落目と詰まらないように） */
.pillar-text .pillar-sub{ margin-top:14px; }

/* ===================================================================
   ドロワー内 SNS（Instagram / 公式LINE）
   予約CTAより主張を抑え、アイコン＋短いラベルで並置する。
   =================================================================== */
.d-social{
  display:flex; gap:10px;
  margin-top:clamp(18px,3vw,24px);
  padding-top:clamp(16px,2.6vw,20px);
  border-top:1px solid rgba(239,234,224,.14);
}
.d-social-link{
  flex:1 1 0;
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:46px; padding:0 10px;
  border:1px solid rgba(239,234,224,.22);
  color:rgba(239,234,224,.72) !important;
  font-family:var(--sans); font-weight:300;
  font-size:12.5px; letter-spacing:.06em; text-decoration:none;
  background:transparent;
  transition:color .25s ease, border-color .25s ease, background .25s ease;
}
.d-social-link svg{
  width:16px; height:16px; flex:none; color:var(--wood);
  transition:color .25s ease;
}
.d-social-link span{ white-space:nowrap; }
.d-social-link:hover,
.d-social-link:focus-visible{
  color:#F4EFE6 !important;
  border-color:rgba(194,169,130,.55);
  background:rgba(194,169,130,.08);
}
.d-social-link:hover svg{ color:#D8BE96; }
@media(max-width:360px){
  .d-social{ gap:8px; }
  .d-social-link{ font-size:11.5px; gap:6px; padding:0 6px; }
  .d-social-link svg{ width:15px; height:15px; }
}

/* ===================================================================
   リカバリーページ内ナビ（price-catnav と同系統・追従なし）
   =================================================================== */
/* ===================================================================
   ページ内メニュー（リカバリー）
   「押せる」ことが一目で伝わるよう、番号インデックス＋常時下線＋矢印を持つ
   カード型リンクに変更。濃色下地に映える上品さは維持する。
   =================================================================== */
.solution-nav{
  width:min(880px,90vw);
  margin:0 auto clamp(34px,4.4vw,54px);
}
/* メニューであることを明示する小見出し */
.sn-label{
  font-family:var(--latin); font-weight:300;
  font-size:10px; letter-spacing:.34em; text-transform:uppercase;
  color:var(--wood);
  text-align:center; margin:0 0 16px;
  display:flex; align-items:center; justify-content:center; gap:12px;
}
.sn-label::before,
.sn-label::after{
  content:""; width:26px; height:1px; background:rgba(194,169,130,.5);
}
.sn-items{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
}
.solution-nav a{
  position:relative;
  display:flex; align-items:center; gap:10px;
  min-height:56px; padding:12px 34px 12px 16px;
  text-decoration:none;
  background:rgba(255,255,255,.045);
  border:1px solid rgba(194,169,130,.3);
  transition:background .3s ease, border-color .3s ease, transform .3s ease;
}
.sn-no{
  font-family:var(--latin); font-weight:400;
  font-size:10.5px; letter-spacing:.14em;
  color:var(--wood);
  flex:0 0 auto;
}
.sn-txt{
  font-family:var(--sans); font-weight:300;
  font-size:12.5px; letter-spacing:.08em; line-height:1.4;
  color:#EFEAE0;
}
/* 右端の矢印：リンクであることの明示 */
.solution-nav a::after{
  content:""; position:absolute; right:15px; top:50%;
  width:6px; height:6px; margin-top:-3px;
  border-top:1px solid var(--wood); border-right:1px solid var(--wood);
  transform:rotate(45deg);
  transition:transform .3s ease, right .3s ease;
}
.solution-nav a:hover,
.solution-nav a:focus-visible{
  background:rgba(194,169,130,.16);
  border-color:rgba(194,169,130,.75);
}
.solution-nav a:hover::after,
.solution-nav a:focus-visible::after{ right:11px; }
.solution-nav a:active{ transform:scale(.985); }
/* 固定ヘッダーに隠れないよう、ジャンプ先に余白を確保 */
.sol-sec[id]{ scroll-margin-top:120px; }
@media(max-width:820px){
  .sn-items{ grid-template-columns:repeat(2,1fr); }
}
@media(max-width:640px){
  .sn-items{ grid-template-columns:repeat(2,1fr); gap:8px; }
  .solution-nav a{
    min-height:52px; padding:11px 30px 11px 13px; gap:8px;
  }
  .sn-txt{ font-size:12px; letter-spacing:.04em; }
  .sn-no{ font-size:10px; }
  .solution-nav a::after{ right:12px; }
  .solution-nav a:hover::after,
  .solution-nav a:focus-visible::after{ right:9px; }
}



/* ページ内アンカーが固定ヘッダーに隠れないようにする */
#faq{ scroll-margin-top:96px; }

/* ===================================================================
   ページ内アンカーの固定ヘッダー対策
   主要セクションへ移動しても見出しが隠れないようオフセットを統一する。
   （.price-cat の既存指定は維持）
   =================================================================== */
#whatis,
#solution,
#facility-mini,
#pricing,
#faq,
#trainer,
#access,
#contact{
  scroll-margin-top: clamp(76px, 9vh, 104px);
}
.solution-anchor,
.sol-sec[id]{
  scroll-margin-top: clamp(76px, 9vh, 104px);
}
/* ===================================================================
   視認性ブラッシュアップ
   方針：文字を一律に太くするとブランドの繊細さが崩れるため、
   ①コントラスト ②最小サイズ ③字間・行間 の3点で読みやすさを上げる。
   フォントウェイトは原則そのまま（極端に細い300のみ、小さい文字で350相当へ）。
   =================================================================== */

/* ---------- ① 補足文字のコントラスト改善 ----------
   --ink-faint #968F82 は白地で 3.07、アイボリー地で 2.82 と
   WCAG本文基準(4.5)に届いていなかったため、色味を保ったまま暗くする。 */
:root{
  --ink-faint: #6F675C;   /* 旧 #968F82 → 白地 4.94 / アイボリー地 4.55 */
  --wood-deep: #8A6E4B;   /* 旧 #9C8160 → 白地 4.55（リンク・小見出し用） */
}

/* 暗背景では従来の明るさを保つ（暗所で暗くすると逆効果のため個別指定） */
.tpage .foot-col a,
.site-footer .ll,
.site-footer .foot-corp{
  color: rgba(239,234,224,.80);
}

/* ---------- ② 最小サイズの引き上げ（スマホ優先） ---------- */
@media (max-width: 860px){
  /* 9〜10px だった英字ラベル類を 11px 以上に */
  .cs-label{ font-size:10.5px !important; letter-spacing:.16em; }
  .cs-no{ font-size:11px !important; }
  .d-en{ font-size:10.5px !important; }
  .ll{ font-size:11.5px !important; }
  /* 11px の帯ラベル・小見出しを 12px に */
  .eyebrow{ font-size:12px !important; letter-spacing:.2em; }
  .fv-tagline{ font-size:11.5px !important; letter-spacing:.16em; }
  .trust-label{ font-size:12px !important; line-height:1.75; }
  /* CTA周辺の補足は 13px まで引き上げ、行間も確保 */
  .cta-note,
  .fv-locale{ font-size:13px !important; line-height:1.75; }
}

/* ---------- ③ 細字の可読性補強 ----------
   weight:300 のまま小さく使うと線が飛ぶため、
   13px 未満の本文系のみ 350 相当（実際は400）へ引き上げる。 */
.cta-note,
.fv-locale,
.trust-label,
.plate-cap p,
.sol-mini-note,
.cm-note,
.terms-mini li{
  font-weight: 400;
}

/* ---------- ヒーロー：写真の上で読ませるための下地強化 ---------- */
.hero-copy .fv-tagline{
  color: #D8BE96;                        /* ブラスをやや明るく */
  text-shadow: 0 1px 10px rgba(0,0,0,.55);
}
.hero-copy .fv-locale{
  color: rgba(244,239,230,.94) !important;
  text-shadow: 0 1px 10px rgba(0,0,0,.5);
}
.hero-copy .fv-sub{
  color: #EDE8E0 !important;
  text-shadow: 0 1px 12px rgba(0,0,0,.5);
}
.hero-copy .cta-note{
  color: #EDE8E0 !important;
  text-shadow: 0 1px 10px rgba(0,0,0,.55);
}
.fv-main{ text-shadow: 0 2px 18px rgba(0,0,0,.42); }

/* ---------- 本文の行間をわずかに広げて読みやすく ---------- */
@media (max-width: 640px){
  .sol-sec p,
  .pillar-text p,
  .wi-body,
  .faq-a p{ line-height: 1.95; }
}

/* ---------- 「大切にするのは」本文：文字組みブラッシュアップ ----------
   PC・スマホとも、意味の切れ目（読点・句点）でのみ改行する。
   スマホは1行が長くなりすぎないよう、追加の改行（.sp-br）を効かせる。 */
.wi-body .sp-br{ display:none; }              /* PCでは追加改行を出さない */
.at-text .sp-br{ display:none; }              /* トレーナー紹介文も同様 */
/* 段落間の余白（.whatis .wi-body の margin:0 auto に負けないよう詳細度を上げる） */
.whatis .wi-body + .wi-body{ margin-top:1.9em; }
@media (max-width:640px){
  .whatis .wi-body{
    max-width:100%;
    font-size:14.5px;
    line-height:2.05;
    letter-spacing:.02em;
    overflow-wrap:normal;
    word-break:normal;
    line-break:strict;
  }
  .wi-body .sp-br{ display:inline; }          /* スマホのみ追加改行を有効化 */
  .whatis .wi-body + .wi-body{ margin-top:1.6em; }
  .at-text .sp-br{ display:inline; }          /* トレーナー紹介文も同様 */
}

/* ---------- フォーカスリング（既存色の視認性を確保） ---------- */
a:focus-visible,
button:focus-visible{ outline-color: var(--wood-deep); }

/* ===================================================================
   ヒーロー：文字を載せる側だけ暗い下地を作る
   写真は差し替えず、コピー側（左〜中央）にグラデーションを重ねて
   細い明朝・ゴシックでも十分な明暗差を確保する。
   =================================================================== */
.hero-media::after{
  content:"";
  position:absolute; inset:0; z-index:1;
  background:
    linear-gradient(100deg,
      rgba(20,19,17,.82) 0%,
      rgba(20,19,17,.72) 34%,
      rgba(20,19,17,.42) 58%,
      rgba(20,19,17,.18) 78%,
      rgba(20,19,17,.10) 100%),
    linear-gradient(to bottom,
      rgba(20,19,17,.45) 0%,
      rgba(20,19,17,.10) 26%,
      rgba(20,19,17,.10) 62%,
      rgba(20,19,17,.50) 100%);
  pointer-events:none;
}
.hero-inner{ position:relative; z-index:2; }
@media(max-width:860px){
  /* スマホは横幅が狭く文字が写真中央まで乗るため、全体をやや均一に暗く */
  .hero-media::after{
    background:
      linear-gradient(to bottom,
        rgba(20,19,17,.55) 0%,
        rgba(20,19,17,.42) 30%,
        rgba(20,19,17,.48) 62%,
        rgba(20,19,17,.66) 100%);
  }
}

/* ===================================================================
   残存していた低コントラスト箇所の個別調整
   ブラス(--wood #C2A982)は白地で2.17しかないため、
   「小さい文字」で使っている箇所のみ濃いブラスへ寄せる。
   大きな装飾数字（price-cat-num など）は意匠として維持。
   =================================================================== */
.kicker,
.fac-kicker,
.plux-idx,
.plux-tax,
.plate-tag,
.cs-no,
.cs-label,
.cm-note,
.sol-value-num,
.trust-value span{
  color: var(--wood-deep);   /* #8A6E4B = 白地4.56 */
}
/* 図版キャプションは暗い帯の上に置かれるため明るいまま維持しつつ、
   帯の不透明度を上げて背景写真の影響を減らす */
.plate-cap p{ color: var(--ink-soft) !important; }
.cs-item figcaption{ background: rgba(28,27,25,.88); }
/* 11px の注記類はサイズも1段上げる */
.price-note,
.sol-mini-note{ font-size:12px; color:var(--ink-soft); }

/* ===================================================================
   背景の明暗に応じた文字色の最終調整
   ・明るい地：濃いブラス／インク寄り
   ・暗い地（写真の上・チャコール帯）：明るいブラス／アイボリー
   =================================================================== */

/* --- 明るい地に置かれる小さな見出し --- */
.fac-kicker,
.plux-idx{ color: var(--wood-deep) !important; }
.kicker{ color:#6E5637 !important; }          /* アイボリー地で 5.2 */
.plux-idx{ color:#5C574F !important; }        /* グレー帯の上で 5.0 */

/* --- 暗い帯・写真の上に重なるラベルは明るく戻す --- */
.cs-item figcaption .cs-no{ color:#D8BE96 !important; }   /* 暗帯で 5.6 */
.cs-item figcaption .cs-label{ color:#F2EDE4 !important; }/* 暗帯で 10+ */
.plate-tag{ color: var(--wood-deep) !important; }         /* 明るい紙の上 */

/* 最終微調整：残る2箇所 */
.cs-item figcaption .cs-no{ color:#E8D5B5 !important; }  /* 暗帯上でさらに明るく */
.plux-idx{ color:#4F4A43 !important; }                   /* グレー帯上で 6.0 */

/* 写真上のキャプション帯：背景を濃くして番号・ラベルを確実に読ませる */
.cs-item figcaption{
  background: rgba(24,23,21,.94) !important;
  backdrop-filter: blur(3px);
}

/* ===================================================================
   極小文字（11px未満）の底上げ — 全画面幅で適用
   英字ラベルは字間で締まりを出しているため、サイズを上げても
   デザインの印象は保たれる。
   =================================================================== */
.nav-en{ font-size:10.5px !important; letter-spacing:.18em; }
.cs-no{ font-size:11px !important; }
.cs-label{ font-size:11px !important; letter-spacing:.16em; }
.sol-value-num,
.sol-vs-tag,
.plate-tag,
.dur-tag,
.ptag{ font-size:11px !important; }
.price-table .ptag,
.price-row .ptag{ font-size:11px !important; }
/* price 内の小さな span（税込表記など） */
.price-cat .pval span,
.cm-cell i{ font-size:11.5px !important; }

/* 英字サブラベルの最小サイズを 11px に統一（全幅） */
.nav-en,
.d-en,
.price-cat-titles .en,
.price-cat .en{ font-size:11px !important; }

/* コンディショニング料金表のヘッダー行（時間／都度／5回券／10回券） */
.cond-matrix .cm-head span{ font-size:11px !important; }

/* ===================================================================
   ファーストビュー：地域・業態説明とメインコピーの間隔
   個別の絶対配置は行わず、通常フロー内の余白のみで階層を作る。
   PC 16px / タブレット 14px / スマホ 12px を目安。
   =================================================================== */
.hero-copy .fv-locale{
  margin: 0 0 clamp(12px, 1.1vw, 16px) !important;
  font-weight: 400;
  line-height: 1.7;
}
@media (max-width: 640px){
  .hero-copy .fv-locale{
    margin-bottom: 12px !important;
    letter-spacing: .08em;
  }
}

/* ===================================================================
   補足／重要情報の視覚階層（.sol-sec p より詳細度を高くして確実に適用）
   =================================================================== */
.sol-sec .sol-compact-note{
  margin-top:16px; padding:12px 14px;
  border-left:2px solid var(--wood);
  background:rgba(244,240,232,.55);
}
.sol-sec .sol-compact-note p{
  margin:0 !important;
  font-family:var(--sans) !important;
  font-size:clamp(11.5px,1.05vw,12.5px) !important;
  line-height:1.9 !important;
  letter-spacing:.03em;
}
.sol-sec .sol-compact-note__sub{
  color:var(--ink-faint) !important; font-weight:400 !important;
}
.sol-sec .sol-compact-note__important{
  margin-top:6px !important;
  color:var(--ink-soft) !important; font-weight:500 !important;
}


/* ===================================================================
   ドロワー表示中はヘッダーのハンバーガーを隠し、
   閉じるボタン（.rev-drawer-close）だけを唯一の「×」にする。
   =================================================================== */
.nav-toggle{ transition:opacity .2s ease, visibility .2s ease; }
body.drawer-open .site-header .nav-toggle{
  opacity:0; visibility:hidden; pointer-events:none;
}
