/* ============================================================
   Narcissistic Abuse Recovery — Landing Page
   Palette + type sampled from codependencylifecoach.com
   Concept: blur → focus. Distortion resolving into clarity.
   ============================================================ */

:root{
  --navy:        #162D4A;
  --navy-2:      #273252;
  --navy-deep:   #001E42;
  --rose:        #D54B96;   /* brand pink — accents and dark-background text */
  --rose-dark:   #B83A80;   /* text/fills on light backgrounds: clears 4.5:1 */
  --rose-deep:   #9C2F6B;   /* pressed / hover on filled buttons */
  --blush:       #F1BABF;
  --blush-bg:    #FCE7EC;
  --mist:        #F4F7FA;
  --mint:        #F2F8F5;
  --cream:       #FFF2E2;

  --ink:         #2A3140;
  --body:        #63697A;
  --body-soft:   #6C7087;
  --line:        #E7EBF1;
  --white:       #FFFFFF;

  --serif: "EB Garamond", Georgia, "Times New Roman", serif;
  --sans:  "Open Sans", Arial, Helvetica, sans-serif;

  --wrap: 1220px;
  --gutter: clamp(1.25rem, 4vw, 2.5rem);
  --r:    16px;
  --r-lg: 30px;

  --sh-sm: 0 2px 12px rgba(22,45,74,.06);
  --sh:    0 22px 50px -26px rgba(22,45,74,.4);
  --sh-lg: 0 50px 90px -45px rgba(22,45,74,.55);

  --ease:  cubic-bezier(.22,.61,.36,1);
  --ease-out: cubic-bezier(.16,1,.3,1);
}

*,*::before,*::after{ box-sizing:border-box; }

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

body{
  margin:0;
  font-family:var(--sans);
  font-size:17px;
  line-height:1.75;
  color:var(--body);
  background:var(--white);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; height:auto; display:block; }
svg{ fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }

h1,h2,h3{ font-family:var(--serif); color:var(--navy-2); margin:0 0 .5em; font-weight:500; }
p{ margin:0 0 1.15em; }
a{ color:var(--rose); text-decoration:none; }

.display{ line-height:1.06; letter-spacing:-.022em; }
.display em{ font-style:italic; color:var(--rose); }
h1.display{ font-size:clamp(2.55rem, 5.6vw, 4.6rem); }
h2.display{ font-size:clamp(2.05rem, 4.1vw, 3.35rem); }
h3{ font-size:1.3rem; line-height:1.25; }

.wrap{ width:min(var(--wrap), 100% - (var(--gutter) * 2)); margin-inline:auto; }

.skip-link{ position:absolute; left:-9999px; top:0; z-index:300; background:var(--navy); color:#fff; padding:.75rem 1.25rem; }
.skip-link:focus{ left:0; }
:focus-visible{ outline:3px solid var(--rose); outline-offset:3px; border-radius:4px; }

/* ─────────── page texture + chrome ─────────── */

.grain{
  position:fixed; inset:0; z-index:250; pointer-events:none; opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.progress{ position:fixed; top:0; left:0; right:0; height:2px; z-index:210; background:transparent; }
.progress span{
  display:block; height:100%; width:0%;
  background:linear-gradient(90deg, var(--blush), var(--rose));
}

/* ─────────── shared ─────────── */

/* rose-dark, not rose: at 11px the lighter tone falls under 4.5:1 on the
   light sections. Dark sections override this to blush below. */
.eyebrow{
  display:flex; align-items:center; gap:.85rem;
  font-size:.71rem; font-weight:700; letter-spacing:.24em; text-transform:uppercase;
  color:var(--rose-dark); margin:0 0 1.15rem;
}
.eyebrow-rule{ width:34px; height:1px; background:currentColor; flex:none; opacity:.65; }

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  font-size:.845rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  padding:1.05rem 2rem; border-radius:999px; border:1.5px solid transparent;
  cursor:pointer; text-align:center; position:relative; overflow:hidden;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease),
             background-color .3s, color .3s, border-color .3s;
}
.btn-lg{ padding:1.2rem 2.4rem; }
.btn-sm{ padding:.62rem 1.3rem; font-size:.72rem; letter-spacing:.1em; white-space:nowrap; }

/* filled with rose-dark, not rose: white on the lighter pink is only 3.98:1 */
.btn-rose{ background:var(--rose-dark); color:#fff; box-shadow:0 16px 34px -16px rgba(184,58,128,.8); }
.btn-rose::after{
  content:""; position:absolute; inset:0; background:var(--rose-deep);
  transform:translateY(101%); transition:transform .4s var(--ease-out); z-index:-1;
}
.btn-rose:hover{ transform:translateY(-3px); box-shadow:0 24px 42px -16px rgba(184,58,128,.9); }
.btn-rose:hover::after{ transform:translateY(0); }

.btn-ghost{ background:transparent; color:var(--navy-2); border-color:var(--blush); }
.btn-ghost:hover{ background:var(--blush-bg); border-color:var(--rose); transform:translateY(-3px); }

.btn-quiet{
  background:transparent; color:var(--navy-2); border-color:transparent;
  padding-inline:1.1rem;
}
.btn-quiet .dot{ width:7px; height:7px; border-radius:50%; background:var(--rose); flex:none; }
.btn-quiet:hover{ color:var(--rose); }

.btn-outline-light{ background:transparent; color:#fff; border-color:rgba(241,186,191,.5); }
.btn-outline-light:hover{ background:rgba(241,186,191,.14); border-color:var(--blush); transform:translateY(-3px); }

.section{ position:relative; padding:clamp(5rem, 10vw, 9rem) 0; }

.section-head{ max-width:720px; margin:0 auto clamp(3rem,6vw,4.5rem); text-align:center; }
.section-head .eyebrow{ justify-content:center; }
.section-head.light h2{ color:#fff; }
.section-head.light .eyebrow{ color:var(--blush); }

/* editorial split heading: title left, note right */
.head-split{
  display:grid; grid-template-columns:1.35fr .65fr; gap:clamp(1.5rem,4vw,3.5rem);
  align-items:end; margin-bottom:clamp(3rem,6vw,4.5rem);
}
.head-split h2{ margin:0; }
.head-note{
  margin:0; font-size:1.02rem; color:var(--body-soft);
  padding-left:1.5rem; border-left:2px solid var(--blush);
}

/* soft colour mesh backdrops */
.mesh{ position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.mesh i{ position:absolute; border-radius:50%; filter:blur(60px); display:block; }
.mesh i:nth-child(1){ width:38rem; height:38rem; right:-8rem; top:-12rem; background:rgba(241,186,191,.55); }
.mesh i:nth-child(2){ width:30rem; height:30rem; left:-10rem; bottom:-8rem; background:rgba(244,247,250,.9); }
.mesh i:nth-child(3){ width:22rem; height:22rem; right:22%; bottom:-6rem; background:rgba(255,242,226,.7); }
.mesh.dark i:nth-child(1){ background:rgba(213,75,150,.3); }
.mesh.dark i:nth-child(2){ background:rgba(241,186,191,.14); }
.mesh.dark i:nth-child(3){ background:rgba(213,75,150,.16); }

/* ─────────── header ─────────── */

.site-header{
  position:sticky; top:0; z-index:200;
  background:rgba(255,255,255,.86);
  backdrop-filter:saturate(160%) blur(16px);
  border-bottom:1px solid transparent;
  transition:border-color .35s, box-shadow .35s;
}
.site-header.scrolled{ border-bottom-color:var(--line); box-shadow:0 12px 34px -26px rgba(22,45,74,.6); }

.header-inner{ display:flex; align-items:center; gap:1.5rem; min-height:82px; }

.brand{ display:flex; align-items:center; gap:.75rem; color:var(--navy-2); }
.brand-mark{
  width:44px; height:44px; flex:none;
  object-fit:contain;
  transition:transform .4s var(--ease);
}
.brand:hover .brand-mark{ transform:rotate(-8deg); }
.brand-text{ display:flex; flex-direction:column; line-height:1.28; }
.brand-text strong{ font-family:var(--serif); font-size:1.1rem; font-weight:600; }
.brand-text em{ font-style:normal; font-size:.66rem; letter-spacing:.16em; text-transform:uppercase; color:var(--body-soft); }

.site-nav{ display:flex; gap:1.9rem; margin-left:auto; }
.site-nav a{
  position:relative;
  font-size:.875rem; font-weight:600; color:var(--navy-2);
}
.site-nav a::after{
  content:""; position:absolute; left:0; bottom:-6px; height:1.5px; width:100%;
  background:var(--rose); transform:scaleX(0); transform-origin:right;
  transition:transform .35s var(--ease);
}
.site-nav a:hover::after{ transform:scaleX(1); transform-origin:left; }
.site-nav a:hover{ color:var(--rose); }

.header-cta{ display:flex; align-items:center; gap:1.15rem; }
.phone{ font-size:.85rem; font-weight:700; color:var(--navy-2); white-space:nowrap; }
.phone:hover{ color:var(--rose); }

/* ─────────── hero ─────────── */

.hero{ position:relative; overflow:hidden; padding:clamp(3.5rem,7vw,6rem) 0 clamp(4.5rem,9vw,7.5rem); }

.hero-grid{
  position:relative; z-index:1;
  display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(2.5rem,5vw,5rem);
  align-items:center;
}

/* headline words rise in sequence */
.display .word{ display:inline-block; }
.js .display .word{
  opacity:0; transform:translateY(.5em);
  animation:rise .95s var(--ease-out) forwards;
}
.js .w1{ animation-delay:.05s } .js .w2{ animation-delay:.14s }
.js .w3{ animation-delay:.23s } .js .w4{ animation-delay:.32s }
.js .w5{ animation-delay:.41s } .js .w6{ animation-delay:.5s }
@keyframes rise{ to{ opacity:1; transform:none; } }

/* the core metaphor: a distorted word resolving into focus */
.blurred{ position:relative; color:var(--navy-2); }
.js .blurred{ animation:rise .95s var(--ease-out) forwards, focusIn 1.7s var(--ease-out) .35s both; }
@keyframes focusIn{
  from{ filter:blur(13px); letter-spacing:.09em; opacity:.45; }
  to  { filter:blur(0);    letter-spacing:-.022em; opacity:1; }
}
.blurred::after{
  content:""; position:absolute; left:0; right:0; bottom:.09em; height:.055em;
  background:var(--rose); transform:scaleX(0); transform-origin:left;
}
.js .blurred::after{ animation:draw .8s var(--ease-out) 1.5s forwards; }
@keyframes draw{ to{ transform:scaleX(1); } }

.js .line-in{ opacity:0; transform:translateY(16px); animation:rise .9s var(--ease-out) forwards; }
.js .line-in{ animation-delay:.2s; }
.js .d5{ animation-delay:.62s } .js .d6{ animation-delay:.72s } .js .d7{ animation-delay:.82s }

.lede{ font-size:1.16rem; color:var(--body-soft); max-width:35em; margin:1.75rem 0 2.25rem; }

.hero-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:1rem; }
.hero-actions.center{ justify-content:center; }

/* three equal columns split by hairlines — never an orphaned third item */
.hero-stats{
  display:grid; grid-template-columns:repeat(3,1fr);
  margin:3rem 0 0; padding-top:2rem;
  border-top:1px solid var(--line);
}
.hero-stats div{ padding:0 1.25rem; border-left:1px solid var(--line); }
.hero-stats div:first-child{ padding-left:0; border-left:0; }
.hero-stats dt{
  font-family:var(--serif); font-size:2.35rem; line-height:1; color:var(--navy-2); font-weight:500;
}
.hero-stats dt small{ font-size:.85rem; color:var(--rose-dark); margin-left:.15rem; }
.hero-stats dd{
  margin:.55rem 0 0; font-size:.8rem; line-height:1.5;
  color:var(--body-soft); letter-spacing:.01em;
}

/* hero media */
.hero-media{ position:relative; }

.frame-offset{
  position:absolute; inset:1.75rem -1.75rem -1.75rem 1.75rem;
  border:1px solid var(--blush); border-radius:var(--r-lg);
}

.hero-photo{
  position:relative; margin:0; overflow:hidden;
  border-radius:clamp(9rem,18vw,15rem) clamp(9rem,18vw,15rem) var(--r-lg) var(--r-lg);
  box-shadow:var(--sh-lg); background:var(--blush-bg);
}
.hero-photo img{
  width:100%; aspect-ratio:9/11; object-fit:cover; object-position:center 16%;
  transform:scale(1.02); transition:transform 1.4s var(--ease);
}
.hero-photo:hover img{ transform:scale(1.06); }
.hero-photo::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 58%, rgba(22,45,74,.28) 100%);
}

/* rotating seal */
.seal{
  position:absolute; left:-2.6rem; bottom:3.5rem;
  width:118px; height:118px; display:grid; place-items:center;
  background:#fff; border-radius:50%; box-shadow:var(--sh);
}
/* child combinator only: a descendant selector here also caught the play
   icon inside .seal-core and hid it. */
.seal > svg{
  position:absolute; inset:0; width:100%; height:100%;
  stroke:none;
}
.seal text{
  font-family:var(--sans); font-size:8.2px; font-weight:700;
  fill:var(--navy-2); stroke:none;
}
.seal-core{
  width:46px; height:46px; border-radius:50%; background:var(--rose); color:#fff;
  display:grid; place-items:center;
}
.seal-core svg{ width:18px; height:18px; stroke-width:2; }

.photo-note{
  position:absolute; right:-1rem; bottom:-1.25rem;
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  padding:.85rem 1.15rem; box-shadow:var(--sh-sm);
  font-size:.72rem; letter-spacing:.05em; color:var(--body-soft); line-height:1.5;
}
.photo-note strong{
  display:block; font-family:var(--serif); font-size:1rem; letter-spacing:0;
  color:var(--navy-2); font-weight:600;
}

/* ─────────── marquee ─────────── */

.marquee{ background:var(--navy); padding:1.05rem 0; overflow:hidden; white-space:nowrap; }
.marquee-track{
  display:inline-flex; align-items:center; gap:1.9rem;
  animation:slide 52s linear infinite;
  font-family:var(--serif); font-size:1.06rem; font-style:italic;
  letter-spacing:.03em; color:rgba(241,186,191,.92);
}
.marquee-track i{ width:5px; height:5px; border-radius:50%; background:rgba(241,186,191,.4); flex:none; }
@keyframes slide{ to{ transform:translateX(-50%); } }

/* ─────────── signs ─────────── */

.signs{ background:#fff; }

.sign-list{
  list-style:none; margin:0 0 clamp(3rem,6vw,4.5rem); padding:0;
  display:grid; grid-template-columns:repeat(2,1fr); gap:0;
  border-top:1px solid var(--line);
}
/* number column is fixed so every row's text starts on the same axis;
   padding is symmetric so nothing crowds the dividers */
.sign{
  position:relative;
  display:grid; grid-template-columns:2.6rem 1fr; align-items:start;
  padding:1.9rem 2rem;
  border-bottom:1px solid var(--line);
  transition:background-color .4s var(--ease);
}
.sign:nth-child(odd){ border-right:1px solid var(--line); }

/* rail that draws down the cell edge on hover */
.sign::before{
  content:""; position:absolute; left:0; top:-1px; bottom:-1px; width:2px;
  background:var(--rose); transform:scaleY(0); transform-origin:bottom;
  transition:transform .45s var(--ease);
}
.sign:hover{ background:var(--mist); }
.sign:hover::before{ transform:scaleY(1); transform-origin:top; }

.sign-i{
  position:relative;
  font-family:var(--serif); font-size:1.05rem; line-height:1.58;
  letter-spacing:.06em; color:var(--rose-dark);
  transition:color .35s;
}
/* short tick tying the number to the row it labels */
.sign-i::after{
  content:""; position:absolute; left:0; top:2.1em;
  width:1.15rem; height:1px; background:var(--line);
  transition:background-color .35s, width .35s var(--ease);
}
.sign:hover .sign-i{ color:var(--navy-2); }
.sign:hover .sign-i::after{ background:var(--rose); width:1.6rem; }

.sign p{ margin:0; font-size:1.04rem; line-height:1.6; color:var(--navy-2); }

.pull{
  max-width:26ch; margin:0 auto; text-align:center;
  font-family:var(--serif); font-size:clamp(1.6rem,3vw,2.35rem);
  line-height:1.28; letter-spacing:-.015em; color:var(--navy-2);
}
.pull em{ font-style:italic; color:var(--rose); }

/* ─────────── why (sticky) ─────────── */

.why{
  background:
    radial-gradient(46rem 34rem at 8% 8%, rgba(213,75,150,.2) 0%, transparent 62%),
    var(--navy);
  color:rgba(255,255,255,.72);
}
.why-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(2.5rem,6vw,5.5rem); align-items:start; }

.why-sticky{ position:sticky; top:130px; }
.why-sticky h2{ color:#fff; }
.why-sticky .eyebrow{ color:var(--blush); }
.why-note{ font-size:1.03rem; max-width:26em; margin:1.35rem 0 2rem; }

.why-stack{ display:grid; gap:1.15rem; }

.slab{
  position:relative; padding:2.15rem 2rem 1.85rem;
  border-radius:var(--r-lg);
  background:rgba(255,255,255,.055);
  border:1px solid rgba(241,186,191,.18);
  backdrop-filter:blur(8px);
  transition:transform .45s var(--ease), background-color .45s, border-color .45s;
}
.slab:hover{ transform:translateX(8px); background:rgba(255,255,255,.09); border-color:rgba(241,186,191,.42); }
.slab h3{
  color:#fff; margin-bottom:.7rem; padding-bottom:.7rem;
  border-bottom:1px solid rgba(241,186,191,.2);
}
.slab p{ margin:0; font-size:.99rem; color:rgba(255,255,255,.68); }

/* ─────────── the work (ledger) ─────────── */

.work{ background:var(--mist); }

.ledger{ border-top:1px solid var(--line); }
.entry{
  position:relative;
  display:grid; grid-template-columns:.9fr 1.1fr; gap:1.5rem 2.5rem;
  align-items:baseline; padding:2.15rem .5rem;
  border-bottom:1px solid var(--line);
  transition:background-color .45s var(--ease), padding-left .45s var(--ease);
}
.entry::before{
  content:""; position:absolute; left:0; top:0; bottom:-1px; width:2px;
  background:var(--rose); transform:scaleY(0); transform-origin:bottom;
  transition:transform .45s var(--ease);
}
.entry:hover{ background:#fff; padding-left:1.5rem; }
.entry:hover::before{ transform:scaleY(1); transform-origin:top; }
.entry h3{ margin:0; font-size:1.42rem; transition:color .45s; }
.entry:hover h3{ color:var(--rose); }
.entry p{ margin:0; font-size:.99rem; }

/* ─────────── watch ─────────── */

.watch{ background:#fff; }

/* four across; the clips are vertical, so the frames are too */
.video-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.25rem; }

.vid{ margin:0; }

.vid-frame{
  position:relative; aspect-ratio:9/16; overflow:hidden;
  border-radius:var(--r); background:var(--navy);
  box-shadow:var(--sh);
}
.vid-frame iframe{
  position:absolute; inset:0; width:100%; height:100%; border:0;
  /* scale past the player chrome so the frame reads as clean footage */
  transform:scale(1.02);
}

/* Placeholder until the player is injected. Scoped to :empty — as a plain
   ::after it is the holder's last child and paints over the iframe. */
.vid-holder{ position:absolute; inset:0; }
.vid-holder:empty{ background:var(--navy); }
.vid-holder:empty::after{
  content:""; position:absolute; inset:0;
  background:radial-gradient(20rem 14rem at 70% 0%, rgba(213,75,150,.28) 0%, transparent 65%);
}

/* centred play glyph, matching the seal */
.vid-play{
  position:absolute; left:50%; top:50%; z-index:2;
  transform:translate(-50%,-50%);
  width:54px; height:54px; border-radius:50%;
  display:grid; place-items:center;
  background:rgba(255,255,255,.92); color:var(--rose-dark);
  box-shadow:0 10px 26px -12px rgba(22,45,74,.8);
  pointer-events:none;
  transition:transform .35s var(--ease), background-color .35s;
}
.vid-play svg{ width:22px; height:22px; margin-left:2px; }
.vid:hover .vid-play{ transform:translate(-50%,-50%) scale(1.08); background:#fff; }

.vid-sound{
  position:absolute; right:.6rem; bottom:.6rem; z-index:3;
  display:inline-flex; align-items:center; gap:.4rem;
  padding:.5rem .7rem; border-radius:999px; cursor:pointer;
  background:rgba(22,45,74,.78); color:#fff;
  border:1px solid rgba(241,186,191,.4);
  backdrop-filter:blur(8px);
  font-family:var(--sans); font-size:.6rem; font-weight:700;
  letter-spacing:.11em; text-transform:uppercase;
  transition:background-color .3s, border-color .3s, transform .3s var(--ease);
}
.vid-sound svg{ width:14px; height:14px; }
.vid-sound .i-on{ display:none; }
.vid-sound[aria-pressed="true"]{ background:var(--rose-dark); border-color:var(--rose-dark); }
.vid-sound[aria-pressed="true"] .i-on{ display:block; }
.vid-sound[aria-pressed="true"] .i-off{ display:none; }
.vid-sound:hover{ transform:translateY(-2px); background:rgba(22,45,74,.9); }
.vid-sound[aria-pressed="true"]:hover{ background:var(--rose-deep); }

.vid figcaption{ padding:.9rem .15rem 0; }
.vid figcaption strong{
  display:block; font-family:var(--serif); font-size:1.05rem; line-height:1.32;
  color:var(--navy-2); font-weight:500;
}
.vid figcaption span{
  display:block; margin-top:.3rem; font-size:.74rem; color:var(--body);
}

.watch-note{
  margin:2.5rem 0 0; text-align:center;
  font-size:.82rem; color:var(--body-soft);
}

/* ─────────── shift ─────────── */

.shift{ position:relative; overflow:hidden; background:var(--navy); }
.shift .wrap{ position:relative; z-index:1; }

.ledger-shift{ max-width:920px; margin-inline:auto; }

.shift-legend{
  display:grid; grid-template-columns:1fr 4.5rem 1fr; gap:1rem;
  padding:0 1.5rem .95rem;
  font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase;
}
.shift-legend span:first-child{ color:rgba(255,255,255,.6); }
.shift-legend span:last-child{ color:var(--blush); }

.srow{
  display:grid; grid-template-columns:1fr 4.5rem 1fr; gap:1rem; align-items:center;
  padding:1.35rem 1.5rem;
  border-top:1px solid rgba(241,186,191,.16);
  transition:background-color .4s;
}
.srow:hover{ background:rgba(241,186,191,.06); }
.was{
  color:rgba(255,255,255,.62);
  text-decoration:line-through; text-decoration-color:rgba(213,75,150,.7); text-decoration-thickness:1.5px;
  font-size:.99rem;
}
.arrow{ position:relative; height:1px; background:rgba(241,186,191,.3); }
.arrow::after{
  content:""; position:absolute; right:0; top:50%;
  width:6px; height:6px; margin-top:-3px;
  border-right:1.5px solid var(--rose); border-top:1.5px solid var(--rose);
  transform:rotate(45deg);
}
.now{ font-family:var(--serif); font-size:1.22rem; color:#fff; line-height:1.3; }

/* ─────────── about ─────────── */

.about{ background:#fff; }
.about-grid{ display:grid; grid-template-columns:.82fr 1.18fr; gap:clamp(2.5rem,6vw,5.5rem); align-items:center; }

.about-media{ position:relative; }
.about-frame{ position:relative; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-lg); }
.about-frame img{ width:100%; aspect-ratio:4/5; object-fit:cover; }
.about-media::before{
  content:""; position:absolute; inset:-1.5rem -1.5rem 3rem 3rem;
  border:1px solid var(--blush); border-radius:var(--r-lg); z-index:-1;
}
.year-stamp{
  position:absolute; right:-1.35rem; bottom:-1.5rem;
  width:122px; height:122px; border-radius:50%;
  background:var(--navy); color:var(--blush);
  display:grid; place-content:center; text-align:center; line-height:1.3;
  box-shadow:var(--sh);
}
.year-stamp small{ font-size:.62rem; letter-spacing:.22em; text-transform:uppercase; }
.year-stamp strong{ display:block; font-family:var(--serif); font-size:1.85rem; color:#fff; font-weight:500; }

.about-copy .drop::first-letter{
  float:left; font-family:var(--serif); font-size:3.9rem; line-height:.82;
  padding:.1em .12em 0 0; color:var(--rose);
}
.tick-list{ list-style:none; margin:0 0 1.6rem; padding:0; display:grid; gap:.6rem; }
.tick-list li{ position:relative; padding-left:1.95rem; font-size:.99rem; }
.tick-list li::before{
  content:""; position:absolute; left:0; top:.52em;
  width:11px; height:6px; border-left:1.8px solid var(--rose); border-bottom:1.8px solid var(--rose);
  transform:rotate(-45deg);
}
.mission{
  margin:1.9rem 0 0; padding:1.5rem 0 1.5rem 1.85rem;
  border-left:2px solid var(--blush);
  font-family:var(--serif); font-size:1.38rem; font-style:italic; line-height:1.48;
  color:var(--navy-2);
}

/* ─────────── steps (path) ─────────── */

.steps{ background:var(--mint); }

.path{
  list-style:none; margin:0 0 clamp(3rem,5vw,4rem); padding:0;
  display:grid; grid-template-columns:repeat(3,1fr); gap:1.75rem;
  position:relative;
}
.path::before{
  content:""; position:absolute; left:12%; right:12%; top:26px; height:1px;
  background:linear-gradient(90deg, var(--blush), var(--rose), var(--blush));
  opacity:.5;
}
.stop{ position:relative; text-align:center; padding:0 .75rem; }
.stop-dot{
  position:relative; z-index:1;
  width:52px; height:52px; margin:0 auto 1.4rem;
  border-radius:50%; background:#fff; border:1.5px solid var(--blush);
  display:grid; place-items:center;
  transition:transform .4s var(--ease), background-color .4s, border-color .4s;
}
.stop-dot b{ font-family:var(--serif); font-size:1.3rem; color:var(--rose-dark); font-weight:500; }
.stop:hover .stop-dot{ transform:scale(1.12); background:var(--rose-dark); border-color:var(--rose-dark); }
.stop:hover .stop-dot b{ color:#fff; }
.stop h3{ margin-bottom:.55rem; }
.stop p{ margin:0; font-size:.98rem; }

.steps-cta{ text-align:center; }
.fineprint{ margin:1.1rem 0 0; font-size:.84rem; color:var(--body-soft); }

/* ─────────── stories (quote wall) ─────────── */

.stories{ background:#fff; }

/* shared attribution row */
.stories figcaption{ display:flex; align-items:center; gap:.85rem; }
.avatar{
  width:44px; height:44px; flex:none; border-radius:50%;
  display:grid; place-items:center;
  background:var(--blush-bg); color:var(--rose-dark);
  font-family:var(--serif); font-size:1rem; font-weight:600; letter-spacing:.04em;
}

/* The source portraits are 600x550 composites: a 383px circle at (55,39),
   with the client's name and a rule alongside. These percentages crop to the
   circle alone and stay correct at any avatar size. */
.avatar-photo{
  background-repeat:no-repeat;
  background-size:156.66% 143.6%;
  background-position:25.34% 23.36%;
  box-shadow:0 0 0 1px var(--blush);
}

/* Drawn stand-ins for the two clients the site identifies only by
   initials. Deliberately illustrations, not stock photographs, so no real
   person's face is attached to someone else's testimonial. */
.avatar-illus{
  background-repeat:no-repeat;
  background-size:cover;
  background-position:center;
  box-shadow:0 0 0 1px var(--blush);
}
.who{ display:flex; flex-direction:column; line-height:1.35; min-width:0; }
.who strong{
  font-size:.78rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase;
  color:var(--rose-dark);
}
.who em{ font-style:normal; font-size:.79rem; color:var(--body); }

/* the headline testimonial */
.quote-hero{
  position:relative; margin:0 0 1.5rem; overflow:hidden;
  padding:clamp(2.5rem,5vw,3.75rem) clamp(1.75rem,4vw,3.5rem);
  border-radius:var(--r-lg); background:var(--navy);
  background-image:radial-gradient(30rem 22rem at 88% -20%, rgba(213,75,150,.35) 0%, transparent 65%);
}
.quote-hero::before{
  content:"\201C"; position:absolute; top:.4rem; right:2rem;
  font-family:var(--serif); font-size:11rem; line-height:1;
  color:rgba(241,186,191,.16); pointer-events:none;
}
.quote-hero blockquote{
  position:relative; margin:0 0 1.85rem; max-width:22ch;
  font-family:var(--serif); font-size:clamp(1.55rem,3.4vw,2.4rem); line-height:1.3;
  letter-spacing:-.015em; color:#fff;
}
.quote-hero blockquote em{ font-style:italic; color:var(--blush); }
.quote-hero .avatar{ background:rgba(241,186,191,.18); color:var(--blush); }
.quote-hero .who strong{ color:var(--blush); }
.quote-hero .who em{ color:rgba(255,255,255,.6); }

/* masonry wall — columns keep uneven quote lengths from leaving gaps */
.quote-wall{ columns:2; column-gap:1.5rem; }

.q-card{
  break-inside:avoid; margin:0 0 1.5rem;
  padding:2.1rem 1.85rem 1.75rem;
  background:var(--mist); border:1px solid transparent; border-radius:var(--r-lg);
  transition:background-color .45s, border-color .45s, transform .45s var(--ease), box-shadow .45s var(--ease);
}
.q-card:hover{
  background:#fff; border-color:var(--blush);
  transform:translateY(-4px); box-shadow:var(--sh);
}
.q-card blockquote{
  margin:0 0 1.5rem; font-size:1rem; line-height:1.72; color:var(--ink);
}
.q-card.accent{ background:var(--blush-bg); }
.q-card.accent .avatar{ background:#fff; }
.q-card.accent blockquote{
  font-family:var(--serif); font-size:1.32rem; line-height:1.45; color:var(--navy-2);
}

/* ─────────── faq ─────────── */

.faq{ background:var(--mist); }
.faq-grid{ display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(2.5rem,6vw,5rem); align-items:start; }
.faq-aside{ position:sticky; top:130px; }
.faq-help{ font-size:1rem; color:var(--body-soft); margin:1.25rem 0 1.75rem; max-width:24em; }

.faq-list{ display:grid; gap:.7rem; }
.faq-list details{
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  padding:0 1.7rem; transition:border-color .35s, box-shadow .35s;
}
.faq-list details[open]{ border-color:var(--blush); box-shadow:var(--sh-sm); }
.faq-list summary{
  list-style:none; cursor:pointer; position:relative;
  padding:1.4rem 2.75rem 1.4rem 0;
  font-family:var(--serif); font-size:1.24rem; line-height:1.35; color:var(--navy-2);
}
.faq-list summary::-webkit-details-marker{ display:none; }
.faq-list summary::before,
.faq-list summary::after{
  content:""; position:absolute; right:.25rem; top:50%;
  background:var(--rose); transition:transform .35s var(--ease), opacity .35s;
}
.faq-list summary::before{ width:14px; height:1.5px; margin-top:-.75px; }
.faq-list summary::after{ width:1.5px; height:14px; margin-top:-7px; right:6.5px; }
.faq-list details[open] summary::after{ transform:rotate(90deg); opacity:0; }
.faq-list details > div{ overflow:hidden; }
.faq-list p{ margin:0; padding:0 0 1.5rem; font-size:.99rem; }

/* ─────────── free resource ─────────── */

/* cream, not mist: the FAQ directly above is already mist and the two
   sections ran together */
.resource{ background:var(--cream); }

.resource-grid{
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(2.5rem,6vw,5rem); align-items:center;
}

.resource-media img{
  width:100%; max-width:520px; margin-inline:auto;
  filter:drop-shadow(0 34px 45px rgba(22,45,74,.28));
}

.resource-copy h2{ margin-bottom:.7rem; }
/* --body, not --body-soft: cream is darker than white and the softer tone
   lands at 4.43:1 on it */
.resource-lede{ font-size:1.05rem; color:var(--body); max-width:34em; margin-bottom:1.9rem; }

.resource-form{ display:grid; gap:.9rem; max-width:30rem; }

.field{ display:grid; gap:.4rem; }
.field label{
  font-size:.72rem; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  color:var(--navy-2);
}
.field .opt{
  font-weight:400; letter-spacing:.04em; text-transform:none;
  color:var(--body); font-size:.74rem; margin-left:.35rem;
}
.field input, .field textarea{
  width:100%; font-family:var(--sans); font-size:.98rem; color:var(--ink);
  background:#fff; border:1.5px solid var(--line); border-radius:12px;
  padding:.85rem 1rem; resize:vertical;
  transition:border-color .3s, box-shadow .3s;
}
.field input::placeholder, .field textarea::placeholder{ color:#9aa1b1; }
.field input:focus, .field textarea:focus{
  outline:none; border-color:var(--rose-dark);
  box-shadow:0 0 0 3px rgba(184,58,128,.14);
}
.field input:user-invalid, .field textarea:user-invalid{ border-color:#C0392B; }

.resource-form .btn{ justify-self:start; margin-top:.35rem; }

.form-status{ margin:0; font-size:.88rem; min-height:1.2em; }
.form-status.ok{ color:#1E7A4C; }
.form-status.err{ color:#C0392B; }

.form-fineprint{ margin:0; font-size:.78rem; color:var(--body); }

/* ─────────── final cta ─────────── */

.final-cta{ position:relative; overflow:hidden; background:var(--navy); color:rgba(255,255,255,.75); }
.final-inner{ position:relative; z-index:1; max-width:800px; margin-inline:auto; text-align:center; }
.final-inner .eyebrow{ justify-content:center; color:var(--blush); }
.final-h{ color:#fff; margin-bottom:1.25rem; }
.final-p{ font-size:1.12rem; max-width:34em; margin-inline:auto; }
.final-sign{
  font-family:var(--serif); font-style:italic; font-size:1.35rem;
  color:var(--blush); margin:1.5rem 0 2.5rem;
}

/* ─────────── mobile action bar ─────────── */

/* hidden entirely above the phone breakpoint */
.mobile-bar{ display:none; }
.cta-short{ display:none; }

/* ─────────── footer ─────────── */

.site-footer{ background:var(--navy-deep); color:rgba(255,255,255,.6); padding:3.5rem 0 2.25rem; }
.footer-inner{
  display:flex; flex-wrap:wrap; align-items:center; gap:1.9rem;
  padding-bottom:2.1rem; border-bottom:1px solid rgba(255,255,255,.1);
}
.footer-brand{ display:flex; align-items:center; gap:.85rem; }
.footer-brand strong{ display:block; font-family:var(--serif); font-size:1.1rem; color:#fff; font-weight:600; }
.footer-brand span{ font-size:.7rem; letter-spacing:.15em; text-transform:uppercase; }
.footer-nav{ display:flex; flex-wrap:wrap; gap:1.5rem; margin-inline:auto; }
.footer-nav a{ font-size:.85rem; color:rgba(255,255,255,.72); transition:color .3s; }
.footer-nav a:hover{ color:var(--blush); }
.footer-contact{ display:flex; align-items:center; gap:1.15rem; }
.footer-contact a[href^="tel"]{ font-size:.88rem; font-weight:700; color:#fff; }
.footer-legal{ padding-top:1.7rem; font-size:.79rem; line-height:1.75; }
.footer-legal p{ margin:0 0 .6rem; }
.footer-legal strong{ color:var(--blush); font-weight:600; }

/* ─────────── reveal ─────────── */

.js .reveal{ opacity:0; transform:translateY(30px); transition:opacity .85s var(--ease-out), transform .85s var(--ease-out); }
.js .reveal.in{ opacity:1; transform:none; }

/* If the entrance animations never ran (tab opened in the background, animation
   unsupported), show the hero outright rather than leave it blank. */
.anim-fallback .line-in,
.anim-fallback .display .word{ opacity:1 !important; transform:none !important; }
.anim-fallback .blurred{ filter:none !important; letter-spacing:-.022em !important; }
.anim-fallback .blurred::after{ transform:scaleX(1) !important; }

/* ─────────── responsive ─────────── */

@media (max-width:1100px){
  .site-nav{ display:none; }
  .hero-grid, .about-grid, .why-grid, .faq-grid, .resource-grid{ grid-template-columns:1fr; }
  .why-sticky, .faq-aside{ position:static; }
  /* Copy leads, portrait follows — the headline is the reason to keep reading. */
  .hero-copy{ order:1; }
  .hero-media{ order:2; max-width:430px; margin-inline:auto; }
  .about-media{ max-width:440px; margin-inline:auto; }
  .entry{ grid-template-columns:1fr; row-gap:.6rem; }
  .quote-wall{ columns:1; }
  .q-card, .quote-hero{ margin-bottom:1.15rem; }
  /* four vertical frames get too narrow to read below this width */
  .video-grid{ grid-template-columns:repeat(2,1fr); }
}

@media (max-width:820px){
  .head-split{ grid-template-columns:1fr; align-items:start; gap:1.25rem; }
  .head-note{ font-size:.98rem; }
  .sign-list{ grid-template-columns:1fr; }
  .sign:nth-child(odd){ border-right:none; }
  .path{ grid-template-columns:1fr; gap:2.25rem; }
  .path::before{ display:none; }
  .stop{ display:grid; grid-template-columns:52px 1fr; gap:1.15rem; text-align:left; padding:0; }
  .stop-dot{ margin:0; }
  .stop h3, .stop p{ grid-column:2; }
  .stop h3{ margin-top:.5rem; }
  .slab{ padding:1.9rem 1.6rem 1.6rem; }
}

@media (max-width:640px){
  body{ font-size:16px; }
  .section{ padding:clamp(3.5rem,11vw,5rem) 0; }

  /* header — the CTA shrinks to a single word here because the fixed action
     bar below carries the full call-to-action */
  .header-inner{ min-height:60px; gap:.6rem; }
  .phone, .brand-text em{ display:none; }
  .header-cta{ margin-left:auto; }
  .brand-text strong{ font-size:.9rem; white-space:nowrap; }
  .brand-mark{ width:34px; height:34px; }
  .cta-long{ display:none; }
  .cta-short{ display:inline; }

  /* buttons stack full-width, small ones stay inline.
     .btn-sm must come after .btn — equal specificity, so source order decides. */
  .btn{ width:100%; padding:1rem 1.5rem; font-size:.79rem; }
  .btn-lg{ padding:1.05rem 1.5rem; }
  .btn-quiet{ width:auto; }
  .btn-sm{ width:auto; padding:.8rem 1.2rem; font-size:.68rem; letter-spacing:.09em; line-height:1.1; }
  .header-cta .btn-rose{ box-shadow:none; }
  .hero-actions{ flex-direction:column; align-items:stretch; gap:.75rem; }

  /* hero — the mesh orbs are sized for a wide canvas; at phone widths they
     swamp the viewport and wash the whole section pink. */
  .hero{ padding-top:2.5rem; }
  .mesh i{ filter:blur(45px); }
  .mesh i:nth-child(1){ width:20rem; height:20rem; right:-7rem; top:-7rem; background:rgba(241,186,191,.4); }
  .mesh i:nth-child(2){ width:16rem; height:16rem; left:-7rem; bottom:-4rem; background:rgba(244,247,250,.85); }
  .mesh i:nth-child(3){ width:13rem; height:13rem; right:15%; bottom:-4rem; background:rgba(255,242,226,.5); }
  .mesh.dark i:nth-child(1){ background:rgba(213,75,150,.32); }
  .mesh.dark i:nth-child(3){ background:rgba(213,75,150,.18); }
  h1.display{ font-size:clamp(2.1rem,8.6vw,2.75rem); }
  h2.display{ font-size:clamp(1.75rem,7vw,2.2rem); }
  .hero-grid{ gap:2.75rem; }

  /* hero reads as a centred column on phones */
  .hero-copy{ text-align:center; }
  .hero-copy .eyebrow{ justify-content:center; }
  .lede{ font-size:1.04rem; margin:1.35rem auto 1.85rem; }
  .hero-actions{ align-items:center; }
  .btn-quiet{ align-self:center; }

  /* stacked rows instead of three cramped columns */
  .hero-stats{
    grid-template-columns:1fr; margin-top:2.25rem; padding-top:0; border-top:0;
  }
  .hero-stats div{
    display:flex; align-items:baseline; justify-content:center; gap:.75rem;
    padding:.95rem 0; border-left:0; border-top:1px solid var(--line);
  }
  .hero-stats div:first-child{ padding-left:0; }
  .hero-stats dt{ font-size:1.6rem; }
  .hero-stats dd{ margin:0; font-size:.79rem; text-align:left; max-width:13rem; }

  .seal{ width:88px; height:88px; left:-.75rem; bottom:1.5rem; }
  .seal text{ font-size:9px; }
  .seal-core{ width:34px; height:34px; }
  .seal-core svg{ width:15px; height:15px; }
  .photo-note{ right:0; bottom:-1rem; padding:.65rem .95rem; font-size:.68rem; }
  .photo-note strong{ font-size:.92rem; }
  .frame-offset{ inset:1rem -1rem -1rem 1rem; }

  /* signs + pull quote */
  .sign{ grid-template-columns:2.1rem 1fr; padding:1.5rem 1.15rem; }
  .sign p{ font-size:.99rem; }
  /* keep this at the desktop clamp's floor: below 24px the rose italic stops
     counting as large text and would need a 4.5:1 ratio it cannot reach */
  .pull{ max-width:none; font-size:1.6rem; }

  /* shift table */
  .srow, .shift-legend{ grid-template-columns:1fr; gap:.35rem; }
  .shift-legend{ display:none; }
  .arrow{ width:24px; height:1px; margin:.35rem 0; }
  .srow{ padding:1.15rem 1rem; }
  .now{ font-size:1.12rem; }

  /* about */
  .year-stamp{ width:88px; height:88px; right:-.35rem; bottom:-1rem; }
  .year-stamp strong{ font-size:1.5rem; }
  .about-copy .drop::first-letter{ font-size:3.1rem; }
  .mission{ font-size:1.2rem; padding-left:1.35rem; }

  /* watch */
  .vid-play{ width:46px; height:46px; }
  .vid-play svg{ width:19px; height:19px; }
  .vid-sound .vid-sound-label{ display:none; }
  .vid-sound{ padding:.5rem; right:.5rem; bottom:.5rem; }
  .vid figcaption strong{ font-size:.98rem; }

  /* free resource */
  .resource-media img{ max-width:320px; }
  .resource-form .btn{ justify-self:stretch; }

  /* stories */
  .quote-hero{ padding:2.25rem 1.5rem; }
  .quote-hero::before{ font-size:5rem; right:.9rem; top:0; color:rgba(241,186,191,.13); }
  .quote-hero blockquote{ max-width:none; font-size:1.42rem; margin-bottom:1.5rem; }
  .q-card{ padding:1.75rem 1.4rem 1.5rem; }
  .q-card.accent blockquote{ font-size:1.18rem; }
  .avatar{ width:40px; height:40px; font-size:.9rem; }

  /* faq */
  .faq-list details{ padding-inline:1.25rem; }
  .faq-list summary{ font-size:1.1rem; padding:1.2rem 2.25rem 1.2rem 0; }

  /* footer */
  .footer-inner{ flex-direction:column; align-items:flex-start; gap:1.4rem; }
  .footer-nav{ margin-inline:0; gap:1rem 1.25rem; }
  .footer-contact{ flex-wrap:wrap; }
  .site-footer{ padding-bottom:6rem; }   /* clears the fixed action bar */

  /* fixed call + book bar */
  .mobile-bar{
    display:flex; gap:.6rem; align-items:stretch;
    position:fixed; left:0; right:0; bottom:0; z-index:180;
    padding:.65rem .8rem calc(.65rem + env(safe-area-inset-bottom, 0px));
    background:rgba(255,255,255,.93);
    backdrop-filter:saturate(160%) blur(14px);
    border-top:1px solid var(--line);
    box-shadow:0 -10px 30px -18px rgba(22,45,74,.5);
    transform:translateY(115%);
    transition:transform .38s var(--ease-out);
  }
  .mobile-bar.show{ transform:none; }

  .mobile-bar a{
    display:inline-flex; align-items:center; justify-content:center; gap:.45rem;
    border-radius:999px; font-weight:700; letter-spacing:.05em;
    padding:.85rem 1rem; white-space:nowrap;
  }
  .mb-call{
    flex:0 0 auto;
    border:1.5px solid var(--blush); color:var(--navy-2);
    font-size:.78rem;
  }
  .mb-call svg{ width:16px; height:16px; fill:currentColor; stroke:none; }
  .mb-call:active{ background:var(--blush-bg); }

  .mb-book{
    flex:1 1 auto;
    background:var(--rose-dark); color:#fff;
    font-size:.8rem; text-transform:uppercase; letter-spacing:.08em;
  }
  .mb-book:active{ background:var(--rose-deep); }
}

@media (max-width:380px){
  .mb-call span{ display:none; }        /* icon only on the narrowest phones */
  .mb-call{ padding-inline:1rem; }
  .btn-sm{ padding:.75rem .9rem; font-size:.63rem; letter-spacing:.06em; }
}

/* Below this the full "Book free call" label and the coach's name cannot
   share a row, so the wordmark drops to the monogram and the CTA wins. */
@media (max-width:345px){
  .brand-text{ display:none; }
}

@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  html{ scroll-behavior:auto; }
  .js .reveal, .js .line-in, .js .display .word{ opacity:1 !important; transform:none !important; }
  .js .blurred{ filter:none !important; }
}

@media print{
  .site-header, .marquee, .mesh, .grain, .progress{ display:none; }
  body{ color:#000; }
  .quote-wall{ columns:1; }
}
