/* Inter v4 variable (SIL OFL 1.1, see ../fonts/LICENSE-Inter.txt).
   The variable weight axis matters here: several rules use non-standard
   weights such as 430 and 760 that static cuts cannot render. */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/InterVariable.woff2') format('woff2');
}

:root {
  --ink: #07090b;
  --ink-2: #0d1115;
  --panel: #11161c;
  --panel-2: #171d25;
  --panel-3: #202833;
  --paper: #f4f4ef;
  --white: #ffffff;
  --text: #f4f6f7;
  --muted: #a8b0ba;
  --muted-2: #77818d;
  --yellow: #ffd400;
  --yellow-2: #e7c100;
  --cyan: #51d8d0;
  --green: #8dbf41;
  --line: rgba(255,255,255,.12);
  --line-strong: rgba(255,255,255,.22);
  --shadow: 0 24px 70px rgba(0,0,0,.34);
  --radius-sm: 10px;
  --radius: 18px;
  --radius-lg: 30px;
  --container: min(1240px, calc(100vw - 48px));
  --header-h: 76px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--ink); }
body {
  margin: 0;
  min-width: 320px;
  color: var(--text);
  background:
    radial-gradient(circle at 80% 10%, rgba(255,212,0,.045), transparent 30%),
    linear-gradient(180deg, var(--ink) 0%, #090c10 44%, #07090b 100%);
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
body.nav-open, body.modal-open { overflow: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; }
button { color: inherit; }
::selection { background: var(--yellow); color: #050607; }

.skip-link {
  position: fixed;
  left: 16px;
  top: -80px;
  z-index: 1000;
  padding: 10px 16px;
  background: var(--yellow);
  color: #050607;
  transition: top .2s ease;
}
.skip-link:focus { top: 12px; }
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.container { width: var(--container); margin-inline: auto; }
.section { padding: 112px 0; position: relative; }
.section-sm { padding: 76px 0; }
.section-tight { padding: 54px 0; }
.section-dark { background: #080b0e; }
.section-panel { background: linear-gradient(180deg, #0c1116, #090d11); border-block: 1px solid var(--line); }
.section-light { background: var(--paper); color: #0b0e11; }
.section-light .eyebrow { color: #6f5c00; }
.section-light .lede, .section-light .muted { color: #4a5159; }
.section-light .section-rule { background: rgba(0,0,0,.16); }

.grid-overlay::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .22;
  background-image:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(to bottom, transparent, #000 18%, #000 82%, transparent);
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--yellow);
  font-size: .76rem;
  font-weight: 760;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.eyebrow::before {
  content: "";
  width: 28px;
  height: 1px;
  background: currentColor;
}

h1, h2, h3, h4, p { margin-top: 0; }
h1, h2, h3, h4 {
  font-weight: 430;
  line-height: 1.06;
  letter-spacing: -.035em;
  text-wrap: balance;
}
h1 { font-size: clamp(2.35rem, 3.9vw, 3.65rem); }
h2 { font-size: clamp(1.8rem, 2.55vw, 2.5rem); }
h3 { font-size: clamp(1.25rem, 1.6vw, 1.5rem); }
h4 { font-size: 1.15rem; letter-spacing: -.015em; }
.display-small { font-size: clamp(2.35rem, 3.9vw, 3.65rem); }
.lede { color: #c1c7ce; font-size: clamp(1.02rem, 1.25vw, 1.16rem); line-height: 1.55; max-width: 760px; }
.muted { color: var(--muted); }
.small { font-size: .88rem; }
.mono { font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; letter-spacing: .015em; }
.text-yellow { color: var(--yellow); }
.text-cyan { color: var(--cyan); }
.section-heading { max-width: 900px; margin-bottom: 58px; }
.section-heading h2 { margin: 16px 0 22px; }
.section-heading .eyebrow + .lede { margin-top: 18px; }
.section-heading.center { margin-inline: auto; text-align: center; }
.section-heading.center .eyebrow { justify-content: center; }
.section-heading.center .eyebrow::before { display: none; }
.section-heading.center .lede { margin-inline: auto; }
.section-rule { height: 1px; width: 100%; background: var(--line); }

.site-header {
  position: fixed;
  top: 0;
  z-index: 200;
  width: 100%;
  height: var(--header-h);
  background: rgba(5,8,10,.68);
  border-bottom: 1px solid transparent;
  backdrop-filter: blur(16px) saturate(140%);
  transition: background .25s ease, border-color .25s ease, transform .25s ease;
}
.site-header.scrolled { background: rgba(5,8,10,.93); border-color: var(--line); }
.header-inner { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.brand { display: inline-flex; align-items: center; flex: 0 0 auto; }
.brand img { height: 31px; width: auto; }
.site-nav { display: flex; align-items: center; gap: 28px; margin-left: auto; }
.site-nav a {
  position: relative;
  padding: 8px 0;
  color: #d5d9de;
  font-size: .88rem;
  letter-spacing: .02em;
}
.site-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: 1px;
  height: 1px;
  background: var(--yellow);
  transition: right .22s ease;
}
.site-nav a:hover::after,
.site-nav a[aria-current="page"]::after { right: 0; }
.site-nav a[aria-current="page"] { color: var(--white); }
.nav-dropdown { position: relative; display: flex; align-items: center; }
.nav-dropdown-toggle {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 0;
  border: 0;
  background: transparent;
  color: #d5d9de;
  font-size: .88rem;
  letter-spacing: .02em;
  cursor: pointer;
}
.nav-dropdown-toggle::after {
  content: "";
  width: 6px;
  height: 6px;
  margin-top: -3px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: rotate(45deg);
  transition: transform .2s ease;
}
.nav-dropdown-toggle[aria-current="page"] { color: var(--white); }
.nav-dropdown-menu {
  position: absolute;
  top: calc(100% + 13px);
  left: -22px;
  z-index: 220;
  width: 290px;
  padding: 9px;
  border: 1px solid var(--line-strong);
  background: rgba(8,12,15,.98);
  box-shadow: 0 22px 60px rgba(0,0,0,.45);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-7px);
  transition: opacity .18s ease, visibility .18s ease, transform .18s ease;
}
.nav-dropdown-menu a {
  display: block;
  width: 100%;
  padding: 12px 13px;
  color: #cbd1d6;
  font-size: .84rem;
}
.nav-dropdown-menu a::after { display: none; }
.nav-dropdown-menu a:hover,
.nav-dropdown-menu a[aria-current="page"] { background: rgba(255,255,255,.055); color: var(--white); }
.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown.is-open .nav-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: none;
}
.nav-dropdown.is-open .nav-dropdown-toggle::after { transform: rotate(225deg); margin-top: 3px; }
.header-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 17px;
  color: #060708 !important;
  background: var(--yellow);
  border: 1px solid var(--yellow);
  font-weight: 720;
}
.header-cta::after { display: none; }
.header-cta:hover { background: var(--white); border-color: var(--white); }
.header-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex: 0 0 auto;
  color: #d5d9de;
}
.header-social:hover { color: var(--white); }
.header-social svg { display: block; width: 18px; height: 18px; fill: currentColor; }
.nav-toggle {
  display: none;
  border: 0;
  background: transparent;
  padding: 10px 4px;
  cursor: pointer;
}
.nav-toggle span { display: block; width: 26px; height: 1px; background: var(--white); margin: 6px 0; transition: transform .2s ease, opacity .2s ease; }
body.nav-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
body.nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
body.nav-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.btn-row { display: flex; flex-wrap: wrap; gap: 13px; margin-top: 34px; }
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 24px;
  border: 1px solid var(--line-strong);
  background: rgba(255,255,255,.035);
  color: var(--white);
  font-weight: 680;
  font-size: .94rem;
  transition: transform .2s ease, background .2s ease, border-color .2s ease, color .2s ease;
}
.btn::after { content: "↗"; margin-left: 12px; font-size: 1.08em; }
.btn:hover { transform: translateY(-2px); background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.42); }
.btn-primary { color: #060708; background: var(--yellow); border-color: var(--yellow); }
.btn-primary:hover { background: var(--white); border-color: var(--white); }
.btn-text { border-color: transparent; background: transparent; padding-inline: 0; min-height: auto; color: var(--yellow); }
.btn-text:hover { background: transparent; border-color: transparent; }
.btn-dark { color: var(--white); background: #0a0d11; border-color: #0a0d11; }
.btn-dark:hover { background: #222a33; border-color: #222a33; }

.hero {
  position: relative;
  min-height: min(940px, 100svh);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  padding: calc(var(--header-h) + 110px) 0 90px;
  background-color: var(--ink);
  background-image: url('../images/hero-search.webp');
  background-size: cover;
  background-position: center;
}
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(3,5,7,.08) 0%, rgba(3,5,7,.08) 46%, rgba(3,5,7,.78) 100%);
}
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size: 72px 72px;
  mask-image: linear-gradient(90deg, #000, transparent 82%);
}
.hero-inner { position: relative; z-index: 2; width: min(840px, 100%); }
.hero h1 { margin: 22px 0 26px; max-width: 1000px; }
.hero .lede { max-width: 700px; }
.hero-scan-label {
  position: absolute;
  z-index: 3;
  right: max(24px, calc((100vw - 1240px)/2));
  top: 28%;
  width: 260px;
  padding: 16px 18px;
  background: rgba(7,10,13,.72);
  border: 1px solid rgba(255,255,255,.18);
  border-left: 3px solid var(--yellow);
  backdrop-filter: blur(9px);
  box-shadow: var(--shadow);
}
.hero-scan-label strong { display: block; font-size: .78rem; letter-spacing: .16em; color: var(--yellow); text-transform: uppercase; }
.hero-scan-label span { display: block; margin-top: 5px; color: #d6dce1; font-size: .85rem; }
.hero-scroll {
  position: absolute;
  z-index: 4;
  right: 30px;
  bottom: 28px;
  writing-mode: vertical-rl;
  letter-spacing: .17em;
  text-transform: uppercase;
  font-size: .68rem;
  color: rgba(255,255,255,.55);
}

.metrics-band { position: relative; z-index: 3; margin-top: -1px; background: #0a0d10; border-block: 1px solid var(--line); }
.metrics-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.metric { min-height: 142px; padding: 27px 26px; border-right: 1px solid var(--line); }
.metric:first-child { border-left: 1px solid var(--line); }
.metric strong { display: block; color: var(--white); font-size: clamp(1.8rem, 3vw, 3rem); font-weight: 440; letter-spacing: -.04em; line-height: 1; }
.metric span { display: block; margin-top: 10px; color: var(--muted); font-size: .83rem; text-transform: uppercase; letter-spacing: .08em; }

.split { display: grid; grid-template-columns: 1.04fr .96fr; gap: 80px; align-items: center; }
.split.reverse { grid-template-columns: .96fr 1.04fr; }
.split.reverse > :first-child { order: 2; }
.split.reverse > :last-child { order: 1; }
.split-copy h2 { margin: 18px 0 24px; }
.split-copy p { color: var(--muted); }

.media-frame {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--line);
  background: #0b0f13;
  box-shadow: var(--shadow);
}
.media-frame img { width: 100%; height: 100%; object-fit: cover; }
.media-frame::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border: 1px solid rgba(255,255,255,.04);
}
.media-caption {
  position: absolute;
  left: 14px;
  bottom: 14px;
  z-index: 2;
  padding: 7px 10px;
  background: rgba(5,7,9,.82);
  border: 1px solid rgba(255,255,255,.14);
  color: #d8dde2;
  font-size: .71rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  backdrop-filter: blur(8px);
}
/* inset:auto and border:0 reset the .media-frame::after hairline these pseudo-elements share */
.corner-marks::before,
.corner-marks::after {
  content: "";
  position: absolute;
  z-index: 3;
  inset: auto;
  width: 28px;
  height: 28px;
  border: 0 solid var(--yellow);
}
.corner-marks::before { left: 14px; top: 14px; border-left-width: 1px; border-top-width: 1px; }
.corner-marks::after { right: 14px; bottom: 14px; border-right-width: 1px; border-bottom-width: 1px; }

.site-diagram { display: block; width: 100%; height: 100%; }
.site-diagram text { fill: var(--text); }
.site-diagram .diag-label { font-size: 15px; font-weight: 600; letter-spacing: -.015em; }
.site-diagram .diag-sub { fill: var(--muted-2); font-size: 12px; letter-spacing: .01em; }
.site-diagram .diag-item text { fill: #c8ced3; font-size: 14px; letter-spacing: .005em; }
.site-diagram .diag-leader { stroke: rgba(255,255,255,.3); stroke-width: 1; }
.site-diagram .diag-reveal { opacity: 0; }
.reveal.visible .site-diagram .diag-reveal { animation: diag-fade-in .8s ease forwards; animation-delay: .45s; }
.reveal.visible .site-diagram .diag-reveal-2 { animation-delay: .8s; }
.reveal.visible .site-diagram .diag-reveal-3 { animation-delay: 1.15s; }
@keyframes diag-fade-in { from { opacity: 0; } to { opacity: 1; } }

.capability-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.capability-card {
  min-height: 430px;
  padding: 34px;
  display: flex;
  flex-direction: column;
  background: linear-gradient(160deg, rgba(255,255,255,.055), rgba(255,255,255,.018));
  border: 1px solid var(--line);
  transition: transform .25s ease, border-color .25s ease, background .25s ease;
}
.capability-card:hover { transform: translateY(-7px); border-color: rgba(255,212,0,.56); background: linear-gradient(160deg, rgba(255,212,0,.075), rgba(255,255,255,.02)); }
.capability-card img { width: 64px; height: 64px; object-fit: contain; margin-bottom: auto; }
.capability-card .number { color: var(--muted-2); font: .75rem/1.2 "SFMono-Regular", Consolas, monospace; letter-spacing: .1em; }
.capability-card h3 { margin: 24px 0 16px; }
.capability-card p { color: var(--muted); margin-bottom: 28px; }
.capability-card .card-link { margin-top: auto; color: var(--yellow); font-weight: 700; font-size: .9rem; }
.capability-card .card-link::after { content: " →"; }

.signal-strip { display: grid; grid-template-columns: repeat(5, 1fr); border: 1px solid var(--line); }
.signal-item { padding: 22px; min-height: 120px; border-right: 1px solid var(--line); }
.signal-item:last-child { border-right: 0; }
.signal-item b { display: block; margin-bottom: 7px; color: var(--yellow); font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; }
.signal-item span { color: var(--muted); font-size: .9rem; }

.case-feature {
  display: grid;
  grid-template-columns: .84fr 1.16fr;
  min-height: 690px;
  border: 1px solid var(--line);
  background: #0b0f13;
}
.case-copy { padding: 64px; display: flex; flex-direction: column; justify-content: center; }
.case-copy h2 { margin: 18px 0 24px; }
.case-copy p { color: var(--muted); }
.case-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 30px 0 10px; }
.case-metric { padding: 18px 14px; border-top: 1px solid var(--line-strong); }
.case-metric strong { display: block; color: var(--yellow); font-size: 1.65rem; font-weight: 500; letter-spacing: -.035em; }
.case-metric span { color: var(--muted); font-size: .76rem; text-transform: uppercase; letter-spacing: .06em; }
.case-visual { position: relative; min-height: 520px; overflow: hidden; }
.case-visual img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(.16) contrast(1.04); }
.case-visual::before { content:""; position:absolute; inset:0; z-index:1; background: linear-gradient(90deg, #0b0f13 0, transparent 18%); }

.mission-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.mission-card {
  position: relative;
  min-height: 470px;
  overflow: hidden;
  border: 1px solid var(--line);
  background: #10151a;
}
.mission-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; filter: saturate(.78) contrast(1.06); }
.mission-card::after { content:""; position:absolute; inset:0; background: linear-gradient(180deg, rgba(4,7,9,.05), rgba(4,7,9,.9) 80%); }
/* for cards whose imagery is the evidence, the scrim stays off the top of the frame */
.mission-card-chip::after { background: linear-gradient(180deg, rgba(4,7,9,0), rgba(4,7,9,.3) 42%, rgba(4,7,9,.93) 76%); }
.mission-card-chip img { filter: none; }
.mission-card:hover img { transform: scale(1.035); }
.mission-card-content { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; padding: 34px; }
.mission-card .tag { color: var(--yellow); font-size: .73rem; letter-spacing: .14em; text-transform: uppercase; }
.mission-card h3 { margin: 8px 0 12px; }
.mission-card p { margin: 0; max-width: 560px; color: #c3c8ce; }

.timeline { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border: 1px solid var(--line); }
.timeline-step { position: relative; min-height: 310px; padding: 38px; border-right: 1px solid var(--line); }
.timeline-step:last-child { border-right: 0; }
.timeline-step .step-num { display: inline-grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--yellow); color: var(--yellow); border-radius: 50%; font: .78rem/1 "SFMono-Regular", monospace; }
.timeline-step:not(:last-child)::after { content: ""; position: absolute; z-index:2; right: -13px; top: 49px; width: 25px; height: 25px; background: var(--yellow); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.timeline-step h3 { margin: 48px 0 16px; }
.timeline-step p { color: var(--muted); }

.page-hero {
  position: relative;
  min-height: 620px;
  display: flex;
  align-items: end;
  overflow: hidden;
  padding: calc(var(--header-h) + 110px) 0 82px;
  background: #0b0e12;
}
.page-hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .55; filter: saturate(.75) contrast(1.08); }
.page-hero::after { content:""; position:absolute; inset:0; background: linear-gradient(90deg, rgba(4,7,9,.98) 0%, rgba(4,7,9,.74) 44%, rgba(4,7,9,.18) 100%), linear-gradient(0deg, #07090b 0%, transparent 42%); }
.page-hero-inner { position: relative; z-index: 2; max-width: 890px; }
.page-hero h1 { margin: 20px 0 24px; }
.page-hero .lede { max-width: 720px; }
/* The thesis hero carries the full argument plus evidence, so it sizes to content
   rather than the fixed page-hero band, and its headline runs at a tighter scale. */
.page-hero.hero-thesis { min-height: 0; align-items: center; padding: calc(var(--header-h) + 72px) 0 78px; }
.hero-thesis-grid {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1.06fr .94fr;
  gap: 62px;
  align-items: start;
}
.page-hero.hero-thesis h1 { line-height: 1.1; }
.page-hero.hero-thesis .lede { max-width: none; }
.hero-thesis-copy p:not(.lede):not(.hero-thesis-point) { max-width: 62ch; color: #b6bdc5; }
.hero-thesis-copy p.hero-thesis-point {
  max-width: 62ch;
  padding-left: 18px;
  border-left: 2px solid var(--yellow);
  color: #b6bdc5;
  font-size: clamp(1.05rem, 1.3vw, 1.18rem);
  font-weight: 650;
  line-height: 1.5;
}
.hero-thesis-evidence { display: grid; gap: 14px; }
/* The kicker and CTAs close out the evidence column, so their margins are trimmed
   by the grid gap above them to keep the 30px rhythm of the rest of the hero. */
.hero-thesis-evidence .statement-kicker {
  margin: 16px 0 0;
  padding-top: 24px;
  border-top: 1px solid var(--line);
  color: var(--white);
  font-size: clamp(1.1rem, 1.45vw, 1.35rem);
  font-weight: 600;
  letter-spacing: -.02em;
}
.hero-thesis-evidence .btn-row { margin-top: 16px; }
.story-section { padding-top: calc(var(--header-h) + 72px); }
.story-intro p:not(.lede) { margin: 0 0 16px; }
.story-intro p:last-child { margin-bottom: 0; }
.story-intro h1 { margin: 18px 0 24px; }

.module-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.module-card { padding: 32px; border: 1px solid var(--line); background: var(--panel); }
.module-card .module-label { color: var(--yellow); font: .75rem/1.2 "SFMono-Regular", Consolas, monospace; letter-spacing: .1em; text-transform: uppercase; }
.module-card h3 { margin: 42px 0 16px; }
.module-card p { color: var(--muted); }
.module-card ul { margin: 24px 0 0; padding: 0; list-style: none; }
.module-card li { padding: 10px 0; border-top: 1px solid var(--line); color: #c8cdd2; font-size: .9rem; }

.process-line { display: grid; grid-template-columns: repeat(5, 1fr); border-block: 1px solid var(--line); }
.process-step { position: relative; padding: 34px 24px 30px; min-height: 220px; border-right: 1px solid var(--line); }
.process-step:last-child { border-right: 0; }
.process-step .process-num { color: var(--yellow); font: .74rem/1 "SFMono-Regular", Consolas, monospace; }
.process-step h4 { margin: 58px 0 12px; }
.process-step p { color: var(--muted); font-size: .88rem; }
.process-step:not(:last-child)::after { content:"→"; position:absolute; right:-12px; top:29px; z-index:2; color:var(--yellow); background:#0a0d10; padding:0 4px; }
/* Solid track colour so the ::after arrow can mask the column border it sits on. */
.process-line-4 { grid-template-columns: repeat(4, 1fr); background: #0a0d10; }
.process-line-4 .process-num { display: block; min-height: 2.2em; }
.process-line-4 .process-step h4 { margin-top: 34px; }

.compare-table { border: 1px solid var(--line); overflow: hidden; }
.compare-row { display: grid; grid-template-columns: .9fr 1fr 1fr; border-bottom: 1px solid var(--line); }
.compare-row:last-child { border-bottom: 0; }
.compare-row > div { padding: 21px 24px; border-right: 1px solid var(--line); }
.compare-row > div:last-child { border-right: 0; }
.compare-row.header { background: #151b22; color: var(--white); font-weight: 700; }
.compare-row.header > div:first-child { color: var(--muted); }
.compare-row .criteria { color: #d3d7dc; font-weight: 650; }
.compare-row .traditional { color: #959ea8; }
.compare-row .raic { color: #ecf0f2; }
.compare-row .raic::before { content:"✓"; color: var(--yellow); margin-right: 10px; }

.feature-list { margin: 30px 0 0; padding: 0; list-style: none; }
.feature-list li { position: relative; padding: 16px 0 16px 30px; border-top: 1px solid var(--line); color: #c7cdd2; }
.feature-list li::before { content:"+"; position:absolute; left:0; color:var(--yellow); font-weight:800; }

.quote-card { padding: 42px; border-left: 3px solid var(--yellow); background: rgba(255,255,255,.04); }
.quote-card blockquote { margin: 0 0 22px; font-size: clamp(1.25rem, 2.2vw, 2rem); line-height: 1.38; letter-spacing: -.025em; }
/* the glyph sits high in its em box, so the size and tight leading are what make it read as a mark */
.quote-card blockquote::before,
.quote-card blockquote::after {
  display: block;
  color: var(--yellow);
  font-size: clamp(4.4rem, 7.4vw, 7rem);
  font-weight: 650;
  line-height: .5;
  opacity: .6;
}
.quote-card blockquote::before { content: "\201C"; margin-bottom: .14em; }
.quote-card blockquote::after { content: "\201D"; margin-top: .2em; text-align: right; }
.quote-card cite { color: var(--muted); font-style: normal; font-size: .85rem; }
.quote-card-branded cite { display: block; max-width: 68ch; }
.quote-card-branded {
  display: grid;
  grid-template-columns: 168px minmax(0, 1fr);
  gap: 40px;
  align-items: center;
}
.quote-card-logo {
  width: 168px;
  height: auto;
  justify-self: center;
}

.team-grid {
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));
  gap:14px;
}
.team-card { position:relative; overflow:hidden; border:1px solid var(--line); background:var(--panel); }
.team-card-art {
  position:relative;
  aspect-ratio:1/1;
  overflow:hidden;
  border-bottom:1px solid var(--line);
  background:#0a0e12;
}
.team-card-art img {
  width:100%;
  height:100%;
  object-fit:contain;
  filter:grayscale(1);
}
.team-card-body { padding:16px 17px 18px; }
.team-card h4 { margin:0 0 5px; font-size:clamp(.95rem,1.05vw,1.05rem); letter-spacing:-.01em; }
.team-card p { margin:0; color:var(--yellow); font-size:.66rem; line-height:1.45; letter-spacing:.06em; text-transform:uppercase; }

.values-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.value-card { min-height:300px; padding:32px; border:1px solid var(--line); background:linear-gradient(155deg, rgba(255,255,255,.055), rgba(255,255,255,.015)); }
.value-card .value-num { color:var(--yellow); font:.74rem/1 "SFMono-Regular", monospace; }
.value-card h3 { margin:88px 0 14px; }
.value-card p { color:var(--muted); }


.newsroom-toolbar {
  position:sticky;
  top:var(--header-h);
  z-index:120;
  margin-top:var(--header-h);
  border-block:1px solid var(--line);
  background:rgba(6,9,12,.92);
  backdrop-filter:blur(14px) saturate(140%);
}
.newsroom-toolbar-inner {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  min-height:64px;
}
.newsroom-count {
  color:var(--muted-2);
  font:.72rem/1 "SFMono-Regular", Consolas, monospace;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.newsroom-count span { color:var(--yellow); }
.newsroom-filters { display:flex; flex-wrap:wrap; gap:8px; }
.news-filter {
  padding:9px 15px;
  border:1px solid var(--line);
  background:transparent;
  color:#c7cdd2;
  font:.71rem/1 "SFMono-Regular", Consolas, monospace;
  letter-spacing:.12em;
  text-transform:uppercase;
  cursor:pointer;
  transition:border-color .2s ease, background .2s ease, color .2s ease;
}
.news-filter:hover { border-color:var(--line-strong); color:var(--white); }
.news-filter.is-active { border-color:var(--yellow); background:rgba(255,212,0,.1); color:var(--white); }

.newsroom-list { padding-top:52px; }
.newsroom-grid { counter-reset:news; display:flex; flex-direction:column; border-top:1px solid var(--line); }
.news-card {
  position:relative;
  min-width:0;
  display:grid;
  grid-template-columns:62px 138px minmax(0,1fr) auto;
  align-items:center;
  gap:22px;
  padding:16px 20px 16px 0;
  border-bottom:1px solid var(--line);
  counter-increment:news;
  transition:background .22s ease;
}
/* display:none entries drop out of the counter, so filtering renumbers the index. */
.news-card[hidden] { display:none; }
.news-card::before {
  content:counter(news, decimal-leading-zero);
  padding-left:20px;
  color:var(--muted-2);
  font:.74rem/1 "SFMono-Regular", Consolas, monospace;
  letter-spacing:.08em;
  transition:color .22s ease;
}
.news-card::after {
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:2px;
  background:var(--yellow);
  transform:scaleY(0);
  transform-origin:top;
  transition:transform .25s ease;
}
.news-card:hover { background:rgba(255,255,255,.032); }
.news-card:hover::before { color:var(--yellow); }
.news-card:hover::after { transform:scaleY(1); }
.news-card:focus-visible { outline:2px solid var(--yellow); outline-offset:-2px; }
.news-card-media {
  display:block;
  width:138px;
  height:80px;
  overflow:hidden;
  border:1px solid var(--line);
  background:#090d11;
}
.news-card-media img {
  width:100%;
  height:100%;
  object-fit:cover;
  filter:brightness(.82) saturate(.9);
  transition:transform .45s ease, filter .35s ease;
}
.news-card:hover .news-card-media img { transform:scale(1.06); filter:brightness(1.02) saturate(1); }
.news-card-body { min-width:0; display:flex; flex-direction:column; gap:9px; }
.news-card-source {
  color:var(--muted-2);
  font:.68rem/1 "SFMono-Regular", Consolas, monospace;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.news-card-title {
  margin:0;
  font-size:clamp(1rem,1.25vw,1.22rem);
  line-height:1.3;
  letter-spacing:-.02em;
  transition:color .22s ease;
}
.news-card:hover .news-card-title { color:var(--yellow); }
.news-card-go {
  color:var(--muted-2);
  font-size:1rem;
  transition:transform .25s ease, color .25s ease;
}
.news-card:hover .news-card-go { transform:translate(3px,-3px); color:var(--yellow); }
.newsroom-empty {
  padding:56px 0;
  color:var(--muted);
  font:.8rem/1.5 "SFMono-Regular", Consolas, monospace;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.newsroom-media-cta { margin-top:0; }

.blog-doc { width:100%; }
.blog-doc > p, .blog-doc li, .blog-doc td { color:#c1c7ce; }
.blog-doc h2 { font-size:clamp(1.45rem, 2.2vw, 2.1rem); margin:42px 0 16px; }
.blog-doc h3 { font-size:1.2rem; margin:28px 0 12px; }
.blog-doc p { margin:0 0 18px; }
.blog-doc a { color:var(--yellow); text-underline-offset:3px; }
.blog-doc img { display:block; max-width:100%; height:auto; margin:22px 0; }
.blog-doc figure { margin:22px 0; }
.blog-doc ol, .blog-doc ul { margin:0 0 20px; padding-left:22px; color:#c1c7ce; }
.blog-doc li { margin:8px 0; }
.blog-doc blockquote {
  margin:24px 0;
  padding:4px 0 4px 20px;
  border-left:3px solid var(--yellow);
  color:#d7dce0;
}
.blog-doc blockquote p { margin:0; }
.blog-doc .caption, .blog-doc .wp-caption-text { color:var(--muted); font-size:.88rem; }
.blog-doc iframe { width:100%; max-width:100%; aspect-ratio:16/9; border:0; margin:22px 0; }

.contact-section { padding: calc(var(--header-h) + 72px) 0 96px; }
.form-shell { display:grid; grid-template-columns:1fr; border:1px solid var(--line); background:var(--panel); }
.contact-form { padding:54px; min-height:560px; }
.contact-form iframe { display:block; width:100%; min-height:560px; border:0; }

/* The HubSpot embed injects its own light-theme rules after this stylesheet,
   so colors are forced here to stay legible on the dark panel. */
.contact-form,
.contact-form form,
.contact-form div,
.contact-form span,
.contact-form label,
.contact-form legend,
.contact-form p,
.contact-form li,
.contact-form h1,
.contact-form h2,
.contact-form h3,
.contact-form h4 { color:var(--text) !important; font-family:inherit !important; }
.contact-form .hs-form-field > label { display:block; margin-bottom:8px; color:#d7dce0 !important; font-size:.82rem; }
.contact-form .hs-field-desc { color:var(--muted) !important; font-size:.78rem; }
.contact-form .hs-form-required { color:var(--yellow) !important; }
.contact-form .hs-form-field { margin-bottom:18px; }
.contact-form .hs-input {
  width:100%;
  max-width:100%;
  padding:14px 15px;
  color:var(--white) !important;
  background:#080b0f !important;
  border:1px solid var(--line-strong);
  border-radius:0;
  outline:none;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.contact-form textarea.hs-input { min-height:150px; resize:vertical; }
.contact-form .hs-input:focus { border-color:var(--yellow); box-shadow:0 0 0 3px rgba(255,212,0,.08); }
.contact-form .hs-input::placeholder { color:var(--muted-2); }
.contact-form select.hs-input option { color:var(--white); background:#0b0f13; }
.contact-form .hs-form-booleancheckbox label,
.contact-form .hs-form-checkbox label,
.contact-form .hs-form-radio label { display:flex; align-items:flex-start; gap:10px; color:#c1c7ce !important; }
.contact-form .hs-form-booleancheckbox-display input,
.contact-form .inputs-list input[type="checkbox"],
.contact-form .inputs-list input[type="radio"] { width:auto; margin-top:5px; accent-color:var(--yellow); }
.contact-form .inputs-list { margin:0; padding:0; list-style:none; }
.contact-form .hs-button {
  display:inline-flex;
  align-items:center;
  padding:15px 26px;
  color:#060708 !important;
  background:var(--yellow) !important;
  border:1px solid var(--yellow);
  border-radius:0;
  font-weight:760;
  letter-spacing:.02em;
  cursor:pointer;
  transition:background .2s ease, border-color .2s ease, transform .2s ease;
}
.contact-form .hs-button:hover { background:var(--white); border-color:var(--white); transform:translateY(-2px); }
.contact-form .hs-error-msg,
.contact-form .hs-error-msgs label { color:#ff9b8a !important; font-size:.8rem; }
.contact-form .submitted-message { color:var(--text) !important; }
.contact-form .legal-consent-container,
.contact-form .legal-consent-container * { color:var(--muted) !important; font-size:.8rem; }
.contact-form .legal-consent-container a,
.contact-form a { color:var(--yellow) !important; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.field { display:flex; flex-direction:column; gap:8px; }
.field.full { grid-column:1/-1; }
.field label { color:#d7dce0; font-size:.82rem; }
.field input, .field textarea, .field select {
  width:100%;
  padding:14px 15px;
  color:var(--white);
  background:#080b0f;
  border:1px solid var(--line-strong);
  border-radius:0;
  outline:none;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.field textarea { min-height:150px; resize:vertical; }
.field input:focus, .field textarea:focus, .field select:focus { border-color:var(--yellow); box-shadow:0 0 0 3px rgba(255,212,0,.08); }
.field select option { background:#0b0f13; }
.form-note { margin-top:16px; color:var(--muted); font-size:.78rem; }
.form-status { display:none; margin-top:18px; padding:14px 16px; border-left:3px solid var(--yellow); background:rgba(255,212,0,.08); }
.form-status.show { display:block; }

.cta-band { position:relative; overflow:hidden; padding:92px 0; background:var(--yellow); color:#07090b; }
.cta-band::after { content:""; position:absolute; inset:-40% -20% -40% 55%; background:url('../images/aerial-texture.webp') center/cover; opacity:.12; transform:rotate(-6deg); }
.cta-inner { position:relative; z-index:2; display:flex; align-items:center; justify-content:space-between; gap:50px; }
.cta-band h2 { margin:0; max-width:820px; }
.cta-band p { margin:14px 0 0; max-width:680px; color:#363000; }
.cta-band .btn { flex:0 0 auto; }

.site-footer { background:#050709; border-top:1px solid var(--line); }
/* Sized for brand + Platform, Defense, Public Safety, and Company.
   When Commercial Geospatial gets its own column, change 4 to 5. */
.footer-top { padding:72px 0 54px; }
.footer-brand img { width:250px; height:auto; }
.footer-brand p { max-width:560px; margin:24px 0 0; color:var(--muted); }
.footer-nav { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:32px; margin-top:52px; padding-top:46px; border-top:1px solid var(--line); }
.footer-col h4 { margin:0 0 18px; color:var(--white); font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; }
.footer-col a { display:block; padding:5px 0; color:var(--muted); font-size:.9rem; }
.footer-col a:hover { color:var(--yellow); }
.footer-bottom { display:flex; justify-content:space-between; gap:24px; padding:22px 0 30px; border-top:1px solid var(--line); color:#78818b; font-size:.75rem; }
.footer-bottom a { color:#78818b; }
.footer-bottom a:hover { color:var(--yellow); }

.policy-section { padding: calc(var(--header-h) + 72px) 0 96px; }
.thanks-section { display: grid; place-items: center; min-height: calc(100svh - 260px); padding: calc(var(--header-h) + 56px) 0 80px; }
.thanks-inner { text-align: center; }
.thanks-inner h1 { margin: 0; max-width: 28ch; margin-inline: auto; font-size: clamp(1.5rem, 3vw, 2.25rem); line-height: 1.25; letter-spacing: -.02em; }
.policy-doc h1 { margin: 0 0 32px; letter-spacing: -.03em; }
.policy-doc > p, .policy-doc li { color: #c1c7ce; }
.policy-doc h2 { font-size: clamp(1.35rem, 2vw, 1.75rem); margin: 48px 0 16px; letter-spacing: -.02em; }
.policy-doc h3 { font-size: 1.15rem; margin: 28px 0 12px; }
.policy-doc ul { margin: 0 0 20px; padding-left: 22px; }
.policy-doc li { margin: 8px 0; }
.policy-doc a { color: var(--yellow); text-underline-offset: 3px; }
.policy-doc .policy-effective { color: var(--muted); margin-top: 48px; }

.reveal { opacity:0; transform:translateY(20px); transition:opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity:1; transform:none; }
.reveal-delay-1 { transition-delay:.08s; }
.reveal-delay-2 { transition-delay:.16s; }
.reveal-delay-3 { transition-delay:.24s; }
.reveal-delay-4 { transition-delay:.32s; }

@media (max-width: 1080px) {
  :root { --container:min(100% - 36px, 1040px); }
  .site-nav { gap:19px; }
  .header-cta { display:none; }
  .hero-scan-label { display:none; }
  .split { gap:48px; }
  .case-feature { grid-template-columns:1fr; }
  .case-visual { min-height:480px; }
  .case-visual::before { background:linear-gradient(180deg,#0b0f13 0,transparent 20%); }
  .footer-nav { grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px 26px; }
  .process-line-4 .process-step { padding:28px 18px 26px; }
  .hero-thesis-grid { gap:44px; }
}

@media (max-width: 820px) {
  :root { --header-h:68px; --container:calc(100vw - 32px); }
  .section { padding:86px 0; }
  .section-sm { padding:64px 0; }
  .site-nav {
    position:fixed;
    top:var(--header-h);
    left:0;
    right:0;
    height:calc(100svh - var(--header-h));
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    justify-content:flex-start;
    gap:0;
    padding:32px 24px;
    background:rgba(5,8,10,.98);
    transform:translateX(100%);
    transition:transform .25s ease;
    overflow:auto;
  }
  body.nav-open .site-nav { transform:none; }
  .site-nav a { width:100%; padding:16px 0; border-bottom:1px solid var(--line); font-size:1.15rem; }
  .nav-dropdown { display:block; width:100%; }
  .nav-dropdown-toggle {
    justify-content:space-between;
    width:100%;
    padding:16px 0;
    border-bottom:1px solid var(--line);
    font-size:1.15rem;
  }
  .nav-dropdown-menu {
    position:static;
    width:100%;
    max-height:0;
    padding:0 0 0 14px;
    overflow:hidden;
    border:0;
    background:transparent;
    box-shadow:none;
    opacity:1;
    visibility:visible;
    transform:none;
    transition:max-height .25s ease;
  }
  .nav-dropdown:hover .nav-dropdown-menu,
  .nav-dropdown:focus-within .nav-dropdown-menu { max-height:0; }
  .nav-dropdown.is-open .nav-dropdown-menu { max-height:220px; }
  .nav-dropdown-menu a { padding:13px 0; font-size:.98rem; }
  .nav-toggle { display:block; }
  .brand img { height:27px; }
  .hero { min-height:820px; padding-bottom:68px; background-position:62% center; }
  .hero h1 { font-size:clamp(3.3rem,13vw,5.4rem); }
  .hero-scroll { display:none; }
  .metrics-grid { grid-template-columns:repeat(2,1fr); }
  .metric:nth-child(3) { border-left:1px solid var(--line); }
  .metric:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .hero-thesis-grid { grid-template-columns:1fr; gap:40px; }
  .page-hero.hero-thesis { padding:calc(var(--header-h) + 52px) 0 62px; }
  .split, .split.reverse { grid-template-columns:1fr; gap:40px; }
  .split.reverse > :first-child, .split.reverse > :last-child { order:initial; }
  .capability-grid, .module-grid, .values-grid { grid-template-columns:1fr; }
  .capability-card { min-height:350px; }
  .signal-strip { grid-template-columns:1fr 1fr; }
  .signal-item { border-bottom:1px solid var(--line); }
  .signal-item:nth-child(2n) { border-right:0; }
  .signal-item:last-child { grid-column:1/-1; border-bottom:0; }
  .case-copy { padding:38px 30px; }
  .mission-grid { grid-template-columns:1fr; }
  .quote-card-branded { grid-template-columns:1fr; gap:22px; text-align:center; }
  .quote-card-branded blockquote::after { text-align:center; }
  .quote-card-logo { width:132px; }
  .timeline { grid-template-columns:1fr; }
  .timeline-step { min-height:auto; border-right:0; border-bottom:1px solid var(--line); }
  .timeline-step:last-child { border-bottom:0; }
  .timeline-step:not(:last-child)::after { right:auto; left:44px; top:auto; bottom:-12px; transform:rotate(90deg); }
  .process-line { grid-template-columns:1fr; }
  .process-step { min-height:auto; border-right:0; border-bottom:1px solid var(--line); }
  .process-step:last-child { border-bottom:0; }
  .process-step h4 { margin-top:28px; }
  .process-step:not(:last-child)::after { right:auto; left:24px; top:auto; bottom:-12px; transform:rotate(90deg); }
  .compare-row { grid-template-columns:.72fr 1fr 1fr; font-size:.84rem; }
  .compare-row > div { padding:16px 13px; }
  .process-line-4 .process-num { min-height:0; }
  .process-line-4 .process-step h4 { margin-top:28px; }
  .team-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; }
  .team-card-body { padding:16px 16px 17px; }
  .team-card h4 { font-size:1.1rem; }
  .team-card p { font-size:.72rem; }
  .contact-form { padding:34px 26px; }
  .cta-inner { flex-direction:column; align-items:flex-start; }
  .footer-nav { grid-template-columns:1fr 1fr; margin-top:44px; padding-top:38px; }
}

@media (max-width: 560px) {
  :root { --container:calc(100vw - 24px); }
  body { font-size:15px; }
  .section { padding:72px 0; }
  .hero { min-height:760px; padding-top:130px; }
  .hero h1 { font-size:clamp(3rem,15vw,4.7rem); }
  .page-hero { min-height:560px; padding-top:135px; }
  .btn-row { flex-direction:column; align-items:stretch; }
  .btn { width:100%; }
  .metric { padding:23px 16px; min-height:126px; }
  .metric strong { font-size:1.8rem; }
  .capability-card, .module-card { padding:27px 24px; }
  .signal-strip { grid-template-columns:1fr; }
  .signal-item { border-right:0; }
  .signal-item:last-child { grid-column:auto; }
  .case-metrics { grid-template-columns:1fr; }
  .mission-card { min-height:410px; }
  .mission-card-content { padding:26px; }
  .compare-table { overflow-x:auto; }
  .compare-row { min-width:720px; }
  /* diagrams scale with their frame, so secondary lines are dropped and labels enlarged to stay legible */
  .site-diagram .diag-sub { display:none; }
  .site-diagram .diag-label { font-size:20px; }
  .site-diagram .diag-item text { font-size:17px; }
  /* the caption is sized in px, so at this width it would cover part of the drawing */
  .diagram-frame .media-caption { display:none; }
  .team-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
  .team-card-body { padding:13px 13px 14px; }
  .team-card h4 { font-size:.95rem; }
  .team-card p { font-size:.63rem; letter-spacing:.05em; }
  .form-grid { grid-template-columns:1fr; }
  .field.full { grid-column:auto; }
  .footer-nav { grid-template-columns:1fr; gap:30px; }
  .footer-bottom { flex-direction:column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  .reveal { opacity:1; transform:none; }
  .site-diagram .diag-reveal { opacity:1; animation:none !important; }
}

/* isolation makes .hero a stacking context so the -1 video layers above its background image */
.hero.has-video {
  isolation:isolate;
  align-items:center;
  padding:0;
}
.hero-video { position:absolute; z-index:-1; inset:0; width:100%; height:100%; object-fit:cover; }

/* Keeps the headline readable as the footage animates between dark and bright scenes */
.hero.has-video .hero-video { filter:brightness(.62) saturate(.92); }
.hero-scrim {
  position:absolute;
  z-index:0;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(100deg, rgba(3,5,7,.88) 0%, rgba(3,5,7,.7) 26%, rgba(3,5,7,.34) 52%, rgba(3,5,7,.08) 74%, transparent 90%),
    linear-gradient(0deg, rgba(3,5,7,.7) 0%, rgba(3,5,7,.2) 32%, transparent 60%);
}
.hero.has-video .eyebrow,
.hero.has-video h1,
.hero.has-video .lede { text-shadow:0 1px 2px rgba(3,5,7,.55), 0 2px 22px rgba(3,5,7,.7); }

.hero h1 { font-size:clamp(2.75rem,5vw,4.75rem); max-width:20ch; }

/* Rotating hero headline, driven by assets/data/hero-rotator.json.
   Prefix and word are separate blocks so swapping words never reflows the line. */
.hero-rotator h1 { margin-bottom:22px; }
.hero-rotator [data-rotator-prefix] { display:block; }
/* The word box hugs the word and clips it, so the swap reads as a horizontal scroll */
.hero-rotator .rotator-word {
  display:block;
  width:fit-content;
  max-width:100%;
  overflow:hidden;
  color:var(--yellow);
  padding-bottom:.12em;
  margin-bottom:-.12em;
}
.hero-rotator .rotator-word-inner { display:inline-block; }
.hero-rotator.is-exiting .rotator-word-inner { animation:rotator-word-out .34s cubic-bezier(.4,0,.7,.2) both; }
.hero-rotator.is-entering .rotator-word-inner { animation:rotator-word-in .46s cubic-bezier(.16,.84,.24,1) both; }
@keyframes rotator-word-out {
  from { transform:none; opacity:1; }
  to { transform:translateX(-115%); opacity:0; }
}
@keyframes rotator-word-in {
  from { transform:translateX(115%); opacity:0; }
  to { transform:none; opacity:1; }
}
/* Subtitle crossfades in place, with two lines reserved so nothing below shifts */
.hero-rotator [data-rotator-sub] { min-height:calc(1.55em * 2); margin-bottom:0; }
.hero-rotator.is-exiting [data-rotator-sub] { animation:rotator-sub-out .3s ease both; }
.hero-rotator.is-entering [data-rotator-sub] { animation:rotator-sub-in .46s ease both; }
@keyframes rotator-sub-out {
  from { opacity:1; }
  to { opacity:0; }
}
@keyframes rotator-sub-in {
  from { opacity:0; }
  to { opacity:1; }
}

.statement { max-width:1060px; padding-left:34px; border-left:2px solid var(--yellow); }
.statement h2 { margin:0 0 26px; }
.statement .lede { max-width:900px; }
.statement p:not(.lede) { max-width:900px; color:#b6bdc5; font-size:1.06rem; line-height:1.68; }
.statement p strong { color:var(--text); font-weight:650; }
.statement p.statement-kicker {
  margin:34px 0 0;
  padding-top:26px;
  border-top:1px solid var(--line);
  color:var(--white);
  font-size:clamp(1.15rem,1.6vw,1.5rem);
  font-weight:600;
  letter-spacing:-.02em;
}

h2.problem-evidence-title {
  margin:0 0 16px;
  color:var(--muted-2);
  font-size:.74rem;
  font-weight:650;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.problem-stats { margin:0; padding:0; list-style:none; border:1px solid var(--line); background:var(--panel); }
.problem-stats > li {
  display:grid;
  grid-template-columns:minmax(3.6em, auto) 1fr;
  gap:20px;
  align-items:baseline;
  padding:19px 22px;
  border-bottom:1px solid var(--line);
}
.problem-stats > li:last-child { border-bottom:0; }
.problem-stats strong {
  color:var(--yellow);
  font-size:clamp(1.45rem, 2vw, 2rem);
  font-weight:440;
  letter-spacing:-.04em;
  line-height:1;
}
.problem-stats span { color:var(--muted); font-size:.87rem; line-height:1.45; }
.problem-stats-note { margin:14px 0 0; color:var(--muted-2); font-size:.74rem; }
.problem-stats-note a { color:var(--muted); text-decoration:underline; text-underline-offset:2px; }
.problem-stats-note a:hover { color:var(--white); }
.problem-stats-cite {
  margin-left:.22em;
  color:var(--yellow);
  font-size:.62em;
  font-weight:650;
  letter-spacing:0;
  vertical-align:super;
  line-height:1;
}
.problem-stats-cite:hover { color:var(--white); }

.intro-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:44px; }
.intro-card { padding-left:30px; border-left:1px solid var(--line); }
.intro-card-icon {
  display:inline-grid;
  place-items:center;
  width:72px;
  height:72px;
  border:1px solid var(--line-strong);
  border-radius:var(--radius-sm);
  background:rgba(255,255,255,.04);
  color:var(--yellow);
  line-height:1;
}
/* Lucide icons, ISC licensed (see ../icons/LICENSE-Lucide.txt) */
.intro-card-icon svg { display:block; width:40px; height:40px; }
.intro-card h3 { margin:26px 0 14px; }
.intro-card p { margin:0; color:var(--muted); }

/* Give the long homepage overview heading the same measure as neighboring sections. */
.home-analyst-heading { max-width: 1100px; }
.home-analyst-heading h2 { text-wrap: pretty; }

.integrate-list { max-width:78ch; }

.partner-marquee {
  --partner-gap: clamp(56px, 6vw, 104px);
  display: flex;
  overflow: hidden;
  margin-top: 58px;
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.partner-track {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--partner-gap);
  padding: 0 var(--partner-gap) 0 0;
  margin: 0;
  list-style: none;
  animation: partner-scroll 46s linear infinite;
}
.partner-marquee:hover .partner-track { animation-play-state: paused; }
/* Logos share a common 270px-tall canvas, so a single height keeps them optically balanced. */
.partner-track img {
  display: block;
  width: auto;
  height: clamp(96px, 10vw, 136px);
  opacity: .88;
}

@keyframes partner-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-100%); }
}

@media (prefers-reduced-motion: reduce) {
  .partner-marquee { overflow-x: auto; }
  .partner-track { animation: none; }
}

/* Platform overview */

/* The hero pairs a full-width screenshot with body copy, so it runs on a wider
   measure than the rest of the site to keep the text column readable. */
.platform-hero {
  --container: min(1400px, calc(100vw - 48px));
  position: relative;
  overflow: hidden;
  padding: calc(var(--header-h) + 104px) 0 112px;
  border-bottom: 1px solid var(--line);
  background:
    radial-gradient(circle at 82% 28%, rgba(81,216,208,.13), transparent 32%),
    radial-gradient(circle at 16% 70%, rgba(255,212,0,.08), transparent 27%),
    #070a0d;
}
.platform-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .3;
  background-image:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(to bottom, transparent, #000 20%, #000 80%, transparent);
}
.platform-hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  /* 775px is the width the screenshot reaches on the standard 1240px container,
     so capping it there sends the extra width of this hero to the copy instead. */
  grid-template-columns: minmax(0, 1fr) minmax(0, min(775px, 62%));
  gap: 48px;
  align-items: center;
}
.platform-hero-copy h1 { margin: 20px 0 25px; text-wrap: pretty; }
.platform-hero-copy .lede { max-width: 62ch; }
.platform-hero-actions { display: flex; flex-wrap: wrap; gap: 13px; margin-top: 36px; }

.platform-screen {
  position: relative;
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: #080b0e;
  box-shadow: 0 25px 80px rgba(0,0,0,.42);
}
.platform-screen img {
  display: block;
  width: 100%;
  height: auto;
}
.platform-screen figcaption {
  position: absolute;
  left: 12px;
  bottom: 12px;
  padding: 7px 10px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(5,8,10,.88);
  color: #dce1e5;
  font-size: .69rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  backdrop-filter: blur(10px);
}
.platform-screen-hero {
  transform: perspective(1100px) rotateY(-3deg) rotateX(1deg);
  box-shadow: 28px 36px 90px rgba(0,0,0,.52);
}

.loop-diagram { --loop-node-bg: #0b1015; position: relative; }
.loop-track {
  position: relative;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 20px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.loop-track::before {
  content: "";
  position: absolute;
  top: 26px;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, rgba(255,212,0,.55), var(--line-strong));
}
.loop-node { position: relative; text-align: center; }
.loop-node::after {
  content: "";
  position: absolute;
  top: 22px;
  right: -4px;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 6px solid var(--line-strong);
}
.loop-node:last-child::after { display: none; }
.loop-mark {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  margin: 0 auto 24px;
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  background: var(--loop-node-bg);
  color: var(--yellow);
  font: .78rem/1 "SFMono-Regular", Consolas, monospace;
}
.loop-mark::after {
  content: "";
  position: absolute;
  inset: -7px;
  border: 1px solid var(--yellow);
  border-radius: 50%;
  opacity: 0;
}
/* The first pass runs the full sequence from step 01; every later pass re-enters
   at step 02, so steps 01-03 pair a one-shot intro pulse with the looping one. */
.loop-node:nth-of-type(1) .loop-mark::after { animation: loop-ring 7.5s linear 1; }
.loop-node:nth-of-type(2) .loop-mark::after {
  animation: loop-ring 7.5s linear 1.25s 1, loop-ring 7.5s linear 7.5s infinite;
}
.loop-node:nth-of-type(3) .loop-mark::after {
  animation: loop-ring 7.5s linear 2.5s 1, loop-ring 7.5s linear 9.375s infinite;
}
.loop-node:nth-of-type(4) .loop-mark::after { animation: loop-ring 7.5s linear 3.75s infinite; }
.loop-node:nth-of-type(5) .loop-mark::after {
  border-color: var(--green);
  animation: loop-ring 7.5s linear infinite;
  animation-delay: 5.1s;
}
.loop-node h3 { margin: 0 0 12px; font-size: clamp(1.15rem, 1.45vw, 1.4rem); }
.loop-node:first-of-type h3 { white-space: nowrap; font-size: clamp(1.05rem, 1.3vw, 1.3rem); }
.loop-node p { margin: 0; color: var(--muted); font-size: .92rem; }

.loop-return {
  position: relative;
  width: 40%;
  height: 54px;
  margin: 34px 0 0 30%;
  border: 1px dashed var(--line-strong);
  border-top: 0;
  border-radius: 0 0 14px 14px;
}
.loop-return::before {
  content: "";
  position: absolute;
  left: -5px;
  top: -3px;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 7px solid var(--yellow);
}
.loop-return-label {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translate(-50%, 50%);
  padding: 6px 14px;
  background: var(--loop-node-bg);
  color: var(--muted);
  font: .72rem/1 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.loop-pulse,
.loop-pulse-exit,
.loop-return-pulse {
  position: absolute;
  z-index: 2;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--yellow);
  box-shadow: 0 0 0 4px rgba(255,212,0,.15), 0 0 16px 3px rgba(255,212,0,.55);
}
.loop-pulse {
  top: 26px;
  left: 10%;
  z-index: 1;
  margin: -4px 0 0 -4px;
  animation: loop-pulse-intro 7.5s linear 1, loop-pulse-track 7.5s linear 7.5s infinite;
}
.loop-pulse-exit {
  top: 26px;
  left: 70%;
  z-index: 1;
  margin: -4px 0 0 -4px;
  background: var(--green);
  box-shadow: 0 0 0 4px rgba(141,191,65,.15), 0 0 16px 3px rgba(141,191,65,.55);
  opacity: 0;
  animation: loop-pulse-exit 7.5s linear infinite;
}
.loop-return-pulse {
  top: 0;
  left: 100%;
  margin: -4px 0 0 -4px;
  opacity: 0;
  animation: loop-pulse-return 7.5s linear infinite;
}

@keyframes loop-pulse-intro {
  0% { left: 10%; opacity: 0; }
  3% { opacity: 1; }
  50% { left: 70%; opacity: 1; }
  55% { left: 70%; opacity: 0; }
  100% { left: 70%; opacity: 0; }
}
@keyframes loop-pulse-track {
  0% { left: 30%; opacity: 1; }
  50% { left: 70%; opacity: 1; }
  55% { left: 70%; opacity: 0; }
  100% { left: 70%; opacity: 0; }
}
@keyframes loop-pulse-return {
  0%, 55% { left: 100%; top: 0; opacity: 0; }
  58% { left: 100%; top: 0; opacity: 1; }
  66% { left: 100%; top: 100%; opacity: 1; }
  90% { left: 0%; top: 100%; opacity: 1; }
  97% { left: 0%; top: 0; opacity: 1; }
  100% { left: 0%; top: 0; opacity: 0; }
}
@keyframes loop-pulse-exit {
  0%, 50% { left: 70%; opacity: 0; }
  55% { left: 70%; opacity: 1; }
  68% { left: 90%; opacity: 1; }
  72% { left: 90%; opacity: 0; }
  100% { left: 90%; opacity: 0; }
}
@keyframes loop-pulse-exit-rail {
  0%, 50% { top: 72%; opacity: 0; }
  55% { top: 72%; opacity: 1; }
  68% { top: 95%; opacity: 1; }
  72% { top: 95%; opacity: 0; }
  100% { top: 95%; opacity: 0; }
}
@keyframes loop-pulse-intro-rail {
  0% { top: 3%; opacity: 0; }
  3% { opacity: 1; }
  50% { top: 72%; opacity: 1; }
  55% { top: 72%; opacity: 0; }
  100% { top: 72%; opacity: 0; }
}
@keyframes loop-pulse-rail {
  0% { top: 26%; opacity: 1; }
  50% { top: 72%; opacity: 1; }
  55% { top: 72%; opacity: 0; }
  100% { top: 72%; opacity: 0; }
}
@keyframes loop-ring {
  0% { transform: scale(.8); opacity: 0; }
  4% { opacity: .85; }
  15% { transform: scale(1.32); opacity: 0; }
  100% { transform: scale(1.32); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .loop-pulse { animation: none; opacity: 1; }
  .loop-return-pulse { display: none; }
  .loop-pulse-exit { display: none; }
  .loop-mark::after { animation: none; }
}

.platform-capability-copy { max-width: 980px; margin-bottom: 58px; }
.platform-capability-copy h2 { margin: 18px 0 24px; }
.platform-capability-copy > .lede { max-width: 840px; }
.platform-feature-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-top: 42px;
}
.platform-feature-grid > div {
  padding: 23px 24px;
  border-top: 1px solid var(--line-strong);
  background: rgba(255,255,255,.025);
}
.platform-feature-grid h4 { margin-bottom: 10px; color: var(--white); }
.platform-feature-grid p { margin: 0; color: var(--muted); font-size: .92rem; }
.platform-screen-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.platform-screen-grid .platform-screen-wide { grid-column: 1 / -1; }

.platform-capability .split { grid-template-columns: minmax(400px, .84fr) minmax(0, 1.16fr); gap: 56px; }
.platform-capability .split.reverse { grid-template-columns: minmax(0, 1.16fr) minmax(400px, .84fr); }
.platform-capability .feature-list { margin-top: 34px; }

.platform-foundation {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(circle at 88% 8%, rgba(81,216,208,.11), transparent 34%),
    radial-gradient(circle at 6% 92%, rgba(255,212,0,.07), transparent 30%);
}
.platform-foundation::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .22;
  background-image:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 78%, transparent);
}
.platform-foundation > .container { position: relative; z-index: 1; }

.platform-tech-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px;
}
.platform-tech-grid article {
  padding: 32px 30px;
  border: 1px solid var(--line);
  background: linear-gradient(145deg, rgba(255,255,255,.045), rgba(255,255,255,.015));
}
.platform-tech-grid h3 { margin: 0 0 14px; font-size: clamp(1.25rem, 1.6vw, 1.55rem); }
.platform-tech-grid p { margin: 0; color: var(--muted); }

.platform-paper { border-top: 1px solid var(--line); }
.platform-paper-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
  gap: 56px;
  align-items: start;
}
.platform-paper-copy h2 { margin: 18px 0 24px; }
.platform-paper-copy .lede { max-width: 68ch; }
.platform-paper-copy > p { max-width: 68ch; color: var(--muted); }
.platform-paper-download { margin-top: 34px; }
.platform-paper-download::after { content: "↓"; }
.platform-paper-findings {
  padding: 28px 28px 8px;
  border: 1px solid var(--line);
  background: linear-gradient(145deg, rgba(255,255,255,.045), rgba(255,255,255,.015));
}
.platform-paper-meta {
  margin: 0 0 22px;
  color: var(--yellow);
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.platform-paper-findings ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.platform-paper-findings li {
  display: grid;
  grid-template-columns: 5.6rem minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  padding: 18px 0;
  border-top: 1px solid var(--line);
}
.platform-paper-findings li:first-of-type { border-top: 0; padding-top: 0; }
.platform-paper-findings strong {
  color: var(--white);
  font-size: clamp(1.35rem, 1.8vw, 1.7rem);
  letter-spacing: -.03em;
  line-height: 1.1;
}
.platform-paper-findings span { color: var(--muted); font-size: .92rem; }

.platform-docs-cta .eyebrow { margin-bottom: 18px; }

.btn-play::after { content: "\25B6"; font-size: .78em; }

.video-modal {
  position: fixed;
  inset: 0;
  z-index: 400;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.video-modal[hidden] { display: none; }
.video-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(3,5,7,.86);
  backdrop-filter: blur(6px);
}
.video-modal-panel {
  position: relative;
  z-index: 1;
  width: min(1180px, 100%);
  max-height: calc(100vh - 48px);
  overflow: auto;
  border: 1px solid var(--line-strong);
  background: #0b1015;
  box-shadow: 0 40px 120px rgba(0,0,0,.62);
}
.video-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 18px 22px;
  border-bottom: 1px solid var(--line);
}
.video-modal-head h2 { margin: 0; font-size: clamp(1.05rem, 1.4vw, 1.3rem); }
.video-modal-close {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border: 1px solid var(--line-strong);
  background: rgba(255,255,255,.04);
  color: var(--white);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
  transition: background .2s ease, border-color .2s ease, color .2s ease;
}
.video-modal-close:hover { background: var(--yellow); border-color: var(--yellow); color: #060708; }
.video-modal-body { display: grid; grid-template-columns: minmax(0, 1fr) 320px; }
.video-frame { position: relative; aspect-ratio: 16 / 9; background: #000; }
.video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-playlist { margin: 0; padding: 0; list-style: none; border-left: 1px solid var(--line); }
.video-playlist button {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 15px;
  width: 100%;
  padding: 21px 22px;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: transparent;
  color: #c7cdd2;
  text-align: left;
  cursor: pointer;
  transition: background .2s ease, color .2s ease;
}
.video-playlist button:hover { background: rgba(255,255,255,.045); color: var(--text); }
.video-playlist button.is-active { background: rgba(255,212,0,.08); color: var(--white); }
.video-playlist-mark { color: var(--yellow); font: .72rem/1 "SFMono-Regular", Consolas, monospace; }
.video-playlist-title { font-size: .97rem; }
.video-playlist-time { color: var(--muted-2); font: .72rem/1 "SFMono-Regular", Consolas, monospace; }

@media (max-width: 820px) {
  .video-modal { padding: 14px; }
  .video-modal-panel { max-height: calc(100vh - 28px); }
  .video-modal-body { grid-template-columns: 1fr; }
  .video-playlist { border-left: 0; border-top: 1px solid var(--line); }
  .video-playlist button { padding: 17px 18px; }
}

@media (max-width: 1080px) {
  /* Stacked here, so the hero returns to the shared container to stay aligned with the page. */
  .platform-hero { --container: inherit; }
  .platform-hero-grid { grid-template-columns: 1fr; gap: 52px; }
  .platform-hero-copy { max-width: 850px; }
  .platform-screen-hero { transform: none; }
  .loop-track { grid-template-columns: 1fr; gap: 28px; }
  .loop-track::before {
    top: 0;
    bottom: 0;
    left: 26px;
    right: auto;
    width: 1px;
    height: auto;
    background: linear-gradient(180deg, rgba(255,212,0,.55), var(--line-strong));
  }
  .loop-node {
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    column-gap: 22px;
    text-align: left;
  }
  .loop-node::after { display: none; }
  .loop-mark { margin: 0; }
  .loop-node h3, .loop-node p { grid-column: 2; }
  .loop-node h3 { align-self: center; margin-bottom: 10px; }
  .loop-return {
    width: auto;
    height: auto;
    margin: 26px 0 0 26px;
    border: 0;
  }
  .loop-return::before { display: none; }
  .loop-return-label {
    position: static;
    display: inline-block;
    transform: none;
    border: 1px dashed var(--line-strong);
    border-radius: 999px;
  }
  .loop-return-pulse { display: none; }
  .loop-pulse {
    top: 3%;
    left: 26px;
    animation-name: loop-pulse-intro-rail, loop-pulse-rail;
  }
  .loop-pulse-exit {
    left: 26px;
    top: 72%;
    animation-name: loop-pulse-exit-rail;
  }
  .platform-capability .split,
  .platform-capability .split.reverse { grid-template-columns: 1fr; gap: 46px; }
  .platform-capability .split.reverse > :first-child,
  .platform-capability .split.reverse > :last-child { order: initial; }
}

@media (max-width: 820px) {
  .platform-hero { padding: calc(var(--header-h) + 72px) 0 82px; }
  .platform-feature-grid,
  .platform-tech-grid { grid-template-columns: 1fr; }
  .platform-paper-grid { grid-template-columns: 1fr; gap: 32px; }
  .platform-paper-findings li { grid-template-columns: 1fr; gap: 8px; }
  .platform-screen-grid { grid-template-columns: 1fr; }
  .platform-screen-grid .platform-screen-wide { grid-column: auto; }
}

@media (max-width: 560px) {
  .platform-hero { padding-top: calc(var(--header-h) + 54px); }
  .platform-hero-actions { flex-direction: column; }
  .loop-node { grid-template-columns: 44px minmax(0, 1fr); column-gap: 18px; }
  .loop-mark { width: 44px; height: 44px; }
  .loop-track::before { left: 22px; }
  .loop-return { margin-left: 22px; }
  .loop-pulse { left: 22px; }
  .loop-pulse-exit { left: 22px; }
  .platform-screen figcaption { position: static; border: 0; border-top: 1px solid var(--line); }
}

.serve-stack { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.serve-card {
  position:relative;
  display:flex;
  align-items:flex-end;
  aspect-ratio:3/4;
  min-height:520px;
  overflow:hidden;
  border:1px solid var(--line);
  background:#0f1419;
}
.serve-card img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:brightness(.46) saturate(.85); }
.serve-card::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg, rgba(4,7,9,.92) 0%, rgba(4,7,9,.42) 44%, rgba(4,7,9,.08) 100%); }
.serve-card-content { position:relative; z-index:2; padding:34px 30px; }
.serve-card-content h3 { margin:26px 0 14px; }
.serve-card-content p { margin:0; color:#c9ced3; }
.serve-card img { transition: transform .55s ease, filter .35s ease; }
.serve-card::before {
  content: "Explore market →";
  position: absolute;
  z-index: 3;
  right: 24px;
  top: 24px;
  padding: 7px 10px;
  border: 1px solid rgba(255,255,255,.2);
  background: rgba(5,8,10,.68);
  color: var(--white);
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  opacity: 0;
  transform: translateY(-6px);
  transition: opacity .25s ease, transform .25s ease;
}
.serve-card:hover img { transform: scale(1.035); filter: brightness(.58) saturate(.9); }
.serve-card:hover::before,
.serve-card:focus-visible::before { opacity: 1; transform: none; }
.serve-card:focus-visible { outline: 2px solid var(--yellow); outline-offset: 3px; }
.num-circle {
  display:inline-grid;
  place-items:center;
  width:44px;
  height:44px;
  border:1px dashed var(--line-strong);
  border-radius:50%;
  color:var(--yellow);
  font:.78rem/1 "SFMono-Regular", Consolas, monospace;
}

.quote-section { border-block:1px solid var(--line); }
.quote-slider { position:relative; }
.quote-viewport { position:relative; min-height:min(680px,80vh); }
.quote-slide {
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  opacity:0;
  visibility:hidden;
  transition:opacity .55s ease;
}
.quote-slide.is-active { opacity:1; visibility:visible; }
.quote-slide-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:brightness(.44) saturate(.9); }
.quote-slide .container { position:relative; z-index:2; }
.quote-slide-inner { max-width:54ch; }
.quote-slide blockquote {
  margin:0 0 24px;
  font-size:clamp(1.35rem,2.7vw,2.6rem);
  line-height:1.2;
  letter-spacing:-.03em;
  text-wrap:balance;
}
.quote-slide cite { color:#cfd4d9; font-style:normal; font-size:.82rem; letter-spacing:.12em; text-transform:uppercase; }
.quote-slide cite::before { content:"— "; color:var(--yellow); }
.quote-controls { display:flex; align-items:center; gap:18px; padding:22px 0 26px; }
.quote-arrow {
  display:inline-grid;
  place-items:center;
  width:46px;
  height:46px;
  flex:0 0 auto;
  border:1px solid var(--line-strong);
  background:rgba(255,255,255,.035);
  color:var(--white);
  cursor:pointer;
  transition:background .2s ease, border-color .2s ease, color .2s ease;
}
.quote-arrow:hover { background:var(--yellow); border-color:var(--yellow); color:#060708; }
.quote-dots { display:flex; flex-wrap:wrap; gap:9px; margin-inline:auto; }
.quote-dots button {
  width:10px;
  height:10px;
  padding:0;
  border:1px solid var(--line-strong);
  border-radius:50%;
  background:transparent;
  cursor:pointer;
  transition:background .2s ease, border-color .2s ease;
}
.quote-dots button.is-active { background:var(--yellow); border-color:var(--yellow); }

.cta-band .eyebrow { color:#4a4100; }

@media (max-width: 1080px) {
  .intro-cards { grid-template-columns:1fr 1fr; }
  .serve-stack { gap:14px; }
  .serve-card { min-height:460px; }
  .serve-card-content { padding:28px 24px; }
}

@media (max-width: 820px) {
  .hero.has-video { padding:0; }
  .hero h1 { font-size:clamp(2.4rem,8.5vw,3.5rem); }
  .statement { padding-left:22px; }
  .intro-cards { grid-template-columns:1fr; gap:32px; }
  .serve-stack { grid-template-columns:1fr; gap:18px; }
  .serve-card { aspect-ratio:auto; min-height:460px; }
  .serve-card-content { padding:30px 26px; }
  .quote-viewport { min-height:600px; }
  .newsroom-toolbar-inner { flex-direction:column; align-items:flex-start; gap:0; padding:14px 0 16px; }
  .news-card { grid-template-columns:44px 108px minmax(0,1fr); gap:16px; padding-right:14px; }
  .news-card::before { padding-left:14px; }
  .news-card-media { width:108px; height:66px; }
  .news-card-go { display:none; }
}

@media (max-width: 560px) {
  .hero.has-video { padding:0; }
  .hero h1 { font-size:clamp(2.15rem,10vw,2.9rem); }
  .quote-viewport { min-height:540px; }
  .quote-controls { gap:12px; }
  .quote-arrow { width:42px; height:42px; }
  .news-card { grid-template-columns:36px minmax(0,1fr); gap:12px; padding:14px 12px 14px 0; }
  .news-card::before { padding-left:12px; align-self:start; }
  .news-card-media { display:none; }
}

.page-construction { min-height: 100vh; display: flex; flex-direction: column; }
.page-construction .site-header { background: rgba(5,8,10,.82); border-color: var(--line); }
.construction-hero {
  flex: 1;
  min-height: calc(100vh - var(--header-h) - 72px);
  display: flex;
  align-items: center;
}
.page-construction .page-hero-inner { max-width: none; }
.page-construction .construction-hero h1 {
  margin-top: 0;
  white-space: nowrap;
}
.page-construction .construction-hero .lede { max-width: 42rem; }
.construction-footer { margin-top: 0; }
.construction-footer .footer-bottom { padding-block: 24px; }

/* Public safety & municipal */
.ps-hero h1 { max-width: 19ch; margin-top: 0; font-size: clamp(2.5rem, 4.4vw, 4.15rem); }
.ps-hero .btn-row { margin-bottom: 42px; }
.ps-sources {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ps-sources li {
  padding: 8px 14px;
  border: 1px solid var(--line-strong);
  background: rgba(5,8,10,.55);
  color: #d7dce1;
  font: .69rem/1.2 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .14em;
  text-transform: uppercase;
  backdrop-filter: blur(8px);
}
.split-copy .ps-kicker {
  margin: 34px 0 0;
  padding-top: 24px;
  border-top: 1px solid var(--line);
  color: var(--white);
  font-size: clamp(1.05rem, 1.35vw, 1.28rem);
  font-weight: 600;
  letter-spacing: -.02em;
}

.ps-shots {
  display: grid;
  grid-template-columns: .78fr 1.22fr;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
  min-height: 540px;
}
.ps-shot-map { grid-row: 1 / -1; }
.ps-shots .media-frame { min-height: 0; height: 100%; }

/* Commercial GIS */
.cg-hero {
  background: #070a0d;
}
.cg-hero .page-hero-bg {
  opacity: .6;
  object-position: center 58%;
  filter: saturate(.78) contrast(1.04) brightness(.95);
}
.cg-hero h1 { max-width: 16ch; margin-top: 0; font-size: clamp(2.7rem, 4.8vw, 4.7rem); }

.cg-explore {
  overflow: hidden;
}
/* Shares the bordered, hairline-divided treatment of .cg-workflow below it. */
.cg-pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border: 1px solid var(--line);
  background: #080c10;
}
.cg-pillar { padding: 36px 32px 38px; border-right: 1px solid var(--line); }
.cg-pillar:last-child { border-right: 0; }
.cg-pillar-num {
  color: var(--yellow);
  font: .7rem/1 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .1em;
}
.cg-pillar h3 { margin: 28px 0 15px; max-width: 22ch; }
.cg-pillar p { margin: 0; color: var(--muted); }
.cg-workflow {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 28px;
  margin-top: 58px;
  padding: 32px;
  border: 1px solid var(--line);
  background: #080c10;
}
.cg-workflow-source,
.cg-workflow-outcomes {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.cg-workflow-source { justify-content: flex-end; }
.cg-workflow-source span,
.cg-workflow-outcomes span {
  padding: 8px 10px;
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: .72rem;
}
.cg-workflow-index {
  position: relative;
  min-width: 190px;
  padding: 20px 28px;
  border: 1px solid var(--yellow);
  text-align: center;
}
.cg-workflow-index::before,
.cg-workflow-index::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 29px;
  height: 1px;
  background: var(--yellow);
}
.cg-workflow-index::before { right: 100%; }
.cg-workflow-index::after { left: 100%; }
.cg-workflow-index strong,
.cg-workflow-index small { display: block; }
.cg-workflow-index strong { font-size: .9rem; }
.cg-workflow-index small { margin-top: 5px; color: var(--yellow); font-size: .68rem; text-transform: uppercase; letter-spacing: .1em; }

.cg-industry-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  align-items: stretch;
}
.cg-industry {
  display: flex;
  flex-direction: column;
  min-width: 0;
  border: 1px solid var(--line);
  background: #0b1015;
}
.cg-industry-image {
  position: relative;
  aspect-ratio: 1.42 / 1;
  overflow: hidden;
  border-bottom: 1px solid var(--line);
}
.cg-industry-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 46%, rgba(4,7,9,.85));
}
.cg-industry-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(.68) contrast(1.06);
  transition: transform .5s ease;
}
.cg-industry:hover .cg-industry-image img { transform: scale(1.03); }
.cg-industry-image span {
  position: absolute;
  z-index: 2;
  left: 20px;
  bottom: 17px;
  color: var(--yellow);
  font: .67rem/1.2 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.cg-industry-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 28px;
}
.cg-industry-body h3 { margin: 0 0 15px; }
.cg-industry-intro { min-height: 4.8em; margin: 0 0 24px; color: var(--muted); }
.cg-industry-body ul {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--line);
}
.cg-industry-body li {
  padding: 8px 0 8px 18px;
  position: relative;
  border-bottom: 1px solid var(--line);
  color: #c6ccd1;
  font-size: .86rem;
}
.cg-industry-body li::before {
  content: "+";
  position: absolute;
  left: 0;
  color: var(--yellow);
}
.cg-industry-value {
  margin-top: auto;
  padding-top: 26px;
}
.cg-industry-value strong {
  display: block;
  margin-bottom: 8px;
  color: var(--yellow);
  font-size: .68rem;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.cg-industry-value p { margin: 0; color: var(--muted); font-size: .88rem; }

@media (max-width: 1080px) {
  .cg-pillar { padding: 28px 24px 30px; }
  .cg-industry-grid { gap: 14px; }
  .cg-industry-body { padding: 24px 21px; }
}

@media (max-width: 820px) {
  .ps-hero .btn-row { margin-bottom: 34px; }
  .ps-shots { min-height: 460px; }
  .cg-pillars,
  .cg-industry-grid { grid-template-columns: 1fr; }
  .cg-pillar { border-right: 0; border-bottom: 1px solid var(--line); }
  .cg-pillar:last-child { border-bottom: 0; }
  .cg-pillar h3 { max-width: 26ch; }
  .cg-workflow { grid-template-columns: 1fr; gap: 20px; }
  .cg-workflow-source,
  .cg-workflow-outcomes { justify-content: center; }
  .cg-workflow-index { width: min(300px, 100%); margin-inline: auto; }
  .cg-workflow-index::before,
  .cg-workflow-index::after { display: none; }
  .cg-industry { display: grid; grid-template-columns: minmax(240px, .8fr) minmax(0, 1.2fr); }
  .cg-industry-image { height: 100%; min-height: 510px; aspect-ratio: auto; border-bottom: 0; border-right: 1px solid var(--line); }
  .cg-industry-intro { min-height: 0; }
}

@media (max-width: 560px) {
  .ps-sources { gap: 8px; }
  .ps-sources li { padding: 7px 11px; font-size: .62rem; letter-spacing: .1em; }
  .ps-shots {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: minmax(280px, 42vw) minmax(180px, 28vw);
    min-height: 0;
  }
  .ps-shot-map { grid-column: 1 / -1; grid-row: 1; }
  .cg-hero h1 { font-size: clamp(2.4rem, 12vw, 3.2rem); }
  .cg-pillar { padding: 26px 20px 28px; }
  .cg-pillar h3 { margin: 22px 0 13px; }
  .cg-workflow { padding: 24px 18px; }
  .cg-industry { display: flex; }
  .cg-industry-image { min-height: 0; height: auto; aspect-ratio: 1.42 / 1; border-right: 0; border-bottom: 1px solid var(--line); }
  .cg-industry-body { padding: 25px 22px; }
}