/* RISnity — shared stylesheet */

:root{
  --ink:#2E2E2E;
  --muted:#8A8A88;
  --muted-text:#6C6C6C; /* AA-compliant (4.5:1+) variant of --muted, for small readable copy */
  --line:#D9D8D4;
  --underlay:#E7E6E3;
  --panel:#F0EFEC;
  --accent:#1E8FD8;
  --accent-text:#0B66A0;
  --accent-strong:#0B4A96;
  --accent-strong-hover:#0A3F80;
  --ph-bg:#E3E1DC;
  --ph-border:#C6C4BE;
  --ph-text:#96938D;
  --font-sans:'Noto Sans JP','Hiragino Sans',sans-serif;
  --font-serif:'Noto Serif JP',serif;
  --font-display:'Cormorant Garamond',serif;
  --font-size-body:1rem;
  --font-size-small:.875rem;
  --font-size-compact:.75rem;
  --site-header-height:88px;
  --anchor-gap:32px;
}

*{box-sizing:border-box}

html{
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}

body{
  margin:0;
  background:var(--panel);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--font-size-body);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  -webkit-tap-highlight-color:transparent;
}

a{color:var(--ink);text-decoration:none;-webkit-tap-highlight-color:transparent}
a:hover{color:var(--accent-strong)}

.oldstyle{font-feature-settings:'onum' 1}
.text-nowrap{white-space:nowrap}

@media (prefers-reduced-motion:reduce){
  *{animation:none !important}
  .pagehead,.section-head,.top-service__intro,.profile__text,.report__text,
  .container>.section-lede,.problem__intro{
    transition:none !important;opacity:1 !important;transform:none !important;
  }
}

/* ---------- scroll-triggered section reveal ---------- */
.pagehead,.section-head,.top-service__intro,.profile__text,.report__text{
  opacity:0;transform:translateY(24px);
  transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1);
}
.container>.section-lede,.problem__intro{
  opacity:0;transform:translateY(24px);
  transition:opacity .9s cubic-bezier(.22,1,.36,1) .12s,transform .9s cubic-bezier(.22,1,.36,1) .12s;
}
.pagehead.is-visible,.section-head.is-visible,.top-service__intro.is-visible,
.profile__text.is-visible,.report__text.is-visible,
.container>.section-lede.is-visible,.problem__intro.is-visible{
  opacity:1;transform:translateY(0);
}

/* ---------- layout containers ---------- */
.container{max-width:1120px;margin:0 auto;padding:0 80px;box-sizing:border-box}

/* grid/flex items containing aspect-ratio boxes default to min-width:auto,
   which lets their intrinsic (default 300x150-based) size inflate the track
   beyond its fr share; reset it so tracks size strictly from the fr math. */
.problem__grid>*,.top-service__grid>*,.program__grid>*,.plan-cols>*,.calc>*,
.profile__grid>*,.report__grid>*,.svc-block>*,.freq-cols>*{min-width:0}
.wrap{max-width:1280px;margin:0 auto;padding:0 80px;box-sizing:border-box}
.top-page>section[id]{scroll-margin-top:calc(var(--site-header-height) + var(--anchor-gap) - var(--section-top-space,0px))}

/* ---------- site header ---------- */
.site-header{
  display:flex;align-items:center;justify-content:space-between;
  height:var(--site-header-height);padding:0 80px;border-bottom:1px solid var(--line);
  flex-wrap:wrap;gap:16px;
  background:var(--panel);
  position:sticky;top:0;z-index:100;
}
.site-header__brand{display:flex;flex-direction:column;gap:5px}
.site-header__brand-en{
  font-family:var(--font-display);font-weight:300;font-size:27px;
  letter-spacing:.16em;line-height:1;color:var(--ink);
}
.site-header__brand-jp{font-size:10px;letter-spacing:.22em;color:var(--muted-text);line-height:1}

/* ---------- mobile menu toggle (hamburger) ---------- */
.menu-toggle{
  display:none;position:relative;width:28px;height:18px;flex-shrink:0;
  background:none;border:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent;
}
.menu-toggle span{
  display:block;position:absolute;left:0;width:100%;height:1px;background:var(--ink);
  transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s cubic-bezier(.22,1,.36,1);
}
.menu-toggle span:nth-child(1){top:0}
.menu-toggle span:nth-child(2){top:8px}
.menu-toggle span:nth-child(3){top:16px}
.site-header.is-open .menu-toggle span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.site-header.is-open .menu-toggle span:nth-child(2){opacity:0}
.site-header.is-open .menu-toggle span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}

.site-nav{display:flex;align-items:center;gap:32px;font-size:var(--font-size-small);letter-spacing:.1em;text-transform:uppercase;flex-wrap:wrap}
.site-nav a.is-current,
.site-nav a.contact-link{color:var(--accent-text)}

/* ---------- page sub-nav (SERVICE / PLAN) ---------- */
.subnav{
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  display:grid;text-align:center;
}
.subnav a{padding:16px 8px;font-size:var(--font-size-small);letter-spacing:.05em;border-left:1px solid var(--line)}
.subnav a:first-child{border-left:none}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);padding:64px 80px}
.site-footer__row{
  max-width:1120px;margin:0 auto;display:flex;justify-content:space-between;
  align-items:flex-start;gap:40px;flex-wrap:wrap;
}
.site-footer.wide .site-footer__row{max-width:1280px}
.site-footer__brand{display:flex;flex-direction:column;gap:10px}
.site-footer__brand-en{font-family:var(--font-display);font-weight:300;font-size:22px;letter-spacing:.16em}
.site-footer__meta{font-size:var(--font-size-small);letter-spacing:.08em;color:var(--muted-text);line-height:2}
.site-footer__nav{display:flex;flex-wrap:wrap;gap:24px;font-size:var(--font-size-small);letter-spacing:.06em;color:var(--muted-text);max-width:520px}
.site-footer__copy{max-width:1120px;margin:40px auto 0;font-size:var(--font-size-small);letter-spacing:.06em;color:var(--muted-text)}
.site-footer.wide .site-footer__copy{max-width:1280px}

/* ---------- fixed consult button ---------- */
.consult-fab{
  position:fixed;
  right:max(32px,env(safe-area-inset-right));
  bottom:max(32px,env(safe-area-inset-bottom));
  width:120px;height:120px;border-radius:50%;
  background:var(--accent-strong);color:#fff;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:8px;z-index:100;
}
.consult-fab:hover{color:#fff}
.consult-fab[hidden]{display:none}
.consult-fab__dot{display:block;width:5px;height:5px;border-radius:50%;background:#fff}
.consult-fab__label{font-family:var(--font-serif);font-weight:400;font-size:16px;letter-spacing:.1em}
.consult-fab__sub{font-size:var(--font-size-compact);letter-spacing:.12em;opacity:.85}

/* ---------- eyebrow / section heading ---------- */
.eyebrow{font-size:var(--font-size-small);letter-spacing:.25em;color:var(--accent-text);line-height:1}
.rule{display:block;width:24px;height:1px;background:var(--accent)}
.rule--long{width:40px}

.section-head{display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}
.section-head h2{
  margin:0;font-family:var(--font-display);font-weight:300;
  font-size:clamp(40px,9vw,76px);line-height:1.05;letter-spacing:.06em;
}
.section-head h2.size-md{font-size:clamp(36px,8vw,64px)}
.section-lede{
  margin:64px auto 0;max-width:34em;font-family:var(--font-serif);font-weight:400;
  font-size:24px;line-height:1.9;letter-spacing:.16em;text-align:center;
}
.section-lede.size-sm{font-size:21px}
.section-body{margin:32px auto 0;max-width:34em;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em;text-align:center}
.section-note{margin:56px 0 0;font-size:var(--font-size-small);letter-spacing:.05em;color:var(--muted-text);line-height:1.9;text-align:center}

/* ---------- ghost background type ---------- */
.ghost{
  position:absolute;top:60px;left:50%;transform:translateX(-50%);
  font-family:var(--font-display);font-weight:300;
  font-size:clamp(140px,20vw,260px);line-height:1;color:var(--underlay);
  pointer-events:none;white-space:nowrap;user-select:none;
}
.ghost.size-lg{font-size:220px;top:80px}
.ghost.size-doc{font-size:clamp(100px,16vw,200px)}
.ghost.animate{animation:ghostBlurIn 1.1s cubic-bezier(.22,1,.36,1) both}

/* ---------- page hero header (SERVICE/PLAN/CONTACT/PRIVACY/TERMS) ---------- */
.pagehead-section{position:relative;padding:150px 0 0;overflow:hidden}
.pagehead{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center}
.pagehead h1{
  margin:0;font-family:var(--font-display);font-weight:300;
  font-size:clamp(56px,9vw,88px);line-height:1.05;letter-spacing:.06em;
}
.pagehead h1.size-doc{font-size:clamp(40px,6vw,64px)}
.pagehead .rule{margin-top:20px}
.pagehead .section-lede{margin-top:64px}
.pagehead .section-body{margin-top:32px}

/* ---------- inline "more" link (guides TOP sections to their sub-page) ---------- */
.more-link{
  display:inline-flex;align-items:baseline;gap:10px;margin-top:40px;
  font-size:var(--font-size-small);letter-spacing:.1em;color:var(--accent-strong);
  border-bottom:1px solid var(--accent-strong);padding-bottom:4px;
  transition:color .3s cubic-bezier(.22,1,.36,1),border-color .3s cubic-bezier(.22,1,.36,1);
}
.more-link:hover{color:var(--accent-strong-hover);border-color:var(--accent-strong-hover)}
.more-link .arrow{font-size:12px}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:space-between;gap:24px;max-width:100%;padding:22px 40px;
  background:var(--accent-strong);color:#fff;font-size:var(--font-size-body);letter-spacing:.15em;
  border:none;cursor:pointer;transition:background .3s cubic-bezier(.22,1,.36,1);
  font-family:inherit;line-height:1.8;text-align:left;
}
.btn:hover{background:var(--accent-strong-hover);color:#fff}
.btn__dot{display:block;width:6px;height:6px;border-radius:50%;background:#fff;flex-shrink:0}
.btn--lg{padding:22px 48px}

/* ---------- numbered badge (SERVICE detail rows) ---------- */
.badge{
  width:72px;height:72px;border-radius:50%;background:var(--accent-strong);
  box-shadow:0 8px 24px -8px rgba(0,0,0,.12);display:flex;align-items:center;
  justify-content:center;flex-shrink:0;
}
.badge span{font-family:var(--font-display);font-size:20px;color:#fff}

/* ---------- image placeholder (stand-in for real photography) ---------- */
.img-slot{
  position:relative;width:100%;height:100%;display:flex;align-items:center;
  justify-content:center;text-align:center;background:var(--ph-bg);
  border:1px dashed var(--ph-border);color:var(--ph-text);font-size:12px;
  letter-spacing:.05em;line-height:1.6;padding:16px;
}
.img-slot--fill{position:absolute;inset:0}
.img-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* ---------- animations ---------- */
@keyframes riseFade{from{opacity:0;transform:translateY(-32px)}to{opacity:1;transform:translateY(0)}}
@keyframes ghostBlurIn{from{opacity:0;filter:blur(18px)}to{opacity:1;filter:blur(0)}}
@keyframes plainFadeIn{from{opacity:0}to{opacity:1}}

/* ==================================================================
   TOP PAGE
   ================================================================== */

/* ---- hero ---- */
.hero{position:relative;height:760px;overflow:hidden}
.hero__media{position:absolute;inset:0}
.hero__scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,24,30,.35),rgba(20,24,30,.5))}
.hero__kicker{
  position:absolute;left:80px;top:64px;display:flex;flex-direction:column;gap:12px;
}
.hero__kicker-text{font-size:var(--font-size-small);letter-spacing:.2em;color:#fff;line-height:1.9}
.hero__kicker-rule{display:block;width:40px;height:1px;background:#fff}
.hero__title{
  position:absolute;right:80px;top:64px;margin:0;writing-mode:vertical-rl;
  font-family:var(--font-serif);font-weight:400;font-size:44px;line-height:1.9;
  letter-spacing:.28em;color:#fff;
  animation:riseFade 1.1s cubic-bezier(.22,1,.36,1) .1s both;
}
.hero__programs{
  position:absolute;left:80px;bottom:40px;display:flex;align-items:center;gap:16px;
  font-size:12px;letter-spacing:.1em;color:rgba(255,255,255,.85);
}
.hero__programs span.item{font-family:var(--font-serif);font-size:var(--font-size-body);letter-spacing:.14em;color:#fff}
.hero__programs .divider{display:block;width:20px;height:1px;background:rgba(255,255,255,.5)}

.credential-bar{
  padding:24px 80px 0;max-width:1120px;margin:0 auto;font-size:var(--font-size-small);
  line-height:1.9;letter-spacing:.1em;color:var(--muted-text);
}
.credential-bar .num{font-family:var(--font-display);font-size:15px;letter-spacing:.06em}

/* ---- problem ---- */
.problem{--section-top-space:150px;position:relative;padding:var(--section-top-space) 0 0;overflow:hidden}
.problem__intro{margin:64px auto 0;font-family:var(--font-serif);font-weight:400;font-size:28px;line-height:1.9;letter-spacing:.18em;text-align:center}
.problem__body{margin:32px auto 0;max-width:34em;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em;text-align:center}
.problem__grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;margin-top:100px}
.problem__card{display:flex;flex-direction:column}
.problem__card-media{position:relative;padding:0 0 24px 24px}
.problem__card-media::before{
  content:"";position:absolute;left:0;bottom:0;width:calc(100% - 40px);height:80%;background:var(--underlay);
}
.problem__card.is-reversed .problem__card-media{padding:0 24px 24px 0}
.problem__card.is-reversed .problem__card-media::before{left:auto;right:0}
.problem__card-frame{position:relative;aspect-ratio:4/3}
.problem__card-eyebrow{margin-top:30px;font-family:var(--font-display);font-size:var(--font-size-small);letter-spacing:.1em;color:var(--muted-text)}
.problem__card h3{margin:16px 0 0;font-family:var(--font-serif);font-weight:400;font-size:21px;line-height:1.8;letter-spacing:.18em}
.problem__card .rule{margin-top:18px;width:28px}
.problem__card p{margin:22px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.problem__closing{margin:96px 0 0;font-family:var(--font-serif);font-weight:400;font-size:21px;line-height:2;letter-spacing:.2em;text-align:center}

/* ---- service (TOP page) ---- */
.top-service{--section-top-space:170px;padding:var(--section-top-space) 80px 150px}
.top-service__grid{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:1fr 1.1fr;gap:88px;align-items:start}
.top-service__intro{display:flex;flex-direction:column}
.top-service__intro h2{margin:0;font-family:var(--font-display);font-weight:300;font-size:clamp(40px,9vw,76px);line-height:1.05;letter-spacing:.06em}
.top-service__intro .eyebrow{margin-top:20px}
.top-service__intro .rule{margin-top:18px}
.top-service__intro h3{margin:48px 0 0;font-family:var(--font-serif);font-weight:400;font-size:26px;line-height:1.9;letter-spacing:.18em}
.top-service__intro p{margin:32px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.top-service__intro-media{position:relative;margin-top:56px;aspect-ratio:4/3}

.service-list{display:flex;flex-direction:column}
.service-list__item{display:flex;gap:36px;padding:40px 0;border-top:1px solid var(--line)}
.service-list__item:first-child{padding-top:0;border-top:none;padding-bottom:40px}
.service-list__num{font-family:var(--font-display);font-size:15px;letter-spacing:.1em;color:var(--muted-text);padding-top:6px}
.service-list__body{display:flex;flex-direction:column;min-width:0}
.service-list__title{font-size:var(--font-size-body);font-weight:500;letter-spacing:.12em;color:var(--accent-text);line-height:1.8}
.service-list__body .rule{margin-top:12px}
.service-list__body p{margin:18px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}

/* ---- program ---- */
.program{padding:0 0 160px}
.program__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:56px;margin-top:88px}
.program__card{display:flex;flex-direction:column}
.program__card-frame{position:relative;aspect-ratio:3/4;height:auto;flex:none}
.program__card-title{margin-top:24px;font-size:var(--font-size-body);font-weight:500;letter-spacing:.1em;color:var(--accent-text);line-height:1.8}
.program__card .rule{margin-top:12px}
.program__card p{margin:18px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}

/* ---- plan ---- */
.plan{padding:0 0 160px}
.plan-trial{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:64px;margin-top:96px;padding:48px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.plan-trial h2,.plan-trial h3{margin:16px 0 0;font-family:var(--font-serif);font-size:22px;font-weight:400;line-height:1.7;letter-spacing:.14em}
.plan-trial__intro p{max-width:34em;margin:16px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.plan-trial__price{margin:0;font-family:var(--font-display);font-size:32px;line-height:1.6;letter-spacing:.08em}
.plan-trial__price .unit{display:inline-block;margin-left:8px;font-family:var(--font-sans);font-size:var(--font-size-small);letter-spacing:.05em;color:var(--muted-text)}
.plan-trial__time{margin:8px 0 0;font-size:var(--font-size-body);line-height:1.8;letter-spacing:.05em}
.plan-trial+.plan-cols{margin-top:0;border-top:none}
.plan-cols{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:96px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.plan-cols>div{padding:56px;display:flex;flex-direction:column}
.plan-cols>div:first-child{padding-left:0;border-right:1px solid var(--line)}
.plan-cols>div:last-child{padding-right:0}
.plan-cols .num{font-family:var(--font-display);font-size:14px;letter-spacing:.1em;color:var(--muted-text)}
.plan-cols h2,.plan-cols h3{margin:16px 0 0;font-family:var(--font-serif);font-weight:400;font-size:22px;line-height:1.7;letter-spacing:.14em}
.plan-cols .subtext{margin:14px 0 0;font-size:var(--font-size-body);line-height:1.9;letter-spacing:.05em;color:var(--muted-text)}
.plan-cols .rule{margin-top:24px}
.plan-cols .price{margin-top:24px;font-family:var(--font-display);font-size:30px;letter-spacing:.08em}
.plan-cols .price .unit{font-size:var(--font-size-small);font-family:var(--font-sans);letter-spacing:.05em;color:var(--muted-text)}
.plan-cols .spec-list{margin-top:32px;display:flex;flex-direction:column;gap:14px;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.plan-cols .spec-list .row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:start;gap:16px}
.plan-cols .spec-list .row .label{color:var(--muted-text)}
.plan-cols .footnote{margin:28px 0 0;font-size:var(--font-size-small);line-height:1.9;letter-spacing:.05em;color:var(--muted-text)}

.calc{display:grid;grid-template-columns:1fr 1fr;gap:88px;margin-top:96px}
.calc__text h2,.calc__text h3{margin:0;font-family:var(--font-serif);font-weight:400;font-size:20px;line-height:1.9;letter-spacing:.16em}
.calc__text .rule{margin-top:20px}
.calc__text p{margin:24px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.calc__formula{display:flex;flex-direction:column;justify-content:center}
.calc__formula p{margin:0;font-family:var(--font-display);font-size:16px;letter-spacing:.06em;line-height:2}
.calc__formula .note{margin:20px 0 0;font-size:var(--font-size-small);line-height:1.9;letter-spacing:.05em;color:var(--muted-text);font-family:var(--font-sans)}

.plan-cta{display:flex;justify-content:center;margin-top:56px}

/* ---- profile ---- */
.profile{padding:0 80px 160px}
.profile__grid{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:0.8fr 1.2fr;gap:88px;align-items:start}
.profile__media{position:relative}
.profile__media::before{content:"";position:absolute;left:-24px;bottom:-24px;width:calc(100% - 20px);height:88%;background:var(--underlay)}
.profile__media-frame{position:relative;aspect-ratio:4/5}
.profile__text{display:flex;flex-direction:column;padding-top:12px}
.profile__text .rule{margin-top:20px;width:40px}
.profile__text h2{margin:36px 0 0;font-family:var(--font-serif);font-weight:400;font-size:28px;line-height:1.85;letter-spacing:.18em}
.profile__byline{margin-top:32px;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px}
.profile__byline .name{font-family:var(--font-serif);font-size:19px;letter-spacing:.12em;white-space:nowrap}
.profile__byline .role{font-size:var(--font-size-small);letter-spacing:.1em;color:var(--muted-text)}
.profile__text p{margin:28px 0 0;font-size:var(--font-size-body);line-height:2.1;letter-spacing:.05em;max-width:34em}
.profile__facts{display:flex;flex-direction:column;gap:12px;margin-top:36px;padding-top:28px;border-top:1px solid var(--line);font-size:var(--font-size-small);line-height:2.2;letter-spacing:.05em;color:var(--muted-text)}

/* ---- report ---- */
.report{padding:0 80px 160px}
.report__grid{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:1.05fr 0.95fr;gap:88px;align-items:start}
.report__text .rule{margin-top:20px;width:40px}
.report__text h2{margin:36px 0 0;font-family:var(--font-serif);font-weight:400;font-size:26px;line-height:1.85;letter-spacing:.18em}
.report__text p{margin:28px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.report__list{display:flex;flex-direction:column;gap:16px;margin-top:36px;padding-top:28px;border-top:1px solid var(--line);font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.report__text .report__footnote{margin:28px 0 0;font-size:var(--font-size-small);line-height:1.9;letter-spacing:.05em;color:var(--muted-text)}
.report__media{position:relative}
.report__media::before{content:"";position:absolute;right:-24px;bottom:-24px;width:calc(100% - 20px);height:88%;background:var(--underlay)}
.report__media-frame{position:relative;aspect-ratio:10/7}

/* ---- flow ---- */
.flow{padding:0 0 160px}
.flow__list{max-width:760px;margin:88px auto 0;display:grid;grid-template-columns:120px 1fr;row-gap:56px}
.flow__num{font-family:var(--font-display);font-size:26px;letter-spacing:.02em;color:var(--ink);opacity:.8}
.flow__list h3{margin:0;font-size:var(--font-size-body);font-weight:500;letter-spacing:.1em}
.flow__list p{margin:14px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}

/* ---- faq ---- */
.faq{padding:0 0 160px}
.faq__list{max-width:900px;margin:80px auto 0;display:flex;flex-direction:column}
.faq__item{padding:28px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:40px 1fr;gap:20px}
.faq__list .faq__item:last-child{border-bottom:1px solid var(--line)}
.faq__q-mark{font-family:var(--font-display);color:var(--accent-text);font-size:15px}
.faq__item p.q{margin:0;font-size:var(--font-size-body);font-weight:500;letter-spacing:.06em}
.faq__item p.a{margin:12px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em;color:var(--muted-text)}

/* ==================================================================
   SERVICE PAGE
   ================================================================== */
.svc-block{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.svc-block.rev .svc-photo{order:2}
.svc-photo{position:relative;aspect-ratio:4/3}
.svc-detail{display:flex;align-items:flex-start;gap:28px}
.svc-detail h2{margin:0;font-family:var(--font-serif);font-weight:400;font-size:24px;line-height:1.9;letter-spacing:.2em}
.svc-detail .kicker{font-size:var(--font-size-small);letter-spacing:.2em;color:var(--accent-text);display:block;margin-top:16px}
.svc-detail .rule{margin-top:16px;width:40px}
.svc-detail p{margin:24px 0 0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}

.svc-closing{padding-top:120px;display:grid;grid-template-columns:1fr 1fr;gap:64px}
.svc-closing p{margin:0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}

.contact-cta{max-width:760px;display:flex;flex-direction:column;align-items:center;text-align:center;margin:0 auto}
.contact-cta h2{margin:0;font-family:var(--font-serif);font-weight:400;font-size:26px;line-height:1.9;letter-spacing:.18em}
.contact-cta .btn{margin-top:40px}
.contact-cta p{margin:0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}

/* ==================================================================
   PLAN PAGE (page-specific, most rules shared with TOP's .plan-cols/.calc)
   ================================================================== */
.freq{max-width:1120px;margin:96px auto 0}
.freq h2,.freq h3{margin:0;font-family:var(--font-serif);font-weight:400;font-size:18px;line-height:1.9;letter-spacing:.14em;text-align:center}
.freq-cols{display:grid;grid-template-columns:1fr 1fr;gap:64px;margin-top:56px;padding-top:40px;border-top:1px solid var(--line)}
.freq-cols>div{display:flex;flex-direction:column;gap:10px}
.freq-cols .title{font-size:var(--font-size-body);font-weight:500;letter-spacing:.08em}
.freq-cols .meta{font-size:var(--font-size-small);color:var(--muted-text);letter-spacing:.05em}
.freq-cols .price{margin-top:8px;font-family:var(--font-display);font-size:26px;letter-spacing:.06em}
.freq-cols .price .unit{font-size:var(--font-size-small);font-family:var(--font-sans);color:var(--muted-text)}
.freq__footnote{margin:40px 0 0;font-size:var(--font-size-small);line-height:1.9;letter-spacing:.05em;color:var(--muted-text);text-align:center}

.exclusions{margin-top:120px;max-width:900px;margin-left:auto;margin-right:auto;padding-top:120px;border-top:1px solid var(--line)}
.exclusions__list{margin-top:56px;display:flex;flex-direction:column;gap:14px;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.exclusions__list span{padding-bottom:14px;border-bottom:1px solid var(--line)}
.exclusions__footnote{margin:24px 0 0;font-size:var(--font-size-small);line-height:1.9;letter-spacing:.05em;color:var(--muted-text);text-align:center}
.plan-closing{max-width:760px;margin:120px auto 0;display:flex;flex-direction:column;align-items:center;text-align:center}
.plan-closing p{margin:0;font-size:var(--font-size-body);line-height:2;letter-spacing:.05em}
.plan-closing .btn{margin-top:40px}

/* ==================================================================
   CONTACT
   ================================================================== */
.contact{padding:0 0 160px}
.contact .contact-form{margin-top:72px}
.contact-form{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:32px}
.form-cols{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.contact-form label{display:flex;flex-direction:column;gap:10px;font-size:var(--font-size-body);letter-spacing:.05em}
.contact-form input,.contact-form select,.contact-form textarea{
  font-family:inherit;font-size:var(--font-size-body);color:var(--ink);background:#fff;
  border:1px solid var(--line);border-radius:0;padding:14px 16px;box-sizing:border-box;
  width:100%;letter-spacing:.03em;-webkit-appearance:none;appearance:none;
}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{outline:none;border-color:var(--accent-text)}
.contact-form textarea{resize:vertical;min-height:140px;line-height:1.7}
.contact-form select{
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 22px) center,calc(100% - 16px) center;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;
  padding-right:40px;
}
.tag-req{color:var(--accent-strong);font-size:var(--font-size-small);letter-spacing:.05em;background:rgba(11,74,150,.08);padding:2px 8px}
.tag-opt{color:var(--muted-text);font-size:var(--font-size-small);letter-spacing:.05em}
.contact-form .consent-row{flex-direction:row;align-items:flex-start;gap:10px;min-height:44px;font-size:var(--font-size-small);line-height:1.8;color:var(--muted-text);letter-spacing:.03em;cursor:pointer}
.consent-row input{width:20px;height:20px;padding:0;flex-shrink:0;margin:3px 0 0;-webkit-appearance:checkbox;appearance:auto;accent-color:var(--accent-strong)}
.consent-row a{text-decoration:underline}
.contact-form .btn{margin-top:16px;width:fit-content;justify-content:center}

.phone-block{
  max-width:760px;margin:72px auto 0;padding-top:56px;border-top:1px solid var(--line);
  display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;
}
.phone-block .label{font-size:var(--font-size-small);letter-spacing:.1em;color:var(--muted-text)}
.phone-block .number{font-family:var(--font-display);font-size:clamp(24px,6vw,30px);letter-spacing:.12em}
.phone-block a{font-size:var(--font-size-small);letter-spacing:.08em;color:var(--ink);margin-top:4px}

/* ==================================================================
   DOC PAGES (PRIVACY / TERMS)
   ================================================================== */
.doc{max-width:760px;margin:0 auto}
.doc h2{font-family:var(--font-serif);font-weight:400;font-size:18px;letter-spacing:.1em;margin:56px 0 20px}
.doc h2:first-child{margin-top:0}
.doc p,.doc li{font-size:var(--font-size-body);line-height:2;letter-spacing:.04em;color:var(--ink)}
.doc ol,.doc ul{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:8px}
.doc p{margin:0 0 12px}

/* ==================================================================
   RESPONSIVE
   ================================================================== */
@media (max-width:1023px){
  .site-header,.top-service,.profile,.report,.credential-bar,
  .subnav,.site-footer,.svc-block,.svc-closing{
    padding-left:max(24px,env(safe-area-inset-left)) !important;
    padding-right:max(24px,env(safe-area-inset-right)) !important;
  }
  .container,.wrap{
    padding-left:max(24px,env(safe-area-inset-left));
    padding-right:max(24px,env(safe-area-inset-right));
  }

  .ghost{display:none}
  .pagehead{align-items:flex-start !important;text-align:left !important}
  .pagehead .rule{margin-left:0 !important}
  .section-lede,.section-body,.problem__intro,.problem__body,.problem__closing{
    margin-left:0;margin-right:0;text-align:left !important;
  }

  .section-head{align-items:flex-start !important;text-align:left !important;gap:8px}
  .section-head .rule{margin-left:0 !important}

  .pagehead-section{padding-top:100px !important;padding-bottom:0}
  .top-service{--section-top-space:100px;padding-bottom:100px}
  .program,.plan,.profile,.report,.flow,.faq{padding-top:0;padding-bottom:100px}
  .contact{padding-bottom:100px}
  .contact .contact-form{margin-top:48px}
  .problem{--section-top-space:100px}
  .svc-block,.svc-closing{padding-top:100px;padding-bottom:100px}

  .hero{height:auto;min-height:560px}
  .hero__title{font-size:32px;right:24px;top:40px}
  .hero__kicker{left:24px;top:32px}
  .hero__programs{left:24px;right:112px;bottom:24px;flex-wrap:wrap}
  .credential-bar{padding-top:20px}

  /* iPhone SE and other short viewports: keep the hero's bottom row clear
     of the fixed consult circle, which sits at a fixed screen position
     regardless of the hero's own height. */
  @media (max-height:700px){
    .hero{min-height:460px}
  }

  .problem__grid,.top-service__grid,.plan-cols,.calc,.profile__grid,.report__grid,
  .program__grid,.svc-closing,.svc-block,.freq-cols{grid-template-columns:1fr !important}
  .problem__grid{gap:56px}
  .top-service__grid{gap:48px}
  .program__grid{gap:40px}
  .plan-cols{border-top:none}
  .plan-trial{grid-template-columns:minmax(0,1fr);gap:24px;margin-top:64px;padding:32px 0}
  .plan-cols>div{border-right:none !important;border-left:none !important;border-bottom:1px solid var(--line);padding:40px 0 !important}
  .plan-cols>div:last-child{border-bottom:none}
  .calc{gap:32px}
  .freq-cols{gap:24px}
  .svc-block.rev .svc-photo{order:0}

  .profile__media,.report__media{margin-bottom:8px}

  .flow__list{grid-template-columns:80px 1fr}

  .section-lede{font-size:19px}
}

@media (max-width:640px){
  :root{--site-header-height:72px}
  .site-header{flex-wrap:nowrap}
  .menu-toggle{display:block}
  .site-nav{
    display:none;flex-direction:column;align-items:flex-start;gap:0;
    position:absolute;top:100%;left:0;right:0;
    background:var(--panel);border-bottom:1px solid var(--line);
    padding:8px 24px 24px;
  }
  .site-header.is-open .site-nav{display:flex}
  .site-nav a{display:block;width:100%;padding:14px 0;border-bottom:1px solid var(--line);font-size:var(--font-size-body)}
  .site-nav a:last-child{border-bottom:none}
  .form-cols{grid-template-columns:1fr}
  .consult-fab{
    width:88px;height:88px;
    right:env(safe-area-inset-right,0);
    bottom:max(16px,env(safe-area-inset-bottom));
  }
  .consult-fab__label{font-size:var(--font-size-small)}
  .btn{padding:18px 24px;gap:16px;letter-spacing:.05em}
  .btn--lg{padding:18px 24px}
  .hero__kicker{right:24px}
  .hero__title{
    writing-mode:horizontal-tb;text-align:right;line-height:1.7;
    font-size:clamp(28px,8.2vw,36px);letter-spacing:.08em;
    left:auto;right:24px;top:61.8%;max-width:calc(100% - 48px);
    white-space:nowrap;translate:0 -50%;text-shadow:0 2px 16px rgba(0,0,0,.25);
    animation-name:plainFadeIn;
  }
  .hero__title-indent{display:none}
}
