/* Vector Growth Partners — homepage styles.
   Externalized from the former inline <style> block so the CSP can drop
   style-src 'unsafe-inline' (site-wide style-src 'self'), and so this CSS
   is cacheable independently of the always-revalidated HTML. */

:root{
  /* Light (editorial body) */
  --paper:#f7f5ef;
  --paper-2:#fdfcf8;
  --paper-3:#f0ece2;
  --ink:#0c2440;
  --ink-soft:#3a506b;
  --ink-faint:#51606f;  /* 6.0:1 on --paper — safety margin over the 4.5:1 AA floor */

  /* Dark (hero / contact) */
  --navy:#0a1730;
  --navy-2:#06101f;
  --navy-line:rgba(150,180,220,.16);
  --on-dark:#eef3f9;
  --on-dark-soft:#a7b9d0;
  --on-dark-faint:#7e92ab;

  /* Brand accents */
  --green:#1e7a3d;        /* AA-safe green on light */
  --green-deep:#15602f;
  --green-bright:#37b24d;  /* on dark */
  --lime:#8cc63f;
  --lime-bright:#a6e25a;   /* on dark */
  --blue:#1c75bc;
  --blue-bright:#3aa3e6;

  --line:rgba(12,36,64,.12);
  --line-strong:rgba(12,36,64,.2);
  --shadow:0 1px 2px rgba(12,36,64,.05), 0 22px 52px -30px rgba(12,36,64,.32);
  --shadow-soft:0 1px 2px rgba(12,36,64,.04), 0 10px 30px -22px rgba(12,36,64,.4);

  --serif:'Fraunces', Georgia, 'Times New Roman', serif;
  --sans:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;

  --maxw:1240px;
  --pad:clamp(1.25rem, 5vw, 3rem);
  --section-y:clamp(2.5rem, 5vw, 4.5rem);
  --header-h:clamp(92px, 13vw, 172px);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 8px)}
body{
  margin:0;
  font-family:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  font-family:var(--sans);
  color:#0c2440;
  color:var(--ink);
  background:#f7f5ef;
  background:var(--paper);
  line-height:1.62;
  font-size:1.08rem;
  font-size:clamp(1.02rem, .92rem + .42vw, 1.2rem);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
::selection{background:rgba(140,198,63,.34);color:var(--ink)}
a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
img,svg{display:block;max-width:100%}
img{height:auto}

/* env() adds the notch/cutout inset on devices that have one (0 elsewhere), since viewport-fit=cover. */
.wrap{max-width:var(--maxw);margin-left:auto;margin-right:auto;margin-inline:auto;padding-left:calc(var(--pad) + env(safe-area-inset-left,0px));padding-right:calc(var(--pad) + env(safe-area-inset-right,0px));width:100%}
.narrow{max-width:780px}

.skip{position:absolute;left:-999px;top:0;z-index:100;background:var(--ink);color:#fff;padding:.7rem 1.1rem;border-radius:0 0 .6rem 0;font-weight:600}
.skip:focus{left:0}
/* Focus ring clears WCAG 1.4.11 (3:1) on BOTH backgrounds: --green is 4.93:1 on paper, 3.54:1 on navy. */
:focus-visible{outline:3px solid var(--green);outline-offset:3px;border-radius:5px}
.on-dark :focus-visible{outline-color:var(--green-bright)}

/* ---------- Gradient accent text (on dark) ---------- */
/* padding-bottom gives italic descenders (g, y, p) room so background-clip:text
   doesn't clip them; the negative margin keeps surrounding layout unchanged. */
.grad{color:#a6e25a;display:inline-block;padding-bottom:.16em;margin-bottom:-.16em} /* fallback for engines without background-clip:text */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .grad{
    background:linear-gradient(100deg,#7fe06a 0%, #b6f06a 60%, #d8f78a 100%);
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;
  }
}

/* ---------- Eyebrow ---------- */
.eyebrow{
  font-size:clamp(.72rem,.68rem + .12vw,.82rem);letter-spacing:.2em;text-transform:uppercase;
  font-weight:600;color:var(--green-deep);display:inline-flex;align-items:center;gap:.65rem;margin:0 0 1.3rem;
}
.eyebrow::before{content:"";width:2rem;height:2px;flex:none;border-radius:2px;background:linear-gradient(90deg,var(--green),var(--lime))}
.eyebrow.is-center{justify-content:center}
.on-dark .eyebrow{color:var(--lime-bright)}
.on-dark .eyebrow::before{background:linear-gradient(90deg,var(--green-bright),var(--lime-bright))}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.6rem;font-family:var(--sans);font-weight:600;
  font-size:clamp(.95rem,.9rem + .15vw,1.05rem);line-height:1;padding:1.05rem 1.7rem;border-radius:999px;
  cursor:pointer;border:1.5px solid transparent;
  transition:transform .18s ease, box-shadow .25s ease, background .25s ease, color .2s ease, border-color .2s ease;
  will-change:transform;
}
.btn .arr{transition:transform .25s ease;flex:none}
.btn-primary{background:linear-gradient(135deg,#138035,#157a37);color:#fff;box-shadow:0 14px 30px -12px rgba(21,95,47,.65)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 20px 38px -12px rgba(31,140,70,.7)}
.btn-primary:hover .arr{transform:translate(3px,-3px)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-strong)}
.btn-ghost:hover{transform:translateY(-2px);border-color:var(--ink);box-shadow:var(--shadow-soft)}
.btn-ghost:hover .arr{transform:translateY(3px)}
.on-dark .btn-ghost{color:var(--on-dark);border-color:rgba(180,205,235,.3)}
.on-dark .btn-ghost:hover{border-color:rgba(180,205,235,.7);box-shadow:none;background:rgba(255,255,255,.04)}

/* ---------- Header ---------- */
.site-header{
  position:-webkit-sticky;position:sticky;top:0;z-index:40;
  background:rgba(247,245,239,.97);
  -webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px);
  border-bottom:1px solid var(--line);
}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .site-header{background:rgba(247,245,239,.85)}
}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding-block:clamp(.35rem,.7vw,.55rem)}
.brand{display:inline-flex;flex:none}
.brand img{width:auto;height:clamp(76px,10.5vw,152px)}
.header-right{display:flex;align-items:center;gap:clamp(1.4rem,3vw,2.4rem)}
.site-nav{display:flex;align-items:center;gap:clamp(1.2rem,2.4vw,2.1rem)}
.site-nav a{font-weight:500;font-size:.96rem;color:var(--ink-soft);white-space:nowrap;position:relative;padding-block:.35rem;transition:color .2s ease}
.site-nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--green);transform:scaleX(0);transform-origin:left;transition:transform .22s ease}
.site-nav a:hover{color:var(--ink)}
.site-nav a:hover::after{transform:scaleX(1)}
.header-cta{font-weight:600;color:var(--ink);white-space:nowrap;border-bottom:1.5px solid var(--green);padding-bottom:2px;transition:color .2s,border-color .2s;display:inline-flex;align-items:center;min-height:44px}
.header-cta:hover{color:var(--green-deep)}
.cta-short{display:none}
@media (max-width:860px){.site-nav{display:none}}
@media (max-width:600px){.cta-full{display:none}.cta-short{display:inline}}
/* Very small phones (e.g. folded devices ~280px): shrink the logo so the header never overflows. */
@media (max-width:360px){.site-header .brand img{height:62px}.header-inner{gap:.75rem}.header-right{gap:1rem}}

/* ---------- Hero (dark) ---------- */
.hero{position:relative;color:var(--on-dark);background:var(--navy-2);overflow:hidden;isolation:isolate}
.hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:-2;background:
    linear-gradient(165deg,#091428 0%, #0a1b38 48%, #081428 100%);}
.hero-glow{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:-1;pointer-events:none;background:
    radial-gradient(48% 42% at 82% 8%, rgba(140,198,63,.22), transparent 62%),
    radial-gradient(46% 46% at 12% 16%, rgba(28,117,188,.22), transparent 60%),
    radial-gradient(60% 50% at 60% 108%, rgba(55,178,77,.14), transparent 60%);}
.hero-grid{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:-1;pointer-events:none;opacity:.5;
    background-image:linear-gradient(rgba(160,190,225,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(160,190,225,.045) 1px,transparent 1px);
    background-size:64px 64px;
    -webkit-mask-image:radial-gradient(80% 70% at 50% 30%, #000 40%, transparent 78%);
    mask-image:radial-gradient(80% 70% at 50% 30%, #000 40%, transparent 78%);}
.hero-mark{position:absolute;z-index:-1;right:clamp(24px,7vw,150px);top:50%;transform:translateY(-50%);width:clamp(260px,28vw,430px);height:auto;opacity:.16;pointer-events:none;}
@media (max-width:760px){.hero-mark{opacity:.13;width:clamp(210px,52vw,290px);right:-46px;top:clamp(118px,27vw,190px);bottom:auto;transform:none}}

.hero-inner{padding-top:clamp(.3rem,.65vw,.55rem);padding-bottom:clamp(4rem,10vw,8rem)}
.chip{
  display:inline-flex;align-items:center;gap:.6rem;background:rgba(255,255,255,.05);
  border:1px solid rgba(180,205,235,.22);padding:.5rem .95rem;border-radius:999px;
  font-size:clamp(.72rem,.68rem + .1vw,.8rem);font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--on-dark-soft);margin-bottom:clamp(1.5rem,3.6vw,2.2rem);
}
.chip .dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--lime-bright);box-shadow:0 0 0 0 rgba(166,226,90,.6);animation:pulse 2.6s ease-out 2.5s 1}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(166,226,90,.55)}70%{box-shadow:0 0 0 9px rgba(166,226,90,0)}100%{box-shadow:0 0 0 0 rgba(166,226,90,0)}}

.hero-kicker{
  font-family:var(--serif);font-style:italic;font-weight:400;color:var(--on-dark-soft);
  font-size:clamp(1.05rem,.96rem + .55vw,1.5rem);line-height:1.3;letter-spacing:.005em;
  margin:0 0 clamp(.9rem,2.2vw,1.4rem);
}
h1.hero-title{
  font-family:var(--serif);font-weight:360;letter-spacing:-.018em;line-height:1.07;
  font-size:clamp(2.3rem, 1.55rem + 4.5vw, 4.7rem);margin:0 0 clamp(1.2rem,3vw,1.85rem);max-width:19ch;
  color:#fff;text-wrap:balance;
}
h1.hero-title .grad{font-style:italic;font-weight:400}
.hero-sub{font-size:clamp(1.15rem,1rem + .9vw,1.55rem);line-height:1.5;color:var(--on-dark-soft);max-width:50ch;margin:0 0 clamp(1rem,2.4vw,1.5rem);font-weight:400}
.hero-note{color:var(--on-dark-faint);max-width:56ch;margin:0 0 clamp(2rem,4.5vw,2.9rem);font-size:clamp(.98rem,.94rem + .15vw,1.1rem)}
.hero-actions{display:flex;flex-wrap:wrap;gap:.9rem 1rem;align-items:center}
.hero-foot{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap;margin-top:clamp(2.5rem,6vw,4rem);
  font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--on-dark-faint)}
.hero-foot .sep{width:5px;height:5px;border-radius:50%;background:var(--lime-bright);flex:none}

/* ---------- Light sections ---------- */
section{padding-block:var(--section-y)}
.section-alt{background:linear-gradient(180deg,var(--paper-3),var(--paper))}
h2.s-title{font-family:var(--serif);font-weight:400;font-size:clamp(1.95rem,1.4rem + 2.7vw,3.2rem);line-height:1.1;letter-spacing:-.012em;margin:0 0 clamp(1.2rem,3vw,1.8rem);color:var(--ink);max-width:19ch;text-wrap:balance}
.s-title .accent{color:var(--green);font-style:italic;font-weight:400}
.prose p{margin:0 0 1.25rem;color:var(--ink-soft);max-width:64ch}
.prose p:last-child{margin-bottom:0}
.prose strong{color:var(--ink);font-weight:600}
.prose + .prose{margin-top:clamp(1.6rem,3.5vw,2.4rem)}

/* Editorial two-column rhythm on wide screens */
@media (min-width:1024px){
  #who-we-are .wrap,#what-we-do .wrap,#why-vector .wrap{display:grid;grid-template-columns:minmax(0,22rem) minmax(0,1fr);column-gap:clamp(3rem,7vw,7rem);align-items:start}
  #who-we-are .eyebrow,#what-we-do .eyebrow,#why-vector .eyebrow,
  #who-we-are .s-title,#what-we-do .s-title,#why-vector .s-title{grid-column:1}
  #who-we-are .prose,#who-we-are .founder,
  #what-we-do .prose,#what-we-do .tags,
  #why-vector .why-body{grid-column:2}
  #who-we-are .s-title,#what-we-do .s-title,#why-vector .s-title{margin-bottom:0}
}

/* Founder byline (Who We Are) */
.founder{display:flex;align-items:center;gap:1rem;margin-top:clamp(1.8rem,4vw,2.6rem);padding-top:clamp(1.5rem,3vw,2rem);border-top:1px solid var(--line)}
.founder-photo{width:56px;height:56px;border-radius:50%;flex:none;object-fit:cover;border:1px solid var(--line);box-shadow:var(--shadow-soft)}
.founder-name{margin:0;font-weight:600;color:var(--ink);font-size:1.05rem}
.founder-title{margin:.12rem 0 0;color:var(--ink-faint);font-size:.9rem;letter-spacing:.03em}
.founder-link{display:inline-flex;align-items:center;gap:.38rem;margin-top:.4rem;font-size:.85rem;font-weight:600;color:var(--green-deep);transition:color .2s ease}
.founder-link:hover{color:var(--green);text-decoration:underline;text-underline-offset:3px}
.founder-link svg{flex:none}

.tags{display:flex;flex-wrap:wrap;gap:.6rem;margin:clamp(1.8rem,4vw,2.7rem) 0 0;padding:0}
.tags li{list-style:none}
.tags span{display:inline-block;padding:.55rem 1.05rem;border:1px solid var(--line);border-radius:999px;background:var(--paper-2);font-size:clamp(.85rem,.82rem + .12vw,.95rem);font-weight:500;color:var(--ink)}

/* Why Vector duo */
.duo{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1.25rem,3vw,2rem);margin-top:clamp(1.1rem,2.6vw,1.8rem)}
.duo .card{background:var(--paper-2);border:1px solid var(--line);border-radius:20px;padding:clamp(1.6rem,3.4vw,2.5rem);box-shadow:var(--shadow);position:relative;overflow:hidden}
.duo .card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--green),var(--lime))}
.duo .card .ic{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;margin-bottom:1.2rem;background:linear-gradient(135deg,rgba(34,137,74,.13),rgba(140,198,63,.18));color:var(--green-deep)}
.duo .card h3{font-family:var(--serif);font-weight:500;font-size:clamp(1.4rem,1.2rem + .7vw,1.75rem);margin:0 0 .6rem;color:var(--ink);letter-spacing:-.01em}
.duo .card p{margin:0;color:var(--ink-soft)}
.why-close{margin-top:clamp(1.1rem,2.6vw,1.8rem)}
@media (max-width:680px){.duo{grid-template-columns:1fr}}

/* ---------- Contact (dark) ---------- */
.contact{color:var(--on-dark);background:var(--navy-2);position:relative;overflow:hidden;isolation:isolate}
.contact .glow{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:-1;background:
    linear-gradient(160deg,#0a1b38,#06101f),
    radial-gradient(50% 60% at 85% 10%, rgba(140,198,63,.16), transparent 60%),
    radial-gradient(45% 55% at 8% 90%, rgba(28,117,188,.16), transparent 60%);}
.contact .inner{text-align:center;max-width:760px;margin-inline:auto}
.contact h2{color:#fff;margin-inline:auto;max-width:22ch}
.contact h2 .grad{font-style:italic;font-weight:400}
.contact .prose p{color:var(--on-dark-soft);margin-inline:auto;text-align:center;max-width:60ch}
.contact-actions{display:flex;flex-wrap:wrap;gap:.9rem 1.1rem;justify-content:center;align-items:center;margin-top:clamp(1.7rem,4vw,2.5rem)}
.email-link{font-family:var(--serif);font-style:italic;font-size:clamp(1.2rem,1rem + 1vw,1.7rem);color:var(--lime-bright);border-bottom:1.5px solid rgba(166,226,90,.35);transition:color .2s,border-color .2s;max-width:100%;overflow-wrap:anywhere}
.email-link:hover{color:#cdf08a;border-bottom-color:#cdf08a}
.locations{display:inline-flex;align-items:center;gap:.85rem;justify-content:center;flex-wrap:wrap;margin-top:clamp(1.6rem,3.5vw,2.2rem);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--on-dark-faint)}
.locations .sep{width:5px;height:5px;border-radius:50%;background:var(--lime-bright)}

/* ---------- Footer (light) ---------- */
.site-footer{border-top:1px solid var(--line);padding-top:clamp(1.4rem,3vw,2.1rem);padding-bottom:calc(clamp(1.4rem,3vw,2.1rem) + env(safe-area-inset-bottom,0px));background:var(--paper)}
.footer-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem}
.footer-brand{display:inline-flex;flex:none}
.footer-brand img{height:clamp(46px,6.5vw,58px);width:auto}
/* Utility links sit on ONE line (wrap only on very narrow screens). */
.footer-links{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .8rem;font-size:clamp(.86rem,.82rem + .12vw,.95rem);font-weight:500}
.footer-links a{color:var(--ink-soft);padding-block:.55rem;transition:color .2s ease}
.footer-links a:hover{color:var(--green-deep);text-decoration:underline;text-underline-offset:3px}
.footer-links .sep{color:var(--ink-faint);opacity:.55;user-select:none}
.footer-bottom{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.4rem 2rem;margin-top:clamp(1rem,2.4vw,1.5rem);padding-top:clamp(1rem,2.4vw,1.4rem);border-top:1px solid var(--line)}
.footer-meta{margin:0;font-size:clamp(.82rem,.8rem + .1vw,.9rem);color:var(--ink-faint)}
.footer-credit{margin:0;font-size:.8rem;color:var(--ink-faint);letter-spacing:.01em}
@media (max-width:600px){.footer-bottom{justify-content:flex-start}}

/* ---------- Entrance (pure CSS — no script needed) ---------- */
/* Only the above-the-fold hero animates, once, on load. `backwards` fill keeps each
   element hidden during its delay, then normal styles apply — content is never gated. */
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.hero .chip,.hero-kicker,.hero-title,.hero-sub,.hero-note,.hero-actions,.hero-foot{
  animation:rise .65s cubic-bezier(.2,.7,.2,1) backwards}
.hero-kicker{animation-delay:.06s}
.hero-title{animation-delay:.12s}
.hero-sub{animation-delay:.18s}
.hero-note{animation-delay:.24s}
.hero-actions{animation-delay:.3s}
.hero-foot{animation-delay:.36s}

/* ---------- Very large screens ---------- */
@media (min-width:1700px){:root{--maxw:1340px}}
@media (min-width:2400px){:root{--maxw:1480px} body{font-size:1.28rem}}
/* Native (non-scaled) 4K–6K: scale the whole design up via the root font-size so
   content fills the viewport instead of sitting in a small centered strip. Prose is
   capped by ch, so line length stays readable as everything grows. */
@media (min-width:3400px){:root{--maxw:1820px} html{font-size:19px}}
@media (min-width:5000px){:root{--maxw:2240px} html{font-size:23px}}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .hero .chip,.hero-kicker,.hero-title,.hero-sub,.hero-note,.hero-actions,.hero-foot{animation:none}
  .chip .dot{animation:none}
  .btn,.btn .arr,.site-nav a::after{transition:none}
}
