
/* ==========================================================================
   SEGVIA V2, "NB edition"
   Design system reverse-engineered from nunobragaconsultorimobiliario.pt
   Geist type ramp · stacked 32px rounded panels · #050b1a→#152869 gradients
   · #3061ff→#9cb3ff gradient buttons · 80px translateY reveals · Lenis
   Gold removed per brief. Blue system only.
   ========================================================================== */

:root{
  /* ---- palette (lifted 1:1 from the reference) ---- */
  --ink:        #050b1a;
  --navy:       #152869;
  --slate:      #33416e;
  --blue:       #3061ff;
  --peri:       #9cb3ff;
  --white:      #ffffff;
  --grey-100:   #ededed;
  --grey-300:   #c9ccd6;
  --grey-500:   #767676;
  --grey-600:   #595959;
  --grey-700:   #444444;
  --paper:      #f2f4f8;

  --panel-dark: linear-gradient(180deg, var(--ink) 34%, var(--navy) 100%);
  --grad-btn:   linear-gradient(90deg, var(--blue) 0%, var(--peri) 100%);

  --sans: "Geist", "Geist Placeholder", -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, sans-serif;

  /* ---- rhythm ---- */
  --radius-panel: 32px;
  --radius-card:  16px;
  --radius-btn:   8px;
  --maxw:  1225px;
  --gutter: clamp(1.25rem, 4vw, 1.5rem);
  --pad-y: clamp(4.5rem, 9vw, 7.5rem);   /* reference = 120px */

  --ease: cubic-bezier(.22,.61,.36,1);
  --ease-io: cubic-bezier(.4,0,.2,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--white); color:var(--grey-700);
  font-family:var(--sans); font-size:16px; line-height:1.5;
  font-feature-settings:'cv09' on,'cv03' on,'cv04' on,'cv11' on;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
h1,h2,h3,h4,p,figure,ul{ margin:0; }
ul{ list-style:none; padding:0; }
button{ font:inherit; color:inherit; }
:focus-visible{ outline:2px solid var(--peri); outline-offset:3px; border-radius:4px; }

/* Lenis */
html.lenis{ height:auto; }
.lenis.lenis-smooth{ scroll-behavior:auto !important; }
.lenis.lenis-stopped{ overflow:hidden; }

/* ==========================================================================
   TYPE RAMP  (exact ratios from the reference)
   ========================================================================== */
.t-h1{ font-weight:600; font-size:clamp(2.25rem,5.4vw,3.4375rem); line-height:1.1; letter-spacing:-.03em; }
.t-h2{ font-weight:700; font-size:clamp(2rem,5vw,4rem);           line-height:1.0;  letter-spacing:-.015em; }
.t-h3{ font-weight:700; font-size:clamp(1.6rem,3.6vw,3rem);       line-height:1.2;  letter-spacing:-.01em; }
.t-h4{ font-weight:400; font-size:clamp(1.35rem,2.4vw,2rem);      line-height:1.2; }
.t-stat{ font-weight:400; font-size:clamp(3rem,7vw,5rem);         line-height:1.1;  letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.t-lead{ font-size:clamp(1rem,1.35vw,1.125rem); line-height:1.6; }
.t-body{ font-size:1rem; line-height:1.6; }

/* the signature italic periwinkle phrase inside a heading */
.hl{ color:var(--peri); font-style:italic; }
.hl--navy{ color:var(--blue); font-style:italic; }

/* ==========================================================================
   LAYOUT: stacked rounded panels
   Each panel rides 32px up over the one before, so its rounded top corners
   reveal the colour underneath. That stack is the whole look.
   ========================================================================== */
.panel{
  position:relative;
  padding:var(--pad-y) var(--gutter);
  border-radius:var(--radius-panel) var(--radius-panel) 0 0;
  margin-top:calc(var(--radius-panel) * -1);
}
.panel--light{ background:var(--white); color:var(--grey-700); }
.panel--dark { background:var(--panel-dark); color:rgba(255,255,255,.78); }
.panel--paper{ background:var(--paper); color:var(--grey-700); }
.panel--flush{ margin-top:0; }
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; }
.wrap--narrow{ max-width:900px; }

/* ==========================================================================
   ATOMS
   ========================================================================== */
.eyebrow{
  display:inline-flex; align-items:center; gap:.5rem;
  padding:4px 8px; border-radius:4px;
  font-size:.875rem; font-weight:500; line-height:1.5;
}
.eyebrow--dark{ background:rgba(255,255,255,.12); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); color:#fff; }
.eyebrow--light{ background:var(--paper); color:var(--grey-700); }
.eyebrow .dot{ width:6px;height:6px;border-radius:50%; background:var(--peri); flex:none; }
.eyebrow--light .dot{ background:var(--blue); }

/* buttons: overflow:hidden + doubled label = the roll-up hover */
.btn{
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  min-height:48px; padding:12px 24px; border:0; border-radius:var(--radius-btn);
  font-size:1rem; font-weight:500; text-decoration:none; cursor:pointer;
  overflow:hidden; transition:transform .3s var(--ease), box-shadow .3s var(--ease), background-color .3s var(--ease);
}
.btn:hover{ transform:translateY(-2px); }
.btn__roll{ display:grid; overflow:hidden; line-height:1.5; }
.btn__roll > span{ grid-area:1/1; transition:transform .45s var(--ease-io); white-space:nowrap; }
.btn__roll > span:last-child{ transform:translateY(115%); }
.btn:hover .btn__roll > span:first-child{ transform:translateY(-115%); }
.btn:hover .btn__roll > span:last-child{ transform:translateY(0); }
.btn svg{ flex:none; transition:transform .35s var(--ease); }
.btn:hover svg{ transform:translateX(3px); }

.btn--primary{ background-image:var(--grad-btn); color:var(--ink); font-weight:600; }
.btn--primary:hover{ box-shadow:0 14px 34px -12px rgba(48,97,255,.65); }
.btn--ghost{ background:transparent; color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.28); }
.btn--ghost:hover{ background:rgba(255,255,255,.08); box-shadow:inset 0 0 0 1px rgba(255,255,255,.5); }
.btn--white{ background:#fff; color:var(--navy); font-weight:600; }
.btn--white:hover{ box-shadow:0 14px 34px -14px rgba(5,11,26,.5); }
.btn--outline-navy{ background:transparent; color:var(--navy); box-shadow:inset 0 0 0 1px rgba(21,40,105,.22); }
.btn--outline-navy:hover{ background:var(--paper); box-shadow:inset 0 0 0 1px rgba(21,40,105,.4); }

.txtlink{
  display:inline-flex; align-items:center; gap:.45rem;
  font-weight:600; font-size:.95rem; text-decoration:none; color:var(--blue);
}
.txtlink svg{ transition:transform .35s var(--ease); }
.txtlink:hover svg{ transform:translateX(4px); }
.txtlink--light{ color:var(--peri); }

/* section head block */
.shead{ display:flex; flex-direction:column; align-items:flex-start; gap:1.25rem; max-width:820px; }
.shead .t-h2{ margin-top:.25rem; }
.shead--center{ margin-inline:auto; align-items:center; text-align:center; }

/* ==========================================================================
   SCROLL REVEAL: opacity 0 + translateY(80px), exactly as the reference
   ========================================================================== */
[data-reveal]{ opacity:0; transform:translateY(80px); }
.is-in[data-reveal]{
  opacity:1; transform:none;
  transition:opacity .9s var(--ease), transform .9s var(--ease);
  transition-delay:var(--d,0ms);
}
@media (prefers-reduced-motion:reduce){
  [data-reveal]{ opacity:1 !important; transform:none !important; transition:none !important; }
  .marquee__track{ animation:none !important; }
  .btn:hover{ transform:none; }
}

/* ==========================================================================
   NAV
   ========================================================================== */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:100;
  padding:1rem var(--gutter);
  transition:transform .5s var(--ease), padding .4s var(--ease);
}
.nav__inner{
  max-width:var(--maxw); margin-inline:auto; min-height:64px;
  display:flex; align-items:center; gap:1.5rem;
  padding:.6rem .75rem .6rem 1.25rem; border-radius:999px;
  background:transparent; box-shadow:inset 0 0 0 1px transparent;
  transition:background .45s var(--ease), box-shadow .45s var(--ease), backdrop-filter .45s var(--ease);
}
.nav.is-stuck .nav__inner{
  background:rgba(5,11,26,.72); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.10), 0 18px 40px -24px rgba(5,11,26,.9);
}
.nav.is-hidden{ transform:translateY(-130%); }
.nav__logo img{ height:64px; width:auto; }
.nav__links{ display:flex; align-items:center; gap:1.75rem; margin-left:auto; }
.nav__links a{
  position:relative; text-decoration:none; color:rgba(255,255,255,.82);
  font-size:.95rem; font-weight:500; padding:.35rem 0; transition:color .3s var(--ease);
}
.nav__links a::after{
  content:""; position:absolute; left:0; right:100%; bottom:0; height:1px;
  background:var(--peri); transition:right .35s var(--ease);
}
.nav__links a:hover{ color:#fff; }
.nav__links a:hover::after{ right:0; }
.nav__cta{ min-height:44px; padding:10px 20px; font-size:.92rem; }
.nav__burger{
  display:none; width:44px;height:44px; border:0; border-radius:999px; background:rgba(255,255,255,.1);
  align-items:center; justify-content:center; cursor:pointer; margin-left:auto;
}
.nav__burger span{ display:block; width:18px; height:1.5px; background:#fff; border-radius:2px; position:relative; transition:transform .35s var(--ease), opacity .2s; }
.nav__burger span::before,.nav__burger span::after{ content:""; position:absolute; left:0; width:18px; height:1.5px; background:#fff; border-radius:2px; transition:transform .35s var(--ease); }
.nav__burger span::before{ top:-6px; } .nav__burger span::after{ top:6px; }
body.menu-open .nav__burger span{ background:transparent; }
body.menu-open .nav__burger span::before{ transform:translateY(6px) rotate(45deg); }
body.menu-open .nav__burger span::after{ transform:translateY(-6px) rotate(-45deg); }

.mobile-menu{
  position:fixed; inset:0; z-index:99; background:var(--ink);
  display:flex; flex-direction:column; justify-content:center; gap:.25rem;
  padding:6rem var(--gutter) 3rem;
  opacity:0; visibility:hidden; transform:translateY(-2%);
  transition:opacity .45s var(--ease), transform .45s var(--ease), visibility .45s;
}
body.menu-open .mobile-menu{ opacity:1; visibility:visible; transform:none; }
.mobile-menu a{
  font-size:clamp(1.75rem,8vw,2.5rem); font-weight:600; letter-spacing:-.02em;
  color:#fff; text-decoration:none; padding:.5rem 0; border-bottom:1px solid rgba(255,255,255,.08);
}
.mobile-menu .btn{ margin-top:2rem; align-self:flex-start; }
.mobile-menu__meta{ margin-top:auto; padding-top:2rem; color:rgba(255,255,255,.5); font-size:.9rem; display:flex; flex-direction:column; gap:.4rem; }
.mobile-menu__meta a{ font-size:1rem; font-weight:500; border:0; padding:0; color:var(--peri); }

/* ==========================================================================
   HERO
   ========================================================================== */
.hero{
  position:relative; background:var(--ink); color:#fff; overflow:hidden;
  padding:clamp(8rem,15vw,12.5rem) var(--gutter) clamp(4rem,8vw,6.5rem);
}
.hero__glow{ position:absolute; border-radius:50%; filter:blur(90px); pointer-events:none; }
.hero__glow--a{ width:60vw;height:60vw; max-width:820px;max-height:820px; top:-22%; right:-14%; background:radial-gradient(closest-side, rgba(48,97,255,.42), transparent 70%); animation:drift 22s ease-in-out infinite; }
.hero__glow--b{ width:46vw;height:46vw; max-width:620px;max-height:620px; bottom:-28%; left:-12%; background:radial-gradient(closest-side, rgba(21,40,105,.85), transparent 70%); animation:drift 28s ease-in-out infinite reverse; }
@keyframes drift{ 0%,100%{transform:translate3d(0,0,0) scale(1);} 50%{transform:translate3d(-4%,3%,0) scale(1.07);} }
.hero__grid-lines{
  position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size:88px 88px;
  mask-image:radial-gradient(ellipse 80% 60% at 50% 40%, #000 20%, transparent 78%);
  -webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 40%, #000 20%, transparent 78%);
}
.hero__inner{ position:relative; z-index:2; max-width:var(--maxw); margin-inline:auto; display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:clamp(2.5rem,5vw,4.5rem); align-items:center; }
.hero__copy{ display:flex; flex-direction:column; gap:1.5rem; align-items:flex-start; max-width:36rem; }
.hero__copy .t-lead{ color:rgba(255,255,255,.72); max-width:34rem; }
.hero__ctas{ display:flex; flex-wrap:wrap; gap:.75rem; }


.proof__faces{ display:flex; }
.proof__faces span{
  width:44px;height:44px;border-radius:50%; margin-left:-12px;
  display:grid;place-items:center; font-size:.8rem; font-weight:600; color:#fff;
  box-shadow:0 0 0 2px var(--ink);
}
.proof__faces span:first-child{ margin-left:0; }
.proof__meta{ display:flex; flex-direction:column; gap:.15rem; }
.proof__stars{ display:flex; gap:2px; color:var(--peri); }
.proof__stars svg{ width:14px;height:14px; }
.proof__meta small{ font-size:.875rem; color:rgba(255,255,255,.66); }

.hero__media{ position:relative; }
.hero__portrait{
  position:relative; border-radius:24px; overflow:hidden; aspect-ratio:4/4.35; max-height:600px;
  box-shadow:0 40px 90px -40px rgba(0,0,0,.85), inset 0 0 0 1px rgba(255,255,255,.1);
}
.hero__portrait img{ width:100%;height:100%;object-fit:cover; object-position:center 18%; }
.hero__portrait::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, transparent 45%, rgba(5,11,26,.7) 100%); }
.glasscard{
  position:absolute; z-index:3;
  background:rgba(5,11,26,.80); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14), 0 22px 50px -26px rgba(0,0,0,.9);
  border-radius:14px; padding:.9rem 1.1rem; color:#fff;
}
.glasscard--a{ left:-1.5rem; bottom:16%; animation:float 7s ease-in-out infinite; }
.glasscard--b{ right:-1rem; top:9%;  animation:float 9s ease-in-out infinite reverse; }
@keyframes float{ 0%,100%{transform:translateY(0);} 50%{transform:translateY(-10px);} }
.glasscard .k{ display:block; font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:var(--peri); margin-bottom:.3rem; }
.glasscard .v{ font-size:1.35rem; font-weight:600; line-height:1.1; letter-spacing:-.02em; }
.glasscard .s{ font-size:.8rem; color:rgba(255,255,255,.62); }

/* ==========================================================================
   SERVICE ROWS
   ========================================================================== */
.srow{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(2rem,5vw,4.5rem); align-items:center; padding:clamp(2.5rem,5vw,4rem) 0; }
.srow + .srow{ border-top:1px solid rgba(21,40,105,.1); }
.srow:nth-child(even) .srow__media{ order:-1; }
.srow__copy{ display:flex; flex-direction:column; gap:1.25rem; align-items:flex-start; }
.srow__copy .t-h3{ color:var(--slate); }
.srow__copy p{ color:var(--grey-600); max-width:34rem; }
.checks{ display:flex; flex-direction:column; gap:.9rem; margin:.25rem 0 .5rem; }
.checks li{ display:grid; grid-template-columns:22px 1fr; gap:.75rem; align-items:start; font-size:.98rem; color:var(--grey-600); line-height:1.55; }
.checks .tick{
  width:22px;height:22px;border-radius:50%; margin-top:1px;
  background:linear-gradient(135deg, rgba(48,97,255,.14), rgba(156,179,255,.22));
  display:grid;place-items:center; color:var(--blue);
}
.checks .tick svg{ width:12px;height:12px; }
.srow__media{ position:relative; border-radius:20px; overflow:hidden; aspect-ratio:5/4; box-shadow:0 34px 70px -40px rgba(5,11,26,.55); }
.srow__media img{ width:100%;height:100%;object-fit:cover; transition:transform 1.1s var(--ease); }
.srow__media:hover img{ transform:scale(1.045); }
.srow__badge{
  position:absolute; left:1rem; bottom:1rem; z-index:2;
  background:rgba(5,11,26,.66); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  color:#fff; font-size:.8rem; font-weight:500; padding:.45rem .8rem; border-radius:999px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16);
}

/* ==========================================================================
   DATA / CHARTS
   ========================================================================== */
.samplechip{
  display:inline-flex; align-items:center; gap:.5rem; font-size:.78rem; font-weight:500;
  padding:.35rem .7rem; border-radius:999px; color:var(--peri);
  background:rgba(156,179,255,.1); box-shadow:inset 0 0 0 1px rgba(156,179,255,.28);
}








@keyframes fadeUp{ from{opacity:0; transform:translateY(18px);} to{opacity:1;transform:none;} }




.plan--flag{ background:linear-gradient(180deg, rgba(48,97,255,.20), rgba(255,255,255,.05)); box-shadow:inset 0 0 0 1px rgba(156,179,255,.45); }
.plan__flag{ position:absolute; top:-11px; left:1.25rem; font-size:.7rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--ink); background-image:var(--grad-btn); padding:.25rem .6rem; border-radius:999px; }
.plan__carrier{ font-size:.75rem; letter-spacing:.14em; text-transform:uppercase; color:var(--peri); }
.plan__name{ font-size:1.2rem; font-weight:600; color:#fff; line-height:1.25; letter-spacing:-.01em; }
.plan__price{ display:flex; align-items:baseline; gap:.35rem; color:#fff; }
.plan__price b{ font-size:2.5rem; font-weight:500; letter-spacing:-.03em; line-height:1; font-variant-numeric:tabular-nums; }
.plan__price span{ font-size:.85rem; color:rgba(255,255,255,.6); }
.plan__rows{ display:flex; flex-direction:column; gap:.6rem; margin-top:.15rem; }
.plan__rows div{ display:flex; justify-content:space-between; gap:1rem; font-size:.875rem; padding-bottom:.6rem; border-bottom:1px solid rgba(255,255,255,.09); }
.plan__rows div:last-child{ border-bottom:0; padding-bottom:0; }
.plan__rows dt,.plan__rows .k{ color:rgba(255,255,255,.6); }
.plan__rows .v{ color:#fff; font-weight:500; font-variant-numeric:tabular-nums; text-align:right; }







.bar__top{ display:flex; justify-content:space-between; align-items:baseline; gap:1rem; margin-bottom:.45rem; }
.bar__label{ font-size:.9rem; color:rgba(255,255,255,.8); }
.bar__val{ font-size:.9rem; font-weight:600; color:#fff; font-variant-numeric:tabular-nums; }
.bar__track{ height:9px; border-radius:999px; background:rgba(255,255,255,.09); overflow:hidden; }
.bar__fill{
  height:100%; width:0; border-radius:999px; background-image:var(--grad-btn);
  transition:width 1.3s var(--ease); transition-delay:var(--d,0ms);
}
.is-in .bar__fill{ width:var(--w); }





.is-in .donut .seg{ stroke-dasharray:var(--dash); }





.footnote{ font-size:.8rem; color:rgba(255,255,255,.45); line-height:1.6; margin-top:1.5rem; max-width:70ch; }
.footnote--dk{ color:var(--grey-500); }

/* ==========================================================================
   PROCESS TIMELINE
   ========================================================================== */
.proc{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(2rem,5vw,4.5rem); align-items:start; }
.proc__head{ position:sticky; top:118px; }
.proc .steps{ margin-top:0; }
@media (max-width:1024px){
  .proc{ grid-template-columns:1fr; }
  .proc__head{ position:static; }
  .proc .steps{ margin-top:clamp(2rem,4vw,3rem); }
}
.steps{ position:relative; display:flex; flex-direction:column; gap:clamp(2rem,4vw,3.25rem); margin-top:clamp(2.5rem,5vw,4rem); padding-left:clamp(2.75rem,5vw,4.5rem); }
.steps::before{ content:""; position:absolute; left:clamp(15px,2.2vw,23px); top:8px; bottom:8px; width:2px; background:rgba(21,40,105,.12); border-radius:2px; }
.steps__prog{ position:absolute; left:clamp(15px,2.2vw,23px); top:8px; width:2px; border-radius:2px; background:linear-gradient(180deg,var(--blue),var(--peri)); height:0; transition:height .2s linear; }
.step{ position:relative; display:grid; gap:.65rem; }
.step__num{
  position:absolute; left:calc(clamp(2.75rem,5vw,4.5rem) * -1); top:-2px;
  width:clamp(32px,4.4vw,48px); height:clamp(32px,4.4vw,48px); border-radius:50%;
  display:grid;place-items:center; font-size:.85rem; font-weight:600;
  background:#fff; color:var(--navy); box-shadow:inset 0 0 0 2px rgba(21,40,105,.14);
  transition:background .5s var(--ease), color .5s var(--ease), box-shadow .5s var(--ease);
}
.step.is-active .step__num{ background-image:var(--grad-btn); color:var(--ink); box-shadow:0 0 0 6px rgba(48,97,255,.12); }
.step h3{ font-size:clamp(1.25rem,2.4vw,1.75rem); font-weight:600; color:var(--navy); letter-spacing:-.02em; }
.step p{ color:var(--grey-600); max-width:52ch; }
.step .when{ font-size:.8rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--blue); }

/* ==========================================================================
   STATS
   ========================================================================== */
.statgrid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; background:rgba(255,255,255,.12); border-radius:var(--radius-card); overflow:hidden; margin-top:clamp(2.5rem,5vw,3.5rem); }
.statcell{ background:var(--ink); padding:clamp(1.5rem,3vw,2.25rem); display:flex; flex-direction:column; gap:.4rem; min-height:190px; justify-content:flex-end; }
.statcell .t-stat{ color:#fff; }
.statcell .t-stat em{ font-style:normal; color:var(--peri); }
.statcell p{ font-size:.95rem; color:rgba(255,255,255,.62); max-width:26ch; }
.statcell--wide{ grid-column:span 2; background:linear-gradient(120deg, rgba(48,97,255,.16), var(--ink) 62%); }
.statcell--cta{
  grid-column:span 3; text-decoration:none; justify-content:center; gap:.7rem;
  background:linear-gradient(120deg, rgba(48,97,255,.22), var(--ink) 70%);
  transition:background .5s var(--ease);
}
.statcell--cta:hover{ background:linear-gradient(120deg, rgba(48,97,255,.34), var(--ink) 72%); }
.statcell--cta .k{ font-size:clamp(1.35rem,2.4vw,1.9rem); font-weight:600; color:#fff; letter-spacing:-.02em; line-height:1.2; }
.statcell--cta .txtlink{ margin-top:.35rem; }

/* ==========================================================================
   MARQUEES
   ========================================================================== */
.marquee{ position:relative; overflow:hidden; -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); }
.marquee__track{ display:flex; width:max-content; gap:.75rem; animation:slide var(--dur,42s) linear infinite; }
.marquee--rev .marquee__track{ animation-direction:reverse; }
.marquee:hover .marquee__track{ animation-play-state:paused; }
@keyframes slide{ to{ transform:translateX(-50%); } }

.carrier{
  display:inline-flex; align-items:center; justify-content:center; gap:.6rem; white-space:nowrap;
  padding:.75rem 1.5rem; min-height:64px; min-width:150px; border-radius:999px;
  font-size:1rem; font-weight:600; letter-spacing:-.01em;
  background:#fff; color:var(--navy);
  box-shadow:0 10px 30px -18px rgba(0,0,0,.7);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
}
.carrier:hover{ transform:translateY(-3px); box-shadow:0 16px 38px -18px rgba(0,0,0,.85); }
/* real carrier logos, normalised by aspect ratio so each reads with the same
   optical weight: a square lockup needs more height than a wide wordmark */
.carrier img{ width:auto; max-width:150px; object-fit:contain; display:block; }
.carrier img[data-size="tall"]{ height:42px; }   /* ar < 2.2  stacked lockup */
.carrier img[data-size="med"] { height:33px; }   /* ar 2.2-3.5              */
.carrier img[data-size="wide"]{ height:25px; }   /* ar > 3.5  wordmark       */
/* when a logo is present its text label steps aside */
.carrier:has(img) .carrier__name{
  position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap;
}


.tcard__stars{ display:flex; gap:2px; color:var(--blue); }
.tcard__stars svg{ width:15px;height:15px; }

.tcard__who{ display:flex; align-items:center; gap:.75rem; padding-top:1rem; border-top:1px solid rgba(21,40,105,.08); }
.tcard__who .av{ width:42px;height:42px;border-radius:50%; display:grid;place-items:center; color:#fff; font-size:.85rem; font-weight:600; flex:none; }
.tcard__who b{ display:block; font-size:.95rem; font-weight:600; color:var(--navy); }
.tcard__who small{ font-size:.82rem; color:var(--grey-500); }

/* ==========================================================================
   ENROLLMENT CALENDAR
   ========================================================================== */
.cal{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:1rem; margin-top:clamp(2.25rem,4vw,3rem); }
.calcard{
  display:flex; flex-direction:column; gap:.7rem; padding:1.5rem; border-radius:var(--radius-card);
  background:rgba(255,255,255,.05); box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
}
.calcard:hover{ transform:translateY(-5px); box-shadow:inset 0 0 0 1px rgba(156,179,255,.4); }
.calcard--now{ background:linear-gradient(180deg, rgba(48,97,255,.2), rgba(255,255,255,.05)); box-shadow:inset 0 0 0 1px rgba(156,179,255,.5); }
.calcard .tag{ font-size:.7rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--peri); display:flex; align-items:center; gap:.4rem; }
.calcard .tag .live{ width:7px;height:7px;border-radius:50%; background:#5ee08a; box-shadow:0 0 0 0 rgba(94,224,138,.6); animation:pulse 2.2s infinite; }
@keyframes pulse{ 70%{box-shadow:0 0 0 8px rgba(94,224,138,0);} 100%{box-shadow:0 0 0 0 rgba(94,224,138,0);} }
.calcard h4{ font-size:1.1rem; font-weight:600; color:#fff; letter-spacing:-.01em; }
.calcard .dates{ font-size:1.5rem; font-weight:500; color:#fff; letter-spacing:-.02em; line-height:1.15; }
.calcard p{ font-size:.875rem; color:rgba(255,255,255,.6); line-height:1.55; }

/* ==========================================================================
   FAQ
   ========================================================================== */
.faq{ margin-top:clamp(2.25rem,4vw,3rem); border-top:1px solid rgba(21,40,105,.12); }
.faq details{ border-bottom:1px solid rgba(21,40,105,.12); }
.faq summary{
  list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
  padding:1.4rem 0; font-size:clamp(1.05rem,2vw,1.3rem); font-weight:600; color:var(--navy); letter-spacing:-.01em;
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary .ic{ width:32px;height:32px;border-radius:50%; flex:none; display:grid;place-items:center; background:var(--paper); color:var(--blue); transition:transform .4s var(--ease), background .4s var(--ease); }
.faq details[open] summary .ic{ transform:rotate(45deg); background:var(--blue); color:#fff; }
.faq .ans{ overflow:hidden; }
.faq .ans p{ padding:0 0 1.5rem; color:var(--grey-600); max-width:70ch; }

/* ==========================================================================
   CONTACT
   ========================================================================== */
.contact{ display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(2rem,4vw,3.5rem); align-items:start; margin-top:clamp(2.5rem,5vw,3.5rem); }
.form{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.field{ display:flex; flex-direction:column; gap:.45rem; }
.field--full{ grid-column:1/-1; }
.field label{ font-size:.82rem; font-weight:500; color:rgba(255,255,255,.66); letter-spacing:.02em; }
.field input,.field select,.field textarea{
  width:100%; font:inherit; font-size:.95rem; color:#fff;
  background:rgba(255,255,255,.06); border:0; box-shadow:inset 0 0 0 1px rgba(255,255,255,.16);
  border-radius:var(--radius-btn); padding:.85rem 1rem; min-height:48px;
  transition:box-shadow .3s var(--ease), background .3s var(--ease);
}
.field textarea{ resize:vertical; min-height:120px; }
.field select{ appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239cb3ff' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 1rem center; background-size:16px; padding-right:2.75rem; }
.field select option{ background:var(--ink); color:#fff; }
.field input::placeholder,.field textarea::placeholder{ color:rgba(255,255,255,.35); }
.field input:focus,.field select:focus,.field textarea:focus{ outline:none; background:rgba(255,255,255,.1); box-shadow:inset 0 0 0 1px var(--peri); }
.form .btn{ grid-column:1/-1; justify-self:start; }
.form__note{ grid-column:1/-1; font-size:.82rem; color:rgba(255,255,255,.45); line-height:1.55; }

.ccards{ display:flex; flex-direction:column; gap:1rem; }
.ccard{
  display:flex; flex-direction:column; gap:.5rem; padding:24px; border-radius:var(--radius-card);
  background:#fff; text-decoration:none; color:var(--navy);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
  box-shadow:0 22px 50px -34px rgba(0,0,0,.6);
}
.ccard:hover{ transform:translateY(-5px); box-shadow:0 30px 60px -32px rgba(0,0,0,.75); }
.ccard .ic{ width:38px;height:38px;border-radius:10px; background:var(--paper); display:grid;place-items:center; color:var(--blue); margin-bottom:.35rem; }
.ccard .ic svg{ width:18px;height:18px; }
.ccard h3{ font-size:clamp(1.15rem,2vw,1.4rem); font-weight:400; color:var(--navy); letter-spacing:-.01em; }
.ccard span{ font-size:1rem; font-weight:600; color:var(--slate); }
.ccard small{ font-size:.85rem; color:var(--grey-500); line-height:1.5; }

/* ==========================================================================
   FOOTER
   ========================================================================== */
.foot{ background:linear-gradient(180deg,var(--ink) 0%,var(--navy) 100%); color:rgba(255,255,255,.75); padding:clamp(2.5rem,5vw,3rem) var(--gutter) 1rem; position:relative; overflow:hidden; }
.foot__grid{ max-width:var(--maxw); margin-inline:auto; display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:clamp(1.75rem,4vw,3rem); padding-bottom:clamp(2rem,4vw,3rem); }
.foot__brand img{ height:54px; width:auto; margin-bottom:1.25rem; }
.foot__brand p{ font-size:.95rem; line-height:1.65; color:rgba(255,255,255,.66); max-width:32ch; }
.foot__social{ display:flex; gap:.5rem; margin-top:1.5rem; }
.foot__social a{ width:38px;height:38px;border-radius:9px; display:grid;place-items:center; color:rgba(255,255,255,.8); background:rgba(255,255,255,.07); box-shadow:inset 0 0 0 1px rgba(255,255,255,.12); transition:background .3s var(--ease), transform .3s var(--ease), color .3s var(--ease); }
.foot__social a:hover{ background:rgba(255,255,255,.15); color:#fff; transform:translateY(-2px); }
.foot__social svg{ width:16px;height:16px; }
.foot__col h4{ font-size:1.5rem; font-weight:400; color:#fff; letter-spacing:-.01em; margin-bottom:1.25rem; }
.foot__col li + li{ margin-top:.7rem; }
.foot__col a{ font-size:.95rem; color:rgba(255,255,255,.66); text-decoration:none; transition:color .3s var(--ease); }
.foot__col a:hover{ color:#fff; }
.foot__col address{ font-style:normal; font-size:.95rem; line-height:1.65; color:rgba(255,255,255,.66); }

/* the ghost wordmark */
.foot__mark{ max-width:var(--maxw); margin:clamp(1rem,3vw,2rem) auto 0; }
.foot__mark p{
  font-weight:400; text-transform:uppercase; letter-spacing:.02em; line-height:.8;
  white-space:nowrap; margin:0; font-size:100px; display:inline-block; /* JS fits this to the container */
  background-image:linear-gradient(0deg, rgba(5,20,26,.10) 0%, rgba(255,255,255,.10) 90%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
  user-select:none;
}
.foot__bottom{
  max-width:var(--maxw); margin-inline:auto; margin-top:clamp(1rem,2vw,1.5rem);
  border-top:1px solid rgba(255,255,255,.12); padding:1.25rem 0;
  display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap;
  font-size:.82rem; color:rgba(255,255,255,.5);
}
.foot__bottom strong{ color:rgba(255,255,255,.8); font-weight:600; }
.foot__bottom .dis{ max-width:62ch; line-height:1.55; }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width:1024px){
  .hero__inner{ grid-template-columns:1fr; gap:3rem; }
  .hero__media{ max-width:480px; }

  .contact{ grid-template-columns:1fr; }
  .foot__grid{ grid-template-columns:1fr 1fr; }
  .statgrid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .statcell--wide{ grid-column:span 2; }
  .statcell--cta{ grid-column:span 2; }
}
@media (max-width:860px){
  .nav__logo img{ height:52px; }
  .nav__links{ display:none; }
  .nav__cta{ display:none; }
  .nav__burger{ display:flex; }
  .srow{ grid-template-columns:1fr; gap:2rem; }
  .srow:nth-child(even) .srow__media{ order:0; }
  .glasscard--a{ left:.5rem; } .glasscard--b{ right:.5rem; }
  .form{ grid-template-columns:1fr; }
}
@media (max-width:620px){
  :root{ --radius-panel:24px; }
  .statgrid{ grid-template-columns:1fr; }
  .statcell{ min-height:150px; }
  .statcell--wide{ grid-column:span 1; }
  .statcell--cta{ grid-column:span 1; }
  .foot__grid{ grid-template-columns:1fr; }

  .foot__bottom{ flex-direction:column; align-items:flex-start; }
  .proof__faces span{ width:38px;height:38px; margin-left:-8px; font-size:.72rem; }
}


/* ==========================================================================
   SITEWIDE CHROME  (added when the header/footer became global Elementor
   templates). On the front page the nav floats transparent over the dark hero.
   On every other page it needs its own ground and the content must clear it.
   ========================================================================== */
/* No padding-top here. Reserving space for the fixed nav left a white band
   above every interior hero. The nav is position:fixed on EVERY page, so it
   costs no layout height, and .pagehero carries its own clearance instead.
   The dark hero now runs to the top of the viewport, same as the home page. */
body:not(.home){ background:var(--white); }
body:not(.home) .nav__inner{
  background:rgba(5,11,26,.86); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.10), 0 18px 40px -24px rgba(5,11,26,.9);
}
body:not(.home) .nav{ position:fixed; }
/* Elementor canvas/containers must not clip the full-bleed panels */
.elementor-location-header,.elementor-location-footer{ position:relative; z-index:60; }
.elementor-location-footer .e-con,.elementor-location-footer .e-con-inner,
.elementor-location-header .e-con,.elementor-location-header .e-con-inner{
  max-width:none !important; padding:0 !important; margin:0 !important;
}



/* ==========================================================================
   V2 PAGE BODY INSIDE ELEMENTOR
   Elementor cages page content in a max-width container. The V2 panels are
   full-bleed by design, so unset it, scoped to a wrapper we control.
   ========================================================================== */
.sgv2-page{ width:100%; }
.e-con:has(.sgv2-page), .e-con-inner:has(.sgv2-page),
.elementor-widget-html:has(.sgv2-page),
.elementor-widget-html:has(.sgv2-page) > .elementor-widget-container{
  max-width:none !important; width:100% !important; padding:0 !important; margin:0 !important;
}
/* belt and braces for engines without :has() */
body.home .e-con, body.home .e-con-inner{ max-width:none !important; padding-inline:0 !important; }
body.home .elementor-widget-html > .elementor-widget-container{ padding:0 !important; }

/* ==========================================================================
   KIT NEUTRALISER  +  WHITE BUTTON LABELS
   Elementor Kit 11 still carries the retired V1 brand: Playfair on every
   heading, #0B2545 heading colour, #133B5C on every link, a navy button.
   Its selectors (.elementor-kit-11 h1) outrank plain V2 classes, which is why
   the hero H1 rendered as a dark serif. This file loads after the kit, so
   MATCHING its specificity is enough. No !important anywhere.
   ========================================================================== */
.elementor-kit-11 h1,.elementor-kit-11 h2,.elementor-kit-11 h3,
.elementor-kit-11 h4,.elementor-kit-11 h5,.elementor-kit-11 h6{
  font-family:var(--sans); color:inherit;
}
.elementor-kit-11 .t-h1{ font-weight:600; }
.elementor-kit-11 .t-h2{ font-weight:700; }
.elementor-kit-11 .t-h3{ font-weight:700; }
.elementor-kit-11 .t-h4{ font-weight:400; }
.elementor-kit-11 .step h3,.elementor-kit-11 .calcard h4,
.elementor-kit-11 .ccard h3,.elementor-kit-11 .foot__col h4,
.elementor-kit-11 .faq summary{ font-weight:600; }
.elementor-kit-11 .ccard h3,.elementor-kit-11 .foot__col h4{ font-weight:400; }
.elementor-kit-11 a{ color:inherit; }
.elementor-kit-11 button,.elementor-kit-11 input[type="button"],
.elementor-kit-11 input[type="submit"],.elementor-kit-11 .elementor-button{
  background-color:transparent; font-family:var(--sans); color:inherit; font-weight:inherit;
}

/* White labels, per client direction. White on the original periwinkle end of
   the gradient measured 2.04, so the gradient is darkened to keep the label
   readable: worst point is now 4.67, which clears AA. */
:root{ --grad-btn: linear-gradient(90deg, #1f43b3 0%, #3d68f5 100%); }
.elementor-kit-11 .btn--primary,.btn--primary{ color:#fff; font-weight:600; }
.elementor-kit-11 .btn--ghost,.btn--ghost{
  color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);
}
.elementor-kit-11 .btn--ghost:hover,.btn--ghost:hover{
  background:rgba(255,255,255,.12); box-shadow:inset 0 0 0 1px #fff;
}
.elementor-kit-11 .btn--white,.btn--white{ color:var(--navy); }
.elementor-kit-11 .btn--outline-navy,.btn--outline-navy{ color:var(--navy); }
.elementor-kit-11 .txtlink,.txtlink{ color:var(--peri); }
.elementor-kit-11 .txtlink--dark,.panel--light .txtlink{ color:var(--blue); }
.elementor-kit-11 .statcell--cta .txtlink{ color:var(--peri); }

/* ==========================================================================
   INTERIOR PAGE COMPONENTS
   Used by About / Services / Medicare / Health / ACA / Contact so every page
   composes from the same system instead of re-declaring styles.
   ========================================================================== */
/* Floor is set by the fixed nav: 104px desktop / 88px mobile, plus breathing room. */
.pagehero{ padding-top:clamp(9.5rem,11vw,10.5rem); border-radius:0; margin-top:0; }
.pagehero .srow{ align-items:center; }
.pagehero .t-h1{ font-size:clamp(2rem,4.4vw,3rem); }

.v2cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:1rem; margin-top:clamp(2rem,4vw,3rem); }
.v2card{ padding:clamp(1.5rem,2.6vw,2rem); border-radius:var(--radius-card);
  display:flex; flex-direction:column; gap:.7rem;
  transition:transform .45s var(--ease), box-shadow .45s var(--ease); }
.v2card h3{ font-size:clamp(1.1rem,1.9vw,1.35rem); font-weight:600; letter-spacing:-.01em; line-height:1.3; }
.v2card p{ font-size:.96rem; line-height:1.6; margin:0; }
.v2card--dark{ background:rgba(255,255,255,.05); box-shadow:inset 0 0 0 1px var(--hairline, rgba(255,255,255,.12)); }
.v2card--dark h3{ color:#fff; } .v2card--dark p{ color:rgba(255,255,255,.68); }
.v2card--dark:hover{ transform:translateY(-5px); box-shadow:inset 0 0 0 1px rgba(156,179,255,.4); }
.v2card--light{ background:#fff; box-shadow:inset 0 0 0 1px rgba(21,40,105,.10), var(--shadow-card, 0 22px 50px -34px rgba(5,11,26,.35)); }
.v2card--light h3{ color:var(--navy); } .v2card--light p{ color:var(--grey-600); }
.v2card--light:hover{ transform:translateY(-5px); }
.panel--light .v2card--light{ background:var(--paper); }

/* ==========================================================================
   NAV / BUTTON / ICON FIXES
   The kit neutraliser sets `.elementor-kit-11 a{color:inherit}`, which the nav
   links were inheriting as muted. Pin them solid white above that rule.
   ========================================================================== */
.elementor-kit-11 .nav__links a,.nav__links a{ color:#fff; font-weight:500; }
.elementor-kit-11 .nav__links a:hover,.nav__links a:hover{ color:var(--peri); }
.elementor-kit-11 .mobile-menu a,.mobile-menu a{ color:#fff; }
.elementor-kit-11 .nav__logo,.nav__logo{ color:#fff; }

/* Ghost button: fill solid blue on hover, label stays white. */
.elementor-kit-11 .btn--ghost,.btn--ghost{
  color:#fff; background:transparent; box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);
  transition:background .3s var(--ease), box-shadow .3s var(--ease), transform .3s var(--ease), color .3s var(--ease);
}
.elementor-kit-11 .btn--ghost:hover,.btn--ghost:hover{
  background:var(--blue); color:#fff; box-shadow:inset 0 0 0 1px var(--blue), var(--shadow-btn, 0 14px 34px -12px rgba(48,97,255,.65));
}
.elementor-kit-11 .btn--outline-navy:hover,.btn--outline-navy:hover{
  background:var(--navy); color:#fff; box-shadow:inset 0 0 0 1px var(--navy);
}

/* ==========================================================================
   BRANDED ICON TILE
   Rounded-square tile with a white stroke glyph. Used on Contact and anywhere
   a list needs a visual anchor.
   ========================================================================== */
.v2icon{
  width:56px; height:56px; border-radius:16px; flex:none;
  display:grid; place-items:center;
  background:linear-gradient(140deg, var(--blue) 0%, var(--navy) 100%);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16), 0 10px 26px -14px rgba(48,97,255,.8);
  color:#fff;
}
.v2icon svg{ width:24px; height:24px; stroke:currentColor; fill:none;
  stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.v2icon--light{ background:linear-gradient(140deg,#e8edff 0%,#cfd9ff 100%); color:var(--navy);
  box-shadow:inset 0 0 0 1px rgba(21,40,105,.12); }
.panel--light .v2icon--sm,.v2icon--sm{ width:44px;height:44px;border-radius:13px; }
.v2icon--sm svg{ width:19px;height:19px; }

/* contact tiles */
.ctiles{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:1rem;
  margin-top:clamp(2rem,4vw,3rem); }
.ctile{ display:flex; flex-direction:column; gap:.9rem; padding:1.75rem; border-radius:var(--radius-card);
  text-decoration:none; background:rgba(255,255,255,.05);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease); }
.ctile:hover{ transform:translateY(-5px); box-shadow:inset 0 0 0 1px rgba(156,179,255,.45); }
.ctile h3{ font-size:1.05rem; font-weight:600; color:#fff; margin:0; }
.ctile .val{ font-size:1.05rem; font-weight:600; color:var(--peri); word-break:break-word; }
.ctile p{ font-size:.9rem; line-height:1.55; color:rgba(255,255,255,.62); margin:0; }

/* ==========================================================================
   MOBILE MENU
   The big link rule was also hitting the CTA, which is why "Get a quote"
   rendered enormous. Scope the display size to real nav links only.
   ========================================================================== */
.elementor-kit-11 .mobile-menu a,.mobile-menu a{ color:#fff; }
.elementor-kit-11 .mobile-menu a:hover,.mobile-menu a:hover{ color:var(--peri); }
.mobile-menu > a:not(.btn){
  font-size:clamp(1.5rem,6.5vw,2.1rem); font-weight:600; letter-spacing:-.02em;
  padding:.55rem 0; border-bottom:1px solid rgba(255,255,255,.10);
}
.elementor-kit-11 .mobile-menu .btn,.mobile-menu .btn{
  font-size:.95rem; font-weight:600; line-height:1.5;
  padding:14px 30px; min-height:52px; margin-top:2rem;
  align-self:flex-start; border-bottom:0; color:#fff;
}
.mobile-menu .btn .btn__roll > span{ font-size:.95rem; letter-spacing:0; }
.mobile-menu__meta a{ font-size:1rem !important; font-weight:500; border-bottom:0; padding:0; color:var(--peri); }
.mobile-menu__meta span{ color:rgba(255,255,255,.55); }

/* ==========================================================================
   PROSE  (sitemap, privacy, terms, accessibility, cookie)
   Long-form text pages. Typography only, so legal wording is never touched.
   ========================================================================== */
.prose{ max-width:76ch; }
.prose h2{ font-size:clamp(1.4rem,2.6vw,1.9rem); font-weight:700; color:var(--navy);
  letter-spacing:-.02em; line-height:1.25; margin:2.5rem 0 .85rem; }
.prose h3{ font-size:clamp(1.1rem,2vw,1.35rem); font-weight:600; color:var(--slate);
  margin:2rem 0 .6rem; }
.prose h4{ font-size:1.02rem; font-weight:600; color:var(--slate); margin:1.5rem 0 .5rem; }
.prose p,.prose li{ font-size:1rem; line-height:1.7; color:var(--grey-600); margin:0 0 1rem; }
.prose ul,.prose ol{ padding-left:1.25rem; margin:0 0 1.25rem; }
.prose ul{ list-style:disc; } .prose ol{ list-style:decimal; }
.prose li{ margin:0 0 .5rem; }
.prose li::marker{ color:var(--blue); }
.prose a{ color:var(--blue); font-weight:500; text-decoration:underline;
  text-underline-offset:3px; text-decoration-thickness:1px; }
.prose a:hover{ color:var(--navy); }
.prose strong,.prose b{ color:var(--navy); font-weight:600; }
.prose hr{ border:0; border-top:1px solid rgba(21,40,105,.12); margin:2.5rem 0; }
.prose table{ width:100%; border-collapse:collapse; margin:0 0 1.5rem; font-size:.95rem; }
.prose th,.prose td{ text-align:left; padding:.7rem .75rem; border-bottom:1px solid rgba(21,40,105,.12); }
.prose th{ color:var(--navy); font-weight:600; }
.prose__links{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.75rem;
  list-style:none; padding:0; margin-top:1.5rem; }
.prose__links li{ margin:0; }
.prose__links a{ display:block; padding:1rem 1.15rem; border-radius:var(--radius-btn);
  background:var(--paper); text-decoration:none; font-weight:600; color:var(--navy);
  box-shadow:inset 0 0 0 1px rgba(21,40,105,.10);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease); }
.prose__links a:hover{ transform:translateY(-3px); box-shadow:inset 0 0 0 1px var(--blue); }

/* ==========================================================================
   CANVAS PAGES
   `body:not(.home)` gives interior pages 104px of clearance for the fixed nav.
   Canvas templates render NO nav, so that padding showed as a white band above
   /connect/. Elementor tags them with .elementor-template-canvas.
   ========================================================================== */
body.elementor-template-canvas{ padding-top:0; background:var(--ink); }
body.elementor-template-canvas .nav{ display:none; }

/* ==========================================================================
   CONTRAST FIXES  (found by pages/audit_contrast.py, which walks every page
   and resolves the EFFECTIVE background before judging)
   Root cause in most cases: a component designed for a dark panel was reused
   on a light one, so white text landed on white. Each now has both variants.
   ========================================================================== */

/* -- contact tiles: white-on-white on a light panel (cr 1.00) -------------- */
.panel--light .ctile,.ctile--light{
  background:var(--paper); box-shadow:inset 0 0 0 1px rgba(21,40,105,.10);
}
.panel--light .ctile:hover,.ctile--light:hover{
  box-shadow:inset 0 0 0 1px var(--blue); transform:translateY(-5px);
}
.elementor-kit-11 .panel--light .ctile h3,.panel--light .ctile h3{ color:var(--navy); }
.elementor-kit-11 .panel--light .ctile .val,.panel--light .ctile .val{
  color:#1f43b3;                    /* darker blue, was periwinkle at cr 2.04 */
  font-size:.94rem; overflow-wrap:anywhere; line-height:1.4;
}
.panel--light .ctile p{ color:var(--grey-600); }

/* -- white contact cards: force navy regardless of the panel they sit on --- */
.elementor-kit-11 .ccard,.ccard{ color:var(--navy); }
.elementor-kit-11 .ccard h3,.ccard h3{ color:var(--navy); }
.elementor-kit-11 .ccard span,.ccard span{ color:#1f43b3; font-size:.95rem;
  overflow-wrap:anywhere; line-height:1.4; }
.elementor-kit-11 .ccard small,.ccard small{ color:var(--grey-600); }

/* -- ghost button is white-on-white when a CTA band is light (cr 1.00) ----- */
.panel--light .btn--ghost,.elementor-kit-11 .panel--light .btn--ghost{
  color:var(--navy); box-shadow:inset 0 0 0 1px rgba(21,40,105,.3);
}
.panel--light .btn--ghost:hover,.elementor-kit-11 .panel--light .btn--ghost:hover{
  background:var(--navy); color:#fff; box-shadow:inset 0 0 0 1px var(--navy);
}

/* -- disclaimers were too faint to read (cr 3.93) -------------------------- */
.footnote{ color:rgba(255,255,255,.62); }
.panel--light .footnote,.footnote--dk{ color:var(--grey-600); }
.bio__tpmo,.bio__foot{ color:rgba(255,255,255,.6); }

/* -- cookie banner button ships at cr 2.88 from the plugin ----------------- */
.cn-set-cookie,button.cn-set-cookie,a.cn-set-cookie{
  background:var(--blue) !important; color:#fff !important; font-weight:600 !important;
}

/* -- the closed mobile menu must not be reachable or audited -------------- */
.mobile-menu{ visibility:hidden; }
body.menu-open .mobile-menu{ visibility:visible; }

/* -- SMS opt-in consent row (A2P 10DLC) ----------------------------------- */
/* Added 2026-08-27 with the GoHighLevel bridge. The checkbox gates whether a
   phone number is allowed to leave the browser at all, so it has to read as a
   deliberate choice, not fine print. */
.form__consent{
  grid-column:1/-1; display:flex; align-items:flex-start; gap:.7rem;
  font-size:.8rem; line-height:1.55; color:rgba(255,255,255,.6);
  padding:14px 16px; border-radius:12px;
  background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.09);
  cursor:pointer;
}
.form__consent:hover{ background:rgba(255,255,255,.06); }
.form__consent input[type="checkbox"]{
  flex:0 0 auto; width:18px; height:18px; margin-top:.12rem;
  accent-color:var(--peri); cursor:pointer;
}
.form__consent a{ color:var(--peri); text-decoration:underline; text-underline-offset:2px; }
.form__consent strong{ color:rgba(255,255,255,.82); font-weight:600; }

/* Honeypot: reachable by bots, invisible and skipped by people. */
.form__hp{
  position:absolute !important; left:-9999px !important;
  width:1px; height:1px; overflow:hidden;
}

/* -- footer legal row ----------------------------------------------------- */
/* Added 2026-08-27. A2P reviewers look for the privacy policy from the page,
   not just at a direct URL - these four pages existed but were orphaned. */
.foot__legal{ flex-basis:100%; order:-1; line-height:1.8; }
.foot__legal a{ color:rgba(255,255,255,.62); text-decoration:none; transition:color .3s var(--ease); }
.foot__legal a:hover{ color:#fff; text-decoration:underline; text-underline-offset:2px; }
