/* =====================================================================
   Bio Valley · "Enabling" theme
   Editorial dark/light rhythm, full-bleed video & photography, expanded display type.
   1) Tokens & base   2) Header & menu   3) Home sections   4) Sub-pages
   5) Interactive components (dialogs, forms, assistant)   6) Responsive
   ===================================================================== */

/* ---------- 1) Tokens & base ---------- */
:root{
  --ink:#18301f;--navy:#17402a;--teal-deep:#0f3d2e;--midnight:#0e2416;--valley:#2e7d3a;--ink-2:#1f3a28;--ink-3:#2a4733;--slate:#4c5d52;--muted:#5b6b60;--line:#e1ebe2;--soft:#f3f8f3;--white:#fff;
  --accent:#8cc63f;--accent-d:#2e7d3a;--mint:#c8ee8f;--accent-t:#e8f4e9;
  --ok:#0f9d58;--warn:#b26b00;--bad:#d93636;
  --fd:"Nunito Sans",system-ui,sans-serif;--fb:"Nunito Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --max:120rem;--gut:clamp(16px,5vw,10rem);--hdr:5.25rem;--r:0.375rem;
  --ease:cubic-bezier(.2,.7,.1,1);
  /* aliases used by the shared component layer */
  --brand:var(--accent-d);--brand-2:#00806a;--deep:var(--ink);--surface:#fff;--surface-2:var(--soft);
}
*,*::before,*::after{box-sizing:border-box}
/* Fluid scale: 1rem = 16px up to 1600px wide, then grows with the screen (1920 → 19.2px, 2560 → 25.6px, 4K TV → 38.4px),
   so large monitors and TVs get the same composition, bigger, instead of a narrow column. */
html{font-size:16px}
/* large screens scale up with width, but never beyond what the height allows (ultrawide monitors stay in proportion) */
@media (min-width:1600px){html{font-size:max(16px,min(1vw,2vh,40px))}}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--hdr) + 3.75rem)}
body{margin:0;background:var(--white);color:var(--ink);font:400 1.0625rem/1.6 var(--fb);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
img,video,svg{display:block;max-width:100%}
picture{display:contents}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.1;font-weight:600}
p{margin:0 0 1em}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
::selection{background:var(--accent);color:var(--ink)}
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.disp{font-family:var(--fd);font-stretch:100%;font-weight:600;letter-spacing:-.025em;line-height:1}
.disp em,h2 em{font-style:normal;color:var(--accent-d)}
.dark .disp em,.dark h2 em,.cx .disp em,.vb .disp em,.im .disp em,.ph .disp em,.ft .disp em{background:linear-gradient(90deg,var(--accent),var(--mint));-webkit-background-clip:text;background-clip:text;color:transparent}
.xl{font-size:clamp(2.25rem,5.2vw,5rem)}
.eb{font:700 1.0625rem/1.2 var(--fb);letter-spacing:.16em;text-transform:uppercase;color:var(--accent-d);margin:0 0 1.5rem;display:flex;align-items:center;gap:0.875rem}
.eb::before{content:"";width:2.25rem;height:2px;background:currentColor;flex:none}
.dark .eb,.vb .eb,.im .eb,.ph .eb,.ft .eb{color:var(--accent)}
.lede{font-size:clamp(1.0625rem,1.35vw,1.25rem);line-height:1.6;color:var(--slate);max-width:60ch}
.dark .lede{color:#b9c2cf}
.vb .lede{color:#f1f5f9}
.muted{color:var(--muted)}
.row{display:flex;flex-wrap:wrap;gap:1rem 1.75rem;align-items:center;margin-top:2.125rem}
.center{text-align:center}.mx{margin-inline:auto}.mt{margin-top:1.375rem}.mb{margin-bottom:1.5rem}.nowrap{white-space:nowrap}.mono{font-family:ui-monospace,Menlo,monospace;font-size:0.8125rem}
.narrow{max-width:48.75rem;margin-inline:auto}
.dark{background:var(--ink);color:#fff}

/* buttons */
.btn,.pill{--bg:var(--accent);--fg:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:0.625rem;min-height:3.25rem;padding:0 1.625rem;border:1.5px solid var(--bg);background:var(--bg);color:var(--fg);font:700 0.9375rem/1 var(--fb);letter-spacing:.01em;border-radius:62.4375rem;transition:background .3s,color .3s,border-color .3s,transform .3s;white-space:nowrap;position:relative;overflow:hidden;isolation:isolate}
.btn::before,.pill::before{content:"";position:absolute;inset:0;background:var(--ink);transform:translateY(101%);transition:transform .45s var(--ease);z-index:-1;border-radius:inherit}
.btn:hover::before,.pill:hover::before{transform:none}
.btn:hover,.pill:hover{color:#fff;border-color:var(--ink)}
/* on dark backgrounds the hover sweep is white */
:is(.cx,.dark,.vb,.im,.ph,.ft,.wk,.band2,.x-chat) :is(.btn,.pill)::before{background:#fff}
:is(.cx,.dark,.vb,.im,.ph,.ft,.wk,.band2) :is(.btn,.pill):hover{color:var(--ink);border-color:#fff}
.btn .arr,.lnk .arr,.sv-more .arr{display:inline-block;transition:transform .35s var(--ease)}
.btn:hover .arr,.lnk:hover .arr,.sv-c:hover .arr{transform:translateX(0.3125rem)}
.btn.sm,.pill.sm{min-height:2.625rem;padding:0 1.125rem;font-size:0.875rem}
.btn.dark,.pill.g{--bg:var(--ink);--fg:#fff}
.btn.dark::before,.pill.g::before{background:var(--accent)}
.btn.dark:hover,.pill.g:hover{border-color:var(--accent);color:var(--ink)}
.btn.ghost,.pill.ol{--bg:transparent;--fg:#fff;border-color:rgba(255,255,255,.55)}
.btn.ghost-d,.pill.ol-g{--bg:transparent;--fg:var(--ink);border-color:var(--ink)}
.btn.ghost-d::before,.pill.ol-g::before{background:var(--ink)}
.btn.ghost-d:hover,.pill.ol-g:hover{color:#fff;border-color:var(--ink)}
.pill.w{--bg:#fff;--fg:var(--ink)}
.pill.w::before{background:var(--accent)}
.btn:disabled,.pill:disabled{opacity:.6;cursor:wait}
.lnk{display:inline-flex;align-items:center;gap:0.5rem;font-weight:700;border:0;background:none;padding:0.375rem 0;color:inherit;border-bottom:2px solid var(--accent);font-size:0.9375rem}
.lnk:hover{color:var(--accent-d)}
.dark .lnk:hover{color:var(--accent)}
.rnd{width:3.25rem;height:3.25rem;border-radius:50%;border:1.5px solid var(--ink);background:none;font-size:1.125rem;transition:.3s}
.rnd:hover{background:var(--ink);color:#fff}
.tag{display:inline-block;font:700 0.6875rem/1 var(--fb);letter-spacing:.12em;text-transform:uppercase;padding:0.375rem 0.625rem;border-radius:62.4375rem;background:var(--accent);color:var(--ink);margin-right:0.625rem;vertical-align:1px}

/* section header: title left, intro right */
.sec-h{display:grid;grid-template-columns:1.15fr 1fr;gap:1.75rem 6vw;align-items:end;margin-bottom:clamp(2.5rem,5vw,4.5rem)}
.sec-h .xl{margin:0}
.sec-h .lede{margin-bottom:1.125rem}

/* reveal */
.rv{opacity:0;transform:translateY(2.25rem);transition:opacity .9s var(--ease) var(--d,0s),transform .9s var(--ease) var(--d,0s)}
.rv.in,.no-js .rv{opacity:1;transform:none}

/* ---------- 2) Header & menu ---------- */
.skip{position:fixed;left:0.75rem;top:-3.75rem;z-index:500;background:#fff;color:var(--ink);padding:0.625rem 1rem;border-radius:0.5rem;font-weight:700}.skip:focus{top:0.75rem}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hd{position:fixed;inset:0 0 auto;z-index:70;color:#fff;transition:background .4s,box-shadow .4s,transform .45s var(--ease)}
.hd.solid{background:var(--hd-bg,#fff);color:var(--ink);box-shadow:none;transition:background-color .35s ease,transform .45s var(--ease)}
/* the bar takes the background colour of the section beneath it (site.js); over a dark section it switches to light buttons */
/* white header after scrolling: dark versions of the two buttons */
.hd.solid .mbtn{background:var(--ink);color:#fff}
.hd.solid .burger{background:#fff}.hd.solid .burger i{background:var(--ink)}
.hd.solid.hd-dark .mbtn{background:#fff;color:var(--ink)}
.hd.solid.hd-dark .burger{background:var(--ink)}.hd.solid.hd-dark .burger i{background:#fff}
.hd.hide{transform:translateY(-100%)}
/* logo | menu centred on the screen | buttons */
.hd-in{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1.5rem;height:var(--hdr)}
.hd-in>.logo{justify-self:start}
.logo{display:flex;align-items:center;flex:none}
.logo .lg{height:4.125rem;width:auto;transition:height .3s}
/* natural colours; a 1px edge line keeps the logo's shapes defined over bright sky, with no halo */
.hd:not(.solid) .logo .lg{filter:drop-shadow(0 1px 0.5px rgba(0,0,0,.3))}
.hd.solid .logo .lg{height:3.5rem}
.nav2{display:flex;gap:2px;justify-self:center}
.ni-home>a{padding-inline:0.625rem}
.ni-home svg{width:1.25rem;height:1.25rem;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ni{position:relative}
.ni>a{display:flex;align-items:center;gap:0.375rem;padding:0.625rem 0.8125rem;font-size:0.9375rem;font-weight:600;white-space:nowrap;position:relative}
/* top menu text in the logo's "Valley" blue */
.ni>a{color:var(--valley)}
/* over the video / header photo: white with a slight blue tint; back to Valley blue once the bar turns solid */
.hd:not(.solid) .ni>a{color:#e8f4e9}
.hd .ni>a{transition:color .35s ease}
.ni>a::after{content:"";position:absolute;left:0.8125rem;right:0.8125rem;bottom:0.25rem;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.ni>a:hover::after{transform:none}   /* underline on hover only */
.car{width:0.6875rem;height:0.6875rem;fill:none;stroke:currentColor;stroke-width:1.8;transition:transform .25s}
.ni.open .car{transform:rotate(180deg)}
.dd{position:absolute;top:calc(100% + 0.625rem);left:0;min-width:16.875rem;padding:0.625rem;background:#18301f;border:1px solid rgba(255,255,255,.08);border-radius:0.625rem;box-shadow:0 1.875rem 3.75rem rgba(0,0,0,.35);opacity:0;visibility:hidden;transform:translateY(0.5rem);transition:.25s var(--ease);z-index:5}
.dd::before{content:"";position:absolute;inset:-0.875rem 0 auto;height:0.875rem}
.ni.open .dd{opacity:1;visibility:visible;transform:none}
.ni:nth-last-child(-n+2) .dd{left:auto;right:0}
.dd a{display:block;padding:0.6875rem 0.875rem;border-radius:0.375rem;transition:background .2s;color:#fff}   /* own colour: the bar's text colour changes when it turns solid */
.dd a b{display:block;font-size:0.9062rem;font-weight:600}
.dd a small{display:block;font-size:0.7812rem;color:#93a0b2;margin-top:2px}
.dd a:hover,.dd a.on,.dd a:focus-visible{background:rgba(255,255,255,.07)}
.dd a:hover b,.dd a.on b{color:var(--accent)}
.hd-r{display:flex;align-items:center;gap:0.625rem;justify-self:end;grid-column:3}
/* small Apply button in the top bar (opens the incubation application) */
.hd-apply{display:inline-flex;align-items:center;gap:0.375rem;height:2.25rem;padding:0 1rem;border:0;border-radius:999px;background:var(--accent);color:var(--ink);font:700 0.875rem/1 var(--fb);white-space:nowrap;box-shadow:0 0.375rem 1rem rgba(140,198,63,.3);transition:background .3s,color .3s,transform .3s var(--ease)}
.hd-apply:hover{transform:translateY(-1px)}
.hd.solid:not(.hd-dark) .hd-apply{background:var(--valley);color:#fff;box-shadow:0 0.375rem 1rem rgba(46,125,58,.25)}
/* AI shortcut: a static ring with a ✦ that gently grows and shrinks, shown only while the floating "Bio Valley AI" button is hidden (site.js sets .ai-top);
   collapsed to zero width otherwise so it leaves no gap */
.hd-ai{position:relative;display:grid;place-items:center;width:0;height:2.75rem;padding:0;border:0 solid var(--accent);border-radius:50%;background:transparent;color:var(--accent);font-size:1.375rem;line-height:1;opacity:0;visibility:hidden;transform:scale(.6);
  transition:opacity .35s,transform .35s var(--ease),width .35s var(--ease),border-width .35s,visibility 0s .35s}
.hd.ai-top .hd-ai{margin-right:0.875rem;width:2.75rem;border-width:1.5px;opacity:1;visibility:visible;transform:none;transition:opacity .35s,transform .35s var(--ease),width .35s var(--ease),border-width .35s}
.hd-ai span{display:block;animation:aiPulse 1.6s ease-in-out infinite}
@keyframes aiPulse{0%,100%{transform:scale(.7)}50%{transform:scale(1.25)}}
.mbtn{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;padding:0;border:0;border-radius:50%;background:#fff;color:var(--ink)}
@media (min-width:1281px){.mbtn{display:none}}
.burger{width:2rem;height:2rem;border-radius:50%;background:var(--ink);display:grid;place-content:center;gap:0.25rem}
.burger i{display:block;width:0.875rem;height:2px;background:#fff;transition:transform .3s}
.mbtn:hover .burger i:first-child{transform:translateX(3px)}.mbtn:hover .burger i:last-child{transform:translateX(-3px)}

.fm{position:fixed;inset:0;z-index:180;background:var(--ink);color:#fff;overflow:auto;overscroll-behavior:contain}
.fm[hidden]{display:none}
.fm.open{display:block;animation:fmIn .5s var(--ease)}
@keyframes fmIn{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
.fm-top{display:flex;align-items:center;justify-content:space-between;height:var(--hdr)}
.fm-top .lg{height:3.125rem;width:auto}
.fm-close{display:flex;align-items:center;gap:0.75rem;background:none;border:0;color:#fff;font-weight:700;font-size:0.9375rem;padding:0.5rem}
.fm-close .x{width:2.75rem;height:2.75rem;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);position:relative;transition:.3s}
.fm-close .x::before,.fm-close .x::after{content:"";position:absolute;left:50%;top:50%;width:1rem;height:2px;background:#fff;transform:translate(-50%,-50%) rotate(45deg)}
.fm-close .x::after{transform:translate(-50%,-50%) rotate(-45deg)}
.fm-close:hover .x{background:var(--accent);border-color:var(--accent);transform:rotate(90deg)}
.fm-grid{display:grid;grid-template-columns:minmax(max-content,1.1fr) 1fr .9fr;gap:5vw;min-height:calc(100svh - var(--hdr));padding-block:4vh 6vh;align-items:center}
.fm-main{list-style:none;margin:0;padding:0}
.fm-main>li{opacity:0;transform:translateY(1.5rem);animation:fmLi .7s var(--ease) forwards;animation-delay:calc(.12s + var(--i) * .05s)}
@keyframes fmLi{to{opacity:1;transform:none}}
.fm-k{display:inline-block;background:none;border:0;padding:0.25rem 0;color:#fff;font:600 clamp(1.625rem,min(3.4vw,5.6vh),3.375rem)/1.15 var(--fd);font-stretch:100%;letter-spacing:-.025em;text-align:left;opacity:.55;transition:opacity .3s,color .3s,transform .4s var(--ease)}
.fm-k:hover,.fm-k.on,.fm-k:focus-visible{opacity:1;transform:translateX(0.625rem)}
.fm-k.on{color:var(--accent)}
.fm-sub{display:none;list-style:none;margin:0;padding:0}
.fm-mid{border-left:1px solid rgba(255,255,255,.12);padding-left:4vw;align-self:stretch;display:flex;align-items:center}
.fm-panel ul{list-style:none;margin:0;padding:0;display:grid;gap:0.375rem;animation:fmLi .45s var(--ease) both;opacity:0;transform:translateY(0.75rem)}
.fm-panel a{display:block;padding:0.625rem 0;font-size:1.25rem;font-weight:600;transition:color .2s,transform .3s var(--ease)}
.fm-panel a small{display:block;font-size:0.875rem;font-weight:400;color:#93a0b2}
.fm-panel a:hover{color:var(--accent);transform:translateX(0.375rem)}
.fm-side{display:flex;flex-direction:column;gap:0.625rem}
.fm-img{margin:0 0 1.125rem;aspect-ratio:4/3;overflow:hidden;border-radius:var(--r)}
.fm-img img{width:100%;height:100%;object-fit:cover;animation:kb 14s linear both}
.fm-ct{font-size:1.0625rem;color:#cdd5df}.fm-ct:hover{color:var(--accent)}
.social{display:flex;gap:0.625rem;margin-top:0.625rem}
.social a{width:2.625rem;height:2.625rem;border-radius:50%;border:1.5px solid rgba(255,255,255,.25);display:grid;place-items:center;transition:.3s}
.social svg{width:1.0625rem;height:1.0625rem;fill:currentColor}
.social a:hover{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.social a.soon{opacity:.55;cursor:default}.social a.soon:hover{background:none;border-color:rgba(255,255,255,.25);color:inherit}

/* ---------- 3) Home ---------- */
/* hero: one background video, rotating messages */
/* hero: at least one screen tall, and it grows if a short screen can't fit the text, so the text never slides under the menu bar */
.cx{position:relative;display:flex;min-height:100svh;background:#05070b;color:#fff;overflow:hidden}
.cx-media{position:absolute;inset:0;overflow:hidden}
.cx-media video,.cx-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cx-poster{z-index:0}.cx-v{z-index:1;opacity:0;transition:opacity .8s}.cx-v.ready{opacity:1}
/* whole video dimmed evenly (no shaded patch behind the text) so the white text stays readable */
.cx-media video,.cx-media img{filter:brightness(.74)}
@keyframes kb{from{transform:scale(1.14)}to{transform:scale(1.02)}}
.cx-c{position:relative;z-index:3;flex:1;display:flex;padding-top:calc(var(--hdr) + clamp(1.25rem,4vh,3rem));flex-direction:column;justify-content:flex-end;padding-bottom:calc(clamp(5rem,14vh,9rem) - 1.75rem);max-width:var(--max)}
.cx-k{font:900 clamp(1.25rem,1.75vw,2.1rem)/1.3 var(--fb);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);background:linear-gradient(90deg,var(--accent),var(--mint));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;align-self:flex-start;margin-bottom:clamp(1.5rem,min(4.5vw,8vh),6rem);animation:up 1s var(--ease) both}
@media (max-height:740px) and (min-width:601px){.cx-k{margin-bottom:clamp(1.5rem,6vh,4.75rem)}}   /* short laptop windows: keep the whole hero on screen */
@media (max-width:600px){.cx-k{margin-bottom:2.5rem}}   /* phones: the 40px gap chosen earlier */
/* headline follows the screen's width AND height: short laptop windows get a smaller headline instead of overflowing */
.cx-t{font-size:clamp(2.875rem,min(8.4vw,16.5vh),8.75rem);margin:0 0 clamp(1rem,2.6vh,1.625rem);max-width:12ch}
.cx-t .w1,.cx-t em{display:block}
.cx-p{font-size:clamp(1rem,1.35vw,1.25rem);line-height:1.55;max-width:52ch;color:#fff;margin-bottom:0}
.cx-msgs{margin-bottom:clamp(1.75rem,5.5vh,3.75rem)}   /* extra space above the button = space taken from the bottom padding: only the button moves down */
@keyframes up{to{opacity:1;transform:none}}
/* "Enabling" stays; the word below changes with a left-to-right wipe (new word wipes in from the left, old one wipes out to the right).
   All words share one grid cell, so the headline never changes height. */
.cx-t .w1{animation:up 1s var(--ease) .05s both}
.cx-words{display:grid}
.cx-w{grid-area:1/1;visibility:hidden;clip-path:inset(-15% 100% -15% -5%)}
.cx-w.on{visibility:visible;animation:wipeIn 1s var(--ease) .2s both}
.cx-w.out{visibility:visible;animation:wipeOut .55s cubic-bezier(.6,0,.8,.4) both}
.cx.swap .cx-w.on{animation-delay:.35s}
@keyframes wipeIn{from{clip-path:inset(-15% 100% -15% -5%);transform:translateX(-.35em)}to{clip-path:inset(-15% -10% -15% -5%);transform:none}}
@keyframes wipeOut{from{clip-path:inset(-15% -10% -15% -5%)}to{clip-path:inset(-15% -10% -15% 100%);transform:translateX(.35em)}}
/* description + button: share one grid cell too, and change with the fade-up effect */
.cx-msgs{display:grid}
.cx-m{grid-area:1/1;display:flex;flex-direction:column;align-items:flex-start;visibility:hidden}
.cx-m>*{opacity:0;transform:translateY(2.5rem)}
.cx-m.on{visibility:visible}
.cx-m.on>*{animation:up 1s var(--ease) forwards}
.cx-m.on>:nth-child(2){animation-delay:.14s}
.cx-m.out{visibility:visible}
.cx-m.out>*{opacity:1;transform:none;animation:out .6s var(--ease) forwards}
.cx-m.out>:nth-child(2){animation-delay:.05s}.cx-m.out>:nth-child(3){animation-delay:.1s}
@keyframes out{to{opacity:0;transform:translateY(-1.5rem)}}
/* on a change the new message waits for the old one to clear */
.cx.swap .cx-m.on>*{animation-delay:.6s}
/* the button stays in place while the word and description change */
.cx-cta{animation:up 1s var(--ease) .4s both}

/* logo wall */
.lw{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;gap:clamp(3.5rem,8vh,6rem);padding:clamp(5rem,10vw,9rem) 0;overflow:hidden;
  background:radial-gradient(50rem 30rem at 85% 0%,rgba(140,198,63,.1),transparent 70%),radial-gradient(44rem 28rem at 0% 100%,rgba(200,238,143,.12),transparent 70%),#f6faf6}
.lw-h{text-align:left}
.lw-h .xl{margin:0;max-width:22ch;font-size:clamp(2.25rem,4.4vw,4.75rem)}
.lw-h .eb{margin-bottom:1.375rem}
.lw-h .lede{margin:0 auto;max-width:56ch}
/* slow drift: row 1 moves left to right, row 2 right to left */
.lw .lw-m .lw-t{animation-duration:110s;animation-direction:reverse}
.lw .lw-m.rev .lw-t{animation-duration:120s;animation-direction:normal}
.lw .lw-t li{height:auto;padding-block:0.5rem}
.lw-m+.lw-m{margin-top:calc(-1 * clamp(1rem,2.6vh,2rem))}   /* the two logo rows read as one band */
.lw-m{-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.lw-t{display:flex;width:max-content;list-style:none;margin:0;padding:0;animation:mq 60s linear infinite}
.lw-m:hover .lw-t{animation-play-state:paused}
.lw-t li{flex:none;padding:0 clamp(1.625rem,3.4vw,3.25rem);display:grid;place-items:center;height:4.75rem}
.lw-t li{padding:0 0.625rem!important}
.lw-t img{box-sizing:content-box;height:2.5rem;max-width:8.5rem;width:auto;object-fit:contain;padding:0.875rem 1.5rem;border-radius:999px;background:#fff;border:1px solid #e1ebe2;box-shadow:0 0.375rem 1rem rgba(24,48,31,.05);transition:.35s}   /* logos in their original colours */
.lw-t li:hover img{transform:translateY(-2px);box-shadow:0 0.75rem 1.5rem rgba(24,48,31,.1)}
@keyframes mq{to{transform:translateX(-50%)}}

/* feature intro */
.ft-blk{padding:clamp(5rem,11vw,10.625rem) 0}
.ft-g{display:grid;grid-template-columns:1fr 1.2fr;gap:5vw;align-items:center}
.ft-tx .xl{margin-bottom:2.125rem}
.ft-tx .xl em,.vb .xl em,.im .xl em{display:block}
.ft-im{position:relative;margin:0}
.px{overflow:hidden;border-radius:var(--r)}
/* full team photo at its natural shape (sofa removed, nothing cropped); no scroll drift */
.ft-im .px{aspect-ratio:1269/628}
.ft-im .px img{height:100%}
/* very light blue sparkles above and below the team photo (decorative) */
.ft-im .px{position:relative;z-index:1;border-radius:0;
  /* flat top and bottom, left and right sides bulging outward, soft corners */
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22 preserveAspectRatio=%22none%22%3E%3Cpath d=%22M11 0H89Q92.5 0 93.5 3.5Q100 50 93.5 96.5Q92.5 100 89 100H11Q7.5 100 6.5 96.5Q0 50 6.5 3.5Q7.5 0 11 0Z%22/%3E%3C/svg%3E") center/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22 preserveAspectRatio=%22none%22%3E%3Cpath d=%22M11 0H89Q92.5 0 93.5 3.5Q100 50 93.5 96.5Q92.5 100 89 100H11Q7.5 100 6.5 96.5Q0 50 6.5 3.5Q7.5 0 11 0Z%22/%3E%3C/svg%3E") center/100% 100% no-repeat}
.spks{position:absolute;left:0;right:0;height:6rem;pointer-events:none}
.spks-top{bottom:100%}.spks-bot{top:100%}
.spk{position:absolute;--z:calc(var(--s) * 1.4);width:var(--z);height:var(--z);margin-left:calc(var(--z) / -2);animation:twinkle 3.2s ease-in-out infinite both}
.spk.star{background:radial-gradient(circle,#fff 0 12%,#e2f3cc 30%,#c4e79a 60%);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C12.9 7.6 16.4 11.1 24 12 16.4 12.9 12.9 16.4 12 24 11.1 16.4 7.6 12.9 0 12 7.6 11.1 11.1 7.6 12 0Z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C12.9 7.6 16.4 11.1 24 12 16.4 12.9 12.9 16.4 12 24 11.1 16.4 7.6 12.9 0 12 7.6 11.1 11.1 7.6 12 0Z'/%3E%3C/svg%3E") center/contain no-repeat;
  filter:drop-shadow(0 0 0.25rem rgba(150,210,250,.6))}
.spk.dot{border-radius:50%;background:radial-gradient(circle,#fff 0 20%,#d3edb3 55%,rgba(211,237,179,0) 72%)}
@keyframes twinkle{0%,100%{opacity:.5;transform:scale(.7) rotate(0deg)}50%{opacity:1;transform:scale(1) rotate(20deg)}}
.px img{width:100%;height:118%;object-fit:cover;will-change:transform}

/* stats */
/* themed deep blues instead of near-black; solid base colour first (the top bar samples it), soft cyan glow on top */
.st{padding:clamp(5rem,10vw,9.375rem) 0;background-color:var(--navy);background-image:radial-gradient(60rem 30rem at 92% 10%,rgba(140,198,63,.16),transparent 70%),radial-gradient(40rem 24rem at 10% 100%,rgba(200,238,143,.08),transparent 70%)}
/* Facilities Snapshots: heading like "About Bio Valley"; label · figure · description, all three on one baseline */
.st .eb.st-h{color:var(--accent);margin-bottom:clamp(2rem,3.5vw,3.5rem)}
.st-g{display:grid;grid-template-columns:1.45fr 1fr 1fr;gap:clamp(2rem,4vw,5rem);align-items:start}
.st-i{border-top:1px solid rgba(255,255,255,.18);padding-top:1.5rem}
.st-l{font:700 0.8125rem/1.2 var(--fb);letter-spacing:.16em;text-transform:uppercase;color:#9cc4e4;margin:0 0 1.25rem}
.st-v{font-size:clamp(2.75rem,4.6vw,5.25rem);margin:0 0 1.25rem;display:flex;align-items:baseline;gap:0.75rem;flex-wrap:wrap;white-space:nowrap}
.st-v small{font-size:.26em;font-stretch:100%;color:var(--accent);letter-spacing:0}
.st-t{color:#d3e2ef;font-size:1.0625rem;line-height:1.65;max-width:34ch;margin:0}
.st-i:first-child .st-t{max-width:48ch}

/* video band + TRL journey */
.vb{position:relative;color:#fff;overflow:hidden;background:#05070b}
.vb-media{position:absolute;inset:0}
.vb-media video,.vb-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vb-v{z-index:1;opacity:0;transition:opacity .8s}.vb-v.ready{opacity:1}
.vb-media::after{content:"";position:absolute;inset:0;z-index:2;background:radial-gradient(ellipse at 75% 40%,rgba(6,8,12,.15),rgba(6,8,12,.85) 70%),linear-gradient(0deg,rgba(6,8,12,.9),transparent 50%)}
.vb-c{position:relative;z-index:3;padding-block:clamp(7.5rem,16vw,15rem) clamp(3.75rem,7vw,6.25rem)}
.vb-c .xl{max-width:16ch;margin-bottom:1.75rem}
.jr{list-style:none;margin:clamp(4.375rem,9vw,8.75rem) 0 0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:1.375rem}
.jr li{position:relative;padding-top:1.625rem}
.jr li::before{content:"";position:absolute;left:0;right:-1.375rem;top:0;height:1px;background:rgba(255,255,255,.22)}
.jr li::after{content:"";position:absolute;left:0;right:-1.375rem;top:0;height:2px;background:linear-gradient(90deg,var(--accent),var(--mint));transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease) calc(.3s + var(--i) * .22s)}
.jr li:last-child::before,.jr li:last-child::after{right:0}
.jr.in li::after{transform:none}
.jr-k{display:block;font:700 0.8125rem/1 var(--fb);letter-spacing:.14em;color:var(--accent);margin-bottom:0.75rem}
.jr-t{display:block;font:600 clamp(1.0625rem,1.5vw,1.375rem)/1.25 var(--fd);font-stretch:110%}

/* facilities / service cards */
.sv{padding:clamp(5rem,10vw,9.375rem) 0;background:var(--soft)}
.sv-g{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(20rem,27vw,27rem);gap:clamp(1rem,1.6vw,1.5rem)}
/* bento: first and last cards are twice as wide */
.sv-g>.sv-c:first-child,.sv-g>.sv-c:last-child{grid-column:span 2}
.sv-c{position:relative;display:flex;flex-direction:column;justify-content:flex-end;text-align:left;padding:0.75rem;border:0;border-radius:1.5rem;overflow:hidden;isolation:isolate;color:#fff;background:#17402a;
  box-shadow:0 0.75rem 2rem rgba(24,48,31,.12);transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.sv-c:hover,.sv-c:focus-visible{transform:translateY(-0.375rem);box-shadow:0 1.75rem 3.5rem rgba(0,121,184,.28)}
.sv-im{position:absolute;inset:0;z-index:-1;display:block}
.sv-im img{width:100%;height:100%;object-fit:cover;transition:transform 1.6s var(--ease)}
.sv-im::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,16,28,.1) 0%,rgba(6,16,28,0) 35%,rgba(6,16,28,.55) 100%)}
.sv-c:hover .sv-im img{transform:scale(1.08)}
/* frosted info panel */
.sv-b{display:flex;flex-direction:column;gap:0.375rem;padding:1.125rem 1.25rem;border-radius:1rem;background:rgba(10,24,40,.42);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);border:1px solid rgba(255,255,255,.16)}
.sv-t{font:600 clamp(1.125rem,1.5vw,1.4375rem)/1.15 var(--fd);font-stretch:112%;letter-spacing:-.015em}
.sv-p{color:#dbe7f2;font-size:0.9375rem;line-height:1.5;overflow:hidden}
/* optional partner logo badge (top-left) */
.sv-logo{position:absolute;top:1rem;left:1rem;display:flex;padding:0.375rem 0.5rem;border-radius:0.875rem;background:rgba(255,255,255,.58);-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2);border:1px solid rgba(255,255,255,.55);box-shadow:0 0.375rem 1rem rgba(6,16,28,.12)}   /* soft frosted chip: photo shows through, logo blends in */
.sv-logo img{display:block;filter:drop-shadow(0 1px 1px rgba(255,255,255,.6));height:clamp(2.5rem,3.3vw,3.25rem);width:auto;max-width:9rem;object-fit:contain}   /* small badge: square or wide logos */
/* logo on the right (arrow moves to the left); wide wordmark logos are shorter */
.sv-logo.r{left:auto;right:1rem}
.sv-logo.wide{padding:0.4375rem 0.75rem}.sv-logo.wide img{height:clamp(1.9rem,2.4vw,2.4rem);max-width:13rem}
/* round arrow button (top-right) */
.sv-more{position:absolute;top:1rem;right:1rem;width:2.75rem;height:2.75rem;border-radius:50%;display:grid;place-items:center;font-size:0;color:#fff;background:rgba(255,255,255,.16);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.28);transition:background .35s,color .35s,transform .5s var(--ease)}
.sv-more .arr{font-size:1.125rem;transform:rotate(-45deg)!important;transition:none}
.sv-more.l{right:auto;left:1rem}
.sv-c:hover .sv-more,.sv-c:focus-visible .sv-more{background:var(--accent);border-color:var(--accent);color:var(--ink);transform:rotate(45deg)}
/* description opens on hover where hovering is possible; always shown on touch screens */
@media (hover:hover){.sv-p{max-height:0;opacity:0;transition:max-height .55s var(--ease),opacity .4s}.sv-c:hover .sv-p,.sv-c:focus-visible .sv-p{max-height:6rem;opacity:1}}

/* incubation journey */
.jy{padding:clamp(5rem,10vw,9.375rem) 0;background:radial-gradient(46rem 26rem at 100% 0%,rgba(140,198,63,.08),transparent 70%),radial-gradient(40rem 24rem at 0% 100%,rgba(200,238,143,.1),transparent 70%),#f6faf6}
/* connected journey: icon circles on a gradient line that fills as the section comes into view */
/* incubation steps: rising staircase of cards, each with a progress meter; the last one is the destination */
.jsteps{list-style:none;margin:0 0 clamp(3rem,5vw,4.5rem);padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:1.25rem;align-items:end}
.jsteps li{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:0.375rem;margin-bottom:calc(var(--i) * 1.25rem);padding:1.5rem 1.375rem 1.375rem;background:#fff;border:1px solid var(--line);border-radius:1.5rem;box-shadow:0 1rem 2.25rem -1.5rem rgba(24,48,31,.35);
  opacity:0;transform:translateY(1.5rem);transition:opacity .6s var(--ease),transform .6s var(--ease),box-shadow .3s,border-color .3s;transition-delay:calc(var(--i) * .15s)}
.jsteps.in li,.no-js .jsteps li{opacity:1;transform:none}
.jsteps.in li:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 1.5rem 2.75rem -1.5rem rgba(46,125,58,.5);transition-delay:0s}
.jsteps li:not(:last-child)::after{content:"";position:absolute;z-index:2;top:50%;right:-1.0625rem;width:1.375rem;height:1.375rem;margin-top:-0.6875rem;border-radius:50%;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230c70b0' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center/0.75rem no-repeat;box-shadow:0 0.25rem 0.75rem rgba(24,48,31,.18)}
.js-n{position:absolute;top:0.75rem;right:1.125rem;font:700 3rem/1 var(--fd);color:transparent;-webkit-text-stroke:1.5px rgba(46,125,58,.22)}
.js-ic{width:3.25rem;height:3.25rem;margin-bottom:1.25rem;border-radius:1rem;display:grid;place-items:center;background:linear-gradient(135deg,var(--valley),var(--accent));color:#fff;box-shadow:0 0.75rem 1.5rem -0.5rem rgba(140,198,63,.55)}
.js-ic svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.jsteps b{font:600 1.1875rem/1.2 var(--fd);font-stretch:110%}
.js-d{font-size:0.875rem;color:var(--muted)}
.js-bar{align-self:stretch;height:4px;margin-top:1.125rem;border-radius:4px;background:#e4edf4;overflow:hidden}
.js-bar i{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,var(--valley),var(--accent),var(--mint));transition:width 1s var(--ease);transition-delay:calc(.4s + var(--i) * .15s)}
.jsteps.in .js-bar i,.no-js .js-bar i{width:calc((var(--i) + 1) * 20%)}
.jsteps li:last-child{background:linear-gradient(150deg,var(--valley),#1f6a2c 55%,var(--teal-deep));border-color:transparent;color:#fff}
.jsteps li:last-child .js-ic{background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}
.jsteps li:last-child .js-d{color:rgba(255,255,255,.75)}
.jsteps li:last-child .js-n{-webkit-text-stroke-color:rgba(255,255,255,.35)}
.jsteps li:last-child .js-bar{background:rgba(255,255,255,.2)}
/* eligibility (left) + CTA and tracking (right) */
.jy-g{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(1.25rem,2vw,1.75rem);align-items:start}
.jy-side{display:grid;gap:clamp(1.25rem,2vw,1.75rem)}
.jy-card{position:relative;background:#fff;border:1px solid #e1ebe2;border-radius:1.75rem;padding:clamp(1.5rem,2.6vw,2.5rem);box-shadow:0 0.75rem 2rem rgba(24,48,31,.06);overflow:hidden}
.jy-card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--valley),var(--accent),var(--mint))}
.jy-ch{display:flex;gap:1rem;align-items:flex-start;margin-bottom:1.5rem}
.jy-ch h3{margin:0 0 0.25rem;font:600 clamp(1.25rem,1.7vw,1.5625rem)/1.2 var(--fd);font-stretch:110%}
.jy-ch p{margin:0;color:var(--slate);font-size:0.9375rem}
.jy-ic{flex:none;width:3rem;height:3rem;border-radius:0.875rem;display:grid;place-items:center;background:var(--accent-t);color:var(--valley)}
.jy-ic svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.jy-cta{position:relative;overflow:hidden;border-radius:1.75rem;padding:clamp(1.75rem,2.8vw,2.5rem);color:#fff;background:linear-gradient(120deg,#1f6a2c 0%,#2e7d3a 45%,#3a9a46 100%)}
.jy-cta::after{content:"";position:absolute;right:-5rem;top:-6rem;width:18rem;height:18rem;border-radius:50%;background:radial-gradient(circle,rgba(200,238,143,.35),transparent 70%);pointer-events:none}
.jy-cta>*{position:relative;z-index:1}
.jy-cta .eb{color:#d6efc0;margin-bottom:0.875rem}
.jy-cta h3{margin:0 0 1.25rem;font:600 clamp(1.375rem,2vw,1.875rem)/1.15 var(--fd);font-stretch:112%}
.jy-facts{list-style:none;margin:0 0 1.5rem;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:0.75rem}
.jy-facts li{padding:0.75rem;border-radius:1rem;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18)}
.jy-facts b{display:block;font:700 1.125rem/1.1 var(--fd);font-stretch:110%}
.jy-facts span{display:block;margin-top:0.25rem;font-size:0.75rem;line-height:1.35;color:#d7ecfa}
.jy-cta .btn{--bg:#fff;--fg:var(--ink)}
.steps{list-style:none;margin:0 0 clamp(2.5rem,5vw,4rem);padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:1.25rem}
.steps>*{border-top:2px solid var(--ink);padding:1.375rem 0 0;margin:0}
.steps .n,.steps .leaf{display:block;font:600 clamp(1.75rem,2.6vw,2.5rem)/1 var(--fd);font-stretch:100%;color:var(--accent-d);margin-bottom:1rem}
.steps b,.steps h4{display:block;font:600 1.1875rem/1.2 var(--fd);font-stretch:110%;margin:0 0 0.375rem}
.steps span:not(.n),.steps p{color:var(--muted);font-size:0.9375rem;margin:0}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1rem,2vw,1.75rem)}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.75rem)}
.g2>*,.g3>*{min-width:0}
.card{background:var(--soft);border-radius:var(--r);padding:clamp(1.5rem,3vw,2.75rem)}
.card.white{background:#fff}
.card h3{font:600 clamp(1.375rem,1.9vw,1.75rem)/1.15 var(--fd);font-stretch:112%;letter-spacing:-.015em;margin-bottom:0.5rem}
.wiz-in{margin-top:1.375rem;background:#fff;border-radius:var(--r);padding:1.375rem;border:1px solid var(--line)}
.wiz-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.875rem}.wiz-hd h3{margin:0;font-size:1.25rem}
.wiz-x{width:2.375rem;height:2.375rem;border:0;border-radius:50%;background:var(--soft);font-size:1.25rem}
.x-quiz fieldset{border:0;padding:0;margin:0 0 1rem}
.x-quiz legend{font-weight:700;font-size:0.875rem;margin-bottom:0.5rem}
.inline{display:flex;gap:0.625rem;margin-top:0.375rem}
.inline input{flex:1;min-width:0;min-height:3.25rem;border:1.5px solid var(--line);border-radius:62.4375rem;padding:0 1.25rem;font:inherit;background:#fff;outline:0}
.inline input:focus{border-color:var(--accent)}

/* events gallery */
.wk{padding:clamp(5rem,10vw,9.375rem) 0;background-color:var(--teal-deep);background-image:radial-gradient(56rem 28rem at 88% 0%,rgba(140,198,63,.14),transparent 70%),radial-gradient(44rem 26rem at 0% 100%,rgba(200,238,143,.1),transparent 70%)}
.wk .lede{color:#cfe3ec}
.wk-g{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(1rem,2vw,1.75rem)}
.wk-c{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);border-radius:var(--r);overflow:hidden;display:grid;grid-template-columns:minmax(7.5rem,38%) 1fr;transition:background .4s}
.wk-c:hover{background:rgba(255,255,255,.1)}
.wk-c.big{grid-row:span 3;grid-template-columns:1fr;grid-template-rows:auto 1fr}
.wk-im{overflow:hidden;min-height:100%}
.wk-c.big .wk-im{aspect-ratio:16/10}
.wk-im img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.wk-c:hover .wk-im img{transform:scale(1.06)}
.wk-b{padding:clamp(1.125rem,2vw,1.875rem);display:flex;flex-direction:column;align-items:flex-start;gap:0.5rem}
.wk-c.big .wk-b{padding:clamp(1.5rem,3vw,2.5rem)}
.wk-m{font-size:0.8438rem;color:#a7c7d4;margin:0}
.wk-b h3{font:600 clamp(1.125rem,1.5vw,1.375rem)/1.2 var(--fd);font-stretch:110%;margin:0.25rem 0}
.wk-c.big h3{font-size:clamp(1.5rem,2.4vw,2.25rem)}
.wk-i{font-size:0.9062rem;color:#cfe3ec;margin:0 0 0.625rem;flex:1}
.x-count{font-weight:700;font-size:0.8438rem;color:var(--accent-d);font-variant-numeric:tabular-nums}
.dark .x-count,.wk .x-count{color:var(--accent)}

/* What's on: photo wall of past events (left) + four event cards (right) */
.wk-g2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,6vw,7rem);align-items:start}
.wk-l .xl{margin-bottom:1.75rem}
.wk-l .lede{margin-bottom:clamp(2.5rem,4.5vw,4rem)}
.pw{position:relative;display:grid;grid-template-columns:1.25fr 1fr 1fr;grid-template-rows:repeat(3,clamp(7rem,10vw,10.5rem));gap:clamp(0.75rem,1.2vw,1.125rem)}
.pw-t{position:relative;margin:0;overflow:hidden;border-radius:1.25rem;background:#17402a;box-shadow:0 1rem 2rem rgba(0,0,0,.2)}
.pw-t0{grid-column:1;grid-row:1/3}.pw-t1{grid-column:2/4;grid-row:1}.pw-t2{grid-column:2;grid-row:2/4}.pw-t3{grid-column:3;grid-row:2/4}.pw-t4{grid-column:1;grid-row:3}
/* each photo tile gets its own shape: arch, leaf, capsule, mirrored leaf, soft square */
.pw-t0{border-radius:999px 999px 1.25rem 1.25rem}
.pw-t1{border-radius:3.5rem 0.75rem 3.5rem 0.75rem}
.pw-t2{border-radius:999px}
.pw-t3{border-radius:0.75rem 3.5rem 0.75rem 3.5rem}
.pw-t4{border-radius:2.25rem 2.25rem 2.25rem 0.5rem}
.pw-badge{left:50%!important;top:auto!important;bottom:-1rem;transform:translateX(-50%);white-space:nowrap}
.pw{margin-bottom:1.5rem}
.pw-i{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease}
.pw-i.on{opacity:1}
.pw-i img{width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 6s ease}
.pw-i.on img{transform:scale(1.12)}
.pw-cap{position:absolute;left:0;right:0;bottom:0;padding:1.5rem 0.875rem 0.625rem;font-size:0.8125rem;font-weight:600;line-height:1.3;color:#fff;background:linear-gradient(0deg,rgba(6,16,28,.75),transparent);opacity:0;transform:translateY(0.5rem);transition:.4s var(--ease)}
.pw-t:hover .pw-cap{opacity:1;transform:none}
.pw-badge{position:absolute;left:1rem;top:1rem;z-index:2;display:flex;align-items:center;gap:0.5rem;padding:0.4rem 0.8rem;border-radius:999px;font:700 0.75rem/1 var(--fb);letter-spacing:.12em;text-transform:uppercase;color:#fff;background:rgba(10,24,40,.45);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}
.pw-badge .dot{width:0.5rem;height:0.5rem;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0.25rem rgba(140,198,63,.25);animation:illPulse 2s ease-in-out infinite}
@keyframes illPulse{0%,100%{transform:scale(.8);opacity:.75}50%{transform:scale(1.15);opacity:1}}
.wk-r{display:grid;gap:clamp(1.25rem,2vw,1.875rem)}
.ev{display:grid;grid-template-columns:1fr clamp(7rem,10vw,9.5rem);gap:clamp(1.25rem,2vw,2rem);align-items:center;padding:clamp(0.875rem,1.2vw,1.125rem);border-radius:1.5rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);transition:transform .5s var(--ease),background .4s,border-color .4s,box-shadow .5s var(--ease)}
.ev:hover{transform:translateY(-0.25rem);background:rgba(255,255,255,.1);border-color:rgba(140,198,63,.45);box-shadow:0 1.25rem 2.5rem rgba(0,0,0,.25)}
.ev-im{position:relative;align-self:stretch;min-height:8.75rem;border-radius:1.125rem;overflow:hidden}
.ev-im img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.ev:hover .ev-im img{transform:scale(1.07)}
/* softer tone for event-card images (files unchanged) */
.ev-im img{filter:contrast(.84) saturate(.82) brightness(.95)}
.ev-date{position:absolute;right:0.5rem;top:0.5rem;min-width:3.25rem;padding:0.375rem 0.5rem;border-radius:0.75rem;background:#fff;color:var(--ink);text-align:center;box-shadow:0 0.375rem 1rem rgba(0,0,0,.25)}
.ev-date b{display:block;font:700 1.125rem/1 var(--fd);font-stretch:112%}
.ev-date span{display:block;font:700 0.6875rem/1.2 var(--fb);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-d)}
/* plaque-shaped event cards: every corner scooped inward (concave), like an ornate label */
.ev{--c:clamp(1.5rem,2.2vw,2rem);--r:calc(var(--c) * .82);border:0!important;border-radius:0!important;
  -webkit-mask:radial-gradient(circle at 0 0,#0000 var(--r),#000 calc(var(--r) + 1px)) left top/var(--c) var(--c) no-repeat,
    radial-gradient(circle at 100% 0,#0000 var(--r),#000 calc(var(--r) + 1px)) right top/var(--c) var(--c) no-repeat,
    radial-gradient(circle at 0 100%,#0000 var(--r),#000 calc(var(--r) + 1px)) left bottom/var(--c) var(--c) no-repeat,
    radial-gradient(circle at 100% 100%,#0000 var(--r),#000 calc(var(--r) + 1px)) right bottom/var(--c) var(--c) no-repeat,
    linear-gradient(#000,#000) center/calc(100% - 2 * var(--c) + 4px) 100% no-repeat,
    linear-gradient(#000,#000) center/100% calc(100% - 2 * var(--c) + 4px) no-repeat;
  mask:radial-gradient(circle at 0 0,#0000 var(--r),#000 calc(var(--r) + 1px)) left top/var(--c) var(--c) no-repeat,
    radial-gradient(circle at 100% 0,#0000 var(--r),#000 calc(var(--r) + 1px)) right top/var(--c) var(--c) no-repeat,
    radial-gradient(circle at 0 100%,#0000 var(--r),#000 calc(var(--r) + 1px)) left bottom/var(--c) var(--c) no-repeat,
    radial-gradient(circle at 100% 100%,#0000 var(--r),#000 calc(var(--r) + 1px)) right bottom/var(--c) var(--c) no-repeat,
    linear-gradient(#000,#000) center/calc(100% - 2 * var(--c) + 4px) 100% no-repeat,
    linear-gradient(#000,#000) center/100% calc(100% - 2 * var(--c) + 4px) no-repeat;
  background:rgba(255,255,255,.09)!important;padding:clamp(1.125rem,1.6vw,1.5rem) clamp(1.25rem,1.8vw,1.75rem)!important}
.ev:hover{background:rgba(255,255,255,.14)!important;box-shadow:none!important}
.ev-f{background:linear-gradient(120deg,rgba(140,198,63,.28),rgba(168,85,247,.24))!important}
.ev-f:hover{background:linear-gradient(120deg,rgba(140,198,63,.36),rgba(168,85,247,.32))!important}
.ev .ev-im{border-radius:0.875rem}
/* image on the right inside each event card */
.ev .ev-im{order:2}
.ev-b{display:flex;flex-direction:column;gap:0.625rem;padding:0.5rem 0 0.5rem 1rem;min-width:0}
.ev-m{margin:0;font-size:0.8125rem;color:#a7c7d4}
.ev h3{margin:0.125rem 0 0;font:600 clamp(1.0625rem,1.35vw,1.25rem)/1.25 var(--fd);font-stretch:108%}
.ev-i{margin:0;font-size:0.875rem;color:#cfe3ec;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ev-f2{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:0.875rem}
.ev .x-count{color:var(--accent);font-size:0.8125rem}
/* featured (World Health Innovation Forum): bigger poster, gradient border */
.ev-f{grid-template-columns:1fr clamp(9rem,13vw,12.5rem);background:linear-gradient(rgba(14,40,60,.92),rgba(14,40,60,.92)) padding-box,linear-gradient(135deg,var(--accent),#a855f7) border-box;border:1.5px solid transparent}
.ev-f .ev-im{min-height:clamp(11rem,15vw,15rem)}
.ev-f .ev-im img{object-position:50% 20%}
.ev-f h3{font-size:clamp(1.25rem,1.7vw,1.625rem)}
.tag-f{background:linear-gradient(90deg,var(--accent),#a855f7);color:#fff}
.wk-all{justify-self:start;margin-top:1.25rem}
/* testimonials */
.tm{margin-top:0}
.tm-rail{display:flex;gap:clamp(1.25rem,2vw,1.75rem);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0.75rem 0.25rem 1.5rem}
.tm-rail::-webkit-scrollbar{display:none}
.tm-c{position:relative;flex:0 0 clamp(18rem,30vw,25rem);scroll-snap-align:start;margin:0;display:flex;flex-direction:column;gap:1.5rem;padding:clamp(1.75rem,2.6vw,2.5rem);border-radius:1.75rem;background:#fff;border:1px solid #e1ebe2;box-shadow:0 0.75rem 2rem rgba(24,48,31,.07);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.tm-c:hover{transform:translateY(-0.25rem);box-shadow:0 1.5rem 3rem rgba(24,48,31,.12)}
.tm-q{position:absolute;top:0.25rem;right:1.25rem;font:700 4.5rem/1 Georgia,serif;color:var(--accent);opacity:.18}
.tm-c blockquote{margin:0;flex:1;padding-right:2.25rem;font:500 clamp(1rem,1.15vw,1.125rem)/1.7 var(--fb);color:var(--ink)}
.tm-c figcaption{display:flex;align-items:center;gap:0.875rem;flex-wrap:wrap;padding-top:1.25rem;border-top:1px solid #edf1f5}
.tm-av{width:3.5rem;height:3.5rem;flex:none;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),var(--mint));color:#fff;font:700 1.0625rem var(--fd);box-shadow:0 0 0 3px #fff,0 0 0 4.5px rgba(140,198,63,.35)}
.tm-av img{width:100%;height:100%;object-fit:cover}
.tm-who{flex:1;min-width:8rem}
.tm-who b{display:block;font:600 1rem/1.3 var(--fd);font-stretch:108%}
.tm-who small{display:block;font-size:0.8125rem;color:var(--muted);margin-top:0.125rem}
.tm-logo{height:1.75rem;width:auto;max-width:7rem;object-fit:contain}
/* featured (first) card: gradient frame, bigger quote */
.tm-f{flex-basis:clamp(20rem,40vw,34rem);background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,var(--accent),var(--mint)) border-box;border:2px solid transparent}
.tm-f blockquote{font-size:clamp(1.0625rem,1.4vw,1.3125rem)}
.tm-f .tm-av{width:4.5rem;height:4.5rem}
.tm-ctl{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem}
.tm-ctl .rnd{width:2.75rem;height:2.75rem}
.tm-dots{display:flex;gap:0.5rem}
.tm-dots i{width:0.5rem;height:0.5rem;border-radius:999px;background:#c9d6e2;transition:width .35s var(--ease),background .35s}
.tm-dots i.on{width:1.75rem;background:var(--accent-d)}
/* online meeting booking */
.mtg{border:1px solid #e1ebe2;border-radius:1.75rem!important;padding:clamp(1.5rem,2.6vw,2.25rem)!important}
.mtg .x-field{margin-bottom:0.75rem}
.mtg .x-field input,.mtg .x-field select{height:2.75rem;min-height:2.75rem;padding-block:0;line-height:normal;border-radius:0.875rem;box-sizing:border-box}
.mtg .x-field textarea{border-radius:0.875rem;min-height:0}
/* custom dropdown chevron + calendar icons, set in from the edge */
.mtg .x-field select{-webkit-appearance:none;appearance:none;padding-right:3.25rem;cursor:pointer}
.mtg .x-field input[type=date]{padding-right:3.25rem;cursor:pointer}
.mtg .x-field input[type=date]::-webkit-calendar-picker-indicator{width:1.625rem;height:1.625rem;margin-right:-0.25rem;opacity:0;cursor:pointer}
/* icon layer: the field keeps its own background; the wrapper draws the icon on top */
.mtg .x-field:has(>select),.mtg .x-field:has(>input[type=date]){position:relative}
.mtg .x-field:has(>select)::after,.mtg .x-field:has(>input[type=date])::after{content:"";position:absolute;z-index:2;right:0.75rem;bottom:calc((2.75rem - 1.625rem) / 2);width:1.625rem;height:1.625rem;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 28 28%22%3E%3Ccircle cx=%2214%22 cy=%2214%22 r=%2214%22 fill=%22%23e5f6ff%22/%3E%3Cpath d=%22M9.5 12l4.5 4.5 4.5-4.5%22 fill=%22none%22 stroke=%22%230c70b0%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .25s var(--ease)}
.mtg .x-field:has(>input[type=date])::after{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 28 28%22%3E%3Ccircle cx=%2214%22 cy=%2214%22 r=%2214%22 fill=%22%23e5f6ff%22/%3E%3Crect x=%228.5%22 y=%229.5%22 width=%2211%22 height=%2210%22 rx=%222%22 fill=%22none%22 stroke=%22%230c70b0%22 stroke-width=%221.7%22/%3E%3Cpath d=%22M8.5 13h11M11.5 8v3M16.5 8v3%22 fill=%22none%22 stroke=%22%230c70b0%22 stroke-width=%221.7%22 stroke-linecap=%22round%22/%3E%3C/svg%3E")}
.mtg .x-field:has(>select):hover::after{transform:translateY(1px)}
.mtg .consent{margin:0.25rem 0 0.875rem}
.mtg-h{display:flex;gap:1rem;align-items:flex-start;margin-bottom:1.125rem}
.mtg-h h3{margin:0 0 0.25rem}.mtg-h p{margin:0;color:var(--slate);font-size:0.9375rem}
.mtg-ic{flex:none;width:3rem;height:3rem;border-radius:0.875rem;display:grid;place-items:center;background:var(--accent-t);color:var(--accent-d)}
.mtg-ic svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.x-f3{display:grid;grid-template-columns:1.2fr 1fr 1.2fr;gap:14px}
.mtg .btn{width:100%}
/* success card in the dialog */
.ok-card{text-align:center;padding:0.5rem 0 0.25rem}
.ok-ic{width:4.5rem;height:4.5rem;margin:0 auto 1rem;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#22c55e,#16a34a);box-shadow:0 0 0 0.5rem rgba(34,197,94,.15);animation:okPop .5s var(--ease) both}
.ok-ic svg{width:2.25rem;height:2.25rem;fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:30;stroke-dashoffset:30;animation:okDraw .5s ease .35s forwards}
@keyframes okPop{from{transform:scale(.5);opacity:0}}@keyframes okDraw{to{stroke-dashoffset:0}}
.ok-k{margin:0;font:700 0.75rem/1 var(--fb);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.ok-id{display:inline-flex;align-items:center;gap:0.75rem;margin:0.625rem 0 1.25rem;padding:0.625rem 0.75rem 0.625rem 1.125rem;border-radius:999px;background:var(--accent-t);border:1px dashed var(--accent-d)}
.ok-id b{font:700 1.25rem/1 ui-monospace,Menlo,monospace;letter-spacing:.04em;color:var(--ink)}
.ok-copy{border:0;border-radius:999px;padding:0.375rem 0.75rem;background:var(--ink);color:#fff;font:700 0.75rem var(--fb)}
.ok-meta{list-style:none;margin:0 auto 1.25rem;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0.75rem;max-width:26rem}
.ok-meta li{padding:0.75rem;border-radius:0.875rem;background:var(--soft);font-weight:600;font-size:0.9375rem}
.ok-meta span{display:block;font:700 0.6875rem/1.4 var(--fb);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.ok-msg{font-size:1.0625rem;line-height:1.6;color:var(--ink)!important;margin:0 0 0.75rem}
.ok-mail{font-size:0.875rem;margin:0 0 1.25rem}
.btn.full{width:100%}
/* Apply choice window */
.ap-ch{display:grid;gap:0.875rem;padding-top:0.25rem}
.ap-opt{display:flex;align-items:center;gap:1rem;width:100%;text-align:left;padding:1.125rem 1.25rem;border:1.5px solid #e1ebe2;border-radius:1.25rem;background:#fff;color:var(--ink);transition:border-color .25s,box-shadow .3s,transform .3s var(--ease)}
.ap-opt:hover,.ap-opt:focus-visible{border-color:var(--valley);box-shadow:0 0.75rem 1.75rem rgba(46,125,58,.12);transform:translateY(-2px)}
.ap-opt b{display:block;font:600 1.125rem/1.25 var(--fd);font-stretch:108%}
.ap-opt small{display:block;margin-top:0.25rem;font-size:0.875rem;color:var(--slate);line-height:1.45}
.ap-opt>span:nth-child(2){flex:1}
.ap-opt .arr{font-size:1.25rem;color:var(--valley);transition:transform .3s var(--ease)}
.ap-opt:hover .arr{transform:translateX(4px)}
.ap-ic{flex:none;width:3.25rem;height:3.25rem;border-radius:1rem;display:grid;place-items:center;background:var(--accent-t);color:var(--valley)}
.ap-ic svg{width:1.625rem;height:1.625rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ap-int[hidden]{display:none}
.ap-up{display:block;width:1.75rem;height:1.75rem;margin:0 auto 0.375rem;fill:none;stroke:var(--valley);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ap-back{display:block;margin:0.75rem auto 0;border:0;background:none;color:var(--muted);font:600 0.875rem var(--fb)}
.ap-back:hover{color:var(--valley)}
/* Team page: member cards */
.tg{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:clamp(1rem,2vw,1.75rem);margin-top:0.5rem}
.tm-p{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2rem 1.5rem 1.75rem;background:#fff;border:1px solid #e1ebe2;border-radius:1.75rem;box-shadow:0 0.5rem 1.5rem rgba(24,48,31,.05);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.tm-p:hover{transform:translateY(-0.25rem);box-shadow:0 1.25rem 2.75rem rgba(24,48,31,.1)}
.tm-ph{position:relative;width:8.5rem;height:8.5rem;margin-bottom:1.25rem;border-radius:50%;padding:4px;background:linear-gradient(135deg,var(--valley),var(--accent),var(--mint))}
.tm-ph img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;border:3px solid #fff}
.tm-p h3{margin:0 0 0.375rem;font:600 1.1875rem/1.25 var(--fd);font-stretch:108%}
.tm-role{margin:0 0 0.625rem;font-weight:700;font-size:0.875rem;color:var(--valley)}
.tm-brief{margin:0;font-size:0.875rem;line-height:1.55;color:var(--slate)}
/* Journey: year-wise milestone timeline */
.tl{position:relative;list-style:none;margin:2.5rem 0 0;padding:0}
.tl::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;transform:translateX(-50%);background:#dbe6ef}
/* the coloured line draws downwards with the scroll (site.js sets --p from 0 to 1) */
.tl::after{content:"";position:absolute;left:50%;top:0;width:2px;height:calc(var(--p,0) * 100%);transform:translateX(-50%);background:linear-gradient(180deg,var(--valley),var(--accent),var(--mint));box-shadow:0 0 0.75rem rgba(140,198,63,.5)}
.tl-i{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:4.5rem;padding-bottom:2.5rem}
.tl-y{position:absolute;left:50%;top:0;transform:translateX(-50%);z-index:1;padding:0.5rem 1rem;border-radius:999px;background:linear-gradient(135deg,var(--valley),var(--accent));color:#fff;font:700 1rem/1 var(--fd);font-stretch:110%;box-shadow:0 0 0 0.375rem #fff,0 0.5rem 1.25rem rgba(24,48,31,.15)}
.tl-c{grid-column:1;margin-top:2.75rem;padding:1.5rem;background:#fff;border:1px solid #e1ebe2;border-radius:1.5rem;box-shadow:0 0.5rem 1.5rem rgba(24,48,31,.06);text-align:right}
.tl-i:nth-child(even) .tl-c{grid-column:2;text-align:left}
.tl-c h3{margin:0 0 0.5rem;font:600 1.1875rem/1.3 var(--fd);font-stretch:108%}
.tl-c p{margin:0;font-size:0.9375rem;line-height:1.6;color:var(--slate)}
.tl-im{display:block;margin:-0.5rem -0.5rem 1rem;border-radius:1rem;overflow:hidden;aspect-ratio:16/8}
.tl-im img{width:100%;height:100%;object-fit:cover}
.tl-i.todo .tl-c{background:#fbfcfd;border-style:dashed;box-shadow:none}
.tl-i.todo .tl-c h3{color:var(--muted)}
.tl-i.todo .tl-y{background:#fff;color:var(--valley);border:1.5px dashed var(--valley)}
/* year tags pop in with a pulse ring; cards slide in from their own side */
.tl-i.rv{opacity:1;transform:none}
.tl-y{opacity:0;transform:translateX(-50%) scale(.4)}
.tl-i.in .tl-y{animation:tyPop .7s cubic-bezier(.34,1.56,.64,1) forwards}
.tl-y::after{content:"";position:absolute;inset:-0.375rem;border-radius:inherit;border:2px solid var(--accent);opacity:0}
.tl-i.in .tl-y::after{animation:tyRing 1.2s ease-out .45s 2}
@keyframes tyPop{to{opacity:1;transform:translateX(-50%) scale(1)}}
@keyframes tyRing{0%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(1.45)}}
.tl-c{opacity:0;transform:translateX(-2.5rem);transition:opacity .8s var(--ease) .2s,transform .8s var(--ease) .2s}
.tl-i:nth-child(even) .tl-c{transform:translateX(2.5rem)}
.tl-i.in .tl-c{opacity:1;transform:none}
.no-js .tl-y{opacity:1;transform:translateX(-50%)}.no-js .tl-c{opacity:1;transform:none}
@media (max-width:700px){.tl::after{left:1.75rem}.tl-i:nth-child(even) .tl-c{transform:translateX(-2.5rem)}.tl-i.in:nth-child(even) .tl-c{transform:none}.tl::before{left:1.75rem}.tl-y{left:1.75rem}.tl-i{grid-template-columns:1fr}.tl-c,.tl-i:nth-child(even) .tl-c{grid-column:1;margin-left:3.25rem;text-align:left}}
/* impact */
.im{position:relative;color:#fff;overflow:hidden;background:#0e2416;padding-top:clamp(4.5rem,9vw,8rem)}
/* heading on the dark band above the photo */
.im-h{margin-bottom:clamp(2rem,4vw,3.5rem)}
.im-h .xl{margin:0;max-width:20ch}
.im-h .xl em{display:inline}
/* full team photo; pills + button sit over the table front at the bottom on a dark fade */
.im-ph{position:relative}
.im-bg{position:relative;aspect-ratio:1155/462}   /* ceiling strip cropped off the top */
.im-bg img{display:block;width:100%;height:100%;object-fit:cover}
.im-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(6,14,26,.92) 0%,rgba(6,14,26,.78) 16%,rgba(6,14,26,.35) 27%,rgba(6,14,26,0) 34%)}
.im-ov{position:absolute;left:0;right:0;bottom:clamp(1.25rem,3vw,2.75rem);margin-inline:auto;z-index:1;display:grid;grid-template-columns:1fr auto;align-items:center;gap:1rem 1.5rem}   /* pills left, button right on the same row */
.im ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:0.75rem}
.im li{display:flex;align-items:center;gap:0.625rem;padding:0.625rem 1.125rem;border-radius:999px;font-size:clamp(0.875rem,1.05vw,1rem);font-weight:600;color:#fff;background:rgba(6,14,26,.72);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.28);box-shadow:0 0.5rem 1.25rem rgba(0,0,0,.3)}
.im li::before{content:"";flex:none;width:0.5rem;height:0.5rem;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0.25rem rgba(140,198,63,.3)}
.im-ov .btn{justify-self:end;box-shadow:0 0.75rem 1.75rem rgba(0,0,0,.35)}   /* always on the right */

/* life & careers */
.lf{padding:clamp(5rem,10vw,9.375rem) 0}
/* Great Place To Work badge right after "Bio Valley" in the Careers heading */
.lf-h{display:flex;align-items:flex-end;flex-wrap:wrap;column-gap:0.3em}
.lf-h em{display:inline}
.lf-bv{display:inline-flex;align-items:center;gap:0.3em;white-space:nowrap}   /* "Bio Valley" and the badge always share a line */
.gptw{height:1.7em;width:auto;min-height:4.25rem;filter:drop-shadow(0 0.375rem 0.75rem rgba(24,48,31,.15))}
.lf-g{display:grid;grid-template-columns:1.15fr 1fr;gap:5vw;align-items:start}
.lf-mos{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(5.5rem,8.5vw,8.75rem);gap:0.625rem}
.lf-mos figure{margin:0;overflow:hidden;border-radius:0;
  /* ornamental tile: pointed corners, each side one smooth inward curve */
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22 preserveAspectRatio=%22none%22%3E%3Cpath d=%22M0 0Q50 11 100 0Q89 50 100 100Q50 89 0 100Q11 50 0 0Z%22/%3E%3C/svg%3E") center/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22 preserveAspectRatio=%22none%22%3E%3Cpath d=%22M0 0Q50 11 100 0Q89 50 100 100Q50 89 0 100Q11 50 0 0Z%22/%3E%3C/svg%3E") center/100% 100% no-repeat}
.lf-mos img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.lf-mos figure:hover img{transform:scale(1.06)}
/* 12 photos on a 4x4 grid: large feature top-left, one wide tile on row 3 */
.lf-mos .m0{grid-column:1/3;grid-row:1/3}.lf-mos .m7{grid-column:3/5;grid-row:3}
.jobs{border-top:1px solid var(--line)}
.job{display:flex;justify-content:space-between;align-items:center;gap:1.25rem;padding:1.375rem 0;border-bottom:1px solid var(--line)}
.job b{display:block;font:600 1.1875rem/1.25 var(--fd);font-stretch:108%}
.job span{font-size:0.9062rem;color:var(--muted)}

/* news rail */
.nw{padding:clamp(5rem,10vw,9.375rem) 0;background:var(--soft);overflow:hidden}
.nw-ctl{display:flex;gap:0.75rem;justify-content:flex-end}
.nw-s{display:flex;gap:clamp(1rem,2vw,1.75rem);overflow-x:auto;scroll-snap-type:x mandatory;padding-inline:max(var(--gut),calc((100vw - var(--max)) / 2 + var(--gut)));scroll-padding-inline:max(var(--gut),calc((100vw - var(--max)) / 2 + var(--gut)));scrollbar-width:none;padding-bottom:0.375rem}
.nw-s::-webkit-scrollbar{display:none}
.nc{flex:0 0 min(23rem,82vw);scroll-snap-align:start;padding:0.75rem;background:#fff;border:1px solid #e1ebe2;border-radius:1.5rem;box-shadow:0 0.5rem 1.5rem rgba(24,48,31,.05);transition:transform .5s var(--ease),box-shadow .5s,border-color .4s}
.nc:hover{transform:translateY(-0.25rem);border-color:rgba(0,121,184,.35);box-shadow:0 1.25rem 2.5rem rgba(24,48,31,.1)}
.nc a{display:flex;flex-direction:column;height:100%}
/* compact thumbnail above the headline */
.nc-im{aspect-ratio:2.1/1;border-radius:1.0625rem;overflow:hidden;background:#dfe6ee}
.nc-im img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.nc:hover .nc-im img{transform:scale(1.05)}
/* illustrated thumbnails: sketch on the right, publication masthead on the left */
.nc-im.sk{position:relative}
.nc-im.sk img{object-position:right center}
.nc-pub{position:absolute;left:0.875rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:1.125rem;max-width:40%}   /* breathing room between "Featured in" and the masthead */
.pub-k{font:700 0.625rem/1 var(--fb);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.nc-pub b{display:inline-block;padding:0.5rem 0.75rem;border-radius:0.625rem;background:#fff;color:var(--ink);font:700 italic clamp(0.9375rem,1.1vw,1.0625rem)/1.15 Georgia,"Times New Roman",serif;box-shadow:0 0.375rem 1rem rgba(24,48,31,.1);border-left:3px solid var(--accent-d)}
.nc-m{padding:1rem 0.5rem 0;font-size:0.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-d)}
.nc h3{padding:0.5rem 0.5rem 0;margin:0;font:600 1.0625rem/1.4 var(--fb);flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.nc-src{display:flex;justify-content:space-between;align-items:center;margin:0.875rem 0.5rem 0.375rem;padding-top:0.75rem;border-top:1px solid #edf1f5;font-size:0.8125rem;color:var(--muted)}
.nc-more{background:var(--ink);color:#fff;border-color:var(--ink);flex-basis:min(16rem,70vw)}
.nc-more a{justify-content:space-between;padding:1.25rem}
.nc-more .disp{font-size:1.75rem}
.nc-more .arr{font-size:2.625rem;color:var(--accent);align-self:flex-end}

/* contact */
.ct{padding:clamp(5rem,10vw,9.375rem) 0}
.ct-g{display:grid;grid-template-columns:1fr 1.05fr;gap:6vw;align-items:start}
.ct-l{list-style:none;padding:0;margin:2.75rem 0 2.25rem;display:grid;gap:2.5rem}
.ct-l li{font-size:1.125rem;max-width:40ch}
.ct-l span{display:block;font-size:0.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:0.25rem}
.ct-l a:hover{color:var(--accent-d)}
.frm{background:var(--soft);border-radius:var(--r);padding:clamp(1.5rem,3.4vw,3rem)}
.frm h3{font:600 clamp(1.375rem,1.9vw,1.75rem)/1.15 var(--fd);font-stretch:112%;margin-bottom:1.25rem}
.frm .pill,.frm .btn{margin-top:0.25rem}
.consent{display:flex;gap:0.625rem;font-size:0.8438rem;color:var(--muted);margin:0.375rem 0 1.125rem;align-items:flex-start}
.consent input{margin-top:3px;width:1.125rem;height:1.125rem;accent-color:var(--accent-d);flex:none}
.form-msg:empty{display:none}
.form-msg{margin:0 0 0.875rem;padding:0.75rem 0.875rem;border-radius:var(--r);font-size:0.9062rem;background:var(--accent-t);color:var(--ink)}
.form-msg.err{background:#fdeaea;color:var(--bad)}

/* footer */
.ft{background:var(--midnight);color:#fff;position:relative;overflow:hidden}
/* compact call-to-action band in Valley blue, distinct from the dark footer */
.ft-band{position:relative;overflow:hidden;background:linear-gradient(110deg,#1f6a2c 0%,#2e7d3a 45%,#3a9a46 100%)}
.ft-band::after{content:"";position:absolute;right:-6rem;top:-8rem;width:26rem;height:26rem;border-radius:50%;background:radial-gradient(circle,rgba(200,238,143,.35),transparent 70%);pointer-events:none}
.ft-cta{position:relative;z-index:1;display:grid;grid-template-columns:auto 1fr;gap:1.5rem 4vw;align-items:center;padding-block:clamp(2.5rem,4.5vw,3.75rem)}
.ft-cta .disp{font-size:clamp(2rem,3.6vw,3.75rem);margin:0;max-width:none;white-space:nowrap}
.ft-cta .dot{color:var(--mint)}
.ft-cta p{color:#e8f4e9;font-size:1.0625rem;max-width:44ch;margin:0}
.ft-cta-r{justify-self:end;display:flex;flex-direction:column;gap:0.875rem}
.ft-band .btn:not(.ghost){--bg:#fff;--fg:var(--ink)}
.ft-cta .row{margin-top:0}
.ft-grid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:2.5rem;padding:clamp(3.5rem,6vw,5.625rem) 0 clamp(1.75rem,2.6vw,2.75rem)}   /* tighter below the social icons */
.ft-logo .lg{height:4rem;width:auto;margin-bottom:1rem}
.ft-name{font-weight:700;font-size:1rem;margin-bottom:1.5rem}.ft-name span{font-weight:400;color:#93a0b2}
.ft-addr{color:#b7c9da;font-size:0.9375rem;max-width:34ch;margin-bottom:1.5rem}
.ft-addr a:hover,.ft-col a:hover{color:var(--accent)}
/* contact lines with icons + compact newsletter capsule, inside the left column */
.ft-ct{list-style:none;margin:0;padding:0;display:grid;gap:1.125rem}
.ft-ct li{display:flex;align-items:center;gap:0.625rem;font-size:0.9375rem;color:#b7c9da}
.ft-ct svg{width:1.0625rem;height:1.0625rem;flex:none;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ft-ct a:hover{color:var(--accent)}
.nl{max-width:24rem}
.ft-col .nl{margin-top:2.5rem}   /* newsletter under the Contact links */
.nl-h{display:block;font:700 0.75rem/1 var(--fb);letter-spacing:.16em;text-transform:uppercase;color:#8eaac4;margin:0 0 0.625rem}
.nl-row{display:flex;align-items:center;gap:0.25rem;padding:0.25rem;border:1.5px solid rgba(255,255,255,.22);border-radius:999px;transition:border-color .3s}
.nl-row:focus-within{border-color:var(--accent)}
.nl-row input{flex:1;min-width:0;height:2.5rem;padding:0 0.875rem;background:transparent;border:0;outline:0;color:#fff;font:inherit;font-size:0.9375rem}
.nl-row input::placeholder{color:#8a9fb6}
.nl-row .btn{min-height:2.5rem;padding:0 1.125rem;font-size:0.875rem}
.ft-col h3{font:700 0.75rem/1 var(--fb);letter-spacing:.16em;text-transform:uppercase;color:#8eaac4;margin:0 0 1rem}
.ft-col h3:not(:first-child){margin-top:2.125rem}
.ft-col a{display:block;color:#dbe1e8;font-size:0.9688rem;padding:0.3125rem 0;transition:color .2s,transform .3s var(--ease)}
.ft-col a:hover{transform:translateX(0.25rem)}
.ft-b{display:flex;flex-wrap:wrap;gap:1rem 1.875rem;align-items:center;justify-content:space-between;padding:1.625rem 0 2.125rem;border-top:1px solid rgba(255,255,255,.12);font-size:0.875rem;color:#8794a7}
.ft-social{margin-top:1.5rem}
/* desktop: social icons sit at the bottom of the left column, level with the newsletter capsule on the right */
@media (min-width:1101px){.ft-about{display:flex;flex-direction:column;align-items:flex-start}.ft-about .ft-social{margin-top:auto;padding-top:1.5rem}}

/* ---------- 4) Sub-pages ---------- */
/* clean sub-page header (no photo banner), styled like the home page's section headers */
.sp-h{position:relative;overflow:hidden;padding:calc(var(--hdr) + clamp(1rem,2vw,1.5rem)) 0 clamp(1.25rem,2vw,1.75rem);background:radial-gradient(48rem 26rem at 95% 0%,rgba(140,198,63,.09),transparent 70%),radial-gradient(40rem 24rem at 0% 100%,rgba(200,238,143,.1),transparent 70%),#f6faf6;border-bottom:1px solid #e1ebe2}
.sp-h .crumb{color:var(--muted);margin-bottom:1.75rem;animation:none}
.sp-h .crumb a:hover{color:var(--accent-d)}
.sp-h .crumb [aria-current]{color:var(--ink);font-weight:600}
.sp-h .xl{margin:0 0 0.625rem;max-width:none;font-size:clamp(2.125rem,3.6vw,3.5rem)}
.sp-h .xl.long{font-size:clamp(1.875rem,3vw,3rem)}   /* long titles stay on one line */
/* one header size everywhere: text on the left, buttons on the right, same height on every sub-page */
.sp-h .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;column-gap:3rem;height:10.5rem}   /* one standard banner height on every sub-page */
.sp-h .sp-tx{min-width:0}
.sp-h .lede{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sp-h .xl em{display:inline}
.sp-h .lede{margin:0;max-width:72ch}
.sp-h .acts{display:flex;flex-wrap:nowrap;gap:0.875rem;margin:0;justify-self:end;padding-bottom:0.25rem}
/* buttons written for the old dark banner, shown on the light header */
.sp-h .pill.w{--bg:var(--ink);--fg:#fff}.sp-h .pill.w::before{background:var(--accent)}.sp-h .pill.w:hover{color:var(--ink);border-color:var(--accent)}
.sp-h .pill.ol{--bg:transparent;--fg:var(--ink);border-color:var(--ink)}.sp-h .pill.ol::before{background:var(--ink)}.sp-h .pill.ol:hover{color:#fff}
.sp-h.nf{min-height:70svh;display:flex;align-items:center}
.sp-h.nf .wrap{display:block;min-height:0;height:auto}.sp-h.nf .acts{margin-top:1.75rem;justify-self:auto}
.ph{position:relative;min-height:min(78svh,47.5rem);display:flex;align-items:flex-end;color:#fff;background:var(--ink);overflow:hidden;padding:calc(var(--hdr) + 5rem) 0 clamp(3.5rem,7vw,6.25rem)}
.ph.plain{min-height:min(62svh,37.5rem)}
.ph-bg{position:absolute;inset:0}
.ph-bg img{width:100%;height:100%;object-fit:cover;animation:kb 14s linear both}
.ph-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,30,15,.9) 0%,rgba(10,30,15,.6) 50%,rgba(10,30,15,.3)),linear-gradient(0deg,rgba(10,30,15,.7),transparent 50%)}
.ph.nf{background:radial-gradient(ellipse at 80% 20%,#123a52,var(--ink) 60%)}
.ph-c{position:relative;z-index:1}
.ph h1{font-size:clamp(2.5rem,6.6vw,6.75rem);margin:0 0 1.5rem;max-width:14ch;animation:up 1s var(--ease) .1s both}
.ph-p{font-size:clamp(1.0625rem,1.4vw,1.3125rem);color:#d5dce6;max-width:58ch;animation:up 1s var(--ease) .22s both}
.ph .acts{display:flex;flex-wrap:wrap;gap:0.875rem;margin-top:1.875rem;animation:up 1s var(--ease) .34s both}
.ph-n{position:absolute;right:var(--gut);bottom:-.12em;font-size:clamp(7.5rem,22vw,21.25rem);color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.2);z-index:1;pointer-events:none;line-height:1}
.crumb{display:flex;flex-wrap:wrap;gap:0.625rem;font-size:0.875rem;color:#aab4c3;margin-bottom:1.625rem;animation:up 1s var(--ease) both}
.crumb a:hover{color:var(--accent)}
.crumb [aria-current]{color:#fff}
.subnav{position:sticky;top:var(--hdr);z-index:40;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid #e1ebe2}
.subnav .wrap{display:flex;gap:0.5rem;overflow-x:auto;scrollbar-width:none;padding-block:0.75rem}
.subnav .wrap::-webkit-scrollbar{display:none}
.subnav a{flex:none;padding:0.625rem 1.125rem;border-radius:999px;font-weight:700;font-size:0.9375rem;color:var(--slate);border:1px solid #e1ebe2;background:#fff;transition:.25s}
.subnav a:hover{color:var(--ink);border-color:var(--accent-d)}
.subnav a.on{color:#fff;background:var(--valley);border-color:var(--valley)}

.ps{padding:clamp(4rem,8vw,8.125rem) 0}
.ps.alt{background:var(--soft)}
.ps h2,.ps .big,.big{font:600 clamp(1.875rem,3.8vw,3.625rem)/1.05 var(--fd);font-stretch:118%;letter-spacing:-.025em;margin-bottom:1.375rem}
.h-xl{font:600 clamp(1.875rem,3.8vw,3.625rem)/1.05 var(--fd);font-stretch:118%;letter-spacing:-.025em}
.ps .lede{margin-bottom:2.25rem}
.ps .g3,.ps .lab-grid{margin-top:0.75rem}
.fcard{background:#fff;border:1px solid #e1ebe2;border-radius:1.5rem;box-shadow:0 0.5rem 1.5rem rgba(24,48,31,.05);padding:clamp(1.5rem,2.4vw,2.25rem);display:flex;flex-direction:column;align-items:flex-start;gap:0.375rem;transition:border-color .3s,box-shadow .5s var(--ease),transform .5s var(--ease)}
.fcard:hover{border-color:transparent;box-shadow:0 1.625rem 3.125rem rgba(24,48,31,.1);transform:translateY(-0.25rem)}
.g3,.lab-grid{counter-reset:fc}
.fcard{counter-increment:fc}
.fcard .ic{width:3.25rem;height:3.25rem;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-size:0;margin-bottom:1rem;transition:.4s var(--ease)}
.fcard .ic::before{content:counter(fc,decimal-leading-zero);font:700 0.875rem/1 var(--fb);color:var(--accent-d);letter-spacing:.04em}
.fcard:hover .ic{background:var(--ink);border-color:var(--ink)}
.fcard:hover .ic::before{color:var(--accent)}
.fcard h3{font:600 1.3125rem/1.2 var(--fd);font-stretch:110%;margin:0 0 0.25rem}
.fcard p{color:var(--slate);font-size:1rem;margin:0 0 0.875rem;flex:1}
.fcard .meta{flex:0;display:flex;flex-wrap:wrap;gap:0.375rem}
.fcard .btns{display:flex;gap:0.625rem;flex-wrap:wrap}
.lab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(18.75rem,1fr));gap:clamp(1rem,2vw,1.75rem)}
.band2{background:linear-gradient(110deg,#1f6a2c 0%,#2e7d3a 45%,#3a9a46 100%);color:#fff;border-radius:1.75rem;padding:clamp(2rem,4.5vw,4rem);display:flex;justify-content:space-between;align-items:center;gap:1.875rem;flex-wrap:wrap;position:relative;overflow:hidden}
.band2::after{content:"";position:absolute;right:-7.5rem;top:-7.5rem;width:22.5rem;height:22.5rem;border-radius:50%;background:radial-gradient(circle,rgba(140,198,63,.35),transparent 70%)}
.band2>*{position:relative;z-index:1}
.band2 h3{font:600 clamp(1.5rem,2.6vw,2.375rem)/1.1 var(--fd);font-stretch:115%;margin-bottom:0.625rem}
.band2 p{color:#e8f4e9;margin:0;max-width:56ch}
.band2 .pill.w{--bg:#fff;--fg:var(--ink)}
.band-acts{display:flex;gap:0.75rem;flex-wrap:wrap}
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,6rem);align-items:center}
.split>*{min-width:0}
.pimg{margin:0;border-radius:1.5rem;overflow:hidden;box-shadow:0 1.25rem 2.75rem rgba(24,48,31,.12)}
.pimg img{width:100%;aspect-ratio:5/4;object-fit:cover;transition:transform 1.4s var(--ease)}
.pimg:hover img{transform:scale(1.04)}
.pimg.circle img{aspect-ratio:1}
.pimg.wide img,.pimg.wide picture img{aspect-ratio:700/392}   /* wide photos shown at their natural shape */
.pimg picture img,.pimg>img{width:100%;aspect-ratio:5/4;object-fit:cover}
/* partner logo on a facility page */
.pg-logo{display:block;height:4.5rem;width:auto;margin-bottom:1.5rem;padding:0.5rem;border-radius:1rem;background:#fff;border:1px solid #e1ebe2;box-shadow:0 0.5rem 1.25rem rgba(24,48,31,.08)}
.pg-logo.wide{height:4rem}
.checks{list-style:none;padding:0;margin:1.375rem 0 2rem;display:grid;gap:0.875rem}
.checks li{display:flex;gap:0.875rem;font-weight:500;font-size:1.0625rem}
.checks li::before{content:"";flex:none;width:1.375rem;height:1.375rem;margin-top:2px;border-radius:50%;background:var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2314171c' stroke-width='3'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E") center/0.875rem no-repeat}
.stages{display:grid;grid-template-columns:repeat(5,1fr);gap:1.25rem}
.stages .stg{border-top:2px solid var(--ink);padding-top:1.375rem}
.stages .leaf{font-size:1.875rem;margin-bottom:0.875rem}
.stages h4{font:600 1.1875rem/1.2 var(--fd);font-stretch:110%;margin-bottom:0.375rem}
.stages p{color:var(--muted);font-size:0.9375rem}
.evl{display:grid;gap:0.875rem}
.evr{display:grid;grid-template-columns:9.375rem 1fr auto;gap:1.5rem;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:0.875rem 1.5rem 0.875rem 0.875rem;transition:box-shadow .4s,border-color .3s}
.evr:hover{border-color:transparent;box-shadow:0 1.25rem 2.75rem rgba(24,48,31,.09)}
.evr>*{min-width:0}
.evr.job-row{grid-template-columns:1fr auto;padding:1.5rem}
.evr img{width:9.375rem;height:6.5rem;object-fit:cover;border-radius:0.25rem}
.evr h3{font:600 1.25rem/1.25 var(--fd);font-stretch:108%;margin:0.5rem 0 0.25rem;overflow-wrap:anywhere}
.evr p{margin:0;color:var(--muted);font-size:0.9375rem}
.gal{columns:3 16.25rem;column-gap:1rem}
.gal img{width:100%;border-radius:var(--r);margin-bottom:1rem;break-inside:avoid}
.map{border-radius:var(--r);overflow:hidden;aspect-ratio:16/8;background:var(--soft)}
.map iframe{width:100%;height:100%;border:0;display:block;filter:grayscale(.4)}
.cc{display:flex;gap:1.125rem;align-items:center;padding:1.625rem;border:1px solid var(--line);border-radius:var(--r);background:#fff;transition:.4s var(--ease);min-width:0}
.cc:hover{border-color:var(--accent);transform:translateY(-0.25rem)}
.cc .ic{width:3.625rem;height:3.625rem;border-radius:50%;background:var(--ink);color:var(--accent);display:grid;place-items:center;font-size:1.375rem;font-weight:800;flex:none}
.cc b{display:block;font:600 1.1875rem/1.2 var(--fd);font-stretch:108%}.cc span span{color:var(--muted);font-size:0.9375rem;overflow-wrap:anywhere}
.pass{width:min(25rem,100%);aspect-ratio:1.6;border-radius:0.875rem;padding:1.625rem;color:#fff;background:linear-gradient(135deg,#13301f 0%,var(--ink) 55%),var(--ink);box-shadow:0 1.875rem 3.75rem rgba(24,48,31,.3);display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;margin-inline:auto}
.pass::after{content:"";position:absolute;right:-4.375rem;top:-4.375rem;width:13.75rem;height:13.75rem;border-radius:50%;background:radial-gradient(circle,rgba(140,198,63,.55),transparent 70%)}
.pass small{letter-spacing:.18em;font-size:0.6875rem;font-weight:700;color:var(--accent)}.pass b{font:600 1.5rem/1.2 var(--fd);font-stretch:112%}.pass .ip-id{opacity:.8;font-size:0.8125rem}
.pass-foot{display:flex;justify-content:space-between;align-items:end;font-size:0.75rem;position:relative;z-index:1}
.pass .qr{width:3.875rem;height:3.875rem;background:repeating-conic-gradient(#fff 0 25%,transparent 0 50%) 0 0/0.75rem 0.75rem;border:0.3125rem solid #fff;border-radius:0.375rem}
.tagp,.x-tag{display:inline-block;font-size:0.6562rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--warn);background:#fff3d6;border-radius:0.25rem;padding:3px 0.4375rem;vertical-align:middle;font-family:var(--fb)}
.partners-sec{padding:clamp(4rem,8vw,8.125rem) 0}
.partners-sec h2{font:600 clamp(1.875rem,3.8vw,3.625rem)/1.05 var(--fd);font-stretch:118%}
.partners-sec .eb{justify-content:center}
.pmarq{overflow:hidden;margin:3rem 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.pmarq ul{display:flex;width:max-content;list-style:none;margin:0;padding:0;animation:mq 50s linear infinite}
.pmarq li{padding:0 2.5rem;height:4.375rem;display:grid;place-items:center}
.pmarq img{max-height:3.5rem;max-width:8.75rem;filter:grayscale(1);opacity:.6}
.ptiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(12.5rem,1fr));gap:1rem}
.pt{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.625rem 1.25rem;display:flex;flex-direction:column;align-items:center;gap:0.875rem;text-align:center;transition:.4s var(--ease)}
.pt:hover{border-color:var(--accent);transform:translateY(-0.25rem)}
.pt-in{height:4.75rem;display:grid;place-items:center}.pt-in img{max-height:4.5rem;max-width:9.375rem;object-fit:contain}
.pt-name{font-size:0.875rem;font-weight:600;color:var(--slate)}
.track-out .x-tl{margin-top:1rem}
.rti-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.75rem)}
.rti-card{background:#fff;border-radius:var(--r);padding:clamp(1.5rem,2.6vw,2.375rem);display:flex;flex-direction:column;align-items:flex-start;gap:0.375rem;border-top:3px solid var(--accent)}
.rti-role{font-size:0.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-d)}
.rti-card h2{font:600 1.5rem/1.2 var(--fd);font-stretch:110%;margin:0.5rem 0 0}
.rti-title{color:var(--muted);margin:0 0 0.625rem}
.rti-row{display:flex;gap:0.625rem;font-size:0.9375rem;color:var(--slate);flex:1}
.rti-row svg{width:1.25rem;height:1.25rem;fill:none;stroke:var(--accent-d);stroke-width:1.8;flex:none;margin-top:2px}
.rti-mail svg{width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-width:2}
.rti-mail{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.lcard{padding:clamp(4.375rem,9vw,8.75rem) 0}
.lcard-2{background:var(--soft)}
.lgrid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(2rem,6vw,6rem);align-items:center}
.lgrid.rev{grid-template-columns:1.15fr .85fr}
.lgrid.rev .lphoto{order:2}
/* leadership portraits: arch frame with an offset gradient outline */
.lphoto{position:relative;margin:clamp(1.5rem,3vw,2.5rem) clamp(1.5rem,3vw,2.5rem) clamp(2rem,3.5vw,3rem);isolation:isolate}
.lp-frame{position:relative;z-index:2;display:block;overflow:hidden;border-radius:999px 999px 2rem 2rem;box-shadow:0 1.75rem 3.5rem rgba(24,48,31,.18)}
.lp-frame img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform 1.4s var(--ease)}
.lphoto:hover .lp-frame img{transform:scale(1.04)}
/* thin gradient outline, offset down-right (mirrored on the second card) */
.lphoto::before{content:"";position:absolute;z-index:1;inset:0;transform:translate(1.25rem,1.25rem);border-radius:999px 999px 2rem 2rem;padding:2px;
  background:linear-gradient(160deg,var(--accent),var(--mint) 45%,var(--valley));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;transition:transform .8s var(--ease)}
.lphoto:hover::before{transform:translate(0.75rem,0.75rem)}
.lcard-2 .lphoto::before{transform:translate(-1.25rem,1.25rem)}
.lcard-2 .lphoto:hover::before{transform:translate(-0.75rem,0.75rem)}
.ltext .big{margin-bottom:0.625rem}
.lrole{font-weight:700;color:var(--accent-d);margin-bottom:1.375rem}
.llead{font-size:1.25rem;font-weight:600}
.ltext p{color:var(--slate)}
.lquote{border-left:3px solid var(--accent);padding:0.375rem 0 0.375rem 1.375rem;margin:1.75rem 0 0;font:600 clamp(1.1875rem,1.6vw,1.4375rem)/1.4 var(--fd);font-stretch:105%;color:var(--ink)!important}

/* ---------- 5) Interactive components ---------- */
.x-pill{display:inline-block;font-size:0.75rem;font-weight:700;border-radius:62.4375rem;padding:0.25rem 0.6875rem;background:var(--soft);color:var(--ink);border:1px solid var(--line)}
.x-pill.ok{background:#e3f5ec;color:var(--ok);border-color:transparent}
.x-pill.warn{background:#fff3d6;color:var(--warn);border-color:transparent}
.x-pill.bad{background:#fdeaea;color:var(--bad);border-color:transparent}
.x-pill.br{background:var(--accent-t);color:var(--accent-d);border-color:transparent}
.x-btn{display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;border:1.5px solid var(--ink);border-radius:62.4375rem;padding:0 1.375rem;min-height:3rem;font:700 0.9062rem/1 var(--fb);cursor:pointer;background:var(--ink);color:#fff;transition:.25s}
.x-btn:hover{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.x-btn:disabled{opacity:.6;cursor:wait}
.x-btn.o{background:#fff;color:var(--ink);border-color:var(--line)}
.x-btn.s{background:var(--accent-t);color:var(--accent-d);border-color:transparent}
.x-btn.sm{min-height:2.375rem;padding:0 0.9375rem;font-size:0.8125rem}
.x-btn.full{width:100%;margin-top:0.375rem}
.x-dlg{border:0;border-radius:0.625rem;padding:0;max-width:38.75rem;width:calc(100% - 2rem);max-height:calc(100dvh - 2rem);overflow:auto;box-shadow:0 2.5rem 5rem rgba(0,0,0,.35);color:var(--ink);background:#fff;font-family:var(--fb);overscroll-behavior:contain}
.x-dlg[open]{animation:dlg .45s var(--ease)}
@keyframes dlg{from{opacity:0;transform:translateY(1.5rem)}}
.x-dlg::backdrop{background:rgba(10,30,15,.6);backdrop-filter:blur(0.375rem)}
.x-dlg .mi{aspect-ratio:16/7;overflow:hidden}.x-dlg .mi img{width:100%;height:100%;object-fit:cover}
.x-dlg .mh{padding:1.5rem 1.625rem 0;display:flex;justify-content:space-between;gap:0.75rem;align-items:start;position:sticky;top:0;background:#fff;z-index:1}
.x-dlg h3{margin:0;font:600 1.375rem/1.2 var(--fd);font-stretch:110%}
.x-dlg .mb{padding:0.875rem 1.625rem 1.625rem}.x-dlg .mb p{color:var(--slate)}
.x-dlg .xx{border:0;background:var(--soft);width:2.625rem;height:2.625rem;border-radius:50%;font-size:1.375rem;flex:none;transition:.25s}
.x-dlg .xx:hover{background:var(--ink);color:#fff}
.x-field{display:flex;flex-direction:column;gap:0.4375rem;margin-bottom:0.875rem;min-width:0}
.x-field label{font-size:0.8438rem;font-weight:700}.x-field label small{font-weight:500;color:var(--muted)}
.x-field input,.x-field select,.x-field textarea{border:1.5px solid var(--line);border-radius:var(--r);padding:0.75rem 0.875rem;background:#fff;color:var(--ink);font:inherit;font-size:1rem;outline:0;width:100%;min-height:3.125rem;transition:border-color .2s,box-shadow .2s}
.x-field input:focus,.x-field select:focus,.x-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 0.25rem rgba(140,198,63,.15)}
.x-field [aria-invalid=true]{border-color:var(--bad)}
.x-f2{display:grid;grid-template-columns:1fr 1fr;gap:0.875rem}
.x-tabs{display:flex;flex-wrap:wrap;gap:0.25rem;background:var(--soft);border-radius:1rem;padding:0.25rem}
.x-tabs button{border:0;background:none;padding:0.5rem 0.875rem;border-radius:62.4375rem;font-weight:700;font-size:0.8125rem;color:var(--muted);min-height:2.375rem}
.x-tabs button[aria-selected=true]{background:var(--ink);color:#fff}
.x-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:0.5rem}
.x-slots button{border:1.5px solid var(--line);background:#fff;border-radius:var(--r);padding:0.625rem 0;font-size:0.8438rem;font-weight:700;min-height:2.75rem}
.x-slots button:hover:not(:disabled){border-color:var(--ink)}
.x-slots button.on{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.x-slots button:disabled{opacity:.35;text-decoration:line-through;cursor:not-allowed}
.x-slots .loading{grid-column:1/-1;color:var(--muted);font-size:0.875rem;padding:0.625rem 0}
.x-drop{border:2px dashed var(--line);border-radius:var(--r);padding:1rem;text-align:center;color:var(--muted);font-size:0.875rem;background:var(--soft);display:block;cursor:pointer;margin-bottom:0.625rem;position:relative;transition:border-color .2s}
.x-drop:hover,.x-drop:focus-within{border-color:var(--accent)}
.x-drop input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.x-drop b{color:var(--ink)}
.x-tl{list-style:none;padding:0;margin:0.875rem 0 0}
.x-tl li{position:relative;padding:0 0 1rem 1.875rem;font-size:0.9062rem}
.x-tl li::before{content:"";position:absolute;left:0.25rem;top:0.3125rem;width:0.8125rem;height:0.8125rem;border-radius:50%;background:#fff;border:2px solid var(--line)}
.x-tl li::after{content:"";position:absolute;left:0.625rem;top:1.3125rem;bottom:0;width:2px;background:var(--line)}
.x-tl li:last-child::after{display:none}
.x-tl li.done::before{background:var(--ok);border-color:var(--ok)}
.x-tl li.now::before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 0.3125rem rgba(140,198,63,.2)}
.x-tl small{display:block;color:var(--muted)}
.x-res{padding:1rem;border-radius:var(--r);background:var(--accent-t);border-left:3px solid var(--accent);font-size:0.9062rem;margin:0.75rem 0}
.x-res.err{background:#fdeaea;border-color:var(--bad);color:var(--bad)}
.x-meter{height:0.5rem;background:#d6e9f4;border-radius:0.5rem;overflow:hidden;margin:0.5rem 0}
.x-meter i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--mint))}
.x-tick{color:var(--ok);font-weight:800}.x-cross{color:var(--bad);font-weight:800}
.x-table{width:100%;border-collapse:collapse;font-size:0.9062rem}
.x-table th{text-align:left;font-size:0.7188rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:0.75rem 0.875rem;background:var(--soft);border-bottom:1px solid var(--line);white-space:nowrap}
.x-table td{padding:0.8125rem 0.875rem;border-bottom:1px solid var(--line);vertical-align:top}
.x-table tr:last-child td{border-bottom:0}
.x-qr{width:11rem;height:11rem;margin:0.625rem auto;display:grid;place-items:center;background:#fff;padding:0.5rem;border-radius:var(--r);border:1px solid var(--line)}
.x-qr img,.x-qr canvas{width:100%!important;height:auto!important}
.x-toast{position:fixed;left:50%;bottom:calc(1.5rem + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(10rem);background:var(--ink);color:#fff;padding:0.875rem 1.25rem;border-radius:62.4375rem;font-size:0.9062rem;font-weight:600;z-index:400;transition:.35s var(--ease);box-shadow:0 1.25rem 2.5rem rgba(0,0,0,.3);max-width:calc(100% - 2rem);border:1px solid rgba(255,255,255,.1)}
.x-toast:not(.show){visibility:hidden;transition:.35s,visibility 0s .35s}
.x-toast.show{transform:translateX(-50%) translateY(0)}
.x-toast.err{background:var(--bad)}
.x-opts{display:flex;flex-wrap:wrap;gap:0.375rem}
.x-opt{border:1.5px solid var(--line);border-radius:62.4375rem;padding:0.4375rem 0.875rem;font-size:0.875rem;cursor:pointer;background:#fff;min-height:2.5rem;display:inline-flex;align-items:center;transition:.2s}
.x-opt:hover{border-color:var(--ink)}
.x-opt input{position:absolute;opacity:0;pointer-events:none}
.x-opt:has(input:checked){border-color:var(--ink);background:var(--ink);color:#fff;font-weight:700}
.x-opt:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.x-steps{display:flex;gap:0.375rem;margin-bottom:1.125rem}
.x-steps span{flex:1;font-size:0.75rem;font-weight:700;border-top:3px solid var(--line);padding-top:0.4375rem;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.x-steps .done{border-color:var(--ok)}.x-steps .cur{border-color:var(--accent);color:var(--ink)}
.x-wfoot{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;gap:0.625rem;flex-wrap:wrap}
.x-wfoot>span:last-child{display:flex;gap:0.5rem;margin-left:auto}
.x-fab{position:fixed;right:1.25rem;bottom:calc(1.25rem + env(safe-area-inset-bottom));z-index:150;border:1px solid rgba(255,255,255,.12);border-radius:62.4375rem;padding:0 1.375rem 0 0.5rem;height:3.5rem;background:var(--ink);color:#fff;font-weight:700;font-size:0.9375rem;display:flex;gap:0.75rem;align-items:center;box-shadow:0 1.25rem 2.5rem rgba(0,0,0,.28);transition:transform .4s var(--ease),opacity .4s}
.x-fab span:first-child{width:2.5rem;height:2.5rem;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--mint));color:var(--ink);display:grid;place-items:center;font-size:1.0625rem}
.x-fab:hover{transform:translateY(-3px)}
.x-fab.away{transform:translateY(140%);opacity:0}
.x-chat{position:fixed;right:1.25rem;bottom:1.25rem;z-index:160;width:25rem;max-width:calc(100% - 1.5rem);height:38.75rem;max-height:calc(100dvh - 2.5rem);background:#fff;color:var(--ink);border-radius:0.875rem;box-shadow:0 2.5rem 5rem rgba(0,0,0,.3);display:none;flex-direction:column;overflow:hidden}
.x-chat.open{display:flex;animation:dlg .45s var(--ease)}
.x-ch{padding:1rem 1.125rem;background:var(--ink);color:#fff;display:flex;gap:0.75rem;align-items:center}
.x-ch .av{width:2.5rem;height:2.5rem;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--mint));color:var(--ink);display:grid;place-items:center;flex:none;font-weight:800}
.x-ch small{display:block;color:#93a0b2;font-size:0.75rem}
.x-ch button{margin-left:auto;background:rgba(255,255,255,.1);border:0;color:#fff;border-radius:50%;width:2.375rem;height:2.375rem;flex:none}
.x-msgs{flex:1;overflow-y:auto;padding:1.125rem;display:flex;flex-direction:column;gap:0.625rem;background:var(--soft);overscroll-behavior:contain}
.x-m{max-width:86%;padding:0.6875rem 0.875rem;border-radius:0.875rem;font-size:0.9062rem;line-height:1.5;overflow-wrap:anywhere}
.x-m.bot{background:#fff;border-top-left-radius:0.25rem}
.x-m.me{background:var(--ink);color:#fff;align-self:flex-end;border-top-right-radius:0.25rem}
.x-m .acts{display:flex;flex-wrap:wrap;gap:0.375rem;margin-top:0.5625rem}
.x-m .acts button{border:1.5px solid var(--ink);background:#fff;border-radius:62.4375rem;padding:0.3125rem 0.75rem;font-size:0.7812rem;font-weight:700}
.x-m .acts button:hover{background:var(--accent);border-color:var(--accent)}
.x-m .src{display:block;margin-top:0.375rem;font-size:0.7188rem;color:var(--muted)}
.x-typing span{display:inline-block;width:0.375rem;height:0.375rem;border-radius:50%;background:var(--muted);margin:0 2px;animation:xb 1s infinite}
.x-typing span:nth-child(2){animation-delay:.15s}.x-typing span:nth-child(3){animation-delay:.3s}
@keyframes xb{50%{transform:translateY(-0.25rem);opacity:.5}}
.x-cf{display:flex;gap:0.5rem;padding:0.75rem;border-top:1px solid var(--line);padding-bottom:calc(0.75rem + env(safe-area-inset-bottom))}
.x-cf input{flex:1;border:1.5px solid var(--line);border-radius:62.4375rem;padding:0.625rem 1rem;outline:0;font:inherit;font-size:1rem;min-width:0}
.x-cf input:focus{border-color:var(--accent)}
.x-cf button{border:0;background:var(--ink);color:#fff;border-radius:50%;width:2.875rem;height:2.875rem;flex:none}
.x-cq{display:flex;gap:0.375rem;overflow-x:auto;padding:0 0.75rem 0.75rem;scrollbar-width:none;background:var(--soft)}
.x-cq button{flex:none;border:1.5px solid var(--line);background:#fff;border-radius:62.4375rem;padding:0.375rem 0.75rem;font-size:0.7812rem;font-weight:700}

/* ---------- 6) Responsive ---------- */
@media (max-width:1280px){.nav2{display:none}}
/* small laptops (1281–1440): tighter menu, AI button as icon only */
@media (min-width:1281px) and (max-width:1440px){.ni>a{padding:0.625rem 0.5rem;font-size:0.875rem}.ni>a::after{left:0.5rem;right:0.5rem}.hd-in{gap:1rem}}
@media (max-width:1100px){
  .ft-grid{grid-template-columns:1fr 1fr}
  .sv-g,.g3,.rti-grid{grid-template-columns:1fr 1fr}
  .sv-g{grid-auto-rows:clamp(18rem,40vw,22rem)}.sv-g>.sv-c:first-child,.sv-g>.sv-c:last-child{grid-column:span 2}
  .fm-grid{grid-template-columns:1fr 1fr}.fm-side{display:none}
}
@media (max-width:900px){
  :root{--hdr:4.5rem}
  .logo .lg{height:3.375rem}.hd.solid .logo .lg{height:3rem}
  .sec-h,.ft-g,.lf-g,.ct-g,.split,.g2,.lgrid,.lgrid.rev,.ft-cta{grid-template-columns:1fr}
  .lgrid.rev .lphoto{order:0}
  .lphoto{max-width:32.5rem}
  .ft-im{max-width:none}
  .spks{height:4rem}.spk:nth-child(3n){display:none}
  .ft-im{margin-top:4.5rem;margin-bottom:3rem}   /* room for the sparkles above/below the photo on phones */
  .st-g{grid-template-columns:1fr;gap:2.875rem}
  .jr{grid-template-columns:1fr;gap:0}
  .jr li{padding:1.125rem 0 1.125rem 1.75rem;border-left:1px solid rgba(255,255,255,.22)}
  .jr li::before{display:none}
  .jr li::after{left:-1px;right:auto;top:0;bottom:0;width:2px;height:auto;transform:scaleY(0);transform-origin:top}
  .jr.in li::after{transform:none}
  .steps,.stages{grid-template-columns:1fr 1fr}
  .wk-g{grid-template-columns:1fr}
  .wk-g2{grid-template-columns:1fr}
  .jy-g{grid-template-columns:1fr}
  .jsteps{grid-template-columns:1fr;gap:1rem}
  .jsteps li{margin-bottom:0;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;row-gap:0.125rem;align-items:center;padding:1.125rem 1.25rem}
  .jsteps li .js-ic{grid-row:1/3;margin:0}
  .jsteps li b{align-self:end}.jsteps li .js-d{grid-column:2;align-self:start}
  .jsteps li .js-bar{grid-column:1/-1;margin-top:0.75rem}
  .js-n{top:50%;transform:translateY(-50%);font-size:2.25rem}
  .jsteps li:not(:last-child)::after{top:auto;bottom:-0.875rem;right:50%;margin:0 -0.6875rem 0 0;transform:rotate(90deg)}
  .wk-c.big{grid-row:auto}
  .fm-grid{grid-template-columns:1fr;min-height:0;padding-top:1.25rem;align-items:start}
  .fm-mid{display:none}
  .fm-k{font-size:1.875rem;opacity:.9}
  .fm-main>li.open .fm-sub{display:grid;gap:2px;padding:0.375rem 0 1rem}
  .fm-main>li.open .fm-sub a{display:block;font-size:1.0625rem;font-weight:600;padding:0.5rem 0;color:#cdd5df}
  .fm-sub small{display:none}
  .evr{grid-template-columns:6rem 1fr}
  .evr img{width:6rem;height:5rem}
  .evr>div:last-child{grid-column:1/-1}
  .ph-n{font-size:8.75rem}
}
@media (max-width:640px){
  .sp-h .wrap{grid-template-columns:1fr;height:auto;min-height:15.5rem;align-content:end}.sp-h .lede{-webkit-line-clamp:3}.sp-cr{width:60%;opacity:.8}.sp-h .acts{justify-self:start;flex-wrap:wrap;margin-top:1.25rem}
  footer .ft-grid{grid-template-columns:1fr 1fr;column-gap:1.5rem}footer .ft-about,footer .ft-col:last-child{grid-column:1/-1}
  /* comfortable tap targets */
  .ct-l a,.ft-ct a{display:inline-block;padding-block:0.5rem}
  .consent input{width:22px;height:22px}
  .ft-cta .disp{white-space:normal}.ft-cta-r{justify-self:start}
  body{font-size:1rem}
  .sv-g,.g3,.ft-grid,.rti-grid,.x-f2,.x-f3,.steps,.stages{grid-template-columns:1fr}
  .sv-g{grid-auto-rows:20rem}.sv-g>.sv-c:first-child,.sv-g>.sv-c:last-child{grid-column:auto}
  .cx-c{padding-bottom:3.5rem}
  .cx-p{font-size:0.9688rem}.cx-msgs{margin-bottom:2.5rem}
  .wk-c{grid-template-columns:1fr}
  .pw{grid-template-rows:repeat(3,6.5rem);gap:0.5rem}.ev,.ev-f{grid-template-columns:1fr 6.5rem}.ev-f .ev-im{min-height:9rem}
  .wk-im{aspect-ratio:16/10}
  .lf-mos{grid-template-columns:1fr 1fr;grid-auto-rows:7.5rem}
  /* phones: feature and wide photos full width, the rest in neat pairs */
  .lf-mos .m0,.lf-mos .m7{grid-column:1/-1;grid-row:auto}
  .lf-mos{grid-auto-flow:row dense}
  .job{flex-direction:column;align-items:flex-start}
  .ft-b{flex-direction:column;align-items:flex-start}
  .x-slots{grid-template-columns:repeat(3,1fr)}
  .x-chat{right:0;bottom:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;border-radius:0}
  .x-fab{right:0.75rem;bottom:calc(0.75rem + env(safe-area-inset-bottom));padding-right:0.5rem}
  .x-fab span:last-child{display:none}
  .x-table.stack thead{display:none}
  .x-table.stack tr{display:block;border-bottom:1px solid var(--line);padding:0.5rem 0}
  .x-table.stack td{display:flex;justify-content:space-between;gap:0.75rem;border:0;padding:0.375rem 0.25rem}
  .x-table.stack td[data-th]::before{content:attr(data-th);font-weight:700;color:var(--muted);font-size:0.75rem}
  .ph{padding-top:calc(var(--hdr) + 3.125rem)}
  .band2{padding:1.75rem}
  .inline{flex-direction:column}
}
/* tablets and phones: pills + button below the photo */
@media (max-width:1100px){.im-ov{position:relative;bottom:auto;padding-block:1.75rem 3rem;grid-template-columns:1fr}.im-ov .btn{justify-self:start}.im-bg::after{display:none}}
@media (max-width:640px){.im ul{flex-direction:column}.im li{border-radius:1rem;padding:0.75rem 1rem}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  .rv{opacity:1;transform:none}
  .pmarq ul{animation:none}
  /* Growth Partners logos keep their slow drift (row 1 left to right, row 2 right to left) */
  .lw .lw-m .lw-t{animation:mq 110s linear infinite reverse!important}
  .lw .lw-m.rev .lw-t{animation:mq 120s linear infinite normal!important}
  /* hero messages still change every few seconds, as a short crossfade with no movement */
  .cx-m>*,.cx-m.out>*{transform:none!important}
  .cx-m.on>*{animation:fadeIn .5s ease .25s forwards!important}
  .cx-m.out>*{animation:fadeOut .25s ease forwards!important}
  .pw-i{transition:opacity 1.2s ease!important}
  .spk{animation-duration:3.2s!important;animation-iteration-count:infinite!important}   /* keeps each sparkle's own delay */
  /* the top-row AI icon keeps its gentle flash */
  .hd-ai span{animation:aiPulse 1.6s ease-in-out infinite!important}
  .cx-w{clip-path:none!important;transform:none!important;opacity:0}
  .cx-w.on{animation:fadeIn .5s ease .25s forwards!important}
  .cx-w.out{animation:fadeOut .25s ease forwards!important}
}
@keyframes fadeIn{to{opacity:1}}@keyframes fadeOut{to{opacity:0}}

/* Facility pages: infrastructure tiles, chips, stacked photos */
.og-g{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.75rem}
.og-t{display:flex;align-items:center;gap:1rem;background:#fff;border:1px solid var(--line);border-radius:1.25rem;padding:1.25rem 1.375rem;box-shadow:0 10px 30px -22px rgba(46,125,58,.45);transition:transform .25s,box-shadow .25s}
.og-t:hover{transform:translateY(-3px);box-shadow:0 18px 38px -22px rgba(46,125,58,.6)}
.og-t .ic{flex:none;display:grid;place-items:center;width:3rem;height:3rem;border-radius:0.875rem;background:linear-gradient(135deg,var(--accent-t),#eef8e4);font-size:1.375rem}
.og-t h3{font-size:1.0625rem;line-height:1.35;margin:0}
.og-d{display:flex;flex-wrap:wrap;gap:0.625rem;margin:1.375rem 0 2rem}
.og-d span{padding:0.5rem 1rem;border-radius:62.4375rem;background:#fff;border:1px solid var(--line);font-weight:600;font-size:0.9375rem;color:var(--valley)}
.og-g.og-4{grid-template-columns:repeat(4,1fr)}
.og-sh{font-size:1.125rem;margin:1.75rem 0 0}
.og-stack{display:grid;gap:1rem}
.og-gal{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-top:2.5rem}
.og-gal .pimg img{aspect-ratio:4/3}
.og-gal.og-3{grid-template-columns:repeat(3,1fr);margin-top:1.75rem}
.og-gal.og-3 .pimg:first-child img{object-position:50% 0}
.og-t.col{flex-direction:column;align-items:flex-start;gap:0.875rem;padding:1.5rem}
.og-t.col p{margin:0;font-size:0.9375rem;line-height:1.6;color:var(--muted,#55606e)}
.og-stack .pimg img{aspect-ratio:16/9}
@media (max-width:900px){.og-g,.og-g.og-4,.og-gal,.og-gal.og-3{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.og-g,.og-g.og-4,.og-gal.og-3{grid-template-columns:1fr}}

/* Blog: topic filter, feature card, card grid, article */
.bf{display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem;margin-bottom:2rem}
.bf button{font:600 0.875rem/1 var(--fb);padding:0.625rem 1.125rem;border-radius:62.4375rem;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;transition:background .25s,color .25s,border-color .25s}
.bf button:hover{border-color:var(--accent)}
.bf button.on{background:var(--valley);border-color:var(--valley);color:#fff}
.bc{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:1.5rem;overflow:hidden;color:inherit;text-decoration:none;box-shadow:0 1rem 2.25rem -1.75rem rgba(24,48,31,.4);transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.bc:hover{transform:translateY(-6px);border-color:rgba(140,198,63,.5);box-shadow:0 1.75rem 3rem -1.75rem rgba(46,125,58,.55)}
.bc-im{position:relative;display:block;overflow:hidden;aspect-ratio:2.1/1;background:#f1f8f1}   /* low, wide sketch thumbnails, shown whole */
.bc-im img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.bc:hover .bc-im img{transform:scale(1.06)}
.bc-cat{align-self:flex-start;padding:0.3125rem 0.6875rem;border-radius:62.4375rem;background:var(--accent-t);color:var(--valley);font:700 0.75rem/1 var(--fb);letter-spacing:.02em}
.bc-tx{display:flex;flex-direction:column;gap:0.625rem;padding:1.375rem 1.5rem 1.5rem;flex:1}
.bc-m{font-size:0.8125rem;color:var(--muted)}
.bc b{font:600 1.25rem/1.3 var(--fd)}
.bc-x{font-size:0.9375rem;line-height:1.6;color:var(--slate)}
.bc-go{margin-top:auto;padding-top:0.5rem;font-weight:700;font-size:0.875rem;color:var(--valley)}
.bc-go .arr{display:inline-block;transition:transform .3s}
.bc:hover .bc-go .arr{transform:translateX(4px)}
.bc.feat{display:grid;grid-template-columns:0.9fr 1fr;margin-bottom:1.75rem}
.bc.feat .bc-im{aspect-ratio:2.1/1;align-self:center;margin:1.25rem 0 1.25rem 1.25rem;border-radius:1rem}
.bc.feat .bc-tx{justify-content:center;padding:2.5rem}
.bc.feat b{font-size:clamp(1.5rem,2.2vw,2.125rem)}
.bc.feat .bc-x{font-size:1.0625rem}
.bg3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.75rem}
.bc.hide{display:none}
.bp-back{display:inline-flex;gap:0.5rem;margin-bottom:1rem;font-weight:600;font-size:0.9375rem;color:var(--valley);text-decoration:none}
.bp-back:hover{text-decoration:underline}
.bp-m{color:var(--muted);font-size:0.9375rem;margin-top:0.75rem}
.bp-h h1.long{max-width:22em}
.bp-im{margin:0 0 clamp(2rem,4vw,3.5rem);border-radius:1.75rem;overflow:hidden;box-shadow:0 1.5rem 3rem -1.5rem rgba(24,48,31,.4)}
.bp-im{max-width:46rem;margin-left:auto;margin-right:auto}.bp-im img{width:100%;height:auto;aspect-ratio:2.1/1;object-fit:cover}
.bp-body{max-width:46rem;margin:0 auto}
.bp-body p{font-size:1.125rem;line-height:1.8;margin:0 0 1.375rem;color:var(--ink-2)}
.bp-body .lede{font-size:1.3125rem;color:var(--ink)}
.bp-cta{display:flex;flex-wrap:wrap;gap:0.75rem;margin-top:2.5rem;padding-top:2rem;border-top:1px solid var(--line)}
@media (max-width:900px){.bg3{grid-template-columns:1fr 1fr}.bc.feat{grid-template-columns:1fr}.bc.feat .bc-im{margin:0;border-radius:0;aspect-ratio:2.1/1}.bc.feat .bc-tx{padding:1.5rem}.bp-im img{aspect-ratio:2.1/1}}
@media (max-width:560px){.bg3{grid-template-columns:1fr}}

/* sub-page header: sparkle crystals on the right, behind the text and buttons */
.sp-h .wrap{position:relative;z-index:1}
.sp-cr{position:absolute;top:var(--hdr);right:0;bottom:0;width:42%;pointer-events:none;-webkit-mask:linear-gradient(90deg,transparent,#000 35%);mask:linear-gradient(90deg,transparent,#000 35%)}
.sp-cr .spk{margin:0}
.bp-h .wrap{height:auto;min-height:10.5rem}   /* article titles can run to two lines */

/* line icon tiles (replace emoji icons) */
.ico{display:inline-grid;place-items:center;width:3.25rem;height:3.25rem;border-radius:1rem;background:linear-gradient(135deg,var(--valley),var(--accent));color:#fff;box-shadow:0 0.75rem 1.5rem -0.5rem rgba(140,198,63,.55);transition:transform .35s var(--ease)}
.ico svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.stg:hover .ico{transform:translateY(-4px)}
.stages .leaf:has(.ico){font-size:0;line-height:0}
/* line icons inside existing icon slots */
.li{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.fcard .ic:has(.li){border:0;background:linear-gradient(135deg,var(--accent-t),#eef8e4);color:var(--valley);border-radius:1rem}
.fcard .ic:has(.li)::before{content:none}
.fcard:hover .ic:has(.li){background:linear-gradient(135deg,var(--valley),var(--accent));color:#fff}
.og-t .ic .li{color:var(--valley)}
.cc .ic .li{color:var(--accent);width:1.625rem;height:1.625rem}
.stages .leaf:has(.ico){margin-bottom:1rem}
