/* ==========================================================================
   EO SITE CORE · tokens, type, buttons, nav, sections, hero, footer
   ========================================================================== */

/* ==========================================================================
   FONTS · self-hosted, no third-party request
   Archivo 400/500/600 and IBM Plex Mono 400/500, latin + latin-ext subsets.
   Files live in assets/fonts/. Nothing is loaded from Google, so no visitor
   data leaves the site's own origin for typography.
   ========================================================================== */
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:400;
  font-stretch:100%;
  font-display:swap;
  src:url('../fonts/archivo-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:400;
  font-stretch:100%;
  font-display:swap;
  src:url('../fonts/archivo-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:500;
  font-stretch:100%;
  font-display:swap;
  src:url('../fonts/archivo-500-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:500;
  font-stretch:100%;
  font-display:swap;
  src:url('../fonts/archivo-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:600;
  font-stretch:100%;
  font-display:swap;
  src:url('../fonts/archivo-600-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:600;
  font-stretch:100%;
  font-display:swap;
  src:url('../fonts/archivo-600-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-500-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ==========================================================
   EO HOMEPAGE FOUNDATION — Gate 7 system
   Tokens, containers, section rhythm and responsive behavior.
   Component slots are reserved, never implemented, here.
   ========================================================== */
:root{
  --eo-navy:#0c1724; --eo-steel:#24384f;
  --eo-cobalt:#1f6feb; --eo-cobalt-deep:#154a9e;
  --eo-ink:#2a3038; --eo-secondary:#6b7178; --eo-muted:#8d97a4;
  --eo-white:#ffffff; --eo-pale:#f7f9fc; --eo-pale-2:#eef2f7; --eo-pale-3:#e5eaf1;
  --eo-rule:#dfe5ee; --eo-rule-strong:#aeb9c7;
  /* light blue: dark-surface use only */
  --eo-on-navy:#dbe4ef; --eo-on-navy-2:#9fbbe4;

  --radius-shell:22px; --radius-surface:16px; --radius-band:12px;
  --radius-card:10px; --radius-module:7px; --radius-control:10px; --radius-pill:999px;

  --eo-display:'Archivo',Arial,Helvetica,sans-serif;
  --eo-sans:'Archivo',Arial,Helvetica,sans-serif;
  --eo-mono:'IBM Plex Mono',ui-monospace,'SFMono-Regular',monospace;

  --eo-surface-sh:0 2px 4px rgba(12,23,36,.06), 0 20px 48px rgba(12,23,36,.09);
  --eo-contact-sh:0 1px 2px rgba(12,23,36,.05), 0 6px 16px -12px rgba(12,23,36,.42);

  --eo-gutter:72px;
  --eo-nav-h:62px;
}
@media (max-width:1240px){ :root{ --eo-gutter:40px } }
@media (max-width:900px){ :root{ --eo-gutter:32px; --eo-nav-h:58px } }
@media (max-width:640px){
  :root{
    --eo-gutter:22px; --eo-nav-h:56px;
    --radius-shell:16px; --radius-surface:12px; --radius-band:10px;
    --radius-card:8px; --radius-module:6px; --radius-control:9px;
  }
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;height:auto}
html,body,#dc-root,.sc-host{height:auto;min-height:100%}
body{margin:0;background:var(--eo-white);color:var(--eo-ink);font-family:var(--eo-sans);font-size:17px;line-height:1.62;-webkit-font-smoothing:antialiased}
p{margin:0;text-wrap:pretty}
h1,h2,h3,h4{margin:0;font-weight:500;text-wrap:pretty}
ul,ol{margin:0;padding:0;list-style:none}
img{display:block;max-width:100%}
a{color:var(--eo-cobalt);text-decoration:none}
a:hover{color:var(--eo-cobalt-deep)}
:focus-visible{outline:2px solid var(--eo-cobalt);outline-offset:3px;border-radius:2px}
::selection{background:rgba(31,111,235,.16)}

/* ---------- containers + rhythm ---------- */
.eo-wide,.eo-std,.eo-text{margin-inline:auto;padding-inline:var(--eo-gutter);width:100%}
.eo-wide{max-width:calc(1500px + var(--eo-gutter) * 2)}
.eo-std{max-width:calc(1280px + var(--eo-gutter) * 2)}
.eo-text{max-width:calc(800px + var(--eo-gutter) * 2)}
.eo-section{position:relative;padding-block:clamp(76px,9vw,132px)}
.eo-section[data-space="lg"]{padding-block:clamp(88px,11vw,144px)}
.eo-section[data-space="sm"]{padding-block:clamp(56px,6.5vw,92px)}
.eo-section[data-space="xs"]{padding-block:clamp(44px,5vw,68px)}
[id]{scroll-margin-top:calc(var(--eo-nav-h) + 20px)}
.eo-hr{height:1px;background:var(--eo-rule);border:0;margin:0}

/* ---------- type ---------- */
.eo-eyebrow{display:block;font:500 11px/1.4 var(--eo-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--eo-secondary)}
.eo-display{font-family:var(--eo-display);font-weight:400;font-size:clamp(37px,4.9vw,66px);line-height:1.07;letter-spacing:-.022em;color:var(--eo-navy)}
.eo-h2{font-family:var(--eo-display);font-weight:400;font-size:clamp(29px,3.3vw,46px);line-height:1.13;letter-spacing:-.018em;color:var(--eo-navy)}
.eo-h2--sm{font-size:clamp(25px,2.4vw,34px)}
.eo-h3{font-family:var(--eo-sans);font-weight:500;font-size:clamp(19px,1.45vw,22px);line-height:1.32;letter-spacing:-.012em;color:var(--eo-navy)}
.eo-lede{font-size:clamp(17px,1.28vw,19.5px);line-height:1.6;color:var(--eo-ink)}
.eo-body{font-size:clamp(15.5px,1.05vw,17px);line-height:1.66;color:var(--eo-secondary)}
.eo-label{font:500 10px/1 var(--eo-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--eo-muted)}
.eo-quiet{font:500 11px/1 var(--eo-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--eo-muted)}

/* ---------- wordmark (supplied logo asset, one image) ---------- */
.eo-logo{display:inline-flex;align-items:center;width:clamp(186px,11.5vw,224px);padding:0;border:0}
.eo-logo__image{display:block;width:100%;height:auto}
.eo-logo--dark{width:clamp(200px,13vw,248px)}

/* ---------- buttons ---------- */
.eo-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;padding:0 26px;border:1px solid transparent;border-radius:var(--radius-pill);font:500 15.5px/1 var(--eo-sans);letter-spacing:-.005em;cursor:pointer;transition:background .18s,border-color .18s,color .18s,box-shadow .18s}
.eo-btn--primary{background:var(--eo-cobalt);color:#fff;box-shadow:0 1px 2px rgba(12,23,36,.18)}
.eo-btn--primary:hover{background:var(--eo-cobalt-deep);color:#fff}
.eo-btn--ghost{background:transparent;border-color:var(--eo-rule-strong);color:var(--eo-navy)}
.eo-btn--ghost:hover{border-color:var(--eo-steel);color:var(--eo-navy);background:rgba(12,23,36,.03)}
.eo-btn--onnavy{background:#fff;color:var(--eo-navy)}
.eo-btn--onnavy:hover{background:var(--eo-pale-2);color:var(--eo-navy)}
.eo-btn--onnavy-ghost{background:transparent;border-color:rgba(255,255,255,.34);color:#fff}
.eo-btn--onnavy-ghost:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.07)}
.eo-textlink{display:inline-flex;align-items:center;gap:9px;min-height:44px;font:500 15.5px/1 var(--eo-sans);color:var(--eo-cobalt)}
.eo-textlink b{font:400 14px/1 var(--eo-mono);transition:transform .18s}
.eo-textlink:hover b{transform:translateX(4px)}
.eo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px}

/* ---------- navigation ---------- */
.eo-nav{position:sticky;top:0;z-index:60;padding-top:10px;background:transparent;transition:padding .22s}
/* v1.5: open and unboxed over the photographic hero at scroll position zero. */
.eo-nav__in{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;min-height:var(--eo-nav-h);padding-inline:clamp(14px,1.6vw,26px);background:transparent;border:1px solid transparent;border-radius:16px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;transition:background .26s ease,border-color .26s ease,box-shadow .26s ease,-webkit-backdrop-filter .26s ease,backdrop-filter .26s ease}
/* v1.5: settles into the floating frosted treatment once scrolling begins. */
.eo-nav[data-scrolled="true"] .eo-nav__in{background:rgba(255,255,255,.9);-webkit-backdrop-filter:saturate(135%) blur(12px);backdrop-filter:saturate(135%) blur(12px);border-color:rgba(36,56,79,.14);box-shadow:0 1px 2px rgba(12,23,36,.05),0 12px 28px -20px rgba(12,23,36,.4)}
/* nav, hero and every section share one outer content edge */
.eo-nav > .eo-std,
.eo-hero > .eo-std,
.eo-section > .eo-std,
.eo-footer > .eo-std{max-width:calc(1500px + var(--eo-gutter) * 2)}
.eo-nav__links{grid-column:2;display:flex;align-items:center;justify-content:center;gap:clamp(14px,2.2vw,38px)}
/* v1.5: logo, links and CTA all sit on the page container from scroll zero. */
.eo-nav__cta{grid-column:3;justify-self:end;min-height:40px;padding:0 18px;font-size:14.5px;transition:opacity .22s,transform .22s,visibility .22s,background .22s,border-color .22s,color .22s}
/* v1.6: restrained outlined CTA over the open hero; cobalt once frosted. */
.eo-nav[data-scrolled="false"] .eo-nav__cta{background:rgba(255,255,255,.18);color:var(--eo-navy);border-color:rgba(36,56,79,.36);box-shadow:none}
.eo-nav[data-scrolled="false"] .eo-nav__cta:hover{background:rgba(255,255,255,.46);border-color:rgba(36,56,79,.48);color:var(--eo-navy)}
.eo-nav__link{display:inline-flex;align-items:center;min-height:40px;padding:0 2px;border-radius:var(--radius-control);font:400 clamp(14.5px,1vw,15.5px)/1 var(--eo-sans);color:var(--eo-ink);transition:color .16s}
.eo-nav__link:hover{color:var(--eo-navy);background:transparent}
.eo-nav__link[aria-current="true"]{color:var(--eo-cobalt)}
.eo-nav__link--cta{color:var(--eo-cobalt)}
.eo-nav__link--cta:hover{color:var(--eo-cobalt-deep)}
.eo-nav__burger{grid-column:3;justify-self:end;display:none;margin-left:auto;align-items:center;justify-content:center;width:46px;height:46px;font-family:var(--eo-sans);background:transparent;border:1px solid var(--eo-rule-strong);border-radius:var(--radius-control);cursor:pointer}
.eo-nav__burger u{display:block;width:18px;height:1px;background:var(--eo-navy);box-shadow:0 -5px 0 var(--eo-navy),0 5px 0 var(--eo-navy)}
.eo-nav__panel{display:none;border-top:1px solid var(--eo-rule);background:#fff}
.eo-nav[data-menu="open"] .eo-nav__panel{display:block}
.eo-nav[data-menu="open"]{background:#fff;border-bottom-color:var(--eo-rule)}
.eo-nav__panel ul{display:grid;gap:2px;padding-block:14px 20px}
.eo-nav__panel a{display:flex;align-items:center;min-height:52px;font:400 17px/1 var(--eo-sans);color:var(--eo-navy);border-bottom:1px solid var(--eo-rule)}
.eo-nav__panel .eo-btn{margin-top:16px;width:100%}
@media (max-width:1000px){
  .eo-nav__links{display:none}
  .eo-nav__cta{display:none}
  .eo-nav__burger{display:inline-flex}
}

/* ---------- hero ---------- */
/* v1.3: no clip — the photograph runs up behind the transparent nav band. */
.eo-hero{position:relative;background:var(--eo-white)}
/* v1.1: copy column widened so the three authored lines hold at the top of the clamp */
/* v1.6: hero proportions calibrated to the approved reference */
.eo-hero__grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);align-items:center;gap:clamp(24px,3vw,56px);min-height:clamp(680px,78vh,820px)}
.eo-hero__copy{position:relative;z-index:2;max-width:640px;padding-block:clamp(62px,7vw,92px)}
.eo-hero__h1{margin-top:22px;display:grid;gap:0;max-width:640px}
/* v1.2 hero typography: Archivo 400, overrides .eo-display by specificity */
.eo-display.eo-hero__h1{
  font-family:var(--eo-display);
  font-weight:400;
  font-size:clamp(52px,4.2vw,68px);
  line-height:1.07;
  letter-spacing:-0.025em;
}
.eo-hero__body{margin-top:26px;max-width:690px}
.eo-hero__actions{margin-top:34px}
/* v1.5 hero photography: the photograph is the hero's own background layer,
   full width, running up behind the unboxed nav and dissolving to white at the
   bottom. Two white gradients only — no opacity fade, no blur, no wash. */
.eo-hero__visual{position:absolute;top:calc((var(--eo-nav-h) + 10px) * -1);bottom:0;left:0;right:0;z-index:0;margin:0;overflow:hidden;pointer-events:none}
.eo-hero__img{position:absolute;inset:0;width:100%;max-width:none;height:100%;object-fit:cover;object-position:center 33%;transform:none}
/* horizontal reading gradient: strongest over the copy, thinnest over the wing */
.eo-hero__fade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,.82) 0%,rgba(255,255,255,.76) 34%,rgba(255,255,255,.48) 58%,rgba(255,255,255,.18) 82%,rgba(255,255,255,.12) 100%)}
/* bottom transition: resolves the photograph completely into the white
   integration section, so the two read as one continuous surface */
.eo-hero__dissolve{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 70%,rgba(255,255,255,.16) 80%,rgba(255,255,255,.58) 91%,#ffffff 100%)}
@media (max-width:1000px){
  /* menu-button range: keep the icon legible where it sits over the photograph */
  .eo-nav__burger{background:rgba(255,255,255,.72)}
  .eo-nav[data-scrolled="true"] .eo-nav__burger{background:transparent}
}
/* tablet: same background treatment, more white behind the reading column */
@media (max-width:1100px){
  .eo-hero__fade{background:linear-gradient(90deg,rgba(255,255,255,.93) 0%,rgba(255,255,255,.87) 36%,rgba(255,255,255,.6) 62%,rgba(255,255,255,.28) 86%,rgba(255,255,255,.18) 100%)}
}
/* mobile: the photograph stays behind the hero — never a separate image card */
@media (max-width:900px){
  .eo-hero__grid{grid-template-columns:minmax(0,1fr);min-height:clamp(500px,72vh,620px);gap:0}
  .eo-hero__copy{position:relative;z-index:2;padding-block:clamp(40px,8vw,64px) clamp(56px,11vw,88px);max-width:none}
  .eo-hero__img{object-position:64% 36%}
  .eo-hero__fade{background:linear-gradient(180deg,rgba(255,255,255,.94) 0%,rgba(255,255,255,.9) 42%,rgba(255,255,255,.68) 68%,rgba(255,255,255,.42) 100%)}
  .eo-hero__dissolve{background:linear-gradient(180deg,rgba(255,255,255,0) 58%,rgba(255,255,255,.34) 80%,#ffffff 100%)}
}
/* v1.6: the photographic dissolve carries the handoff — the integration
   section starts just after it, with no rule and no white gap. */
#ecosystem{padding-top:clamp(18px,2vw,30px);padding-bottom:clamp(44px,5vw,72px)}
/* v1.6: the heading is now a quiet transition line straight into the logo bar */
.eo-eco-line{font:500 12px/1.5 var(--eo-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--eo-secondary);max-width:900px;text-align:left}
@media (max-width:640px){ .eo-eco-line{font-size:11px;letter-spacing:.12em} }
/* v1.6: narrower edge mask on the scroller — the rows read almost to the
   container edges instead of caving in. Component CSS is untouched; only its
   own fade variable is set from the page. */
.eo-logo-flow{--eo-logo-fade:3.5%}
@media (max-width:700px){ .eo-logo-flow{--eo-logo-fade:5%} }
/* v1.6: the scroller sits in a light bordered frame, with the mask clipped to
   its inner edge so the fade reads as a soft entry, not a caving-in wash. */
.eo-logo-flow{padding:clamp(14px,1.4vw,20px) 0;border:1px solid var(--eo-rule);border-radius:var(--radius-surface);background:var(--eo-white)}
.eo-logo-flow__viewport{border-radius:calc(var(--radius-surface) - 6px)}

/* v1.7: development slots removed — the capability gallery now ships. */
/* v1.4: the scroller placeholder and its CSS are gone — the shipped
   .eo-logo-flow component now lives in the ecosystem section. */

/* ---------- transformation ---------- */
.eo-turn{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(26px,3vw,40px);max-width:1000px}
.eo-turn__rule{width:64px;height:2px;background:var(--eo-steel)}
.eo-turn__body{max-width:720px}

/* v1.8: the two inline Bigger Moves cards were replaced by the EO Bigger Moves
   v1.1.1 · Merger Clarity component; their exclusive rules (.eo-moves, .eo-move*)
   were removed with them. Shared classes are untouched. */

/* v1.8 Foundation integration overrides — outer frame only.
   The component's intro headline carries an inline font-weight:600; this is the one
   homepage-scoped override that brings it back to the 400 used by every other major
   marketing statement. Scoped to the intro so no heading inside the stage, the
   Gallery or Bigger Moves is touched. */
#foundation .eof-intro h2{font-weight:400 !important}
/* v1.9: the component's sticky frame reserves a full viewport height, which leaves a
   tall void under the stage — most visible where the runway releases into the Gallery.
   Host-scoped: let the frame fit its own content, capped at the height it had. Nothing
   inside the stage changes. */
#foundation .eof-sticky{height:auto !important;max-height:calc(100vh - var(--eof-sticky-top, 0px)) !important}

/* The static Foundation chapter list and its closing block were replaced by
   the EO Foundation Connected Chapters v1.8 component; their exclusive rules
   (.eo-chapters, .eo-chapter*, .eo-close, .eo-chain) were removed with them. */

/* ---------- start with EO ---------- */
.eo-entries{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,1.6vw,22px);margin-top:clamp(38px,4vw,58px)}
@media (max-width:900px){ .eo-entries{grid-template-columns:minmax(0,1fr)} }
.eo-entry{display:grid;gap:12px;align-content:start;padding:clamp(22px,2.2vw,30px);background:var(--eo-white);border:1px solid var(--eo-rule);border-radius:var(--radius-card);box-shadow:var(--eo-contact-sh)}
.eo-entry__idx{font:500 9.5px/1 var(--eo-mono);letter-spacing:.2em;color:var(--eo-muted)}
.eo-entry__title{font-family:var(--eo-sans);font-weight:500;font-size:clamp(19px,1.5vw,22px);line-height:1.25;letter-spacing:-.012em;color:var(--eo-navy)}
.eo-caption{margin-top:clamp(26px,3vw,40px);max-width:900px;padding-top:22px;border-top:1px solid var(--eo-rule);font-size:15.5px;line-height:1.65;color:var(--eo-secondary)}

/* ---------- dark bands ---------- */
.eo-dark{background:linear-gradient(180deg,#1b2d43 0%,var(--eo-navy) 100%);color:var(--eo-on-navy)}
.eo-dark .eo-eyebrow{color:var(--eo-on-navy-2)}
.eo-dark .eo-h2,.eo-dark .eo-display{color:#fff}
/* v1.12: the cobalt spotlight, previously only on consulting and about, now
   belongs to every dark band. Drop one <span class="eo-cta__glow" aria-hidden>
   in as the section's first child; the section clips it and lifts its own
   content above it. Sections without the span are unaffected. */
.eo-section.eo-dark{position:relative;overflow:hidden}
.eo-section.eo-dark > .eo-std{position:relative;z-index:1}
.eo-cta__glow{position:absolute;top:-320px;left:-180px;width:820px;height:820px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(31,111,235,.22) 0%,rgba(31,111,235,.06) 46%,rgba(12,23,36,0) 72%)}
.eo-delivered{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(22px,2.6vw,34px);max-width:1000px}
.eo-delivered__body{font-family:var(--eo-display);font-weight:400;font-size:clamp(19px,1.9vw,27px);line-height:1.42;letter-spacing:-.008em;color:#eaf0f7;max-width:880px}
.eo-cta{display:grid;gap:clamp(26px,3vw,38px);justify-items:start;max-width:900px}
.eo-cta__h{font-family:var(--eo-display);font-weight:400;font-size:clamp(31px,3.9vw,58px);line-height:1.08;letter-spacing:-.022em;color:#fff}

/* ---------- consulting ---------- */
.eo-consult{display:grid;gap:16px;max-width:760px}
.eo-consult__lock{padding-left:18px;border-left:2px solid var(--eo-rule-strong);font-size:16px;line-height:1.6;color:var(--eo-ink)}

/* ---------- footer ---------- */
.eo-footer{background:#16253a;color:#c6d2e0}
.eo-footer__top{display:grid;grid-template-columns:minmax(260px,1.1fr) repeat(3,minmax(0,.72fr));gap:clamp(26px,3vw,44px);padding-block:clamp(52px,6vw,76px)}
@media (max-width:900px){ .eo-footer__top{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:560px){ .eo-footer__top{grid-template-columns:minmax(0,1fr)} }
.eo-footer__desc{margin-top:18px;max-width:320px;font-size:15px;line-height:1.6;color:#9fadbe}
.eo-footer h4{font:500 10px/1 var(--eo-mono);letter-spacing:.2em;text-transform:uppercase;color:#8ba2bf;margin-bottom:16px}
.eo-footer li{margin-bottom:2px}
.eo-footer li a{display:inline-flex;align-items:center;min-height:34px;font-size:15px;color:#c6d2e0}
.eo-footer li a:hover{color:#fff}
/* v1.12: the base row was IBM Plex Mono, the only mono in the footer — it now
   uses Archivo like the footer links above it, one step down in size. */
.eo-footer__base{display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center;justify-content:space-between;padding-block:22px 30px;border-top:1px solid rgba(255,255,255,.12);font:400 13.5px/1.5 var(--eo-sans);letter-spacing:0;color:#8ba2bf}
.eo-footer__base ul{display:flex;flex-wrap:wrap;gap:6px 22px}
.eo-footer__base a{color:#8ba2bf}
.eo-footer__base a:hover{color:#fff}

/* ---------- contact · talk to the team ---------- */
.eo-talk{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:clamp(30px,4.4vw,72px);align-items:start;max-width:1080px}
.eo-talk__card{display:grid;gap:14px;align-content:start;padding:clamp(26px,2.6vw,36px);
  border-top:3px solid var(--eo-cobalt);border-radius:0 0 var(--radius-card) var(--radius-card);
  background:linear-gradient(180deg,rgba(36,56,79,.62) 0%,rgba(12,23,36,.5) 100%);
  box-shadow:0 1px 2px rgba(12,23,36,.22),0 22px 48px -32px rgba(0,0,0,.7)}
.eo-talk__card-h{font-family:var(--eo-display);font-weight:400;font-size:clamp(26px,2.3vw,33px);line-height:1.1;letter-spacing:-.018em;color:#fff}
.eo-talk__card-body{font-size:16px;line-height:1.62;color:var(--eo-on-navy)}
.eo-talk__main{display:grid;gap:0;justify-items:start;padding-left:clamp(0px,2.2vw,34px);border-left:1px solid rgba(255,255,255,.12)}
.eo-talk__main .eo-cta__h{margin-top:16px;font-size:clamp(31px,3.4vw,50px)}
.eo-talk__lede{margin-top:20px;max-width:600px;font-size:clamp(16.5px,1.2vw,18.5px);line-height:1.62;color:var(--eo-on-navy)}
.eo-talk__main .eo-actions{margin-top:clamp(26px,2.8vw,36px)}
.eo-talk__note{margin-top:18px;max-width:520px;font-size:13.5px;line-height:1.6;color:var(--eo-on-navy-2)}
.eo-talk__aside{margin-top:clamp(26px,2.8vw,36px);padding-top:clamp(22px,2.4vw,28px);max-width:640px;border-top:1px solid rgba(255,255,255,.14);font-size:clamp(15.5px,1.05vw,17px);line-height:1.66;color:var(--eo-on-navy)}
.eo-talk__aside-h{font-family:var(--eo-sans);font-weight:500;font-size:clamp(17px,1.3vw,19px);line-height:1.3;letter-spacing:-.01em;color:#fff}
.eo-talk__aside p{margin-top:10px}
.eo-talk__aside .eo-textlink{margin-top:16px;color:#fff}
.eo-talk__aside .eo-textlink:hover{color:var(--eo-on-navy-2)}
@media (max-width:880px){
  .eo-talk{grid-template-columns:minmax(0,1fr)}
  .eo-talk__main{padding-left:0;border-left:0}
}

/* ---------- cookie choice banner (assets/js/eo-consent.js) ---------- */
.eo-consent{position:fixed;left:0;right:0;bottom:0;z-index:90;padding:0 var(--eo-gutter) clamp(16px,1.8vw,24px);pointer-events:none}
.eo-consent__in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:clamp(16px,2vw,32px);
  max-width:calc(1280px + var(--eo-gutter) * 2);margin:0 auto;pointer-events:auto;
  padding:clamp(18px,1.9vw,26px) clamp(20px,2.1vw,30px);
  border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-surface);
  background:linear-gradient(180deg,#16273c 0%,var(--eo-navy) 100%);
  box-shadow:0 2px 6px rgba(12,23,36,.24),0 26px 60px -30px rgba(12,23,36,.9);
  opacity:0;transform:translateY(14px);transition:opacity .28s ease,transform .28s cubic-bezier(.22,.61,.36,1)}
.eo-consent[data-open="false"] .eo-consent__in{visibility:hidden}
.eo-consent[data-open="true"] .eo-consent__in{opacity:1;transform:none;visibility:visible}
.eo-consent__copy{max-width:720px}
.eo-consent__h{font-family:var(--eo-sans);font-weight:500;font-size:16px;line-height:1.3;letter-spacing:-.008em;color:#fff}
.eo-consent__body{margin-top:8px;font-size:14.5px;line-height:1.6;color:var(--eo-on-navy)}
.eo-consent__body a{color:var(--eo-on-navy-2);text-decoration:underline;text-underline-offset:3px}
.eo-consent__body a:hover{color:#fff}
.eo-consent__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.eo-consent__actions .eo-btn{min-height:44px;padding:0 22px;font-size:14.5px}
@media (max-width:720px){
  .eo-consent{padding-inline:var(--eo-gutter)}
  .eo-consent__in{flex-direction:column;align-items:stretch}
  .eo-consent__actions .eo-btn{flex:1 1 auto;justify-content:center}
}
@media (prefers-reduced-motion:reduce){
  .eo-consent__in{transition:none;transform:none}
}
/* ---------- reveal (JS-gated, off for reduced motion) ---------- */html.eo-js[data-eo-reveal="true"] .eo-reveal{opacity:0;transform:translateY(12px)}
html.eo-js[data-eo-reveal="true"] .eo-reveal.is-in{opacity:1;transform:none;transition:opacity .6s ease,transform .6s cubic-bezier(.22,.61,.36,1)}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  html.eo-js[data-eo-reveal="true"] .eo-reveal{opacity:1;transform:none}
  .eo-textlink b{transition:none}
}

/* ---------- skip link + contact list (static-site additions) ---------- */
.eo-skip{position:absolute;left:-9999px;top:0;z-index:99;padding:12px 18px;background:#fff;color:var(--eo-cobalt-deep)}
.eo-skip:focus{left:0}
.eo-contact{display:grid;grid-template-columns:repeat(2,minmax(0,auto));gap:clamp(22px,3vw,56px)}
@media (max-width:560px){ .eo-contact{grid-template-columns:minmax(0,1fr)} }
.eo-contact__item{display:grid;gap:10px}
.eo-contact .eo-label{color:var(--eo-on-navy-2)}
.eo-contact__link{font-family:var(--eo-display);font-weight:400;font-size:clamp(20px,2vw,28px);letter-spacing:-.01em;color:#fff}
.eo-contact__link:hover{color:var(--eo-on-navy-2)}
/* the hero lede sizes were inline on the source page; they belong here */
.eo-hero__body .eo-lede{font-size:clamp(18px,1.2vw,19px);line-height:1.55;max-width:560px}
/* primary nav links: weight matches the authored homepage */
.eo-nav__link{font-weight:500}
