@charset "UTF-8";
/* ==========================================================================
   Tono Osteopathy — design system
   色：アイボリー地／ネイビー・チャコールの文字／セージグリーン／淡いベージュ／控えめなゴールド
   書体：Zen Old Mincho（見出し）／Zen Kaku Gothic New（本文）／Marcellus（欧文）
   ========================================================================== */

/* ---------- tokens ---------- */
:root{
  /* ベース：アイボリー／生成り ─ メイン：深めのエンジ ─ サブ：くすみピンク ─ 文字：チャコール
     白はカード面に使い、清潔感を出す */
  --paper:#FAF6F0;
  --surface:#FFFFFF;
  --surface-alt:#F4E9E5;
  --surface-soft:#F2E2E0;

  --ink:#3A3639;
  --ink-2:#655F64;
  --ink-3:#6F666C;

  --wine:#833340;
  --wine-hover:#6B2735;
  --rose:#C9A2A6;
  --rose-deep:#80525C;
  --charcoal:#39353B;
  --charcoal-hover:#262329;
  --gold:#7E6134;
  --brick:#A33A2F;
  --on-accent:#FFFFFF;

  --line:#E8DCD6;
  --line-soft:#F1E8E3;
  --line-strong:#D5C3BE;

  --shadow-sm:0 1px 2px rgba(58,54,57,.05);
  --shadow:0 2px 4px rgba(58,54,57,.04), 0 12px 28px -18px rgba(58,54,57,.20);
  --shadow-lg:0 4px 8px rgba(58,54,57,.06), 0 24px 48px -24px rgba(58,54,57,.24);

  --mincho:"Zen Old Mincho","Hiragino Mincho ProN","Yu Mincho",YuMincho,serif;
  --gothic:"Zen Kaku Gothic New","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  --latin:"Marcellus","Hiragino Mincho ProN",serif;

  --shell:1160px;
  --gutter:22px;
  --radius:3px;
  --sp-section:clamp(64px,9vw,116px);

  /* 白〜アイボリー地のライトテーマ固定。OSのダークモードには追従しない */
  color-scheme:light;
}

/* ---------- svg diagram ---------- */
.dia{width:100%; height:auto; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); padding:8px}
.dia text{font-family:var(--gothic)}
.dia .t-m{font-family:var(--mincho); font-weight:700}
.dia .t-l{font-family:var(--latin); letter-spacing:.18em; text-transform:uppercase}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--gothic);
  font-size:17px;
  line-height:2;
  font-feature-settings:"palt" 1;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  padding-bottom:0;
}
img,svg,video{max-width:100%; height:auto; display:block}
a{color:inherit}
button{font:inherit; color:inherit}
:focus-visible{outline:2px solid var(--rose-deep); outline-offset:3px; border-radius:2px}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important; transition-duration:.01ms !important}
}

/* ---------- layout ---------- */
.shell{width:100%; max-width:var(--shell); margin-inline:auto; padding-inline:var(--gutter)}
.shell--narrow{max-width:800px}
.shell--mid{max-width:960px}
.section{padding-block:var(--sp-section)}
.section--alt{background:var(--surface-alt)}
.section--rose{background:var(--surface-soft)}
.section--tight{padding-block:clamp(44px,6vw,72px)}
.stack{display:flex; flex-direction:column}
.stack>*{margin:0}

/* ---------- typography ---------- */
.eyebrow{
  font-family:var(--latin);
  font-size:11px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--rose-deep); line-height:1.6; margin:0 0 14px;
  display:flex; align-items:center; gap:12px;
}
.eyebrow::after{content:""; flex:1; height:1px; background:var(--rose); max-width:64px}
.eyebrow--center{justify-content:center}
.eyebrow--center::before{content:""; flex:1; height:1px; background:var(--rose); max-width:64px}

h1,h2,h3,h4{font-family:var(--mincho); font-weight:700; text-wrap:balance; letter-spacing:.02em}
.h-xl{font-size:clamp(28px,5.2vw,50px); line-height:1.42; margin:0}
.h-lg{font-size:clamp(24px,3.6vw,36px); line-height:1.5; margin:0}
.h-md{font-size:clamp(20px,2.6vw,26px); line-height:1.6; margin:0}
.h-sm{font-size:clamp(17px,2vw,20px); line-height:1.65; margin:0}
.lede{font-size:clamp(16px,1.7vw,18px); line-height:2.1; color:var(--ink-2); margin:0; max-width:40em}
p{margin:0 0 1.5em; max-width:40em}
p:last-child{margin-bottom:0}
.t-center{text-align:center}
.t-center .lede,.t-center p{margin-inline:auto}
.small{font-size:14px; line-height:1.9; color:var(--ink-2)}
.xsmall{font-size:12.5px; line-height:1.85; color:var(--ink-3)}
.note{font-size:13px; line-height:1.9; color:var(--ink-3)}
.mark{background:linear-gradient(transparent 62%, var(--surface-soft) 62%); padding-inline:1px}
strong{font-weight:700}
.num{font-family:var(--latin); font-variant-numeric:tabular-nums; letter-spacing:.01em}

/* 本文リンク */
.prose a{color:var(--wine); text-underline-offset:4px; text-decoration-thickness:1px}
.prose a:hover{text-decoration-thickness:2px}
.prose ul{margin:0 0 1.5em; padding-left:1.3em; max-width:40em}
.prose li{margin-bottom:.5em}
.prose li::marker{color:var(--rose)}
.prose h3{margin:2.4em 0 .8em; font-size:clamp(19px,2.2vw,23px); line-height:1.6}
.prose h3:first-child{margin-top:0}
.prose h4{margin:2em 0 .6em; font-size:17px; font-family:var(--gothic); font-weight:700}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:56px; padding:14px 28px;
  font-size:15.5px; font-weight:700; letter-spacing:.04em; line-height:1.5;
  text-decoration:none; border-radius:var(--radius); border:1px solid transparent;
  transition:background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
  text-align:center;
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn--line{background:var(--wine); color:var(--on-accent); border-color:var(--wine)}
.btn--line:hover{background:var(--wine-hover); border-color:var(--wine-hover)}
.btn--reserve{background:var(--charcoal); color:var(--on-accent); border-color:var(--charcoal)}
.btn--reserve:hover{background:var(--charcoal-hover); border-color:var(--charcoal-hover)}
.btn--ghost{background:transparent; color:var(--ink); border-color:var(--line-strong)}
.btn--ghost:hover{border-color:var(--ink-2); background:var(--surface)}
.btn--sm{min-height:46px; padding:10px 20px; font-size:14px}
.btn .ico{width:18px; height:18px; flex:none; fill:currentColor}

.btnrow{display:flex; flex-wrap:wrap; gap:12px}
.btnrow--center{justify-content:center}
@media (max-width:560px){
  .btnrow{flex-direction:column}
  .btnrow .btn{width:100%}
}

/* テキストリンク（→付き） */
.arrow{
  display:inline-flex; align-items:center; gap:8px;
  font-size:14.5px; font-weight:700; letter-spacing:.03em;
  color:var(--wine); text-decoration:none; padding-block:4px;
}
.arrow::after{content:""; width:20px; height:1px; background:currentColor; transition:width .25s ease}
.arrow:hover::after{width:30px}

/* ==========================================================================
   header
   ========================================================================== */
.hdr{
  position:sticky; top:0; z-index:60;
  background:color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--line-soft);
}
.hdr .shell{max-width:1200px}
.hdr__in{display:flex; align-items:center; gap:18px; min-height:76px}
.hdr__brand{display:flex; align-items:center; gap:11px; text-decoration:none; flex:none}
.hdr__brand img{width:40px; height:40px; border-radius:50%}
.hdr__name{font-family:var(--latin); font-size:16px; letter-spacing:.09em; line-height:1.25; color:var(--wine); white-space:nowrap}
.hdr__name span{display:block; font-family:var(--gothic); font-size:10px; letter-spacing:.16em; color:var(--ink-3); margin-top:2px}
.hdr__nav{margin-left:auto; display:flex; align-items:center; gap:2px}
.hdr__nav a{
  font-size:13.5px; font-weight:500; letter-spacing:.02em; text-decoration:none;
  color:var(--ink-2); padding:8px 8px; border-radius:2px; white-space:nowrap;
  transition:color .18s ease;
}
.hdr__nav a:hover{color:var(--wine)}
.hdr__nav a[aria-current="page"]{color:var(--wine); font-weight:700}
.hdr__nav a[aria-current="page"]::after{content:""; display:block; height:1.5px; background:var(--wine); margin-top:3px; border-radius:1px}
.hdr__cta{display:flex; gap:8px; flex:none; margin-left:10px}
.hdr__cta .btn{min-height:44px; padding:9px 15px; font-size:12.5px; letter-spacing:.02em; white-space:nowrap}
.hdr__toggle{display:none}
@media (max-width:1200px){
  .hdr__nav,.hdr__cta{display:none}
  .hdr__toggle{
    display:inline-flex; align-items:center; justify-content:center; gap:9px;
    margin-left:auto; min-height:46px; padding:8px 16px;
    background:transparent; border:1px solid var(--line-strong); border-radius:var(--radius);
    font-size:13px; font-weight:700; letter-spacing:.06em; cursor:pointer;
  }
  .hdr__toggle .bars{display:grid; gap:4px; width:16px}
  .hdr__toggle .bars i{display:block; height:1.5px; background:currentColor; border-radius:1px}
}
@media (max-width:400px){
  .hdr__in{gap:10px; min-height:66px}
  .hdr__brand img{width:34px; height:34px}
  .hdr__name{font-size:13.5px; letter-spacing:.06em}
  .hdr__name span{font-size:9px}
  .hdr__toggle{padding:8px 12px; font-size:12px; gap:7px; min-height:42px}
}
/* drawer */
.drawer{
  position:fixed; inset:0; z-index:80; background:var(--paper);
  overflow-y:auto; padding:18px var(--gutter) 120px;
  visibility:hidden; opacity:0; transition:opacity .22s ease, visibility .22s ease;
}
.drawer[data-open="true"]{visibility:visible; opacity:1}
.drawer__top{display:flex; align-items:center; justify-content:space-between; min-height:58px; margin-bottom:18px}
.drawer__close{
  background:transparent; border:1px solid var(--line-strong); border-radius:var(--radius);
  min-height:46px; padding:8px 18px; font-size:13px; font-weight:700; letter-spacing:.06em; cursor:pointer;
}
.drawer__group{border-top:1px solid var(--line); padding-top:16px; margin-bottom:22px}
.drawer__group>.eyebrow{margin-bottom:8px}
.drawer__group a{
  display:block; padding:11px 2px; text-decoration:none; font-size:15.5px;
  border-bottom:1px solid var(--line-soft); color:var(--ink);
}
.drawer__group a:last-child{border-bottom:0}
.drawer .btnrow{margin-top:8px}

/* SP 固定 CTA */
.dock{
  position:fixed; left:0; right:0; bottom:0; z-index:70; display:none;
  background:color-mix(in srgb, var(--surface) 96%, transparent);
  backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
  padding:8px var(--gutter) calc(8px + env(safe-area-inset-bottom));
  grid-template-columns:repeat(3,1fr); gap:8px;
}
.dock a{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px;
  min-height:54px; border-radius:var(--radius); text-decoration:none;
  font-size:12px; font-weight:700; letter-spacing:.04em;
}
.dock .ico{width:19px; height:19px; fill:currentColor}
.dock .d-line{background:var(--wine); color:var(--on-accent)}
.dock .d-tel{background:var(--surface-alt); color:var(--ink); border:1px solid var(--line)}
.dock .d-web{background:var(--charcoal); color:var(--on-accent)}
@media (max-width:1200px){
  .dock{display:grid}
  body{padding-bottom:78px}
}

/* ==========================================================================
   hero（TOPファーストビュー）
   ========================================================================== */
.hero{
  position:relative; overflow:hidden;
  background:
    radial-gradient(120% 85% at 14% 6%,  #FFFDFA 0%, rgba(255,253,250,0) 58%),
    radial-gradient(95% 110% at 96% 98%, #EFDFD4 0%, rgba(239,223,212,0) 60%),
    linear-gradient(162deg, #FBF5EC 0%, #F8EFE4 46%, #F2E4D7 100%);
}
/* 斜めの柔らかい光 */
.hero::before{
  content:""; position:absolute; inset:-20% -10%; pointer-events:none;
  background:
    linear-gradient(104deg, rgba(255,255,255,0) 26%, rgba(255,255,255,.55) 40%, rgba(255,255,255,0) 52%),
    linear-gradient(104deg, rgba(255,255,255,0) 58%, rgba(255,255,255,.34) 68%, rgba(255,255,255,0) 78%);
}
.hero__grid>*{min-width:0}
.hero__grid{position:relative; display:grid; grid-template-columns:minmax(0,1.46fr) minmax(0,1fr); align-items:stretch; gap:0}
.hero__text{
  padding:clamp(44px,5.4vw,78px) clamp(22px,4vw,66px) clamp(44px,5.4vw,74px);
  display:flex; flex-direction:column; justify-content:center;
}

/* フランス国旗つきの帯 */
.hero__band{
  display:inline-flex; align-items:center; gap:10px; align-self:flex-start;
  margin:0 0 20px; padding:7px 16px 8px;
  background:var(--rose); color:var(--ink);
  font-family:var(--mincho); font-size:clamp(13px,1.35vw,16px);
  letter-spacing:.1em; line-height:1.5; font-weight:500;
}
.hero__flag{width:24px; height:16px; flex:none; display:block; box-shadow:0 1px 3px rgba(58,54,57,.22)}

/* 見出し */
.hero h1{
  font-size:clamp(27px,3.5vw,47px); line-height:1.42; margin:0;
  letter-spacing:.045em; text-wrap:pretty; line-break:strict; font-weight:600;
}
.hero h1 .ln{display:block}
.hero h1 em{font-style:normal; color:var(--wine)}

/* 罫線 ＋ ブランド名 */
.hero__brand{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 18px;
  margin:22px 0 0; padding-top:20px; border-top:1px solid var(--line-strong);
}
.hero__brand-en{font-family:var(--latin); font-size:clamp(17px,1.9vw,25px); letter-spacing:.1em; color:var(--ink)}
.hero__brand-ja{font-size:clamp(12.5px,1.25vw,14.5px); letter-spacing:.08em; color:var(--ink-2)}

.hero__lede{font-size:clamp(14px,1.45vw,15.5px); line-height:2.1; color:var(--ink-2); margin:20px 0 0; max-width:34em}

/* 金縁のメダル */
.hero__seals{
  display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(10px,1.4vw,18px);
  margin:26px 0 0; padding:0; list-style:none; max-width:478px;
}
.hero__seals>li{min-width:0}
.hero__seals li{
  aspect-ratio:1; border-radius:50%; padding:3px; display:grid;
  background:linear-gradient(145deg,#C19440 0%,#F2E0B0 24%,#B5862F 48%,#EFDCA7 74%,#BC8F3B 100%);
  box-shadow:0 6px 16px -10px rgba(120,92,48,.55);
}
.hero__seals .seal{
  border-radius:50%; display:grid; place-content:center; text-align:center; padding:9px;
  background:radial-gradient(118% 118% at 32% 22%, #FFFEFA 0%, #FBF4E9 46%, #F0E1D6 100%);
  box-shadow:inset 0 1px 4px rgba(255,255,255,.95), inset 0 -7px 16px -8px rgba(132,100,56,.22);
  font-family:var(--mincho); font-size:clamp(10px,1.04vw,13.5px); line-height:1.45;
  letter-spacing:.01em; color:var(--ink);
}
.hero__seals b{font-weight:600; font-size:1.2em; letter-spacing:.01em; color:var(--wine); display:inline-block; line-height:1.3}
.hero__note{font-size:11.5px; line-height:1.7; color:var(--ink-3); margin:12px 0 0}

.hero .btnrow{margin-top:28px}
.hero__media{position:relative; min-height:420px}
.hero__media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 55%}
/* 左端を背景になじませる */
.hero__media::before{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(90deg, rgba(249,241,232,.92) 0%, rgba(249,241,232,0) 16%);
}
@media (max-width:1040px){
  .hero__grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}
  .hero__seals{max-width:420px}
}
@media (max-width:900px){
  .hero__grid{grid-template-columns:minmax(0,1fr)}
  .hero__media{order:-1; min-height:0; aspect-ratio:2/3; width:100%; max-width:520px; margin-inline:auto}
  .hero__media img{position:static; aspect-ratio:2/3; object-position:50% 45%}
  .hero__media::before{background:
    linear-gradient(90deg, rgba(250,243,235,.96) 0%, rgba(250,243,235,0) 9%, rgba(250,243,235,0) 91%, rgba(250,243,235,.96) 100%),
    linear-gradient(0deg, rgba(250,243,235,.94) 0%, rgba(250,243,235,0) 18%)}
  .hero__text{padding:30px var(--gutter) 44px}
  .hero__seals{max-width:420px}
  .hero__seals .seal{font-size:clamp(10px,2.75vw,13.5px)}
}

/* ==========================================================================
   authority bar
   ========================================================================== */
.creds{background:var(--surface-alt); border-block:1px solid var(--line)}
.creds__grid{display:grid; grid-template-columns:repeat(5,1fr); gap:1px; background:var(--line)}
.creds__item{background:var(--surface-alt); padding:26px 20px; text-align:center}
.creds__n{font-family:var(--latin); font-size:clamp(24px,3vw,34px); line-height:1.2; color:var(--wine); letter-spacing:.01em; font-variant-numeric:tabular-nums}
.creds__n small{font-size:.5em; letter-spacing:.06em; margin-left:3px; color:var(--ink-2)}
.creds__l{font-size:12.5px; line-height:1.75; color:var(--ink-2); margin-top:8px}
@media (max-width:860px){
  .creds__grid{grid-template-columns:repeat(2,1fr)}
  .creds__item:last-child{grid-column:1/-1}
}

/* ==========================================================================
   cards / grids
   ========================================================================== */
/* グリッド子要素が min-content で押し広げるのを防ぐ */
.grid>*,.worry>*,.reasons>*,.stage>*,.price>*,.creds__grid>*,.ftr__grid>*,.split>*,.empathy>li,.cta__ways>*{min-width:0}
.creds__l,.stage__sub,.card__list li,.worry__tags li{overflow-wrap:anywhere}

.grid{display:grid; gap:20px}
.grid--2{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr))}
.grid--3{grid-template-columns:repeat(auto-fit,minmax(min(268px,100%),1fr))}
.grid--4{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}

.card{
  background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-sm);
  border-radius:var(--radius); overflow:hidden;
  display:flex; flex-direction:column;
  transition:border-color .2s ease, box-shadow .25s ease, transform .25s ease;
}
a.card{text-decoration:none; color:inherit}
a.card:hover{border-color:var(--rose); box-shadow:var(--shadow); transform:translateY(-2px)}
.card__media{aspect-ratio:16/11; overflow:hidden; background:var(--surface-alt)}
.card__media img{width:100%; height:100%; object-fit:cover}
.card__body{padding:26px 24px 28px; display:flex; flex-direction:column; gap:14px; flex:1}
.card__body>*{margin:0}
.card__kicker{font-family:var(--latin); font-size:10.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--rose-deep)}
.card h3{font-size:19px; line-height:1.6}
.card__list{list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px}
.card__list li{
  font-size:12.5px; line-height:1.6; padding:3px 10px; border-radius:100px;
  background:var(--surface-soft); color:var(--rose-deep);
}
.card__foot{margin-top:auto; padding-top:6px}

/* ==========================================================================
   worry cards（お悩みから探す）
   ========================================================================== */
.worry{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(292px,100%),1fr)); gap:22px}
.worry__card{
  position:relative; background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-sm);
  border-radius:var(--radius); overflow:hidden; text-decoration:none; color:inherit;
  display:flex; flex-direction:column;
  transition:border-color .2s ease, box-shadow .25s ease, transform .25s ease;
}
.worry__card:hover{border-color:var(--rose); box-shadow:var(--shadow-lg); transform:translateY(-3px)}
.worry__media{aspect-ratio:3/2; overflow:hidden; background:var(--surface-alt)}
.worry__media img{width:100%; height:100%; object-fit:cover; transition:transform .5s ease}
.worry__card:hover .worry__media img{transform:scale(1.04)}
.worry__body{padding:26px 26px 28px; display:flex; flex-direction:column; gap:16px; flex:1}
.worry__idx{font-family:var(--latin); font-size:11px; letter-spacing:.2em; color:var(--rose-deep)}
.worry__body h3{font-size:21px; line-height:1.55; margin:0}
.worry__body p{font-size:14px; line-height:1.95; color:var(--ink-2); margin:0}
.worry__tags{list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px}
.worry__tags li{font-size:12.5px; padding:3px 10px; border-radius:100px; background:var(--surface-soft); color:var(--rose-deep)}
.worry__foot{margin-top:auto}

/* ==========================================================================
   empathy list
   ========================================================================== */
.empathy{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr)); gap:0 48px; list-style:none; margin:0; padding:0}
.empathy li{
  display:grid; grid-template-columns:22px 1fr; gap:14px; align-items:start;
  padding:16px 0; border-bottom:1px solid var(--line);
  font-size:15.5px; line-height:1.9;
}
.empathy li::before{
  content:""; width:9px; height:9px; margin-top:.65em; margin-left:6px;
  border-radius:50%; border:1.5px solid var(--rose); flex:none;
}

/* ==========================================================================
   split（画像＋テキスト）
   ========================================================================== */
.split{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr)); gap:clamp(28px,5vw,64px); align-items:center}
.split--top{align-items:start}
.split__media img{width:100%; border-radius:var(--radius); border:1px solid var(--line)}
.split--rev .split__media{order:2}
@media (max-width:760px){.split--rev .split__media{order:0}}

/* ==========================================================================
   reasons（選ばれる理由）
   ========================================================================== */
.reasons{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr)); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm)}
.reason{background:var(--surface); padding:32px 28px; display:flex; flex-direction:column; gap:12px}
.reason__n{font-family:var(--latin); font-size:12px; letter-spacing:.18em; color:var(--rose-deep)}
.reason h3{font-size:18px; line-height:1.6; margin:0}
.reason p{font-size:14px; line-height:1.95; color:var(--ink-2); margin:0}

/* 強み5項目：列数を固定し、最後の1枚を2列ぶんに広げて空きセルをなくす */
.reasons--five{grid-template-columns:repeat(3,minmax(0,1fr))}
.reasons--five>.reason:last-child{grid-column:span 2}
@media (max-width:900px){.reasons--five{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){
  .reasons--five{grid-template-columns:1fr}
  .reasons--five>.reason:last-child{grid-column:auto}
}

/* ==========================================================================
   lifestage
   ========================================================================== */
.stage{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr)); gap:14px; position:relative}
.stage__item{
  background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-sm); border-radius:var(--radius);
  padding:22px 18px; text-align:center; text-decoration:none; color:inherit;
  display:flex; flex-direction:column; gap:8px; align-items:center;
  transition:border-color .2s ease, box-shadow .2s ease;
}
a.stage__item:hover{border-color:var(--rose); box-shadow:var(--shadow)}
.stage__label{font-family:var(--mincho); font-weight:700; font-size:16.5px; line-height:1.5}
.stage__sub{font-size:12px; line-height:1.7; color:var(--ink-2)}
.stage__mark{font-family:var(--latin); font-size:10px; letter-spacing:.16em; color:var(--rose-deep)}

/* ==========================================================================
   flow steps
   ========================================================================== */
.flow{list-style:none; margin:0; padding:0; counter-reset:flow}
.flow>li{
  counter-increment:flow; position:relative;
  display:grid; grid-template-columns:64px 1fr; gap:22px;
  padding:0 0 34px 0;
}
.flow>li::before{
  content:counter(flow,decimal-leading-zero);
  font-family:var(--latin); font-size:15px; letter-spacing:.06em; color:var(--rose-deep);
  width:52px; height:52px; border-radius:50%; border:1px solid var(--rose);
  display:flex; align-items:center; justify-content:center; background:var(--surface);
  position:relative; z-index:1;
}
.flow>li::after{
  content:""; position:absolute; left:26px; top:52px; bottom:0; width:1px; background:var(--line-strong);
}
.flow>li:last-child{padding-bottom:0}
.flow>li:last-child::after{display:none}
.flow__body{padding-top:9px}
.flow__body h3{font-size:18px; line-height:1.6; margin:0 0 8px}
.flow__body p{font-size:14.5px; line-height:1.95; color:var(--ink-2); margin:0}
@media (max-width:560px){
  .flow>li{grid-template-columns:44px 1fr; gap:16px}
  .flow>li::before{width:40px; height:40px; font-size:12px}
  .flow>li::after{left:20px; top:40px}
  .flow__body{padding-top:6px}
}

/* ==========================================================================
   voices
   ========================================================================== */
.voice{
  background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-sm); border-radius:var(--radius);
  padding:28px 26px; display:flex; flex-direction:column; gap:14px; height:100%;
}
.voice__meta{display:flex; flex-wrap:wrap; align-items:center; gap:8px}
.voice__who{font-size:12.5px; letter-spacing:.05em; color:var(--ink-2); background:var(--surface-alt); padding:3px 11px; border-radius:100px}
.voice__tag{font-size:12.5px; letter-spacing:.05em; color:var(--rose-deep); background:var(--surface-soft); padding:3px 11px; border-radius:100px}
.voice h3{font-size:17px; line-height:1.65; margin:0}
.voice__body{font-size:14.5px; line-height:2; color:var(--ink-2); margin:0}
.voice__reply{
  border-left:2px solid var(--rose); background:var(--surface-alt);
  padding:16px 18px; border-radius:0 var(--radius) var(--radius) 0;
  font-size:13.5px; line-height:1.95; color:var(--ink-2); margin:0;
}
.voice__reply b{display:block; font-size:12px; letter-spacing:.08em; color:var(--rose-deep); margin-bottom:6px; font-weight:700}
.disclaimer{font-size:12.5px; line-height:1.85; color:var(--ink-3); margin-top:22px}

/* ==========================================================================
   price
   ========================================================================== */
.price{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr)); gap:20px}
.price__card{background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-sm); border-radius:var(--radius); padding:30px 26px; display:flex; flex-direction:column; gap:16px}
.price__card--lead{border-color:var(--rose); box-shadow:var(--shadow)}
.price__head{display:flex; flex-direction:column; gap:6px}
.price__head h3{font-size:19px; line-height:1.5; margin:0}
.price__head .note{margin:0}
.price__main{display:flex; align-items:baseline; gap:6px; padding-bottom:16px; border-bottom:1px solid var(--line)}
.price__amount{font-family:var(--latin); font-size:36px; line-height:1.1; color:var(--wine); font-variant-numeric:tabular-nums}
.price__unit{font-size:13.5px; color:var(--ink-2)}
.price__rows{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px}
.price__rows li{display:flex; justify-content:space-between; gap:16px; font-size:14px; line-height:1.7; color:var(--ink-2)}
.price__rows li b{font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; white-space:nowrap}
.price__rows li span:first-child{flex:1}

/* 同じメニューの 60分 / 30分 を1枚のカードに並べる */
.price__tier{display:flex; flex-direction:column; gap:14px; padding-top:20px; margin-top:4px; border-top:1px solid var(--line)}
.price__tier:first-of-type{padding-top:0; margin-top:0; border-top:0}
.price__dur{display:flex; align-items:center; gap:9px; margin:0; font-size:14px; font-weight:700; letter-spacing:.04em; color:var(--ink)}
.badge-new{
  font-size:10.5px; letter-spacing:.08em; font-weight:700; line-height:1.6;
  padding:2px 9px; border-radius:100px; background:var(--wine); color:var(--on-accent); white-space:nowrap;
}
.price__tier .price__main{padding-bottom:14px}
.price__rows li b{display:flex; flex-direction:column; align-items:flex-end; gap:2px}
.price__rows li em{font-style:normal; font-weight:400; font-size:12px; color:var(--ink-3); letter-spacing:.02em}

.tbl-wrap{overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow-sm)}
table.tbl{border-collapse:collapse; width:100%; min-width:520px; font-size:14.5px; font-variant-numeric:tabular-nums}
table.tbl th,table.tbl td{padding:13px 16px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; line-height:1.8}
table.tbl thead th{background:var(--surface-alt); font-size:12.5px; letter-spacing:.08em; font-weight:700; color:var(--ink-2); white-space:nowrap}
table.tbl tbody tr:last-child th,table.tbl tbody tr:last-child td{border-bottom:0}
table.tbl tbody th{width:132px; font-weight:700; color:var(--ink); white-space:nowrap}
table.tbl td.c{text-align:center}

/* 確認中の項目を示すバッジ（公開版では未使用） */
.tbc{
  display:inline-flex; align-items:center; gap:6px;
  font-size:12px; font-weight:700; letter-spacing:.06em; line-height:1.6;
  padding:2px 9px; border-radius:2px;
  background:color-mix(in srgb, var(--gold) 16%, transparent);
  color:var(--gold); border:1px dashed color-mix(in srgb, var(--gold) 55%, transparent);
  vertical-align:1px; white-space:nowrap;
}

/* ==========================================================================
   faq
   ========================================================================== */
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  list-style:none; cursor:pointer; display:grid; grid-template-columns:26px 1fr 22px; gap:14px;
  padding:20px 2px; font-size:16px; line-height:1.75; font-weight:700; align-items:start;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"Q"; font-family:var(--latin); color:var(--rose-deep); font-size:15px; line-height:1.75}
.faq summary::after{
  content:""; width:11px; height:11px; margin-top:.6em; justify-self:end;
  border-right:1.5px solid var(--ink-3); border-bottom:1.5px solid var(--ink-3);
  transform:rotate(45deg); transition:transform .25s ease;
}
.faq details[open] summary::after{transform:rotate(-135deg)}
.faq__a{display:grid; grid-template-columns:26px 1fr; gap:14px; padding:0 2px 24px}
.faq__a::before{content:"A"; font-family:var(--latin); color:var(--gold); font-size:15px; line-height:1.9}
.faq__a>div{font-size:15px; line-height:2.05; color:var(--ink-2)}
.faq__a p{margin:0 0 1em}
.faq__a p:last-child{margin-bottom:0}

/* ==========================================================================
   access
   ========================================================================== */
/* width を確定させておく。高さが先に決まると aspect-ratio が幅を逆算してはみ出すため */
.map{width:100%; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--surface-alt); aspect-ratio:16/9; box-shadow:var(--shadow-sm)}
.split--stretch{align-items:stretch}
.split--stretch .map{aspect-ratio:auto; height:100%; min-height:420px}
@media (max-width:760px){.split--stretch .map{aspect-ratio:4/3; height:auto; align-self:start; min-height:0}}
.map iframe{width:100%; height:100%; border:0; display:block}
.route{list-style:none; margin:0; padding:0; display:grid; gap:18px}
.route li{display:grid; grid-template-columns:112px 1fr; gap:18px; align-items:start; padding-bottom:18px; border-bottom:1px solid var(--line)}
.route li:last-child{border-bottom:0; padding-bottom:0}
.route img{width:112px; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius); border:1px solid var(--line)}
.route__t{font-size:14.5px; line-height:1.9}
.route__n{font-family:var(--latin); font-size:11px; letter-spacing:.16em; color:var(--rose-deep); display:block; margin-bottom:2px}
@media (max-width:520px){
  .route li{grid-template-columns:88px 1fr; gap:14px}
  .route img{width:88px}
}

/* ==========================================================================
   cta block
   ========================================================================== */
.cta{background:var(--surface-soft); border-block:1px solid var(--line)}
.cta__in{padding-block:clamp(48px,6.5vw,80px); text-align:center; display:flex; flex-direction:column; align-items:center; gap:22px}
.cta__in h2{font-size:clamp(21px,3vw,31px); line-height:1.6; margin:0}
.cta__in .lede{margin:0}
.cta__ways{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:12px; width:100%; max-width:760px; margin-top:4px}
.cta__ways .btn{white-space:nowrap}
@media (max-width:480px){.cta__ways .btn{white-space:normal}}
.cta__note{font-size:12.5px; color:var(--ink-3); line-height:1.9; margin:0}
.cta__note a{color:var(--ink-2); text-underline-offset:3px}

/* ==========================================================================
   news list
   ========================================================================== */
.news{list-style:none; margin:0; padding:0; border-top:1px solid var(--line)}
.news li{border-bottom:1px solid var(--line)}
.news a{display:grid; grid-template-columns:104px 108px 1fr; gap:18px; align-items:baseline; padding:18px 2px; text-decoration:none; color:inherit}
.news time{font-family:var(--latin); font-size:13px; letter-spacing:.06em; color:var(--ink-3); font-variant-numeric:tabular-nums}
.news .cat{font-size:11.5px; letter-spacing:.06em; color:var(--rose-deep); background:var(--surface-soft); padding:2px 10px; border-radius:100px; justify-self:start}
.news .ttl{font-size:15.5px; line-height:1.8}
.news a:hover .ttl{color:var(--wine)}
@media (max-width:640px){
  .news a{grid-template-columns:1fr; gap:6px; padding:16px 2px}
}

/* ==========================================================================
   breadcrumb / page hero
   ========================================================================== */
.crumb{border-bottom:1px solid var(--line-soft); background:var(--surface)}
.crumb ol{list-style:none; display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:11px 0; font-size:12px; color:var(--ink-3)}
.crumb li+li::before{content:"›"; margin-right:8px; color:var(--line-strong)}
.crumb a{color:var(--ink-2); text-decoration:none}
.crumb a:hover{color:var(--wine)}

.phero{background:var(--surface-alt); border-bottom:1px solid var(--line)}
.phero__in{padding-block:clamp(44px,6vw,76px); display:grid; gap:18px}
.phero h1{font-size:clamp(25px,3.9vw,40px); line-height:1.5; margin:0}
.phero .lede{margin:0}
.phero--photo{position:relative; background:#16202A; border-bottom:0}
.phero--photo img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.42}
.phero--photo .phero__in{position:relative}
.phero--photo h1{color:#FFFFFF}
.phero--photo .eyebrow{color:#C8D6C9}
.phero--photo .lede{color:rgba(255,255,255,.86)}
.phero--photo .eyebrow::after,.phero--photo .eyebrow::before{background:rgba(255,255,255,.4)}

/* ==========================================================================
   misc
   ========================================================================== */
.figure{margin:0; display:flex; flex-direction:column; gap:10px}
.figure img{border:1px solid var(--line); border-radius:var(--radius); width:100%}
.figure figcaption{font-size:12.5px; line-height:1.8; color:var(--ink-3)}
.rule{height:1px; background:var(--line); border:0; margin:0}
.gallery{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr)); gap:12px}
.gallery img{border-radius:var(--radius); border:1px solid var(--line); aspect-ratio:4/3; object-fit:cover; width:100%}

.callout{
  background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--rose); box-shadow:var(--shadow-sm);
  border-radius:0 var(--radius) var(--radius) 0; padding:22px 26px;
}
.callout>*{margin:0}
.callout>*+*{margin-top:.9em}
.callout h3{font-size:17px; line-height:1.6}

.sec-head{display:flex; flex-direction:column; gap:16px; margin-bottom:clamp(30px,4vw,48px)}
.sec-head--center{align-items:center; text-align:center}
.sec-head p{margin:0}

/* footer */
.ftr{background:var(--charcoal); color:#D6D9D2; padding-block:clamp(48px,6vw,72px) 32px; margin-top:0}
.ftr a{color:#D6D9D2; text-decoration:none}
.ftr a:hover{color:#FFF}
.ftr__grid{display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:36px}
.ftr__brand{display:flex; flex-direction:column; gap:14px}
.ftr__brand img{width:52px; height:52px; border-radius:50%}
.ftr__name{font-family:var(--latin); font-size:19px; letter-spacing:.09em; color:#FFF}
.ftr__addr{font-size:13px; line-height:2; color:#A9AFA8}
.ftr h2{font-family:var(--latin); font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:#8C9490; margin:0 0 14px; font-weight:400}
.ftr ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px}
.ftr li{font-size:13.5px; line-height:1.7}
.ftr__bottom{margin-top:44px; padding-top:22px; border-top:1px solid rgba(255,255,255,.12); display:flex; flex-wrap:wrap; gap:12px 24px; justify-content:space-between; font-size:12px; color:#8C9490}
@media (max-width:880px){.ftr__grid{grid-template-columns:1fr 1fr; gap:32px}}
@media (max-width:520px){.ftr__grid{grid-template-columns:1fr}}

/* reveal on scroll */
.reveal{opacity:0; transform:translateY(14px); transition:opacity .7s ease, transform .7s ease}
.reveal.is-in{opacity:1; transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1; transform:none}}

/* ==========================================================================
   form
   ========================================================================== */
.form{display:flex; flex-direction:column; gap:32px}
.field{display:flex; flex-direction:column; gap:8px}
.field>label{font-size:14.5px; font-weight:700; display:flex; align-items:center; gap:9px; line-height:1.6}
.req{font-size:11px; letter-spacing:.08em; font-weight:700; padding:2px 8px; border-radius:2px; background:var(--brick); color:var(--on-accent); line-height:1.6}
.opt{font-size:11px; letter-spacing:.08em; font-weight:700; padding:2px 8px; border-radius:2px; background:var(--surface-alt); color:var(--ink-2); border:1px solid var(--line)}
.field .hint{font-size:12.5px; color:var(--ink-3); line-height:1.8}
.field input[type=text],.field input[type=email],.field input[type=tel],.field select,.field textarea{
  font:inherit; font-size:16px; line-height:1.7; color:var(--ink);
  background:var(--surface); border:1px solid var(--line-strong); border-radius:var(--radius);
  padding:13px 14px; width:100%; min-height:52px;
  transition:border-color .18s ease, box-shadow .18s ease;
}
.field textarea{min-height:170px; resize:vertical}
.field select{appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%); background-position:calc(100% - 19px) 50%,calc(100% - 13px) 50%; background-size:6px 6px,6px 6px; background-repeat:no-repeat; padding-right:42px}
.field :is(input,select,textarea):focus{border-color:var(--rose-deep); box-shadow:0 0 0 3px color-mix(in srgb,var(--rose) 26%,transparent); outline:none}
.field :is(input,select,textarea)[aria-invalid="true"]{border-color:var(--brick); box-shadow:0 0 0 3px color-mix(in srgb,var(--brick) 18%,transparent)}
.err{font-size:13px; line-height:1.8; color:var(--brick); font-weight:700; display:none}
.err[data-show="true"]{display:block}
.check{display:grid; grid-template-columns:22px 1fr; gap:12px; align-items:start; font-size:14.5px; line-height:1.85}
.check input{width:20px; height:20px; margin-top:.35em; accent-color:var(--rose-deep)}
.hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.form__summary{
  border:1px solid var(--line); border-radius:var(--radius); background:var(--surface);
  padding:4px 0; display:none;
}
.form__summary dl{margin:0; display:grid; grid-template-columns:150px 1fr}
.form__summary dt,.form__summary dd{margin:0; padding:14px 20px; border-bottom:1px solid var(--line-soft); font-size:14.5px; line-height:1.85}
.form__summary dt{font-weight:700; color:var(--ink-2); background:var(--surface-alt)}
.form__summary dd{white-space:pre-wrap; overflow-wrap:anywhere}
.form__summary dl>*:nth-last-child(-n+2){border-bottom:0}
@media (max-width:620px){
  .form__summary dl{grid-template-columns:1fr}
  .form__summary dt{padding-bottom:4px; background:transparent; border-bottom:0}
  .form__summary dd{padding-top:0}
}
[data-step="confirm"] .form__fields{display:none}
[data-step="confirm"] .form__summary{display:block}
.formnote{
  background:var(--surface-alt); border:1px solid var(--line); border-radius:var(--radius);
  padding:18px 22px; font-size:13px; line-height:1.9; color:var(--ink-2);
}

/* ==========================================================================
   article
   ========================================================================== */
.art__head{display:flex; flex-direction:column; gap:18px}
.art__meta{display:flex; flex-wrap:wrap; gap:10px 18px; align-items:center; font-size:12.5px; color:var(--ink-3)}
.art__meta time{font-family:var(--latin); letter-spacing:.05em; font-variant-numeric:tabular-nums}
.art__cat{font-size:11.5px; letter-spacing:.06em; color:var(--rose-deep); background:var(--surface-soft); padding:3px 11px; border-radius:100px}
.art__body{font-size:16.5px; line-height:2.1}
.art__body h2{font-size:clamp(20px,2.5vw,25px); line-height:1.6; margin:2.6em 0 .9em; padding-bottom:.5em; border-bottom:1px solid var(--line)}
.art__body h3{font-size:18px; line-height:1.65; margin:2.2em 0 .7em}
.art__body p{margin:0 0 1.6em; max-width:none}
.art__body ul,.art__body ol{margin:0 0 1.8em; padding-left:1.4em; max-width:none}
.art__body li{margin-bottom:.6em}
.art__body li::marker{color:var(--rose)}
.art__body a{color:var(--wine); text-underline-offset:4px}
.art__body>*:first-child{margin-top:0}
.art__lead{font-size:17px; line-height:2.1; color:var(--ink-2); border-left:3px solid var(--rose); padding-left:22px; margin:0 0 2.4em}
.art__body blockquote{margin:0 0 1.8em; padding:20px 24px; background:var(--surface-alt); border-radius:var(--radius); font-size:15.5px; line-height:2}
.art__body blockquote p:last-child{margin-bottom:0}

/* 記事内の「所見リスト」「流れ」「参考文献」 */
.art__body .findings{list-style:none; padding:0; margin:0 0 1.8em; display:grid; gap:0}
.art__body .findings li{
  display:grid; grid-template-columns:20px 1fr; gap:12px; align-items:start;
  margin:0; padding:11px 0; border-bottom:1px solid var(--line);
}
.art__body .findings li::before{content:""; width:8px; height:8px; margin-top:.75em; margin-left:6px; border-radius:50%; border:1.5px solid var(--rose)}
.art__body .findings li:first-child{border-top:1px solid var(--line)}

.chain{list-style:none; margin:0 0 1.8em; padding:22px 24px; background:var(--surface-alt); border-radius:var(--radius); display:grid; gap:0}
.chain li{margin:0; padding:7px 0; font-size:15px; line-height:1.8; text-align:center}
.chain li+li::before{content:"↓"; display:block; color:var(--rose-deep); font-size:13px; line-height:1.6; margin-bottom:5px}

.refs{margin:56px 0 0; padding-top:24px; border-top:1px solid var(--line)}
.refs h2{font-family:var(--latin); font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--rose-deep); font-weight:400; margin:0 0 14px; padding:0; border:0}
.refs ol{margin:0; padding-left:1.4em; font-size:13px; line-height:1.95; color:var(--ink-2)}
.refs li{margin-bottom:.7em}
.disclaim{margin-top:28px; padding:18px 22px; background:var(--surface-alt); border-radius:var(--radius); font-size:12.5px; line-height:1.95; color:var(--ink-2)}
.disclaim p{margin:0; max-width:none}

.toc{background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-sm); border-radius:var(--radius); padding:24px 26px; margin:0 0 44px}
.toc>p{font-family:var(--latin); font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--rose-deep); margin:0 0 14px}
.toc ol{list-style:none; counter-reset:toc; margin:0; padding:0; display:flex; flex-direction:column; gap:2px}
.toc li{counter-increment:toc}
.toc a{display:grid; grid-template-columns:28px 1fr; gap:8px; padding:7px 0; text-decoration:none; font-size:14.5px; line-height:1.7; color:var(--ink-2)}
.toc a::before{content:counter(toc,decimal-leading-zero); font-family:var(--latin); font-size:11px; color:var(--ink-3); line-height:1.9}
.toc a:hover{color:var(--wine)}

.author{display:grid; grid-template-columns:88px 1fr; gap:22px; align-items:start; background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-sm); border-radius:var(--radius); padding:26px}
.author img{width:88px; height:88px; border-radius:50%; object-fit:cover; object-position:50% 55%}
.author__b>*{margin:0}
.author__b>*+*{margin-top:8px}
.author__role{font-family:var(--latin); font-size:10.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--rose-deep)}
.author__name{font-family:var(--mincho); font-weight:700; font-size:19px; line-height:1.5}
.author__txt{font-size:13.5px; line-height:1.9; color:var(--ink-2)}
@media (max-width:520px){.author{grid-template-columns:1fr; gap:16px}}
