/* ── Hero v2 — personal-brand split layout ─────────────────────── */
.hero-v2{position:relative;overflow:hidden;padding:120px 0 84px}
@media(min-width:1280px){.hero-v2{min-height:100vh;display:flex;align-items:center;padding:150px 0 96px}}

.hero-v2 .hero-inner{
  width:100%;max-width:1240px;margin:0 auto;padding:0 24px;position:relative;z-index:1;
  display:grid;grid-template-columns:1fr;gap:56px;align-items:center;
}
@media(min-width:1024px){
  .hero-v2 .hero-inner{grid-template-columns:1.05fr .95fr;gap:64px}
}
@media(min-width:1280px){.hero-v2 .hero-inner{gap:88px;padding:0 32px}}

/* ── copy column ── */
.hero-v2 .hero-copy{display:flex;flex-direction:column;align-items:flex-start;gap:26px;text-align:left}
@media(max-width:1023px){
  .hero-v2 .hero-copy{align-items:center;text-align:center;order:2}
}

.hero-v2 .hero-badge{
  display:inline-flex;align-items:center;gap:9px;padding:7px 16px 7px 12px;border-radius:999px;
  background:var(--surface);border:1px solid var(--border);color:var(--text);
  font-size:13.5px;font-weight:600;letter-spacing:.01em;backdrop-filter:blur(10px);
}
.hero-v2 .live-dot{
  width:8px;height:8px;border-radius:50%;background:#2fd07a;flex:none;
  box-shadow:0 0 0 0 rgba(47,208,122,.65);animation:livePulse 2.1s infinite
}
@keyframes livePulse{
  70%{box-shadow:0 0 0 9px rgba(47,208,122,0)}
  100%{box-shadow:0 0 0 0 rgba(47,208,122,0)}
}

.hero-v2 .hero-headline{
  margin:0;font-weight:600;letter-spacing:-.022em;line-height:1.04;
  font-size:clamp(40px,7.2vw,74px);
}
.hero-v2 .hero-headline .accent{
  background:linear-gradient(96deg,var(--primary) 8%,var(--primary2) 92%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero-v2 .hero-sub{
  margin:0;max-width:520px;color:var(--dim);
  font-size:clamp(15.5px,1.35vw,17.5px);line-height:1.68;
}
.hero-v2 .hero-sub b{color:var(--text);font-weight:600}

.hero-v2 .hero-actions{display:flex;gap:14px;flex-wrap:wrap}
@media(max-width:1023px){.hero-v2 .hero-actions{justify-content:center}}

/* ── stat strip ── */
.hero-v2 .hero-trust{
  display:flex;align-items:center;gap:30px;flex-wrap:wrap;
  padding-top:24px;margin-top:4px;border-top:1px solid var(--border);width:100%;max-width:520px;
}
@media(max-width:1023px){.hero-v2 .hero-trust{justify-content:center}}
.hero-v2 .trust-item{display:flex;flex-direction:column;gap:3px;line-height:1.2}
.hero-v2 .trust-num{font-size:26px;font-weight:700;color:var(--text);letter-spacing:-.02em}
.hero-v2 .trust-label{font-size:12.5px;color:var(--mute);letter-spacing:.02em}

/* ── portrait column ── */
.hero-v2 .hero-figure{position:relative;justify-self:center;width:100%;max-width:500px}
@media(max-width:1023px){.hero-v2 .hero-figure{order:1;max-width:360px}}

.hero-v2 .portrait-glow{
  position:absolute;inset:-14% -10% -6%;z-index:0;pointer-events:none;
  background:radial-gradient(58% 58% at 52% 40%,var(--glow),transparent 70%);
  filter:blur(26px);
}
/* ── floating cutout portrait ── */
.hero-v2 .portrait-stage{position:relative;width:100%;aspect-ratio:1/1}

/* soft gradient disc the subject stands in front of */
.hero-v2 .stage-disc{
  position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:82%;aspect-ratio:1/1;border-radius:50%;z-index:0;
  background:
    radial-gradient(66% 66% at 50% 30%,rgba(0,174,239,.34),rgba(0,174,239,.10) 58%,transparent 76%),
    linear-gradient(180deg,hsla(0,0%,100%,.10),hsla(0,0%,100%,.055) 62%,hsla(0,0%,100%,.03));
  border:1px solid hsla(0,0%,100%,.10);
  box-shadow:0 0 90px 10px rgba(0,174,239,.10) inset;
}
[data-theme=light] .hero-v2 .stage-disc{
  background:
    radial-gradient(70% 70% at 50% 32%,rgba(0,174,239,.26),rgba(0,174,239,.06) 60%,transparent 74%),
    linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,0));
}
/* offset accent ring */
.hero-v2 .stage-ring{
  position:absolute;left:50%;bottom:-16px;transform:translateX(-50%);
  width:94%;aspect-ratio:1/1;border-radius:50%;z-index:0;
  border:1.5px solid var(--primary);opacity:.20;pointer-events:none;
}
/* the cutout itself - breaks out above the disc */
.hero-v2 .portrait-cut{
  position:absolute;left:50%;bottom:0;transform:translateX(-47.2%) translateY(0);
  width:92%;height:auto;display:block;z-index:2;   /* head sits at 47.2% of frame -> translateX(-47.2%) centres the face */
  filter:drop-shadow(0 22px 30px rgba(0,0,0,.48));
  /* fade along the ellipse, not a flat line - keeps arms/hands from punching
     outside the ring while the head (0.90 of the ellipse) stays fully opaque */
  -webkit-mask-image:radial-gradient(50% 67.9% at 47.2% 58.2%,#000 80%,transparent 100%);
          mask-image:radial-gradient(50% 67.9% at 47.2% 58.2%,#000 80%,transparent 100%);
  transition:transform .7s cubic-bezier(.2,.7,.2,1);
}
[data-theme=light] .hero-v2 .portrait-cut{filter:drop-shadow(0 20px 28px rgba(10,20,30,.26))}
.hero-v2 .hero-figure:hover .portrait-cut{transform:translateX(-47.2%) translateY(-8px)}

/* ── role cards, aligned around the portrait ── */
.hero-v2 .figure-cards{position:absolute;inset:0;z-index:3;pointer-events:none}

.hero-v2 .figure-card{
  position:absolute;box-sizing:border-box;
  width:222px;                     /* uniform width => flush inner AND outer edges */
  display:inline-flex;align-items:center;gap:10px;
  padding:9px 14px 9px 9px;border-radius:14px;
  background:rgba(13,17,25,.9);border:1px solid hsla(0,0%,100%,.13);
  backdrop-filter:blur(18px) saturate(1.2);
  box-shadow:0 16px 38px -14px rgba(0,0,0,.7);
  white-space:nowrap;pointer-events:auto;
  animation:cardFloat 6.5s ease-in-out infinite;
  transition:border-color .3s ease,box-shadow .3s ease;
}
.hero-v2 .figure-card:hover{border-color:hsla(0,0%,100%,.26);box-shadow:0 20px 46px -14px rgba(0,0,0,.8)}
[data-theme=light] .hero-v2 .figure-card{
  background:rgba(255,255,255,.94);border-color:rgba(10,20,30,.12);
  box-shadow:0 16px 36px -16px rgba(10,20,30,.3);
}
[data-theme=light] .hero-v2 .figure-card:hover{border-color:rgba(10,20,30,.22)}

/* Left column: even 27% rhythm. Right column: same rhythm, offset half a step
   so the two sides interleave instead of sitting in flat rows.
   Middle card of each side pushes out further, tracing the circle's widest point. */
.hero-v2 .figure-card:nth-child(1){top:18%; left:-2%;  animation-delay:0s}
.hero-v2 .figure-card:nth-child(2){top:45%; left:-4%;  animation-delay:-1.3s}
.hero-v2 .figure-card:nth-child(3){top:72%; left:-2%;  animation-delay:-2.6s}
.hero-v2 .figure-card:nth-child(4){top:32%; right:-2%; animation-delay:-3.9s}
.hero-v2 .figure-card:nth-child(5){top:59%; right:-4%; animation-delay:-5.2s}

@media(min-width:1280px){
  .hero-v2 .figure-card:nth-child(1){left:-4%}
  .hero-v2 .figure-card:nth-child(2){left:-7%}
  .hero-v2 .figure-card:nth-child(3){left:-4%}
  .hero-v2 .figure-card:nth-child(4){right:-4%}
  .hero-v2 .figure-card:nth-child(5){right:-7%}
}
@media(min-width:1360px){
  .hero-v2 .figure-card:nth-child(1){left:-9%}
  .hero-v2 .figure-card:nth-child(2){left:-15%}
  .hero-v2 .figure-card:nth-child(3){left:-9%}
  .hero-v2 .figure-card:nth-child(4){right:-9%}
  .hero-v2 .figure-card:nth-child(5){right:-15%}
}
@media(min-width:1560px){
  .hero-v2 .figure-card:nth-child(1){left:-14%}
  .hero-v2 .figure-card:nth-child(2){left:-19%}
  .hero-v2 .figure-card:nth-child(3){left:-14%}
  .hero-v2 .figure-card:nth-child(4){right:-14%}
  .hero-v2 .figure-card:nth-child(5){right:-19%}
}

@keyframes cardFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@media(prefers-reduced-motion:reduce){.hero-v2 .figure-card{animation:none}}

.hero-v2 .figure-card .fc-icon{
  width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;color:#fff;
  background:linear-gradient(135deg,var(--primary),var(--primary2));
}
.hero-v2 .figure-card .fc-title{font-size:13px;font-weight:650;color:var(--text);line-height:1.3}

/* below 1024px: tidy wrapped row under the portrait, natural widths */
@media(max-width:1023px){
  .hero-v2 .figure-cards{
    position:static;inset:auto;display:flex;flex-wrap:wrap;
    justify-content:center;gap:8px;margin-top:20px;
  }
  .hero-v2 .figure-card{
    position:static;top:auto;left:auto;right:auto;width:auto;
    animation:none;padding:8px 13px 8px 8px;
  }
  .hero-v2 .figure-card .fc-icon{width:26px;height:26px;border-radius:8px}
  .hero-v2 .figure-card .fc-title{font-size:12.5px}
}

/* ── ≤1023px: portrait becomes the hero's background ──────────────
   Stacked layout put the portrait, then five role cards, then the copy — pushing
   the headline well below the fold on a phone. Here the portrait is lifted out of
   the flow to sit behind everything, and the copy starts while it is still visible.
   NOTE: .hero-figure carries .reveal, and GSAP animates `y` on those (writing an
   inline transform), so centring must not rely on translateX or it gets clobbered. */
@media(max-width:1023px){
  .hero-v2{padding:0 0 76px}

  /* block, not grid: the copy is the only thing left in flow */
  .hero-v2 .hero-inner{display:block;gap:0}

  /* explicit width, not left:0/right:0 stretch — the figure's children are all
     absolutely positioned, so an auto width collapses to zero here. The extra 8%
     bleeds past the 24px gutters and is clipped by the section's overflow:hidden. */
  /* Centred with calc rather than a transform (GSAP owns transform on .reveal) and
     rather than auto margins (they can't go negative, so they'd refuse to bleed).
     108% bleeds past the gutters on phones; the 480px cap stops the portrait
     ballooning on tablets and shoving the copy onto the bright shirt.
     left keeps exactly half the used width either side of centre. */
  .hero-v2 .hero-figure{
    position:absolute;top:72px;
    width:min(108%,480px);left:calc(50% - min(54%,240px));
    max-width:none;z-index:0;pointer-events:none;
  }
  /* the source is 1122x1402, so at 80% of the square stage the portrait is exactly
     as tall as the stage — any wider and the top of the head is cropped off, and
     it starts creeping up behind the fixed nav */
  .hero-v2 .portrait-cut{width:80%;filter:drop-shadow(0 18px 26px rgba(0,0,0,.42))}
  .hero-v2 .stage-ring{display:none}
  .hero-v2 .portrait-glow{inset:-6% -14% 6%}

  /* fade the photo into the page so type never fights the suit.
     color-mix keeps the scrim correct in both themes automatically. */
  .hero-v2 .hero-figure::after{
    content:"";position:absolute;left:-12%;right:-12%;top:30%;bottom:-14%;z-index:5;
    background:linear-gradient(180deg,
      transparent 0%,
      color-mix(in srgb,var(--bg) 32%,transparent) 40%,
      color-mix(in srgb,var(--bg) 72%,transparent) 58%,
      color-mix(in srgb,var(--bg) 94%,transparent) 76%,
      var(--bg) 90%);
  }

  /* role cards are a desktop-only flourish now */
  .hero-v2 .figure-cards{display:none}

  /* copy layers over the portrait, starting below the face */
  .hero-v2 .hero-copy{
    position:relative;z-index:2;
    padding-top:clamp(292px,72vw,440px);
    gap:22px;
  }
  .hero-v2 .hero-headline{font-size:clamp(38px,10.4vw,58px)}
  .hero-v2 .hero-sub{max-width:34ch}

  /* three across at any width — as a wrapping flex row this broke 2 + 1 */
  .hero-v2 .hero-trust{
    display:grid;grid-template-columns:repeat(3,1fr);gap:10px;
    max-width:none;padding-top:22px;
  }
  .hero-v2 .trust-item{align-items:center;text-align:center}
  .hero-v2 .trust-num{font-size:23px}
  .hero-v2 .trust-label{font-size:11.5px;line-height:1.35}
}
