/* ==========================================================================
   Alder & Oak Dental - dental portfolio reskin of the theme-forge "Merrow"
   consulting theme (tf-consult-agency). Structure, band order, geometry and
   motion are preserved from the source; identity, palette, fonts and copy
   are rebuilt for a warm family + general dentistry practice.
   Archetype kept: full-bleed photographic hero + oversized rounded display
   headline + dark caption panel; four-step process row; numbered tint rows.
   Fonts: Gabarito (display 700/800/900) + Readex Pro (body 400/500) via CDN.
   All color flows from :root props.
   ========================================================================== */

/* ---- tokens ---- */
:root {
  --ink:#23201B;          /* warm charcoal text / dark bands */
  --paper:#F7F3EC;        /* warm ivory / cream page canvas */
  --paper-2:#FFFFFF;      /* pure white for cards on tint */
  --slate:#6E655A;        /* warm muted body */
  --accent:#B96A45;       /* warm clay / terracotta (brand accent) */
  --accent-deep:#9E5334;  /* darkened clay for hover / small text on paper */
  --accent-fill:#9E5334;  /* clay that carries white type at AA (buttons, pills, chips) */
  --accent-fill-h:#83402A;/* hover for filled clay */
  --accent-sm:#8F4526;    /* deepest clay: small uppercase labels on paper or sand */
  --accent-light:#F0E4D8; /* faint clay tint (chips, success, flourish) */
  --tint-a:#EFE6D5;       /* warm sand section tint (service rows) */
  --tint-b:#DBE0D0;       /* muted sage section tint (stats band) */
  --dark:#2B261F;         /* dark warm panel / footer */
  --sage-strong:#8C9A78;  /* muted sage for prefoot + contact card + markers */

  --line:#E6DDCD;         /* hairline on light */
  --line-dark:rgba(255,255,255,.14);
  --on-dark:#F5EFE3;      /* warm bone on dark, never pure white for body */
  --on-dark-muted:#B6AEA0;

  --font-display:"Gabarito", system-ui, sans-serif;
  --font-body:"Readex Pro", system-ui, sans-serif;

  /* type scale */
  --fs-hero:clamp(2.5rem, 1.2rem + 4.7vw, 5rem);        /* 40-80 */
  --fs-h1:clamp(2.3rem, 1.4rem + 3.6vw, 4rem);          /* 37-64 */
  --fs-h2:clamp(2rem, 1.2rem + 2.6vw, 3.125rem);        /* 32-50 */
  --fs-h3-big:clamp(1.9rem, 1.3rem + 1.9vw, 2.5rem);    /* 30-40 */
  --fs-h3:clamp(1.2rem, 1.05rem + 0.5vw, 1.375rem);     /* 19-22 */
  --fs-body:clamp(1rem, 0.95rem + 0.25vw, 1.125rem);    /* 16-18 */
  --fs-lead:clamp(1.06rem, 0.98rem + 0.3vw, 1.1875rem); /* 17-19 */
  --fs-small:0.9375rem;
  --fs-over:0.8125rem;
  --fs-count:clamp(3rem, 1.5rem + 5vw, 5rem);

  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px;
  --s7:48px; --s8:64px; --s9:96px; --s10:130px;

  --r-pill:999px;
  --r-card:14px;          /* friendly rounded for the warm family voice */
  --r-btn:999px;

  --sh-1:0 2px 10px rgba(35,32,27,.06);
  --sh-2:0 20px 50px rgba(35,32,27,.12);

  --t-base:300ms;
  --ease:cubic-bezier(.22,.61,.36,1);

  --wrap:1397px;
  --wrap-wide:1520px;
  --gutter:clamp(20px, 3vw, 44px);
  --edge:clamp(20px, 13.9vw, 200px);
}

/* ---- reset / base ---- */
*,*::before,*::after { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body {
  /* clip, never hidden: `hidden` turns body into a scroll container and silently
     kills every position:sticky descendant (the journal TOC, the solid header) */
  margin:0; overflow-x:clip; background:var(--paper); color:var(--ink);
  font-family:var(--font-body); font-size:var(--fs-body); line-height:1.6;
  font-weight:400; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
}
img { max-width:100%; display:block; }
/* flex/grid components below set display, which would otherwise beat the UA
   [hidden] rule and leak the quiz controls and journal chips before JS runs */
[hidden] { display:none !important; }
a { color:inherit; text-decoration:none; }
button { font-family:inherit; cursor:pointer; }
h1,h2,h3,h4 { font-family:var(--font-display); font-weight:800; line-height:1.02; margin:0; letter-spacing:-0.01em; color:var(--ink); text-wrap:balance; }
h3 { font-weight:700; }
p { margin:0; text-wrap:pretty; }
svg { display:block; }
:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
::selection { background:var(--accent); color:#fff; }
.skip { position:absolute; left:-9999px; top:0; background:var(--ink); color:#fff; padding:10px 16px; z-index:200; }
.skip:focus { left:12px; top:12px; }

/* ---- layout primitives ---- */
.wrap { width:100%; max-width:var(--wrap); margin:0 auto; padding:0 var(--gutter); }
.section { padding:var(--s10) 0; }
.center { text-align:center; }

.ico { width:22px; height:22px; display:inline-block; flex:none; }
.ico svg { width:100%; height:100%; }

/* ---- overline ---- */
.over {
  display:inline-block; font-family:var(--font-body); font-weight:600;
  font-size:var(--fs-over); letter-spacing:.16em; text-transform:uppercase;
  color:var(--accent-deep); padding-bottom:6px; border-bottom:1.5px solid currentColor;
}
.over--muted { color:var(--slate); }
.over--dark { color:var(--on-dark); }

/* ---- buttons ---- */
.btn { display:inline-flex; align-items:center; gap:10px; font-family:var(--font-body);
  font-weight:600; font-size:var(--fs-small); line-height:1; padding:16px 26px; white-space:nowrap;
  border-radius:var(--r-btn); border:1.5px solid transparent; transition:background var(--t-base) var(--ease), color var(--t-base) var(--ease), transform 120ms var(--ease); }
.btn:active { transform:scale(.97); }
.btn .ico { width:26px; height:26px; padding:5px; border-radius:50%; }
.btn--dark { background:var(--dark); color:#fff; }
.btn--dark .ico { background:#fff; color:var(--dark); }
.btn--dark:hover { background:#191510; }
.btn--accent { background:var(--accent-fill); color:#fff; }
.btn--accent .ico { background:#fff; color:var(--accent-deep); }
.btn--accent:hover { background:var(--accent-fill-h); }
.btn--white { background:#fff; color:var(--ink); }
.btn--white .ico { background:var(--ink); color:#fff; }
.btn--white:hover { background:var(--accent-light); }
.btn--outline { background:transparent; color:var(--ink); border-color:var(--ink); }
.btn--outline .ico { background:var(--ink); color:#fff; }
.btn--outline:hover { background:var(--ink); color:#fff; }
.btn--outline:hover .ico { background:#fff; color:var(--ink); }
.btn--block { width:100%; justify-content:center; }

.arrowlink { display:inline-flex; align-items:center; gap:10px; font-weight:600;
  padding-bottom:5px; border-bottom:1.5px solid var(--accent); color:var(--accent-deep); transition:gap var(--t-base) var(--ease); }
.arrowlink .ico { width:16px; height:16px; }
.arrowlink:hover { gap:16px; }
.arrowlink--dark { border-color:var(--on-dark); color:var(--on-dark); }

/* =====================================================================
   HEADER
   ===================================================================== */
.site-header { position:absolute; top:0; left:0; right:0; z-index:100;
  height:82px; display:flex; align-items:center;
  border-bottom:1px solid var(--line-dark); transition:background var(--t-base), color var(--t-base); }
.site-header .wrap { max-width:var(--wrap-wide); display:flex; align-items:center; gap:24px; }
.brand { display:inline-flex; align-items:center; gap:11px; font-family:var(--font-display);
  font-weight:800; font-size:1.28rem; letter-spacing:.005em; color:var(--on-dark); flex-shrink:0; }
.brand__mark { width:30px; height:30px; flex:none; }
.brand small { display:none; }
.nav { display:flex; align-items:center; gap:30px; margin:0 auto; }
.nav__item { position:relative; }
.nav__link { display:inline-flex; align-items:center; gap:6px; font-weight:500;
  font-size:0.95rem; color:var(--on-dark); padding:8px 0; }
.nav__caret { width:14px; height:14px; }
.dropdown { position:absolute; top:100%; left:-14px; min-width:250px; background:#fff;
  border:1px solid var(--line); border-radius:12px; box-shadow:var(--sh-2); padding:8px; opacity:0;
  visibility:hidden; transform:translateY(8px); transition:opacity var(--t-base) var(--ease), transform var(--t-base) var(--ease), visibility var(--t-base); }
.nav__item:hover .dropdown, .nav__item:focus-within .dropdown { opacity:1; visibility:visible; transform:translateY(0); }
.dropdown a { display:block; padding:11px 14px; border-radius:8px; color:var(--ink); font-size:0.92rem; }
.dropdown a:hover { background:var(--accent-light); }
.header-right { display:flex; align-items:center; gap:16px; margin-left:auto; }
.header-phone { display:inline-flex; align-items:center; gap:8px; font-weight:500; font-size:0.92rem; color:var(--on-dark); }
.header-phone .ico { width:18px; height:18px; }
.header-cta { padding:13px 22px; }
.nav-toggle { display:none; width:44px; height:44px; align-items:center; justify-content:center;
  background:transparent; border:1px solid var(--line-dark); border-radius:10px; color:var(--on-dark); }
.nav-toggle .ico { width:22px; height:22px; }

.site-header--solid, .site-header.is-stuck {
  position:fixed; background:var(--paper); border-bottom:1px solid var(--line); color:var(--ink); }
.site-header--solid .brand, .is-stuck .brand,
.site-header--solid .nav__link, .is-stuck .nav__link,
.site-header--solid .header-phone, .is-stuck .header-phone { color:var(--ink); }
.site-header--solid .nav-toggle, .is-stuck .nav-toggle { border-color:var(--line); color:var(--ink); }
.header-spacer { height:82px; }

/* mobile panel */
.mobile-panel { position:fixed; inset:0; z-index:150; background:var(--paper); color:var(--ink);
  padding:24px var(--gutter); display:flex; flex-direction:column; overflow-y:auto;
  visibility:hidden; opacity:0; transform:translateX(100%);
  transition:transform var(--t-base) var(--ease), opacity var(--t-base), visibility var(--t-base); }
.mobile-panel.open { visibility:visible; opacity:1; transform:translateX(0); }
.mobile-panel__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; }
.mobile-panel__head .brand { color:var(--ink); }
.mobile-panel__close { width:44px; height:44px; background:transparent; border:1px solid var(--line); border-radius:10px;
  display:flex; align-items:center; justify-content:center; }
.mobile-panel__close .ico { width:22px; height:22px; }
.mobile-panel nav { display:flex; flex-direction:column; gap:4px; }
.mobile-panel nav a { padding:14px 4px; font-family:var(--font-display); font-weight:700;
  font-size:1.3rem; border-bottom:1px solid var(--line); }
.mobile-panel nav a.sub { font-family:var(--font-body); font-weight:500; font-size:1rem;
  padding-left:18px; color:var(--slate); }
.mobile-panel nav a.btn { margin-top:20px; border:none; justify-content:center; }

/* =====================================================================
   HERO
   ===================================================================== */
.hero { position:relative; min-height:min(940px, 108vh); overflow:hidden; background:var(--dark); }
.hero__photo { position:absolute; inset:0; }
.hero__photo img { width:100%; height:100%; object-fit:cover; opacity:0; }
.hero__photo img:first-of-type { opacity:1; }
.hero__photo::before { content:""; position:absolute; inset:0;
  background:radial-gradient(120% 90% at 0% 0%, rgba(43,38,31,.62), transparent 46%); }
.hero__inner { position:relative; z-index:2; min-height:min(940px,108vh);
  max-width:var(--wrap-wide); margin:0 auto; padding-inline:var(--edge);
  display:flex; flex-direction:column; justify-content:center; }
.hero__copy { max-width:700px; }
.hero__pill { display:inline-block; background:var(--accent-fill); color:#fff; font-weight:600;
  font-size:var(--fs-small); padding:9px 20px; border-radius:var(--r-pill); margin-bottom:22px; }
.hero h1 { font-size:var(--fs-hero); font-weight:900; color:#fff; line-height:1.0; }
.hero__rule { width:200px; height:2px; background:rgba(255,255,255,.85); margin:26px 0 16px 220px; }
.hero__sub { color:#fff; font-weight:500; font-size:var(--fs-lead); max-width:380px; margin-left:220px; }
.hero__panel { position:absolute; right:0; bottom:0; z-index:2; width:min(524px,40vw);
  background:var(--dark); color:#fff; padding:40px 44px; overflow:hidden; }
.hero__panel-x { position:absolute; right:-18px; bottom:-40px; font-family:var(--font-display);
  font-weight:900; font-size:210px; line-height:1; color:rgba(245,239,227,.06); pointer-events:none; }
.hero__panel p { position:relative; font-size:var(--fs-lead); font-weight:500; color:var(--on-dark); }

/* =====================================================================
   BAND 2 - PROCESS + INTRO
   ===================================================================== */
.processband { background:var(--paper); }
.processband .wrap { max-width:var(--wrap-wide); display:grid; grid-template-columns:1.6fr 1fr; gap:70px; align-items:start; }
.proc-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:44px 40px; }
.proc-item .proc-ico { width:56px; height:56px; color:var(--accent); margin-bottom:24px; }
.proc-item .proc-ico svg { width:100%; height:100%; }
.proc-item h3 { font-size:var(--fs-h3); margin-bottom:10px; }
.proc-item p { color:var(--slate); font-size:var(--fs-small); }
.proc-item--wide { grid-column:1; }
.proc-photo { grid-column:2 / 4; grid-row:2; align-self:end; }
.proc-photo img { width:100%; height:280px; object-fit:cover; border-radius:var(--r-card); }
.feat-intro { position:relative; min-height:100%; display:flex; flex-direction:column; }
.feat-intro h2 { font-size:var(--fs-h2); margin:22px 0 22px; }
.feat-intro p { color:var(--slate); }
.feat-intro .btn { align-self:flex-start; margin-top:60px; }

/* =====================================================================
   BAND 3 - SERVICE ROWS
   ===================================================================== */
.servicerows { background:var(--tint-a); }
.srow { display:grid; grid-template-columns:1fr minmax(360px,524px); align-items:stretch; }
.srow__body { padding:96px 60px 96px var(--edge); max-width:calc(var(--wrap-wide)/2 + 120px); }
.srow__num { display:inline-block; font-weight:600; font-size:var(--fs-over); letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent-deep); padding-bottom:5px; border-bottom:1.5px solid var(--accent); margin-bottom:56px; }
.srow__title { font-size:var(--fs-h3-big); font-weight:800; max-width:14ch; margin-bottom:22px; }
.srow__body > p { color:var(--slate); max-width:46ch; margin-bottom:26px; }
.srow__checks { list-style:none; margin:0 0 34px; padding:0; display:flex; flex-direction:column; gap:14px; }
.srow__checks li { display:flex; align-items:center; gap:12px; font-weight:500; }
.srow__checks .ico { width:20px; height:20px; color:var(--accent); }
.srow__photo { position:relative; min-height:360px; }
.srow__photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }

/* =====================================================================
   BAND 4 - DEDICATED / GLYPH
   ===================================================================== */
.dedicated { background:var(--paper); text-align:center; padding:var(--s10) 0; }
.dedicated .wrap { max-width:980px; }
.dedicated h2 { font-size:var(--fs-h3-big); font-weight:800; line-height:1.2; margin-bottom:34px; }
.dedicated h2 .muted { color:var(--slate); }
.dedicated .arrowlink { margin-bottom:70px; }
.xglyph { width:min(340px,72vw); aspect-ratio:1; margin:0 auto; }
.xglyph img { width:100%; height:100%; object-fit:cover; border-radius:50%;
  outline:1px solid rgba(0,0,0,.08); outline-offset:-1px; }

/* =====================================================================
   BAND 5 - STATS
   ===================================================================== */
.stats { background:var(--tint-b); }
.stats__photo { height:min(640px,60vh); }
.stats__photo img { width:100%; height:100%; object-fit:cover; }
.stats__panel { max-width:var(--wrap-wide); margin:0 auto; padding:64px var(--edge) 80px;
  display:grid; grid-template-columns:1.1fr 1fr 0.9fr; gap:54px; align-items:start; }
.stats__lead { position:relative; }
.stats__marker { position:absolute; left:-6px; top:-30px; width:64px; height:26px;
  background:var(--accent); transform:skewX(-24deg); }
.stats__lead .over { margin-bottom:22px; }
.stats__lead h2 { font-size:var(--fs-h2); }
.stats-tabs { list-style:none; margin:0; padding:0; }
.stats-tab { width:100%; text-align:left; background:transparent; border:none;
  border-top:1px solid rgba(35,32,27,.2); display:grid; grid-template-columns:auto 1fr;
  gap:18px; align-items:baseline; padding:22px 0; cursor:pointer; font-family:inherit; }
.stats-tab:last-child { border-bottom:1px solid rgba(35,32,27,.2); }
.stats-tab__n { font-weight:600; color:var(--accent-deep); font-size:var(--fs-small); font-variant-numeric:tabular-nums; }
.stats-tab__t { font-family:var(--font-display); font-weight:700; font-size:1.15rem; line-height:1.2; }
.stats-tab[aria-expanded="true"] .stats-tab__t { color:var(--ink); }
.stats-tab__t small { display:block; font-family:var(--font-body); font-weight:400;
  font-size:0.9rem; color:var(--slate); margin-top:8px; max-width:34ch;
  max-height:0; overflow:hidden; opacity:0; transition:max-height var(--t-base) var(--ease), opacity var(--t-base) var(--ease), margin-top var(--t-base); }
.stats-tab[aria-expanded="true"] .stats-tab__t small { max-height:90px; opacity:1; margin-top:10px; }
.stats__count .num { font-family:var(--font-display); font-weight:900; font-size:var(--fs-count); line-height:1; font-variant-numeric:tabular-nums; }
.stats__count p { color:var(--slate); margin-top:16px; }

/* =====================================================================
   BAND 6 - TESTIMONIALS
   ===================================================================== */
.testi { background:var(--paper); text-align:center; }
.testi__head { margin-bottom:60px; }
.testi__head h2 { font-size:var(--fs-h2); margin-top:18px; }
.testi__stage { position:relative; max-width:var(--wrap); margin:0 auto; }
.testi__track { overflow:hidden; }
.testi__slides { display:flex; transition:transform 500ms var(--ease); }
.testi__slide { flex:0 0 100%; display:grid; grid-template-columns:407px 1fr; gap:70px;
  align-items:center; text-align:left; }
.testi__photo { width:407px; height:460px; }
.testi__photo img { width:100%; height:100%; object-fit:cover; border-radius:var(--r-card); }
.testi__quotemark { font-family:var(--font-display); font-weight:900; font-size:90px;
  line-height:.6; color:var(--accent); height:56px; }
.testi__quote { font-family:var(--font-display); font-weight:700; font-size:clamp(1.3rem, 1rem + 1.3vw, 1.9rem);
  line-height:1.3; margin:20px 0 30px; }
.testi__by { border-left:3px solid var(--accent); padding-left:16px; }
.testi__name { font-family:var(--font-display); font-weight:700; }
.testi__role { color:var(--slate); font-size:var(--fs-small); }
.testi__arrow { position:absolute; top:50%; transform:translateY(-50%); width:44px; height:44px;
  background:transparent; border:none; color:var(--ink); }
.testi__arrow .ico { width:30px; height:30px; }
.testi__arrow--prev { left:-10px; }
.testi__arrow--next { right:-10px; }

/* =====================================================================
   BAND 7 - SPECIALIZATION (dark)
   ===================================================================== */
.spec { background:var(--dark); color:var(--on-dark); }
.spec__grid { display:grid; grid-template-columns:1fr 1fr; align-items:stretch; }
.spec__photo { position:relative; min-height:520px; }
.spec__photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.spec__body { padding:96px var(--edge) 96px 70px; }
.spec__body .over { color:var(--on-dark); border-color:var(--on-dark); margin-bottom:30px; }
.spec__body h2 { color:#fff; font-size:var(--fs-h2); margin-bottom:26px; }
.spec__body > p { color:var(--on-dark-muted); max-width:48ch; margin-bottom:30px; }
.spec__body > p b { color:#fff; font-weight:600; }
.spec__checks { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:16px; }
.spec__checks li { display:flex; align-items:center; gap:12px; font-weight:500; color:#fff; }
.spec__checks .ico { width:18px; height:18px; color:var(--accent); }

/* =====================================================================
   BAND 8 - BLOG / INSIGHT CARDS
   ===================================================================== */
.blog { background:var(--paper); }
.blog__head { display:flex; justify-content:space-between; align-items:flex-end; gap:30px; margin-bottom:56px; }
.blog__head h2 { font-size:var(--fs-h2); max-width:16ch; }
.blog__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:44px; }
.post__img { width:100%; height:270px; object-fit:cover; margin-bottom:22px; border-radius:var(--r-card); }
.post__meta { display:flex; align-items:center; gap:14px; margin-bottom:14px; }
.post__cat { background:var(--accent-light); color:var(--accent-deep); font-size:0.78rem; font-weight:600;
  padding:5px 12px; border-radius:var(--r-pill); }
.post__date { color:var(--slate); font-size:var(--fs-small); }
.post h3 { font-size:var(--fs-h3-big); font-weight:800; line-height:1.18; }
.post h3 a:hover { color:var(--accent); }

/* =====================================================================
   PRE-FOOTER + FOOTER
   ===================================================================== */
.prefoot .wrap { max-width:var(--wrap-wide); display:grid; grid-template-columns:1fr 1.4fr; }
.prefoot__hours { position:relative; background:var(--sage-strong); color:#fff;
  font-weight:500; padding:34px 40px; display:flex; align-items:center; gap:10px; }
.prefoot__hours b { font-weight:700; }
.prefoot__hours::after { content:""; position:absolute; left:44px; bottom:-18px; width:36px; height:18px;
  background:var(--sage-strong); clip-path:polygon(0 0,100% 0,50% 100%); }
.prefoot__cta { background:var(--accent-fill); color:#fff; padding:34px 40px; display:flex; align-items:center;
  justify-content:space-between; gap:20px; font-family:var(--font-display); font-weight:700; font-size:1.15rem; }
.prefoot__cta .ico { width:34px; height:34px; padding:8px; border:1.5px solid rgba(255,255,255,.45); border-radius:50%; }
.prefoot__cta:hover { background:var(--accent-fill-h); }
.prefoot__cta:hover .ico { background:#fff; color:var(--accent-deep); }

.site-foot { background:var(--dark); color:var(--on-dark-muted); padding:80px 0 40px; }
.site-foot .wrap { max-width:var(--wrap-wide); }
.foot-top { display:grid; grid-template-columns:1.4fr repeat(3,1fr) 1.3fr; gap:40px; }
.site-foot .brand { color:#fff; }
.foot-col h4 { color:#fff; font-family:var(--font-display); font-weight:700; font-size:1.15rem; margin-bottom:22px; }
.foot-col ul { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.foot-col a:hover { color:#fff; }
.foot-news form { display:flex; border:1px solid var(--line-dark); border-radius:10px; overflow:hidden; background:#221E18; }
.foot-news input { flex:1; min-width:0; background:transparent; border:none; color:#fff; padding:14px 16px; font-family:inherit; }
.foot-news input::placeholder { color:var(--on-dark-muted); }
.foot-news button { background:transparent; border:none; color:#fff; padding:0 16px; }
.foot-news button .ico { width:22px; height:22px; }
.foot-bottom { display:flex; align-items:center; justify-content:space-between; gap:20px;
  margin-top:56px; padding-top:26px; border-top:1px solid var(--line-dark); flex-wrap:wrap; }
.foot-social { display:flex; gap:16px; }
.foot-social a { color:var(--on-dark-muted); }
.foot-social a:hover { color:#fff; }
.foot-social .ico { width:20px; height:20px; }
.foot-legal { color:var(--on-dark-muted); font-size:0.82rem; max-width:74ch; line-height:1.6; }
.foot-copy b { color:#fff; font-weight:600; }

.scrolltop { position:fixed; right:24px; bottom:24px; z-index:90; width:46px; height:46px;
  background:var(--accent); color:#fff; border:none; border-radius:50%; display:flex;
  align-items:center; justify-content:center; opacity:0; visibility:hidden; transition:opacity var(--t-base), visibility var(--t-base); }
.scrolltop.show { opacity:1; visibility:visible; }
.scrolltop .ico { width:22px; height:22px; }

/* =====================================================================
   INNER PAGE HEADER
   ===================================================================== */
.pagehead { padding:70px 0 60px; background:var(--paper); }
.pagehead .wrap { max-width:var(--wrap-wide); }
.pagehead__top { display:grid; grid-template-columns:170px 1fr; gap:40px; align-items:start; }
.pagehead .over { margin-top:12px; }
.pagehead h1 { font-size:clamp(2.5rem, 1.4rem + 4.5vw, 4.5rem); font-weight:900; line-height:1.04; max-width:16ch; }
.pagehead__aside { color:var(--slate); }
.pagehead__aside p { margin-bottom:22px; }
.pagehead__split { display:grid; grid-template-columns:1.3fr 1fr; gap:60px; align-items:start; margin-top:20px; }
.pagehead__split .feature__media img { border-radius:var(--r-card); }

/* generic feature block */
.feature { display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.feature--rev .feature__media { order:2; }
.feature__media img { width:100%; height:100%; object-fit:cover; border-radius:var(--r-card); }
.feature h2 { font-size:var(--fs-h2); margin-bottom:22px; }
.feature p { color:var(--slate); margin-bottom:18px; }
.checklist { list-style:none; margin:20px 0 30px; padding:0; display:flex; flex-direction:column; gap:14px; }
.checklist li { display:flex; align-items:flex-start; gap:12px; }
.checklist .ico { width:20px; height:20px; color:var(--accent); margin-top:3px; }
.checklist b { font-weight:600; }
.checklist span { color:var(--slate); }

/* milestone timeline */
.timeline { border-top:1px solid var(--line); }
.milestone { display:grid; grid-template-columns:170px 1fr; gap:40px; padding:32px 0;
  border-bottom:1px solid var(--line); }
.milestone__year { font-weight:600; color:var(--accent-deep); font-size:var(--fs-small); font-variant-numeric:tabular-nums; }
.milestone h3 { font-size:var(--fs-h3-big); font-weight:800; margin-bottom:10px; }
.milestone p { color:var(--slate); max-width:46ch; }

/* medallion */
.medallion { background:var(--dark); color:#fff; text-align:center; padding:60px var(--gutter); }
.medallion__seal { width:120px; height:120px; margin:0 auto 26px; border:2px solid var(--accent);
  border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-family:var(--font-display); font-weight:900; font-size:1.6rem; color:var(--accent); }
.medallion p { max-width:60ch; margin:0 auto; color:var(--on-dark-muted); }
.medallion p b { color:#fff; font-weight:600; }

/* team grid */
.teamgrid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:34px; }
.member__photo { position:relative; overflow:hidden; margin-bottom:18px; border-radius:var(--r-card); }
.member__photo img { width:100%; aspect-ratio:4/5; object-fit:cover; }
.member__mono { width:100%; aspect-ratio:4/5; background:var(--accent-light); color:var(--accent-deep);
  display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:900; font-size:3.4rem; }
.member h3 { font-size:var(--fs-h3); text-align:center; }
.member p { text-align:center; color:var(--slate); font-size:var(--fs-small); margin-top:4px; }

/* numbered service list */
.numlist { border-top:1px solid var(--line); }
.numrow { display:grid; grid-template-columns:70px 1fr auto; gap:30px; align-items:center;
  padding:30px 0; border-bottom:1px solid var(--line); transition:padding var(--t-base) var(--ease); }
.numrow__n { font-weight:600; color:var(--accent-deep); font-size:var(--fs-small); font-variant-numeric:tabular-nums; }
.numrow h3 { font-size:var(--fs-h3-big); font-weight:800; margin-bottom:8px; }
.numrow p { color:var(--slate); max-width:60ch; }
.numrow__arrow { width:40px; height:40px; border:1.5px solid var(--line); border-radius:50%;
  display:flex; align-items:center; justify-content:center; color:var(--ink); }
.numrow__arrow .ico { width:18px; height:18px; }
.numrow:hover { padding-left:14px; }
.numrow:hover .numrow__arrow { background:var(--accent); color:#fff; border-color:var(--accent); }

/* accordion - one system, JS-coordinated (single item open per [data-accordion] root).
   No-JS: the `js` class never lands on <html>, so every answer stays expanded. */
.darkband { background:var(--dark); color:var(--on-dark); }
.acc { border-top:1px solid var(--line-dark); }
.acc-item { border-bottom:1px solid var(--line-dark); }
.acc-q { width:100%; text-align:left; background:transparent; border:none; color:#fff;
  font-family:var(--font-display); font-weight:700; font-size:1.15rem; line-height:1.25; padding:24px 0;
  display:flex; align-items:center; justify-content:space-between; gap:20px; }
.acc-q .ico { width:22px; height:22px; flex:none; color:var(--accent); transition:transform var(--t-base) var(--ease); }
.acc-item.open .acc-q .ico { transform:rotate(45deg); }
.acc-a { color:var(--on-dark-muted); }
.acc-a__inner { padding:0 0 24px; max-width:74ch; }
.js .acc-a { max-height:0; overflow:hidden; transition:max-height 420ms var(--ease); }
.js .acc-item.open .acc-a { max-height:600px; }

/* light accordion (on paper / sand) */
.acc--light { border-top:1px solid var(--line); }
.acc--light .acc-item { border-bottom:1px solid var(--line); }
.acc--light .acc-q { color:var(--ink); }
.acc--light .acc-a { color:var(--slate); }

/* CTA band */
.ctaband { background:var(--paper); text-align:center; padding:var(--s10) 0; }
.ctaband h2 { font-size:var(--fs-h1); max-width:20ch; margin:18px auto 34px; }
.ctaband .cta-actions { display:flex; gap:16px; justify-content:center; flex-wrap:wrap; }
.ctaband .fine { color:var(--slate); font-size:var(--fs-small); margin-top:22px; }

/* =====================================================================
   CONTACT + BOOK
   ===================================================================== */
.contact__map { position:relative; }
.contact__map > svg { width:100%; height:min(520px,60vh); display:block; }
.contact__card { position:absolute; left:var(--edge); top:8%;
  width:min(360px,80vw); background:var(--sage-strong); color:#fff; padding:44px 40px; border-radius:var(--r-card); }
.contact__card .brand { color:#fff; margin-bottom:70px; }
.contact__card h3 { font-size:var(--fs-h3); margin-bottom:16px; }
.contact__card a { display:block; font-weight:500; margin-bottom:8px; }
.contact-grid { display:grid; grid-template-columns:1fr 1.1fr; gap:70px; align-items:start; }
.contact-info h2 { font-size:var(--fs-h2); margin:16px 0 20px; }
.contact-info p { color:var(--slate); margin-bottom:26px; }
.contact-rows { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:20px; }
.contact-rows li { display:flex; gap:16px; align-items:flex-start; }
.contact-rows .ci { width:44px; height:44px; flex:none; background:var(--accent-light); color:var(--accent-deep);
  display:flex; align-items:center; justify-content:center; border-radius:10px; }
.contact-rows .ci .ico { width:20px; height:20px; }
.contact-rows dt { font-weight:600; }
.contact-rows dd { margin:2px 0 0; color:var(--slate); }
.formcard { background:#fff; border:1px solid var(--line); border-radius:var(--r-card); padding:40px; box-shadow:var(--sh-1); }
.field { margin-bottom:18px; }
.field label { display:block; font-weight:600; font-size:var(--fs-small); margin-bottom:8px; }
.field input, .field select, .field textarea { width:100%; padding:14px 16px; border:1px solid var(--line);
  border-radius:10px; background:#fff; font-family:inherit; font-size:1rem; color:var(--ink); }
.field textarea { min-height:120px; resize:vertical; }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form__consent { color:var(--slate); font-size:0.82rem; margin-top:14px; }
.form__success { display:none; padding:22px; background:var(--accent-light); border-left:3px solid var(--accent); border-radius:10px; }
.form__success.show { display:block; }

/* =====================================================================
   MEMBERSHIP TIERS (dental addition, on-theme sharp/hairline cards)
   ===================================================================== */
.plans { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; align-items:stretch; }
.plan { background:#fff; border:1px solid var(--line); border-radius:var(--r-card); padding:36px 32px;
  display:flex; flex-direction:column; box-shadow:var(--sh-1); }
.plan--featured { background:var(--dark); color:var(--on-dark); border-color:var(--dark); }
.plan__tag { font-family:var(--font-body); font-weight:600; font-size:var(--fs-over); letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent-deep); margin-bottom:18px; }
.plan--featured .plan__tag { color:var(--accent); }
.plan__price { display:flex; align-items:baseline; gap:6px; margin-bottom:6px; }
.plan__price b { font-family:var(--font-display); font-weight:900; font-size:3rem; line-height:1; }
.plan__price span { color:var(--slate); font-size:var(--fs-small); }
.plan--featured .plan__price span { color:var(--on-dark-muted); }
.plan__note { color:var(--slate); font-size:var(--fs-small); margin-bottom:24px; }
.plan--featured .plan__note { color:var(--on-dark-muted); }
.plan__list { list-style:none; margin:0 0 28px; padding:0; display:flex; flex-direction:column; gap:13px; }
.plan__list li { display:flex; align-items:flex-start; gap:11px; font-size:var(--fs-small); }
.plan__list .ico { width:19px; height:19px; flex:none; color:var(--accent); margin-top:2px; }
.plan .btn { margin-top:auto; }

/* =====================================================================
   REVIEW CARDS (reviews page + proof grids)
   ===================================================================== */
.reviewgrid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.reviewcard { background:#fff; border:1px solid var(--line); border-radius:var(--r-card); padding:30px 28px;
  display:flex; flex-direction:column; box-shadow:var(--sh-1); }
.reviewcard .stars { display:inline-flex; gap:3px; color:var(--accent); margin-bottom:16px; }
.reviewcard .stars .ico { width:18px; height:18px; }
.reviewcard p { color:var(--ink); margin-bottom:20px; }
.reviewcard .rc-by { margin-top:auto; }
.reviewcard .rc-name { font-family:var(--font-display); font-weight:700; }
.reviewcard .rc-meta { color:var(--slate); font-size:var(--fs-small); margin-top:2px; }

/* value / trust strip (small icon rows) */
.valuegrid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px; }
.valuecard { text-align:left; }
.valuecard .vc-ico { width:46px; height:46px; color:var(--accent); margin-bottom:16px; }
.valuecard .vc-ico svg { width:100%; height:100%; }
.valuecard h3 { font-size:var(--fs-h3); margin-bottom:8px; }
.valuecard p { color:var(--slate); font-size:var(--fs-small); }

/* =====================================================================
   CARE PAGE: EDUCATE-TO-SELL MODULES
   Same grammar as the rest of the theme: sand tint bands, rounded media,
   hairline rules, clay overlines, Gabarito headings.
   ===================================================================== */
.caremod { padding:var(--s9) 0; }
.caremod--sand { background:var(--tint-a); }
.caremod__head { max-width:820px; margin-bottom:44px; }
.caremod__head h2 { font-size:var(--fs-h2); margin-top:16px; }
.caremod__head p { color:var(--slate); margin-top:18px; max-width:64ch; }
.caremod .over { color:var(--accent-sm); }
.caremod__note { margin-top:26px; font-size:var(--fs-small); line-height:1.65; color:var(--slate); max-width:70ch; }

/* --- before / after drag-to-compare --- */
.baslider { max-width:1120px; }
.ba__stage { position:relative; aspect-ratio:16/10; overflow:hidden; user-select:none; touch-action:none;
  background:var(--tint-a); border-radius:var(--r-card); outline:1px solid rgba(35,32,27,.10); outline-offset:-1px; }
.ba__img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.ba__top { clip-path:inset(0 50% 0 0); }
.ba__label { position:absolute; bottom:18px; z-index:3; font-family:var(--font-body); font-size:0.69rem;
  font-weight:600; letter-spacing:.16em; text-transform:uppercase; padding:8px 15px; border-radius:var(--r-pill); color:#fff; }
.ba__label--before { left:18px; background:rgba(35,32,27,.88); }
.ba__label--after { right:18px; background:var(--accent-fill); }
.ba__handle { position:absolute; top:0; bottom:0; left:50%; width:2px; background:#fff; z-index:4;
  transform:translateX(-50%); pointer-events:none; box-shadow:0 0 0 1px rgba(35,32,27,.22); }
.ba__grip { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:52px; height:52px;
  border-radius:50%; background:var(--accent); color:#fff; z-index:5; display:flex; align-items:center;
  justify-content:center; pointer-events:none; box-shadow:0 8px 22px rgba(35,32,27,.30); }
.ba__grip svg { width:22px; height:22px; }
.ba__range { position:absolute; inset:0; z-index:6; width:100%; height:100%; margin:0; padding:0; opacity:0; cursor:ew-resize; }
.ba__range:focus-visible { outline:none; }
.ba__range:focus-visible ~ .ba__grip { outline:2px solid var(--ink); outline-offset:3px; }
.baslider__caps { display:grid; grid-template-columns:1fr 1fr; gap:30px; margin-top:18px; }
.baslider__caps span { font-size:var(--fs-small); line-height:1.55; color:var(--slate); }
.baslider__caps span:last-child { text-align:right; }

/* --- comparison table (shared with the article TABLE block) --- */
.etable { margin:0; }
.etable__cap { font-size:var(--fs-small); line-height:1.55; color:var(--slate); margin-bottom:16px; }
.etable__scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.etable table { width:100%; border-collapse:collapse; font-size:var(--fs-small); }
.etable--def th[scope=row] { font-family:var(--font-display); font-weight:700; font-size:1.05rem; color:var(--ink);
  text-align:left; vertical-align:top; padding:20px 30px 20px 0; width:32%; }
.etable--def td { color:var(--slate); line-height:1.65; vertical-align:top; padding:20px 0; }
.etable--def tr { border-bottom:1px solid var(--line); }
.etable--def tr:first-child { border-top:1px solid var(--line); }
.etable--grid table { min-width:540px; }
.etable--grid th[scope=col] { font-family:var(--font-display); font-weight:700; font-size:0.95rem; color:var(--ink);
  text-align:left; padding:0 22px 14px 0; border-bottom:2px solid var(--ink); white-space:nowrap; }
.etable--grid th[scope=row] { font-family:var(--font-display); font-weight:700; font-size:1rem; color:var(--ink);
  text-align:left; vertical-align:top; padding:18px 22px 18px 0; }
.etable--grid td { color:var(--slate); line-height:1.6; vertical-align:top; padding:18px 22px 18px 0; }
.etable--grid tbody tr { border-bottom:1px solid var(--line); }
.etable--grid th[scope=col]:last-child, .etable--grid td:last-child { padding-right:0; }

/* --- big-number highlight --- */
.carestat__inner { background:var(--paper-2); border:1px solid var(--line); border-left:4px solid var(--accent);
  border-radius:var(--r-card); padding:clamp(30px,4vw,54px); box-shadow:var(--sh-1); }
.carestat__row { display:grid; grid-template-columns:auto 1fr; gap:clamp(24px,4vw,54px); align-items:center; margin-top:22px; }
.carestat__num { font-family:var(--font-display); font-weight:900; font-size:clamp(3.8rem,9vw,7rem); line-height:.88;
  color:var(--accent-deep); display:flex; align-items:baseline; gap:10px; font-variant-numeric:tabular-nums; }
.carestat__unit { font-family:var(--font-display); font-weight:700; font-size:clamp(1.2rem,2.2vw,1.6rem); color:var(--ink); }
.carestat__lead { font-family:var(--font-display); font-weight:700; font-size:clamp(1.25rem,2.4vw,1.6rem);
  line-height:1.28; color:var(--ink); margin:0 0 12px; }
.carestat__sub { font-size:var(--fs-small); line-height:1.7; color:var(--slate); margin:0; max-width:58ch; }

/* care-page step ledger: numerals top-align to the heading cap-height */
.caresteps .numrow { align-items:start; cursor:default; }
.caresteps .numrow__n { font-family:var(--font-display); font-weight:800; font-size:1.5rem; line-height:1.15; color:var(--accent-deep); }

/* explore band = a tonal STEP off the CTA (sand ground, white cards, no seam line) */
.explore { background:var(--tint-a); padding:var(--s9) 0; }
.explore__head { margin-bottom:40px; }
.explore__head h2 { font-size:var(--fs-h2); margin-top:14px; }
.explore__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:26px; }
.relcard { background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r-card); padding:30px 28px 26px;
  display:flex; flex-direction:column; box-shadow:var(--sh-1);
  transition:transform var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease), border-color var(--t-base); }
.relcard:hover { transform:translateY(-3px); border-color:var(--accent); box-shadow:var(--sh-2); }
.relcard__ico { width:38px; height:38px; color:var(--accent); margin-bottom:18px; }
.relcard__ico svg { width:100%; height:100%; }
.relcard h3 { font-size:var(--fs-h3); margin-bottom:8px; }
.relcard p { font-size:var(--fs-small); line-height:1.6; color:var(--slate); margin:0 0 18px; }
.relcard .rl { display:inline-flex; align-items:center; gap:8px; margin-top:auto; font-size:0.8rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase; color:var(--accent-sm); }
.relcard .rl .ico { width:15px; height:15px; transition:transform var(--t-base) var(--ease); }
.relcard:hover .rl .ico { transform:translateX(4px); }

/* care FAQ band sits on paper so the sand explore band below reads as a step */
.carefaq { padding:var(--s9) 0; }
.carefaq__grid { display:grid; grid-template-columns:300px minmax(0,1fr); gap:60px; align-items:start; }
.carefaq__head h2 { font-size:var(--fs-h2); }
.carefaq__head p { color:var(--slate); font-size:var(--fs-small); margin-top:16px; max-width:32ch; }

/* =====================================================================
   VIDEO LIGHTBOX (focus-trapped)
   ===================================================================== */
.vlb { position:fixed; inset:0; z-index:400; display:none; align-items:center; justify-content:center; padding:clamp(16px,4vw,56px); }
.vlb.open { display:flex; }
.vlb__scrim { position:absolute; inset:0; background:rgba(24,21,17,.86); }
.vlb__frame { position:relative; width:min(960px,100%); background:#000; border-radius:var(--r-card); overflow:visible; }
.vlb__frame video { width:100%; display:block; aspect-ratio:16/9; background:#000; border-radius:var(--r-card); }
.vlb__close { position:absolute; top:-16px; right:-16px; width:46px; height:46px; border-radius:50%;
  background:var(--paper); color:var(--ink); border:none; display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 30px rgba(0,0,0,.5); }
.vlb__close .ico { width:20px; height:20px; }
.vlb__close:hover { background:var(--accent-fill); color:#fff; }
.vlb__cap { position:absolute; left:0; right:0; bottom:-38px; text-align:center; color:rgba(245,239,227,.7); font-size:0.78rem; letter-spacing:.06em; }

/* =====================================================================
   JOURNAL INDEX: chips + cards + pager
   ===================================================================== */
.chips { display:flex; flex-wrap:wrap; gap:10px; margin:0 0 44px; }
.chip { font-family:var(--font-body); font-size:0.85rem; font-weight:600; color:var(--ink); background:transparent;
  border:1.5px solid var(--line); border-radius:var(--r-pill); padding:10px 20px;
  transition:color var(--t-base) var(--ease), background var(--t-base) var(--ease), border-color var(--t-base) var(--ease); }
.chip:hover { border-color:var(--accent); color:var(--accent-sm); }
.chip.active { background:var(--accent-fill); border-color:var(--accent-fill); color:#fff; }
.blog__empty { color:var(--slate); padding:16px 0 4px; }
.blog-card { display:flex; flex-direction:column; }
.blog-card__ph { position:relative; border-radius:var(--r-card); overflow:hidden; margin-bottom:20px; }
.blog-card__ph img { width:100%; height:250px; object-fit:cover; transition:transform 700ms var(--ease); }
.blog-card:hover .blog-card__ph img { transform:scale(1.04); }
.blog-card__cat { position:absolute; left:14px; top:14px; background:var(--paper); color:var(--accent-sm);
  font-size:0.72rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; padding:6px 13px; border-radius:var(--r-pill); }
.blog-card .date { display:block; color:var(--slate); font-size:var(--fs-small); margin-bottom:10px; }
.blog-card h3 { font-size:var(--fs-h3-big); font-weight:800; line-height:1.18; margin-bottom:12px; }
.blog-card:hover h3 { color:var(--accent-deep); }
.blog-card__ex { font-size:var(--fs-small); line-height:1.65; color:var(--slate); margin:0 0 20px; max-width:46ch; }
.blog-card .read { display:inline-flex; align-items:center; gap:8px; margin-top:auto; font-size:0.8rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase; color:var(--accent-sm); }
.blog-card .read .ico { width:15px; height:15px; transition:transform var(--t-base) var(--ease); }
.blog-card:hover .read .ico { transform:translateX(4px); }
.pager { display:flex; align-items:center; justify-content:center; gap:8px; margin-top:56px; }
.pager:empty { display:none; }
.pager__btn { display:inline-flex; align-items:center; justify-content:center; min-width:44px; height:44px; padding:0 8px;
  font-family:var(--font-body); font-size:0.95rem; font-weight:600; color:var(--ink); background:transparent;
  border:1.5px solid var(--line); border-radius:var(--r-pill);
  transition:color var(--t-base), background var(--t-base), border-color var(--t-base); }
.pager__btn svg { width:17px; height:17px; }
.pager__btn:hover:not(:disabled) { border-color:var(--accent); color:var(--accent-sm); }
.pager__num.active { background:var(--accent-fill); border-color:var(--accent-fill); color:#fff; }
.pager__btn:disabled { opacity:.35; cursor:default; }

/* =====================================================================
   JOURNAL POST: sticky TOC + article + editorial blocks
   ===================================================================== */
.article { padding:var(--s8) 0 var(--s7); }
.article__grid { display:grid; grid-template-columns:250px minmax(0,1fr); gap:70px; align-items:start; }
.article__main { max-width:780px; min-width:0; }
.article__meta { display:flex; align-items:center; gap:16px; font-size:0.78rem; font-weight:600; letter-spacing:.1em;
  text-transform:uppercase; color:var(--slate); margin-bottom:24px; }
.article__meta .date { color:var(--accent-sm); }
.article__meta .sep { width:26px; height:1px; background:var(--line); flex:none; }
.article__lead { font-family:var(--font-display); font-weight:600; font-size:clamp(1.22rem, 1rem + 0.9vw, 1.5rem);
  line-height:1.32; color:var(--ink); margin:0 0 36px; padding-bottom:34px; border-bottom:1px solid var(--line); }
.article__prose h2 { font-size:var(--fs-h3-big); margin:48px 0 18px; scroll-margin-top:104px; }
.article__prose .asection:first-child h2 { margin-top:0; }
.article__prose p { color:var(--slate); margin-bottom:18px; }
.article__prose .asection { scroll-margin-top:104px; }
.article__back { margin-top:44px; padding-top:28px; border-top:1px solid var(--line); }

.toc { position:sticky; top:104px; min-width:0; }
.toc__inner { border-top:2px solid var(--ink); padding-top:22px; }
.toc__lbl { display:block; font-size:0.72rem; font-weight:600; letter-spacing:.2em; text-transform:uppercase;
  color:var(--slate); margin-bottom:18px; }
.toc__nav { display:flex; flex-direction:column; max-height:calc(100vh - 250px); overflow-y:auto; }
.toc__link { display:block; padding:9px 0 9px 16px; font-size:0.88rem; line-height:1.4; color:var(--slate);
  border-left:2px solid var(--line); transition:color var(--t-base) var(--ease), border-color var(--t-base) var(--ease); }
.toc__link:hover { color:var(--ink); }
.toc__link.active { color:var(--accent-sm); border-left-color:var(--accent); }
.toc__book { margin-top:26px; padding-top:24px; border-top:1px solid var(--line); }
.toc__book__note { display:block; font-size:0.7rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent-sm); margin-bottom:12px; }
.toc__cta { display:inline-flex; align-items:center; justify-content:center; gap:9px; width:100%; height:50px;
  background:var(--accent-fill); color:#fff; border-radius:var(--r-btn); font-size:0.88rem; font-weight:600;
  transition:background var(--t-base) var(--ease); }
.toc__cta:hover { background:var(--accent-fill-h); }
.toc__cta .ico { width:16px; height:16px; transition:transform var(--t-base) var(--ease); }
.toc__cta:hover .ico { transform:translateX(3px); }

/* editorial blocks: punctuation between prose, never wallpaper */
.epull { margin:44px 0; padding:2px 0 2px 28px; border-left:4px solid var(--accent); }
.epull blockquote { margin:0; font-family:var(--font-display); font-weight:800; font-size:clamp(1.4rem, 1rem + 1.5vw, 2rem);
  line-height:1.28; color:var(--ink); }
.epull figcaption { margin-top:16px; font-size:0.76rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--accent-sm); }
.efig { margin:46px 0; }
.efig__ph { overflow:hidden; border-radius:var(--r-card); background:var(--tint-a); }
.efig__ph img { display:block; width:100%; height:auto; }
.efig figcaption { margin-top:14px; font-size:var(--fs-small); line-height:1.55; color:var(--slate); }
.efig--wide { width:calc(100% + 70px); }
.ecall { margin:44px 0; background:var(--tint-a); border-radius:var(--r-card); border-left:4px solid var(--accent); padding:30px 32px; }
.ecall__lbl { display:flex; align-items:center; gap:11px; font-size:0.76rem; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent-sm); margin-bottom:18px; }
.ecall__lbl .ico { width:19px; height:19px; }
.ecall ul { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:13px; }
.ecall li { display:flex; gap:12px; align-items:flex-start; font-size:var(--fs-small); line-height:1.6; color:var(--slate); }
.ecall li .ico { width:20px; height:20px; flex:none; color:var(--accent); margin-top:2px; }
.ecall p { margin:0; font-size:var(--fs-small); line-height:1.7; color:var(--slate); }
.estat { margin:44px 0; padding:30px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; gap:8px; }
.estat b { font-family:var(--font-display); font-weight:900; font-size:clamp(3.2rem,7vw,5rem); line-height:.9; color:var(--accent-deep); }
.estat__l { font-family:var(--font-display); font-weight:700; font-size:1.15rem; line-height:1.3; color:var(--ink); }
.estat__s { font-size:var(--fs-small); line-height:1.6; color:var(--slate); max-width:54ch; }
.esteps { margin:44px 0; }
.esteps__lbl { display:block; font-size:0.76rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent-sm); margin-bottom:24px; }
.esteps ol { list-style:none; margin:0; padding:0; counter-reset:est; }
.esteps li { position:relative; padding:0 0 24px 62px; counter-increment:est; }
.esteps li:last-child { padding-bottom:0; }
.esteps li::before { content:counter(est,decimal-leading-zero); position:absolute; left:0; top:-4px;
  font-family:var(--font-display); font-weight:700; font-size:1rem; color:var(--accent-deep); width:44px; height:44px;
  border:1.5px solid var(--accent); border-radius:50%; display:flex; align-items:center; justify-content:center; }
.esteps__t { display:block; font-family:var(--font-display); font-weight:700; font-size:1.15rem; line-height:1.3; color:var(--ink); margin-bottom:6px; }
.esteps__d { display:block; font-size:var(--fs-small); line-height:1.7; color:var(--slate); }
.evideo { margin:46px 0; }
.evideo__head { display:flex; flex-direction:column; gap:8px; margin-bottom:18px; }
.evideo__eyebrow { font-size:0.76rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-sm); }
.evideo__title { font-family:var(--font-display); font-weight:800; font-size:clamp(1.25rem,2.2vw,1.6rem); line-height:1.2; color:var(--ink); }
.evideo__poster { display:block; position:relative; width:100%; aspect-ratio:16/9; overflow:hidden; padding:0;
  border:none; border-radius:var(--r-card); background:var(--tint-a); }
.evideo__poster img { width:100%; height:100%; object-fit:cover; transition:transform 700ms var(--ease); }
.evideo__poster:hover img { transform:scale(1.04); }
.evideo__badge { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; }
.evideo__badge > span { width:78px; height:78px; border-radius:50%; background:var(--accent-fill); color:#fff;
  display:flex; align-items:center; justify-content:center; box-shadow:0 14px 34px rgba(35,32,27,.35);
  transition:transform var(--t-base) var(--ease); }
.evideo__badge .ico { width:26px; height:26px; }
.evideo__poster:hover .evideo__badge > span { transform:scale(1.08); }
.evideo__tag { position:absolute; left:16px; bottom:16px; background:var(--ink); color:#fff; font-size:0.68rem;
  font-weight:600; letter-spacing:.16em; text-transform:uppercase; padding:7px 14px; border-radius:var(--r-pill); }
.evideo figcaption { margin-top:14px; font-size:var(--fs-small); line-height:1.55; color:var(--slate); }
.eacc { margin:46px 0; background:var(--tint-a); border-radius:var(--r-card); border-left:4px solid var(--accent); padding:4px 30px 6px; }
.eacc__lbl { display:flex; align-items:center; gap:11px; font-size:0.76rem; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent-sm); padding:24px 0 4px; }
.eacc__lbl .ico { width:19px; height:19px; }
.eacc .acc { border-top:none; }
.eacc .acc-q { font-size:1.05rem; padding:20px 0; }
.eacc .acc-item { border-bottom:1px solid var(--line); }
.eacc .acc-item:last-child { border-bottom:none; }
.eacc .acc-a__inner { padding-bottom:20px; font-size:var(--fs-small); }
.etable--art { margin:46px 0; }
.equiz { margin:48px 0; position:relative; }
.equiz__intro { margin:0 0 20px; color:var(--slate); }
.equiz__card { background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r-card); box-shadow:var(--sh-1);
  padding:clamp(26px,4vw,44px); text-align:center; }
.equiz__bar { margin-bottom:24px; }
.equiz__prog { font-size:0.72rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--slate); }
.equiz__step { border:0; margin:0; padding:0; min-width:0; }
.equiz__q { font-family:var(--font-display); font-weight:800; font-size:clamp(1.4rem,2.6vw,1.85rem); line-height:1.2;
  color:var(--ink); margin:0 auto 26px; max-width:22ch; padding:0; }
.equiz__q:focus { outline:none; }
.equiz__opts { display:flex; flex-direction:column; gap:12px; max-width:460px; margin:0 auto; }
.equiz__opt { position:relative; display:flex; align-items:center; gap:14px; text-align:left; background:var(--paper);
  border:1.5px solid var(--line); border-radius:var(--r-card); padding:15px 18px; cursor:pointer;
  transition:border-color .25s var(--ease), background .25s var(--ease); }
.equiz__opt input { position:absolute; opacity:0; width:1px; height:1px; }
.equiz__dot { flex:none; width:22px; height:22px; border-radius:50%; border:1.5px solid var(--line); position:relative; transition:border-color .25s var(--ease); }
.equiz__dot::after { content:""; position:absolute; inset:4px; border-radius:50%; background:var(--accent); transform:scale(0); transition:transform .2s var(--ease); }
.equiz__optlbl { font-size:0.98rem; color:var(--ink); line-height:1.4; }
.equiz__opt:hover { background:var(--accent-light); }
.equiz__opt.is-picked, .equiz__opt:has(input:checked) { border-color:var(--accent); background:var(--accent-light); }
.equiz__opt.is-picked .equiz__dot, .equiz__opt:has(input:checked) .equiz__dot { border-color:var(--accent); }
.equiz__opt.is-picked .equiz__dot::after, .equiz__opt:has(input:checked) .equiz__dot::after { transform:scale(1); }
.equiz__opt:has(input:focus-visible) { outline:2px solid var(--accent); outline-offset:2px; }
.equiz__actions { display:flex; align-items:center; justify-content:center; gap:16px; margin-top:30px; }
.equiz__next { display:inline-flex; align-items:center; gap:10px; font-family:var(--font-body); font-size:0.95rem;
  font-weight:600; color:#fff; background:var(--accent-fill); border:none; border-radius:var(--r-btn); padding:15px 28px;
  transition:background .25s var(--ease), opacity .25s var(--ease); }
.equiz__next .ico { width:18px; height:18px; }
.equiz__next:hover { background:var(--accent-fill-h); }
.equiz__next:disabled { opacity:.42; cursor:not-allowed; }
.equiz__back { display:inline-flex; align-items:center; gap:6px; font-family:var(--font-body); font-size:0.9rem;
  font-weight:600; color:var(--ink); background:none; border:none; padding:8px; }
.equiz__back .ico { width:16px; height:16px; }
.equiz__result__lbl { display:inline-flex; align-items:center; gap:9px; font-size:0.74rem; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--accent-sm); margin-bottom:16px; }
.equiz__result__lbl .ico { width:18px; height:18px; }
.equiz__result__h { font-family:var(--font-display); font-weight:800; font-size:clamp(1.5rem,2.8vw,2rem); line-height:1.16;
  color:var(--ink); margin:0 auto 14px; max-width:22ch; }
.equiz__result__h:focus { outline:none; }
.equiz__result__b { color:var(--slate); max-width:48ch; margin:0 auto 26px; font-size:var(--fs-small); }
.equiz__cta { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:14px; }
.equiz__fallback { margin-top:28px; }
.equiz.is-live .equiz__fallback { display:none; }
.equiz__note { margin:16px 0 0; font-size:0.82rem; color:var(--slate); text-align:center; }
.equiz__live { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

.article__faq { margin-top:54px; padding-top:18px; border-top:2px solid var(--ink); scroll-margin-top:104px; }
.article__faq > h2 { font-size:var(--fs-h3-big); margin:0 0 6px; scroll-margin-top:104px; }
.article__faq .acc { margin-top:8px; }

/* prev / next post */
.postnav { padding:0 0 var(--s8); }
.postnav__grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; border-top:1px solid var(--line); padding-top:36px; }
.postnav__link { display:flex; flex-direction:column; gap:10px; padding:24px 28px; border:1px solid var(--line);
  border-radius:var(--r-card); background:var(--paper-2);
  transition:transform var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease), border-color var(--t-base); }
.postnav__link:hover { transform:translateY(-3px); border-color:var(--accent); box-shadow:var(--sh-2); }
.postnav__link--next { text-align:right; align-items:flex-end; }
.postnav__dir { display:inline-flex; align-items:center; gap:7px; font-size:0.72rem; font-weight:600; letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent-sm); }
.postnav__dir .ico { width:16px; height:16px; }
.postnav__t { font-family:var(--font-display); font-weight:800; font-size:1.15rem; line-height:1.24; color:var(--ink); }
.postnav__spacer { display:block; }

/* =====================================================================
   REVEALS + REDUCED MOTION
   ===================================================================== */
.reveal { opacity:0; transform:translateY(24px); transition:opacity 600ms var(--ease), transform 600ms var(--ease);
  transition-delay:calc(var(--i,0) * 80ms); }
.reveal.in { opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation-duration:.001ms !important; transition-duration:.001ms !important; }
  .reveal { opacity:1; transform:none; }
  .testi__slides { transition:none; }
  .blog-card__ph img, .evideo__poster img { transform:none !important; }
  .relcard:hover, .postnav__link:hover { transform:none; }
  .js .acc-a { transition:none; }
}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width:1100px) {
  .foot-top { grid-template-columns:1fr 1fr 1fr; }
  .valuegrid { grid-template-columns:1fr 1fr; }
  /* journal: the TOC becomes a horizontal strip at the top and stops sticking.
     minmax(0,1fr) on the article column, or the nowrap strip inflates the track
     to its max-content width and silently clips every prose line. */
  .article { padding:var(--s7) 0 var(--s6); }
  .article__grid { grid-template-columns:minmax(0,1fr); gap:0; }
  .article__main { max-width:none; }
  .toc { position:static; top:auto; margin-bottom:34px; }
  .toc__nav { flex-direction:row; flex-wrap:nowrap; max-height:none; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; padding-bottom:2px; }
  .toc__link { flex:none; border-left:none; border-bottom:2px solid var(--line); white-space:nowrap; padding:6px 0 9px; margin-right:22px; }
  .toc__link.active { border-left-color:transparent; border-bottom-color:var(--accent); }
  .toc__book { display:none; }
  /* single column: nothing left to bleed into */
  .efig--wide { width:100%; }
  .explore__grid { grid-template-columns:1fr 1fr; }
  .carefaq__grid { grid-template-columns:1fr; gap:30px; }
  .carefaq__head p { max-width:56ch; }
}
@media (max-width:980px) {
  :root { --edge:clamp(20px,6vw,44px); }
  .hero__rule, .hero__sub { margin-left:0; }
  .nav, .header-phone { display:none; }
  .nav-toggle { display:flex; }
  .header-cta { display:inline-flex; padding:11px 18px; }
  .processband .wrap { grid-template-columns:1fr; gap:50px; }
  .feat-intro .btn { margin-top:24px; }
  .srow { grid-template-columns:1fr; }
  .srow__body { padding:60px var(--edge); }
  .srow__photo { height:320px; min-height:320px; }
  .stats__panel { grid-template-columns:1fr; gap:40px; }
  .spec__grid { grid-template-columns:1fr; }
  .spec__photo { min-height:340px; }
  .spec__body { padding:60px var(--edge); }
  .testi__slide { grid-template-columns:1fr; gap:30px; }
  .testi__photo { width:100%; height:340px; }
  .testi__arrow--prev { left:0; } .testi__arrow--next { right:0; }
  .blog__grid { grid-template-columns:1fr; gap:36px; }
  .teamgrid { grid-template-columns:1fr 1fr; }
  .feature { grid-template-columns:1fr; gap:36px; }
  .feature--rev .feature__media { order:0; }
  .contact-grid { grid-template-columns:1fr; gap:40px; }
  .pagehead__top { grid-template-columns:1fr; gap:16px; }
  .pagehead__split { grid-template-columns:1fr; gap:30px; }
  .prefoot .wrap { grid-template-columns:1fr; }
  .foot-top { grid-template-columns:1fr 1fr; }
  .contact__card { position:static; transform:none; width:100%; }
  .contact__map > svg { height:320px; }
  .plans { grid-template-columns:1fr; }
  .reviewgrid { grid-template-columns:1fr 1fr; }
}
@media (max-width:620px) {
  :root { --s10:72px; }
  .site-header .wrap { gap:10px; }
  .brand { font-size:1.05rem; gap:7px; }
  .brand__mark { width:25px; height:25px; }
  .header-right { gap:9px; }
  .header-cta { padding:9px 14px; font-size:0.83rem; }
  .header-cta .ico { display:none; }
  .proc-grid { grid-template-columns:1fr 1fr; gap:34px 26px; }
  .proc-photo { grid-column:1 / 3; grid-row:auto; }
  .hero__panel { position:static; width:100%; }
  .hero__inner { padding-block:120px 40px; justify-content:flex-end; }
  .hero { min-height:auto; }
  .hero__photo::after { content:""; position:absolute; inset:0;
    background:linear-gradient(180deg, rgba(43,38,31,.25) 0%, rgba(43,38,31,.55) 60%, rgba(43,38,31,.82) 100%); }
  .hero__inner, .hero__panel p, .hero__copy { position:relative; z-index:2; }
  .blog__head { flex-direction:column; align-items:flex-start; }
  .teamgrid { grid-template-columns:1fr; }
  .foot-top { grid-template-columns:1fr; }
  .numrow { grid-template-columns:40px 1fr; }
  .numrow__arrow { display:none; }
  .milestone { grid-template-columns:1fr; gap:6px; }
  .prefoot__hours, .prefoot__cta { padding:26px var(--gutter); }
  .reviewgrid { grid-template-columns:1fr; }
  .valuegrid { grid-template-columns:1fr; }
  .field-row { grid-template-columns:1fr; }
  .explore__grid { grid-template-columns:1fr; }
  .postnav__grid { grid-template-columns:1fr; gap:14px; }
  .postnav__link--next { text-align:left; align-items:flex-start; }
  .baslider__caps { grid-template-columns:1fr; gap:6px; }
  .baslider__caps span:last-child { text-align:left; }
  .carestat__row { grid-template-columns:1fr; gap:16px; margin-top:18px; }
  .equiz__actions { flex-wrap:wrap; gap:12px; }
  .esteps li { padding-left:56px; }
}

/* mobile tables: no horizontal scroll, no off-screen right column.
   Drop the min-width, hide the header row, block-display the rows, and prefix
   every cell with its column label via data-label. */
@media (max-width:640px) {
  .etable--def tr, .etable--def th[scope=row], .etable--def td { display:block; }
  .etable--def th[scope=row] { width:auto; padding:18px 0 4px; }
  .etable--def td { padding:0 0 18px; }
  .etable--grid table { min-width:0; }
  .etable--grid thead { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .etable--grid tbody tr { display:block; padding:20px 0; }
  .etable--grid th[scope=row] { display:block; width:auto; white-space:normal; font-size:1.05rem; padding:0 0 12px; }
  .etable--grid td { display:block; white-space:normal; padding:0 0 12px; }
  .etable--grid td:last-child { padding-bottom:0; }
  .etable--grid td::before { content:attr(data-label); display:block; font-size:0.68rem; font-weight:700;
    letter-spacing:.1em; text-transform:uppercase; color:var(--accent-sm); margin-bottom:4px; }
}
