/*
 * BBA Theme — design system
 * Ported from the approved BBA mockups. Front-end + editor.
 */

:root{
  --bg:#FFFFFF;
  --bg-soft:#F7F8F6;
  --ink:#0A0F0C;
  /*--ink-soft:#566B61;*/
  --ink-soft:#0A0F0C;
  --card:#FFFFFF;
  --line:#E8ECE7;
  /*--green:#10C46A;*/
  --green:#0e894e;
  --green-bright:#19E07C;
  /*--green-deep:#0B7A45;*/
  --green-deep:#0e894e;
  --green-hover:#0a6b3c;
  --orange:#FF7A14;
  --orange-soft:#FFEAD8;
  --green-soft:#DCF6E9;
  --dark:#1d2024;
  --dark-2:#24272c;
  --green-glow:rgba(25,224,124,.55);
  --orange-glow:rgba(255,122,20,.5);
  --logo-letters:#0e894e;
  --logo-blocks:#FF7A14;
  --display:"Sora",system-ui,sans-serif;
  --body:"Hanken Grotesk",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;position:relative}
.wrap{max-width:1480px;margin:0 auto;padding:0 clamp(20px,3.5vw,44px)}
a{color:inherit;text-decoration:none}
mark.has-inline-color{background-color:transparent;font-weight:inherit}
.mono{font-family:var(--mono)}
p b,p strong,li b,li strong,.prose b,.prose strong,.blurb b,.blurb strong{color:var(--green-deep);font-weight:700}
.bba-logo{display:inline-flex;align-items:center;gap:5px;line-height:1}
.bba-logo .bw-text{font-family:var(--mono);font-size:36px;letter-spacing:.1em;color:var(--logo-letters)}
.bba-logo .bw-blocks{display:grid;grid-template-columns:repeat(2,13px);grid-auto-rows:13px;gap:3px;flex:0 0 auto}
.bba-logo .bw-blocks i{border-radius:3px;background:transparent;border:2px solid var(--logo-blocks)}
.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--body);font-weight:700;font-size:15px;padding:14px 24px;border-radius:13px;transition:.22s;cursor:pointer;border:1.5px solid transparent;white-space:nowrap}
.btn-fill{background:var(--ink);color:#fff;box-shadow:0 10px 22px -12px rgba(10,15,12,.55),0 2px 5px -2px rgba(10,15,12,.3)}
.btn-fill:hover{transform:translateY(-2px);box-shadow:0 18px 34px -14px rgba(10,15,12,.6),0 3px 7px -2px rgba(10,15,12,.35)}
.btn-green{background:var(--green);color:#fff;box-shadow:0 10px 22px -12px rgba(16,196,106,.65),0 2px 5px -2px rgba(11,122,69,.35)}
.btn-green:hover{background:var(--green-hover);transform:translateY(-2px);box-shadow:0 18px 32px -12px rgba(14,137,78,.7),0 3px 7px -2px rgba(11,122,69,.4)}
.btn-out{background:#fff;border-color:var(--line);color:var(--ink);box-shadow:0 6px 16px -10px rgba(10,15,12,.35)}
.btn-out:hover{border-color:var(--ink);transform:translateY(-2px);box-shadow:0 12px 24px -12px rgba(10,15,12,.4)}
header{position:sticky;top:0;z-index:50;padding:16px 0 0;background:transparent}
.nav{width:95%;max-width:1600px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:66px;padding:0 12px 0 18px;background:rgba(255,255,255,.78);backdrop-filter:blur(16px) saturate(1.5);-webkit-backdrop-filter:blur(16px) saturate(1.5);border:1px solid rgba(232,236,231,.9);border-radius:18px;box-shadow:0 14px 34px -22px rgba(10,15,12,.4),0 1px 0 0 rgba(255,255,255,.6) inset}
nav.links{display:flex;gap:4px}
nav.links a{font-size:15px;font-weight:600;color:var(--ink-soft);padding:9px 15px;border-radius:10px;transition:.2s}
nav.links a:hover{color:var(--ink);background:rgba(14,137,78,.09)}
.nav-right{display:flex;align-items:center;gap:14px}
.nav-right .btn{padding:11px 20px;font-size:14.5px}
.burger{display:none}
.logo-link{display:inline-flex;align-items:center}
nav.links a.active{color:var(--ink);background:rgba(16,196,106,.12)}
.hero{position:relative;padding:64px 0 0 0;}
.topwash{position:absolute;top:0;left:0;right:0;height:1040px;z-index:-1;overflow:hidden;pointer-events:none}
.topwash .mesh{position:absolute;inset:0;background:
  radial-gradient(46% 38% at 92% 0%,rgba(25,224,124,.26),transparent 60%),
  radial-gradient(40% 40% at 2% 64%,rgba(255,122,20,.13),transparent 60%);}
.topwash .grid-bg{position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px;opacity:.5;mask:radial-gradient(120% 80% at 42% 30%,#000,transparent 72%)}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:28px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:100px;padding:7px 16px 7px 14px;font-size:13px;font-weight:600;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.01em}
.eyebrow .dot{width:8px;height:8px;border-radius:1px;background:var(--green)}
h1.display{font-family:var(--display);font-weight:800;font-size:clamp(46px,6.1vw,90px);line-height:.99;letter-spacing:-.038em;margin-top:24px}
h1.display .grn{color:var(--green-deep)}
.hero p.lead{font-size:20px;color:var(--ink-soft);max-width:56ch;margin-top:26px}
.hero-cta{margin-top:34px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.hero-cta .play{display:inline-flex;align-items:center;gap:11px;font-weight:600;color:var(--ink)}
.hero-cta .play span{width:44px;height:44px;border-radius:100px;border:2px solid var(--ink);display:grid;place-items:center;transition:.2s;font-size:13px}
.hero-cta .play:hover span{background:var(--ink);color:#fff}
.hero-visual{position:relative;min-height:440px;display:grid;place-items:center}
.net-svg{position:relative;width:min(620px,100%);height:auto;overflow:visible;animation:floaty 9s ease-in-out infinite}
@keyframes floaty{0%,100%{transform:translateY(-5px)}50%{transform:translateY(5px)}}
.net-svg .ln{fill:none;stroke:var(--green);stroke-width:3;stroke-linecap:round;stroke-dasharray:300;animation:lnIn 6.6s ease-in-out infinite both}
.net-svg .bk{transform-box:fill-box;transform-origin:center;animation:bkIn 6.6s ease-in-out infinite both;filter:drop-shadow(0 7px 14px rgba(11,58,36,.18))}
.net-svg .bk.g{fill:var(--green)}
.net-svg .bk.o{fill:var(--orange)}
@keyframes bkIn{
  0%{opacity:0;transform:scale(.2) translateY(10px)}
  7%{opacity:1;transform:scale(1.12) translateY(0)}
  12%{transform:scale(1)}
  72%{opacity:1;transform:scale(1)}
  85%{opacity:0;transform:scale(.5)}
  100%{opacity:0}
}
@keyframes lnIn{
  0%{stroke-dashoffset:300;opacity:0}
  5%{opacity:.55}
  17%{stroke-dashoffset:0}
  72%{stroke-dashoffset:0;opacity:.55}
  85%{opacity:0}
  100%{opacity:0;stroke-dashoffset:300}
}
.section{padding:96px 0}
.intro{position:relative}
.kicker{font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--orange)}
.deco-blocks{position:absolute;top:-26px;left:-26px;z-index:0;display:grid;grid-template-columns:1fr 1fr;gap:8px;width:80px;height:80px;opacity:.18;pointer-events:none}
.deco-blocks i{border-radius:9px}
.deco-blocks i:nth-child(1){background:var(--green)}
.deco-blocks i:nth-child(2){background:var(--orange)}
.deco-blocks i:nth-child(3){background:var(--orange)}
.deco-blocks i:nth-child(4){background:var(--green)}
.kicker,h2.big,.lead-2,.mission-row p.body,.partners h2,.partners .cap,.news h2,.news p,.triad,.convener p{position:relative;z-index:1}
h2.big{font-family:var(--display);font-weight:700;font-size:clamp(33px,4.2vw,52px);line-height:1.04;letter-spacing:-.03em;margin:16px 0}
.lead-2{color:var(--ink-soft);font-size:20px;}
.mission-row{display:grid;grid-template-columns:1.04fr .96fr;gap:60px;align-items:center}
.mission-row p.body{color:var(--ink-soft);font-size:19px;margin:8px 0 30px;max-width:52ch}
.mission-row p.body b{color:var(--ink);font-weight:700}
.mission-media{position:relative}
.mission-media::before{content:"";position:absolute;right:-15px;bottom:-15px;width: 101%;height: 101%;border-radius:26px;background:linear-gradient(135deg,var(--green),var(--orange));opacity:.2;z-index:0}
.mission-media .ph{position:relative;z-index:1}
/* Four-photo collage: a 2x2 of 3:2 tiles (the photos' own shape, so nobody at
   the edge of a group shot is cropped out), with the right column dropped by
   --off for the staggered collage look. Tiles are sized with the padding-bottom
   trick instead of aspect-ratio/fr rows so it keeps its shape at every width
   and in older Safari/iOS, where the earlier grid version stacked. */
.collage{--g:12px;--off:34px;position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:var(--off)}
.collage .ph{position:relative;flex:0 0 auto;width:calc(50% - var(--g)/2);height:0;padding-bottom:calc((50% - var(--g)/2)/1.5);aspect-ratio:auto;min-height:0;border-radius:18px;margin:0;box-shadow:0 30px 60px -38px rgba(10,40,28,.5)}
.collage .ph img{position:absolute;top:0;left:0;width:100%;height:100%}
.collage .ph::before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:1;background:linear-gradient(160deg,rgba(14,137,78,.2),rgba(10,15,12,.12));mix-blend-mode:multiply;pointer-events:none}
.collage .c-a,.collage .c-b{margin-top:var(--g)}
.collage .c-tall,.collage .c-b{top:var(--off)}
@media(max-width:520px){.collage{--g:6px;--off:16px}.collage .ph{border-radius:10px}}
.ph{position:relative;border-radius:24px;border:1px solid rgba(10,15,12,.06);background:
  linear-gradient(150deg,var(--green-soft),#fff 62%);overflow:hidden;display:grid;place-items:center;aspect-ratio:4/3;box-shadow:0 44px 80px -38px rgba(10,40,28,.5),0 8px 24px -16px rgba(10,15,12,.22)}
.ph.alt{background:linear-gradient(150deg,var(--orange-soft),#fff 62%)}
.ph img{width:100%;height:100%;object-fit:cover;display:block}
.ph::after{content:"";position:absolute;inset:0;background:linear-gradient(158deg,rgba(255,255,255,.22),transparent 42%);pointer-events:none}
.ph .ph-in{text-align:center;color:var(--ink-soft);position:relative;z-index:1}
.ph .ph-in svg{opacity:.5}
.ph .ph-in .lbl{margin-top:10px;font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:#9fb1a8}
.partners{text-align:center}
.partners h2{font-family:var(--display);font-weight:700;font-size:clamp(26px,3vw,36px);letter-spacing:-.02em}
.partners .cap{font-size:18.5px;color:var(--ink);margin-top:14px}
.logo-row{display:flex;flex-wrap:wrap;gap:30px 56px;justify-content:center;align-items:center;margin-top:44px}
.logo-row a{display:inline-flex;align-items:center;justify-content:center;transition:.25s}
.logo-row img{height:52px;width:auto;max-width:210px;object-fit:contain;transition:.25s}
.logo-row a:first-child img { height: 100px;}
.logo-row a:hover{transform:translateY(-3px)}
.contrast-zone{padding:30px 0 96px}
.convener{position:relative;background:radial-gradient(120% 100% at 100% 0%,#2d3138,#1d2024);color:#fff;border-radius:30px 30px 0 0;padding:84px 64px 70px;overflow:hidden;border-bottom:none}
.convener .conv-blocks{position:absolute;top:-26px;right:-26px;display:grid;grid-template-columns:1fr 1fr;gap:14px;width:172px;height:172px;z-index:0;opacity:.9}
.convener .conv-blocks i{border-radius:18px}
.convener .conv-blocks i:nth-child(1){background:var(--green)}
.convener .conv-blocks i:nth-child(2){background:var(--orange)}
.convener .conv-blocks i:nth-child(3){background:var(--orange)}
.convener .conv-blocks i:nth-child(4){background:var(--green)}
.convener .kicker{color:var(--green-bright)}
.triad{position:relative;font-family:var(--display);font-weight:800;font-size:clamp(34px,5vw,66px);line-height:1;letter-spacing:-.035em;margin-top:18px}
.convener p{position:relative;margin-top:24px;font-size:20px;color:#cdd2d8;max-width:60ch}
.convener .btn{margin-top:32px}
/* Core button block (not .btn) is the actual CTA here — give it the space above. */
.convener .wp-block-buttons{margin-top:32px}
.stats-band{background:var(--dark-2);border:1px solid #34383e;border-top:none;border-radius:0 0 30px 30px;overflow:hidden}
.stats{display:grid;grid-template-columns:repeat(4,1fr)}
.stat{padding:40px 34px;border-right:1px solid #34383e;border-top:1px solid #34383e}
.stat:nth-child(-n+4){border-top:none}
.stat:last-child{border-right:none}
.stat .n{font-family:var(--display);font-weight:800;font-size:clamp(38px,4.4vw,56px);line-height:1;letter-spacing:-.02em;color:#46D58C}
.stat .l{margin-top:9px;font-size:14px;color:#9aa0a8;font-family:var(--mono);letter-spacing:.02em}
.paths{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:52px}
.path{position:relative;border-radius:20px;padding:54px 46px 46px;overflow:hidden;transition:.28s;border:1px solid var(--line);background:#fff;box-shadow:0 28px 56px -38px rgba(10,15,12,.34)}
.path.ind{background:linear-gradient(180deg,rgba(16,196,106,.12),#fff 140px)}
.path.org{background:linear-gradient(180deg,rgba(255,122,20,.12),#fff 140px)}
.path::before{content:"";position:absolute;top:0;left:0;right:0;height:6px;border-radius:20px 20px 0 0}
.path.ind::before{background:var(--green)}
.path.org::before{background:var(--orange)}
.path:hover{transform:translateY(-7px)}
.path.ind:hover{border-color:rgba(14,137,78,.55);box-shadow:0 50px 80px -42px rgba(14,137,78,.4)}
.path.org:hover{border-color:rgba(255,122,20,.55);box-shadow:0 50px 80px -42px rgba(255,122,20,.4)}
.path .who{font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}
.path.ind .who{color:var(--green-deep)}
.path.org .who{color:var(--orange)}
.path h3{font-family:var(--display);font-weight:700;font-size:31px;letter-spacing:-.025em;margin:8px 0 12px;line-height:1.05}
.path>p{color:var(--ink-soft);font-size:16px}
.path ul{list-style:none;margin:24px 0 32px}
.path li{display:flex;gap:13px;align-items:center;padding:13px 0;font-size:15.5px;font-weight:500;border-top:1px solid rgba(10,15,12,.08)}
.path li svg{flex:0 0 18px}
.news{position:relative;display:grid;grid-template-columns:1.2fr .8fr;gap:48px;align-items:center;border:1px solid var(--line);border-radius:30px;padding:60px;overflow:hidden;background:
  radial-gradient(120% 130% at 0% 0%,var(--green-soft),transparent 52%),
  radial-gradient(120% 130% at 100% 100%,var(--orange-soft),transparent 52%),#fff}
/* Kicker is a <p> here, so `.news p{color:var(--ink)}` would darken it; restore
   the orange kicker color with a selector that outranks `.news p`. */
.news .kicker{margin-bottom:6px;color:var(--orange)}
.news h2{font-family:var(--display);font-weight:700;font-size:clamp(30px,3.4vw,42px);letter-spacing:-.025em;line-height:1.04}
.news p{color:var(--ink-soft);margin-top:14px;max-width:none}
.news .field{display:flex;gap:10px;margin-top:24px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:7px 7px 7px 20px;box-shadow:0 10px 26px -18px rgba(10,15,12,.3)}
.news input{border:none;background:none;flex:1;font-family:var(--body);font-size:16px;color:var(--ink)}
.news input:focus{outline:none}
.news small{display:block;margin-top:14px;color:var(--ink-soft);font-size:13px;font-family:var(--mono)}
.news-art{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.news-art .ph{aspect-ratio:3/2;border-radius:18px;box-shadow:none}
.join{position:relative;z-index:2;padding-bottom:0; padding-top: 0;}
/* Pull the card down over the footer's top padding. Selector is deliberately
   specific (0,4,0) so it beats the `.section > .wrap > .wp-block-group{margin-block:0}`
   rhythm reset below, which would otherwise zero this overlap. */
.section.join > .wrap > .news{margin-bottom:-96px}
footer{position:relative;z-index:0;background:var(--dark);color:#9fb1a8;margin-top:0;padding:158px 0 34px}
footer::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--green) 28%,var(--orange) 72%,transparent);opacity:.55}
.foot-top{display:grid;grid-template-columns:1.5fr 2fr;gap:56px;align-items:start}
footer .bba-logo .bw-text{color:var(--logo-letters);font-size:26px}
footer .bba-logo .bw-blocks{grid-template-columns:repeat(2,9px);grid-auto-rows:9px;gap:2px}
footer .bba-logo .bw-blocks i{border-width:1.5px;border-radius:2px}
.foot-brand p.about{margin-top:20px;max-width:36ch;line-height:1.65;font-size:15px;color:#9fb1a8}
.socials{display:flex;gap:10px;margin-top:24px}
.socials a{width:42px;height:42px;border-radius:12px;border:1px solid #20302a;background:rgba(255,255,255,.02);display:grid;place-items:center;color:#cdd9d3;font-family:var(--mono);font-size:12px;font-weight:500;transition:.2s}
.socials a:hover{border-color:var(--green);background:var(--green);color:#fff;transform:translateY(-2px)}
.foot-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
footer h4{color:#fff;font-size:12px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px;font-weight:600;font-family:var(--mono)}
footer ul{list-style:none}
footer li{padding:7px 0;font-size:15px}
footer li a{transition:.18s}
footer li a:hover{color:var(--green)}
.foot-bottom{border-top:1px solid #1c2a23;margin-top:56px;padding-top:26px;display:flex;justify-content:space-between;font-size:13px;color:#7c8c83;flex-wrap:wrap;gap:8px}
.foot-bottom .mono{font-family:var(--mono)}
.fade{opacity:0;transform:translateY(18px);animation:fu .7s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes fu{to{opacity:1;transform:none}}
.d1{animation-delay:.05s}
.d2{animation-delay:.15s}
.d3{animation-delay:.25s}
.d4{animation-delay:.35s}
.d5{animation-delay:.45s}
@media(max-width:980px){
  .hero-grid{grid-template-columns:1fr;gap:40px;position:relative}
  .hero-grid>div:first-child{position:relative;z-index:2}
  .hero-visual{position:absolute;top:-6px;right:-18px;width:46%;max-width:235px;min-height:0;opacity:.3;z-index:0;pointer-events:none;order:0;animation:none}
  .hero-visual .net-svg{width:100%}
  .mission-row{grid-template-columns:1fr;gap:36px}
  .news{grid-template-columns:1fr;gap:34px}
}
@media(max-width:880px){
  nav.links{display:none}
  .nav{padding:0 12px 0 18px}
  .burger{display:flex;flex-direction:column;justify-content:center;align-items:center;width:42px;height:42px;border-radius:11px;border:1px solid var(--line);background:#fff;cursor:pointer;gap:3px;padding:0}
  .burger i{display:block;width:22px;height:2px;background:var(--ink);border-radius:2px}
  .paths{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr}
  .stat:nth-child(2){border-right:none}
  .stat:nth-child(-n+2){border-top:none}
  .stat:nth-child(n+3){border-top:1px solid #1c2a23}
  .stat{padding:32px 22px}
  .stat .n{font-size:clamp(32px,8.5vw,46px)}
  .convener{padding:52px 30px 46px}
  .convener .conv-blocks{width:112px;height:112px;gap:10px;top:-20px;right:-20px}
  .section{padding:72px 0}
  .wrap{padding:0 22px}
  .foot-top{grid-template-columns:1fr;gap:40px}
}
@media(max-width:520px){
  .hero{padding:44px 0 60px}
  h1.display{font-size:clamp(33px,8.6vw,48px)}
  .hero-visual{width:43%;max-width:180px;right:-12px;top:-2px;min-height:0;opacity:.28;animation:none}
  .news,.path{padding:38px 26px}
  .foot-cols{grid-template-columns:1fr 1fr;gap:24px}
  .news-art{grid-template-columns:1fr 1fr}
  .stat{padding:26px 16px}
  .logo-row{gap:22px 30px}
  .logo-row img{height:30px}
}
.eyebrow-m{padding-bottom:10px;display:inline-block;font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--orange)}
.kicker.center{display:flex;justify-content:center;margin-bottom:14px}
.feat{display:grid;grid-template-columns:1.05fr .95fr;border:1px solid var(--line);border-radius:26px;overflow:hidden;background:#fff;box-shadow:0 50px 90px -55px rgba(10,15,12,.4)}
.feat .img{position:relative;min-height:420px;background:linear-gradient(150deg,#2d3138,var(--dark))}
.feat .img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.feat .badge{position:absolute;top:22px;left:22px;z-index:2;background:var(--green);color:#fff;font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:8px 14px;border-radius:9px}
.feat .body{padding:52px;display:flex;flex-direction:column;justify-content:center}
.feat h2{font-family:var(--display);font-weight:700;font-size:clamp(28px,3vw,40px);letter-spacing:-.03em;line-height:1.05}
.feat .meta{margin:22px 0 0;display:flex;flex-direction:column;gap:13px}
.feat .meta div{display:flex;align-items:center;gap:12px;font-size:16px;color:var(--ink)}
.feat .meta svg{flex:0 0 20px;color:var(--green-deep)}
.feat .blurb{color:var(--ink-soft);font-size:17px;margin:24px 0 30px;line-height:1.6}
.feat .feat-cta{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
/* The featured card body is a flex column (align-items:stretch), so a bare CTA
   button would stretch full-width — keep it natural width, like the mockup. */
.feat .body > .btn{align-self:flex-start}
.feat .all-link{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--green-deep);transition:color .25s ease}
.feat .all-link:hover{color:var(--orange)}
.mship{position:relative;border:1px solid var(--line);border-radius:30px;overflow:hidden;padding:60px;background:
  radial-gradient(130% 130% at 100% 0%,var(--orange-soft),transparent 50%),
  radial-gradient(130% 130% at 0% 100%,var(--green-soft),transparent 52%),#fff;
  box-shadow:0 40px 80px -56px rgba(10,15,12,.4)}
.mship-grid{display:grid;grid-template-columns:1fr .9fr;gap:48px;align-items:center;position:relative;z-index:1}
.mship h2{font-family:var(--display);font-weight:700;font-size:clamp(30px,3.4vw,44px);letter-spacing:-.025em;line-height:1.04;margin:10px 0 0}
.mship p{color:var(--ink-soft);margin-top:14px;font-size:18px;max-width:46ch}
.mship .m-cta{margin-top:28px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
/* Compact tier-row component (scoped to .tier-list so it doesn't collide with
   the .tiers .tier pricing cards, which are a different component). */
.tier-list{display:flex;flex-direction:column;gap:12px}
.tier-list .tier{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 22px;box-shadow:0 18px 40px -34px rgba(10,15,12,.3);transition:.22s}
.tier-list .tier:hover{transform:translateY(-3px);border-color:rgba(14,137,78,.5)}
.tier-list .tier .t-block{flex:0 0 auto;width:36px;height:36px;display:grid;grid-template-columns:1fr 1fr;gap:3px}
.tier-list .tier .t-block i{border-radius:4px}
.tier-list .tier:nth-child(1) .t-block i:nth-child(1),.tier-list .tier:nth-child(1) .t-block i:nth-child(4){background:var(--green)}
.tier-list .tier:nth-child(1) .t-block i:nth-child(2),.tier-list .tier:nth-child(1) .t-block i:nth-child(3){background:var(--green-soft)}
.tier-list .tier:nth-child(2) .t-block i:nth-child(1),.tier-list .tier:nth-child(2) .t-block i:nth-child(4){background:var(--orange)}
.tier-list .tier:nth-child(2) .t-block i:nth-child(2),.tier-list .tier:nth-child(2) .t-block i:nth-child(3){background:var(--orange-soft)}
.tier-list .tier:nth-child(3) .t-block i:nth-child(1),.tier-list .tier:nth-child(3) .t-block i:nth-child(4){background:var(--ink)}
.tier-list .tier:nth-child(3) .t-block i:nth-child(2),.tier-list .tier:nth-child(3) .t-block i:nth-child(3){background:var(--line)}
.tier-list .tier .t-name{font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:-.01em}
.tier-list .tier .t-desc{font-size:14px;color:var(--ink-soft);margin-top:2px}
@media(max-width:980px){.feat{grid-template-columns:1fr}.feat .img{min-height:300px}.mship-grid{grid-template-columns:1fr;gap:34px}}
@media(max-width:520px){.feat .body,.mship{padding:36px 26px}}
.mcta{position:relative;display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;border:1px solid var(--line);border-radius:30px;padding:60px;overflow:hidden;background:linear-gradient(180deg,rgba(16,196,106,.10),#fff 220px)}
.mcta::before{content:"";position:absolute;top:0;left:0;right:0;height:6px;background:linear-gradient(90deg,var(--green),var(--orange))}
.mcta .mc-blocks{position:absolute;top:-22px;right:-22px;display:grid;grid-template-columns:1fr 1fr;gap:12px;width:140px;height:140px;opacity:.16;pointer-events:none}
.mcta .mc-blocks i{border-radius:16px}
.mcta .mc-blocks i:nth-child(1){background:var(--green)}
.mcta .mc-blocks i:nth-child(2){background:var(--orange)}
.mcta .mc-blocks i:nth-child(3){background:var(--orange)}
.mcta .mc-blocks i:nth-child(4){background:var(--green)}
.mcta .mc-text{position:relative;z-index:1}
.mcta h2{font-family:var(--display);font-weight:700;font-size:clamp(30px,3.6vw,46px);letter-spacing:-.03em;line-height:1.04;margin:14px 0 0}
.mcta p{color:var(--ink-soft);font-size:18px;margin-top:14px;max-width:52ch}
.mcta ul{list-style:none;display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:20px}
.mcta li{display:flex;gap:10px;align-items:center;font-size:15px;font-weight:500}
.mcta li svg{flex:0 0 18px}
.mcta .mc-cta{position:relative;z-index:1;display:flex;flex-direction:column;gap:13px}
.mcta .mc-cta .btn{justify-content:center}
@media(max-width:980px){.mcta{grid-template-columns:1fr;gap:30px;padding:44px 30px}}
.page-hero p.sub,.hero p.lead,.lead-2,.mission-row p.body,.sec-head p,.pillar p,.bio p,.res-card p,.ev-card .desc,.path>p,.news p,.podcast p,.feat .blurb,.mcta p,.tier li span,.split .prose p,.prose p,.cinfo .val{color:var(--ink)}
p + .btn{margin-top:0px}
.prose .btn{margin-top:22px}
.band .btn{margin-top:8px}
@media(max-width:640px){
  .partners .logo-row{display:grid;grid-template-columns:1fr 1fr;gap:26px 18px;align-items:center;justify-items:center;margin-top:30px}
  .partners .logo-row a{width:100%}
  .partners .logo-row img{height:36px;max-width:130px}
  .partners .logo-row a:first-child img{height:58px}
  .deco-blocks{left:-6px;top:-20px;width:62px;height:62px;gap:6px}
}
.mobile-menu{position:fixed;top:92px;left:50%;transform:translateX(-50%) translateY(-10px);width:95%;max-width:1600px;z-index:49;background:rgba(255,255,255,.97);backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);border:1px solid rgba(232,236,231,.95);border-radius:18px;box-shadow:0 26px 54px -22px rgba(10,15,12,.4);padding:12px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .24s ease,transform .24s ease,visibility .24s}
.mobile-menu.open{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.mobile-menu a{display:block;font-family:var(--body);font-size:16px;font-weight:600;color:var(--ink);padding:13px 16px;border-radius:11px;transition:.18s}
.mobile-menu a:hover,.mobile-menu a.active{background:rgba(14,137,78,.1);color:var(--ink)}
.mobile-menu .mm-cta{margin-top:8px;padding-top:12px;border-top:1px solid var(--line)}
.mobile-menu .mm-cta a{background:var(--green);color:#04210f;text-align:center;font-weight:700}
.mobile-menu .mm-cta a:hover{background:var(--green-hover)}
.burger i{transition:transform .25s ease,opacity .2s ease}
.burger.open i:nth-child(1){transform:translateY(5px) rotate(45deg)}
.burger.open i:nth-child(2){opacity:0}
.burger.open i:nth-child(3){transform:translateY(-5px) rotate(-45deg)}
body.menu-open{overflow:hidden}
@media(min-width:881px){.mobile-menu{display:none}}
.quotes .intro{margin-bottom:40px;text-align:center}
.quotes .intro .deco-blocks{margin-left:auto;margin-right:auto}
.qgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}
.qcard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:22px;padding:34px 32px;box-shadow:0 24px 50px -40px rgba(10,15,12,.3);transition:.25s,height .45s cubic-bezier(.2,.7,.2,1)}
.qcard:hover{transform:translateY(-5px);box-shadow:0 44px 70px -46px rgba(10,15,12,.4);border-color:rgba(14,137,78,.4)}
.qmark{font-family:var(--display);font-weight:800;font-size:54px;line-height:.5;color:var(--green);height:26px}
.qcard blockquote{font-family:var(--display);font-weight:400;font-size:19px;line-height:1.42;letter-spacing:-.015em;color:var(--ink);margin:18px 0 26px;flex:1 1 auto}
.qby{display:flex;align-items:center;gap:14px;margin-top:auto}
.qby img,.qby .qav{width:54px;height:54px;border-radius:50%;object-fit:cover;flex:0 0 auto;border:2px solid var(--green-soft);background:var(--bg-soft)}
.qby .qav{display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:18px;color:#fff;border:none}
.qby .qav.g{background:linear-gradient(150deg,var(--green),var(--green-deep))}
.qby .qav.o{background:linear-gradient(150deg,var(--orange),#c95a06)}
/* Quote avatars: a headshot if one has been added, otherwise the initials tile.
   Drop a core Image block with class `qav-img` into the figcaption and the
   initials hide themselves; delete the image and they come back. */
.qby .qav-img{width:54px;height:54px;flex:0 0 auto;margin:0;border-radius:50%;overflow:hidden}
.qby .qav-img img{width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:center 25%;border:2px solid var(--green-soft);background:var(--bg-soft);display:block}
.qby:has(.qav-img) .qav{display:none}
.qname{font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink)}
.qrole{font-family:var(--mono);font-size:11.5px;color:var(--green-deep);margin-top:3px;letter-spacing:.01em;line-height:1.35}
@media(max-width:880px){.qgrid{grid-template-columns:1fr;max-width:560px;margin:0 auto}}
/* Quote carousel — .is-carousel is added by bba.js, so the plain grid above stays
   the no-JS and block-editor view. Track slides one card at a time. */
.q-viewport{overflow:hidden}
.qgrid.is-carousel{display:flex;grid-template-columns:none;gap:22px;align-items:flex-start;transition:transform .9s cubic-bezier(.65,0,.35,1);will-change:transform}
.qgrid.is-carousel > .qcard{flex:0 0 calc((100% - 44px)/3);transition:.25s,height .9s cubic-bezier(.65,0,.35,1),opacity .9s ease}
/* Cards fade as they slide out of view and in as they arrive. */
.qgrid.is-carousel > .qcard[aria-hidden="true"]{opacity:0}
.q-nav{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:34px}
.q-arrow{width:44px;height:44px;border-radius:100px;border:2px solid var(--line);background:#fff;display:grid;place-items:center;cursor:pointer;color:var(--ink);transition:.2s;flex:0 0 auto}
.q-arrow:hover:not(:disabled){border-color:var(--ink);transform:translateY(-2px)}
.q-arrow:disabled{opacity:.35;cursor:default}
.q-arrow svg{width:17px;height:17px}
.q-dots{display:flex;gap:9px}
.q-dot{width:9px;height:9px;padding:0;border:none;border-radius:100px;background:var(--line);cursor:pointer;transition:.22s}
.q-dot.on{background:var(--green);width:26px}
/* While auto-advancing, the active dot fills up as a countdown to the next slide. */
.q-dot{position:relative;overflow:hidden}
.q-nav.is-running .q-dot.on{background:rgba(14,137,78,.22)}
.q-nav.is-running .q-dot.on::after{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--green);transform-origin:left;animation:q-fill var(--q-delay,4.5s) linear forwards}
@keyframes q-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:880px){
  .qgrid.is-carousel{max-width:none;margin:0}
  .qgrid.is-carousel > .qcard{flex:0 0 100%}
}
.hero{position:relative;padding:64px 0 88px}
.lead-2{color:var(--ink);font-size:20px;max-width:90ch}
.mission-media::before{content:"";position:absolute;right:-15px;bottom:-15px;width:101%;height:101%;border-radius:26px;background:linear-gradient(135deg,var(--green),var(--orange));opacity:.2;z-index:0}
.partners .cap{font-size:18.5px;color:var(--ink);margin-top:14px}
.convener{position:relative;background:radial-gradient(120% 100% at 100% 0%,#13211b,var(--dark));color:#fff;border-radius:30px 30px 0 0;padding:84px 64px 70px;overflow:hidden;border:1px solid #1c2a23;border-bottom:none}
.convener p{position:relative;margin-top:24px;font-size:20px;color:#c5d2cc;max-width:60ch}
.stats-band{background:var(--dark-2);border:1px solid #1c2a23;border-top:none;border-radius:0 0 30px 30px;overflow:hidden}
.stat{padding:40px 34px;border-right:1px solid #1c2a23;border-top:1px solid #1c2a23}
.stat .l{margin-top:9px;font-size:14px;color:#90a39a;font-family:var(--mono);letter-spacing:.02em}
.join{position:relative;z-index:2;padding-top:0;padding-bottom:0}
@media(max-width:980px){
  .hero-grid{grid-template-columns:1fr;gap:40px}
  .hero-visual{min-height:360px;order:2}
  .mission-row{grid-template-columns:1fr;gap:36px}
  .news{grid-template-columns:1fr;gap:34px}
}
@media(max-width:520px){
  .hero{padding:44px 0 60px}
  h1.display{font-size:clamp(33px,8.6vw,48px)}
  .net-svg{width:88%}
  .hero-visual{min-height:320px}
  .news,.path{padding:38px 26px}
  .foot-cols{grid-template-columns:1fr 1fr;gap:24px}
  .news-art{grid-template-columns:1fr 1fr}
  .stat{padding:26px 16px}
  .logo-row{gap:22px 30px}
  .logo-row img{height:30px}
}
.page-hero{position:relative;text-align:center;padding:118px 0 64px}
.page-hero .eyebrow{margin:0 auto;margin-bottom:20px;}
.page-hero h1{font-family:var(--display);font-weight:800;font-size:clamp(42px,6vw,80px);letter-spacing:-.038em;line-height:1;margin-top:22px}
.page-hero h1 .grn{color:var(--green-deep)}
.page-hero p.sub{font-size:20px;color:var(--ink);max-width:62ch;margin:20px auto 0}
.sec{padding:88px 0}
.sec.tint{background:var(--bg-soft)}
/* The newsletter band hangs over the footer; when the section above it is
   tinted, carry the tint down behind it so there's no white strip in between.
   The box's -96px bottom margin collapses through .join, so the band's own box
   reaches 96px into the footer — stop the tint there or it paints over the
   footer's top edge and the box no longer looks like it overlaps. */
.sec.tint + .join{background:linear-gradient(var(--bg-soft),var(--bg-soft)) top/100% calc(100% - 96px) no-repeat}
.sec-head{text-align:center;max-width:720px;margin:0 auto 52px}
.sec-head h2{font-family:var(--display);font-weight:700;font-size:clamp(30px,4vw,46px);letter-spacing:-.03em;line-height:1.05;margin:14px 0 0}
.sec-head p{color:var(--ink);font-size:18px;margin-top:14px}
.kicker.center{display:flex;justify-content:center}
.tabs{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:44px}
.tab{font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;padding:11px 20px;border-radius:11px;border:1px solid var(--line);background:#fff;color:var(--ink-soft);cursor:pointer;transition:.2s}
.tab:hover{border-color:var(--green);color:var(--ink)}
.tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.feat .img{position:relative;min-height:440px;background:linear-gradient(150deg,#13211b,var(--dark))}
.feat .body{padding:52px}
.ev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.ev-card{position:relative;border:1px solid var(--line);border-radius:18px;background:#fff;padding:26px 26px 24px;display:flex;flex-direction:column;box-shadow:0 20px 44px -36px rgba(10,15,12,.32);transition:.25s}
.ev-card:hover{transform:translateY(-6px);box-shadow:0 44px 70px -46px rgba(10,15,12,.42);border-color:rgba(14,137,78,.4)}
.ev-top{display:flex;align-items:center;flex-wrap:wrap;gap:10px 13px;margin-bottom:18px}
/* Date row matches the past-event cards: tinted calendar tile, date beside it. */
.ev-date{display:flex;align-items:center;gap:13px;min-width:0}
.ev-date .mo{font-family:var(--mono);font-size:12.5px;letter-spacing:.05em;color:var(--green-deep);text-transform:uppercase}
.ev-top .tag{margin-left:auto}
.ev-top:has(.tag.community) .past-ic{background:var(--orange-soft);color:#a85410}
.ev-top:has(.tag.community) .mo{color:#a85410}
.tag{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:6px 11px;border-radius:8px;background:var(--green-soft);color:var(--green-deep)}
.tag.community{background:var(--orange-soft);color:#a85410}
.ev-card h3{font-family:var(--display);font-weight:700;font-size:21px;letter-spacing:-.02em;line-height:1.15;margin-bottom:10px}
.ev-card .desc{color:var(--ink-soft);font-size:15px;line-height:1.55;margin-bottom:18px}
.ev-meta{display:flex;flex-direction:column;gap:9px;margin-bottom:20px}
.ev-meta div{display:flex;align-items:center;gap:9px;font-size:14px;color:var(--ink-soft)}
.ev-meta svg{flex:0 0 16px;color:var(--green-deep)}
.ev-card .cta{margin-top:auto}
.ev-card .cta .btn{width:100%;justify-content:center}
.ext{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;font-weight:700;font-size:15px;padding:13px 20px;border-radius:13px;border:1.5px solid var(--line);background:#fff;color:var(--ink);transition:.2s}
.ext:hover{border-color:var(--orange);color:var(--orange);transform:translateY(-2px)}
.past-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.past-card{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff;transition:.25s;box-shadow:0 18px 40px -36px rgba(10,15,12,.3)}
.past-card:hover{transform:translateY(-5px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4)}
.past-thumb{position:relative;aspect-ratio:16/10;background:linear-gradient(150deg,#1d6a52,#0f3b2c);display:grid;place-items:center;overflow:hidden}
.past-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.9}
.past-thumb .wm{position:relative;font-family:var(--display);font-weight:800;font-size:34px;color:rgba(255,255,255,.22);letter-spacing:.04em}
.past-body{padding:20px}
.past-body .mo{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--green-deep)}
.past-body h4{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.02em;margin:6px 0 4px}
.past-body .att{font-size:13.5px;color:var(--ink-soft)}
.past-links{display:flex;gap:16px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.past-links a{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink-soft)}
.past-links a:hover{color:var(--green-deep)}
.past-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:36px;gap:20px;flex-wrap:wrap}
.past-head h2{font-family:var(--display);font-weight:700;font-size:clamp(28px,3.4vw,42px);letter-spacing:-.03em}
.past-head p{color:var(--ink-soft);margin-top:8px}
.link-arrow{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--green-deep);transition:color .25s ease}
.link-arrow:hover{color:var(--orange)}
/* Nudge the arrow with a transform rather than widening the gap: animating
   gap reflows the link (and its right-aligned row) on every frame. */
.link-arrow svg,.rail-card .all svg{transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.link-arrow:hover svg,.rail-card .all:hover svg{transform:translateX(4px)}
.band{position:relative;border-radius:28px;overflow:hidden;text-align:center;padding:72px 48px;color:#fff;background:radial-gradient(120% 120% at 0% 0%,#15271f,var(--dark))}
.band h2{font-family:var(--display);font-weight:700;font-size:clamp(28px,3.6vw,44px);letter-spacing:-.03em}
.band p{color:#c5d2cc;font-size:18px;max-width:60ch;margin:16px auto 30px}
.band .conv-blocks{position:absolute;top:-26px;right:-26px;display:grid;grid-template-columns:1fr 1fr;gap:14px;width:160px;height:160px;opacity:.85}
.band .conv-blocks i{border-radius:18px}
.band .conv-blocks i:nth-child(1){background:var(--green)}
.band .conv-blocks i:nth-child(2){background:var(--orange)}
.band .conv-blocks i:nth-child(3){background:var(--orange)}
.band .conv-blocks i:nth-child(4){background:var(--green)}
.note-line{text-align:center;color:var(--ink-soft);font-size:15px;margin-top:40px}
.note-line a{font-weight:700;color:var(--green-deep);transition:color .25s ease}
.note-line a:hover{color:var(--orange)}
.cards-3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.cards-2{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:34px;box-shadow:0 20px 44px -38px rgba(10,15,12,.3);transition:.25s}
.card:hover{transform:translateY(-5px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4)}
.card .ic{width:50px;height:50px;border-radius:13px;display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:11px;background:var(--green-soft);margin-bottom:18px}
.card .ic.o{background:var(--orange-soft)}
.card .ic i{border-radius:4px;background:var(--green)}
.card .ic.o i{background:var(--orange)}
.card .ic i:nth-child(2){background:var(--orange)}
.card .ic.o i:nth-child(2){background:var(--green)}
.card h3{font-family:var(--display);font-weight:700;font-size:21px;letter-spacing:-.02em;margin-bottom:9px}
.card p{color:var(--ink-soft);font-size:15.5px;line-height:1.6}
.split{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.prose p{color:var(--ink-soft);font-size:18px;line-height:1.7;margin-bottom:16px}
.prose ul{margin:0 0 16px;padding-left:24px}
.prose li{color:var(--ink-soft);font-size:18px;line-height:1.7;margin-bottom:8px}
.prose li::marker{color:var(--green)}
.prose h2{font-family:var(--display);font-weight:700;font-size:clamp(28px,3.6vw,44px);letter-spacing:-.03em;line-height:1.06;margin-bottom:8px}
.podcast{display:grid;grid-template-columns:.9fr 1.1fr;gap:0;border:1px solid var(--line);border-radius:24px;overflow:hidden;background:#fff;box-shadow:0 44px 84px -55px rgba(10,15,12,.4)}
.podcast .art{position:relative;overflow:hidden;background:radial-gradient(90% 80% at 25% 15%,rgba(25,224,124,.16),transparent 60%),radial-gradient(70% 60% at 90% 100%,rgba(255,122,20,.12),transparent 60%),var(--dark);min-height:330px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:26px;padding:40px 36px}
.podcast .art::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:28px 28px;-webkit-mask-image:radial-gradient(circle at 50% 45%,#000,transparent 75%);mask-image:radial-gradient(circle at 50% 45%,#000,transparent 75%);pointer-events:none}
.podcast .pc-stack{position:relative;display:flex;align-items:flex-end}
.podcast .pc-cover{width:170px;height:170px;border-radius:16px;transform:rotate(-4deg);box-shadow:0 30px 50px -24px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.08)}
.podcast .pc-guest{margin:0 0 -6px -34px;display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:100px;padding:6px 18px 6px 6px;box-shadow:0 20px 40px -22px rgba(0,0,0,.7)}
.podcast .pc-guest img{width:52px;height:52px;border-radius:100px;object-fit:cover;object-position:50% 20%;border:2px solid var(--green-bright)}
.podcast .pc-guest figcaption{display:flex;flex-direction:column;line-height:1.25}
.podcast .pc-guest b{color:#fff;font-size:14.5px;font-weight:700}
.podcast .pc-guest span{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--orange)}
.podcast .pc-player{position:relative;display:flex;align-items:center;gap:16px;width:100%;max-width:380px;padding:10px 18px 10px 10px;border-radius:100px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);transition:.25s}
.podcast .pc-player:hover{background:rgba(255,255,255,.09);border-color:rgba(25,224,124,.45)}
.podcast .pc-player .play{flex:0 0 auto;width:52px;height:52px;border-radius:100px;background:var(--green-bright);color:#04210f;display:grid;place-items:center;box-shadow:0 12px 30px -10px var(--green-glow);transition:.25s}
.podcast .pc-player:hover .play{transform:scale(1.07)}
.podcast .pc-player .play svg{margin-left:3px}
.podcast .wave{flex:1;display:flex;align-items:center;gap:3px;height:34px}
.podcast .wave i{flex:1;height:var(--h);min-height:3px;border-radius:3px;background:rgba(255,255,255,.28);transition:background .25s}
.podcast .wave i:nth-child(-n+9){background:var(--green-bright)}
.podcast .pc-player:hover .wave i{animation:pc-wave 1s ease-in-out infinite alternate}
.podcast .pc-player:hover .wave i:nth-child(3n){animation-delay:-.4s}
.podcast .pc-player:hover .wave i:nth-child(3n+1){animation-delay:-.7s}
@keyframes pc-wave{to{transform:scaleY(.45)}}
@media(prefers-reduced-motion:reduce){.podcast .pc-player:hover .wave i{animation:none}}
.podcast .dur{font-family:var(--mono);font-size:12px;color:rgba(255,255,255,.65)}
.podcast .pc-body{padding:48px}
.podcast .ep{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--orange)}
.podcast h2{font-family:var(--display);font-weight:700;font-size:clamp(24px,2.6vw,34px);letter-spacing:-.025em;line-height:1.1;margin:8px 0 14px}
.podcast p{color:var(--ink-soft);font-size:16px;line-height:1.6;margin-bottom:24px}
.podcast .where{display:flex;gap:10px;flex-wrap:wrap}
.podcast .where a{font-family:var(--mono);font-size:12.5px;padding:9px 15px;border:1px solid var(--line);border-radius:10px;color:var(--ink-soft);transition:.2s}
.podcast .where a:hover{border-color:var(--green);color:var(--green-deep)}
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.member{text-align:center}
.member .ph-av{aspect-ratio:1;border-radius:20px;overflow:hidden;background:linear-gradient(150deg,var(--green-soft),#fff);border:1px solid var(--line);margin-bottom:16px;position:relative}
.member .ph-av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.member h4{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.01em}
.member .role{font-family:var(--mono);font-size:12px;color:var(--green-deep);margin-top:4px;letter-spacing:.03em}
.contact-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:56px;align-items:start}
/* The mockup sizes "Send us a message." inline; the port left it as a bare
   <h2> with no rule, so it fell back to the UA default (~26px). Restore it. */
.contact-grid h2{font-family:var(--display);font-weight:700;font-size:clamp(26px,3vw,38px);letter-spacing:-.03em;margin-bottom:10px}
/* Kill WordPress's injected 24px flow margin on the intro paragraph so the gap
   under the H2 matches the mockup (the H2's own 10px margin-bottom). */
.contact-grid h2 + p{margin-top:0}
.cfield{display:block;margin-bottom:18px}
.cfield label{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}
.cfield input,.cfield textarea,.cfield select{width:100%;border:1px solid var(--line);border-radius:13px;padding:14px 16px;font-family:var(--body);font-size:16px;color:var(--ink);background:#fff;transition:.2s}
.cfield input:focus,.cfield textarea:focus,.cfield select:focus{outline:none;border-color:var(--green)}
.cfield textarea{min-height:140px;resize:vertical}

/* ---- Gravity Forms (contact) — restyle the orbital theme to match the
   mockup's .cfield form. Scoped to .contact-grid; body prefix lifts specificity
   above Gravity Forms' own .gform_wrapper .gfield rules. ---- */
body .contact-grid .gform_wrapper .gform_heading{display:none}          /* "* indicates required fields" */
body .contact-grid .gform_wrapper .gform_validation_container{display:none !important}  /* honeypot */
body .contact-grid .gform_wrapper .gform_fields{display:block}          /* our margins control spacing */
body .contact-grid .gform_wrapper .gfield{margin-bottom:18px}
body .contact-grid .gform_wrapper .gfield_label{display:block;font-family:var(--mono);font-weight:400;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}
body .contact-grid .gform_wrapper .gfield_required{display:none}        /* mockup labels carry no asterisk */
body .contact-grid .gform_wrapper .ginput_container{margin-top:0}
body .contact-grid .gform_wrapper .gfield input,
body .contact-grid .gform_wrapper .gfield select,
body .contact-grid .gform_wrapper .gfield textarea{width:100%;height:auto;border:1px solid var(--line);border-radius:13px;padding:14px 16px;font-family:var(--body);font-size:16px;line-height:1.4;color:var(--ink);background:#fff;transition:.2s;box-shadow:none}
body .contact-grid .gform_wrapper .gfield select{padding-right:44px;appearance:none;-webkit-appearance:none;background-repeat:no-repeat;background-position:right 16px center;background-size:14px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23566B61' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
body .contact-grid .gform_wrapper .gfield input:focus,
body .contact-grid .gform_wrapper .gfield select:focus,
body .contact-grid .gform_wrapper .gfield textarea:focus{outline:none;border-color:var(--green);box-shadow:none}
body .contact-grid .gform_wrapper .gfield textarea{min-height:140px;resize:vertical}
body .contact-grid .gform_wrapper .gform_footer{margin:4px 0 0;padding:0}
/* !important: Gravity Forms' orbital "framework" styles .button through
   --gf-local-* custom properties in a rule that outranks a plain class chain. */
body .contact-grid .gform_wrapper .gform_footer .gform_button{display:inline-flex;align-items:center;gap:9px;width:auto;font-family:var(--body);font-weight:700;font-size:15px;padding:14px 24px !important;border-radius:13px !important;border:1.5px solid transparent !important;background:var(--green) !important;color:#04210f !important;cursor:pointer;transition:.22s;box-shadow:0 10px 22px -12px rgba(16,196,106,.65),0 2px 5px -2px rgba(11,122,69,.35)}
body .contact-grid .gform_wrapper .gform_footer .gform_button:hover{background:var(--green-hover) !important;transform:translateY(-2px);box-shadow:0 18px 32px -12px rgba(14,137,78,.7),0 3px 7px -2px rgba(11,122,69,.4)}

/* ---- Gravity Forms (newsletter) — email + button in one pill, like the
   mockup's .news .field. Same body-prefix specificity trick as the contact form. ---- */
body .news .gform_wrapper{margin-top:24px}
body .news .gform_wrapper form{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:7px 7px 7px 20px;box-shadow:0 10px 26px -18px rgba(10,15,12,.3);transition:border-color .2s}
body .news .gform_wrapper form:focus-within{border-color:var(--green)}
body .news .gform_wrapper .gform-body{flex:1;min-width:0}
body .news .gform_wrapper .gform_fields{display:block}
body .news .gform_wrapper .gform_validation_container{display:none !important}  /* honeypot */
body .news .gform_wrapper .gform_validation_errors{display:none}  /* one field: the inline message is enough */
body .news .gform_wrapper .gfield input{width:100%;height:auto;border:none;background:none;box-shadow:none;padding:10px 0;font-family:var(--body) !important;font-size:16px !important;color:var(--ink)}
body .news .gform_wrapper .gfield input:focus{outline:none;box-shadow:none}
body .news .gform_wrapper .gfield input::placeholder{font-size:16px !important;color:#757575 !important;opacity:1}
body .news .gform_wrapper .gform_footer{margin:0;padding:0;flex:0 0 auto}
/* !important: GF's orbital framework sets its own height, type and shadow on .button; match .btn.btn-green. */
body .news .gform_wrapper .gform_footer .gform_button{display:inline-flex;align-items:center;height:auto !important;min-height:0 !important;font-family:var(--body) !important;font-weight:700 !important;font-size:15px !important;line-height:24px !important;padding:14px 24px !important;border-radius:13px !important;border:1.5px solid transparent !important;background:var(--green) !important;color:#fff !important;cursor:pointer;transition:.22s;box-shadow:0 10px 22px -12px rgba(16,196,106,.65),0 2px 5px -2px rgba(11,122,69,.35) !important}
body .news .gform_wrapper .gform_footer .gform_button:hover{background:var(--green-hover) !important;transform:translateY(-2px);box-shadow:0 18px 32px -12px rgba(14,137,78,.7),0 3px 7px -2px rgba(11,122,69,.4) !important}
/* Errors: GF puts the message under the input inside the pill; float it below instead. */
body .news .gform_wrapper .gfield{position:relative}
body .news .gform_wrapper .gfield_validation_message{position:absolute;left:-20px;top:calc(100% + 14px);margin:0;padding:0;border:none;background:none;font-size:13.5px;color:#c0392b;white-space:nowrap}
body .news .gform_wrapper.gform_validation_error{margin-bottom:30px}
body .news .gform_confirmation_message{margin-top:24px;background:var(--green-soft);border:1px solid rgba(14,137,78,.25);border-radius:14px;padding:16px 20px;font-size:16px;color:var(--ink)}
body .news .gform_confirmation_message strong{color:var(--green-deep)}
@media(max-width:480px){
  body .news .gform_wrapper form{padding:6px 6px 6px 16px;gap:8px}
  body .news .gform_wrapper .gform_footer .gform_button{padding:14px 18px !important}
  body .news .gform_wrapper .gfield_validation_message{left:-16px}
}

.cinfo{border:1px solid var(--line);border-radius:20px;padding:36px;background:var(--bg-soft)}
.cinfo .row{display:flex;gap:14px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--line)}
.cinfo .row:last-child{border-bottom:none}
.cinfo .row svg{flex:0 0 20px;color:var(--green-deep);margin-top:2px}
.cinfo .row .lab{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}
.cinfo .row .val{font-size:16px;font-weight:600;margin-top:2px}
.res-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.res-card{border:1px solid var(--line);border-radius:18px;background:#fff;overflow:hidden;transition:.25s;box-shadow:0 18px 40px -36px rgba(10,15,12,.3);display:flex;flex-direction:column}
.res-card:hover{transform:translateY(-5px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4)}
.res-thumb{aspect-ratio:16/9;background:linear-gradient(150deg,var(--green-soft),#fff);display:grid;place-items:center;border-bottom:1px solid var(--line)}
.res-thumb.o{background:linear-gradient(150deg,var(--orange-soft),#fff)}
.res-body{padding:26px;display:flex;flex-direction:column;flex:1}
.res-type{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--orange)}
.res-card h3{font-family:var(--display);font-weight:700;font-size:20px;letter-spacing:-.02em;margin:8px 0 8px}
.res-card p{color:var(--ink-soft);font-size:15px;line-height:1.55;margin-bottom:18px}
.res-card .rl{margin-top:auto;font-weight:700;color:var(--green-deep);display:inline-flex;gap:8px;align-items:center}
.pillars{display:flex;flex-wrap:wrap;justify-content:center;gap:24px}
.pillar{flex:0 1 430px;border:1px solid var(--line);border-radius:18px;background:#fff;padding:32px;box-shadow:0 20px 44px -38px rgba(10,15,12,.3);transition:.25s}
.pillar:hover{transform:translateY(-5px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4)}
.pillar .ic{width:54px;height:54px;border-radius:15px;display:grid;place-items:center;margin-bottom:20px;background:var(--green-soft);color:var(--green-deep)}
.pillar.alt .ic{background:var(--orange-soft);color:#a85410}
.pillar .ic svg{width:27px;height:27px}
.pillar h3{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:-.02em;margin-bottom:9px}
.pillar p{color:var(--ink);font-size:15.5px;line-height:1.6}
.bio-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
@media(max-width:1180px){.bio-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){.bio-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.bio-grid{grid-template-columns:1fr}}
.bio{border:1px solid var(--line);border-radius:18px;background:#fff;padding:26px;box-shadow:0 18px 40px -38px rgba(10,15,12,.3);transition:.25s}
.bio:hover{transform:translateY(-4px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4);border-color:rgba(14,137,78,.4)}
.bio .av{width:56px;height:56px;border-radius:15px;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:19px;color:#fff;margin-bottom:16px}
.bio .av.g{background:linear-gradient(150deg,var(--green),var(--green-deep))}
.bio .av.o{background:linear-gradient(150deg,var(--orange),#c95a06)}
.bio h4{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.01em}
.bio .role{font-family:var(--mono);font-size:11.5px;color:var(--green-deep);margin:5px 0 12px;letter-spacing:.03em;text-transform:uppercase}
.bio p{color:var(--ink-soft);font-size:14.5px;line-height:1.6}
@media(max-width:980px){.pillars{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.pillars{grid-template-columns:1fr}}
@media(max-width:980px){
  .feat,.podcast,.contact-grid,.split{grid-template-columns:1fr}
  .feat .img{min-height:300px}
  .ev-grid,.cards-3,.res-grid{grid-template-columns:1fr 1fr}
  .past-grid,.team-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:680px){
  .ev-grid,.cards-3,.cards-2,.res-grid,.past-grid,.team-grid{grid-template-columns:1fr}
  .feat .body,.podcast .pc-body,.band{padding:36px 26px}
  .podcast .art{padding:34px 20px;gap:22px}
  .podcast .pc-cover{width:130px;height:130px}
  .podcast .pc-guest{margin-left:-26px;padding-right:14px;white-space:nowrap}
  .podcast .pc-guest img{width:44px;height:44px}
  .sec{padding:64px 0}
}
.bio{border:1px solid var(--line);border-radius:18px;background:#fff;padding:22px 22px 24px;box-shadow:0 18px 40px -38px rgba(10,15,12,.3);transition:.25s}
.bio:hover{transform:translateY(-4px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4)}
.bio-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}
.bio .hs{width:96px;height:96px;border-radius:50%;object-fit:cover;border:2.5px solid var(--green-soft);background:var(--bg-soft)}
.bio .li{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--ink-soft);border:1px solid var(--line);transition:.2s;flex:0 0 auto}
.bio .li:hover{color:#fff;background:#0A66C2;border-color:#0A66C2}
/* Board bio cards — photo across the top, then name/role with the LinkedIn
   badge beside them, then the bio. Stacked this way the cards stay readable at
   three or four across (see .bio-grid above).
   .bio-top is display:contents so the figure and the LinkedIn link become direct
   grid children and can sit in different rows without touching the markup.
   Columns: [text] [LinkedIn]. The badge spans the name+role rows and is centred
   against them; the photo and the bio paragraph span both columns.

   The photo cancels the card's side padding with negative inline margins and is
   clipped by the card's overflow, so it runs edge to edge.
   Photos come from headshots/board/ — 480px-wide crops with matched face size
   and a small gap above the head, so a square window from the top keeps every
   head at the same height. Most are 480x600; a few are shorter (down to 488px)
   where the source photo ran out below the shoulders. */
.bio{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto auto 1fr;column-gap:12px;padding:0 22px 24px;overflow:hidden;align-items:start}
.bio-top{display:contents}
/* Core's flow layout adds margin-block-start to every non-first child; zero it
   so the explicit margins below are the only thing controlling spacing.
   .bio-top must be listed too: display:contents changes layout, not selector
   matching, so the LinkedIn link is still a CHILD of .bio-top and was picking up
   a 24px top margin that fought align-self:center and pushed it 12px low. */
.bio > *, .bio-top > *{margin-block:0}
/* The img is taken out of flow so the aspect-ratio box alone sets the height. */
.bio .hs{grid-column:1 / -1;grid-row:1;position:relative;aspect-ratio:1;margin:0 -22px 20px;width:auto;height:auto;padding:0;border:0;border-radius:0;background:var(--green-soft);overflow:hidden}
.bio .hs img{position:absolute;inset:0;width:100%;height:100%;border-radius:0;object-fit:cover;object-position:center 15%;display:block}
.bio h4{grid-column:1;grid-row:2;line-height:1.25}
.bio .role{grid-column:1;grid-row:3;margin:3px 0 0;line-height:1.45}
.bio .li{grid-column:2;grid-row:2 / span 2;align-self:center}
.bio > p:not(.role){grid-column:1 / -1;grid-row:4;margin:14px 0 0}
@media(max-width:560px){
  /* One card per row on phones, so go back to the photo alongside the text —
     a full-width square photo would fill the whole screen. */
  .bio{grid-template-columns:38% 1fr auto;grid-template-rows:auto;column-gap:18px;padding:22px 18px 22px 0;align-items:stretch}
  .bio .hs{grid-column:1;grid-row:1 / span 3;aspect-ratio:auto;margin:-22px 0;height:calc(100% + 44px);width:100%}
  .bio .hs img{object-position:center 30%}
  .bio h4{grid-column:2;grid-row:1}
  .bio .role{grid-column:2;grid-row:2}
  .bio .li{grid-column:3;grid-row:1 / span 2}
  .bio > p:not(.role){grid-column:2 / span 2;grid-row:3;margin:12px 0 0;align-self:start}
}
.mission-media::before{content:"";position:absolute;right:-15px;bottom:-15px;width:101%;height:101%;border-radius:26px;background:linear-gradient(135deg,var(--green),var(--orange));opacity:.2;z-index:0}
.logo-strip{display:flex;flex-wrap:wrap;gap:30px 56px;justify-content:center;align-items:center}
.logo-strip img{height:46px;width:auto;max-width:190px;object-fit:contain;transition:.25s}
.logo-strip a:hover img{transform:translateY(-3px)}
.tiers{display:flex;flex-direction:column;gap:18px}
.tier-row{border:1px solid var(--line);border-radius:18px;background:#fff;padding:26px 30px;display:grid;grid-template-columns:200px 1fr;gap:24px;align-items:center;box-shadow:0 18px 40px -38px rgba(10,15,12,.3)}
.tier-row .t-head{display:flex;align-items:center;gap:12px}
.tier-row .t-chip{width:30px;height:30px;display:grid;grid-template-columns:1fr 1fr;gap:3px;flex:0 0 auto}
.tier-row .t-chip i{border-radius:4px}
.tier-row.platinum .t-chip i{background:#9fb1a8}
.tier-row.gold .t-chip i{background:#E0A82E}
.tier-row.silver .t-chip i{background:#AEB8BC}
.tier-row.bizpartner .t-chip i{background:var(--green)}
.tier-row.startup .t-chip i{background:var(--orange)}
.tier-row.community .t-chip i{background:var(--green-deep)}
.tier-row .t-label{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.01em}
/* Equal-width tiles that wrap to a new row instead of squeezing; each logo
   scales to fit inside its tile's padding, so wide wordmarks never spill out. */
.tier-row .slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.tier-row .slot{height:64px;min-width:0;margin:0;padding:0 16px;border:1px dashed var(--line);border-radius:12px;background:var(--bg-soft);display:grid;place-items:center;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#9fb1a8}
.tier-row .slot img{width:auto;height:auto;max-width:100%;max-height:34px;object-fit:contain;mix-blend-mode:multiply}
/* Sponsor logos link out to each company site. Make the whole tile the click
   target and echo the hover lift used by the homepage logo row. */
.tier-row .slot a{display:grid;place-items:center;width:100%;height:100%;transition:.25s}
.tier-row .slot:has(a):hover{border-style:solid;border-color:var(--green);background:#fff}
.tier-row .slot a:hover{transform:translateY(-2px)}
@media(max-width:760px){.tier-row{grid-template-columns:1fr;gap:16px}}
.sponsor-invite{margin-top:88px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(180deg,rgba(16,196,106,.08),#fff 160px);padding:38px 44px;display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap}
.sponsor-invite .si-text{flex:1 1 320px}
.sponsor-invite h3{font-family:var(--display);font-weight:700;font-size:24px;letter-spacing:-.02em;margin-bottom:8px}
.sponsor-invite p{color:var(--ink);font-size:17px;line-height:1.55;max-width:80ch}
.sponsor-invite .btn{margin-top:0;flex:0 0 auto}
@media(max-width:600px){
  .tier-row .slots{grid-template-columns:1fr 1fr;gap:12px}
  .tier-row .slot{padding:0 12px}
  .tier-row .slot img{max-height:30px}
}
.feat .img{position:relative;min-height:440px;background:linear-gradient(150deg,#2d3138,var(--dark))}
.past-card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:26px 24px 22px;transition:.25s;box-shadow:0 18px 40px -36px rgba(10,15,12,.3);display:flex;flex-direction:column}
.past-card:hover{transform:translateY(-5px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4);border-color:rgba(14,137,78,.4)}
.past-row{display:flex;align-items:center;gap:13px;margin-bottom:16px}
.past-ic{width:44px;height:44px;border-radius:12px;background:var(--green-soft);color:var(--green-deep);display:grid;place-items:center;flex:0 0 auto}
.past-ic svg{width:22px;height:22px}
.past-card.alt .past-ic{background:var(--orange-soft);color:#a85410}
.past-card .mo{font-family:var(--mono);font-size:12.5px;letter-spacing:.05em;color:var(--green-deep);text-transform:uppercase}
.past-card h4{font-family:var(--display);font-weight:700;font-size:19px;letter-spacing:-.02em;margin-bottom:9px;line-height:1.15}
.past-card .att{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft)}
.past-card .att svg{width:16px;height:16px;color:var(--ink-soft)}
.past-links{display:flex;gap:16px;margin-top:auto;padding-top:16px;border-top:0}
.photo-strip{width:100vw;margin-left:calc(50% - 50vw);margin-top:6px;margin-bottom:6px}
/* In page content the strip is an alignfull block: WordPress's constrained
   layout would otherwise cap it at the 1480px content width (with !important
   margins that beat the 100vw bleed above). Full-width blocks only need to
   cancel the root padding. */
.photo-strip.alignfull{width:auto;max-width:none;margin-top:0;margin-bottom:0;margin-left:calc(var(--wp--style--root--padding-left,0px) * -1) !important;margin-right:calc(var(--wp--style--root--padding-right,0px) * -1) !important}
.strip-row{display:flex;gap:0;height:clamp(210px,26vw,340px)}
.strip-img{flex:1 1 0;overflow:hidden;position:relative}
.strip-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}
.strip-img:hover img{transform:scale(1.06)}
@media(max-width:760px){.strip-row{height:190px}.strip-img:nth-child(n+4){display:none}}
.res-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:24px}
.res-grid .res-card{flex:0 1 340px}
.res-thumb{position:relative;aspect-ratio:16/10;background:var(--bg-soft);display:grid;place-items:center;overflow:hidden;border-bottom:1px solid var(--line)}
/* Contain (not crop) — these images carry text — inside a 20px frame; the soft
   brand tint shows through the letterbox. Absolute box so contain is reliable. */
.res-thumb img{position:absolute;inset:20px;width:calc(100% - 40px);height:calc(100% - 40px);object-fit:contain}
.res-card .res-thumb:has(img){background:linear-gradient(150deg,var(--green-soft),#fff)}

/* ---- Resources page refinements ---- */
/* Featured image: contain it (it has text) on the dark panel, framed by 32px. */
.feat .img img{position:absolute;inset:32px;width:calc(100% - 64px);height:calc(100% - 64px);object-fit:contain}
/* Card eyebrow (Toolkit/Guide/…) is a <p>, so .res-card p was overriding it to
   15px/ink — restore the mockup's small orange label. */
.res-card p.res-type{font-size:11.5px;color:var(--orange)}
/* Tighten the gap between a card's title and its description (WP injects 24px). */
.res-body h3 + p{margin-top:0}
/* Featured CTA: WordPress injects a 24px top margin on the 2nd flow child (the
   scorecard link); zero it so the button and link center on each other. */
.feat .feat-cta > *{margin-block:0}
.cinfo .csoc-wrap .lab{margin-bottom:10px}
.csoc{display:flex;gap:12px;flex-wrap:wrap}
.csoc a{display:inline-flex;align-items:center;gap:9px;padding:10px 16px;border:1px solid var(--line);border-radius:12px;color:var(--ink);font-weight:600;font-size:14.5px;transition:.2s}
.csoc a:hover{border-color:var(--green);color:var(--green-deep);background:var(--green-soft)}
.tier-row.bizpartner .t-chip i:nth-child(1),.tier-row.bizpartner .t-chip i:nth-child(4){background:var(--green)}
.tier-row.bizpartner .t-chip i:nth-child(2),.tier-row.bizpartner .t-chip i:nth-child(3){background:var(--orange)}
.tier-row.startup .t-chip i:nth-child(1),.tier-row.startup .t-chip i:nth-child(4){background:var(--orange)}
.tier-row.startup .t-chip i:nth-child(2),.tier-row.startup .t-chip i:nth-child(3){background:var(--green)}
/* Only the become-a-member pricing cards (.tiers > .tier) use the 3-col grid;
   the members sponsor tiers (.tiers > .tier-row) keep the flex column above. */
.tiers:has(> .tier){display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:stretch}
.tier{position:relative;border:1px solid var(--line);border-radius:20px;background:#fff;padding:42px 34px 34px;box-shadow:0 28px 56px -42px rgba(10,15,12,.32);display:flex;flex-direction:column;transition:.25s}
.tier:hover{transform:translateY(-6px);box-shadow:0 50px 80px -46px rgba(10,15,12,.4)}
.tier::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;border-radius:20px 20px 0 0;background:var(--green)}
.tier.feat::before{background:var(--orange)}
.tier.feat{border-color:rgba(255,122,20,.4)}
.tier .tag-pop{position:absolute;top:18px;right:18px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#a85410;background:var(--orange-soft);padding:5px 10px;border-radius:7px}
.tier .tname{font-family:var(--display);font-weight:700;font-size:25px;letter-spacing:-.02em}
.tier .tfor{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin-top:7px}
.tier ul{list-style:none;margin:22px 0 28px;flex:1}
.tier li{display:flex;gap:11px;align-items:flex-start;padding:13px 0;border-top:1px solid rgba(10,15,12,.07)}
.tier li:first-child{border-top:none}
.tier li svg{flex:0 0 18px;margin-top:3px}
.tier li b{font-weight:600;font-size:15px}
.tier li span{color:var(--ink-soft);display:block;font-size:13.5px;margin-top:3px;line-height:1.5}
.tier .btn{justify-content:center;width:100%}
@media(max-width:980px){.tiers:has(> .tier){grid-template-columns:1fr;max-width:520px;margin:0 auto}}

/* ============================================================
   WordPress block-editor integration
   Maps core blocks onto the BBA design system so the mockup
   renders identically whether authored in the editor or here.
   ============================================================ */

/* Header/footer template parts render as <header>/<footer>,
   which the base rules above already target. Remove the block
   wrapper's default constraints. */
.wp-block-template-part { margin: 0; }

/* Editor canvas background matches the site. */
.editor-styles-wrapper { background: var(--bg); }

/* Post content should not impose its own max-width — our full-width
   sections + inner .wrap control the layout, exactly like the mockup. */
.bba-content > * { max-width: none; }

/* .wrap re-centers content inside alignfull sections. */
.wrap { width: 100%; }

/* Core blocks used as layout wrappers shouldn't add their own vertical
   rhythm where our named sections already define spacing. */
.hero .wp-block-group,
.section > .wrap > .wp-block-group,
.sec > .wrap > .wp-block-group { margin-block: 0; }

/* ...but the section-head keeps its intended gap before the content below it
   (the reset above zeroed the .sec-head margin-bottom on every page). */
.section > .wrap > .sec-head,
.sec > .wrap > .sec-head { margin-bottom: 52px; }

/* ...and the sponsor invite keeps its gap above (the reset zeroed the margin). */
.sec > .wrap > .sponsor-invite,
.section > .wrap > .sponsor-invite { margin-top: 88px; }

/* ...and the past-events header keeps its gap before the cards. */
.sec > .wrap > .past-head,
.section > .wrap > .past-head { margin-bottom: 36px; }

/* Home: the hero CTA row keeps its gap above (the `.hero .wp-block-group`
   reset zeroed it), and WordPress's injected top margin on the "Watch Video"
   link is cleared so it centers with the button. */
.hero .hero-cta { margin-top: 34px; }
.hero-cta > * { margin-block: 0; }

/* Home: section intros/grids the reset zeroed keep their gap before the cards. */
.section.quotes > .wrap > .intro { margin-bottom: 40px; }
.section > .wrap > .paths { margin-top: 52px; }

/* Eyebrow labels are <p>, so a container's `p` rule (.sec-head p, .prose p)
   overrides their size/color — restore the mockup's small orange eyebrow. */
.sec-head .eyebrow-m,
.prose .eyebrow-m,
.split .prose .eyebrow-m { font-size: 12.5px; color: var(--orange); }

/* Pricing-card CTA buttons run full width, like the mockup's .tier .btn. */
.tiers .tier .wp-block-button,
.tiers .tier .wp-block-button__link { width: 100%; }
.tiers .tier .wp-block-button__link { justify-content: center; }

/* Corporate & sponsorship band: center the button (height now comes from the
   global button line-height). */
.band .wp-block-buttons { justify-content: center; }

/* A bit more breathing room above the CTA button inside prose sections. */
.prose .wp-block-buttons { margin-top: 28px; }

/* WordPress gives these grids the `is-layout-flow` class, so it injects
   `:where(.is-layout-flow) > * { margin-block-start: 24px }` on every child
   after the first. On a CSS grid that misaligns columns and adds phantom row
   gaps. Zero it on the grid children so each grid's own `gap` controls spacing.
   (Do NOT touch the container's `gap` — this stylesheet isn't in a cascade
   layer, so `gap: revert-layer` there resolves to `revert` and wipes the gap.) */
.paths > *, .qgrid > *, .bio-grid > *, .res-grid > *, .team-grid > *, .ev-grid > *,
.cards-3 > *, .cards-2 > *, .tiers > *, .pillars > *, .logo-row > *, .stats > *,
.mission-row > *, .hero-grid > *, .contact-grid > *, .split > *, .mship-grid > *,
.news > *, .news-art > *, .feat > *, .mcta > *, .podcast > *, .past-grid > *,
.foot-top > *, .foot-cols > * {
	margin-block: 0;
}

/* ---- Buttons: core/button block styles ---- */
.wp-block-button.is-style-bba-fill > .wp-block-button__link,
.wp-block-button.is-style-bba-green > .wp-block-button__link,
.wp-block-button.is-style-bba-outline > .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-family: var(--body);
	font-weight: 700;
	font-size: 15px;
	padding: 14px 24px;
	border-radius: 13px;
	transition: .22s;
	border: 1.5px solid transparent;
	white-space: nowrap;
	text-decoration: none;
	line-height: 1.6;
}
.wp-block-button.is-style-bba-fill > .wp-block-button__link {
	background: var(--ink);
	color: #fff;
	box-shadow: 0 10px 22px -12px rgba(10,15,12,.55), 0 2px 5px -2px rgba(10,15,12,.3);
}
.wp-block-button.is-style-bba-fill > .wp-block-button__link:hover {
	transform: translateY(-2px);
	box-shadow: 0 18px 34px -14px rgba(10,15,12,.6), 0 3px 7px -2px rgba(10,15,12,.35);
}
.wp-block-button.is-style-bba-green > .wp-block-button__link {
	background: var(--green);
	color: #fff;
	box-shadow: 0 10px 22px -12px rgba(16,196,106,.65), 0 2px 5px -2px rgba(11,122,69,.35);
}
.wp-block-button.is-style-bba-green > .wp-block-button__link:hover {
	background: var(--green-hover);
	transform: translateY(-2px);
	box-shadow: 0 18px 32px -12px rgba(14,137,78,.7), 0 3px 7px -2px rgba(11,122,69,.4);
}
.wp-block-button.is-style-bba-outline > .wp-block-button__link {
	background: #fff;
	border-color: var(--line);
	color: var(--ink);
	box-shadow: 0 6px 16px -10px rgba(10,15,12,.35);
}
.wp-block-button.is-style-bba-outline > .wp-block-button__link:hover {
	border-color: var(--ink);
	transform: translateY(-2px);
	box-shadow: 0 12px 24px -12px rgba(10,15,12,.4);
}

/* Navigation block inside the header, styled like the mockup nav links. */
.nav .wp-block-navigation .wp-block-navigation-item__content {
	font-size: 15px;
	font-weight: 600;
	color: var(--ink-soft);
	padding: 9px 15px;
	border-radius: 10px;
	transition: .2s;
}
.nav .wp-block-navigation .wp-block-navigation-item__content:hover {
	color: var(--ink);
	background: rgba(14,137,78,.09);
}

/* Core paragraph/heading defaults inside our sections shouldn't fight
   the mockup's explicit margins. */
.wrap .wp-block-heading { margin-top: 0; }
.wrap .triad { margin-top: 18px; }

/* ===================================================================
   v2 — core-block compatibility (maximize native, editable blocks)
   The design system uses explicit margins (like the mockup), so we
   disable WordPress' automatic vertical block spacing inside content
   and let the mockup rules below own all spacing.
   =================================================================== */
:where(.bba-content) :where(.is-layout-flow, .is-layout-constrained) > * + * { margin-block-start: 0; }
.bba-content :where(.wp-block-group){ margin-block: 0; }

/* core/image used as framed media keeps the .ph frame */
figure.wp-block-image { margin: 0; }
.wp-block-image.ph { aspect-ratio: 4/3; display: block; }
.wp-block-image.ph img { width: 100%; height: 100%; border-radius: inherit; }
.news-art .wp-block-image.ph { aspect-ratio: 3/2; }
.collage .wp-block-image.ph { aspect-ratio: auto; }
/* wide group photo in a single framed slot: match the photo's 3:2 shape */
.wp-block-image.ph.ph-wide { aspect-ratio: 3/2; }

/* eyebrow pill: render the leading dot via CSS so the label is a plain paragraph */
p.eyebrow { margin: 0; }
.eyebrow:not(:has(.dot))::before { content: ""; width: 8px; height: 8px; border-radius: 1px; background: var(--green); flex: 0 0 auto; }

/* small mono labels / meta rendered as paragraphs — no default margins */
p.kicker, p.eyebrow-m, p.who, p.qname, p.qrole, p.qmark, p.n, p.l, p.res-type,
p.ep, p.role, p.t-name, p.t-desc, p.cap { margin: 0; }
/* display:block so a center-aligned eyebrow actually centers its inline-block box. */
.has-text-align-center.eyebrow-m { display: block; text-align: center; }
.kicker.center { text-align: center; justify-content: center; }

/* core/buttons rows sit flush inside our flex CTA containers */
.wp-block-buttons { margin: 0; }
.hero-cta .wp-block-buttons, .feat-cta .wp-block-buttons, .m-cta .wp-block-buttons,
.mc-cta .wp-block-buttons, .feat .wp-block-buttons { margin: 0; }

/* stats built from groups */
.stat .n { margin: 0; }
.stat .l { margin-top: 9px; }

/* quotes: core/quote inside .qcard */
.qcard .wp-block-quote { border: none; padding: 0; margin: 18px 0 26px; flex: 1 1 auto; }
.qcard .wp-block-quote p { margin: 0; font: inherit; letter-spacing: inherit; color: inherit; }

/* partner / member logo rows built from core/image blocks */
.logo-row .wp-block-image { margin: 0; }
.logo-row .wp-block-image img { height: 52px; width: auto; max-width: 180px; object-fit: contain; }
.logo-row .wp-block-image:first-child img { height: 100px; }

/* path checklists as core/list with CSS check markers */
.path .wp-block-list { list-style: none; margin: 24px 0 32px; padding: 0; }
.path .wp-block-list li { display: flex; gap: 13px; align-items: center; padding: 13px 0; font-size: 15.5px; font-weight: 500; border-top: 1px solid rgba(10,15,12,.08); }
.path .wp-block-list li::before { content: ""; flex: 0 0 18px; width: 18px; height: 18px; background-repeat: no-repeat; background-position: center; }
.path.ind .wp-block-list li::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Cpath d='M3 9l4 4 8-9' stroke='%2310C46A' stroke-width='2.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.path.org .wp-block-list li::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Cpath d='M3 9l4 4 8-9' stroke='%23FF7A14' stroke-width='2.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }

/* generic green-check list (mcta / membership feature lists) */
.check-list .wp-block-list, ul.check-list { list-style: none; margin: 0; padding: 0; }
.check-list li { display: flex; gap: 10px; align-items: flex-start; padding: 6px 0; font-size: 15px; }
.check-list li::before { content: ""; flex: 0 0 18px; width: 18px; height: 18px; margin-top: 2px; background-repeat: no-repeat; background-position: center; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Cpath d='M3 9l4 4 8-9' stroke='%2310C46A' stroke-width='2.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }

/* team/bio/pillar/resource/event/tier cards built as groups keep their frames */
.bba-content .wp-block-group.pillar, .bba-content .wp-block-group.bio,
.bba-content .wp-block-group.res-card, .bba-content .wp-block-group.ev-card,
.bba-content .wp-block-group.tier, .bba-content .wp-block-group.member { margin: 0; }
.res-card .wp-block-image, .ev-card .wp-block-image { margin: 0; }


/* =========================================================================
   Single event (past-event summary) — templates/single-bba_event.html.
   The hero, rail, speakers and gallery are rendered by inc/events.php; the
   recap prose is the post content, so these rules have to cover both the
   hand-written markup and the core blocks an editor types into it.
   ========================================================================= */

/* Section padding utilities the single-event template composes with. */
.sec.pt-0{padding-top:0}
.sec.pt-tight{padding-top:24px}

/* The recap column is core/post-content: strip the wrapper's own layout so the
   .recap rules below own the rhythm, exactly like the mockup's <article>. */
.recap > .entry-content,
.recap .wp-block-post-content{max-width:none}
.recap > *{margin-block:0}
.recap .wp-block-heading{margin-top:0}
.recap .wp-block-list{list-style:none;margin:6px 0 4px;padding:0}
.recap .wp-block-list:not(.check-list) li{margin-left:20px;list-style:disc}

/* Pull quote: authored as a core/quote with the "BBA Pull Quote" block style,
   so the mockup's separate .qmark element becomes a ::before. Left unscoped so
   the block previews the same way inside the editor canvas. */
.wp-block-quote.is-style-bba-pull,
.recap blockquote.pull{border:none;padding:0;margin:36px 0 34px}
.wp-block-quote.is-style-bba-pull::before,
.recap blockquote.pull::before{content:"\201C";display:block;font-family:var(--display);font-weight:800;font-size:54px;line-height:.5;color:var(--green);height:26px}
.wp-block-quote.is-style-bba-pull p,
.recap blockquote.pull p{font-family:var(--display);font-weight:600;font-size:clamp(19px,2vw,23px);line-height:1.4;letter-spacing:-.018em;color:var(--ink);margin:22px 0 14px;max-width:min(38ch,100%)}
.wp-block-quote.is-style-bba-pull cite,
.recap blockquote.pull cite{font-family:var(--mono);font-style:normal;font-size:12px;letter-spacing:.04em;color:var(--green-deep)}

/* Grid children: kill core's injected flow margin (same reason as the list
   further up this file). */
.sp-grid > *, .gallery > *, .evs-hero-grid > *, .evs-body > *, .evs-meta > *{margin-block:0}


/* ---- Hero ---- */
.evs-hero{position:relative;padding:104px 0 60px}
.back-link{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:12.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);transition:.2s}
.back-link:hover{color:var(--green-deep);gap:13px}
.back-link svg{width:15px;height:15px}
.evs-hero-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:60px;align-items:center;margin-top:30px}
.evs-labels{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tag.past{background:var(--bg-soft);color:var(--ink-soft);border:1px solid var(--line)}
.evs-hero h1{font-family:var(--display);font-weight:800;font-size:clamp(33px,4.4vw,56px);letter-spacing:-.035em;line-height:1.04;margin:20px 0 0;text-wrap:balance}
.evs-hero p.sub{font-size:19px;color:var(--ink);max-width:52ch;margin-top:18px;line-height:1.6}
/* Facts and CTAs share one grid, so "See Upcoming Events" lands in the same
   column as Time and Attendance instead of floating between the two. */
.evs-meta{display:grid;grid-template-columns:auto auto;justify-content:start;column-gap:34px;row-gap:20px;margin-top:32px;padding-top:28px;border-top:1px solid var(--line)}
.evs-meta .fact{display:flex;align-items:flex-start;gap:12px}
.evs-meta .fact svg{flex:0 0 20px;color:var(--green-deep);margin-top:3px}
.evs-meta .lab{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}
.evs-meta .val{font-size:15.5px;font-weight:600;margin-top:4px;line-height:1.35}
.evs-meta .fact.wide{grid-column:1/-1}
.evs-meta .fact.wide .val{max-width:46ch}
.evs-meta .btn{justify-self:start;margin-top:14px}
/* Events carry different numbers of facts, so pin the first CTA to column 1:
   grid then breaks to a new row instead of tucking a button beside a fact. */
.evs-meta a.btn:first-of-type{grid-column:1}

/* Event photo. Falls back to the brand placeholder when no image is set. */
/* Header photo. Falls back to the placeholder tile when none has been added. */
.evs-media{position:relative;aspect-ratio:3/2;border-radius:24px;overflow:hidden;background:radial-gradient(120% 120% at 25% 15%,#15271f,var(--dark));display:grid;place-items:center;box-shadow:0 50px 90px -55px rgba(10,15,12,.55)}
.evs-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.evs-media .ph-in{text-align:center;color:#7f9189}
.evs-media .ph-in .lbl{margin-top:12px;font-family:var(--mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase}

/* ---- Recap body + rail ---- */
.evs-body{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:68px;align-items:start;max-width:1060px;margin:0 auto}
.recap h2{font-family:var(--display);font-weight:700;font-size:clamp(26px,3vw,36px);letter-spacing:-.03em;line-height:1.08;margin-bottom:18px}
.recap h3{font-family:var(--display);font-weight:700;font-size:20px;letter-spacing:-.02em;margin:34px 0 12px}
.recap p{color:var(--ink);font-size:17.5px;line-height:1.72;margin-bottom:18px;max-width:66ch}
.recap ul.check-list{margin:6px 0 4px}
.recap .check-list li{font-size:16px;line-height:1.6;padding:9px 0;max-width:64ch}
.recap .check-list li::before{margin-top:4px}
.pull{margin:36px 0 34px}
.pull .qmark{font-family:var(--display);font-weight:800;font-size:54px;line-height:.5;color:var(--green);height:26px}
.pull blockquote{font-family:var(--display);font-weight:600;font-size:clamp(19px,2vw,23px);line-height:1.4;letter-spacing:-.018em;color:var(--ink);margin:22px 0 14px;max-width:38ch}
.pull cite{font-family:var(--mono);font-style:normal;font-size:12px;letter-spacing:.04em;color:var(--green-deep)}

.evs-rail{position:sticky;top:96px;display:flex;flex-direction:column;gap:20px}
.rail-card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:24px;box-shadow:0 18px 40px -38px rgba(10,15,12,.3)}
.rail-card h3{font-family:var(--mono);font-weight:500;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:16px}
.watch{display:block;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 18px 40px -36px rgba(10,15,12,.3);transition:.25s}
.watch:hover{transform:translateY(-4px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4);border-color:rgba(14,137,78,.45)}
.watch .thumb{position:relative;aspect-ratio:16/9;background:radial-gradient(120% 120% at 30% 20%,#15271f,var(--dark));display:grid;place-items:center}
.watch .thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.85}
.watch .play{position:relative;width:60px;height:60px;border-radius:100px;background:var(--green);display:grid;place-items:center;box-shadow:0 18px 40px -16px var(--green-glow)}
.watch .play svg{width:20px;height:20px;color:#fff;margin-left:4px}
.watch .wbody{padding:18px 20px 20px}
.watch .wbody .lab{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}
.watch .wbody .val{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:-.01em;margin-top:6px}
.watch .wbody .go{display:inline-flex;align-items:center;gap:7px;margin-top:12px;font-size:14px;font-weight:700;color:var(--green-deep)}

.rlinks{display:flex;flex-direction:column}
.rlinks a{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line);font-size:14.5px;font-weight:600;line-height:1.3;transition:.2s}
.rlinks a:first-child{border-top:none;padding-top:0}
.rlinks a:last-child{padding-bottom:0}
.rlinks a:hover{color:var(--green-deep)}
.rlinks svg{flex:0 0 18px;width:18px;height:18px;color:var(--ink-soft)}
.rlinks .sz{margin-left:auto;font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--ink-soft);white-space:nowrap}
.nextup{display:flex;align-items:center;gap:14px}
.nextup .nu-t{font-family:var(--display);font-weight:700;font-size:15.5px;letter-spacing:-.01em;line-height:1.25}
.nextup .nu-m{font-size:13px;color:var(--ink-soft);margin-top:4px}
.evs-all{width:100%;justify-content:center}
.rail-card .all{display:inline-flex;align-items:center;gap:8px;margin-top:16px;font-size:14px;font-weight:700;color:var(--green-deep);transition:color .25s ease}
.rail-card .all:hover{color:var(--orange)}

/* ---- Speakers ----
   Compact cards: a small round portrait, the name and role, and a LinkedIn
   badge. The earlier full-width square photos dominated the page on phones. */
.sp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
/* Fewer than four speakers: fill the row instead of leaving dead columns. */
.sp-grid.cols-1{grid-template-columns:minmax(0,440px)}
.sp-grid.cols-2{grid-template-columns:repeat(2,1fr)}
.sp-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.speaker{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:15px;align-items:center;border:1px solid var(--line);border-radius:18px;background:#fff;padding:18px 18px 18px 18px;box-shadow:0 18px 40px -38px rgba(10,15,12,.3);transition:.25s}
.speaker:hover{transform:translateY(-4px);box-shadow:0 40px 64px -46px rgba(10,15,12,.4);border-color:rgba(14,137,78,.4)}
.sp-photo{position:relative;width:72px;height:72px;border-radius:50%;overflow:hidden;background:var(--green-soft);border:2px solid var(--green-soft)}
.sp-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 22%}
/* No headshot on file: the initials tile, same idiom as the quote avatars. */
.sp-init{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:22px;color:#fff;background:linear-gradient(150deg,var(--green),var(--green-deep))}
.sp-init.o{background:linear-gradient(150deg,var(--orange),#c95a06)}
.speaker h4{font-family:var(--display);font-weight:700;font-size:16.5px;letter-spacing:-.01em;line-height:1.3}
.sp-mod{display:inline-block;font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--green-deep);background:var(--green-soft);padding:3px 7px;border-radius:6px;margin-left:4px;vertical-align:2px}
.speaker .role{font-family:var(--mono);font-size:11px;color:var(--green-deep);margin:6px 0 0;line-height:1.45;letter-spacing:.01em}
.speaker .li{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:var(--ink-soft);border:1px solid var(--line);transition:.2s}
.speaker .li:hover{color:#fff;background:#0A66C2;border-color:#0A66C2}

/* ---- Photo gallery ---- */
/* The section's own top padding mostly clears the sticky header; this tops it up for the rail's jump link. */
#event-photos{scroll-margin-top:32px}
.gallery{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:266px;gap:16px}
.gallery.g1{grid-template-columns:1fr;grid-auto-rows:auto}
.gallery.g1 .gph{aspect-ratio:16/9}
.gallery.g2{grid-template-columns:repeat(2,1fr)}
.gallery.g3{grid-template-columns:repeat(3,1fr)}
.gph{position:relative;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(150deg,var(--green-soft),#fff 68%);display:grid;place-items:center}
.gph.o{background:linear-gradient(150deg,var(--orange-soft),#fff 68%)}
.gph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gph .ph-in{text-align:center;color:#9fb1a8}
.gph .ph-in .lbl{margin-top:9px;font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase}
.gallery.mosaic .gph:nth-child(1){grid-column:span 2;grid-row:span 2}

/* ---- Responsive ---- */
@media(max-width:1180px){
  .evs-body{grid-template-columns:minmax(0,1fr) 310px;gap:48px}
  .sp-grid,.sp-grid.cols-3{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:1080px){
  .evs-body{grid-template-columns:1fr;gap:46px;max-width:720px}
  .evs-rail{position:static;display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:20px}
  .recap p,.recap .check-list li,.pull blockquote{max-width:none}
}
@media(max-width:980px){
  .evs-hero{padding:92px 0 44px}
  .evs-hero-grid{grid-template-columns:1fr;gap:36px}
  .evs-media{aspect-ratio:3/2}
  .gallery,.gallery.g3{grid-template-columns:repeat(2,1fr);grid-auto-rows:210px}
}
@media(max-width:680px){
  .evs-hero{padding:80px 0 36px}
  .evs-meta{grid-template-columns:1fr;row-gap:16px;margin-top:26px;padding-top:24px}
  .evs-meta .btn{justify-self:stretch;width:100%;justify-content:center;margin-top:8px}
  .evs-meta .btn + .btn{margin-top:0}
  .evs-rail{grid-template-columns:1fr}
  .sp-grid,.sp-grid.cols-2,.sp-grid.cols-3{grid-template-columns:1fr}
  .gallery{grid-auto-rows:158px;gap:12px}
  .gallery.mosaic .gph:nth-child(1){grid-column:span 2;grid-row:span 1}
  .recap h2{margin-bottom:14px}
}

/* The shared .band decoration is sized for desktop; on phones the blocks land on
   top of the heading. Shrink them and lift the text above. */
@media(max-width:680px){
  .band .conv-blocks{width:104px;height:104px;gap:10px;top:-18px;right:-18px;opacity:.6}
  .band h2,.band p,.band .btn{position:relative;z-index:1}
}

/* ---- Events: two featured events side by side ----
   Normally one flagship event fills the featured slot; when two are flagged
   (back-to-back in-person events) each card stacks its image over its text. */
.feat-pair{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:stretch}
.feat-pair .feat{grid-template-columns:1fr;grid-template-rows:auto 1fr}
.feat-pair .feat .img{min-height:280px}
.feat-pair .feat .body{padding:38px 40px 42px;justify-content:flex-start}
.feat-pair .feat h2{font-size:clamp(24px,2.3vw,32px)}
.feat-pair .feat .blurb{margin:20px 0 28px}
.feat-pair .feat .feat-cta{margin-top:auto}
.feat-all{text-align:center;margin-top:30px !important}
.feat-all .all-link{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--green-deep);transition:color .25s ease}
.feat-all .all-link:hover{color:var(--orange)}
@media(max-width:980px){.feat-pair{grid-template-columns:1fr;gap:24px}.feat-pair .feat .img{min-height:240px}}
@media(max-width:520px){.feat-pair .feat .body{padding:30px 24px 32px}}

/* Past event cards: the Brief Description, clamped so a long one can't
   stretch its row — the full text is the deck on the event page. */
.past-card .past-sum{font-size:14.5px;line-height:1.55;color:var(--ink-soft);margin:0 0 10px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}

/* ---- Event image fallback ----
   For events with no photo or flyer: the brand gradient, the logo's 2x2
   blocks cropped off the top corner, and the event's name over it. Sized off
   its own width (container units) so the same markup works in the featured
   card, the event hero and the small recording thumbnail. `.o` is the
   orange-led variant. */
.ev-art{position:absolute;inset:0;overflow:hidden;container-type:inline-size;display:flex;align-items:flex-end;padding:clamp(22px,7%,52px);color:#fff;text-align:left;
  background:
    radial-gradient(75% 85% at 0% 0%,rgba(25,224,124,.34),transparent 62%),
    radial-gradient(70% 80% at 100% 100%,rgba(255,122,20,.40),transparent 64%),
    linear-gradient(150deg,#0f3b2c,#13211b 55%,var(--dark))}
.ev-art.o{background:
    radial-gradient(75% 85% at 0% 0%,rgba(255,122,20,.38),transparent 62%),
    radial-gradient(70% 80% at 100% 100%,rgba(25,224,124,.30),transparent 64%),
    linear-gradient(150deg,#3b230f,#1f1a15 55%,var(--dark))}
/* faint grid, fading out toward the text */
.ev-art::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(90% 90% at 100% 0%,#000,transparent 70%);mask-image:radial-gradient(90% 90% at 100% 0%,#000,transparent 70%)}
.ev-art-blocks{position:absolute;top:-7cqw;right:-7cqw;width:40cqw;aspect-ratio:1;display:grid;grid-template-columns:1fr 1fr;gap:3.4cqw;transform:rotate(-8deg)}
.ev-art-blocks i{border-radius:4.2cqw}
.ev-art-blocks i:nth-child(1){background:var(--green)}
.ev-art-blocks i:nth-child(2){background:var(--orange)}
.ev-art-blocks i:nth-child(3){border:max(2px,.9cqw) solid var(--orange)}
.ev-art-blocks i:nth-child(4){border:max(2px,.9cqw) solid var(--green-bright);opacity:.8}
.ev-art.o .ev-art-blocks i:nth-child(1){background:var(--orange)}
.ev-art.o .ev-art-blocks i:nth-child(2){background:var(--green)}
.ev-art.o .ev-art-blocks i:nth-child(3){border-color:var(--green-bright)}
.ev-art.o .ev-art-blocks i:nth-child(4){border-color:var(--orange)}
.ev-art-text{position:relative;max-width:70%}
.ev-art-kicker{display:block;margin-bottom:1.1em;font-family:var(--mono);font-size:clamp(10px,2cqw,13px);letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.ev-art-title{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;font-family:var(--display);font-weight:700;font-size:clamp(20px,6.2cqw,46px);line-height:1.06;letter-spacing:-.03em;text-wrap:balance}
/* The recording thumbnail gets the art without text; keep the play button on top. */
.watch .thumb .ev-art + .play{z-index:1}

/* Upcoming events with no registration link yet: a quiet label where the
   button would be, so the card still ends on the same line as its row. */
.ext.soon,.ext.soon:hover{color:var(--ink-soft);opacity:.6;border-style:dashed;transform:none;cursor:default}
.feat .soon{font-family:var(--mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);opacity:.65}
.ev-card h3 a{color:inherit}
.ev-card h3 a:hover{color:var(--green-deep)}

/* heavy wordmarks (Aon, the stacked Ava Labs mark) sit smaller so the row reads evenly */
.logo-row .wp-block-image.logo-sm img { height: 62px; }
@media (max-width: 640px) {
  .partners .logo-row .wp-block-image.logo-sm img { height: 38px; }
}

/* ---- Become a Member: [bba_join] checkout forms ----
   The form stands in for core/buttons; the honeypot field stays off-screen. */
.bba-join{margin:0;position:relative}
.bba-join-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.bba-join button.wp-block-button__link{cursor:pointer;-webkit-appearance:none;appearance:none}
.bba-join .cf-turnstile{margin-bottom:12px}

/* ---- Legislators Scorecard (page 57) ----
   Long-form report: section headings, vote tables, quick links, and one
   card per legislator (core/image + a .leg-body group). */
.leg-sec .prose h2{margin:0 0 18px}
.leg-sec .prose h3{font-family:var(--display);font-weight:700;font-size:clamp(21px,2.2vw,26px);letter-spacing:-.02em;line-height:1.2;margin:40px 0 12px}
.leg-sec .prose h3.has-text-align-center{margin-top:36px}
.leg-sec .prose a:not(.btn){color:var(--green-deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.leg-sec .prose a:not(.btn):hover{color:var(--green-hover)}
.leg-sec .prose ol{margin:0 0 16px;padding-left:26px}
.leg-sec .prose ol li::marker{color:var(--green-deep);font-weight:700}
.leg-sec .prose ul ul{margin:8px 0 4px}
.leg-sec [id]{scroll-margin-top:110px}

/* quick links */
.leg-toc{margin-top:36px;padding:28px 30px;border:1px solid var(--line);border-radius:18px;background:var(--bg-soft)}
.leg-toc p.leg-toc-title{font-family:var(--mono);font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--orange);margin:0 0 12px}
.leg-toc .wp-block-list{margin:0}
.leg-toc li{font-size:16px;margin-bottom:4px}
.leg-toc a{text-decoration:none!important}
.leg-toc a:hover{text-decoration:underline!important}

/* vote tables */
.leg-table{margin:8px 0 22px}
.leg-table table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;font-size:16px}
.leg-table th,.leg-table td{padding:11px 16px;text-align:left;border:0;border-bottom:1px solid var(--line)}
.leg-table tbody tr:last-child td{border-bottom:0}
.leg-table thead th{background:var(--green-soft);color:var(--green-deep);font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.leg-table td:not(:first-child),.leg-table th:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}

/* legislator cards */
.leg-card{display:grid;grid-template-columns:150px 1fr;gap:30px;align-items:start;margin:26px 0;padding:30px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 18px 40px -38px rgba(10,15,12,.3)}
.leg-card > *{margin-block:0}
.leg-card .leg-photo{position:sticky;top:110px}
.leg-card .leg-photo img{width:150px;height:150px;object-fit:cover;object-position:center 20%;border-radius:16px;border:2.5px solid var(--green-soft);display:block}
.leg-card .leg-photo a{text-decoration:none}
.leg-card .leg-body > *:first-child{margin-top:0}
.leg-card h3{margin-bottom:14px}
.leg-sec .leg-card p,.leg-sec .leg-card li{font-size:16.5px}
.leg-facts{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0 0 16px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.leg-sec .leg-facts p{margin:0;font-size:15px}
.leg-sec p.leg-rating{display:inline-block;padding:8px 14px;border-radius:10px;background:var(--bg-soft);border:1px solid var(--line);font-size:15.5px}
.leg-sec p.leg-rating.is-pos{background:var(--green-soft);border-color:rgba(14,137,78,.25)}
.leg-sec p.leg-rating.is-neg{background:var(--orange-soft);border-color:rgba(255,122,20,.3)}
.leg-sec p.leg-rating.is-neg strong{color:#b4530a}
.leg-sec p.leg-quote{border-left:3px solid var(--green);padding:2px 0 2px 16px}

@media (max-width:640px){
  .leg-card{grid-template-columns:1fr;gap:18px;padding:22px 20px}
  .leg-card .leg-photo{position:static}
  .leg-card .leg-photo img{width:112px;height:112px}
  .leg-toc{padding:22px 20px}
  .leg-table th,.leg-table td{padding:10px 10px}
  .leg-table table{font-size:15px}
  .leg-table thead th{font-size:10.5px;letter-spacing:.03em}
}
