/* Finsherpa v3 skin — QUANTIX-inspired (Behance 251273047) cinematic dark fintech,
   locked to Finsherpa brand colors: night navy ground, warm paper type, signal red accent, gold stars.
   Type: Inter Tight (deliberate stand-in for the reference's HelveticaNeueCyr).
   Same class vocabulary as v2 so all pages share this skin. */
:root{
  --bg:oklch(0.15 0.028 262);            /* near-black navy page ground */
  --bg-2:oklch(0.19 0.035 262);          /* raised surface */
  --card:oklch(0.21 0.04 262);           /* card */
  --glass:oklch(0.24 0.045 262 / .55);   /* translucent glass card */
  --line:oklch(0.34 0.04 262 / .7);      /* hairline borders */
  --line-soft:oklch(0.30 0.04 262 / .5);
  --text:oklch(0.965 0.008 85);          /* warm paper */
  --text-2:oklch(0.82 0.02 250);         /* secondary */
  --dim:oklch(0.55 0.02 258);            /* dimmed headline word / muted */
  --red:oklch(0.55 0.185 27);
  --red-bright:oklch(0.62 0.19 27);
  --red-deep:oklch(0.46 0.16 27);
  --gold:oklch(0.78 0.11 80);
  --ice:oklch(0.88 0.035 245);
  --night:oklch(0.26 0.055 262);
  --paper:oklch(0.965 0.008 85);
  --ink:oklch(0.24 0.045 262);
  --ink-soft:var(--text-2);              /* v2 alias used by inline styles */
  --sans:"Inter Tight","Helvetica Neue",Helvetica,Arial,sans-serif;
  --ease:cubic-bezier(0.16,1,0.3,1);
  --r:20px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0; background:var(--bg); color:var(--text);
  font-family:var(--sans); font-size:16.5px; line-height:1.6; font-weight:400;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img{max-width:100%; display:block;}
a{color:inherit;}
.wrap{max-width:1240px; margin:0 auto; padding:0 clamp(20px,4vw,52px);}
.center{text-align:center;}
.muted{color:var(--dim);}

/* eyebrow / kicker */
.eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-size:11.5px; font-weight:600; letter-spacing:.24em; text-transform:uppercase;
  color:var(--text-2); margin:0 0 22px;
}
.eyebrow .dot{width:6px; height:6px; border-radius:50%; background:var(--red);}

/* buttons — pills. Primary (paper on dark) mirrors the reference's white pill;
   .btn-red is the accent pill for nav + forms. */
.btn{
  display:inline-flex; align-items:center; gap:9px;
  font-family:var(--sans); font-weight:600; font-size:13px;
  letter-spacing:.14em; text-transform:uppercase; text-decoration:none;
  background:var(--paper); color:var(--ink);
  padding:15px 28px; border-radius:999px; white-space:nowrap;
  border:none; cursor:pointer;
  transition:transform .18s var(--ease), background .18s var(--ease), color .18s var(--ease);
}
.btn::after{content:"→"; font-size:13px; transition:transform .18s var(--ease);}
.btn:hover{transform:translateY(-1px); background:#ffffff;}
.btn:hover::after{transform:translateX(3px);}
.btn:active{transform:translateY(1px) scale(.98);}
.btn.no-arrow::after{content:none;}
.btn.btn-red, .lead-form .btn, .gate .btn{background:var(--red); color:var(--paper);}
.btn.btn-red:hover, .lead-form .btn:hover, .gate .btn:hover{background:var(--red-bright);}
.btn.on-light-alt{background:var(--night); color:var(--paper);}
.btn-ghost{
  display:inline-flex; align-items:center; gap:8px;
  font-weight:500; font-size:13px; letter-spacing:.12em; text-transform:uppercase; text-decoration:none;
  padding:14px 26px; border-radius:999px; white-space:nowrap;
  border:1px solid var(--line); color:var(--text-2); background:transparent;
  transition:border-color .18s var(--ease), color .18s var(--ease);
}
.btn-ghost:hover{border-color:var(--text-2); color:var(--text);}
.btn:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
  outline:2px solid var(--ice); outline-offset:3px;
}
.quiet{font-weight:600; color:var(--red-bright); text-decoration:none;}
.quiet:hover{text-decoration:underline; text-underline-offset:4px;}

/* ============ HEADER ============ */
/* Static (not sticky): the header scrolls away with the page.
   LIGHT BAND: the header is the one paper-ground surface at the top of the dark
   page, so the blue-on-white official logo sits on its own natural ground
   instead of punching a white plate out of a navy bar. The dark-skin tokens are
   re-pointed to paper values *on this element only*, so every rule below
   (nav links, login menu, mobile panel, toggle) re-themes without duplication. */
header.site{
  position:sticky; top:0; z-index:50;
  backdrop-filter:saturate(1.4) blur(14px); -webkit-backdrop-filter:saturate(1.4) blur(14px);
  --bg:rgb(247 245 241 / .86);           /* paper, translucent over the blur */
  --bg-2:#ffffff;                        /* dropdown surface */
  --card:oklch(0.93 0.012 85);           /* hover fill on paper */
  --text:oklch(0.24 0.045 262);          /* navy ink */
  --text-2:oklch(0.44 0.03 262);         /* secondary ink */
  --dim:oklch(0.58 0.025 262);
  --line:oklch(0.24 0.045 262 / .26);
  --line-soft:oklch(0.24 0.045 262 / .16);
  background:var(--bg);
  border-bottom:1px solid var(--line-soft);
}
/* --ice focus ring is invisible on paper — use the signal red instead. */
header.site a:focus-visible, header.site button:focus-visible{outline-color:var(--red);}
/* padding-block only — shorthand `padding:15px 0` would zero .wrap's side padding
   (the element is class="wrap nav" and .nav wins the cascade). */
.nav{display:flex; align-items:center; gap:26px; padding-block:17px; color:var(--text);}
.brand{display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--text); margin-right:auto; line-height:1.1;}
.brand .peak{color:var(--red); font-size:18px;}
.brand b{font-weight:800; font-size:17px; letter-spacing:.14em;}
.brand b::after{
  content:"HELPING YOU REACH YOUR FINANCIAL PEAK";
  display:block; font-weight:500; font-size:7.5px; letter-spacing:.22em; color:var(--dim); margin-top:2px;
}
.nav-links{display:flex; gap:28px; align-items:center;}
.nav-links a{font-size:14px; font-weight:500; text-decoration:none; color:var(--text-2); position:relative; transition:color .15s;}
.nav-links a:hover{color:var(--text);}
.nav-links a.active{color:var(--text);}
.nav-links a.active::after{
  content:""; position:absolute; left:50%; transform:translateX(-50%);
  bottom:-8px; width:4px; height:4px; border-radius:50%; background:var(--red);
}
.login{position:relative;}
.login > button{
  background:none; border:1px solid var(--line); color:var(--text-2);
  font-family:var(--sans); font-size:13px; font-weight:500;
  padding:9px 18px; border-radius:999px; cursor:pointer;
}
.login > button:hover{border-color:var(--text-2); color:var(--text);}
.login-menu{
  position:absolute; right:0; top:calc(100% + 10px); min-width:190px;
  background:var(--bg-2); border:1px solid var(--line); border-radius:16px;
  padding:6px; display:none; flex-direction:column;
  box-shadow:0 20px 44px -18px oklch(0.24 0.045 262 / .3);
}
.login.open .login-menu{display:flex;}
.login-menu a{font-size:14px; padding:10px 14px; border-radius:10px; text-decoration:none; color:var(--text-2);}
.login-menu a:hover{background:var(--card); color:var(--text);}
/* The default .btn is a paper pill — invisible on the paper header, so the nav
   CTA takes the signal-red treatment instead. */
.nav .btn{padding:11px 22px; font-size:11.5px; background:var(--red); color:var(--paper);}
.nav .btn:hover{background:var(--red-bright);}
.menu-toggle{display:none; background:none; border:1px solid var(--line); color:var(--text); border-radius:999px; padding:8px 14px; font-size:15px; cursor:pointer;}
@media (max-width:980px){
  .nav-links{
    display:none; position:absolute; left:0; right:0; top:100%;
    background:var(--bg); border-bottom:1px solid var(--line);
    flex-direction:column; align-items:flex-start; padding:18px clamp(20px,4vw,52px) 22px; gap:18px;
    box-shadow:0 24px 40px -24px oklch(0.24 0.045 262 / .35);
  }
  .nav-links.open{display:flex;}
  .menu-toggle{display:block;}
  .nav{gap:12px;}
  .nav .btn{padding:9px 16px; font-size:11px;}
  .brand b{font-size:15px;}
  .brand b::after{display:none;}
}

/* ============ HOME HERO (QUANTIX pattern) ============ */
.hero-v3{position:relative; overflow:hidden; background:var(--bg);}
.hero-v3 .visual{
  position:absolute; top:0; right:0; bottom:0; width:min(62vw,980px);
  z-index:0; pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg, transparent 0%, #000 28%);
  mask-image:linear-gradient(90deg, transparent 0%, #000 28%);
}
.hero-v3 .visual svg{width:100%; height:100%; display:block;}
.hero-v3 .wrap{position:relative; z-index:2; padding-top:clamp(56px,9vh,110px); padding-bottom:clamp(40px,5vh,64px);}
.display{
  font-weight:700; text-transform:uppercase;
  font-size:clamp(46px,7.6vw,104px); line-height:.98; letter-spacing:-.028em;
  margin:0 0 30px; max-width:12ch;
}
.display .row{display:block;}
.display .row.mid{display:flex; align-items:center; gap:clamp(14px,2vw,26px); flex-wrap:wrap;}
.display .dim{color:var(--dim);}
.display .btn{flex:0 0 auto; letter-spacing:.16em;}
.hero-sub{font-size:clamp(16px,1.7vw,19px); line-height:1.65; color:var(--text-2); max-width:44ch; margin:0;}
.hero-sub b{color:var(--text); font-weight:600;}
/* floating glass cards */
.hero-cards{
  position:relative; z-index:2;
  display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr) minmax(0,1.1fr);
  gap:clamp(12px,1.6vw,20px);
  padding-top:clamp(36px,5vw,60px); padding-bottom:clamp(48px,7vw,84px);
}
@media (max-width:980px){.hero-cards{grid-template-columns:1fr 1fr;}}
@media (max-width:640px){.hero-cards{grid-template-columns:1fr;}}
.gcard{
  background:var(--glass); border:1px solid var(--line-soft); border-radius:var(--r);
  padding:22px 24px; backdrop-filter:blur(14px) saturate(1.15);
  display:flex; flex-direction:column; gap:6px; text-decoration:none;
  transition:border-color .2s var(--ease), transform .25s var(--ease);
}
a.gcard:hover{border-color:var(--line); transform:translateY(-3px);}
.gcard .g-label{font-size:11px; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--dim);}
.gcard .g-big{font-weight:700; font-size:clamp(26px,2.8vw,38px); letter-spacing:-.02em; line-height:1.05; font-variant-numeric:tabular-nums;}
.gcard .g-big .u{color:var(--red-bright);}
.gcard .g-sub{font-size:13.5px; color:var(--text-2);}
.gcard .g-link{margin-top:auto; padding-top:10px; font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--red-bright);}
.gcard.split{flex-direction:row; align-items:center; justify-content:space-between; gap:16px;}
.gcard.split .g-half b{display:block; font-weight:700; font-size:clamp(17px,1.6vw,21px); letter-spacing:-.01em; white-space:nowrap;}
.gcard.split .g-half span{font-size:12px; color:var(--text-2);}
.gcard.split .g-divider{width:1px; align-self:stretch; background:var(--line-soft);}
.gcard .g-stars{color:var(--gold); letter-spacing:2px; font-size:13px;}
.gcard p.g-copy{margin:2px 0 0; font-size:14.5px; line-height:1.55; color:var(--text-2);}
.gcard p.g-copy b{color:var(--text); font-weight:600;}
.gcard .g-press{display:flex; align-items:center; gap:18px; margin-top:auto; padding-top:12px;}
/* invert flips the logos' white boxes to black; screen blend then dissolves the black
   into the dark card, leaving only light marks. */
.gcard .g-press img{height:20px; width:auto; filter:grayscale(1) invert(1) brightness(1.15) contrast(1.05); mix-blend-mode:screen; opacity:.8;}

/* ============ SUBPAGE HERO ============ */
.page-hero{position:relative; overflow:hidden; background:var(--bg); color:var(--text);}
.page-hero .glow{position:absolute; width:520px; height:520px; border-radius:50%; filter:blur(100px); pointer-events:none; z-index:0;}
.page-hero .glow.a{background:oklch(0.55 0.185 27 / .13); top:-200px; right:-100px;}
.page-hero .glow.b{background:oklch(0.35 0.09 262 / .5); bottom:-240px; left:-160px;}
.page-hero .wrap{position:relative; z-index:2; padding-top:clamp(52px,8vh,92px); padding-bottom:clamp(56px,8vh,96px); text-align:left;}
.page-hero .eyebrow{color:var(--text-2);}
.page-hero h1{
  font-weight:700; text-transform:uppercase; letter-spacing:-.025em; line-height:1.0;
  font-size:clamp(38px,6vw,84px); margin:0 0 22px; max-width:16ch;
}
.page-hero h1 .tone{color:var(--dim);}
.page-hero .lead{font-size:clamp(16px,1.8vw,19px); line-height:1.65; color:var(--text-2); max-width:56ch; margin:0;}
.page-hero .lead b{color:var(--text); font-weight:600;}
.hero-ridge{position:absolute; left:0; right:0; bottom:0; width:100%; height:auto; opacity:.35; z-index:1; pointer-events:none;}

/* ============ MOTION ============ */
@media (prefers-reduced-motion: no-preference){
  .rise{opacity:0; transform:translateY(28px); animation:rise .85s var(--ease) forwards;}
  .rise.d1{animation-delay:.05s;} .rise.d2{animation-delay:.16s;} .rise.d3{animation-delay:.3s;}
  .rise.d4{animation-delay:.45s;} .rise.d5{animation-delay:.6s;}
  @keyframes rise{to{opacity:1; transform:none;}}
  .js .rv{opacity:0; transform:translateY(26px);
    transition:opacity .75s var(--ease), transform .75s var(--ease);
    transition-delay:var(--rvd,0s);}
  .js .rv.inview{opacity:1; transform:none;}
  .page-hero .glow.a, .hero-v3 .glow.a{animation:drift 18s ease-in-out infinite alternate;}
  .page-hero .glow.b, .hero-v3 .glow.b{animation:drift 22s ease-in-out infinite alternate-reverse;}
  @keyframes drift{from{transform:translate(0,0);} to{transform:translate(-70px,44px);}}
  /* NOTE: never animate .ridge-glow — its strokes carry an SVG feGaussianBlur filter,
     and animating opacity forces the blur to re-render every frame (severe scroll jank). */
}
@media (prefers-reduced-motion: reduce){
  *{transition-duration:0s !important; animation-duration:0s !important; animation-iteration-count:1 !important;}
  html{scroll-behavior:auto;}
}

/* ============ TRUST STRIP ============ */
.trust{padding:20px 0; border-top:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); background:var(--bg);}
.trust .wrap{display:flex; align-items:center; justify-content:center; gap:clamp(20px,4vw,56px); flex-wrap:wrap;}
.trust .t-item{display:flex; align-items:center; gap:10px; font-size:13px; letter-spacing:.02em; color:var(--text-2);}
.trust .t-item b{color:var(--text); font-weight:600;}
.trust .stars-line{color:var(--gold); letter-spacing:2px; font-size:13px;}
.trust img{height:22px; width:auto; filter:grayscale(1) invert(.85) brightness(1.4); opacity:.7;}

/* ============ SECTIONS ============ */
section{padding:clamp(84px,11vw,150px) 0; scroll-margin-top:calc(var(--hdr-h, 79px) + 16px);}
h2{
  font-weight:650; letter-spacing:-.025em; line-height:1.04;
  font-size:clamp(32px,4.4vw,56px); margin:0 0 18px; text-wrap:balance;
}
h2 .tone{color:var(--dim);}
.section-head{max-width:64ch; margin:0 auto clamp(44px,6vw,68px);}
.section-intro{font-size:clamp(16px,1.7vw,18.5px); color:var(--text-2); max-width:56ch; margin:0 auto;}

/* camp cards */
.camp-cards{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,2vw,22px);}
@media (max-width:880px){.camp-cards{grid-template-columns:1fr;}}
.camp-card{
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r);
  padding:32px 30px 34px;
}
.camp-card .chip, .svc .chip{
  display:inline-flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:600; color:var(--red-bright); letter-spacing:.2em;
  border:1px solid oklch(0.55 0.185 27 / .5); border-radius:999px; padding:6px 16px; margin-bottom:20px;
  font-variant-numeric:tabular-nums;
}
.camp-card h3{font-weight:650; font-size:clamp(21px,2.2vw,26px); letter-spacing:-.02em; margin:0 0 10px;}
.camp-card p{margin:0; color:var(--text-2); font-size:15px;}
.camp-card p b{color:var(--text); font-weight:600;}

/* flagship gradient panel */
.flagship{
  border-radius:calc(var(--r) + 8px); overflow:hidden; color:var(--text);
  border:1px solid var(--line-soft);
  background:
    radial-gradient(760px 460px at 92% -10%, oklch(0.42 0.14 27 / .32), transparent 60%),
    radial-gradient(600px 400px at -5% 110%, oklch(0.32 0.08 262 / .6), transparent 55%),
    linear-gradient(150deg, var(--bg-2) 30%, oklch(0.23 0.05 262) 100%);
  padding:clamp(38px,5vw,68px);
  display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(30px,5vw,64px); align-items:center;
}
@media (max-width:900px){.flagship{grid-template-columns:1fr;}}
.flagship h2{margin-bottom:16px;}
.flagship .lead{color:var(--text-2); font-size:16px; max-width:46ch; margin:0 0 26px;}
.checks{list-style:none; margin:0 0 32px; padding:0; display:grid; gap:14px;}
.checks li{display:flex; gap:13px; align-items:flex-start; font-size:15px; color:var(--text-2);}
.checks li b{color:var(--text); font-weight:600;}
.checks .ck{
  flex:0 0 22px; height:22px; border-radius:50%; background:var(--red);
  display:inline-flex; align-items:center; justify-content:center; margin-top:1px;
  color:var(--paper); font-size:11px; font-weight:800;
}
.flagship .panel{
  background:var(--paper); color:var(--ink);
  border-radius:var(--r); padding:28px 30px;
  box-shadow:0 40px 90px -30px rgb(0 0 0 / .8);
}
.flagship .panel .p-num{font-weight:750; font-size:clamp(36px,4vw,50px); letter-spacing:-.03em; color:var(--red); font-variant-numeric:tabular-nums; line-height:1;}
.flagship .panel .p-cap{font-size:13.5px; color:oklch(0.45 0.03 262); margin:6px 0 18px;}
.flagship .panel .p-row{display:flex; justify-content:space-between; gap:14px; padding:12px 0; border-top:1px solid oklch(0.88 0.012 85); font-size:14px;}
.flagship .panel .p-row b{font-variant-numeric:tabular-nums; font-weight:650;}
.flagship .panel .btn{margin-top:20px; width:100%; justify-content:center; background:var(--night); color:var(--paper);}
.flagship .panel .btn:hover{background:oklch(0.32 0.07 262);}

/* who grid */
.who-grid{display:grid; grid-template-columns:repeat(6,1fr); gap:clamp(12px,1.6vw,20px);}
.who-card{
  grid-column:span 2; background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r);
  padding:30px 28px 32px; text-decoration:none;
  transition:transform .25s var(--ease), border-color .25s var(--ease);
  display:flex; flex-direction:column; gap:8px;
}
.who-card:nth-child(1), .who-card:nth-child(2){grid-column:span 3;}
.who-card:hover{transform:translateY(-4px); border-color:var(--line);}
.who-card.dark{
  background:
    radial-gradient(400px 260px at 90% 0%, oklch(0.42 0.14 27 / .3), transparent 60%),
    var(--bg-2);
}
.who-card.tint{background:oklch(0.23 0.045 262);}
.who-card h3{font-weight:650; font-size:clamp(19px,2vw,24px); letter-spacing:-.02em; margin:0; display:flex; justify-content:space-between; align-items:center; gap:12px;}
.who-card h3 .arr{color:var(--red-bright); font-size:19px; transition:transform .2s var(--ease);}
.who-card:hover h3 .arr{transform:translateX(4px);}
.who-card p{margin:0; font-size:14px; color:var(--text-2);}
@media (max-width:880px){
  .who-grid{grid-template-columns:1fr;}
  .who-card, .who-card:nth-child(1), .who-card:nth-child(2){grid-column:1;}
}

/* proof */
.proof-grid{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(14px,2vw,22px); align-items:stretch;}
@media (max-width:900px){.proof-grid{grid-template-columns:1fr;}}
.testimonial-card{
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r);
  padding:clamp(28px,3.5vw,44px); display:flex; flex-direction:column;
}
.t-stars{color:var(--gold); letter-spacing:3px; font-size:15px; margin-bottom:20px;}
.testimonial-card blockquote{
  margin:0 0 26px; font-size:clamp(18px,2vw,23px); line-height:1.5; font-weight:450; letter-spacing:-.01em; color:var(--text);
}
.t-person{display:flex; align-items:center; gap:14px; margin-top:auto;}
.t-person img{width:50px; height:50px; border-radius:50%; object-fit:cover;}
.t-person b{display:block; font-size:15px; font-weight:650;}
.t-person span{font-size:13px; color:var(--text-2);}
.t-nav{display:flex; gap:10px; margin-top:24px;}
.t-nav[hidden]{display:none;}
.t-nav button{
  width:52px; height:52px; border-radius:50%; font-size:22px; line-height:1;
  background:none; border:1px solid var(--line); color:var(--text);
  cursor:pointer; transition:background .15s var(--ease), border-color .15s var(--ease), opacity .15s;
}
.t-nav button:disabled{opacity:.32; cursor:default;}
.t-nav button:hover:not(:disabled){background:var(--bg-2); border-color:var(--text-2);}
.stats-col{display:grid; gap:clamp(12px,1.6vw,18px);}
.stat-card{
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r); padding:26px 28px;
}
.stat-card.accent{
  background:
    radial-gradient(360px 220px at 90% -10%, oklch(0.42 0.14 27 / .4), transparent 60%),
    var(--bg-2);
}
.stat-card b{font-weight:700; font-size:clamp(30px,3.2vw,42px); letter-spacing:-.03em; display:block; line-height:1.05; font-variant-numeric:tabular-nums;}
.stat-card.accent b{color:var(--gold);}
.stat-card span{font-size:13.5px; color:var(--text-2);}
.stat-card a{color:var(--red-bright) !important;}

/* learn cards */
.learn-cards{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(12px,1.6vw,20px);}
@media (max-width:880px){.learn-cards{grid-template-columns:1fr;}}
.learn-card{
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r); padding:28px;
  text-decoration:none; display:flex; flex-direction:column; gap:12px;
  transition:transform .25s var(--ease), border-color .25s var(--ease);
}
.learn-card:hover{transform:translateY(-4px); border-color:var(--line);}
.learn-card .kind{font-size:10.5px; font-weight:600; color:var(--red-bright); letter-spacing:.2em; text-transform:uppercase;}
.learn-card h3{font-weight:600; font-size:18px; letter-spacing:-.01em; line-height:1.4; margin:0; color:var(--text);}
.learn-card .go{margin-top:auto; font-size:12px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--dim);}
.learn-card:hover .go{color:var(--red-bright);}

/* ============ LIFE STAGES ============ */
.stages{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,2vw,22px); margin-top:clamp(36px,5vw,56px);}
@media (max-width:880px){.stages{grid-template-columns:1fr;}}
.stage{background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r); padding:32px 30px 34px;}
.stage.now{
  background:
    radial-gradient(420px 280px at 90% -10%, oklch(0.42 0.14 27 / .35), transparent 60%),
    var(--bg-2);
  border-color:oklch(0.55 0.185 27 / .35);
}
.stage .yrs{font-weight:700; font-size:clamp(30px,3.2vw,42px); letter-spacing:-.03em; line-height:1; font-variant-numeric:tabular-nums; color:var(--red-bright);}
.stage h3{font-weight:650; font-size:19px; margin:12px 0 8px;}
.stage p{margin:0; font-size:14.5px; color:var(--text-2);}
.stage .now-tag{display:inline-block; margin-top:16px; font-size:10.5px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--paper); background:var(--red); padding:6px 14px; border-radius:999px;}

/* ============ PROFILES ============ */
.profile{
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r);
  padding:clamp(28px,3.5vw,46px); margin-bottom:clamp(14px,2vw,20px);
  display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(24px,4vw,56px); align-items:start;
  scroll-margin-top:16px;
}
@media (max-width:860px){.profile{grid-template-columns:1fr; gap:14px;}}
.profile h3{font-weight:650; font-size:clamp(23px,2.6vw,32px); letter-spacing:-.025em; margin:0;}
.profile .hook{font-size:15px; color:var(--red-bright); font-weight:600; margin:12px 0 0;}
.profile .prose p{margin:0 0 14px; font-size:15.5px; color:var(--text-2); max-width:58ch;}
.profile .prose p:last-of-type{margin-bottom:0;}
.profile .prose b{color:var(--text); font-weight:600;}
.profile .prose a{color:var(--red-bright);}
.profile .links{margin-top:20px; display:flex; gap:10px; flex-wrap:wrap;}
.pill-link{
  display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase; text-decoration:none;
  color:var(--text-2); background:transparent; border:1px solid var(--line);
  padding:9px 18px; border-radius:999px; transition:border-color .15s, color .15s;
}
.pill-link::after{content:"→"; font-size:12px;}
.pill-link:hover{border-color:var(--red-bright); color:var(--red-bright);}

/* ============ SERVICES ============ */
.svc-list{display:grid; gap:clamp(14px,2vw,20px);}
.svc{
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r);
  padding:clamp(28px,3.5vw,46px); scroll-margin-top:16px;
  display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(24px,4vw,56px); align-items:start;
}
@media (max-width:860px){.svc{grid-template-columns:1fr; gap:14px;}}
.svc h3{font-weight:650; font-size:clamp(23px,2.6vw,32px); letter-spacing:-.025em; margin:0;}
.svc .what{font-size:15px; color:var(--red-bright); font-weight:600; margin:12px 0 0; max-width:34ch;}
.svc ul{list-style:none; margin:0 0 16px; padding:0; display:grid; gap:13px;}
.svc li{position:relative; padding-left:32px; font-size:15.5px; color:var(--text-2);}
.svc li::before{content:"✓"; position:absolute; left:0; top:1px; width:21px; height:21px; border-radius:50%; background:var(--red); color:var(--paper); font-size:10.5px; font-weight:800; display:flex; align-items:center; justify-content:center;}
.svc li a, .svc .for a{color:var(--red-bright); font-weight:600;}
.svc .for{font-size:14px; color:var(--dim); margin:0;}

/* ============ CALCULATOR ============ */
.calc-v2{padding-top:0;}
.calc-v2 .shell{
  border-radius:calc(var(--r) + 8px); overflow:hidden; color:var(--text);
  border:1px solid var(--line-soft);
  background:
    radial-gradient(760px 460px at 90% -5%, oklch(0.42 0.14 27 / .3), transparent 60%),
    linear-gradient(150deg, var(--bg-2) 30%, oklch(0.23 0.05 262) 100%);
  padding:clamp(36px,5vw,64px);
}
.calc-v2 .shell h2{margin-bottom:12px;}
.calc-v2 .shell .section-intro{color:var(--text-2); margin:0 0 clamp(28px,4vw,44px);}
.calc-grid{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(28px,5vw,64px); align-items:start;}
@media (max-width:860px){.calc-grid{grid-template-columns:1fr;}}
.calc-v2 .field{margin-bottom:26px;}
.calc-v2 label{display:flex; justify-content:space-between; gap:12px; font-size:14px; color:var(--text-2); margin-bottom:12px; font-weight:500;}
.calc-v2 output{font-weight:700; color:var(--text); font-variant-numeric:tabular-nums;}
.calc-v2 input[type=range]{width:100%; -webkit-appearance:none; appearance:none; height:5px; border-radius:999px; background:oklch(1 0 0 / .14); outline:none;}
.calc-v2 input[type=range]::-webkit-slider-thumb{-webkit-appearance:none; appearance:none; width:22px; height:22px; border-radius:50%; background:var(--red); cursor:pointer; border:3px solid var(--paper); box-shadow:0 2px 10px rgb(0 0 0 / .5);}
.calc-v2 input[type=range]::-moz-range-thumb{width:22px; height:22px; border:3px solid var(--paper); border-radius:50%; background:var(--red); cursor:pointer;}
.calc-note{font-size:12.5px; color:var(--dim); margin-top:16px; max-width:46ch;}
.calc-out{background:var(--paper); color:var(--ink); border-radius:var(--r); padding:28px 30px; box-shadow:0 40px 90px -30px rgb(0 0 0 / .8);}
.calc-out .row{display:flex; justify-content:space-between; gap:14px; align-items:baseline; padding:12px 0; border-top:1px solid oklch(0.88 0.012 85);}
.calc-out .row:first-child{border-top:none;}
.calc-out .row span{font-size:14px; color:oklch(0.45 0.03 262);}
.calc-out .row b{font-weight:650; font-size:clamp(18px,2vw,22px); font-variant-numeric:tabular-nums; white-space:nowrap;}
.calc-out .row.big b{color:var(--red); font-size:clamp(28px,3.4vw,40px); letter-spacing:-.02em;}
.calc-out .btn{margin-top:20px; width:100%; justify-content:center; background:var(--red); color:var(--paper);}
.calc-out .btn:hover{background:var(--red-bright);}
.calc-out .fine{font-size:11.5px; color:oklch(0.52 0.02 262); margin:14px 0 0;}

/* ============ FOUNDER / TEAM / VALUES ============ */
.founder-grid{display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(30px,5vw,68px); align-items:center;}
@media (max-width:860px){.founder-grid{grid-template-columns:1fr;}}
.founder-grid .fimg{width:100%; border-radius:var(--r); border:1px solid var(--line-soft); filter:saturate(.9) contrast(1.02);}
.founder-grid p{max-width:58ch; font-size:15.5px; color:var(--text-2);}
.founder-grid p b{color:var(--text);}
.founder-grid a{color:var(--red-bright); font-weight:600;}
.founder-grid h2{margin-bottom:8px;}
/* Founder note — the only portrait on About (client, 10 Oct 2026: the team is
   shown through the group photo alone). Photo beside the paragraph; stacks on phones. */
.founder-note{display:grid; grid-template-columns:minmax(150px,220px) minmax(0,1fr); gap:clamp(22px,3.4vw,40px);
  align-items:center; max-width:900px; margin:clamp(30px,4vw,46px) auto 0;}
.fn-photo{margin:0; text-align:center;}
.fn-photo img{display:block; width:100%; height:auto; aspect-ratio:1; object-fit:cover; border-radius:var(--r);
  border:1px solid var(--line-soft); filter:saturate(.9);}
.fn-photo figcaption{margin-top:12px;}
.fn-photo figcaption b{display:block; font-weight:650; font-size:15.5px; line-height:1.25;}
.fn-photo figcaption span{display:block; font-size:12.5px; line-height:1.35; color:var(--text-2); margin-top:3px;}
.fn-text p{font-size:15.5px; line-height:1.75; color:var(--text-2); margin:0;}
.fn-text b{color:var(--text); font-weight:650;}
@media (max-width:640px){
  .founder-note{grid-template-columns:1fr; justify-items:center;}
  .fn-photo{width:min(220px,70%);}
}
/* Six values, explicitly 3x2 — auto-fit would fit 4 across at 1240px and leave an
   orphan row of two. Stepped down to 2 up on tablet, 1 up on phone. */
.values-row{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,2vw,20px); margin-top:clamp(30px,4vw,48px);}
@media (max-width:980px){.values-row{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.values-row{grid-template-columns:1fr;}}



/* ============ COMPLIANCE BLOCK + FOOTER SOCIAL ============ */
.compliance{
  padding-block:22px; border-top:1px solid var(--line-soft);
  font-size:12.5px; line-height:1.65; color:var(--dim);
}
.comp-main{color:var(--text-2); font-size:13px; margin-bottom:10px;}
.comp-main b{color:var(--text); font-weight:650;}
.comp-main [data-arn="PENDING"]{opacity:.6; font-style:italic;}
.compliance p{margin:0 0 8px; max-width:none;}
.compliance p:last-child{margin-bottom:0;}
.compliance a{color:var(--text-2); text-decoration:underline; text-underline-offset:3px;}
.social{display:inline-flex; align-items:center; gap:6px;}
.social a{
  display:grid; place-items:center; width:34px; height:34px; border-radius:50%;
  color:var(--text-2); border:1px solid var(--line-soft);
  transition:color .15s var(--ease), border-color .15s var(--ease);
}
.social a:hover{color:var(--text); border-color:var(--line);}
.social svg{width:17px; height:17px;}

/* LinkedIn affordance (founder note) */
.tm-in{
  display:inline-flex; align-items:center; gap:6px; margin-top:9px;
  font-size:12px; font-weight:600; letter-spacing:.04em;
  color:var(--text-2); text-decoration:none;
  transition:color .15s var(--ease);
}
.tm-in svg{width:14px; height:14px;}
.tm-in:hover{color:var(--red-bright);}

/* ============ FAQ ============
   Native <details>/<summary> with name= for accordion behaviour — no JS, works
   before hydration, and is findable by the browser's own in-page search. */
.faq-list{max-width:860px; margin:clamp(30px,4vw,48px) auto 0; display:flex; flex-direction:column; gap:10px;}
.faq{
  background:var(--card); border:1px solid var(--line-soft); border-radius:16px;
  overflow:hidden; transition:border-color .2s var(--ease);
}
.faq[open]{border-color:var(--line);}
.faq summary{
  display:flex; align-items:flex-start; gap:14px; cursor:pointer;
  padding:20px clamp(20px,2.4vw,26px);
  font-size:clamp(16px,1.8vw,17.5px); font-weight:600; color:var(--text);
  list-style:none;
}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{
  content:"+"; margin-left:auto; flex:none;
  font-size:22px; font-weight:400; line-height:1; color:var(--red-bright);
  transition:transform .22s var(--ease);
}
.faq[open] summary::after{transform:rotate(45deg);}
.faq summary:hover{color:var(--text);}
.faq summary:focus-visible{outline:2px solid var(--ice); outline-offset:-2px;}
.faq-a{padding:0 clamp(20px,2.4vw,26px) 22px;}
.faq-a p{margin:0 0 12px; font-size:15px; line-height:1.68; color:var(--text-2);}
.faq-a p:last-child{margin-bottom:0;}
.faq-a ul{margin:0 0 12px; padding-left:20px;}
.faq-a li{font-size:15px; line-height:1.68; color:var(--text-2); margin:6px 0;}
.faq-a b{color:var(--text); font-weight:650;}
.faq-note{
  max-width:860px; margin:clamp(24px,3vw,32px) auto 0;
  font-size:13px; line-height:1.6; padding-top:18px; border-top:1px solid var(--line-soft);
}
@media (prefers-reduced-motion:reduce){.faq, .faq summary::after{transition:none;}}

/* ============ PRODUCT CARDS + PROCESS STEPS (CSS 3D) ============
   Same depth recipe as the stats tiles: GPU-composited transform on a face plus
   one blurred slab behind it. Tilt is pointer-gated so touch devices never pay
   for it. Shared rules first, then the two variants. */
.prod-grid, .steps3d{perspective:1200px;}
.prod-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:clamp(14px,2vw,22px); margin-top:clamp(30px,4vw,48px);}
.steps3d{
  display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,2vw,22px);
  margin:clamp(30px,4vw,48px) 0 0; padding:0; list-style:none; counter-reset:none;
}
@media (max-width:980px){.steps3d{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.steps3d{grid-template-columns:1fr;}}

.prod, .step3d{transform-style:preserve-3d;}
.prod-face, .step-face{
  position:relative; display:block; height:100%;
  padding:clamp(26px,3vw,34px);
  background:linear-gradient(155deg, var(--card), oklch(0.185 0.032 262));
  border:1px solid var(--line); border-radius:var(--r);
  transition:transform .4s var(--ease), border-color .4s var(--ease);
}
.prod-face::before, .step-face::before{
  content:""; position:absolute; inset:0; border-radius:var(--r);
  background:var(--red); opacity:.13;
  transform:translateZ(-34px) scale(.95); filter:blur(9px);
  transition:opacity .4s var(--ease);
}
.prod-face h3, .step-face h3{font-weight:650; font-size:clamp(19px,2.1vw,22px); letter-spacing:-.015em; margin:14px 0 10px;}
.prod-face p, .step-face p{font-size:14.5px; line-height:1.62; color:var(--text-2); margin:0;}
.step-n{
  display:inline-block; font-size:12px; font-weight:700; letter-spacing:.16em;
  color:var(--red-bright);
}
@media (hover:hover) and (pointer:fine){
  .prod:hover .prod-face, .step3d:hover .step-face{transform:rotateX(5deg) rotateY(-5deg) translateZ(12px); border-color:var(--red-deep);}
  .prod:hover .prod-face::before, .step3d:hover .step-face::before{opacity:.3;}
}
@media (prefers-reduced-motion:reduce){
  .prod-face, .step-face, .prod-face::before, .step-face::before{transition:none;}
  .prod:hover .prod-face, .step3d:hover .step-face{transform:none;}
}

/* ============ SERVICES CHECKBOX GROUP (lead forms) ============
   A real <fieldset>/<legend> so screen readers announce the group before the
   options. The native box is kept (not replaced with a pseudo-element) so it
   stays keyboard- and AT-native; only its accent colour is themed. */
/* The fieldset itself carries NO layout — a <legend> is rendered specially and
   is unreliable as a grid item, and CSS `columns` fragments the flex labels so
   their text paints outside its own box. The options live in their own plain
   <div>, which grids predictably. */
.svc-pick{border:none; margin:0; padding:6px 0 2px; min-width:0;}
.svc-pick legend{
  padding:0; margin-bottom:12px; width:100%;
  font-size:14px; font-weight:600; color:var(--text);
}
.svc-pick legend .opt{display:block; font-weight:400; font-size:13px; color:var(--text-2); margin-top:3px;}
.svc-opts{display:grid; grid-template-columns:1fr 1fr; gap:8px;}
@media (max-width:560px){.svc-opts{grid-template-columns:1fr;}}
.svc-opts label{
  display:flex; align-items:center; gap:10px; min-width:0;
  padding:11px 13px; border-radius:12px;
  border:1px solid var(--line-soft); background:oklch(1 0 0 / .03);
  font-size:14.5px; line-height:1.35; color:var(--text-2); cursor:pointer;
  transition:border-color .15s var(--ease), color .15s var(--ease);
}
.svc-opts label:hover{border-color:var(--line); color:var(--text);}
.svc-opts label span{flex:1; min-width:0;}   /* take the remaining width; wrap inside the box */
/* [type=checkbox] is load-bearing, not decoration: `.lead-form input` further down
   this file has identical specificity to a bare `.svc-opts input` and wins on
   source order, stretching the checkbox to the full field width (it sets
   width:100% for text inputs). The attribute selector outranks it outright. */
.svc-opts input[type="checkbox"]{
  width:17px; height:17px; min-width:0; flex:none; margin:0; padding:0;
  border-radius:4px; background:none;
  accent-color:var(--red); cursor:pointer;
}
.svc-opts label:has(input:checked){border-color:var(--red-deep); color:var(--text);}
.svc-opts label:has(input:focus-visible){outline:2px solid var(--ice); outline-offset:2px;}

/* ============ FLOATING ACTION STACK ============
   Bottom-left, opposite the chat launcher. Injected by site.js. */
.fab-stack{
  position:fixed; left:22px; bottom:22px; z-index:2147482000;
  display:flex; flex-direction:column-reverse; gap:12px;
}
.fab{
  position:relative; display:grid; place-items:center;
  width:52px; height:52px; border-radius:50%; border:none; cursor:pointer;
  color:var(--paper); background:var(--night);
  box-shadow:0 10px 26px -8px rgb(0 0 0 / .55);
  transition:transform .18s var(--ease), background .18s var(--ease);
  -webkit-tap-highlight-color:transparent;
}
.fab svg{width:24px; height:24px;}
.fab:hover{transform:translateY(-2px);}
.fab:active{transform:translateY(1px) scale(.96);}
.fab-wa{background:#25d366; color:#04160b;}
.fab-call{background:var(--red);}
.fab-top{background:var(--night-2,oklch(0.31 0.06 262)); border:1px solid var(--line);}
/* Back-to-top is collapsed out of the stack until it's useful, so the resting
   state on a phone is two buttons, not three. */
/* Descendant selector, not `.fab-top` alone: the max-width:520px `.fab` sizing rule
   below has equal specificity and would otherwise win on source order and re-expand it. */
.fab-stack .fab-top{
  opacity:0; visibility:hidden; height:0; min-height:0; overflow:hidden; margin-bottom:-12px;
  border-width:0;                  /* else the 1px border leaves a visible sliver at height:0 */
  transition:opacity .2s var(--ease), height .2s var(--ease), margin .2s var(--ease), visibility .2s;
}
.fab-stack.show-top .fab-top{opacity:1; visibility:visible; height:52px; min-height:52px; margin-bottom:0; border-width:1px;}
.fab-tip{
  position:absolute; left:calc(100% + 12px); white-space:nowrap;
  font-size:12.5px; font-weight:600; letter-spacing:.04em;
  background:var(--night); color:var(--paper); padding:7px 12px; border-radius:8px;
  opacity:0; pointer-events:none; transform:translateX(-6px);
  transition:opacity .16s var(--ease), transform .16s var(--ease);
}
@media (hover:hover) and (pointer:fine){
  .fab:hover .fab-tip{opacity:1; transform:translateX(0);}
}
@media (max-width:520px){
  .fab-stack{left:14px; bottom:14px; gap:10px;}
  .fab{width:48px; height:48px;}
  .fab svg{width:22px; height:22px;}
  .fab-stack.show-top .fab-top{height:48px; min-height:48px;}
  .fab-tip{display:none;}          /* no hover on touch — the label is dead weight */
}
@media print{.fab-stack{display:none;}}
@media (prefers-reduced-motion:reduce){
  .fab, .fab-top, .fab-tip{transition:none;}
  .fab:hover{transform:none;}
}

/* ============ STATS BAND (CSS 3D) ============
   Depth is done with transform + a stacked pseudo-element, not WebGL: no library,
   no extra bytes, and it composites on the GPU so it costs nothing on scroll.
   The tilt is gated behind `hover: hover` + `pointer: fine` so phones — where it
   would only cost paint work and could trap a tap — get the flat card instead. */
.stats-band{background:var(--bg-2); border-block:1px solid var(--line-soft);}
.stat3d-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:clamp(14px,2vw,22px); margin-top:clamp(30px,4vw,48px);
  perspective:1100px;
}
.s3d{transform-style:preserve-3d;}
.s3d-face{
  position:relative; display:flex; flex-direction:column; justify-content:center;
  min-height:170px; padding:clamp(24px,3vw,32px);
  background:linear-gradient(155deg, var(--card), oklch(0.185 0.032 262));
  border:1px solid var(--line); border-radius:var(--r);
  transition:transform .4s var(--ease), border-color .4s var(--ease);
  will-change:transform;
}
/* the "slab" behind the face — reads as thickness, one extra painted box */
.s3d-face::before{
  content:""; position:absolute; inset:0; border-radius:var(--r);
  background:var(--red); opacity:.16;
  transform:translateZ(-38px) scale(.94); filter:blur(9px);
  transition:opacity .4s var(--ease);
}
.s3d-face b{
  display:block; font-size:clamp(30px,3.7vw,44px); font-weight:750;
  letter-spacing:-.03em; line-height:1; color:var(--text);
}
.s3d-face b .u{font-size:.5em; font-weight:650; color:var(--red-bright); letter-spacing:0;}
.s3d-face > span{margin-top:12px; font-size:14px; color:var(--text-2);}
@media (hover:hover) and (pointer:fine){
  .s3d:hover .s3d-face{transform:rotateX(7deg) rotateY(-7deg) translateZ(16px); border-color:var(--red-deep);}
  .s3d:hover .s3d-face::before{opacity:.34;}
}
@media (prefers-reduced-motion:reduce){
  .s3d-face, .s3d-face::before{transition:none;}
  .s3d:hover .s3d-face{transform:none;}
}
.stats-asof{margin:clamp(22px,3vw,30px) 0 0; font-size:13.5px; color:var(--text-2);}
.stats-asof b{color:var(--text); font-weight:600;}

/* Vision & Mission — the two approved statements, given room to breathe. */
.vm-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(330px,1fr)); gap:clamp(14px,2vw,22px); margin-top:clamp(30px,4vw,48px);}
.vm{background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r); padding:clamp(28px,3.4vw,38px);}
.vm .eyebrow{margin-bottom:16px;}
.vm p:not(.eyebrow){margin:0; font-size:clamp(16.5px,1.9vw,19px); line-height:1.65; color:var(--text);}
@media (max-width:640px){.vm-grid{grid-template-columns:1fr;}}
.value{background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r); padding:30px 28px 32px;}
.value .vdot{width:8px; height:8px; border-radius:50%; background:var(--red); display:inline-block; margin-bottom:18px;}
.value h3{font-weight:650; font-size:20px; letter-spacing:-.015em; margin:0 0 8px;}
.value p{font-size:14.5px; color:var(--text-2); margin:0;}

/* ============ EBOOK ============ */
.ebook-v2 .shell{
  border-radius:calc(var(--r) + 8px); overflow:hidden; color:var(--text);
  border:1px solid var(--line-soft);
  background:
    radial-gradient(680px 420px at 92% 8%, oklch(0.42 0.14 27 / .3), transparent 60%),
    linear-gradient(150deg, var(--bg-2) 28%, oklch(0.23 0.05 262) 100%);
  padding:clamp(36px,5vw,64px);
  display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(30px,5vw,60px); align-items:center;
}
@media (max-width:860px){.ebook-v2 .shell{grid-template-columns:1fr;}}
.ebook-cover{
  background:linear-gradient(165deg, oklch(0.28 0.06 262), oklch(0.20 0.04 262));
  border:1px solid var(--line); border-radius:var(--r);
  padding:clamp(28px,4vw,44px); position:relative; aspect-ratio:3/4; display:flex; flex-direction:column;
  box-shadow:0 40px 80px -30px rgb(0 0 0 / .7);
}
.ebook-cover .b-eyebrow{font-size:10.5px; font-weight:600; letter-spacing:.22em; text-transform:uppercase; color:var(--red-bright);}
.ebook-cover .b-title{font-weight:700; text-transform:uppercase; font-size:clamp(30px,4vw,48px); line-height:.98; letter-spacing:-.025em; margin:16px 0 12px;}
.ebook-cover .b-author{font-size:13.5px; color:var(--text-2); margin:0;}
.ebook-cover .b-peak{position:absolute; right:28px; bottom:26px; color:var(--red); font-size:30px;}
.ebook-v2 .shell h2{margin-bottom:14px;}
.ebook-v2 .shell p{color:var(--text-2); max-width:50ch; font-size:15.5px;}
.ebook-v2 .shell p b{color:var(--text); font-weight:600;}
.gate{display:flex; gap:10px; flex-wrap:wrap; margin-top:26px;}
.gate input{
  flex:1 1 200px; padding:14px 18px; border-radius:999px; font-family:inherit; font-size:14.5px;
  border:1px solid var(--line); background:oklch(1 0 0 / .05); color:var(--text);
}
.gate input::placeholder{color:var(--dim);}
.gate .btn{flex:0 0 auto;}
.gate-note{font-size:12.5px; color:var(--dim); margin-top:14px;}

/* ============ LIBRARY LIST ============ */
.lib{background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r); overflow:hidden; margin-top:clamp(24px,3vw,36px);}
.lib-item{
  display:grid; grid-template-columns:100px minmax(0,1fr) auto; gap:clamp(14px,3vw,32px); align-items:center;
  padding:22px clamp(20px,3vw,32px); border-top:1px solid var(--line-soft); text-decoration:none;
  transition:background .15s;
}
.lib-item:first-child{border-top:none;}
.lib-item:hover{background:var(--bg-2);}
.lib-item .date{font-size:12.5px; color:var(--dim); font-variant-numeric:tabular-nums;}
.lib-item .t{font-weight:550; font-size:clamp(15.5px,1.8vw,18px); letter-spacing:-.01em; line-height:1.4; color:var(--text);}
.lib-item .kind{font-size:10.5px; font-weight:600; color:var(--red-bright); letter-spacing:.16em; text-transform:uppercase;}
@media (max-width:640px){.lib-item{grid-template-columns:1fr; gap:5px;} .lib-item .kind{justify-self:start;}}
.learn-head{display:flex; align-items:baseline; justify-content:space-between; gap:20px; flex-wrap:wrap;}

/* ============ CTA ============ */
.cta-v2 .card{
  border-radius:calc(var(--r) + 8px); overflow:hidden; position:relative; color:var(--text);
  border:1px solid var(--line-soft);
  background:
    radial-gradient(640px 400px at 10% 115%, oklch(0.42 0.14 27 / .35), transparent 60%),
    radial-gradient(520px 360px at 95% -15%, oklch(0.34 0.09 262 / .7), transparent 55%),
    linear-gradient(150deg, var(--bg-2) 30%, oklch(0.22 0.045 262) 100%);
  padding:clamp(46px,7vw,92px) clamp(28px,5vw,76px); text-align:center;
}
.cta-v2 h2{max-width:24ch; margin-left:auto; margin-right:auto;}
.cta-v2 .sub{color:var(--text-2); font-size:clamp(15.5px,1.8vw,18px); max-width:48ch; margin:0 auto 36px;}
.cta-v2 .peak-mark{position:absolute; right:36px; top:32px; color:var(--red); font-size:24px; opacity:.9;}
/* Client (round 2): the logo near "Book a call" read too small. The ▲ glyph is
   replaced by the actual logo mark on a small paper plate, sized to be legible. */
.cta-v2 .cta-logo{
  display:block; height:44px; width:auto; margin:0 auto clamp(20px,2.6vw,28px);
  padding:10px 14px; background:var(--paper); border-radius:12px;
  box-shadow:0 12px 30px -16px rgb(0 0 0 / .6);
}
@media (max-width:640px){.cta-v2 .cta-logo{height:38px;}}
.lead-form{display:grid; grid-template-columns:1fr 1fr; gap:12px; max-width:540px; margin:30px auto 0; text-align:left;}
@media (max-width:540px){.lead-form{grid-template-columns:1fr;}}
.lead-form .full{grid-column:1 / -1;}
.lead-form input, .lead-form textarea{
  width:100%; padding:15px 18px; border-radius:16px; font-family:inherit; font-size:14.5px;
  border:1px solid var(--line); background:oklch(1 0 0 / .05); color:var(--text);
}
.lead-form textarea{min-height:88px; resize:vertical;}
.lead-form input::placeholder, .lead-form textarea::placeholder{color:var(--dim);}
.lead-form .hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden;}
.lead-form .btn{grid-column:1 / -1; justify-content:center; width:100%;}
.lead-msg{max-width:540px; margin:14px auto 0; font-size:13.5px; color:var(--text-2); min-height:1.2em; text-align:center;}
.lead-msg.err{color:oklch(0.74 0.15 30);}
.cta-alt{font-size:18.5px; font-weight:500; color:var(--text-2); margin:24px 0 0;}
.cta-alt a{color:var(--text); font-weight:600; text-decoration:underline; text-underline-offset:4px; text-decoration-color:var(--red);}
.lead-done{max-width:540px; margin:26px auto 0; background:oklch(1 0 0 / .05); border:1px solid var(--line); border-radius:18px; padding:24px 26px; text-align:center;}
.lead-done b{display:block; font-size:19px; font-weight:650; color:var(--text); margin-bottom:6px;}
.lead-done span{font-size:14px; color:var(--text-2);}

/* ============ FOOTER ============ */
footer.site{background:oklch(0.12 0.022 262); color:var(--text-2); font-size:14px; margin-top:clamp(70px,9vw,110px); border-top:1px solid var(--line-soft);}
/* Four columns: Finsherpa | Find your way | Reach us | Legal.
   The first track is wider because it holds the postal address. Below 900px
   the gap tightens rather than the layout collapsing, so four columns survive
   most laptop widths; 2-up on tablet, stacked on phone. */
.foot{display:grid; grid-template-columns:minmax(0,1.5fr) repeat(3, minmax(0,1fr)); gap:clamp(24px,3.4vw,56px); padding-block:clamp(46px,6vw,66px) 30px;}
@media (max-width:900px){.foot{grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,40px);}}
@media (max-width:560px){.foot{grid-template-columns:1fr;}}
.foot h4{font-weight:600; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--text); margin:0 0 16px;}
.foot a{color:var(--text-2); text-decoration:none;}
.foot a:hover{color:var(--text);}
.foot ul{list-style:none; margin:0; padding:0;}
.foot li{margin:9px 0;}
.legal{border-top:1px solid var(--line-soft); padding-block:18px 28px; font-size:12px; color:var(--dim); display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;}

/* ==================================================================
   MOBILE OVERFLOW GUARDS
   Grid items default to min-width:auto, so unbreakable content (big ₹
   figures, nowrap pills) can inflate tracks past their container and
   get clipped by overflow:hidden panels. min-width:0 restores wrapping.
   ================================================================== */
.flagship > *, .calc-grid > *, .proof-grid > *, .ebook-v2 .shell > *,
.svc > div, .profile > div, .founder-grid > *, .hero-cards > *,
.flagship .panel, .calc-out{min-width:0;}
@media (max-width:480px){
  .display{font-size:clamp(40px,11.5vw,46px);}          /* keep 3 caps lines inside 390px */
  .btn, .btn-ghost{padding:13px 20px; letter-spacing:.1em;}
  .calc-out .row{flex-wrap:wrap;}
  .calc-out .row b, .gcard.split .g-half b{white-space:normal;}
  .flagship, .calc-v2 .shell, .ebook-v2 .shell{padding:26px 22px;}
  .cta-v2 .card{padding:44px 22px;}
}

/* ---- official logo in header (replaces the type-set wordmark).
   logo-mark.png is the same artwork with its white ground unpremultiplied to
   alpha, so it sits directly on the paper header with no plate or radius. ---- */
.brand img{height:44px; width:auto; display:block;}
@media (max-width:980px){.brand img{height:38px;}}
@media (max-width:480px){.brand img{height:32px;}}

/* "Age" label above the band on Who we help (item 10) */
.yrs-lab{
  display:block; font-size:11px; font-weight:600; letter-spacing:.18em;
  text-transform:uppercase; color:var(--text-2); margin-bottom:2px;
}

/* ============ LEGAL STUB PAGES ============ */
.legal-doc{max-width:70ch; margin:0 auto;}
.legal-doc p{font-size:16px; line-height:1.75; color:var(--text-2); margin:0 0 18px;}
.legal-doc .pending{
  background:var(--card); border:1px solid var(--line); border-left:3px solid var(--red);
  border-radius:12px; padding:18px 20px; color:var(--text);
}

/* ============ CONTACT — BRANCHES ============ */
.branch-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  gap:clamp(14px,2vw,22px); margin-top:clamp(30px,4vw,48px);
}
.branch{
  background:var(--card); border:1px solid var(--line-soft); border-radius:var(--r);
  padding:clamp(26px,3vw,34px);
}
.branch-tag{
  margin:0 0 10px; font-size:11px; font-weight:600; letter-spacing:.2em;
  text-transform:uppercase; color:var(--red-bright);
}
.branch h3{margin:0 0 14px; font-size:clamp(19px,2.1vw,22px); font-weight:650; letter-spacing:-.015em;}
.branch address{font-style:normal; font-size:15px; line-height:1.7; color:var(--text-2); margin-bottom:16px;}
.branch-hint{color:var(--dim); font-size:13.5px;}
.branch p{font-size:15px; line-height:1.7; color:var(--text-2); margin:0 0 16px;}
.branch-lines{list-style:none; margin:0 0 16px; padding:0;}
.branch-lines li{margin:7px 0;}
.branch-lines a{color:var(--text); text-decoration:none; font-weight:600; font-size:15px;}
.branch-lines a:hover{color:var(--red-bright);}
.branch-soon{border-style:dashed;}
.gate-note.err{color:var(--red-bright);}


/* ============ FAQ TOPIC FILTER ============ */
.faq-filters{
  display:flex; flex-wrap:wrap; gap:8px; justify-content:center;
  max-width:860px; margin:clamp(26px,3vw,36px) auto 0;
}
.faq-chip{
  font-family:var(--sans); font-size:13px; font-weight:600; letter-spacing:.04em;
  padding:9px 16px; border-radius:999px; cursor:pointer;
  background:none; border:1px solid var(--line); color:var(--text-2);
  transition:border-color .15s var(--ease), color .15s var(--ease), background .15s var(--ease);
}
.faq-chip:hover{color:var(--text); border-color:var(--text-2);}
.faq-chip.is-on{background:var(--red); border-color:var(--red); color:var(--paper);}
.faq-chip:focus-visible{outline:2px solid var(--ice); outline-offset:2px;}
.faq-empty{max-width:860px; margin:22px auto 0; text-align:center; color:var(--dim); font-size:14.5px;}
.faq[hidden]{display:none;}


/* ==================================================================
   VISUAL PASS — quieter, larger, more air. Apple-style rhythm on the
   existing brand: huge tight headlines, alternating dark/paper bands,
   soft large-radius surfaces, no hard borders, one accent.
   ================================================================== */
h2{font-size:clamp(34px,4.6vw,60px); letter-spacing:-.035em; line-height:1.04; font-weight:700;}
.h2-xl{font-size:clamp(40px,5.6vw,72px);}
.section-intro{font-size:clamp(17px,1.9vw,20px); line-height:1.55; max-width:60ch;}
.section-head{margin-bottom:clamp(40px,5.5vw,64px);}
.display{letter-spacing:-.045em;}
.page-hero h1{letter-spacing:-.04em;}
.eyebrow{letter-spacing:.2em;}

/* surfaces: larger radius, hairline instead of border, faint inner light */
:root{--r:26px;}
.gcard, .camp-card, .svc, .value, .vm, .prod-face, .step-face, .s3d-face, .faq, .branch, .reg-card, .testimonial-card, .stat-card, .lead-form input, .lead-form textarea{
  border-color:oklch(1 0 0 / .07);
}
.camp-card, .svc, .vm, .faq, .branch, .reg-card, .testimonial-card, .stat-card{
  box-shadow:inset 0 1px 0 oklch(1 0 0 / .05);
}
.btn{padding:16px 30px; font-size:13px;}
.nav .btn{padding:11px 22px; font-size:11.5px;}

/* paper bands: the light "pop" sections, scoped token swap like the header */
.on-paper{
  --bg:#f7f5f1; --bg-2:#ffffff; --card:#ffffff;
  --text:oklch(0.24 0.045 262); --text-2:oklch(0.44 0.03 262); --dim:oklch(0.58 0.025 262);
  --line:oklch(0.24 0.045 262 / .12); --line-soft:oklch(0.24 0.045 262 / .08);
  background:var(--bg); color:var(--text);
}
.on-paper .s3d-face, .on-paper .prod-face{
  background:#fff; border-color:var(--line-soft);
  box-shadow:0 1px 2px oklch(0.24 0.045 262 / .06), 0 18px 40px -28px oklch(0.24 0.045 262 / .35);
}
.on-paper .s3d-face::before, .on-paper .prod-face::before{opacity:.08;}
.on-paper .s3d-face b{color:var(--text);}
.on-paper .s3d-face > span{color:oklch(0.40 0.03 262);}
.on-paper .chip{color:var(--text-2); border-color:var(--line);}
.on-paper a.quiet, .on-paper .quiet{color:var(--red);}
.stats-band.on-paper{border-block:none;}

/* smoother reveal */
.rv{transition-duration:.9s; transition-timing-function:cubic-bezier(.16,1,.3,1);}

/* WhatsApp beside the header CTA (client: sticky WhatsApp near "Book a free call") */
.nav .btn-wa{
  display:inline-grid; place-items:center; width:40px; height:40px; border-radius:50%;
  background:#25d366; color:#04160b; margin-right:-10px; flex:none;
  transition:transform .18s var(--ease);
}
.nav .btn-wa svg{width:20px; height:20px;}
.nav .btn-wa:hover{transform:translateY(-1px);}
@media (max-width:980px){.nav .btn-wa{width:36px; height:36px; margin-right:-6px;}}

/* ============ FLIP CARDS (Sherpa's Toolkit, Six Steps) ============ */
.flip{perspective:1200px;}
/* Both faces sit in the same grid cell, so the card is exactly as tall as the
   taller face — no guessed min-height, nothing to clip on a narrow screen. */
.flip .flip-inner{
  position:relative; display:grid; width:100%; height:100%;
  padding:0; border:none; background:none; color:inherit; font:inherit; text-align:left;
  cursor:pointer; transform-style:preserve-3d;
  transition:transform .65s cubic-bezier(.2,.8,.2,1);
}
.flip .flip-face{
  grid-area:1 / 1; position:relative; display:flex; flex-direction:column; min-width:0;
  backface-visibility:hidden; -webkit-backface-visibility:hidden;
  border-radius:var(--r); padding:clamp(26px,3vw,34px);
}
.flip .flip-front{background:var(--card); border:1px solid oklch(1 0 0 / .07); box-shadow:inset 0 1px 0 oklch(1 0 0 / .05);}
.flip .flip-back{
  transform:rotateY(180deg);
  background:linear-gradient(155deg, oklch(0.30 0.07 262), oklch(0.20 0.04 262));
  border:1px solid oklch(0.55 0.185 27 / .5);
}
.flip .flip-back p{color:var(--text); font-size:15px; line-height:1.62; margin:0;}
.flip-kicker, .flip-hint{
  font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
}
.flip-kicker{color:var(--red-bright); margin-bottom:12px;}
.flip-hint{margin-top:auto; padding-top:16px; color:var(--dim);}
.flip .flip-front h3{margin:14px 0 8px;}
.flip .flip-front p{color:var(--text-2); font-size:14.5px; line-height:1.6; margin:0;}
.flip.is-flipped .flip-inner{transform:rotateY(180deg);}
@media (hover:hover) and (pointer:fine){ .flip:hover .flip-inner{transform:rotateY(180deg);} }
.flip .flip-inner:focus-visible{outline:2px solid var(--ice); outline-offset:4px; border-radius:var(--r);}
/* the step/value cards previously set their own face styles; the flip faces own them now */
.flip .step-face{position:relative; transition:none;}
.flip .step-face::before{display:none;}
.flip.step3d:hover .step-face{transform:none; border-color:inherit;}
.flip.value{padding:0; background:none; border:none;}
.value.flip .vdot{margin-bottom:12px;}
@media (prefers-reduced-motion:reduce){
  .flip .flip-inner{transition:none;}
  .flip:hover .flip-inner, .flip.is-flipped .flip-inner{transform:none;}
  .flip.is-flipped .flip-front{visibility:hidden;}
  .flip.is-flipped .flip-back{transform:none;}
}

/* ============ EBOOK COVER (real artwork) ============ */
.ebook-thumb{
  width:100%; max-width:320px; height:auto; aspect-ratio:639/960; display:block; margin:0 auto;
  border-radius:14px; box-shadow:0 30px 60px -30px rgb(0 0 0 / .8), 0 0 0 1px oklch(1 0 0 / .08);
  transform:rotate(-2deg);
}

/* ============ VIDEO WALL — thumbnails that link out ============ */
.yt-wall{display:grid; grid-template-columns:1fr 1fr; gap:clamp(14px,2vw,20px); max-width:960px; margin:clamp(30px,4vw,48px) auto 0;}
.yt-wall .yt-lead{grid-column:1 / -1;}
@media (max-width:640px){.yt-wall{grid-template-columns:1fr;}}
.yt-card{
  position:relative; display:block; border-radius:var(--r); overflow:hidden;
  background:var(--card); border:1px solid oklch(1 0 0 / .07); text-decoration:none; color:var(--text);
}
.yt-card img{width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; display:block; transition:transform .5s var(--ease);}
.yt-card:hover img{transform:scale(1.03);}
.yt-badge{position:absolute; left:50%; top:38%; transform:translate(-50%,-50%); width:64px; filter:drop-shadow(0 6px 16px rgb(0 0 0 / .5));}
.yt-lead .yt-badge{width:84px; top:42%;}
.yt-badge svg{width:100%; height:auto;}
.yt-meta{display:block; padding:16px 18px 18px;}
.yt-meta b{display:block; font-weight:650; font-size:15px; line-height:1.35; letter-spacing:-.01em;}
.yt-lead .yt-meta b{font-size:clamp(17px,2vw,21px);}
.yt-meta span{display:block; margin-top:6px; font-size:12.5px; color:var(--dim);}
@media (prefers-reduced-motion:reduce){.yt-card img{transition:none;} .yt-card:hover img{transform:none;}}

/* ============ POLICY + REGULATORY PAGES ============ */
.policy{max-width:76ch;}
.policy-meta{font-size:13px; letter-spacing:.06em; text-transform:uppercase; color:var(--dim); margin:0 0 30px;}
.policy h2{font-size:clamp(20px,2.3vw,25px); letter-spacing:-.02em; line-height:1.25; margin:38px 0 12px; scroll-margin-top:calc(var(--hdr-h, 79px) + 24px);}
.policy p, .policy li{font-size:16px; line-height:1.75; color:var(--text-2);}
.policy ul{padding-left:20px; margin:0 0 16px;}
.policy li{margin:6px 0;}
.policy b{color:var(--text); font-weight:650;}
.policy a{color:var(--text); text-decoration:underline; text-underline-offset:4px; text-decoration-color:var(--red);}
.policy-contact{list-style:none; padding:0;}
.policy-table{overflow-x:auto; margin:14px 0 18px; border:1px solid oklch(1 0 0 / .08); border-radius:16px;}
.policy-table table{width:100%; border-collapse:collapse; font-size:14.5px; min-width:520px;}
.policy-table th, .policy-table td{padding:12px 14px; text-align:left; vertical-align:top; border-bottom:1px solid oklch(1 0 0 / .06);}
.policy-table th{font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--dim); background:oklch(1 0 0 / .03);}
.policy-table tr:last-child td{border-bottom:none;}
.reg-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:clamp(14px,2vw,22px);}
.reg-card{background:var(--card); border:1px solid oklch(1 0 0 / .07); border-radius:var(--r); padding:clamp(26px,3vw,34px);}
.reg-tag{margin:0 0 10px; font-size:11px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--red-bright);}
.reg-card h3{margin:0 0 8px; font-size:clamp(18px,2vw,21px); font-weight:650; letter-spacing:-.015em;}
.reg-id{font-size:clamp(22px,2.6vw,28px); font-weight:750; letter-spacing:-.02em; color:var(--text); margin:0 0 12px;}
.reg-card p:last-child{font-size:14.5px; line-height:1.6; color:var(--text-2); margin:0;}
.reg-table{max-width:860px; margin-inline:auto;}
.reg-foot{max-width:860px; margin:18px auto 0; font-size:12.5px; line-height:1.65; color:var(--dim);}
.comp-ids{display:block; margin-top:6px; font-size:12.5px; color:var(--text-2);}
.comp-ids b{color:var(--text);}
/* the empty status <p> between the form and "Prefer to talk now?" was opening a gap */
.lead-msg:empty{display:none;}

/* ============ PRODUCTS PAGE ============ */
.subnav{position:sticky; top:var(--hdr-h, 79px); z-index:40; background:oklch(0.15 0.028 262 / .82); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border-bottom:1px solid oklch(1 0 0 / .07);}
.subnav .wrap{display:flex; gap:4px; overflow-x:auto; padding-block:10px; scrollbar-width:none;}
.subnav .wrap::-webkit-scrollbar{display:none;}
.subnav a{flex:none; font-size:13px; font-weight:600; letter-spacing:.03em; color:var(--text-2); text-decoration:none; padding:8px 14px; border-radius:999px; transition:color .15s var(--ease), background .15s var(--ease);}
.subnav a:hover{color:var(--text); background:oklch(1 0 0 / .06);}
.pnarrow{max-width:760px;}
.pnarrow p{font-size:clamp(16px,1.8vw,18px); line-height:1.7; color:var(--text-2); margin:0 0 16px;}
.pnarrow .eyebrow{margin-bottom:18px;}
.pnarrow h2{margin:0 0 20px;}
.ptypes-lead{max-width:76ch; font-size:16px; line-height:1.7; color:var(--text-2); margin:0 0 clamp(24px,3vw,34px);}
.pcat-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:clamp(14px,2vw,22px);}
.ptwo{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:clamp(14px,2vw,22px);}
.pcat{background:var(--card); border:1px solid oklch(1 0 0 / .07); border-radius:var(--r); padding:clamp(24px,3vw,32px); box-shadow:inset 0 1px 0 oklch(1 0 0 / .05);}
.on-paper .pcat{background:#fff; border-color:var(--line-soft); box-shadow:0 1px 2px oklch(0.24 0.045 262 / .06), 0 18px 40px -28px oklch(0.24 0.045 262 / .35);}
.pcat h3{margin:0 0 12px; font-size:clamp(19px,2vw,22px); font-weight:650; letter-spacing:-.015em;}
.pcat .chip + h3{margin-top:14px;}
.pcat p{font-size:15px; line-height:1.65; color:var(--text-2); margin:0 0 10px;}
.pcat p:last-child{margin-bottom:0;}
.plabel{font-size:11px !important; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--red-bright) !important; margin:16px 0 10px !important;}
.plist{list-style:none; margin:0; padding:0;}
.plist li{position:relative; padding-left:18px; font-size:15px; line-height:1.55; color:var(--text-2); margin:6px 0;}
.plist li::before{content:""; position:absolute; left:0; top:.62em; width:7px; height:7px; border-radius:50%; background:var(--red);}
.pmins{margin-top:clamp(24px,3vw,34px);}
.pmin-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:clamp(12px,1.6vw,18px);}
.pmin{background:var(--card); border:1px solid oklch(1 0 0 / .07); border-radius:20px; padding:20px 22px;}
.on-paper .pmin{background:#fff; border-color:var(--line-soft);}
.pmin b{display:block; font-size:clamp(22px,2.6vw,28px); font-weight:750; letter-spacing:-.02em; color:var(--text);}
.pmin span{display:block; margin-top:6px; font-size:13.5px; color:var(--text-2);}
.pnote{font-size:14px; line-height:1.65; color:var(--dim); margin:18px 0 0;}
.pnote b{color:var(--text);}
.pnote a{color:var(--text); text-decoration:underline; text-underline-offset:3px;}
.pcat-accent{border-color:var(--red-deep);}
.pcontact{margin-top:16px !important; padding-top:14px; border-top:1px solid oklch(1 0 0 / .08); font-size:14.5px;}
.pcontact a{color:var(--text); font-weight:600; text-decoration:none;}
.pcontact a:hover{color:var(--red-bright);}
/* product cards on What We Do: face becomes a column so "Read more" sits at the bottom */
.prod-face{display:flex; flex-direction:column;}
.prod-more{margin-top:auto; padding-top:16px; font-size:13px; font-weight:600; letter-spacing:.04em; color:var(--red-bright); text-decoration:none;}
.prod-more:hover{color:var(--text);}
.on-paper .prod-more{color:var(--red);}

/* products sections scroll to just below header + sub-nav */
.subnav ~ section{scroll-margin-top:calc(var(--hdr-h, 79px) + 58px);}

/* ============ MAP LINK (footer + Contact branches) ============
   Restored: this block was collateral damage when the Risk Profiler CSS was
   removed (it had no section header of its own, so "delete to next header"
   took it too). Without it the inline pin SVG falls back to 300x150. */
.map-link{
  display:inline-flex; align-items:center; gap:7px;
  font-size:13.5px; font-weight:600; color:var(--text-2); text-decoration:none;
  transition:color .15s var(--ease);
}
.map-link svg{width:15px; height:15px; flex:none;}
.map-link:hover{color:var(--red-bright);}
.branch .map-link{margin-top:4px;}

/* Restored (same cleanup casualty): Babu's background as plain copy under the team grid */
/* branch contact person on the Contact page — never had a rule */
.branch-who{font-size:14px; color:var(--text-2);}

/* Press logos on dark ground (About). The PNGs are dark-on-white; on a dark page
   they need the same invert+screen treatment the homepage .g-press uses —
   the inline multiply that was here is the light-background recipe. */
.press-logo{height:28px; width:auto; filter:grayscale(1) invert(1) brightness(1.15) contrast(1.05); mix-blend-mode:screen; opacity:.8;}

/* AMC-wise commission disclosures (Regulatory page) */
.amc-disc{max-width:860px; margin:clamp(34px,4.5vw,52px) auto 0; padding-top:clamp(26px,3vw,34px); border-top:1px solid oklch(1 0 0 / .08);}
.amc-disc h3{margin:0 0 10px; font-size:clamp(20px,2.3vw,25px); font-weight:650; letter-spacing:-.02em;}
.amc-disc > p{margin:0 0 20px; font-size:15px; line-height:1.65; color:var(--text-2); max-width:70ch;}
.amc-disc b{color:var(--text); font-weight:650;}
.amc-list{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:10px;}
.amc-list a{
  display:flex; align-items:baseline; justify-content:space-between; gap:12px;
  padding:14px 16px; border-radius:14px; text-decoration:none;
  background:var(--card); border:1px solid oklch(1 0 0 / .07);
  color:var(--text); font-size:14.5px; font-weight:600;
  transition:border-color .15s var(--ease), transform .15s var(--ease);
}
.amc-list a:hover{border-color:var(--red-deep); transform:translateY(-1px);}
.amc-list a span{flex:none; font-size:11.5px; font-weight:500; letter-spacing:.04em; color:var(--dim);}
@media (prefers-reduced-motion:reduce){.amc-list a{transition:none;} .amc-list a:hover{transform:none;}}

/* ============ STANDALONE CALLBACK PAGE (callback.html) ============ */
body.standalone{min-height:100vh; display:flex; flex-direction:column;}
.standalone-wrap{flex:1; display:flex; flex-direction:column; justify-content:center; padding:clamp(28px,5vw,64px) 0;}
.standalone-brand{display:block; width:fit-content; margin:0 auto clamp(22px,3vw,34px); padding:12px 18px; background:var(--paper); border-radius:14px;}
.standalone-brand img{height:44px; width:auto; display:block;}
.standalone .cta-v2 .card{max-width:720px; margin:0 auto;}
.standalone .cta-v2 h1{font-size:clamp(28px,4.6vw,44px); letter-spacing:-.035em; line-height:1.06; margin:0 0 14px;}
.standalone .fab-stack{display:none;}   /* one page, one purpose — no floating stack */
.standalone-foot{margin:clamp(26px,3vw,36px) auto 0; padding:0 20px; font-size:12.5px; color:var(--dim); text-align:center; max-width:70ch;}
.standalone-foot a{color:var(--text-2);}

/* WhatsApp mark, outline variant (Round 2 review: "slightly change the icon").
   Drawn as a stroke on the green disc rather than a filled silhouette. */
.nav .btn-wa svg, .fab-wa svg{fill:none; stroke:currentColor;}
.nav .btn-wa{background:#25d366; color:#fff;}
.fab-wa{background:#25d366; color:#fff;}

/* Office hours — footer line + Contact block */
.foot .hours{margin:14px 0 0; font-size:13px; line-height:1.65; color:var(--text-2); max-width:34ch;}
.foot .hours b{color:var(--text); font-weight:650;}
.hours-block{max-width:640px; margin:clamp(30px,4vw,44px) auto 0; background:var(--card); border:1px solid oklch(1 0 0 / .07); border-radius:var(--r); padding:clamp(24px,3vw,32px);}
.hours-block h3{margin:0 0 16px; font-size:clamp(19px,2.1vw,22px); font-weight:650; letter-spacing:-.015em;}
.hours-grid{margin:0; display:grid; gap:8px 24px;}
.hours-grid > div{display:flex; justify-content:space-between; gap:16px; padding:9px 0; border-bottom:1px solid oklch(1 0 0 / .06); font-size:15px;}
.hours-grid > div:last-child{border-bottom:none;}
.hours-grid dt{color:var(--text-2); margin:0;}
.hours-grid dd{margin:0; color:var(--text); font-weight:600; text-align:right; white-space:nowrap;}
.hours-block > p{margin:16px 0 0; font-size:13.5px; line-height:1.6; color:var(--dim);}

/* Team group photo — sits above "The rope team" heading */
.team-photo{margin:0 0 clamp(36px,5vw,56px); border-radius:var(--r); overflow:hidden; box-shadow:0 30px 60px -36px rgb(0 0 0 / .8), 0 0 0 1px oklch(1 0 0 / .07);}
.team-photo img{display:block; width:100%; height:auto; aspect-ratio:1800/441;}
