/* ==== 1. reset (Astro src/styles/reset.css) ==== */
/* Base reset + element defaults, ported from OceanWP style.min.css and
   pruned to the rules the rewritten pages actually use (Playwright CSS
   coverage across all routes x 3 viewports). Loads first; theme.css sets
   the site typography/colors on top of these base values. */

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;font:inherit;vertical-align:baseline;font-family:inherit;font-size:100%;font-style:inherit;font-weight:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}html{font-size:62.5%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,main,nav,section{display:block}table{border-collapse:collapse;border-spacing:0}caption,th,td{font-weight:normal;text-align:left}
a img{border:0}img{max-width:100%;height:auto}select{max-width:100%}em{font-style:italic}
html{-ms-overflow-x:hidden;overflow-x:hidden}body{font-family:"Open Sans",sans-serif;font-size:15.4px;line-height:1.8;color:#4a4a4a;overflow-wrap:break-word;word-wrap:break-word}body{background-color:#fff}
dfn,cite,em,i{font-style:italic}
::selection{color:#fff;background:#333;text-shadow:none}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}
[hidden],template{display:none}a{background-color:rgba(0,0,0,0)}
b,strong{font-weight:600}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}
img{border:0}svg:not(:root){overflow:hidden}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}
button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
input{line-height:normal}
textarea{overflow:auto}
table{border-collapse:collapse;border-spacing:0}td,th{padding:0}
#main{position:relative}
figure>img{display:block;margin:0 auto}img{max-width:100%;height:auto;vertical-align:middle}
embed,iframe,object{width:100%;max-width:100%}
table{width:100%;margin-bottom:2.618em}table th,table td{padding:10px;text-align:left;vertical-align:top;border-bottom:1px solid #e9e9e9}table th{text-transform:uppercase}
a{color:#333}
a,a:hover{text-decoration:none;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}
h1,h2,h3,h4,h5,h6{font-weight:600;margin:0 0 20px;color:#333;line-height:1.4}h1{font-size:25.3px}h2{font-size:22px}h3{font-size:19.8px}
p{margin:0 0 20px}
ul,ol{margin:15px 0 15px 20px}
li ul,li ol{margin:0 0 0 25px}
hr{clear:both;height:1px;min-height:0;margin:20px 0;border-top:1px solid #e9e9e9;border-right:0;border-bottom:0;border-left:0}
form input[type=text],form input[type=password],form input[type=email],form input[type=url],form input[type=date],form input[type=month],form input[type=time],form input[type=datetime],form input[type=datetime-local],form input[type=week],form input[type=number],form input[type=search],form input[type=tel],form input[type=color],form select,form textarea{display:inline-block;min-height:40px;width:100%;font-size:15.4px;line-height:1.8;padding:6px 12px;vertical-align:middle;background-color:rgba(0,0,0,0);color:#333;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}form select{padding-top:0 !important;padding-bottom:0 !important}
input[type=text],input[type=password],input[type=email],input[type=url],input[type=search],textarea{-webkit-appearance:none}
form textarea{min-height:150px;line-height:1.5;resize:vertical}
select{width:100%;height:2.25em;min-height:auto;border:1px solid #ddd;background-color:#fff;cursor:pointer;padding:0 15px;margin:0}
form label{margin-bottom:3px}
input[type=button],input[type=reset],input[type=submit],button[type=submit]{display:inline-block;font-family:inherit;background-color:#13aff0;color:#fff;font-size:13.2px;font-weight:600;text-transform:uppercase;margin:0;padding:14px 20px;border:0;cursor:pointer;text-align:center;letter-spacing:.1em;line-height:1;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}
.site-footer{position:relative}

/* ==== 2. fonts (Astro src/styles/fonts.css) ==== */
/* Self-hosted fonts — replaces the WP child-theme @font-face rules and the
   Google Fonts Montserrat request. Family names must match the originals
   exactly; the entire cascade refers to them. */

@font-face {
  font-family: 'HCo Gotham Rounded Light SSm';
  src: url('../fonts/gotham/GothamRndSSm-Light_Web.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'HCo Gotham Rounded Light Italic SSm';
  src: url('../fonts/gotham/GothamRndSSm-LightItalic_Web.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'HCo Gotham Rounded Book SSm';
  src: url('../fonts/gotham/GothamRndSSm-Book_Web.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'HCo Gotham Rounded Book Italic SSm';
  src: url('../fonts/gotham/GothamRndSSm-BookItalic_Web.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'HCo Gotham Rounded Medium SSm';
  src: url('../fonts/gotham/GothamRndSSm-Medium_Web.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'HCo Gotham Rounded Medium Italic SSm';
  src: url('../fonts/gotham/GothamRndSSm-MediumItalic_Web.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'HCo Gotham Rounded Bold SSm';
  src: url('../fonts/gotham/GothamRndSSm-Bold_Web.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'HCo Gotham Rounded Bold Italic SSm';
  src: url('../fonts/gotham/GothamRndSSm-BoldItalic_Web.woff') format('woff');
  font-display: swap;
}

/* Montserrat 300/400/700 (Beaver Builder modules) */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('../fonts/montserrat-300-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: 'Montserrat';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('../fonts/montserrat-300-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: 'Montserrat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/montserrat-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: 'Montserrat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/montserrat-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: 'Montserrat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/montserrat-700-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: 'Montserrat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/montserrat-700-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;
}

/* ==== 3. tokens + primitives (Astro src/styles/theme.css) ==== */
/* Site theme: design tokens, element defaults, and shared primitives.
 *
 * Load order (see Base.astro): reset.css → fonts.css → theme.css. Everything
 * else is per-component scoped <style>. The WordPress/OceanWP customizer and
 * custom-CSS sheets were retired in structure-cleanup Phase D; the handful of
 * rules the rewritten pages still relied on live here.
 *
 * Breakpoints (match the Beaver Builder originals so rewritten pages reflow
 * at the same widths): mobile ≤778px, tablet ≤992px, desktop-large ≥1201px.
 */
:root {
  --font-light: 'HCo Gotham Rounded Light SSm', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-book: 'HCo Gotham Rounded Book SSm', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-medium: 'HCo Gotham Rounded Medium SSm', 'Helvetica Neue', Helvetica, Arial, sans-serif;

  --color-blue: rgb(0, 173, 239); /* Allogene brand blue */
  --color-teal: #0e686f; /* links, focus rings, nav */
  --color-heading-gray: #626469;

  --content-max: 1100px; /* fixed-width row content */
}

/* ---- Element defaults (formerly the OceanWP customizer output) ---- */
body {
  font-family: var(--font-book);
  font-size: 1.5em; /* html is 62.5% → 15px */
  line-height: 1.8;
  color: var(--color-heading-gray);
}
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-medium);
  font-weight: 500;
  line-height: 1.4;
}
h1 {
  font-size: 60.5px;
  line-height: 1.2;
  letter-spacing: 5.6px;
  color: #fff;
}
h2 {
  font-size: 33px;
  line-height: 1.2;
  letter-spacing: 2.4px;
  color: #fff;
}
h3 { font-size: 19.8px; }
h4 { font-size: 18.7px; }
h5 { font-size: 15.4px; }
h6 { font-size: 16.5px; }

/* Buttons carry a 1px white border (theme default; components override). */
button,
button[type="submit"] {
  border: 1px solid #fff;
}

/* Prose links are teal; components add their own underline treatment. */
p a {
  color: var(--color-teal);
}

/* In-page anchor targets clear the sticky header: pull the target up by
   the header height so the linked heading isn't hidden beneath it. */
:target::before {
  content: "";
  display: block;
  height: 100px;
  margin: -100px 0 0;
}

/* ---- Shared primitives ---- */

/* visually hidden, available to assistive tech */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* skip link: off-screen until focused */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100000;
}
.skip-link:focus {
  left: 5px;
  top: 5px;
  width: auto;
  height: auto;
  padding: 15px 23px 14px;
  background: #ddd;
  color: #444;
  text-decoration: none;
}

/* Video lightbox dialog. The markup is built at runtime by
   src/scripts/widgets.js (openLightbox), so these rules must stay global. */
.allo-lightbox-overlay {
  position: fixed;
  inset: 0;
  z-index: 100000;
  background: rgba(0, 0, 0, 0.85);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px;
}
.allo-lightbox-content {
  width: min(1080px, 100%);
}
.allo-lightbox-ratio {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
}
.allo-lightbox-content iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.allo-lightbox-close {
  position: absolute;
  top: 16px;
  right: 20px;
  font-size: 39.6px;
  line-height: 1;
  color: #fff;
  background: none;
  border: none;
  cursor: pointer;
  z-index: 1;
}
.allo-lightbox-close:hover {
  color: #75b6bc;
}

/* ==== 3b. WordPress neutralisers ==== */
/* Core adds padding/margins to a few blocks the ported CSS does not expect. */
.wp-block-image, figure.wp-block-image, .wp-block-table { margin: 0; }
.wp-block-image img { height: auto; }
.wp-block-group.plain-page { max-width: var(--content-max); margin: 0 auto; padding: 60px 20px; }
.plain-page h1 { color: var(--color-teal); font-size: 33px; letter-spacing: 2.4px; }

html { scroll-padding-top: 110px; } /* sticky header is 109px; keeps focused/targeted elements visible */

/* ==== 4. top bar (Astro header/TopBar.astro) ==== */
  .topbar {
    background: #1f757b;
    border-bottom: 1px solid #1f757b;
    position: relative;
    z-index: 101;
  }
  .topbar-inner {
    width: 90%;
    margin: 0 auto;
    padding: 8px 0;
  }
  .topbar-menu {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start; /* live: inline line boxes — text/social items sit 1px below the glyph items */
    justify-content: flex-end;
    gap: 15px;
    /* matches the original inline line-box (11px text on 1.8 line-height plus
       the baseline-aligned icon), so topbar height == 37.8/61.8 and pages
       below don't shift vertically */
    min-height: 20.8px;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  .topbar-menu > li {
    display: flex;
    align-items: center;
    margin-top: 1px; /* live: text and LinkedIn/X items at y=9 (topbar padding 8px + 1px) */
  }
  .topbar-menu > li:has(> .tb-glyph) {
    margin-top: 0; /* live: envelope/print anchors (20.8px tall) start at y=8 */
  }
  .topbar-menu a,
  .tb-action {
    color: #fff;
    font-family: var(--font-medium, 'HCo Gotham Rounded Medium SSm');
    font-size: 11px; /* live: 11px (Astro 12.1px) */
    letter-spacing: 0.6px;
    line-height: 19.8px;
    text-transform: uppercase;
    text-decoration: none;
  }
  .tb-action {
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
  }
  .tb-social,
  .tb-glyph {
    display: inline-flex;
    align-items: center;
  }
  .tb-social {
    align-items: flex-start;
    height: 19.8px; /* live: 19.8px anchor around the 18px circle */
  }
  .tb-glyph {
    align-items: flex-start;
    height: 20.8px; /* live: 20.8px anchor, 16px glyph at its top */
    padding: 0;
    border: 0;
    background: none;
    color: #fff;
    cursor: pointer;
  }
  /* LinkedIn / X: white circle, teal glyph */
  .alg-tb-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    padding: 4px;
    border-radius: 16px;
    background: #fff;
    color: #1f757b;
    box-sizing: border-box;
    font-size: 11px; /* live: 11px (Astro 12.1px) */
  }
  .alg-tb-ifs {
    display: inline-flex;
    justify-content: center;
    width: 21.61px; /* live: 21.61px */
    font-size: 16px; /* live: 16px (Astro 17.6px) */
    color: #fff;
  }
  /* live: #bd242a on #1f757b ≈ 1.1:1 — WCAG 1.4.3; see docs/a11y-exceptions.md A3 */
  .topbar-menu a:hover,
  .topbar-menu a:focus-visible,
  .tb-action:hover,
  .tb-action:focus-visible {
    color: #fff;
    text-decoration: underline;
  }
  .tb-glyph:hover .alg-tb-ifs,
  .tb-glyph:focus-visible .alg-tb-ifs {
    color: #fff;
  }
  .topbar-menu a:focus-visible,
  .tb-action:focus-visible,
  .tb-glyph:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
  }

  /* ≤768 the original topbar widens to 98% and left-aligns (content stays
     right-aligned); ≤767 its padding grows to 20px */
  @media only screen and (max-width: 768px) {
    .topbar-inner {
      width: 98%;
      margin: 0;
    }
  }
  @media only screen and (max-width: 767px) {
    .topbar-inner {
      padding: 20px 0;
    }
    .topbar-menu {
      gap: 10px; /* live: 10px at 375 (Astro 15px) */
      /* live: text-align:center with a 10px margin-right on every <li>, so the row is
         centred including a trailing 10px (375: last glyph ends 32px from the edge;
         390: row starts at x=21.6) */
      justify-content: center;
      padding-right: 10px;
    }
  }

/* ==== 5. header + nav + mobile menu (Astro header/Header.astro) ==== */
  .site-header {
    position: relative;
    z-index: 100;
    background: #fff;
  }
  /* shadow only once shell.js pins the header (live: .is-sticky #site-header) */
  .site-header.is-stuck {
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  }
  .site-header .header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 90%;
    height: 109px;
    margin: 0 auto;
  }
  .site-header .logo {
    display: inline-flex;
    line-height: 0;
  }
  .site-header .logo img {
    width: 200px;
    height: auto;
  }

  /* ---- desktop nav ---- */
  .site-header .main-nav {
    /* matches the original #site-navigation-wrap negative right margin so the
       menu items land on the same x-positions as the transplanted nav */
    margin-right: -15px;
  }
  .site-header .main-nav .menu {
    display: flex;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  .site-header .menu-item {
    position: relative;
  }
  .site-header .main-nav > .menu > .menu-item > .menu-link {
    display: block;
    padding: 0 12px;
    font-size: 15px; /* live: 15px (Astro 18px) */
    line-height: 109px;
  }
  .site-header .menu-link {
    color: #0e686f;
    font-family: var(--font-medium, 'HCo Gotham Rounded Medium SSm');
    font-size: 15px; /* live: 15px (Astro 16.5px) */
    letter-spacing: 0.6px;
    text-decoration: none;
  }
  .site-header .main-nav > .menu > .menu-item > .menu-link:hover,
  .site-header .main-nav > .menu > .menu-item > .menu-link:focus-visible,
  .site-header .main-nav > .menu > .menu-item > .menu-link.is-current {
    color: #bd242a;
  }

  /* flyout dropdowns — revealed on hover and keyboard focus-within */
  .site-header .submenu {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 9999;
    display: none;
    min-width: 240px;
    margin: 0;
    padding: 0;
    list-style: none;
    background: #fff;
    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1);
  }
  .site-header .has-children:hover > .submenu,
  .site-header .has-children:focus-within > .submenu {
    display: block;
  }
  /* Esc sets data-flyout-closed to dismiss while focus stays in the item
     (WCAG 1.4.13); cleared on focusout by shell.js */
  .site-header .has-children[data-flyout-closed]:hover > .submenu,
  .site-header .has-children[data-flyout-closed]:focus-within > .submenu {
    display: none;
  }
  .site-header .submenu .menu-link {
    display: block;
    padding: 12px 15px;
    line-height: 18px;
    white-space: nowrap;
  }
  .site-header .submenu .menu-link:hover,
  .site-header .submenu .menu-link:focus-visible {
    color: #fff;
    background: #0e686f;
  }

  /* INVESTORS mega: full width (inset 20px from header edges), 6 columns */
  .site-header .has-mega {
    position: static;
  }
  .site-header .submenu.mega {
    left: 20px;
    right: 20px;
    display: none;
    padding: 0 0 10px;
  }
  .site-header .has-mega:hover > .submenu.mega,
  .site-header .has-mega:focus-within > .submenu.mega {
    display: flex;
  }
  .site-header .has-mega[data-flyout-closed]:hover > .submenu.mega,
  .site-header .has-mega[data-flyout-closed]:focus-within > .submenu.mega {
    display: none;
  }
  .site-header .mega-col {
    flex: 1 1 0;
    min-width: 0;
  }
  .site-header .mega-heading {
    display: block;
    padding: 10px 5px;
    color: #0e686f;
    font-family: var(--font-medium, 'HCo Gotham Rounded Medium SSm');
    font-size: 13px; /* live: 13px (Astro 14.3px) */
    font-weight: 600;
    letter-spacing: 1px;
    text-decoration: none;
  }
  .site-header a.mega-heading:hover {
    color: #0e686f;
  }
  .site-header a.mega-heading:focus-visible {
    color: #0e686f;
  }
  .site-header .mega-list {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .site-header .menu-link:focus-visible,
  .site-header .mega-heading:focus-visible {
    outline: 2px solid #0e686f;
    outline-offset: -2px;
  }

  /* ---- mobile ---- */
  .site-header .mobile-toggle {
    display: none;
    padding: 0;
    border: 0;
    background: none;
    color: #0e686f; /* live: rgb(14,104,111) (Astro #bd242a) */
    font-size: 15px; /* live: 15px (Astro 19.8px) */
    line-height: 1;
    height: 18px; /* live: 18px anchor, glyph 1px below its top */
    padding-top: 1px;
    margin-top: -1.5px; /* live: anchor top 1.5px above the centred position */
    cursor: pointer;
  }
  .site-header .mobile-toggle:focus-visible {
    outline: 2px solid #0e686f;
    outline-offset: 4px;
  }
  .site-header .mobile-menu {
    display: none;
    background: #fff;
  }
  .site-header .mobile-menu:not([hidden]) {
    display: block;
  }
  .site-header .mobile-list {
    margin: 0;
    padding: 0;
    list-style: none;
  }
  .site-header .mobile-list > li > a {
    display: block;
    padding: 12px 40px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.035);
    color: #333;
    font-family: var(--font-book, 'HCo Gotham Rounded Book SSm');
    font-size: 15px; /* live: 15px (Astro 16.5px) */
    text-decoration: none;
  }
  .site-header .mobile-list > li > a.is-current {
    color: #bd242a;
  }
  .site-header .mobile-list > li > a:hover,
  .site-header .mobile-list > li > a:focus-visible {
    color: #0e686f;
  }
  .site-header .mobile-search {
    padding: 20px 40px;
  }
  .site-header .mobile-search form {
    position: relative;
  }
  .site-header .mobile-search input {
    width: 100%;
    height: 40px;
    padding: 6px 45px 6px 12px;
    border: 1px solid #ddd;
    box-sizing: border-box;
    font-size: 14px; /* live: 14px (Astro 16.5px) */
  }
  .site-header .search-submit {
    position: absolute;
    top: 0;
    right: 0;
    height: 40px;
    width: 40px;
    border: 0;
    background: none;
    color: #333;
    cursor: pointer;
  }
  .site-header .search-submit:focus-visible,
  .site-header .mobile-search input:focus-visible {
    outline: 2px solid #0e686f;
    outline-offset: -2px;
  }

  @media only screen and (max-width: 1030px) {
    .site-header .main-nav {
      display: none;
    }
    .site-header .mobile-toggle {
      display: block;
    }
  }

/* ==== 6. footer (Astro footer/Footer.astro) ==== */
  .site-footer {
    color: #0e686f;
    font-size: 15px; /* live: 15px (Astro 15.4px) */
  }
  .site-footer a {
    color: #0e686f;
    text-decoration: none;
  }
  .site-footer .footer-main {
    background: #fff;
    padding: 40px 20px;
    border-bottom: 1px solid currentColor;
  }
  .site-footer .cols {
    max-width: 1640px;
    margin: 0 auto;
    display: flex;
    justify-content: center;
  }
  .site-footer .connect {
    width: 20%;
    display: flex;
    flex-direction: column;
  }
  .site-footer .logo {
    display: block;
    width: 240px;
    height: auto;
    margin: 25px 20px 20px;
  }
  .site-footer .connect-h {
    margin: 20px 20px 4px 30px;
    font-family: var(--font-medium);
    font-size: 18px; /* live: 18px (Astro 19.8px) */
    font-weight: 500;
    line-height: 1.4;
    text-align: left;
    color: #0e686f;
  }
  .site-footer .connect-p {
    margin: 0 20px 20px 30px;
    font-size: 14px; /* live: 14px (Astro 15.4px) */
  }
  .site-footer .connect-links {
    display: flex;
    align-items: flex-start;
    /* nested BB col-group was flex-centered; cols totalled 99.5% */
    justify-content: center;
  }
  .site-footer .connect-links .viewmap {
    width: calc(79.5% - 30px); /* live: 192.6px box at 1440 (79.5% column, 30px padding on the wrapper) */
    margin: 0 0 20px 30px;
    font-size: 15px; /* live: 15px (Astro 16.5px) */
  }
  .site-footer .soc {
    font-size: 15px; /* live: 15px (Astro 16.5px) */
    line-height: 27px;
    display: inline-block;
    margin-top: 3px;
  }
  .site-footer .connect-links .soc-li,
  .site-footer .connect-links .soc-x {
    width: 10%;
    margin-top: 2px;
    text-align: left;
  }

  .site-footer .menu-col {
    width: max-content;
    min-width: 175px;
  }
  .site-footer .fmenu,
  .site-footer .fmenu-sub {
    list-style: none;
    padding: 0;
  }
  .site-footer .fmenu {
    /* widget ul margin 15px 0 15px 20px + module content margin 0 10px 20px */
    margin: 15px 10px 35px 30px;
    font-family: var(--font-book);
    line-height: 19.5px;
  }
  .site-footer .fmenu-sub {
    margin: 0;
  }
  .site-footer .fmenu-top {
    padding: 15px 0 4px;
  }
  .site-footer .fmenu-top > a,
  .site-footer .fmenu-top-blank {
    font-size: 18px; /* live: 18px (Astro 19.8px) */
    font-weight: 600;
    line-height: 19.5px;
  }
  /* live: 4th column heading is white-on-white; we hide it accessibly */
  .site-footer .fmenu-top-blank {
    display: inline-block;
    visibility: hidden;
  }
  .site-footer .fmenu-sub li {
    /* 4.5px brings link pitch to 24px center-to-center (2.5.8 spacing exception) */
    padding: 0 0 4.5px;
  }
  .site-footer .fmenu-sub li:first-child {
    padding-top: 10px;
  }
  .site-footer .fmenu-sub a {
    font-size: 14px; /* live: 14px (Astro 15.4px) */
    font-weight: 500;
    line-height: 19.5px;
  }
  .site-footer .fmenu a[aria-current='page'] {
    color: #bd242a;
  }

  /* stacked (≤992px) main variant */
  .site-footer .footer-main--stacked {
    display: none;
    border-bottom: none;
  }
  .site-footer .connect--stacked {
    width: fit-content;
    max-width: 400px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    text-align: center;
  }
  .site-footer .connect--stacked .connect-p {
    margin: 0 0 20px 30px;
  }
  /* inline img centered by text-align, like the original fl-photo — a flex
     item at fractional x paints the logo 1px off the baseline screenshots */
  .site-footer .logo-wrap {
    margin: 25px 0 20px;
    text-align: center;
  }
  .site-footer .connect--stacked .logo {
    display: inline-block;
    width: 243px;
    margin: 0;
  }
  .site-footer .connect--stacked .connect-h {
    margin: 20px 0 4px 30px;
    text-align: center;
  }
  .site-footer .soc-row {
    display: flex;
    margin: 1px 0 6px;
  }
  .site-footer .soc-row .soc {
    margin: 3px auto 0;
  }
  /* live: the X glyph sits level with the LinkedIn glyph (FA brand glyph metrics put ours 1px low) and,
     stacked, the two icons are 2px further apart than the auto-margin layout gives */
  .site-footer .soc-x i {
    position: relative;
    top: -1px;
  }
  .site-footer .soc-row .soc-li {
    position: relative;
    left: -1px;
  }
  .site-footer .soc-row .soc-x {
    position: relative;
    left: 1px;
  }
  .site-footer .menu-col--stacked {
    width: auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  .site-footer .menu-col--stacked .fmenu {
    margin: 15px 10px 15px 30px;
  }

  /* bottom bars */
  .site-footer .bottom-bar {
    display: flex;
    align-items: center;
    min-height: 50px;
    background: #fff;
    border-top: 1px solid #0e686f;
    border-bottom: 1px solid #0e686f;
    max-width: 1440px;
    margin: 0 auto;
    font-size: 12px; /* live: 12px (Astro 13.2px) */
  }
  .site-footer .bb-item {
    width: 25%;
  }
  .site-footer .bb-item p {
    margin: 20px;
    text-align: center;
  }
  .site-footer .bb-copy p {
    text-align: left;
  }
  .site-footer .bottom-bar--narrow {
    display: none;
  }

  @media (max-width: 992px) {
    .site-footer .footer-main--desktop {
      display: none;
    }
    .site-footer .footer-main--stacked {
      display: block;
    }
  }
  @media (max-width: 778px) {
    .site-footer .logo-wrap {
      margin-top: 20px;
    }
  }
  @media (max-width: 768px) {
    .site-footer .footer-main--stacked {
      padding-left: 0;
      padding-right: 0;
    }
    .site-footer .connect--stacked {
      padding: 5px 20px;
    }
    .site-footer .connect--stacked .connect-h {
      margin: 20px 0 4px 20px;
    }
    .site-footer .connect--stacked .connect-p {
      margin: 0 0 20px 20px;
    }
    .site-footer .menu-col--stacked {
      padding: 5px 20px;
    }
    .site-footer .menu-col--stacked .fmenu {
      margin: 0;
      text-align: center;
    }
  }
  @media (max-width: 778px) {
    .site-footer .bottom-bar--wide {
      display: none;
    }
    .site-footer .bottom-bar--narrow {
      display: block;
    }
    .site-footer .bb-group {
      display: flex;
    }
    .site-footer .bb-group .bb-item {
      width: auto;
      margin: 0 auto;
      padding: 5px 20px;
    }
    .site-footer .bb-group .bb-item p {
      margin: 2px 0 0;
    }
  }

/* ==== 7. share dialog (Astro footer/ShareModal.astro) ==== */
  .share-modal {
    position: fixed;
    inset: 0;
    z-index: 1000002;
    overflow-y: auto;
    display: flex;
  }
  .share-modal[hidden] {
    display: none;
  }
  .share-overlay {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.52);
  }
  .share-dialog {
    position: relative;
    margin: auto;
    width: 498px;
    max-width: 90%;
    background: #fff;
    border-radius: 2px;
    z-index: 1;
  }
  .share-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 25px;
    height: 25px;
    padding: 0;
    border: 1px solid #fff;
    border-radius: 100px;
    background: none;
    cursor: pointer;
    z-index: 5;
  }
  .bar-wrap {
    display: block;
    position: relative;
    width: 100%;
    height: 100%;
  }
  .bar-wrap span {
    position: absolute;
    width: 100%;
    height: 2px;
    top: 49.5%;
    left: 0;
    margin-top: -1px;
    background: #494949;
  }
  .bar-1 {
    transform: rotate(225deg);
  }
  .bar-2 {
    transform: rotate(-225deg);
  }
  .share-body {
    padding: 20px;
  }
  .share-sentinel {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
  }

  /* sharingbuttons.io styles, moved from site.css */
  .resp-sharing-button__link,
  .resp-sharing-button__icon {
    display: inline-block;
  }
  .resp-sharing-button__link {
    text-decoration: none;
    color: #fff;
    margin: 0.5em;
  }
  .resp-sharing-button {
    display: inline-block;
    border-radius: 5px;
    transition: 25ms ease-out;
    padding: 0.5em 0.75em;
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  }
  .resp-sharing-button__icon svg {
    width: 1em;
    height: 1em;
    margin-right: 0.4em;
    vertical-align: middle;
  }
  .resp-sharing-button__icon--solid {
    fill: #fff;
    stroke: none;
  }
  .resp-sharing-button--twitter { background-color: #55acee; }
  .resp-sharing-button--twitter:hover { background-color: #2795e9; }
  .resp-sharing-button--facebook { background-color: #3b5998; }
  .resp-sharing-button--facebook:hover { background-color: #2d4373; }
  .resp-sharing-button--tumblr { background-color: #35465c; }
  .resp-sharing-button--tumblr:hover { background-color: #222d3c; }
  .resp-sharing-button--reddit { background-color: #5f99cf; }
  .resp-sharing-button--reddit:hover { background-color: #3a80c1; }
  .resp-sharing-button--linkedin { background-color: #0077b5; }
  .resp-sharing-button--linkedin:hover { background-color: #046293; }
  .resp-sharing-button--email { background-color: #777; }
  .resp-sharing-button--email:hover { background-color: #5e5e5e; }
  .resp-sharing-button--whatsapp { background-color: #25d366; }
  .resp-sharing-button--whatsapp:hover { background-color: #1da851; }
  .resp-sharing-button--telegram { background-color: #54a9eb; }
  .resp-sharing-button--telegram:hover { background-color: #4b97d1; }

/* ==== 7b. inner-block paragraphs inside the CONNECT column keep the Astro spacing ==== */
.connect .connect-copy > p, .connect:not(.connect--stacked) > p.connect-p { margin: 0 20px 20px 30px; font-size: 14px; /* live: 14px (Astro 15.4px) */ }
.connect--stacked .connect-copy > p { margin: 0 0 20px 30px; }
@media (max-width: 768px) { .connect--stacked .connect-copy > p { margin: 0 0 20px 20px; } }

/* ==== 8. 404 page (live OceanWP error404 styles; values verified with scripts/dev/computed.mjs) ==== */
/* live: #content-wrap = 90% wide, centred, padding 50px 0; #primary margin-bottom 40px at <=959px (folded into the wrap padding) */
.error404-wrap { width: 90%; margin: 0 auto; padding: 50px 0; }
/* live: .error404-content has no padding or max-width of its own; text-align center, position relative */
.error404-content { position: relative; margin: 0; padding: 0; text-align: center; }
/* live: 46px / 55.2px "Gotham Rounded Medium" 500, letter-spacing 2.4px, margin 0 0 25px.
   live: #fff on white (invisible) — WCAG 1.4.3; teal per docs/a11y-exceptions.md */
.error404-content .error-title { font-family: "HCo Gotham Rounded Medium SSm", sans-serif; font-size: 46px; font-weight: 500; line-height: 1.2; letter-spacing: 2.4px; margin: 0 0 25px; color: #0e686f; }
/* live: 18px / 32.4px weight 300, colour rgb(98,100,105), margin 0 0 35px */
.error404-content .error-text { font-size: 18px; font-weight: 300; line-height: 1.8; margin: 0 0 35px; }
/* live: form max-width 390px, centred; field 40px tall, 14px/25.2px, padding 6px 12px, 1px solid #ddd, radius 3px, colour #333 */
.error404-content .searchform { position: relative; max-width: 390px; margin: 0 auto; }
.error404-content .searchform .field { display: inline-block; width: 100%; min-height: 0; height: 40px; font-size: 14px; line-height: 25.2px; padding: 6px 12px; color: #333; }
/* live: 13px/13px weight 600 uppercase, letter-spacing 1.3px, padding 14px 26px, 1px solid #fff, margin-top 60px (40px <=480px).
   live: #13aff0 (2.49:1) — WCAG 1.4.3; teal per docs/a11y-exceptions.md */
.error404-content .error-btn { display: inline-block; margin-top: 60px; padding: 14px 26px; font-size: 13px; font-weight: 600; line-height: 13px; letter-spacing: 1.3px; text-transform: uppercase; color: #fff; background-color: #0e686f; border: 1px solid #fff; text-align: center; }
.error404-content .error-btn:hover, .error404-content .error-btn:focus-visible { background-color: #0a4f54; }
.error404-content .error-btn:focus-visible { outline: 2px solid #0e686f; outline-offset: 2px; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 959px) { .error404-wrap { padding-bottom: 90px; } }
@media (max-width: 480px) { .error404-content .error-btn { margin-top: 40px; } }

/* ==== 9. focus visibility (a11y; outlines take no layout space) ==== */
.site-footer a:focus-visible,
.share-dialog a:focus-visible,
.site-header .mobile-list a:focus-visible { outline: 2px solid #0e686f; outline-offset: 2px; }
.share-dialog .share-close:focus-visible { outline: 2px solid #0e686f; outline-offset: 2px; }
