/* ============================================================
   CONSULT-ED - page chrome, MOBILE FIRST
   Base styles are the phone experience (single column, sticky
   top bar, grouped menu, persistent book-bar, thumb-sized
   targets). Desktop is layered on at 760px and 1000px with
   min-width queries. One document serves every width.
   ============================================================ */

/* ---------- Site-wide mesh background ---------- */
.site-bg{ position:fixed; inset:0; z-index:-1; }
.site-bg img{ width:100%; height:100%; object-fit:cover; filter:var(--mesh-filter,none); }
.site-bg::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(255,255,255,.42) 0%, rgba(249,245,238,.72) 30%, rgba(249,245,238,.86) 100%); }



/* ---------- Nav: solid top bar at base, glass pill from 1000px ---------- */
.nav{ position:sticky; top:0; z-index:50; }
.nav-in{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding-block:11px; background:rgba(249,245,238,.92); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border-bottom:1px solid rgba(230,222,206,.7); margin-inline:calc(var(--gutter) * -1); padding-inline:var(--gutter); }
.logo{ display:flex; align-items:center; gap:9px; color:var(--ink); }
.logo img{ height:32px; width:auto; display:block; }
.logo .wm{ font-weight:800; font-size:17px; letter-spacing:-.02em; line-height:1; display:block; }
.logo .wm em{ font-style:normal; color:var(--blue); }
.nav-links{ display:none; }
.nav-in > .btn{ display:none; }
.menu-btn{ display:grid; width:44px; height:44px; border:none; cursor:pointer; border-radius:var(--leaf-sm); background:var(--blue); color:#fff; place-items:center; }
.menu-btn svg{ width:20px; height:20px; }
.m-menu{ display:none; position:fixed; inset:0; z-index:70; margin:0; padding:0; background:var(--ivory); flex-direction:column; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.m-menu.open{ display:flex; }
.m-menu .m-top{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:11px var(--gutter); border-bottom:1px solid var(--line); background:var(--ivory); position:sticky; top:0; }
.m-menu .m-close{ width:44px; height:44px; border:none; cursor:pointer; border-radius:var(--leaf-sm); background:var(--blue); color:#fff; display:grid; place-items:center; }
.m-menu .m-close svg{ width:19px; height:19px; }
.m-menu .m-body{ flex:1; display:flex; flex-direction:column; gap:1px; padding:14px var(--gutter) 20px; }
.m-menu a{ color:var(--ink); font-weight:600; font-size:19px; padding:14px 4px; border-radius:var(--leaf-sm); min-height:52px; display:flex; align-items:center; border-bottom:1px solid color-mix(in srgb, var(--line) 70%, transparent); }
.m-menu a:last-of-type{ border-bottom:none; }
.m-menu a.cur{ color:var(--blue); }
.m-menu a:active{ color:var(--blue); }
.m-menu h6{ margin:22px 0 2px; padding:0 4px; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); font-weight:600; }
.m-menu .m-foot{ position:sticky; bottom:0; padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom)); background:linear-gradient(180deg, rgba(249,245,238,0) 0%, var(--ivory) 40%); }
.m-menu .btn{ width:100%; justify-content:center; padding-block:15px; font-size:15.5px; box-shadow:0 14px 34px -18px rgba(20,55,59,.5); }
body.menu-open{ overflow:hidden; }
body.menu-open .book-bar{ display:none; }

@media (min-width:1000px){
  .nav{ top:14px; }
  .nav-in{ gap:22px; padding:10px 14px 10px 22px; margin-inline:0; background:rgba(255,255,255,.84); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border:1px solid rgba(255,255,255,.7); border-bottom:1px solid rgba(255,255,255,.7); border-radius:var(--leaf); box-shadow:0 14px 40px -26px rgba(20,55,59,.4); }
  .logo img{ height:34px; }
  .logo .wm{ font-size:20px; }
  .nav .btn{ padding:12px 22px; font-size:14px; }
  .nav-in > .btn{ display:inline-flex; }
  .nav-links{ display:flex; align-items:center; gap:28px; }
  .menu-btn{ display:none; }
  .m-menu{ display:none !important; }
}
.nav-links > a, .nav-links > .has-menu > button{ color:var(--ink); font-weight:500; font-size:15px; font-family:var(--f); background:none; border:none; padding:0; cursor:pointer; display:inline-flex; align-items:center; gap:7px; transition:color .2s ease; }
.nav-links > a:hover, .nav-links > .has-menu > button:hover{ color:var(--blue); }
.nav-links a.cur, .nav-links .has-menu.cur > button{ color:var(--blue); font-weight:600; }
.has-menu{ position:relative; }
.has-menu > button svg{ width:11px; height:11px; opacity:.6; transition:transform .2s ease; }
.has-menu:hover > button svg, .has-menu:focus-within > button svg{ transform:rotate(180deg); }
.dd{ position:absolute; top:calc(100% + 18px); left:50%; transform:translateX(-50%) translateY(-6px); width:min(560px,70vw); padding:14px; background:rgba(255,255,255,.97); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border:1px solid var(--line); border-radius:var(--leaf); box-shadow:0 30px 70px -40px rgba(20,55,59,.6); display:grid; grid-template-columns:1fr 1fr; gap:2px; opacity:0; visibility:hidden; transition:opacity .2s ease, transform .2s ease; }
.has-menu:hover .dd, .has-menu:focus-within .dd{ opacity:1; visibility:visible; transform:translateX(-50%) translateY(0); }
.dd::before{ content:""; position:absolute; top:-18px; left:0; right:0; height:18px; }
.dd a{ display:grid; gap:2px; padding:11px 14px; border-radius:var(--leaf-sm); }
.dd a:hover{ background:color-mix(in srgb, var(--blue) 7%, transparent); }
.dd .nm{ font-weight:600; font-size:14.5px; color:var(--ink); }
.dd .ds{ font-size:12.5px; line-height:1.45; color:var(--muted); }

/* ---------- Persistent book-bar (hidden from 1000px) ---------- */
.book-bar{ position:fixed; bottom:0; left:50%; transform:translateX(-50%); width:100%; max-width:560px; z-index:60; padding:12px 16px calc(12px + env(safe-area-inset-bottom)); background:linear-gradient(180deg, rgba(249,245,238,0) 0%, rgba(249,245,238,.94) 40%); pointer-events:none; }
.book-bar{ transition:transform .22s ease, opacity .22s ease; }
.book-bar.tuck{ transform:translate(-50%,130%); opacity:0; pointer-events:none; }
.book-bar .btn{ pointer-events:auto; width:100%; justify-content:center; padding-block:15px; font-size:15.5px; box-shadow:0 14px 34px -18px rgba(20,55,59,.5); }
@media (min-width:1000px){ .book-bar{ display:none; } }

/* An in-page CTA that repeats the book-bar action is hidden while the bar is
   on screen, so a phone never shows two competing booking buttons. */
@media (max-width:999px){
  /* The bar is the only button on a phone screen. Hero button rows retire;
     .hero-cta.keep opts out (404, which has no bar). */
  .dupe-cta{ display:none !important; }
  .hero-cta:not(.keep){ display:none !important; }
}

/* ---------- Home hero ---------- */
.hero{ position:relative; overflow:hidden; }
.hero::before{ content:""; position:absolute; inset:0; background:linear-gradient(160deg, rgba(255,255,255,.86) 0%, rgba(255,255,255,.55) 45%, rgba(255,255,255,.12) 100%); }
.hero-in{ position:relative; display:grid; grid-template-columns:1fr; gap:32px; align-items:center; padding-block:38px 48px; }
.hero-copy .h-display{ text-wrap:pretty; color:var(--ink); font-size:clamp(31px,8.6vw,64px); }
.hero-copy .lead{ color:color-mix(in srgb, var(--ink) 82%, #ffffff); max-width:46ch; margin-top:16px; }
.hero-cta{ display:grid; gap:10px; margin-top:24px; }
.hero-cta .btn{ justify-content:center; padding-block:15px; }
.hero-ph{ position:relative; padding:18px 18px 0 0; }
.hero-ph .squircle{ position:relative; z-index:1; box-shadow:var(--shadow-soft); aspect-ratio:4/3.4; }
@media (min-width:760px){
  .hero-cta{ display:flex; gap:14px; flex-wrap:wrap; }
  .hero-cta .btn{ justify-content:flex-start; padding-block:14px; }
}
@media (min-width:1000px){
  .hero{ margin-top:-72px; }
  .hero::before{ background:linear-gradient(105deg, rgba(255,255,255,.86) 0%, rgba(255,255,255,.6) 38%, rgba(255,255,255,.12) 72%, rgba(255,255,255,0) 100%); }
  .hero-in{ grid-template-columns:1.05fr .95fr; gap:clamp(32px,5vw,72px); padding-block:clamp(130px,15vw,180px) clamp(64px,8vw,110px); }
  .hero-cta{ margin-top:30px; }
  .hero-ph{ padding:22px 22px 0 0; }
  .hero-ph .squircle{ aspect-ratio:4/4.3; }
}

/* ---------- Interior page hero ---------- */
.page-hero{ position:relative; padding-block:30px 10px; }
.page-hero .in{ display:grid; grid-template-columns:1fr; gap:26px; align-items:center; }
.page-hero h1{ margin-top:12px; text-wrap:pretty; font-size:clamp(29px,8vw,50px); }
.page-hero .lead{ margin-top:14px; max-width:52ch; }
.page-hero .hero-cta{ margin-top:22px; }
.ph{ position:relative; } /* generic ring-wrapper guard per export notes - keeps .ring from anchoring to the body */
.page-hero .ph{ position:relative; padding:16px 16px 0 0; }
.page-hero .ph .squircle{ position:relative; z-index:1; aspect-ratio:4/3.1; box-shadow:var(--shadow-card); }
.crumb{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--muted); flex-wrap:wrap; }
.crumb a{ color:var(--muted); }
.crumb a:hover{ color:var(--blue); }
.crumb span{ opacity:.5; }
@media (min-width:900px){
  .page-hero{ padding-block:clamp(52px,7vw,86px) clamp(30px,4vw,48px); }
  .page-hero .in{ grid-template-columns:1.15fr .85fr; gap:clamp(32px,5vw,64px); }
  .page-hero.solo .in{ grid-template-columns:1fr; max-width:800px; }
  .page-hero .ph{ padding:18px 18px 0 0; }
  .crumb{ font-size:13px; }
}

/* ---------- Splits & grids: stack first, spread later ---------- */
.split{ display:grid; grid-template-columns:1fr; gap:30px; align-items:center; }
.split .ph{ position:relative; }
.split .ph .squircle{ box-shadow:var(--shadow-card); aspect-ratio:4/3.4; }
.split .ph .blob{ width:110px; height:110px; right:-24px; bottom:-24px; z-index:-1; }
.grid-2, .grid-3{ display:grid; grid-template-columns:1fr; gap:14px; }
.stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:26px; }
.stat .num{ font-size:26px; }
.stat .lbl{ font-size:12.5px; line-height:1.4; }
.sec-head{ max-width:660px; }
.sec-head h2{ margin-top:12px; }
.sec-head .lead{ margin-top:14px; }
@media (min-width:760px){
  .grid-2{ grid-template-columns:repeat(2,1fr); gap:22px; }
  .grid-3{ grid-template-columns:repeat(2,1fr); gap:22px; }
}
@media (min-width:1000px){
  .split{ grid-template-columns:1fr 1fr; gap:clamp(32px,5vw,72px); }
  .split.narrow-l{ grid-template-columns:.9fr 1.1fr; }
  .grid-3{ grid-template-columns:repeat(3,1fr); }
  .stats{ display:flex; gap:clamp(24px,4vw,56px); margin-top:34px; flex-wrap:wrap; }
  .stat .num{ font-size:clamp(36px,4vw,52px); }
  .stat .lbl{ font-size:14.5px; }
  .sec-head.mid{ margin:0 auto; text-align:center; }
}

/* ---------- Offer rows: tappable list first, three-column row later ---------- */
.offer{ display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:start; padding:18px; background:#fff; border:1px solid var(--line); border-radius:var(--leaf); transition:border-color .2s ease, box-shadow .2s ease; }
.offer:hover{ border-color:color-mix(in srgb, var(--blue) 26%, var(--line)); box-shadow:var(--shadow-card); }
.offer .ic{ width:44px; height:44px; border-radius:var(--leaf-sm); background:color-mix(in srgb, var(--yellow) 30%, #fff); color:var(--blue); display:grid; place-items:center; }
.offer .ic svg{ width:20px; height:20px; }
.offer h3{ font-family:var(--f-display); font-weight:400; font-size:19px; color:var(--ink); }
.offer p{ font-size:13.5px; color:var(--muted); margin-top:3px; }
.offer .go{ grid-column:2; color:var(--blue); font-weight:600; font-size:13.5px; white-space:nowrap; }
@media (min-width:1000px){
  .offer{ grid-template-columns:auto 1fr auto; gap:18px; align-items:center; padding:22px 24px; }
  .offer .ic{ width:46px; height:46px; }
  .offer .ic svg{ width:21px; height:21px; }
  .offer h3{ font-size:21px; }
  .offer p{ font-size:14px; margin-top:2px; }
  .offer .go{ grid-column:auto; font-size:14px; }
}

/* ---------- Service tiles (kept for future surfaces) ---------- */
.svc-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-top:32px; }
@media (min-width:1000px){ .svc-grid{ grid-template-columns:repeat(3,1fr); gap:18px; margin-top:44px; } }
.tile-blue{ position:relative; border-radius:var(--leaf); aspect-ratio:1/1.05; background:var(--blue); color:#fff; display:flex; align-items:center; justify-content:center; padding:18px 20px; overflow:hidden; border:1px solid rgba(255,255,255,.45); text-align:center; }
.tile-blue .lbl{ font-weight:600; font-size:17px; line-height:1.5; position:relative; }
.tile .sub{ display:block; font-weight:400; font-size:13.5px; color:rgba(255,255,255,.8); margin-top:4px; }
.svc-scroll{ display:grid; grid-auto-flow:column; grid-auto-columns:72%; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding:24px var(--gutter) 10px; scrollbar-width:none; }
.svc-scroll::-webkit-scrollbar{ display:none; }
.svc-scroll > *{ scroll-snap-align:center; }
.swipe-hint{ display:flex; align-items:center; gap:8px; color:var(--muted); font-size:12.5px; font-weight:600; padding-inline:var(--gutter); }
.swipe-hint svg{ width:16px; height:16px; }

/* ---------- Approach band ---------- */
.approach .card-blue{ display:grid; grid-template-columns:1fr; gap:20px; align-items:center; position:relative; overflow:hidden; }
.approach .glow-circle{ width:300px; height:300px; right:-100px; top:-120px; }
.approach .squircle{ aspect-ratio:4/3.2; box-shadow:none; position:relative; z-index:1; }
@media (min-width:1000px){
  .approach .card-blue{ grid-template-columns:.9fr 1.1fr; gap:clamp(28px,4vw,56px); }
  .approach .glow-circle{ width:420px; height:420px; right:-120px; top:-160px; }
  .approach .squircle{ aspect-ratio:1/1.08; }
}

/* ---------- Quote ---------- */
.quote{ max-width:760px; margin:0 auto; text-align:center; }
.quote blockquote{ margin:0; font-weight:500; font-size:clamp(19px,2.2vw,26px); line-height:1.55; letter-spacing:-.01em; }
.quote .who{ margin-top:24px; display:flex; align-items:center; justify-content:center; gap:14px; }
.quote .who .plate::before{ inset:-9px -9px 9px 9px; filter:blur(5px); }
.quote .who .nm{ font-weight:600; font-size:15px; text-align:left; }
.quote .who .rl{ color:var(--muted); font-size:13.5px; text-align:left; }

/* ---------- Contact ---------- */
.contact .card-blue{ display:grid; grid-template-columns:1fr; gap:22px; align-items:stretch; position:relative; overflow:hidden; }
.contact .squircle{ min-height:200px; box-shadow:none; }
.contact form{ display:grid; gap:12px; }
.contact form .btn{ justify-content:center; padding-block:15px; }
.contact .glow-circle{ width:300px; height:300px; right:6%; bottom:8%; }
@media (min-width:1000px){
  .contact .card-blue{ grid-template-columns:.95fr 1.05fr; gap:clamp(28px,4vw,56px); }
  .contact .squircle{ height:100%; min-height:320px; }
  .contact form{ gap:14px; }
  .contact form .btn{ padding-block:14px; }
}

/* ---------- CTA band ---------- */
.cta-band{ position:relative; overflow:hidden; display:grid; grid-template-columns:1fr; gap:20px; align-items:center; }
.cta-band .btns{ display:grid; gap:10px; }
.cta-band .btns .btn{ justify-content:center; padding-block:15px; }
@media (min-width:900px){
  .cta-band{ grid-template-columns:1.2fr auto; gap:clamp(24px,4vw,48px); }
  .cta-band .btns{ display:flex; gap:12px; flex-wrap:wrap; }
  .cta-band .btns .btn{ justify-content:flex-start; padding-block:14px; }
}

/* ---------- Section rhythm & atoms at phone scale ---------- */
.section{ padding-block:48px; }
.stack{ display:grid; gap:14px; }
html{ overflow-x:clip; }
@media (max-width:759px){
  .eyebrow{ font-size:12px; }
  .plate::before{ inset:-14px -14px 14px 14px; }
  .lead{ font-size:15.5px; }
  .card, .card-line{ padding:24px; }
  .course{ padding:22px; }
  .course h3{ font-size:20px; }
  .faq summary{ font-size:15.5px; padding:17px 40px 17px 0; }
  .faq .a{ font-size:14.5px; padding-right:32px; }
  .video .cap{ left:16px; right:16px; bottom:14px; }
  .video .cap .t{ font-size:14px; }
  .video .play{ width:60px; height:60px; }
  .slot{ min-height:210px; padding:22px; }
  .embed{ padding:10px; }
  .ring{ inset:-13px -13px 13px 13px; }
}
@media (min-width:760px){ .section{ padding-block:clamp(56px,8vw,110px); } }

/* ---------- Footer ---------- */
footer{ background:var(--grad-footer); color:#fff; border-radius:32px 32px 0 0; margin-top:48px; padding-bottom:86px; position:relative; overflow:hidden; }
footer .glow-circle{ width:340px; height:340px; left:-120px; bottom:-140px; }
.ft-in{ position:relative; display:grid; grid-template-columns:1fr 1fr; gap:26px; padding-block:40px 26px; }
.ft-brand{ display:flex; flex-direction:column; gap:12px; grid-column:1 / -1; }
.ft-brand img{ height:44px; width:44px; }
.ft-brand .wm{ font-weight:800; font-size:32px; line-height:.95; letter-spacing:-.02em; }
.ft-brand p{ color:rgba(255,255,255,.72); font-size:14px; max-width:32ch; }
.ft-col h5{ margin:0 0 12px; font-size:11.5px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.58); }
.ft-col ul{ list-style:none; margin:0; padding:0; display:grid; gap:9px; }
.ft-col a{ color:#fff; font-size:14.5px; opacity:.88; display:inline-block; padding-block:2px; }
.ft-col a:hover{ color:var(--yellow); }
.ft-base{ border-top:1px solid var(--line-blue); display:grid; gap:14px; padding-block:18px; font-size:12.5px; color:rgba(255,255,255,.62); }
.soc{ display:flex; gap:10px; }
.soc a{ width:40px; height:40px; border-radius:var(--leaf-sm); border:1px solid var(--line-blue); display:grid; place-items:center; color:#fff; }
.soc a:hover{ background:#fff; color:var(--blue); }
.soc svg{ width:16px; height:16px; }
@media (min-width:1000px){
  footer{ margin-top:clamp(56px,8vw,110px); padding-bottom:0; }
  footer .glow-circle{ width:520px; height:520px; left:-160px; bottom:-220px; }
  .ft-in{ grid-template-columns:1.4fr 1fr 1fr 1fr; gap:clamp(24px,4vw,48px); padding-block:clamp(48px,6vw,80px) 36px; }
  .ft-brand{ grid-column:auto; gap:14px; }
  .ft-brand img{ height:76px; width:76px; }
  .ft-brand .wm{ font-size:clamp(30px,3.4vw,44px); }
  .ft-base{ display:flex; justify-content:space-between; align-items:center; gap:16px; padding-block:20px; font-size:13px; flex-wrap:wrap; }
  .soc a{ width:36px; height:36px; }
}
