/* Gnosis Engineering, gnosisengineering.com.au
   Single source of truth for design tokens. Do not fork these values into page HTML.
   Palette from the Gnosis brand system. Type is Roboto and Roboto Mono only. */

:root {
  /* Brand colour */
  --ge-teal: #008E9C;            /* CTAs, links, active state, primary accent */
  --ge-teal-dark: #007580;        /* hover */
  --ge-teal-deep: #005F69;        /* CTA text on white, deep headings */
  --ge-cyan: #0AE2D8;             /* highlight word, DARK GROUNDS ONLY */
  --ge-petrol: #003849;           /* gradient end, dark editorial grounds */
  --ge-navy: #002E4F;             /* secondary dark, footer */
  --ge-gradient-mid: #016570;     /* signature gradient midpoint */
  --ge-orange: #CC7532;           /* warm accent, sparingly, form error state */
  --ge-orange-ink: #8A4A15;       /* error text on light */
  --ge-orange-surface: #FBF3EC;   /* error surface */

  /* Ink */
  --ge-ink: #1D1D1B;              /* headings on light */
  --ge-ink-soft: #242D35;         /* nav, labels */
  --ge-body: #3A4650;             /* body copy on light */
  --ge-body-quiet: #5B6B75;       /* small labels */
  --ge-muted: #9AA7B0;            /* mono meta, page numbers */
  --ge-on-deep: #26414A;          /* body on --ge-head surface */

  /* Surfaces */
  --ge-paper: #FFFFFF;
  --ge-zebra: #FAFBFC;            /* alternating section ground */
  --ge-panel: #F4F6F8;            /* expression of interest ground */
  --ge-head: #E5F4F5;             /* pale teal call to action band */
  --ge-tint: #F4F8F9;             /* chip and inset ground */
  --ge-border: #E5E8EC;           /* hairline card borders */
  --ge-border-strong: #C9D1D8;    /* form field borders */
  --ge-border-tint: #B9D6D9;      /* chip borders */
  --ge-border-panel: #DCE6E8;

  /* Reverse surfaces, on dark */
  --ge-on-dark: #FFFFFF;
  --ge-on-dark-90: rgba(255,255,255,.90);
  --ge-on-dark-80: rgba(255,255,255,.80);
  --ge-on-dark-72: rgba(255,255,255,.72);
  --ge-on-dark-55: rgba(255,255,255,.55);
  --ge-rule-on-dark: rgba(255,255,255,.22);
  --ge-hairline-on-dark: rgba(255,255,255,.16);
  --ge-panel-on-dark: rgba(0,46,60,.40);

  /* Signature gradient and its decoration */
  --ge-gradient: radial-gradient(125% 100% at 50% 0%, #008E9C 0%, #016570 46%, #003849 100%);
  --ge-gradient-over-photo: radial-gradient(125% 100% at 50% 0%, rgba(0,142,156,.58) 0%, rgba(1,101,112,.66) 46%, rgba(0,56,73,.82) 100%);
  --ge-blueprint-grid: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  --ge-blueprint-grid-size: 48px 48px;
  --ge-ring: 1px solid rgba(255,255,255,.07);

  /* Type families */
  --ge-font: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --ge-font-mono: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* Type scale, desktop. Fluid pairs are given as clamp() */
  --ge-t-hero: clamp(38px, 6.2vw, 74px);       /* home h1 */
  --ge-t-page-title: clamp(36px, 5.4vw, 62px); /* interior h1 */
  --ge-t-h2: clamp(30px, 4vw, 42px);
  --ge-t-h2-sm: clamp(28px, 3.6vw, 38px);
  --ge-t-h3: 23px;
  --ge-t-h3-sm: 21px;
  --ge-t-h4: 20px;
  --ge-t-lead: 19px;      /* service lead line, teal deep */
  --ge-t-body-lg: 18px;
  --ge-t-body: 17px;
  --ge-t-body-sm: 16px;
  --ge-t-small: 15px;
  --ge-t-fine: 14.5px;
  --ge-t-label: 14px;     /* form labels */
  --ge-t-mono-lg: 12.5px; /* hero kicker */
  --ge-t-mono: 11.5px;    /* section overline */
  --ge-t-mono-sm: 11px;
  --ge-t-mono-xs: 10.5px;

  /* Weights */
  --ge-w-light: 300;      /* body copy */
  --ge-w-regular: 400;
  --ge-w-medium: 500;     /* buttons, labels, emphasis */
  --ge-w-logo: 600;       /* wordmark */
  --ge-w-bold: 700;       /* card headings */
  --ge-w-black: 800;      /* headlines */

  /* Letter spacing */
  --ge-ls-headline: -0.025em;
  --ge-ls-headline-tight: -0.03em;
  --ge-ls-h3: -0.02em;
  --ge-ls-logo: -0.02em;
  --ge-ls-mono: 0.12em;
  --ge-ls-mono-wide: 0.14em;
  --ge-ls-mono-widest: 0.18em;

  /* Line height */
  --ge-lh-headline: 1.06;
  --ge-lh-h2: 1.12;
  --ge-lh-body: 1.72;
  --ge-lh-body-tight: 1.6;
  --ge-lh-list: 1.55;

  /* Spacing scale, 4px base */
  --ge-s-1: 4px;  --ge-s-2: 8px;  --ge-s-3: 12px; --ge-s-4: 16px;
  --ge-s-5: 20px; --ge-s-6: 24px; --ge-s-7: 28px; --ge-s-8: 32px;
  --ge-s-9: 40px; --ge-s-10: 48px; --ge-s-11: 56px; --ge-s-12: 64px;
  --ge-s-14: 80px; --ge-s-16: 96px; --ge-s-18: 112px;

  /* Section rhythm */
  --ge-section-y: 104px;         /* desktop top and bottom padding */
  --ge-section-y-mobile: 64px;
  --ge-hero-y: 132px;
  --ge-hero-y-mobile: 72px;
  --ge-gutter: 40px;             /* desktop page gutter */
  --ge-gutter-mobile: 20px;
  --ge-measure: 1240px;          /* content max width */
  --ge-measure-text: 760px;      /* comfortable reading measure */

  /* Radii. The brand is square. Only the seal and status dots are round. */
  --ge-radius: 0;
  --ge-radius-pill: 999px;

  /* Controls */
  --ge-control-h: 52px;          /* inputs */
  --ge-button-h: 56px;           /* submit buttons, 44px minimum touch target met */
  --ge-header-h: 76px;
  --ge-focus: 3px solid #0AE2D8;
  --ge-focus-offset: 2px;

  /* Breakpoints, for reference in media queries */
  --ge-bp-sm: 480px;
  --ge-bp-md: 768px;
  --ge-bp-lg: 1024px;
  --ge-bp-xl: 1240px;
}

/* Card and grid reflow thresholds are implemented with intrinsic layout, not
   media queries, so they hold at any width:
     sector cards        grid-template-columns: repeat(auto-fit, minmax(290px, 1fr))
     capability cards    repeat(auto-fit, minmax(320px, 1fr))
     why grid            repeat(auto-fit, minmax(280px, 1fr))
     platform blocks     repeat(auto-fit, minmax(340px, 1fr))
     form fields         repeat(auto-fit, minmax(280px, 1fr))
     two column bands    flex-wrap with flex: 1 1 520px on the text column
   Use media queries only for section padding and the header nav. */

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--ge-paper);
  color: var(--ge-ink);
  font-family: var(--ge-font);
  -webkit-font-smoothing: antialiased;
}

a { color: var(--ge-teal-deep); text-decoration: none; }
a:hover { color: var(--ge-teal-dark); }
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible { outline: var(--ge-focus); outline-offset: var(--ge-focus-offset); }

h1, h2, h3, h4 { text-wrap: balance; letter-spacing: var(--ge-ls-headline); margin: 0; }
p, li { text-wrap: pretty; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
img { display: block; max-width: 100%; height: auto; }
picture { display: block; }
strong { font-weight: var(--ge-w-medium); }

@media (max-width: 768px) {
  :root {
    --ge-section-y: var(--ge-section-y-mobile);
    --ge-hero-y: var(--ge-hero-y-mobile);
    --ge-gutter: var(--ge-gutter-mobile);
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ---------------------------------------------------------------------------
   Addendum 01, the real logo lockup. Additive, nothing above changes.
   --------------------------------------------------------------------------- */

.ge-lockup {
  display: flex;
  align-items: center;
  gap: var(--ge-lockup-gap, 14px);
  text-decoration: none;
}
.ge-lockup img {
  height: var(--ge-lockup-h, 48px);
  width: auto;
  display: block;
}
.ge-lockup-rule {
  flex: 0 0 auto;
  width: 1px;
  height: var(--ge-lockup-rule-h, 20px);
  background: var(--ge-lockup-rule-c, #C9D1D8);
}
.ge-lockup-word {
  position: relative;
  top: 1px;
  font-family: var(--ge-font);
  font-size: var(--ge-lockup-word-size, 12px);
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--ge-lockup-word-c, #005F69);
}

/* dark grounds: footer, Capability Statement */
.ge-lockup-reverse {
  --ge-lockup-h: 44px;
  --ge-lockup-rule-h: 18px;
  --ge-lockup-rule-c: rgba(255, 255, 255, .35);
  --ge-lockup-word-size: 11px;
  --ge-lockup-word-c: #0AE2D8;
}

/* ---------------------------------------------------------------------------
   Shell
   --------------------------------------------------------------------------- */

.ge-skip {
  position: absolute;
  left: var(--ge-s-4);
  top: -100px;
  z-index: 100;
  padding: 12px 18px;
  background: var(--ge-petrol);
  color: var(--ge-on-dark);
  font-size: var(--ge-t-small);
  font-weight: var(--ge-w-medium);
}
.ge-skip:focus { top: var(--ge-s-4); color: var(--ge-on-dark); }

.ge-inner {
  max-width: var(--ge-measure);
  margin: 0 auto;
  padding-left: var(--ge-gutter);
  padding-right: var(--ge-gutter);
}

.ge-header {
  position: sticky;
  top: 0;
  z-index: 40;
  background: rgba(255,255,255,.94);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--ge-border);
}
.ge-header-inner {
  max-width: var(--ge-measure);
  margin: 0 auto;
  min-height: var(--ge-header-h);
  padding: 14px var(--ge-gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 24px;
}
.ge-nav {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 28px;
}
.ge-nav a {
  font-size: var(--ge-t-small);
  font-weight: var(--ge-w-regular);
  color: var(--ge-ink-soft);
}
.ge-nav a:hover { color: var(--ge-teal); }
.ge-nav a[aria-current="page"] {
  font-weight: var(--ge-w-medium);
  color: var(--ge-teal-deep);
  padding-bottom: 2px;
  border-bottom: 2px solid var(--ge-teal);
}
.ge-nav .ge-nav-cta,
.ge-nav .ge-nav-cta:hover {
  font-size: var(--ge-t-fine);
  font-weight: var(--ge-w-medium);
  color: var(--ge-on-dark);
  background: var(--ge-teal);
  padding: 12px 22px;
  border: 0;
}
.ge-nav .ge-nav-cta:hover { background: var(--ge-teal-dark); }
.ge-nav .ge-nav-phone { font-weight: var(--ge-w-medium); color: var(--ge-teal-deep); white-space: nowrap; }
.ge-nav .ge-nav-phone:hover { color: var(--ge-teal); }

/* Hero and page headers */
.ge-hero {
  position: relative;
  overflow: hidden;
  background: var(--ge-petrol);
  color: var(--ge-on-dark);
  isolation: isolate;
}
.ge-hero-photo,
.ge-hero-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
}
.ge-hero-photo img { object-fit: cover; }
.ge-hero-veil {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: var(--ge-gradient-over-photo);
}
.ge-hero-grid {
  position: absolute;
  inset: 0;
  z-index: 2;
  background-image: var(--ge-blueprint-grid);
  background-size: var(--ge-blueprint-grid-size);
}
.ge-ring {
  position: absolute;
  z-index: 2;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.06);
  left: 50%;
  transform: translateX(-50%);
  pointer-events: none;
}
.ge-ring-1 { width: 900px; height: 900px; top: -560px; }
.ge-ring-2 { width: 1300px; height: 1300px; top: -800px; }
.ge-ring-3 { width: 1700px; height: 1700px; top: -1040px; }
.ge-hero-inner {
  position: relative;
  z-index: 3;
  max-width: var(--ge-measure);
  margin: 0 auto;
  padding: var(--ge-hero-y) var(--ge-gutter) calc(var(--ge-hero-y) - 8px);
}
.ge-hero-interior .ge-hero-inner { padding: 92px var(--ge-gutter) 84px; }
.ge-kicker {
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono-lg);
  letter-spacing: var(--ge-ls-mono-wide);
  text-transform: uppercase;
  color: var(--ge-cyan);
}
.ge-hero h1 {
  margin-top: 22px;
  font-size: var(--ge-t-hero);
  font-weight: var(--ge-w-black);
  letter-spacing: var(--ge-ls-headline);
  line-height: 1.04;
  color: var(--ge-on-dark);
  max-width: 880px;
}
.ge-hero-interior h1 { font-size: var(--ge-t-page-title); }
.ge-standfirst {
  margin-top: 28px;
  max-width: 720px;
  font-size: var(--ge-t-lead);
  font-weight: var(--ge-w-light);
  line-height: 1.62;
  color: var(--ge-on-dark-90);
}
.ge-hero-actions {
  margin-top: 40px;
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}
.ge-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  font-size: var(--ge-t-body-sm);
  font-weight: var(--ge-w-medium);
  border: 1px solid transparent;
  cursor: pointer;
  text-decoration: none;
}
.ge-btn-light { padding: 17px 34px; background: var(--ge-on-dark); color: var(--ge-teal-deep); }
.ge-btn-light:hover { background: var(--ge-head); color: var(--ge-teal-deep); }
.ge-btn-ghost { padding: 17px 34px; background: transparent; color: var(--ge-on-dark); border-color: rgba(255,255,255,.45); }
.ge-btn-ghost:hover { background: rgba(255,255,255,.1); color: var(--ge-on-dark); }
.ge-btn-primary { padding: 19px 40px; background: var(--ge-teal); color: var(--ge-on-dark); }
.ge-btn-primary:hover { background: var(--ge-teal-dark); color: var(--ge-on-dark); }

/* Section bands */
.ge-section {
  background: var(--ge-paper);
  border-top: 1px solid var(--ge-border);
  padding: var(--ge-section-y) 0 calc(var(--ge-section-y) + 8px);
}
.ge-section-alt { background: var(--ge-zebra); }
.ge-section-tight { padding: 88px 0; }
@media (max-width: 768px) {
  .ge-section, .ge-section-tight { padding: var(--ge-section-y) 0; }
}
[id] { scroll-margin-top: 100px; }

.ge-overline {
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono);
  letter-spacing: var(--ge-ls-mono-wide);
  text-transform: uppercase;
  color: var(--ge-teal);
}
.ge-h2 {
  margin-top: 18px;
  font-size: var(--ge-t-h2);
  font-weight: var(--ge-w-black);
  letter-spacing: var(--ge-ls-headline);
  line-height: var(--ge-lh-h2);
  color: var(--ge-ink);
}
.ge-h2-sm { font-size: var(--ge-t-h2-sm); }
.ge-body {
  font-size: var(--ge-t-body);
  font-weight: var(--ge-w-light);
  line-height: var(--ge-lh-body);
  color: var(--ge-body);
}
.ge-body-lg { font-size: var(--ge-t-body-lg); }
.ge-body + .ge-body, .ge-stack > * + * { margin-top: 22px; }
.ge-body strong { color: var(--ge-ink-soft); }

/* Two column band: rail plus text column */
.ge-band {
  display: flex;
  flex-wrap: wrap;
  gap: 40px 72px;
  align-items: flex-start;
}
.ge-band-rail { flex: 0 0 240px; }
.ge-band-rail .ge-rule { margin-top: 22px; width: 56px; height: 2px; background: var(--ge-border); }
.ge-band-body { flex: 1 1 520px; min-width: 0; max-width: var(--ge-measure-text); }
.ge-band-body .ge-h2 { margin-top: 0; }
.ge-band-body .ge-h2 + .ge-body,
.ge-band-body .ge-h2 + .ge-stack,
.ge-band-body .ge-h2 + .ge-lead { margin-top: 26px; }
.ge-band-wide .ge-band-body { max-width: 800px; }

/* Section heading block used above grids */
.ge-section-head { max-width: 760px; }
.ge-section-head .ge-body { margin-top: 24px; }

/* Lists with the 5px square bullet */
.ge-list li {
  display: flex;
  gap: 12px;
  font-size: var(--ge-t-small);
  line-height: var(--ge-lh-list);
  font-weight: var(--ge-w-light);
  color: var(--ge-body);
}
.ge-list li::before {
  content: "";
  flex: 0 0 auto;
  width: 5px;
  height: 5px;
  margin-top: 9px;
  background: var(--ge-teal);
}
.ge-list li + li { margin-top: 10px; }
.ge-list-2col {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 12px 40px;
}
.ge-list-2col li + li { margin-top: 0; }
.ge-list-2col li { font-size: var(--ge-t-body-sm); }

/* Hairline grids. Borders on cells so an empty cell shows nothing. */
.ge-hairgrid {
  display: grid;
  border-top: 1px solid var(--ge-border);
  border-left: 1px solid var(--ge-border);
}
.ge-hairgrid > * {
  background: var(--ge-paper);
  border-right: 1px solid var(--ge-border);
  border-bottom: 1px solid var(--ge-border);
  min-width: 0;
}
.ge-index {
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono);
  letter-spacing: 0.1em;
  color: var(--ge-muted);
}
/* Line icons ship as external SVG with stroke="currentColor". A mask lets the
   page set the colour, teal on light grounds, white on dark. */
.ge-icon {
  display: block;
  flex: 0 0 auto;
  color: var(--ge-teal);
  background-color: currentColor;
  -webkit-mask: var(--icon) center / contain no-repeat;
  mask: var(--icon) center / contain no-repeat;
}
.ge-icon-22 { width: 22px; height: 22px; }
.ge-icon-44 { width: 44px; height: 44px; }

/* ---------------------------------------------------------------------------
   Home
   --------------------------------------------------------------------------- */

.ge-sector-grid {
  margin-top: 56px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 28px;
}
.ge-sector-card {
  display: block;
  background: var(--ge-paper);
  border: 1px solid var(--ge-border);
  color: var(--ge-ink);
}
.ge-sector-card:hover { border-color: var(--ge-teal); color: var(--ge-ink); }
.ge-sector-img {
  height: 196px;
  overflow: hidden;
  border-bottom: 1px solid var(--ge-border);
  background: var(--ge-tint);
}
.ge-sector-img img { width: 100%; height: 100%; object-fit: cover; }
.ge-sector-body { padding: 30px; }
.ge-sector-body h3 {
  margin-top: 18px;
  font-size: var(--ge-t-h3-sm);
  font-weight: var(--ge-w-bold);
  letter-spacing: var(--ge-ls-h3);
  color: var(--ge-ink);
}
.ge-sector-body .ge-list { margin-top: 18px; }
.ge-sector-body .ge-list li { font-size: 15.5px; }

.ge-cap-grid {
  margin-top: 56px;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}
/* pinned to the approved 2 by 2 from tablet up; auto-fit below */
@media (min-width: 768px) { .ge-cap-grid { grid-template-columns: repeat(2, 1fr); } }
.ge-cap {
  padding: 44px;
  display: flex;
  flex-direction: column;
}
.ge-cap-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.ge-cap h3 {
  margin-top: 30px;
  font-size: var(--ge-t-h3);
  font-weight: var(--ge-w-bold);
  letter-spacing: var(--ge-ls-h3);
  color: var(--ge-ink);
}
.ge-cap p { margin-top: 14px; font-size: 16.5px; line-height: 1.65; font-weight: var(--ge-w-light); color: var(--ge-body); }

/* Digital Delivery, gradient band */
.ge-dd {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background: var(--ge-gradient);
  color: var(--ge-on-dark);
  padding: var(--ge-section-y) 0 calc(var(--ge-section-y) + 8px);
}
.ge-dd .ge-hero-grid, .ge-dd .ge-ring { z-index: 0; }
.ge-dd .ge-inner { position: relative; z-index: 1; }
.ge-dd .ge-overline { color: var(--ge-cyan); }
.ge-dd .ge-h2 { color: var(--ge-on-dark); max-width: 640px; }
.ge-dd .ge-body { color: rgba(255,255,255,.88); font-size: 17.5px; }
.ge-dd .ge-body strong { color: var(--ge-on-dark); }
.ge-dd-cols {
  display: flex;
  flex-wrap: wrap;
  gap: 48px 64px;
  align-items: flex-start;
}
.ge-dd-text { flex: 1 1 520px; min-width: 0; max-width: 700px; }
.ge-dd-graphic { flex: 1 1 360px; min-width: 0; max-width: 520px; }
.ge-dd-graphic img { width: 100%; border: 1px solid var(--ge-hairline-on-dark); }
.ge-plate {
  margin-top: 26px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  border: 1px solid rgba(10,226,216,.4);
  background: rgba(0,56,73,.4);
  padding: 12px 18px;
  font-family: var(--ge-font-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--ge-cyan);
}
.ge-plate::before { content: ""; flex: 0 0 auto; width: 7px; height: 7px; background: var(--ge-cyan); }
.ge-plate + .ge-body, .ge-plate + .ge-stack, .ge-plate + .ge-lead-dark { margin-top: 30px; }
.ge-dd-points { margin-top: 30px; display: grid; gap: 14px; }
.ge-dd-point {
  border: 1px solid var(--ge-hairline-on-dark);
  background: var(--ge-panel-on-dark);
  padding: 22px 24px;
  font-size: var(--ge-t-body-sm);
  line-height: 1.65;
  font-weight: var(--ge-w-light);
  color: rgba(255,255,255,.88);
}
.ge-dd-point strong { color: var(--ge-on-dark); }
.ge-dd-label {
  margin-top: 40px;
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono);
  letter-spacing: var(--ge-ls-mono-wide);
  text-transform: uppercase;
  color: var(--ge-cyan);
}
.ge-dd-label-text {
  margin-top: 40px;
  font-size: var(--ge-t-body);
  font-weight: var(--ge-w-medium);
  color: var(--ge-on-dark);
}

/* Why grid */
.ge-why-grid {
  margin-top: 56px;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}
/* pinned to the approved 3 by 2 at desktop; auto-fit below */
@media (min-width: 1024px) { .ge-why-grid { grid-template-columns: repeat(3, 1fr); } }
.ge-why { padding: 40px; }
.ge-why h3 {
  margin-top: 22px;
  font-size: var(--ge-t-h4);
  font-weight: var(--ge-w-bold);
  letter-spacing: var(--ge-ls-h3);
  color: var(--ge-ink);
}
.ge-why p { margin-top: 12px; font-size: var(--ge-t-body-sm); line-height: 1.65; font-weight: var(--ge-w-light); color: var(--ge-body); }

/* Closing call to action */
.ge-cta-band {
  background: var(--ge-head);
  border-top: 1px solid var(--ge-border);
  padding: 88px 0;
}
.ge-cta-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 40px 64px;
}
.ge-cta-copy { max-width: 700px; }
.ge-cta-copy h2 {
  font-size: var(--ge-t-h2-sm);
  font-weight: var(--ge-w-black);
  line-height: var(--ge-lh-h2);
  color: var(--ge-teal-deep);
}
.ge-cta-copy p { margin-top: 18px; font-size: 17.5px; line-height: 1.65; font-weight: var(--ge-w-light); color: var(--ge-on-deep); }
.ge-cta-row .ge-btn { flex: 0 0 auto; }

/* Footer */
.ge-footer {
  background: var(--ge-navy);
  color: var(--ge-on-dark-80);
  padding: 64px 0 56px;
}
.ge-footer-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 28px 40px;
}
.ge-footer-nav { display: flex; flex-wrap: wrap; gap: 32px; }
.ge-footer-nav a { font-size: var(--ge-t-small); color: var(--ge-on-dark-80); }
.ge-footer-nav a:hover { color: var(--ge-cyan); }
.ge-footer-rule { margin-top: 40px; height: 1px; background: rgba(255,255,255,.14); }
.ge-footer-lines { margin-top: 32px; display: grid; gap: 10px; }
.ge-footer-lines p { font-size: var(--ge-t-small); line-height: 1.6; font-weight: var(--ge-w-light); color: var(--ge-on-dark-80); }
.ge-footer-lines a { color: var(--ge-on-dark); }
.ge-footer-lines a:hover { color: var(--ge-cyan); }
.ge-footer-lines .ge-footer-fine {
  margin-top: 10px;
  font-family: var(--ge-font-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: rgba(255,255,255,.5);
}

/* ---------------------------------------------------------------------------
   Services
   --------------------------------------------------------------------------- */

.ge-index-band {
  background: var(--ge-zebra);
  border-top: 1px solid var(--ge-border);
  border-bottom: 1px solid var(--ge-border);
}
.ge-index-band .ge-inner { display: flex; flex-wrap: wrap; }
.ge-index-band a {
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ge-teal-deep);
  padding: 18px 22px;
}
.ge-index-band a:first-child { padding-left: 0; }
.ge-index-band a:hover { color: var(--ge-teal); }
.ge-index-band a.ge-index-accent { color: var(--ge-teal); }
.ge-index-band a.ge-index-accent:hover { color: var(--ge-teal-dark); }

.ge-service-rail .ge-rail-num {
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono);
  letter-spacing: 0.1em;
  color: var(--ge-muted);
}
.ge-service-rail .ge-overline { margin-top: 14px; }
.ge-lead {
  font-size: var(--ge-t-lead);
  font-weight: var(--ge-w-regular);
  line-height: 1.55;
  color: var(--ge-teal-deep);
}
.ge-lead + .ge-body, .ge-lead + .ge-stack { margin-top: 22px; }
.ge-label-mono {
  margin-top: 36px;
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono);
  letter-spacing: var(--ge-ls-mono-wide);
  text-transform: uppercase;
  color: var(--ge-teal);
}
.ge-label-mono + .ge-list-2col { margin-top: 18px; }
.ge-chips { margin-top: 32px; display: flex; flex-wrap: wrap; gap: 10px; }
.ge-chips li {
  font-family: var(--ge-font-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--ge-teal-deep);
  border: 1px solid var(--ge-border-tint);
  background: var(--ge-tint);
  padding: 9px 15px;
}
.ge-chips-label { margin-top: 36px; }
.ge-chips-label + .ge-chips { margin-top: 14px; }
.ge-scope-note {
  margin-top: 36px;
  display: grid;
  grid-template-columns: 132px 1fr;
  gap: 20px;
  border: 1px solid var(--ge-border);
  background: var(--ge-paper);
  padding: 26px 28px;
}
.ge-scope-note .ge-label-mono { margin-top: 3px; }
.ge-scope-note p { font-size: var(--ge-t-body-sm); line-height: 1.65; font-weight: var(--ge-w-light); color: var(--ge-body); }
@media (max-width: 520px) { .ge-scope-note { grid-template-columns: 1fr; gap: 12px; } }
.ge-inset-img { margin-top: 40px; max-width: 560px; border: 1px solid var(--ge-border); }
.ge-inset-img img { width: 100%; }

.ge-dd-blocks {
  margin-top: 40px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  border-top: 1px solid var(--ge-hairline-on-dark);
  border-left: 1px solid var(--ge-hairline-on-dark);
}
.ge-dd-block {
  padding: 32px 30px;
  border-right: 1px solid var(--ge-hairline-on-dark);
  border-bottom: 1px solid var(--ge-hairline-on-dark);
  min-width: 0;
}
.ge-dd-block h3 { font-size: 18.5px; font-weight: var(--ge-w-logo); letter-spacing: var(--ge-ls-h3); color: var(--ge-on-dark); }
.ge-dd-block p { margin-top: 12px; font-size: var(--ge-t-body-sm); line-height: 1.65; font-weight: var(--ge-w-light); color: rgba(255,255,255,.86); }
.ge-dd-block-wide { grid-column: span 2; }
@media (max-width: 768px) { .ge-dd-block-wide { grid-column: auto; } }
.ge-dd-qa {
  margin-top: 20px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 14px;
  counter-reset: qa;
}
.ge-dd-qa li {
  border: 1px solid var(--ge-hairline-on-dark);
  background: var(--ge-panel-on-dark);
  padding: 24px 24px 26px;
  font-size: var(--ge-t-body-sm);
  line-height: 1.65;
  font-weight: var(--ge-w-light);
  color: rgba(255,255,255,.88);
}
.ge-dd-qa li strong { display: block; color: var(--ge-on-dark); font-weight: var(--ge-w-medium); }
.ge-dd-qa li .ge-no { display: inline-block; margin-top: 12px; font-family: var(--ge-font-mono); font-size: 13px; letter-spacing: 0.06em; color: var(--ge-cyan); margin-right: 8px; }
.ge-dd .ge-body-lg { font-size: 17.5px; }

.ge-region-chips { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 10px; }
.ge-region-chips li {
  font-size: var(--ge-t-small);
  font-weight: var(--ge-w-regular);
  color: var(--ge-ink-soft);
  background: var(--ge-tint);
  border: 1px solid var(--ge-border-panel);
  padding: 10px 16px;
}
.ge-coverage-img { margin-top: 40px; max-width: 600px; border: 1px solid var(--ge-border); }
.ge-coverage-img img { width: 100%; }

/* ---------------------------------------------------------------------------
   Projects
   --------------------------------------------------------------------------- */

.ge-rows { margin-top: 28px; border-top: 1px solid var(--ge-border); }
.ge-rows li {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 16px;
  padding: 20px 0;
  border-bottom: 1px solid var(--ge-border);
  font-size: var(--ge-t-body);
  line-height: 1.6;
  font-weight: var(--ge-w-light);
  color: var(--ge-body);
}
.ge-rows li .ge-index { padding-top: 5px; }
.ge-rows li strong { color: var(--ge-ink-soft); }
.ge-rows-plain li { grid-template-columns: 1fr; }
.ge-inspect-grid {
  margin-top: 56px;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
.ge-inspect { padding: 40px 36px; display: flex; flex-direction: column; }
.ge-inspect h3 { margin-top: 26px; font-size: var(--ge-t-h3-sm); font-weight: var(--ge-w-bold); letter-spacing: var(--ge-ls-h3); color: var(--ge-ink); }
.ge-inspect p { margin-top: 14px; font-size: 16.5px; line-height: 1.65; font-weight: var(--ge-w-light); color: var(--ge-body); }
.ge-inspect p a { font-weight: var(--ge-w-medium); color: var(--ge-teal-deep); border-bottom: 1px solid var(--ge-teal); }
.ge-inspect .ge-file {
  margin-top: auto;
  padding-top: 26px;
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--ge-font-mono);
  font-size: var(--ge-t-mono);
  letter-spacing: 0.08em;
  color: var(--ge-teal-deep);
  word-break: break-word;
}
.ge-inspect .ge-file::before { content: ""; flex: 0 0 auto; width: 9px; height: 9px; background: var(--ge-teal); }
.ge-callout {
  margin-top: 26px;
  border-left: 3px solid var(--ge-teal);
  background: var(--ge-tint);
  padding: 24px 28px;
}
.ge-callout .ge-body + .ge-body { margin-top: 18px; }

/* ---------------------------------------------------------------------------
   Contact
   --------------------------------------------------------------------------- */

.ge-detail-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.ge-detail { padding: 36px 32px; }
.ge-detail .ge-overline { color: var(--ge-teal); }
.ge-detail-value { margin-top: 16px; color: var(--ge-ink); }
.ge-detail-phone { font-size: 22px; font-weight: var(--ge-w-medium); }
.ge-detail-email { font-size: var(--ge-t-body-lg); font-weight: var(--ge-w-medium); word-break: break-word; }
.ge-detail-office { font-size: var(--ge-t-body); font-weight: var(--ge-w-light); line-height: 1.6; color: var(--ge-body); }
.ge-detail-value a { color: var(--ge-ink); }
.ge-detail-value a:hover { color: var(--ge-teal); }

.ge-form-band {
  display: flex;
  flex-wrap: wrap;
  gap: 40px 72px;
  align-items: flex-start;
}
.ge-form-rail { flex: 0 1 300px; min-width: 240px; }
.ge-form-rail .ge-h2 { margin-top: 0; }
.ge-privacy { margin-top: 22px; font-size: var(--ge-t-small); line-height: 1.66; font-weight: var(--ge-w-light); color: var(--ge-body); }
.ge-form-card {
  flex: 1 1 560px;
  min-width: 0;
  max-width: 760px;
  border: 1px solid var(--ge-border);
  background: var(--ge-zebra);
  padding: 38px 36px 40px;
}
.ge-form-card-white { max-width: none; background: var(--ge-paper); border-color: var(--ge-border-panel); margin-top: 44px; }
.ge-form-card-white .ge-privacy { margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--ge-border); }
@media (max-width: 520px) { .ge-form-card { padding: 26px 20px 28px; } }

.ge-sep { height: 2px; background: var(--ge-petrol); }

.ge-eoi { background: var(--ge-panel); border-top: 1px solid var(--ge-border); padding: 88px 0 96px; }
.ge-eoi-cols { display: flex; flex-wrap: wrap; gap: 40px 72px; align-items: flex-start; }
.ge-eoi-copy { flex: 1 1 460px; min-width: 0; max-width: 700px; }
.ge-eoi-copy .ge-h2 { letter-spacing: var(--ge-ls-headline-tight); }
.ge-eoi-copy .ge-h2 + .ge-body { margin-top: 24px; }
.ge-eoi-lead { margin-top: 22px; font-size: var(--ge-t-body); line-height: var(--ge-lh-body); font-weight: var(--ge-w-regular); color: var(--ge-ink-soft); }
.ge-eoi-copy .ge-list-2col { margin-top: 16px; gap: 10px 32px; }
.ge-eoi-copy .ge-list-2col li { font-size: var(--ge-t-body-sm); }
.ge-register-panel {
  flex: 1 1 380px;
  min-width: 0;
  max-width: 520px;
  border: 1px solid var(--ge-border-panel);
  background: var(--ge-paper);
  padding: 32px 30px 34px;
}
.ge-register-panel .ge-overline { font-size: var(--ge-t-mono-xs); letter-spacing: 0.16em; }
.ge-register-steps { margin-top: 24px; display: flex; flex-direction: column; gap: 20px; }
.ge-register-steps li { display: grid; grid-template-columns: 34px 1fr; gap: 16px; align-items: start; }
.ge-register-steps li + li { border-top: 1px solid var(--ge-border); padding-top: 20px; }
.ge-register-steps li .ge-index { padding-top: 3px; }
.ge-register-steps li p { font-size: 15.5px; line-height: 1.62; font-weight: var(--ge-w-light); color: var(--ge-body); }
.ge-cv { margin-top: 26px; border-top: 1px solid var(--ge-border); padding-top: 20px; }
.ge-cv p { font-size: var(--ge-t-small); line-height: 1.66; font-weight: var(--ge-w-light); color: var(--ge-body); }
.ge-cv a, .ge-cv strong { font-weight: var(--ge-w-medium); color: var(--ge-teal-deep); word-break: break-word; }

/* Forms */
.ge-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 22px 24px;
}
.ge-field { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ge-field-wide { grid-column: 1 / -1; }
.ge-field label { font-size: var(--ge-t-label); font-weight: var(--ge-w-medium); color: var(--ge-ink-soft); }
.ge-req { color: var(--ge-teal); }
.ge-field input,
.ge-field select,
.ge-field textarea {
  width: 100%;
  min-height: var(--ge-control-h);
  padding: 14px 16px;
  font-family: var(--ge-font);
  font-size: var(--ge-t-body-sm);
  font-weight: var(--ge-w-light);
  color: var(--ge-ink);
  background: var(--ge-paper);
  border: 1px solid var(--ge-border-strong);
  border-radius: var(--ge-radius);
}
.ge-field select {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 44px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23005F69' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
}
.ge-field textarea { line-height: var(--ge-lh-body-tight); resize: vertical; }
.ge-field [aria-invalid="true"] { border-color: var(--ge-orange); }
.ge-form-actions { grid-column: 1 / -1; display: flex; align-items: center; flex-wrap: wrap; gap: 20px; }
.ge-submit {
  min-height: var(--ge-button-h);
  padding: 0 38px;
  font-family: var(--ge-font);
  font-size: var(--ge-t-body-sm);
  font-weight: var(--ge-w-medium);
  color: var(--ge-on-dark);
  background: var(--ge-teal);
  border: 0;
  border-radius: var(--ge-radius);
  cursor: pointer;
}
.ge-submit:hover { background: var(--ge-teal-dark); }
.ge-submit[disabled] { opacity: .7; cursor: default; }

.ge-hp { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; clip-path: inset(50%); overflow: hidden; white-space: nowrap; }

.ge-panel-state {
  margin-bottom: 28px;
  padding: 22px 24px;
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: 16px;
  align-items: start;
}
.ge-panel-state[hidden] { display: none; }
.ge-panel-state p { font-size: var(--ge-t-body-sm); line-height: 1.62; font-weight: var(--ge-w-regular); }
.ge-panel-success { border: 1px solid var(--ge-teal); background: var(--ge-head); }
.ge-panel-success p { color: var(--ge-teal-deep); }
.ge-panel-error { border: 1px solid var(--ge-orange); background: var(--ge-orange-surface); }
.ge-panel-error p { color: var(--ge-orange-ink); }
.ge-panel-error p a { color: var(--ge-orange-ink); font-weight: var(--ge-w-medium); text-decoration: underline; }
.ge-tick, .ge-bang { position: relative; display: block; width: 22px; height: 22px; margin-top: 2px; }
.ge-tick { border: 2px solid var(--ge-teal); border-radius: 50%; }
.ge-tick::before { content: ""; position: absolute; left: 5px; top: 8px; width: 8px; height: 4px; border-left: 2px solid var(--ge-teal); border-bottom: 2px solid var(--ge-teal); transform: rotate(-45deg); }
.ge-bang { border: 2px solid var(--ge-orange); }
.ge-bang::before { content: ""; position: absolute; left: 8px; top: 4px; width: 2px; height: 8px; background: var(--ge-orange); }
.ge-bang::after { content: ""; position: absolute; left: 8px; top: 14px; width: 2px; height: 2px; background: var(--ge-orange); }

.ge-company .ge-rows { margin-top: 0; }
.ge-company .ge-rows li { padding: 16px 0; }
