/* GeneFab v2 — Premium scientific-craft design system
   Anchored on Serán's editorial polish, ElevateBio's IA logic, Forge's mission warmth.
*/

:root{
  /* Palette — brand colors per company spec */
  --paper:#FFFFFF;        /* pure white */
  --paper-2:#F6F8F7;      /* subtle off-white with green undertone */
  --paper-3:#EBEFED;

  --ink:#051F20;          /* deep teal-black */
  --ink-2:#13332E;
  --ink-3:#3F5852;
  --ink-4:#7A938E;

  --forest:#235347;
  --mist:#AFD1D2;
  --signal:#10CF88;       /* brand green — accent only */
  --signal-2:#0A8A5A;

  --rule:#051F2014;
  --rule-2:#051F2028;
  --rule-3:#05202050;

  --max:1480px;
  --pad-x:clamp(20px, 4vw, 80px);

  /* Type scale */
  --t-display:clamp(48px, 7vw, 88px);
  --t-h1:clamp(38px, 4.8vw, 64px);
  --t-h2:clamp(28px, 3vw, 44px);
  --t-h3:clamp(20px, 1.8vw, 28px);
  --t-h4:clamp(17px, 1.2vw, 20px);
  --t-lede:clamp(17px, 1.35vw, 22px);
  --t-body:clamp(15px, .95vw, 17px);
  --t-small:14px;
}

*{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
html,body{background:var(--paper);color:var(--ink);font-family:'Inter',ui-sans-serif,system-ui,sans-serif;font-feature-settings:"ss01","cv11";font-size:var(--t-body);line-height:1.55}
body{overflow-x:hidden}
img,svg,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none;transition:color .2s ease}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
::selection{background:var(--signal);color:var(--ink)}

/* ===== Typography ===== */
.serif{font-family:'Newsreader',Georgia,serif;font-feature-settings:"ss01","ss02"}
.eyebrow{font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--forest);display:inline-flex;align-items:center;gap:12px}
.eyebrow::before{content:"";display:inline-block;width:28px;height:1px;background:var(--signal)}
.eyebrow.light{color:var(--mist)}
.eyebrow.light::before{background:var(--signal)}

h1,h2,h3,h4{font-family:'Inter',sans-serif;font-weight:500;letter-spacing:-.025em;line-height:1.02}
h1{font-size:var(--t-h1)}
h2{font-size:var(--t-h2)}
h3{font-size:var(--t-h3);line-height:1.12;letter-spacing:-.02em}
h4{font-size:var(--t-h4);line-height:1.2;letter-spacing:-.015em}

.italic-serif{font-family:'Newsreader',Georgia,serif;font-style:italic;font-weight:300;letter-spacing:-.015em}

.lede{font-family:'Newsreader',Georgia,serif;font-weight:300;font-size:var(--t-lede);line-height:1.3;letter-spacing:-.012em;color:var(--ink-2)}

p{font-size:var(--t-body);line-height:1.55;color:var(--ink-2)}

/* ===== Layout ===== */
.shell{max-width:var(--max);margin:0 auto;padding-left:var(--pad-x);padding-right:var(--pad-x)}
.section{padding-block:clamp(56px, 7vw, 112px);position:relative}
.section-tight{padding-block:clamp(40px, 5vw, 80px)}

/* ===== Nav ===== */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;padding:18px 0;background:color-mix(in oklab, var(--paper) 88%, transparent);backdrop-filter:blur(18px) saturate(1.4);border-bottom:1px solid transparent;transition:.3s ease}
.nav.scrolled{border-bottom-color:var(--rule)}
.nav.dark{background:color-mix(in oklab, var(--ink) 78%, transparent);color:#fff}
.nav.dark .nav-link{color:rgba(255,255,255,.85)}
.nav.dark .brand{color:#fff}
.nav-inner{max-width:var(--max);margin:0 auto;padding-left:var(--pad-x);padding-right:var(--pad-x);display:flex;align-items:center;justify-content:space-between;gap:32px}
.brand{display:flex;align-items:center;gap:12px;font-weight:600;font-size:18px;letter-spacing:-.01em;line-height:1}
.brand-img{height:60px;width:auto;display:block;transition:filter .3s ease}
.nav.dark .brand-img{filter:brightness(0) invert(1)}
.brand .mark{width:28px;height:28px}
.brand .mark svg{width:100%;height:100%}

.nav-links{display:flex;gap:4px;align-items:center}
.nav-link-disabled{padding:10px 16px;font-size:14px;font-weight:500;color:var(--ink-3);cursor:default;opacity:.55;user-select:none}
.nav-link-disabled:hover{color:var(--ink-3);background:transparent}
.nav.dark .nav-link-disabled{color:rgba(255,255,255,.42)}
.nav.dark .nav-link-disabled:hover{color:rgba(255,255,255,.42)}
.nav-item{position:relative;display:inline-flex;align-items:center}
.nav-link{padding:10px 18px;font-size:16px;font-weight:500;color:var(--ink-2);border-radius:999px;transition:.2s ease;display:inline-flex;align-items:center;gap:8px}
.nav-link .caret{font-size:18px;opacity:1;color:var(--forest);font-weight:700;transition:transform .2s ease;display:inline-block;line-height:1}
.nav.dark .nav-link .caret{color:var(--signal)}
.nav-item.has-dropdown:hover .nav-link .caret{transform:rotate(180deg)}
.dropdown{position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(4px);min-width:220px;background:var(--paper);border:1px solid var(--rule-2);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:2px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease, transform .2s ease;box-shadow:0 12px 40px -8px rgba(5,31,32,.18);z-index:60}
.nav-item.has-dropdown:hover .dropdown,.nav-item.has-dropdown:focus-within .dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.dropdown-link{padding:10px 14px;font-size:14px;color:var(--ink-2);border-radius:6px;text-align:left;transition:.15s}
.dropdown-link:hover{background:var(--paper-2);color:var(--ink)}
.nav.dark .dropdown{background:var(--ink);border-color:rgba(255,255,255,.16)}
.nav.dark .dropdown-link{color:rgba(255,255,255,.85)}
.nav.dark .dropdown-link:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-link:hover{color:var(--ink);background:var(--rule)}
.nav.dark .nav-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.nav-link.active{color:var(--ink)}

.nav-cta{display:inline-flex;align-items:center;gap:10px;padding:12px 18px;background:var(--ink);color:var(--paper);border-radius:999px;font-size:14px;font-weight:500;transition:.2s}
.nav-cta:hover{background:var(--signal);color:var(--ink)}
.nav.dark .nav-cta{background:var(--signal);color:var(--ink)}
.nav.dark .nav-cta:hover{background:var(--paper);color:var(--ink)}
.arrow{display:inline-block;transition:transform .25s}
.nav-cta:hover .arrow,.btn:hover .arrow{transform:translate(3px,-3px)}

/* hamburger button — hidden on desktop */
.nav-hamburger{display:none;width:44px;height:44px;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--rule-2);background:transparent;cursor:pointer;transition:.2s}
.nav-hamburger:hover{background:var(--paper)}
.nav.dark .nav-hamburger{border-color:rgba(255,255,255,.2)}
.nav.dark .nav-hamburger:hover{background:rgba(255,255,255,.08)}
.nav-hamburger span{display:block;width:18px;height:1.5px;background:var(--ink);position:relative;transition:.25s}
.nav.dark .nav-hamburger span{background:#fff}
.nav-hamburger span::before,.nav-hamburger span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--ink);transition:.25s}
.nav.dark .nav-hamburger span::before,.nav.dark .nav-hamburger span::after{background:#fff}
.nav-hamburger.open span{background:transparent}
.nav-hamburger.open span::before{top:0;transform:rotate(45deg)}
.nav-hamburger.open span::after{top:0;transform:rotate(-45deg)}
.nav-hamburger:not(.open) span::before{top:-6px}
.nav-hamburger:not(.open) span::after{top:6px}

/* mobile overlay menu */
.nav-overlay{position:fixed;inset:0;background:var(--paper);z-index:49;display:none;flex-direction:column;padding:96px var(--pad-x) 32px;overflow-y:auto;opacity:0;transition:opacity .25s ease}
.nav-overlay.open{display:flex;opacity:1}
.nav-overlay .m-link{display:block;padding:18px 0;font-size:22px;font-weight:500;color:var(--ink);border-bottom:1px solid var(--rule);letter-spacing:-.01em}
.nav-overlay .m-link:hover{color:var(--signal-2)}
.nav-overlay .m-link.active{color:var(--signal-2)}
.nav-overlay .m-sub{display:flex;flex-direction:column;padding-left:0;border-bottom:1px solid var(--rule)}
.nav-overlay .m-sub-head{padding:18px 0 18px;font-size:22px;font-weight:500;color:var(--ink);letter-spacing:-.01em;background:none;border:none;cursor:pointer;text-align:left;width:100%;display:flex;align-items:center;justify-content:space-between;font-family:inherit}
.nav-overlay .m-sub-caret{font-size:14px;color:var(--ink-3);transition:transform .25s ease}
.nav-overlay .m-sub:not(.collapsed) .m-sub-caret{transform:rotate(180deg);color:var(--signal-2)}
.nav-overlay .m-sub-links{display:flex;flex-direction:column;padding:0 0 14px;max-height:1000px;overflow:hidden;transition:max-height .3s ease, padding .25s ease, opacity .2s ease;opacity:1}
.nav-overlay .m-sub.collapsed .m-sub-links{max-height:0;padding:0;opacity:0;pointer-events:none}
.nav-overlay .m-sub-link{padding:8px 0;font-size:15px;color:var(--ink-3)}
.nav-overlay .m-sub-link:hover{color:var(--signal-2)}
.nav-overlay .m-cta{margin-top:32px;padding:18px 24px;background:var(--ink);color:#fff;border-radius:999px;font-size:16px;font-weight:500;text-align:center;display:inline-flex;align-items:center;justify-content:center;gap:10px;align-self:flex-start}
.nav-overlay .m-foot{margin-top:auto;padding-top:24px;font-size:13px;color:var(--ink-3)}
.nav-overlay .m-foot a{color:var(--ink-2);border-bottom:1px solid var(--signal);padding-bottom:2px}
body.menu-open{overflow:hidden}

@media (max-width:880px){
  .nav-links{display:none}
  .nav-hamburger{display:inline-flex}
  .nav-cta{display:none}
  .nav-inner{padding-block:0}
  .brand-img{height:48px}
}

/* ===== Hero (video) ===== */
.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:flex-end;padding-top:120px;padding-bottom:60px;overflow:hidden;color:#fff;isolation:isolate}
.hero-video{position:absolute;inset:0;z-index:-2}
.hero-video video,.hero-video img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.78) contrast(1.04)}
.hero-poster{animation:kenburns 22s ease-out infinite alternate}
@keyframes kenburns{from{transform:scale(1.04) translate(0,0)}to{transform:scale(1.12) translate(-1%,-1.5%)}}
.hero-video::after{content:"";position:absolute;inset:0;background:
  linear-gradient(180deg, rgba(5,31,32,.85) 0%, rgba(5,31,32,.5) 35%, rgba(5,31,32,.6) 70%, rgba(5,31,32,.95) 100%),
  radial-gradient(120% 80% at 0% 20%, rgba(5,31,32,.6), transparent 60%);
}

.hero-inner{position:relative;z-index:1;width:100%}
.hero-eyebrow{display:flex;align-items:center;gap:14px;font-size:13px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--mist);margin-bottom:40px}
.hero-eyebrow::before{content:"";width:28px;height:1px;background:var(--signal)}

.hero-headline{font-size:var(--t-display);letter-spacing:-.035em;line-height:.92;font-weight:400;max-width:18ch;color:#fff}
.hero-headline .italic-serif{font-weight:200}
.hero-headline .green{color:var(--signal)}

.hero-cycle{display:inline-grid;vertical-align:baseline;position:relative}
.hero-cycle .cycle-word{grid-area:1/1;display:inline-block;font-family:'Newsreader',serif;font-style:italic;font-weight:200;color:var(--signal);opacity:0;transform:translateY(8px);transition:opacity .55s ease, transform .55s ease;will-change:opacity,transform;white-space:nowrap;pointer-events:none}
.hero-cycle .cycle-word.is-active{opacity:1;transform:translateY(0);pointer-events:auto}
.hero-cycle .cycle-word.is-leaving{opacity:0;transform:translateY(-8px)}

.hero-meta{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:end;margin-top:56px;padding-top:32px;border-top:1px solid rgba(255,255,255,.16)}
.hero-meta .lede{color:rgba(255,255,255,.82);max-width:48ch;font-size:clamp(16px,1.2vw,20px)}
.hero-actions{display:flex;flex-direction:column;gap:12px;align-items:flex-end}

.hero-foot{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:48px;font-size:12px;color:rgba(255,255,255,.5);letter-spacing:.06em;text-transform:uppercase}
.hero-scroll{display:inline-flex;align-items:center;gap:10px}
.hero-scroll-dot{width:18px;height:28px;border:1px solid rgba(255,255,255,.4);border-radius:999px;position:relative}
.hero-scroll-dot::before{content:"";position:absolute;top:6px;left:50%;transform:translateX(-50%);width:2px;height:6px;background:var(--signal);border-radius:2px;animation:scrolldot 1.6s ease-in-out infinite}
@keyframes scrolldot{0%{opacity:1;transform:translate(-50%,0)}50%{opacity:.5;transform:translate(-50%,6px)}100%{opacity:1;transform:translate(-50%,0)}}

@media (max-width:880px){.hero-meta{grid-template-columns:1fr}.hero-actions{align-items:flex-start}}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;gap:12px;padding:16px 22px;border-radius:999px;font-size:14px;font-weight:500;border:1px solid var(--rule-2);transition:all .2s ease}
.btn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn-primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn-primary:hover{background:var(--signal);color:var(--ink);border-color:var(--signal)}
.btn-light{color:#fff;border-color:rgba(255,255,255,.35)}
.btn-light:hover{background:#fff;color:var(--ink);border-color:#fff}
.btn-light.btn-primary{background:var(--signal);color:var(--ink);border-color:var(--signal)}
.btn-light.btn-primary:hover{background:#fff;color:var(--ink);border-color:#fff}

/* ===== Marquee (Serán-style cycling banner) ===== */
.marquee{overflow:hidden;background:var(--ink);color:var(--paper);padding:24px 0;border-block:1px solid rgba(255,255,255,.08)}
.marquee-track{display:flex;gap:64px;animation:marquee 45s linear infinite;white-space:nowrap;font-family:'Newsreader',serif;font-style:italic;font-weight:300;font-size:clamp(24px,2.8vw,40px);letter-spacing:-.02em}
.marquee-track span{display:inline-flex;align-items:center;gap:28px}
.marquee-track span::after{content:"";display:inline-block;width:8px;height:8px;background:var(--signal);border-radius:50%}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ===== Mission block ===== */
.mission-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:64px;align-items:start}
.mission-grid .stmt{font-family:'Newsreader',serif;font-weight:200;font-size:clamp(26px,3.2vw,44px);line-height:1.12;letter-spacing:-.02em;color:var(--ink);max-width:24ch}
.mission-grid .stmt em{font-style:italic;font-weight:200;color:var(--signal-2)}
.mission-grid .stmt strong{font-weight:500}
.mission-pull{position:sticky;top:120px}
.mission-pull p{margin-bottom:20px}
@media (max-width:880px){.mission-grid{grid-template-columns:1fr;gap:32px}.mission-pull{position:static}}

/* ===== Why us pillars ===== */
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-block:1px solid var(--rule-2)}
.why-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.why-card{padding:48px 32px 56px;border-right:1px solid var(--rule);display:flex;flex-direction:column;gap:18px;min-height:380px;transition:.3s}
.why-card:last-child{border-right:none}
.why-card:hover{background:var(--paper-2)}
.why-card .num{font-family:'Newsreader',serif;font-weight:200;font-style:italic;font-size:56px;color:var(--signal-2);line-height:1;letter-spacing:-.04em}
.why-card h4{font-size:24px;line-height:1.15;max-width:14ch}
.why-card h4 em{font-family:'Newsreader',serif;font-style:italic;font-weight:300}
.why-card p{font-size:15px;color:var(--ink-3);margin-top:auto}
.why-card .quote{font-family:'Newsreader',serif;font-style:italic;font-size:15px;color:var(--signal-2);line-height:1.5;padding-top:18px;border-top:1px solid var(--rule);max-width:30ch}
.why-card .quote-name{margin-top:14px;padding-top:12px;border-top:1px dotted var(--rule-2);font-style:normal;font-family:'Inter',sans-serif;font-size:11px;letter-spacing:.1em;color:var(--ink-3);font-weight:500;text-transform:uppercase}
@media (max-width:1024px){.why-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:880px){.why-grid.cols-3{grid-template-columns:1fr}.why-grid.cols-3 .why-card{border-right:none;border-bottom:1px solid var(--rule)}.why-grid.cols-3 .why-card:last-child{border-bottom:none}}
@media (max-width:640px){.why-grid{grid-template-columns:1fr}.why-card{border-right:none;border-bottom:1px solid var(--rule)}}

/* ===== Stage accordion (Elevate-style) ===== */
.stage-section{background:var(--paper-2);border-block:1px solid var(--rule)}
.stage-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:48px;padding-bottom:24px;border-bottom:1px solid var(--rule)}
.stage-btn{padding:10px 18px;border-radius:999px;font-size:13px;font-weight:500;background:transparent;border:1px solid var(--rule-2);color:var(--ink-3);transition:.2s}
.stage-btn:hover{color:var(--ink);border-color:var(--ink)}
.stage-btn.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.stage-list{display:flex;flex-direction:column;border-top:1px solid var(--rule-2)}
.stage-row{border-bottom:1px solid var(--rule-2);position:relative}
.stage-summary{display:grid;grid-template-columns:80px 1fr 1.4fr auto;gap:32px;padding:28px 0;align-items:center;cursor:pointer;list-style:none;transition:.2s}
.stage-summary::-webkit-details-marker{display:none}
.stage-row:hover .stage-summary{padding-left:8px}
.stage-row .stage-num{display:flex;align-items:center}
.stage-row .stage-ic{width:56px;height:56px;color:var(--signal-ink);flex:none;border:1.5px solid var(--signal);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:.2s}
.stage-row:hover .stage-ic{background:color-mix(in oklab, var(--signal) 10%, transparent)}
.stage-row .stage-ic svg{width:28px;height:28px;display:block}
.stage-row .stage-name{font-size:clamp(18px,1.7vw,26px);font-weight:500;letter-spacing:-.015em;line-height:1.15}
.stage-row .stage-desc{font-size:15px;color:var(--ink-3);max-width:48ch}
.stage-row .stage-tags{display:flex;flex-wrap:wrap;gap:6px;justify-self:end}
.stage-row .stage-tag{padding:4px 10px;border:1px solid var(--rule-2);border-radius:999px;font-size:11px;letter-spacing:.04em;color:var(--ink-3)}
.stage-row .stage-toggle{width:36px;height:36px;border-radius:50%;background:var(--paper);border:1px solid var(--rule-2);display:grid;place-items:center;font-size:18px;color:var(--ink-3);font-weight:300;transition:.25s;justify-self:end}
.stage-row[open] .stage-toggle{background:var(--signal);border-color:var(--signal);color:var(--ink);transform:rotate(45deg)}
.stage-body{padding:0 0 36px 112px;display:grid;grid-template-columns:1.4fr 1fr;gap:48px}
.stage-body .points{display:grid;gap:14px}
.stage-body .point{display:grid;grid-template-columns:24px 1fr;gap:14px;font-size:15px;color:var(--ink-2);align-items:start;padding:10px 0;border-top:1px dotted var(--rule-2)}
.stage-body .point::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--signal);margin-top:9px}
.stage-body .panel-quote{background:var(--paper);border:1px solid var(--rule);padding:24px;font-family:'Newsreader',serif;font-weight:300;font-style:italic;font-size:18px;line-height:1.4;color:var(--ink-2);position:relative}
.stage-body .panel-quote::before{content:"\201C";position:absolute;top:8px;left:14px;font-size:80px;color:var(--signal);opacity:.18;font-family:Newsreader,serif;line-height:1}
.stage-body .panel-quote .who{margin-top:14px;font-style:normal;font-family:Inter,sans-serif;font-size:12px;letter-spacing:.06em;color:var(--ink-3);font-weight:500;text-transform:uppercase}
@media (max-width:880px){.stage-summary{grid-template-columns:60px 1fr auto;gap:18px}.stage-row .stage-desc,.stage-row .stage-tags{display:none}.stage-body{padding:0 0 28px 78px;grid-template-columns:1fr;gap:24px}}

/* ===== Modalities ===== */
.modality-card p em{font-style:italic;color:var(--signal-2);font-weight:500;font-family:'Newsreader',serif}

/* ===== Design-to-dose flow ===== */
.flow-section{background:var(--ink);color:#fff;padding:120px 0;position:relative;overflow:hidden}
.flow-section::before{content:"";position:absolute;inset:0;background:radial-gradient(80% 60% at 50% 0%,rgba(16,207,136,.08),transparent 60%);pointer-events:none}
.flow-section .shell{position:relative}
.flow-section .sec-head .eyebrow{color:var(--signal)}
.flow-section .sec-head h2{color:#fff}
.flow-section .sec-head em{color:var(--signal);font-style:italic;font-family:'Newsreader',serif;font-weight:300}
.flow-section .sec-head p{color:rgba(255,255,255,.7)}
.flow-section .sec-head .right p{color:rgba(255,255,255,.75)}

.flow-chain{display:grid;grid-template-columns:repeat(6,1fr);gap:0;margin-top:64px;position:relative}
.flow-stage{position:relative;padding:32px 18px 28px;border-right:1px solid rgba(255,255,255,.08);transition:.3s ease;cursor:default}
.flow-stage:last-child{border-right:none}
.flow-stage:hover{background:rgba(255,255,255,.03)}
.flow-stage .step-num{font-size:11px;letter-spacing:.18em;color:rgba(255,255,255,.4);text-transform:uppercase;font-weight:500;margin-bottom:18px}
.flow-stage .step-icon{width:48px;height:48px;border-radius:50%;background:rgba(16,207,136,.12);color:var(--signal);display:grid;place-items:center;margin-bottom:20px;transition:.3s}
.flow-stage:hover .step-icon{background:var(--signal);color:var(--ink);transform:scale(1.08)}
.flow-stage .step-icon svg{width:22px;height:22px}
.flow-stage .step-name{font-size:17px;font-weight:500;line-height:1.2;letter-spacing:-.01em;color:#fff;margin-bottom:10px}
.flow-stage .step-loc{font-size:11px;color:var(--signal);letter-spacing:.06em;text-transform:uppercase;margin-bottom:14px;font-weight:500}
.flow-stage .step-desc{font-size:13px;color:rgba(255,255,255,.6);line-height:1.55}

/* Connecting arrow between stages */
.flow-stage::after{content:"";position:absolute;top:54px;right:-7px;width:14px;height:14px;background:var(--ink);border:1px solid rgba(255,255,255,.15);border-radius:50%;display:grid;place-items:center;z-index:2;background-image:linear-gradient(135deg,transparent 40%,var(--signal) 40%,var(--signal) 60%,transparent 60%);background-size:6px 6px;background-position:center;background-repeat:no-repeat}
.flow-stage:last-child::after{display:none}

/* Continuous flow rail */
.flow-rail{position:absolute;top:54px;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(16,207,136,.4) 8%,rgba(16,207,136,.4) 92%,transparent 100%);z-index:0;pointer-events:none}
.flow-rail::before{content:"";position:absolute;top:0;left:0;height:1px;width:30%;background:var(--signal);box-shadow:0 0 10px var(--signal);animation:flow-pulse 4s ease-in-out infinite}
@keyframes flow-pulse{0%{left:0;opacity:1}50%{opacity:1}100%{left:70%;opacity:0}}

.flow-loops{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-top:80px;padding-top:56px;border-top:1px solid rgba(255,255,255,.08)}
.flow-loop{padding:0}
.flow-loop .ll{display:inline-flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--signal);font-weight:500;margin-bottom:14px}
.flow-loop .ll::before{content:"↻";font-size:14px;letter-spacing:0}
.flow-loop h4{font-size:22px;letter-spacing:-.01em;color:#fff;margin-bottom:10px;line-height:1.2}
.flow-loop p{font-size:14px;color:rgba(255,255,255,.65);line-height:1.55}

@media (max-width:1100px){
  .flow-chain{grid-template-columns:repeat(3,1fr)}
  .flow-stage:nth-child(3n)::after{display:none}
  .flow-stage:nth-child(-n+3){border-bottom:1px solid rgba(255,255,255,.08)}
  .flow-rail{display:none}
  .flow-loops{grid-template-columns:1fr}
}
@media (max-width:640px){
  .flow-chain{grid-template-columns:1fr}
  .flow-stage{border-right:none;border-bottom:1px solid rgba(255,255,255,.08)}
  .flow-stage:last-child{border-bottom:none}
  .flow-stage::after{display:none}
}
.modality-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.modality-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.modality-card{background:var(--paper-2);padding:36px 28px;display:flex;flex-direction:column;gap:20px;min-height:280px;border-radius:4px;transition:.3s ease;position:relative;overflow:hidden}
.modality-card:hover{background:var(--ink);color:#fff}
.modality-card:hover .mod-icon{background:var(--signal);color:var(--ink)}
.modality-card:hover p{color:rgba(255,255,255,.7)}
.modality-card:hover .mod-tag{color:var(--mist);border-color:rgba(255,255,255,.2)}
.mod-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--paper);color:var(--forest);transition:.3s}
.mod-icon svg{width:28px;height:28px}
.modality-card h4{font-size:22px;line-height:1.15;letter-spacing:-.01em}
.modality-card p{font-size:14px;color:var(--ink-3);line-height:1.5;flex-grow:1}
.modality-card .mod-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
.modality-card .mod-tag{padding:4px 10px;font-size:11px;letter-spacing:.04em;border:1px solid var(--rule-2);border-radius:999px;color:var(--ink-3);transition:.3s}
@media (max-width:1024px){.modality-grid{grid-template-columns:repeat(2,1fr)}.modality-grid.cols-3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.modality-grid{grid-template-columns:1fr}.modality-grid.cols-3{grid-template-columns:1fr}}

/* ===== Pillar / sticky scroll (Serán-style) ===== */
.split{display:grid;grid-template-columns:1fr 1fr;gap:0;align-items:stretch;min-height:80vh}
.split-image{position:relative;overflow:hidden;background:var(--ink-2)}
.split-image img{width:100%;height:100%;object-fit:cover}
.split-image::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%, rgba(5,31,32,.4) 100%)}
.split-content{padding:clamp(60px, 8vw, 120px) clamp(40px, 5vw, 80px);display:flex;flex-direction:column;justify-content:center;gap:28px;background:var(--paper)}
.split-content.dark{background:var(--ink);color:var(--paper)}
.split-content.dark p{color:rgba(255,255,255,.75)}
.split-content h2{font-size:clamp(26px,3vw,44px);max-width:14ch;letter-spacing:-.025em}
.split-content h2 em{font-family:'Newsreader',serif;font-style:italic;font-weight:300}
.split-content .points{display:grid;gap:14px;margin-top:8px}
.split-content .points li{list-style:none;display:grid;grid-template-columns:28px 1fr;gap:14px;font-size:16px;color:var(--ink-2);padding:12px 0;border-top:1px solid var(--rule);align-items:start}
.split-content.dark .points li{color:rgba(255,255,255,.8);border-top-color:rgba(255,255,255,.12)}
.split-content .points li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--signal);margin-top:8px}
@media (max-width:880px){.split{grid-template-columns:1fr}.split-image{aspect-ratio:4/3}}

/* ===== News article (single post) ===== */
.article-wrap{max-width:880px;margin:0 auto;padding-top:24px;padding-bottom:80px}
.article-meta{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-size:13px;color:var(--ink-3);margin-bottom:32px;padding-bottom:18px;border-bottom:1px solid var(--rule)}
.article-meta .pill{padding:4px 10px;background:#10CF8820;color:var(--signal-2);border-radius:999px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:700}
.article-meta .date{color:var(--forest);font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:12px}
.article-meta .src{margin-left:auto}
.article-meta .src a{color:var(--ink-3);border-bottom:1px solid var(--rule-2);padding-bottom:1px}
.article-meta .src a:hover{color:var(--signal-2);border-color:var(--signal)}
.article-wrap h1{font-size:clamp(24px,2.8vw,36px);letter-spacing:-.02em;line-height:1.18;margin-bottom:24px;max-width:28ch}
.article-wrap h1 em{font-family:'Newsreader',serif;font-style:italic;font-weight:300}
.article-bullets{list-style:none;display:grid;gap:10px;margin-bottom:36px;padding-bottom:32px;border-bottom:1px solid var(--rule)}
.article-bullets li{padding-left:22px;position:relative;font-size:14px;line-height:1.55;color:var(--ink-2);font-style:italic;font-family:'Newsreader',serif}
.article-bullets li::before{content:"–";position:absolute;left:0;color:var(--signal);font-weight:700}
.article-wrap .body p{font-size:15px;line-height:1.65;color:var(--ink-2);margin-bottom:18px;max-width:68ch}
.article-wrap .body h2{font-size:18px;font-weight:600;color:var(--ink);margin:36px 0 12px;letter-spacing:-.01em}
.article-wrap .body h2:first-of-type{margin-top:24px}
.article-wrap .pullquote{font-family:'Newsreader',serif;font-style:italic;font-weight:300;font-size:clamp(17px,1.6vw,21px);line-height:1.45;color:var(--ink);border-left:3px solid var(--signal);padding:6px 0 6px 24px;margin:36px 0;max-width:60ch}
.article-wrap .pullquote .attr{display:block;margin-top:14px;font-style:normal;font-family:'Inter',sans-serif;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:600}
.article-back{margin-top:48px;padding-top:32px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:14px}
.article-back a{display:inline-flex;align-items:center;gap:8px;color:var(--signal-2);font-weight:600}
.article-back a:hover{color:var(--ink)}


.news-list{display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2)}
.news-item{display:grid;grid-template-columns:140px 1fr auto;gap:32px;padding:32px 0;border-bottom:1px solid var(--rule);align-items:start;transition:.2s ease}
.news-item:last-child{border-bottom:none}
.news-item:hover{background:var(--paper-2)}
.news-item .date{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--forest);font-weight:600;padding-top:4px}
.news-item .body h3{font-size:clamp(20px,1.8vw,24px);line-height:1.25;letter-spacing:-.015em;color:var(--ink);margin-bottom:10px;max-width:48ch}
.news-item .body p{font-size:15px;line-height:1.55;color:var(--ink-3);max-width:64ch}
.news-item .more{align-self:start;padding-top:6px;display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--signal-2);white-space:nowrap}
.news-item .more .arrow{transition:transform .15s}
.news-item:hover .more{color:var(--ink)}
.news-item:hover .more .arrow{transform:translate(2px,-2px)}
@media (max-width:760px){.news-item{grid-template-columns:1fr;gap:14px;padding:24px 0}.news-item .more{padding-top:0}}

/* ===== Global accent typography — em + .signal always italic + green =====
   Optically bump size and weight so Newsreader italic doesn't read smaller
   than the surrounding Inter sans-serif (Newsreader has a smaller x-height,
   so a flat 1em looks visibly smaller). */
em,.signal{
  font-style:italic;
  font-family:'Newsreader',serif;
  font-weight:500;
  font-size:1.12em;
  letter-spacing:-.008em;
  color:var(--signal-2);
  line-height:1;
}
/* Inside headings, the gap between heavy Inter and Newsreader is wider —
   push the size up more so the italic word matches optically. */
h1 em, h2 em, h3 em, h4 em,
h1 .signal, h2 .signal, h3 .signal, h4 .signal,
.hero-headline em, .hero-headline .signal,
.lede em, .lede .signal{
  font-weight:500;
  font-size:1.18em;
  letter-spacing:-.012em;
}
/* Very large display text (hero h1, mega headings) — even more bump. */
.page-hero h1 em, .hero h1 em,
.page-hero h1 .signal, .hero h1 .signal{
  font-size:1.2em;
}
/* In small text contexts (eyebrows, captions, fine print) keep parity tight. */
.eyebrow em, .fine-print em, small em, .meta em,
.eyebrow .signal, .fine-print .signal, small .signal, .meta .signal{
  font-size:1.05em;
}

/* ===== Floating bottom CTA (home page) ===== */
/* "cta-top" variant — anchor CTA to top of viewport, follows scroll */
body.cta-top .floating-cta{top:96px;bottom:auto;transform:translateX(-50%) translateY(-120%)}
body.cta-top .floating-cta.visible{transform:translateX(-50%) translateY(0)}
body.cta-top .floating-cta.dismissed{transform:translateX(-50%) translateY(-120%)}
@media (max-width:760px){body.cta-top .floating-cta{top:80px}}
.floating-cta{position:fixed;bottom:18px;left:50%;transform:translateX(-50%) translateY(120%);width:min(960px,calc(100% - 32px));background:var(--ink);color:#fff;border-radius:14px;box-shadow:0 16px 48px -12px rgba(5,31,32,.45),0 0 0 1px rgba(255,255,255,.06);z-index:90;opacity:0;visibility:hidden;transition:transform .35s cubic-bezier(.2,.7,.2,1),opacity .25s ease,visibility .25s}
.floating-cta.visible{transform:translateX(-50%) translateY(0);opacity:1;visibility:visible}
.floating-cta.dismissed{transform:translateX(-50%) translateY(120%);opacity:0;visibility:hidden}
.floating-cta-inner{display:grid;grid-template-columns:1fr auto auto;gap:20px;align-items:center;padding:14px 18px 14px 22px}
.floating-cta-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.floating-cta-headline{font-size:17px;font-weight:600;letter-spacing:-.01em;line-height:1.25}
.floating-cta-headline em{font-family:'Newsreader',serif;font-style:italic;font-weight:300;color:var(--signal)}
.floating-cta-sub{font-size:11px;color:rgba(255,255,255,.55);letter-spacing:.04em}
.floating-cta-actions{display:flex;gap:8px;align-items:center}
.floating-cta-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border-radius:999px;font-size:13px;font-weight:600;border:1px solid rgba(255,255,255,.18);color:#fff;transition:.2s ease;white-space:nowrap}
.floating-cta-btn:hover{border-color:var(--signal);background:rgba(16,207,136,.1)}
.floating-cta-btn.primary{background:var(--signal);border-color:var(--signal);color:var(--ink)}
.floating-cta-btn.primary:hover{background:#0fc07e;border-color:#0fc07e;color:var(--ink)}
.floating-cta-btn .arrow{transition:transform .2s}
.floating-cta-btn:hover .arrow{transform:translate(2px,-2px)}
.floating-cta-close{background:transparent;border:0;color:rgba(255,255,255,.5);font-size:22px;line-height:1;cursor:pointer;padding:6px 8px;border-radius:6px;transition:.15s}
.floating-cta-close:hover{color:#fff;background:rgba(255,255,255,.08)}
@media (max-width:760px){
  .floating-cta{bottom:12px;width:calc(100% - 16px)}
  .floating-cta-inner{grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:10px;padding:12px 14px}
  .floating-cta-actions{grid-column:1 / -1;flex-wrap:wrap}
  .floating-cta-close{position:absolute;top:8px;right:8px}
  .floating-cta-sub{display:none}
  .floating-cta-btn{flex:1;justify-content:center;padding:10px 12px;font-size:12.5px}
}

/* ===== Page-to-page sequential navigation ===== */
/* Giant faded logo watermark in footer */
.footer{position:relative;overflow:hidden}
.footer::before{content:'';position:absolute;left:50%;bottom:-20%;transform:translateX(-50%);width:min(1600px,140%);height:140%;background:url('assets/genefab-g-icon.svg') no-repeat center/contain;opacity:.05;pointer-events:none;z-index:0}
.footer .shell,.footer .page-nav{position:relative;z-index:1}
.footer .footer-brand img.brand-img{display:none}
.footer .footer-brand{display:flex;flex-direction:column;justify-content:flex-end}
.footer .page-nav{border-top:none;border-bottom:1px solid rgba(255,255,255,.12);padding:32px 0 40px;background:transparent;margin-bottom:48px}
.page-nav{border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2);padding:32px 0;background:var(--paper-2)}
.page-nav-inner{max-width:1200px;margin:0 auto;padding:0 24px;display:flex;justify-content:center;gap:18px;align-items:center;flex-wrap:wrap}
.page-nav-link{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:16px 30px;border:1px solid var(--rule-2);border-radius:999px;transition:.2s ease;color:inherit;font-size:16px;font-weight:500;line-height:1.2;text-align:center;min-width:200px}-height:1;white-space:nowrap}
.page-nav-link:hover{border-color:var(--ink);background:var(--paper);transform:translateY(-1px)}
.page-nav-link.prev{text-align:left}
.page-nav-link.next{text-align:right}
.page-nav-link .lab{display:none}
.page-nav-link .ttl{font-size:16px;font-weight:500;color:var(--ink);letter-spacing:-.005em;line-height:1.2}
.page-nav-link .arr{display:inline-block;font-size:16px;color:var(--ink-3);transition:transform .2s ease}
.page-nav-link.prev .arr{order:-1;margin-right:2px}
.page-nav-link.next .arr{order:1;margin-left:2px}
.page-nav-link.empty{display:none}
.page-nav-up{display:inline-flex;align-items:center;justify-content:center;padding:16px 30px;font-size:16px;color:var(--ink-2);font-weight:500;border:1px solid var(--rule-2);border-radius:999px;white-space:nowrap;transition:.2s ease;line-height:1}
.page-nav-up:hover{color:var(--ink);border-color:var(--ink);background:var(--paper);transform:translateY(-1px)}

/* Dark footer variant */
.footer .page-nav-inner{padding:0;max-width:none}
.footer .page-nav-link{border-color:rgba(255,255,255,.35);background:rgba(255,255,255,.04);color:#fff;font-weight:600}
.footer .page-nav-link:hover{border-color:var(--signal);background:rgba(16,207,136,.12);color:#fff;transform:translateY(-2px);box-shadow:0 6px 18px -8px rgba(16,207,136,.4)}
.footer .page-nav-link .lab{color:rgba(255,255,255,.55)}
.footer .page-nav-link .ttl{color:#fff}
.footer .page-nav-link .arr{color:var(--signal);font-weight:700}
.footer .page-nav-up{background:var(--signal);color:var(--ink);border-color:var(--signal);font-weight:600}
.footer .page-nav-up:hover{background:#fff;color:var(--ink);border-color:#fff;transform:translateY(-2px);box-shadow:0 6px 18px -8px rgba(255,255,255,.3)}

@media (max-width:900px){
  .page-nav-inner{flex-direction:column;align-items:stretch;gap:12px}
  .page-nav-link,.page-nav-up{justify-content:center;text-align:center;width:100%}
  .page-nav-link.prev{order:1}
  .page-nav-up{order:2}
  .page-nav-link.next{order:3}
}

/* ===== Presentations / webinars ===== */
.section-title-lg{font-size:clamp(34px,4.4vw,56px);letter-spacing:-.025em;line-height:1.05;margin:0 0 32px;white-space:nowrap}
@media (max-width:560px){.section-title-lg{white-space:normal}}
.presentation-grid{display:grid;grid-template-columns:1fr;gap:32px}
@media (min-width:880px){.presentation-grid{grid-template-columns:repeat(2,1fr)}}
.presentation-card{display:flex;flex-direction:column;background:var(--paper-2);border:1px solid var(--rule-2);border-radius:14px;overflow:hidden;transition:.2s ease}
.presentation-card:hover{border-color:var(--ink);box-shadow:0 8px 32px -16px rgba(5,31,32,.2)}
.presentation-card .video-wrap{position:relative;aspect-ratio:16/9;background:var(--ink);overflow:hidden}
.presentation-card .video-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.presentation-card .video-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:rgba(255,255,255,.7);background:linear-gradient(135deg,#051F20 0%,#235347 100%);pointer-events:none}
.presentation-card .play-icon{font-size:48px;width:88px;height:88px;border-radius:50%;background:rgba(16,207,136,.15);border:2px solid var(--signal);display:flex;align-items:center;justify-content:center;color:var(--signal);padding-left:6px}
.presentation-card .video-label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600}
.presentation-card .presentation-body{padding:24px;display:flex;flex-direction:column;gap:12px;flex:1}
.presentation-card .pill{align-self:flex-start;padding:4px 10px;background:#10CF8820;color:var(--signal-2);border-radius:999px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:700}
.presentation-card h3{font-size:clamp(18px,1.6vw,22px);line-height:1.25;letter-spacing:-.015em;color:var(--ink);margin:0}
.presentation-card p{font-size:14px;line-height:1.55;color:var(--ink-3);margin:0}
.presentation-card .more{margin-top:auto;display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--signal-2)}
.presentation-card .more:hover .arrow{transform:translate(2px,-2px)}
.presentation-card .more .arrow{transition:transform .15s}


.events-section{padding-block:clamp(48px,6vw,80px)}
.events-section .ev-header{display:flex;justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:32px;padding-bottom:16px;border-bottom:1px solid var(--rule-2)}
.events-section .ev-header h2{font-size:clamp(22px,2.4vw,30px);letter-spacing:-.02em;font-weight:500}
.events-section .ev-header .count{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--forest);font-weight:600}
.events-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:14px;overflow:hidden}
.event-card{background:#fff;padding:24px 24px 22px;display:flex;flex-direction:column;gap:10px;min-height:170px;transition:.2s ease;position:relative}
.event-card.upcoming{background:var(--paper-2)}
.event-card.upcoming::before{content:"Upcoming";position:absolute;top:14px;right:18px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--signal-2);font-weight:700;background:#10CF8820;padding:3px 8px;border-radius:999px}
.event-card .name{font-size:16px;font-weight:600;color:var(--ink);letter-spacing:-.005em;line-height:1.3;max-width:24ch}
.event-card .where{font-size:13.5px;color:var(--ink-3);line-height:1.45}
.event-card .booth{font-size:12.5px;color:var(--signal-2);font-weight:600;margin-top:auto}
.event-card .booth a{color:var(--signal-2);border-bottom:1px solid var(--signal);padding-bottom:1px}
.event-card .booth a:hover{color:var(--ink)}
@media (max-width:880px){.events-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.events-grid{grid-template-columns:1fr}}

/* ===== Stats ===== */
.stats-section{background:var(--ink);color:var(--paper);position:relative;overflow:hidden;padding-block:clamp(48px,6vw,80px)}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;max-width:var(--max);margin:0 auto;padding-inline:var(--pad-x);border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12)}
.stat-cell{padding:48px 32px;border-right:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;gap:14px}
.stat-cell:first-child{padding-left:0}
.stat-cell:last-child{border-right:none;padding-right:0}
.stat-cell .num{font-size:clamp(42px,5.4vw,72px);font-weight:300;letter-spacing:-.04em;line-height:1;font-family:'Newsreader',serif;color:#fff}
.stat-cell .num .suffix{font-family:Inter,sans-serif;font-weight:400;color:var(--signal);font-size:.4em;margin-left:6px;letter-spacing:0}
.stat-cell .label{font-size:14px;color:var(--mist);max-width:24ch;line-height:1.45}
@media (max-width:880px){.stats-grid{grid-template-columns:repeat(2,1fr)}.stat-cell{border-bottom:1px solid rgba(255,255,255,.12);padding:36px 24px}.stat-cell:nth-child(2n){padding-right:0}.stat-cell:nth-child(2n+1){padding-left:0;border-right:1px solid rgba(255,255,255,.12)}.stat-cell:nth-last-child(-n+2){border-bottom:none}}
@media (max-width:560px){.stats-grid{grid-template-columns:1fr}.stat-cell{padding:28px 0;border-right:none}.stat-cell:nth-child(2n+1){border-right:none}}

/* ===== Contact form ===== */
.contact-wrap{display:grid;grid-template-columns:1fr 1.4fr;gap:48px;align-items:start}
@media (max-width:920px){.contact-wrap{grid-template-columns:1fr;gap:32px}}
.contact-side{position:sticky;top:120px;display:flex;flex-direction:column;gap:24px}
@media (max-width:920px){.contact-side{position:static}}
.contact-side .lab{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--forest);font-weight:600}
.contact-side .v{font-size:18px;color:var(--ink-2);line-height:1.45}
.contact-side .v a{color:var(--ink);font-weight:500;border-bottom:1px solid var(--signal);transition:.15s}
.contact-side .v a:hover{color:var(--signal-2);border-color:var(--signal-2)}
.contact-side .item{padding:18px 0;border-top:1px solid var(--rule)}
.contact-side .item:first-child{border-top:none;padding-top:0}
.contact-form{background:var(--paper);border:1px solid var(--rule);border-radius:14px;padding:40px}
.contact-form .field{margin-bottom:22px}
.contact-form .row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:560px){.contact-form .row{grid-template-columns:1fr}}
.contact-form label{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--forest);font-weight:600;margin-bottom:8px}
.contact-form label .req{color:var(--signal-2);margin-left:4px}
.contact-form input[type="text"],.contact-form input[type="email"],.contact-form textarea{width:100%;padding:13px 14px;font-size:15px;font-family:inherit;color:var(--ink);background:#fff;border:1px solid var(--rule-2);border-radius:8px;transition:border-color .15s, box-shadow .15s;outline:none}
.contact-form textarea{resize:vertical;min-height:130px;line-height:1.55}
.contact-form input:focus,.contact-form textarea:focus{border-color:var(--signal);box-shadow:0 0 0 3px #10CF8826}
.contact-form .check-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:560px){.contact-form .check-grid{grid-template-columns:1fr}}
.contact-form .check{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--rule-2);border-radius:8px;cursor:pointer;background:#fff;transition:.15s;font-size:14px;color:var(--ink-2)}
.contact-form .check:hover{border-color:var(--forest)}
.contact-form .check input{appearance:none;-webkit-appearance:none;width:16px;height:16px;border:1.5px solid var(--rule-2);border-radius:4px;cursor:pointer;position:relative;transition:.15s;flex:0 0 auto}
.contact-form .check input:checked{background:var(--signal);border-color:var(--signal)}
.contact-form .check input:checked::after{content:"";position:absolute;left:4px;top:0;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.contact-form .check:has(input:checked){border-color:var(--signal);background:#10CF8814}
.contact-form .submit-row{display:flex;justify-content:space-between;align-items:center;margin-top:8px;gap:16px;flex-wrap:wrap}
.contact-form .submit-btn{display:inline-flex;align-items:center;gap:10px;padding:14px 22px;background:var(--ink);color:#fff;border:none;border-radius:999px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:.15s}
.contact-form .submit-btn:hover{background:var(--signal-2)}
.contact-form .submit-btn .arrow{transition:transform .15s}
.contact-form .submit-btn:hover .arrow{transform:translate(2px,-2px)}
.contact-form .fine-print{font-size:12px;color:var(--ink-4);line-height:1.5;max-width:30ch}
.contact-form .confirm{padding:48px 24px;text-align:center}
.contact-form .confirm svg{margin-bottom:18px}
.contact-form .confirm h3{font-size:22px;margin-bottom:8px}
.contact-form .confirm p{color:var(--ink-3);font-size:15px}
/* ===== Team grid ===== */

/* ===== Careers page ===== */
.careers-hero{position:relative;padding:180px 0 110px;color:#fff;overflow:hidden;isolation:isolate;background:var(--ink)}
.careers-hero-bg{position:absolute;inset:0;z-index:-2;background:url('assets/team-photo.jpg') center/cover no-repeat;opacity:.32;filter:saturate(.85)}
.careers-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg, rgba(5,31,32,.45) 0%, rgba(5,31,32,.78) 100%)}
.careers-hero .eyebrow{color:var(--mist);margin-bottom:24px}
.careers-hero .eyebrow::before{background:var(--signal)}
.careers-hero h1{font-size:clamp(40px,5.4vw,80px);max-width:16ch;letter-spacing:-.03em;line-height:1.02;color:#fff}
.careers-hero h1 em{font-family:'Newsreader',serif;font-style:italic;font-weight:200;color:var(--signal)}
.careers-hero .lede{margin-top:28px;max-width:54ch;color:rgba(255,255,255,.78)}

.careers-vmv{padding:clamp(64px,8vw,120px) 0;background:var(--paper)}
.vmv-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:48px;align-items:stretch}
.vmv-col{display:flex;flex-direction:column;gap:18px;padding:32px;background:var(--paper-2);border-radius:14px;border:1px solid var(--rule);min-height:280px}
.vmv-col .eyebrow{margin-bottom:0}
.vmv-col h2{font-size:clamp(20px,1.9vw,26px);line-height:1.25;letter-spacing:-.015em;font-weight:500;max-width:none}
.vmv-col h2 em{font-family:'Newsreader',serif;font-style:italic;font-weight:300;color:var(--signal-2)}
.vmv-col.mission h2{font-size:clamp(16px,1.4vw,19px);line-height:1.45;font-weight:400;letter-spacing:-.005em;color:var(--ink-2)}
.vmv-values{display:flex;flex-direction:column;gap:18px}
.vmv-value h4{font-size:16px;letter-spacing:-.01em;color:var(--ink);font-weight:600;margin-bottom:3px}
.vmv-value p{font-size:13.5px;color:var(--ink-3);line-height:1.5}
@media (max-width:880px){.vmv-grid{grid-template-columns:1fr;gap:24px}.vmv-col{min-height:0}}

.careers-cta-band{padding-block:clamp(48px,6vw,80px);background:var(--paper-2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.careers-cta-band h2 em{font-family:'Newsreader',serif;font-style:italic;font-weight:300;color:var(--signal-2)}

.careers-lever{background:var(--paper);padding-bottom:80px}
.careers-lever-toolbar{background:var(--ink);color:#fff;padding:18px 0}
.careers-lever-toolbar .toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.toolbar-meta{display:flex;align-items:center;gap:16px;font-size:13px;color:rgba(255,255,255,.7)}
.toolbar-eye{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--signal);padding:4px 10px;background:rgba(16,207,136,.15);border-radius:999px}
.toolbar-eye::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 0 rgba(16,207,136,.55);animation:livedot 2s ease-in-out infinite}
@keyframes livedot{0%{box-shadow:0 0 0 0 rgba(16,207,136,.55)}70%{box-shadow:0 0 0 8px rgba(16,207,136,0)}100%{box-shadow:0 0 0 0 rgba(16,207,136,0)}}
.toolbar-link{font-size:13px;font-weight:600;color:#fff;border-bottom:1px solid var(--signal);padding-bottom:2px;transition:.15s}
.toolbar-link:hover{color:var(--signal)}
.lever-frame-wrap{width:100%;background:var(--paper-2)}
.lever-frame-wrap iframe{width:100%;height:min(1200px,140vh);min-height:900px;border:0;display:block;background:#fff}
@media (max-width:880px){.lever-frame-wrap iframe{height:1400px;min-height:1200px}}
@media (max-width:560px){.lever-frame-wrap iframe{height:1600px}}

/* ===== Team grid ===== */
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px}

/* ===== Thank-you modal (contact form) ===== */
.thanks-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease, visibility .25s ease}
.thanks-modal.open{opacity:1;visibility:visible;pointer-events:auto}
.thanks-modal-backdrop{position:absolute;inset:0;background:rgba(5,31,32,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);cursor:pointer}
.thanks-modal-panel{position:relative;background:#fff;border-radius:14px;padding:48px 40px 36px;max-width:520px;width:100%;text-align:center;box-shadow:0 24px 80px -16px rgba(5,31,32,.35);transform:translateY(10px) scale(.98);transition:transform .3s cubic-bezier(.22,1,.36,1)}
.thanks-modal.open .thanks-modal-panel{transform:translateY(0) scale(1)}
.thanks-modal-close{position:absolute;top:12px;right:14px;background:none;border:none;font-size:28px;line-height:1;color:var(--ink-3);cursor:pointer;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0;transition:.15s}
.thanks-modal-close:hover{background:var(--paper-2);color:var(--ink)}
.thanks-modal-check{display:flex;justify-content:center;margin-bottom:20px}
.thanks-modal-panel h2{font-size:clamp(22px,2.4vw,28px);letter-spacing:-.015em;color:var(--ink);margin:0 0 12px;line-height:1.25;font-weight:600}
.thanks-modal-panel p{font-size:16px;color:var(--ink-2);line-height:1.55;margin:0 0 28px}
.thanks-modal-btn{background:var(--ink);color:#fff;border:none;border-radius:999px;padding:13px 28px;font-size:14px;font-weight:500;cursor:pointer;transition:.2s;font-family:inherit}
.thanks-modal-btn:hover{background:var(--signal);color:var(--ink)}
@media (max-width:560px){.thanks-modal-panel{padding:36px 24px 28px}.thanks-modal-panel h2{font-size:20px}}
.team-card-placeholder .team-photo{background:transparent;border:1.5px dashed var(--rule-2);opacity:.55}
.team-card-placeholder .team-photo .initials{color:var(--ink-4);font-size:32px}
.team-card-placeholder .team-name,.team-card-placeholder .team-role{visibility:hidden;min-height:1em}
.team-card{display:flex;flex-direction:column;gap:14px}
.team-photo{aspect-ratio:4/5;background:var(--paper-2);border-radius:8px;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;position:relative;border:1px solid var(--rule)}
.team-photo .initials{font-family:'Newsreader',serif;font-weight:300;font-size:64px;color:var(--ink-3);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;letter-spacing:-.02em}
.team-photo img{width:100%;height:100%;object-fit:cover;display:block}
.team-name{font-size:18px;font-weight:500;color:var(--ink);letter-spacing:-.01em;line-height:1.2}
.team-role{font-size:13px;color:var(--ink-3);line-height:1.45}
@media (max-width:1024px){.team-grid{grid-template-columns:repeat(3,1fr);gap:24px}}
@media (max-width:760px){.team-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.team-grid{grid-template-columns:1fr}}

/* ===== Facilities cards (slide-inspired) ===== */
.fac-cards{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:48px}
.fac-cards.fac-stacked{grid-template-columns:1fr;gap:48px}
.fac-cards.fac-stacked .fac-img{aspect-ratio:2.4 / 1}
.fac-cards.fac-stacked .fac-img img{width:100%;height:100%;object-fit:cover;display:block}
.fac-cards.fac-stacked .fac-card-head{padding:32px 36px 22px}
.fac-cards.fac-stacked .fac-card-title{font-size:24px}
.fac-cards.fac-stacked .fac-card-band{padding:22px 36px}
.fac-cards.fac-stacked .fac-card-band .name{font-size:15px}
.fac-cards.fac-stacked .fac-card-band .loc{font-size:18px}
.fac-cards.fac-stacked .fac-card-body{padding:28px 36px 36px}
.fac-cards.fac-stacked .fac-card-body li{font-size:16px;line-height:1.6}
@media (max-width:880px){.fac-cards{grid-template-columns:1fr;gap:24px}}
.fac-card{background:var(--paper);border:1px solid var(--rule);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:.25s ease;box-shadow:0 1px 2px rgba(5,31,32,.04)}
.fac-card:hover{transform:translateY(-2px);box-shadow:0 12px 32px -8px rgba(5,31,32,.12)}
.fac-card-head{display:flex;align-items:center;gap:14px;padding:24px 28px 18px}
.fac-icon{width:48px;height:48px;border-radius:50%;background:var(--ink);display:flex;align-items:center;justify-content:center;flex:0 0 auto;position:relative;overflow:hidden}
.fac-icon::after{content:"";position:absolute;width:18px;height:18px;background:var(--signal);border-radius:50%;top:6px;right:-2px}
.fac-icon svg{position:relative;z-index:1;width:24px;height:24px;color:#fff}
.fac-card-title{font-size:20px;font-weight:600;color:var(--ink);letter-spacing:-.01em}
.fac-img{aspect-ratio:1200/382;width:100%;overflow:hidden;background:var(--paper-2)}
.fac-img img{width:100%;height:100%;object-fit:cover;display:block}
.fac-card-band{background:var(--ink);color:#fff;padding:18px 28px}
.fac-card-band .name{color:var(--signal);font-size:14px;font-weight:600;letter-spacing:.01em;margin-bottom:2px}
.fac-card-band .loc{color:#fff;font-weight:600;font-size:16px}
.fac-card-body{padding:24px 28px 28px;flex:1}
.fac-card-body ul{list-style:none;display:grid;gap:12px}
.fac-card-body li{padding-left:20px;position:relative;font-size:15px;line-height:1.55;color:var(--ink-2)}
.fac-card-body li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--signal);position:absolute;left:0;top:9px}
.fac-feature{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;padding-block:clamp(40px, 5vw, 80px);border-top:1px solid var(--rule)}
.fac-feature:first-child{border-top:none}
.fac-feature.reverse > div:first-child{order:2}
.fac-feature .fac-img{aspect-ratio:5/4;background:var(--paper-2);border-radius:10px;overflow:hidden;border:1px solid var(--rule)}
.fac-feature .fac-img img{width:100%;height:100%;object-fit:cover}
.fac-feature h3{margin-bottom:18px}
.fac-feature ul{list-style:none;display:grid;gap:14px;margin-top:18px}
.fac-feature li{padding-left:20px;position:relative;font-size:15px;line-height:1.55;color:var(--ink-2)}
.fac-feature li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--signal);position:absolute;left:0;top:9px}
@media (max-width:880px){.fac-feature{grid-template-columns:1fr;gap:28px}.fac-feature.reverse > div:first-child{order:0}}

.fac-hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:12px;overflow:hidden;margin-top:48px}
.fac-hero-stats .stat{background:#fff;padding:32px 24px;display:flex;flex-direction:column;gap:8px}
.fac-hero-stats .num{font-family:'Inter',sans-serif;font-size:clamp(32px,3.6vw,48px);font-weight:500;letter-spacing:-.025em;color:var(--ink)}
.fac-hero-stats .num .suffix{font-size:.5em;color:var(--signal-2);font-weight:400;margin-left:6px}
.fac-hero-stats .lbl{font-size:13px;color:var(--ink-3);line-height:1.45}
@media (max-width:760px){.fac-hero-stats{grid-template-columns:1fr}}
.tech-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}
.tech-grid.cols-4{grid-template-columns:repeat(5,1fr)}
.tech-grid.cols-4 .tech-card{min-height:260px;padding:22px 18px;gap:10px}
.tech-grid.cols-4 .tech-card h4{font-size:16px;letter-spacing:-.01em;line-height:1.2}
.tech-grid.cols-4 .tech-card p{font-size:12.5px;line-height:1.5}
.tech-grid.cols-4 .tech-tag{font-size:10px;letter-spacing:.1em}
.tech-card{background:var(--paper);padding:36px 30px;display:flex;flex-direction:column;gap:18px;min-height:360px;transition:.3s;position:relative}
.tech-card:hover{background:var(--paper-2)}
.tech-card .tech-tag{font-size:12px;font-weight:500;color:var(--signal-2);letter-spacing:.08em;text-transform:uppercase}
.tech-card h4{font-size:24px;line-height:1.15;letter-spacing:-.015em}
.tech-card h4 em{font-family:'Newsreader',serif;font-style:italic;font-weight:300}
.tech-card p{font-size:15px;color:var(--ink-3);line-height:1.55}
.tech-card .tech-foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center;padding-top:18px;border-top:1px solid var(--rule);font-size:12px;color:var(--ink-3);letter-spacing:.04em}
.tech-card .arr{color:var(--signal-2);font-size:18px;transition:.25s}
.tech-card:hover .arr{transform:translate(3px,-3px)}
@media (max-width:1024px){.tech-grid{grid-template-columns:repeat(2,1fr)}.tech-grid.cols-4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.tech-grid{grid-template-columns:1fr}.tech-grid.cols-4{grid-template-columns:1fr}}

/* ===== Quote / testimonial ===== */
.testimonial-section{background:var(--paper-2);position:relative;overflow:hidden}
.testimonial-container{display:grid;grid-template-columns:1.4fr 1fr;gap:64px;align-items:start}
.testimonial-q{font-family:'Newsreader',serif;font-weight:200;font-size:clamp(22px,2.6vw,36px);line-height:1.22;letter-spacing:-.02em;color:var(--ink);max-width:22ch}
.testimonial-q .signal{color:var(--signal-2)}
.testimonial-q::before{content:"\201C";display:block;font-size:120px;line-height:.4;color:var(--signal);opacity:.3;margin-bottom:24px}
.testimonial-attr{display:flex;flex-direction:column;gap:6px;margin-top:32px}
.testimonial-attr .who{font-size:16px;font-weight:500;color:var(--ink)}
.testimonial-attr .role{font-size:13px;color:var(--ink-3);letter-spacing:.02em}
.testimonial-side{position:sticky;top:120px;margin-top:96px;background:var(--paper);border-left:3px solid var(--signal);padding:32px}
.testimonial-side .lab{font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--forest);margin-bottom:14px}
.testimonial-side h4{font-size:20px;line-height:1.2;margin-bottom:10px}
.testimonial-side p{font-size:14px;color:var(--ink-3)}
@media (max-width:1024px){.testimonial-container{grid-template-columns:1fr}.testimonial-side{position:static}}

/* ===== News / insights ===== */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.news-card{display:flex;flex-direction:column;gap:18px;text-decoration:none}
.news-card .img{aspect-ratio:4/3;background:var(--paper-3);overflow:hidden;border-radius:2px}
.news-card .img img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.news-card:hover .img img{transform:scale(1.04)}
.news-card .meta{display:flex;gap:14px;font-size:12px;color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}
.news-card .meta .tag{color:var(--signal-2);font-weight:500}
.news-card h4{font-size:22px;line-height:1.2;letter-spacing:-.015em;color:var(--ink)}
.news-card:hover h4{color:var(--signal-2)}
@media (max-width:880px){.news-grid{grid-template-columns:1fr}}

/* ===== CTA ===== */
.cta-section{background:linear-gradient(135deg,#235347 0%,#0A8A5A 100%);color:#fff;position:relative;overflow:hidden;padding-block:clamp(64px,7vw,96px);border-top:2px solid var(--signal);border-bottom:2px solid var(--signal);box-shadow:inset 0 1px 0 rgba(255,255,255,.12), 0 0 60px -20px rgba(16,207,136,.35)}
.cta-section::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 80% 0%,rgba(16,207,136,.35),transparent 60%);pointer-events:none}
.cta-section .shell{position:relative;z-index:1}
.cta-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:64px;align-items:end}
.cta-grid h2{font-size:clamp(32px,4.4vw,64px);color:#fff;letter-spacing:-.03em;line-height:1;font-weight:400;max-width:14ch}
.cta-grid h2 em{font-family:'Newsreader',serif;font-style:italic;font-weight:200;color:#AFD1D2}
.cta-grid .right{display:flex;flex-direction:column;gap:14px}
.cta-grid .meta{margin-top:20px;font-size:13px;color:rgba(255,255,255,.5);padding-top:18px;border-top:1px solid rgba(255,255,255,.18);display:flex;justify-content:space-between}
.cta-watermark{position:absolute;bottom:-60px;right:-40px;font-family:'Newsreader',serif;font-weight:200;font-size:clamp(180px,28vw,420px);color:rgba(255,255,255,.04);line-height:.9;pointer-events:none;letter-spacing:-.06em}
@media (max-width:880px){.cta-grid{grid-template-columns:1fr}}

/* ===== Footer ===== */
.footer{background:var(--ink);color:var(--mist);padding:80px 0 32px;border-top:1px solid rgba(255,255,255,.06);position:relative}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:48px;border-bottom:1px solid rgba(255,255,255,.12)}
.footer-brand h3{font-family:'Newsreader',serif;font-weight:300;font-size:clamp(28px,3vw,40px);color:#fff;letter-spacing:-.02em;line-height:1.1;max-width:20ch}
.footer-brand p{color:rgba(255,255,255,.6);margin-top:16px;max-width:32ch;font-size:14px}
.footer-col h5{font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:#fff;margin-bottom:20px}
.footer-col a{display:block;font-size:14px;color:rgba(255,255,255,.6);padding:6px 0;transition:.2s}
.footer-col a:hover{color:var(--signal)}
.footer-meta{display:flex;justify-content:space-between;align-items:center;padding-top:32px;font-size:12px;color:rgba(255,255,255,.4);letter-spacing:.04em}
@media (max-width:880px){.footer-grid{grid-template-columns:repeat(3,1fr);gap:36px 24px}.footer-brand{grid-column:1/-1}}
@media (max-width:540px){.footer-grid{column-gap:16px;gap:28px 16px}.footer-col h5{font-size:11px;margin-bottom:14px}.footer-col a{font-size:12px;padding:5px 0}}

/* ===== 404 / Not Found ===== */
.nf-wrap{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:140px var(--pad-x) 80px;background:var(--paper);overflow:hidden}
.nf-bg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:0}
.nf-bg .big{font-family:'Newsreader',serif;font-weight:200;font-size:clamp(280px,42vw,640px);color:rgba(5,31,32,.04);line-height:1;letter-spacing:-.06em;user-select:none}
.nf-inner{position:relative;z-index:1;max-width:720px;width:100%;text-align:left}
.nf-eyebrow{display:inline-flex;align-items:center;gap:12px;font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--forest);margin-bottom:24px}
.nf-eyebrow::before{content:"";display:inline-block;width:28px;height:1px;background:var(--signal)}
.nf-inner h1{font-size:clamp(38px,5.4vw,72px);letter-spacing:-.03em;line-height:1.02;margin-bottom:24px;max-width:18ch;font-weight:500}
.nf-inner h1 em{font-family:'Newsreader',serif;font-style:italic;font-weight:200;color:var(--signal-2)}
.nf-inner p{font-family:'Newsreader',serif;font-weight:300;font-size:clamp(17px,1.35vw,21px);line-height:1.4;color:var(--ink-2);max-width:54ch;margin-bottom:36px}
.nf-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:48px}
.nf-actions .btn{border:1px solid var(--rule-2);background:var(--paper);color:var(--ink)}
.nf-actions .btn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.nf-actions .btn.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.nf-actions .btn.primary:hover{background:var(--signal);color:var(--ink);border-color:var(--signal)}
.nf-suggestions{padding-top:32px;border-top:1px solid var(--rule)}
.nf-suggestions .lab{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--forest);margin-bottom:18px}
.nf-suggestions ul{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.nf-suggestions li{margin:0}
.nf-suggestions li a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:18px 16px;font-size:14px;font-weight:500;color:var(--ink);background:var(--paper);border:1px solid var(--rule-2);border-radius:10px;transition:.2s ease;line-height:1.25;min-height:64px}
.nf-suggestions li a::after{content:"\2197";color:var(--ink-3);font-size:13px;transition:.2s;flex:0 0 auto}
.nf-suggestions li a:hover{border-color:var(--ink);background:var(--ink);color:#fff;transform:translateY(-1px);box-shadow:0 8px 20px -8px rgba(5,31,32,.2)}
.nf-suggestions li a:hover::after{color:var(--signal);transform:translate(2px,-2px)}
@media (max-width:880px){.nf-suggestions ul{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.nf-suggestions ul{grid-template-columns:1fr}}

/* ===== Section heads ===== */
.sec-head{display:grid;grid-template-columns:1fr 1.4fr;gap:48px;padding-bottom:64px;align-items:end}
.sec-head h2{max-width:14ch}
.sec-head h2 em{font-family:'Newsreader',serif;font-style:italic;font-weight:300}
.sec-head .right p{max-width:54ch;color:var(--ink-2);font-size:18px;line-height:1.55}
@media (max-width:880px){.sec-head{grid-template-columns:1fr;gap:24px}}

/* ===== Page hero (sub-pages) ===== */
.page-hero{padding:180px 0 100px;border-bottom:1px solid var(--rule);background:var(--paper)}
.page-hero .eyebrow{margin-bottom:32px}
.page-hero h1{font-size:clamp(38px,5vw,72px);max-width:18ch;letter-spacing:-.03em;line-height:1.02}
.page-hero h1 em{font-family:'Newsreader',serif;font-style:italic;font-weight:200;color:var(--signal-2)}
.page-hero .lede{margin-top:32px;max-width:54ch}

/* ===== Reveal animations =====
   Progressive enhancement: content is visible by default. CSS only hides
   it when <html> has the .js-ready class, which is set by an inline script
   in <head> on every page. If JS is disabled or fails to load, the inline
   script never runs and content stays visible — no broken pages. */
.js-ready .reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .9s ease-out, transform .9s ease-out;
}
.js-ready .reveal.in {
  opacity: 1;
  transform: none;
}
/* Above-the-fold reveals get no animation — snap to visible (bulletproof against
   iframe / hosting environments that pause CSS transitions). */
.js-ready .reveal.no-anim {
  transition: none !important;
  opacity: 1 !important;
  transform: none !important;
}
.js-ready .reveal-stagger.no-anim > * {
  transition: none !important;
  opacity: 1 !important;
  transform: none !important;
}

.js-ready .reveal-stagger > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .8s ease-out, transform .8s ease-out;
}
.js-ready .reveal-stagger.in > * {
  opacity: 1;
  transform: none;
}
.reveal-stagger.in > *:nth-child(1){transition-delay:.05s}
.reveal-stagger.in > *:nth-child(2){transition-delay:.13s}
.reveal-stagger.in > *:nth-child(3){transition-delay:.21s}
.reveal-stagger.in > *:nth-child(4){transition-delay:.29s}
.reveal-stagger.in > *:nth-child(5){transition-delay:.37s}
.reveal-stagger.in > *:nth-child(6){transition-delay:.45s}


/* ===== Genetic Design two-tier flow diagram ===== */
.design-flow{display:flex;flex-direction:column;gap:0;margin-top:48px}
.flow-row{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule-2);border:1px solid var(--rule-2)}
.flow-row-label{grid-column:1 / -1;background:var(--bg-2,#EAEEEA);color:var(--ink);font-size:clamp(20px,2.2vw,28px);font-weight:600;letter-spacing:-.015em;text-align:center;padding:22px 24px;margin:0;border-bottom:1px solid var(--rule-2);line-height:1.2}
.flow-row-tools .flow-card{background:var(--paper);border-top:3px solid var(--ink)}
.flow-row-outcomes .flow-card{background:#fff;border-top:3px solid var(--signal)}
.flow-card{padding:28px 24px;display:flex;flex-direction:column;gap:12px;min-height:240px;transition:.2s ease}
.flow-card:hover{background:var(--paper-2)}
.flow-card .flow-tag{font-size:11px;letter-spacing:.14em;font-weight:600;text-transform:uppercase;color:var(--ink-3)}
.flow-row-outcomes .flow-card .flow-tag{color:var(--signal-2)}
.flow-card h4{font-size:22px;letter-spacing:-.015em;line-height:1.15;color:var(--ink);margin:0}
.flow-card p{font-size:14px;line-height:1.55;color:var(--ink-3);margin:0}

.flow-connector{position:relative;height:96px;display:flex;align-items:center;justify-content:center}
.flow-connector svg{width:100%;height:100%;position:absolute;inset:0}
.flow-connector-label{position:relative;z-index:1;background:var(--paper);padding:8px 22px;font-size:13px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--signal-2);border:1px solid var(--rule-2)}

@media (max-width:880px){
  .flow-row{grid-template-columns:1fr}
  .flow-row-label{font-size:18px;padding:18px 16px}
  .flow-card{min-height:0}
  .flow-connector{height:auto;padding:14px 0}
  .flow-connector svg{display:none}
}


/* ===== Mobile overflow safety for hero paragraphs ===== */
.page-hero .shell, .hero .shell, .careers-hero .shell{overflow-wrap:break-word;word-wrap:break-word;hyphens:auto}
.page-hero .lede, .hero .lede, .careers-hero .lede{max-width:min(54ch, 100%);overflow-wrap:break-word;word-wrap:break-word}
.page-hero h1, .hero h1, .careers-hero h1{overflow-wrap:break-word;word-wrap:break-word;hyphens:auto;max-width:min(18ch, 100%)}
@media (max-width:640px){
  .page-hero .lede[style*="max-width"]{max-width:100% !important}
  .page-hero{padding:140px 16px 80px}
  .page-hero .shell{padding-left:0;padding-right:0}
}
html, body{overflow-x:hidden}

/* ===== Cell-banking process flow — stack vertically on tablet/mobile ===== */
@media (max-width:1024px){
  .bank-flow{grid-template-columns:1fr !important}
  .bank-flow-step{border-right:none !important;border-bottom:1px solid var(--rule)}
  .bank-flow-step:last-child{border-bottom:none}
}

/* ===== Viral Vector — "From construct to cleanroom" stage row ===== */
.vv-construct-grid{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:880px){
  .vv-construct-grid{grid-template-columns:repeat(4,1fr);gap:24px}
}
.vv-construct-stage{padding:24px 20px;border-top:2px solid var(--signal);background:rgba(16,207,136,.04);border-radius:0}
@media (min-width:880px){
  .vv-construct-stage{padding:28px 0;background:transparent}
}
.vv-construct-tag{font-size:13px;color:var(--signal);letter-spacing:.1em;text-transform:uppercase;font-weight:500}
.vv-construct-name{font-size:18px;font-weight:500;margin-top:12px;color:#fff;letter-spacing:-.01em}
.vv-construct-desc{font-size:14px;color:rgba(255,255,255,.7);margin-top:10px;line-height:1.55}


/* ===== Viral Vector scale table ===== */
.scale-table{border-block:1px solid var(--ink);background:var(--paper)}
.scale-row{display:grid;grid-template-columns:200px 2.6fr 140px 1.2fr;gap:32px;padding:24px;border-bottom:1px solid var(--rule);align-items:start}
.scale-row-last,.scale-row:last-child{border-bottom:none}
.scale-row.scale-head{padding:18px 24px;border-bottom:1px solid var(--ink);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
.scale-row .col-platform{font-weight:500}
.scale-row .col-desc{color:var(--ink-2);font-size:15px;line-height:1.55}
.scale-row .col-scale{color:var(--signal-2);font-weight:500;font-size:15px;white-space:nowrap}
.scale-row .col-use{color:var(--ink-3);font-size:14px;line-height:1.5}

@media (max-width:1024px){
  .scale-row{grid-template-columns:180px 1.8fr 120px 1.2fr;gap:20px;padding:20px}
  .scale-row.scale-head{padding:16px 20px}
}
@media (max-width:760px){
  .scale-row,.scale-row.scale-head{grid-template-columns:1fr;gap:6px;padding:24px 20px}
  .scale-row.scale-head{display:none}
  .scale-row .col-platform{font-size:18px;font-weight:600;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--rule-2)}
  .scale-row .col-platform::before{content:""}
  .scale-row .col-desc::before{content:"Description \2022\00a0";font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:500;display:block;margin-bottom:4px}
  .scale-row .col-scale::before{content:"Scale \2022\00a0";font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:500;display:block;margin-bottom:4px;margin-top:14px}
  .scale-row .col-use::before{content:"Typical use \2022\00a0";font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:500;display:block;margin-bottom:4px;margin-top:14px}
}


/* ===== why-grid 3-2 layout (5 cards: 3 top, 2 bottom) ===== */
.why-grid.grid-3-2{grid-template-columns:repeat(6,1fr)}
.why-grid.grid-3-2 .why-card{grid-column:span 2}
.why-grid.grid-3-2 .why-card:nth-child(4){grid-column:2 / span 2}
.why-grid.grid-3-2 .why-card:nth-child(5){grid-column:span 2}
@media (max-width:1024px){
  .why-grid.grid-3-2{grid-template-columns:repeat(2,1fr)}
  .why-grid.grid-3-2 .why-card{grid-column:span 1}
  .why-grid.grid-3-2 .why-card:nth-child(4){grid-column:span 1}
  .why-grid.grid-3-2 .why-card:nth-child(5){grid-column:span 2}
}
@media (max-width:640px){
  .why-grid.grid-3-2{grid-template-columns:1fr}
  .why-grid.grid-3-2 .why-card,
  .why-grid.grid-3-2 .why-card:nth-child(4),
  .why-grid.grid-3-2 .why-card:nth-child(5){grid-column:1}
}
