:root {
  --campaign-forest: #173b32;
  --campaign-deep: #092c25;
  --campaign-cream: #f2e7d1;
  --campaign-paper: #fbf5e9;
  --campaign-sage: #aebca4;
  --campaign-blue: #9db9bc;
  --campaign-terra: #ce745d;
  --campaign-rose: #dfa19a;
  --campaign-yellow: #d9cf76;
  --campaign-line: rgba(9, 44, 37, 0.24);
  --campaign-body: "Familjen Grotesk", "Helvetica Neue", Arial, sans-serif;
  --campaign-serif: "Instrument Serif", Georgia, serif;
  --campaign-mono: "IBM Plex Mono", monospace;
}

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  scrollbar-color: var(--campaign-terra) var(--campaign-forest);
}

body.campaign-home {
  background: var(--campaign-paper);
  color: var(--campaign-deep);
  font-family: var(--campaign-body);
  margin: 0;
  overflow-x: clip;
}

.campaign-home a { color: inherit; }
.campaign-home img { display: block; max-width: none; }
.campaign-home h1,
.campaign-home h2,
.campaign-home p,
.campaign-home figure { margin: 0; }

.skip-link {
  background: var(--campaign-paper);
  color: var(--campaign-deep);
  left: 16px;
  padding: 12px 16px;
  position: fixed;
  top: -80px;
  z-index: 300;
}

.skip-link:focus { top: 16px; }

.visually-hidden {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

/* Navigation is deliberately distinct from the artwork. */
.campaign-header {
  align-items: center;
  background: rgba(247, 239, 223, 0.94);
  border-bottom: 1px solid rgba(9, 44, 37, 0.18);
  color: var(--campaign-deep);
  display: flex;
  height: 68px;
  justify-content: space-between;
  left: 0;
  padding: 0 48px;
  position: fixed;
  right: 0;
  top: 0;
  transform: translateY(0);
  transition: background-color 240ms ease, transform 320ms ease;
  z-index: 200;
}

.campaign-header.is-hidden { transform: translateY(-105%); }
.campaign-header.is-scrolled { background: rgba(251, 245, 233, 0.98); }

.campaign-brand {
  align-items: center;
  display: inline-flex;
  font-size: 0.9rem;
  font-weight: 800;
  gap: 11px;
  text-decoration: none;
}

.campaign-brand img { height: 25px; width: 25px; }

.campaign-nav {
  align-items: center;
  display: flex;
  font-family: var(--campaign-mono);
  font-size: 0.68rem;
  font-weight: 600;
  gap: 30px;
  text-transform: uppercase;
}

.mobile-menu-toggle {
  display: none;
}

.campaign-nav > a,
.campaign-nav-group > a {
  position: relative;
  text-decoration: none;
}

.campaign-nav > a:not(.campaign-contact-link)::after,
.campaign-nav-group > a::after {
  background: currentColor;
  bottom: -5px;
  content: "";
  height: 1px;
  left: 0;
  position: absolute;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 180ms ease;
  width: 100%;
}

.campaign-nav > a:hover::after,
.campaign-nav-group:hover > a::after {
  transform: scaleX(1);
  transform-origin: left;
}

.campaign-nav > a.campaign-contact-link {
  background: var(--campaign-deep);
  border: 1px solid var(--campaign-deep);
  color: var(--campaign-paper);
  display: inline-flex;
  padding: 11px 17px;
}

.campaign-nav-group { position: relative; }

.campaign-menu {
  background: var(--campaign-paper);
  border: 1px solid var(--campaign-line);
  box-shadow: 0 24px 55px rgba(9, 44, 37, 0.16);
  display: grid;
  left: 50%;
  min-width: 230px;
  opacity: 0;
  padding: 8px;
  pointer-events: none;
  position: absolute;
  top: calc(100% + 22px);
  transform: translate(-50%, 8px);
  transition: opacity 160ms ease, transform 160ms ease;
}

.campaign-menu::before {
  content: "";
  height: 24px;
  left: 0;
  position: absolute;
  right: 0;
  top: -24px;
}

.campaign-nav-group:hover .campaign-menu,
.campaign-nav-group:focus-within .campaign-menu {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, 0);
}

.campaign-menu a {
  border-bottom: 1px solid rgba(9, 44, 37, 0.12);
  padding: 12px 10px;
  text-decoration: none;
}

.campaign-menu a:last-child { border-bottom: 0; }

/* One continuous world: hero, explanation, route, and live search. */
.world-story {
  height: 280svh;
  position: relative;
}

.world-sticky {
  background: var(--campaign-cream);
  color: var(--campaign-deep);
  height: 100svh;
  min-height: 700px;
  overflow: hidden;
  position: sticky;
  top: 0;
}

.world-sticky::before {
  display: none;
}

.world-backdrop,
.world-wash {
  inset: 0;
  position: absolute;
}

.world-backdrop {
  background-color: var(--campaign-cream);
  background-image:
    linear-gradient(rgba(9, 44, 37, 0.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(9, 44, 37, 0.055) 1px, transparent 1px);
  background-size: 68px 68px;
  z-index: 0;
}

.world-backdrop::before {
  animation: signalScan 8s linear infinite;
  background: linear-gradient(180deg, transparent, rgba(206, 116, 93, 0.72) 22%, rgba(206, 116, 93, 0.72) 78%, transparent);
  content: "";
  height: 100%;
  left: -2%;
  opacity: 0.42;
  position: absolute;
  top: 0;
  width: 1px;
  z-index: 3;
}

@keyframes signalScan {
  0% { transform: translateX(0); }
  100% { transform: translateX(104vw); }
}

.world-backdrop-base {
  filter: sepia(0.5) saturate(0.48) hue-rotate(72deg) contrast(1.1);
  height: 112%;
  left: -3%;
  mix-blend-mode: multiply;
  object-fit: cover;
  object-position: center bottom;
  opacity: 0.27;
  position: absolute;
  top: -6%;
  transform-origin: center;
  width: 106%;
  will-change: transform;
}

.world-backdrop-base {
  transform: translate3d(var(--world-bg-x, 0), var(--world-bg-y, 0), 0) scale(var(--world-bg-scale, 1.02));
}

.world-backdrop::after {
  background:
    linear-gradient(180deg, rgba(251, 245, 233, 0.38), transparent 38%, rgba(9, 44, 37, 0.05)),
    linear-gradient(90deg, rgba(251, 245, 233, 0.2), transparent 24%, transparent 76%, rgba(251, 245, 233, 0.2));
  content: "";
  inset: 0;
  position: absolute;
  z-index: 2;
}

.world-wash {
  background: rgba(174, 188, 164, 0.78);
  opacity: var(--world-wash-opacity, 0);
  z-index: 1;
}

.world-annotation {
  border-top: 1px solid rgba(9, 44, 37, 0.48);
  color: var(--campaign-deep);
  font-family: var(--campaign-mono);
  font-size: 0.52rem;
  font-weight: 600;
  opacity: var(--annotation-opacity, 1);
  padding-top: 6px;
  pointer-events: none;
  position: absolute;
  text-transform: uppercase;
  width: 92px;
  z-index: 3;
}

.annotation-one { left: 3.5%; top: 22%; }
.annotation-two { left: 29%; top: 84%; }
.annotation-three { right: 24%; top: 16%; }
.annotation-four { right: 3%; top: 48%; }

.world-detail {
  display: grid;
  font-family: var(--campaign-mono);
  font-size: 0.5rem;
  gap: 6px;
  opacity: var(--detail-opacity, 1);
  pointer-events: none;
  position: absolute;
  text-transform: uppercase;
  width: 128px;
  z-index: 4;
}

.world-detail p {
  align-items: center;
  border-bottom: 1px solid rgba(9, 44, 37, 0.38);
  display: flex;
  font-weight: 600;
  gap: 7px;
  padding-bottom: 7px;
}

.world-detail p i {
  background: var(--campaign-terra);
  box-shadow: 0 0 12px rgba(206, 116, 93, 0.58);
  height: 6px;
  width: 6px;
}

.world-detail span { opacity: 0.7; }
.detail-channels { bottom: 14%; left: 3.5%; }
.detail-measurement { bottom: 14%; right: 3.5%; }

.world-opening {
  inset: 0;
  opacity: var(--world-opening-opacity, 1);
  position: absolute;
  transform: translateY(var(--world-opening-y, 0));
  z-index: 8;
}

.world-opening::before {
  display: none;
}

.campaign-title {
  display: none;
}

.campaign-title span { display: inline; }
.campaign-title span + span::before { content: " "; }

.world-opening h1 {
  color: var(--campaign-deep);
  font-family: var(--campaign-body);
  font-size: 7.25rem;
  font-weight: 700;
  left: 50%;
  line-height: 0.88;
  position: absolute;
  text-align: center;
  top: 17%;
  transform: translateX(-50%);
  width: min(1180px, calc(100% - 64px));
}

.world-opening h1 span { display: block; }

.hero-service-line {
  color: var(--campaign-deep);
  font-family: var(--campaign-mono);
  font-size: 0.72rem;
  font-weight: 600;
  left: 50%;
  line-height: 1.4;
  position: absolute;
  text-align: center;
  text-transform: uppercase;
  top: 72%;
  transform: translateX(-50%);
  width: min(720px, calc(100% - 48px));
}

.campaign-scroll-cue {
  align-items: center;
  bottom: 24px;
  color: var(--campaign-deep);
  display: flex;
  font-family: var(--campaign-mono);
  font-size: 0.6rem;
  gap: 10px;
  left: 50%;
  position: absolute;
  text-transform: uppercase;
  transform: translateX(-50%);
}

.campaign-scroll-cue b {
  border: 1px solid currentColor;
  border-radius: 999px;
  display: block;
  height: 24px;
  position: relative;
  width: 13px;
}

.campaign-scroll-cue b::after {
  animation: scrollDot 1.8s ease-in-out infinite;
  background: currentColor;
  border-radius: 50%;
  content: "";
  height: 3px;
  left: 4px;
  position: absolute;
  top: 4px;
  width: 3px;
}

@keyframes scrollDot {
  0%, 100% { opacity: 0.35; transform: translateY(0); }
  45% { opacity: 1; transform: translateY(10px); }
}

.world-object {
  pointer-events: none;
  position: absolute;
  transform: translate3d(var(--object-x, 0), var(--object-y, 0), 0) rotate(var(--object-rotate, 0deg)) scale(var(--object-scale, 1));
  transform-origin: center;
  will-change: transform, opacity;
  z-index: 5;
}

.world-object img {
  animation: objectFloat 5.8s ease-in-out infinite;
  height: 100%;
  object-fit: contain;
  width: 100%;
}

@keyframes objectFloat {
  0%, 100% { transform: translateY(-5px) rotate(-1deg); }
  50% { transform: translateY(7px) rotate(1deg); }
}

.world-narrative {
  left: 50%;
  opacity: var(--world-narrative-opacity, 0);
  position: absolute;
  text-align: center;
  top: 50%;
  transform: translate(-50%, var(--world-narrative-y, 44px));
  width: min(1160px, calc(100% - 80px));
  z-index: 7;
}

.world-narrative > p {
  color: var(--campaign-deep);
  font-family: var(--campaign-mono);
  font-size: 0.68rem;
  font-weight: 600;
  margin-bottom: 22px;
  text-transform: uppercase;
}

.world-narrative h2 {
  color: var(--campaign-deep);
  font-family: var(--campaign-body);
  font-size: 3.45rem;
  font-weight: 600;
  line-height: 1.06;
}

.world-route {
  bottom: 2%;
  height: 180px;
  left: 5%;
  opacity: var(--world-route-opacity, 0);
  position: absolute;
  transform: translate3d(var(--world-route-x, -90px), var(--world-route-y, 80px), 0) scale(var(--world-route-scale, 0.94));
  transform-origin: center;
  width: 90%;
  z-index: 5;
}

.network-line {
  background: var(--campaign-deep);
  height: 2px;
  left: 4%;
  opacity: 0.68;
  position: absolute;
  right: 4%;
  top: 50%;
}

.network-line::after {
  background: var(--campaign-terra);
  content: "";
  height: 6px;
  left: 0;
  position: absolute;
  top: -2px;
  transition: width 90ms linear;
  width: var(--network-progress, 0%);
}

.network-node {
  height: 100%;
  position: absolute;
  top: 0;
  width: 25%;
}

.network-node-one { left: 0; }
.network-node-two { left: 25%; }
.network-node-three { left: 50%; }
.network-node-four { left: 75%; }

.network-node i {
  background: var(--campaign-paper);
  border: 2px solid var(--campaign-deep);
  box-shadow: 0 0 0 7px rgba(242, 231, 209, 0.85);
  height: 15px;
  left: 50%;
  position: absolute;
  top: calc(50% - 7px);
  transform: translateX(-50%);
  width: 15px;
}

.network-node i::after {
  background: var(--campaign-terra);
  box-shadow:
    0 0 32px rgba(206, 116, 93, 0.9),
    0 0 0 8px rgba(206, 116, 93, 0.18);
  content: "";
  inset: 2px;
  opacity: var(--node-active, 0);
  position: absolute;
  transform: scale(var(--node-glow-scale, 0.55));
}

.route-label {
  background: var(--campaign-paper);
  border: 1px solid var(--campaign-line);
  color: var(--campaign-deep);
  font-family: var(--campaign-mono);
  font-size: 0.6rem;
  font-style: normal;
  font-weight: 600;
  left: 50%;
  opacity: var(--route-label-opacity, 0);
  padding: 7px 9px 6px;
  position: absolute;
  top: calc(50% + 25px);
  text-transform: uppercase;
  transform: translateX(-50%);
  transition: background-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
  white-space: nowrap;
}

.network-node.is-active .route-label {
  background: var(--campaign-deep);
  box-shadow: 0 8px 24px rgba(9, 44, 37, 0.18);
  color: var(--campaign-paper);
}

.world-search {
  opacity: var(--world-search-opacity, 0);
  position: absolute;
  right: 6%;
  top: 14%;
  transform: translate3d(var(--world-search-x, 90px), var(--world-search-y, 20px), 0);
  width: min(46vw, 650px);
  z-index: 9;
}

.world-search-kicker {
  color: var(--campaign-deep);
  font-family: var(--campaign-serif);
  font-size: 2.05rem;
  line-height: 1;
  margin-bottom: 16px !important;
}

.search-interface {
  border: 1px solid rgba(9, 44, 37, 0.42);
  box-shadow: 18px 24px 0 rgba(9, 44, 37, 0.13);
  color: var(--campaign-deep);
}

.search-query {
  align-items: center;
  background: rgba(251, 245, 233, 0.97);
  border-bottom: 2px solid var(--campaign-deep);
  display: grid;
  gap: 18px;
  grid-template-columns: auto 1fr auto;
  padding: 18px 20px;
}

.search-query small,
.search-result small {
  font-family: var(--campaign-mono);
  font-size: 0.6rem;
  font-weight: 600;
  text-transform: uppercase;
}

.search-query strong { font-size: 1.2rem; font-weight: 500; }
.search-query span { font-size: 1.2rem; }
.search-results { background: rgba(251, 245, 233, 0.96); }

.search-result {
  border-bottom: 1px solid rgba(9, 44, 37, 0.34);
  opacity: var(--search-result-opacity, 0);
  padding: 18px 20px;
  transform: translateY(var(--search-result-y, 36px));
}

.search-result:last-child { border-bottom: 0; }

.search-result h3 {
  color: var(--campaign-deep);
  font-family: var(--campaign-body);
  font-size: 2.15rem;
  font-weight: 600;
  line-height: 1;
  margin: 9px 0 7px;
}

.search-result p { font-size: 0.9rem; font-weight: 500; }

/* Four archival search worlds, paced as one continuous scroll story. */
.world-story {
  height: 440svh;
}

.world-sticky {
  background: var(--campaign-deep);
  min-height: 680px;
}

.story-scene {
  inset: 0;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
  position: absolute;
  transform: translate3d(0, var(--scene-y, 0), 0) scale(var(--scene-scale, 1));
  transform-origin: center;
  will-change: opacity, transform;
}

.scene-search {
  background: #123a31;
  color: var(--campaign-paper);
  opacity: var(--scene-search-opacity, 1);
  --scene-y: var(--scene-search-y, 0);
  --scene-scale: var(--scene-search-scale, 1);
  z-index: 4;
}

.scene-search::before {
  background-image: url("assets/reference/star-map-burritt.jpg");
  background-position: center 44%;
  background-repeat: no-repeat;
  background-size: cover;
  content: "";
  filter: grayscale(1) contrast(1.34);
  inset: -8%;
  opacity: 0.48;
  position: absolute;
  transform: translate3d(var(--star-x, 0), var(--star-y, 0), 0) scale(var(--star-scale, 1.17));
  will-change: transform;
  z-index: 0;
}

.scene-search::after {
  background:
    linear-gradient(180deg, rgba(18, 58, 49, 0.4), rgba(18, 58, 49, 0.08) 34%, rgba(18, 58, 49, 0.08) 65%, rgba(18, 58, 49, 0.54)),
    rgba(18, 58, 49, 0.48);
  content: "";
  inset: 0;
  position: absolute;
  z-index: 1;
}

.scene-local {
  background: #efe4cf;
  color: var(--campaign-deep);
  opacity: var(--scene-local-opacity, 0);
  --scene-y: var(--scene-local-y, 4%);
  --scene-scale: var(--scene-local-scale, 1.02);
  z-index: 5;
}

.scene-answer {
  background: #16211e;
  color: var(--campaign-paper);
  opacity: var(--scene-answer-opacity, 0);
  --scene-y: var(--scene-answer-y, 4%);
  --scene-scale: var(--scene-answer-scale, 1.02);
  z-index: 6;
}

.scene-web {
  background-color: #d5d4a6;
  background-image:
    linear-gradient(rgba(9, 44, 37, 0.11) 1px, transparent 1px),
    linear-gradient(90deg, rgba(9, 44, 37, 0.11) 1px, transparent 1px);
  background-size: 54px 54px;
  color: var(--campaign-deep);
  opacity: var(--scene-web-opacity, 0);
  --scene-y: var(--scene-web-y, 4%);
  --scene-scale: var(--scene-web-scale, 1.02);
  z-index: 7;
}

.scene-media {
  inset: 0;
  margin: 0;
  overflow: hidden;
  position: absolute;
}

.scene-media img {
  height: 100%;
  object-fit: cover;
  position: absolute;
  width: 100%;
  will-change: transform;
}

.scene-media-stars img {
  filter: grayscale(1) contrast(1.35);
  inset: -8%;
  mix-blend-mode: normal;
  opacity: 0.5;
  transform: translate3d(var(--star-x, 0), var(--star-y, 0), 0) scale(var(--star-scale, 1.17));
  width: 116%;
}

.scene-media-stars::after {
  background:
    radial-gradient(circle at center, transparent 0%, rgba(18, 58, 49, 0.12) 48%, rgba(18, 58, 49, 0.66) 100%),
    linear-gradient(180deg, rgba(9, 44, 37, 0.18), transparent 24%, transparent 73%, rgba(9, 44, 37, 0.4));
  content: "";
  inset: 0;
  position: absolute;
}

.constellation-focus {
  height: min(64vw, 780px);
  left: 50%;
  opacity: var(--constellation-opacity, 0.72);
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%) rotate(var(--constellation-rotate, 0deg));
  width: min(64vw, 780px);
  z-index: 1;
}

.constellation-orbit {
  border: 1px solid rgba(242, 231, 209, 0.22);
  border-radius: 50%;
  inset: 0;
  position: absolute;
}

.constellation-orbit.orbit-two {
  border-color: rgba(217, 207, 118, 0.3);
  inset: 17%;
}

.constellation-point {
  background: var(--campaign-yellow);
  border-radius: 50%;
  box-shadow: 0 0 24px rgba(217, 207, 118, 0.68);
  height: 7px;
  position: absolute;
  width: 7px;
}

.point-one { left: 8%; top: 52%; }
.point-two { right: 13%; top: 24%; }
.point-three { bottom: 12%; left: 58%; }

.scene-copy {
  position: absolute;
  z-index: 4;
}

.scene-copy > p {
  font-family: var(--campaign-mono);
  font-size: 0.66rem;
  font-weight: 600;
  margin-bottom: 20px;
  text-transform: uppercase;
}

.scene-copy h2 {
  color: inherit;
  font-family: var(--campaign-serif);
  font-size: clamp(4rem, 6vw, 6.8rem);
  font-weight: 400;
  letter-spacing: 0;
  line-height: 0.9;
}

.scene-copy > span {
  display: block;
  font-size: 1rem;
  line-height: 1.5;
  margin-top: 26px;
  max-width: 470px;
}

.scene-copy-hero {
  left: 50%;
  text-align: center;
  top: 48%;
  transform: translate(-50%, -50%);
  width: min(1240px, calc(100% - 72px));
}

.scene-copy-hero h1 {
  color: var(--campaign-paper);
  font-family: var(--campaign-serif);
  font-size: clamp(5.8rem, 9.8vw, 10.2rem);
  font-weight: 400;
  letter-spacing: 0;
  line-height: 0.79;
  text-wrap: balance;
}

.scene-copy-hero h1 span { display: block; }

.scene-copy-hero p {
  color: rgba(251, 245, 233, 0.9);
  font-family: var(--campaign-mono);
  font-size: 0.7rem;
  font-weight: 600;
  margin-top: 34px;
  text-transform: uppercase;
}

.hero-project-link {
  align-items: center;
  background: var(--campaign-paper);
  border: 1px solid rgba(251, 245, 233, 0.8);
  color: var(--campaign-deep) !important;
  display: inline-flex;
  font-family: var(--campaign-mono);
  font-size: 0.64rem;
  font-weight: 600;
  gap: 18px;
  margin-top: 24px;
  padding: 13px 16px;
  text-decoration: none;
  text-transform: uppercase;
  transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}

.hero-project-link span {
  font-size: 0.9rem;
  transition: transform 180ms ease;
}

.hero-project-link:hover {
  background: var(--campaign-yellow);
  border-color: var(--campaign-yellow);
}

.hero-project-link:hover span {
  transform: translate(2px, -2px);
}

.scene-search .campaign-scroll-cue {
  bottom: 64px;
  color: var(--campaign-paper);
  opacity: var(--scene-search-opacity, 1);
  z-index: 5;
}

.scene-media-map {
  left: 40%;
}

.scene-media-map img {
  filter: sepia(0.2) saturate(0.72) contrast(1.03);
  object-position: 56% 34%;
  transform: translate3d(var(--map-x, 0), var(--map-y, 0), 0) scale(var(--map-scale, 1.18));
}

.scene-media-map::after {
  background:
    linear-gradient(90deg, #efe4cf 0%, rgba(239, 228, 207, 0.99) 7%, rgba(239, 228, 207, 0.78) 25%, rgba(239, 228, 207, 0.1) 57%),
    linear-gradient(180deg, rgba(239, 228, 207, 0.42), transparent 30%, transparent 72%, rgba(239, 228, 207, 0.42));
  content: "";
  inset: 0;
  position: absolute;
}

.scene-copy-local {
  left: 6vw;
  top: 50%;
  transform: translateY(-50%);
  width: min(520px, 38vw);
}

.map-pulse {
  height: 112px;
  left: 71%;
  opacity: var(--map-marker-opacity, 0);
  position: absolute;
  top: 49%;
  transform: translate(-50%, -50%) scale(var(--map-marker-scale, 0.7));
  width: 112px;
  z-index: 4;
}

.map-pulse::before,
.map-pulse::after {
  border: 1px solid rgba(206, 116, 93, 0.82);
  border-radius: 50%;
  content: "";
  inset: 0;
  position: absolute;
  transform: scale(var(--map-ring-one, 0.38));
}

.map-pulse::after {
  opacity: 0.52;
  transform: scale(var(--map-ring-two, 0.18));
}

.map-pulse i {
  background: var(--campaign-terra);
  border: 5px solid var(--campaign-paper);
  border-radius: 50%;
  box-shadow: 0 8px 30px rgba(9, 44, 37, 0.26);
  height: 22px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 22px;
}

.local-listing {
  background: rgba(251, 245, 233, 0.97);
  border-left: 4px solid var(--campaign-terra);
  box-shadow: 0 18px 60px rgba(9, 44, 37, 0.2);
  display: grid;
  left: 64%;
  opacity: var(--local-listing-opacity, 0);
  padding: 20px 23px;
  position: absolute;
  top: 57%;
  transform: translate3d(var(--local-listing-x, 32px), var(--local-listing-y, 18px), 0);
  width: 260px;
  z-index: 5;
}

.local-listing small,
.answer-window small,
.web-page small {
  font-family: var(--campaign-mono);
  font-size: 0.56rem;
  font-weight: 600;
  text-transform: uppercase;
}

.local-listing strong {
  font-family: var(--campaign-serif);
  font-size: 2rem;
  font-weight: 400;
  line-height: 1;
  margin: 10px 0 8px;
}

.local-listing span { font-size: 0.72rem; }

.scene-media-xray {
  left: 38%;
}

.scene-media-xray img {
  filter: invert(1) sepia(0.45) saturate(0.65) hue-rotate(72deg) contrast(1.22);
  mix-blend-mode: screen;
  object-position: 58% center;
  opacity: 0.46;
  transform: translate3d(var(--xray-x, 0), var(--xray-y, 0), 0) rotate(var(--xray-rotate, 0deg)) scale(var(--xray-scale, 1.08));
}

.scene-media-xray::after {
  background:
    linear-gradient(90deg, #16211e 0%, rgba(22, 33, 30, 0.98) 15%, rgba(22, 33, 30, 0.12) 59%),
    radial-gradient(circle at 72% 52%, transparent 0%, rgba(22, 33, 30, 0.18) 42%, rgba(22, 33, 30, 0.72) 100%);
  content: "";
  inset: 0;
  position: absolute;
}

.scene-copy-answer {
  left: 6vw;
  top: 50%;
  transform: translateY(-50%);
  width: min(560px, 39vw);
}

.scene-copy-answer > p { color: var(--campaign-yellow); }

.answer-evidence {
  inset: 0;
  position: absolute;
  z-index: 3;
}

.evidence {
  align-items: center;
  color: rgba(251, 245, 233, 0.86);
  display: flex;
  font-family: var(--campaign-mono);
  font-size: 0.56rem;
  gap: 8px;
  opacity: var(--evidence-opacity, 0);
  position: absolute;
  text-transform: uppercase;
  transform: translateY(var(--evidence-y, 16px));
}

.evidence i {
  background: var(--campaign-yellow);
  border-radius: 50%;
  box-shadow: 0 0 16px rgba(217, 207, 118, 0.75);
  height: 7px;
  order: -1;
  width: 7px;
}

.evidence-one { left: 58%; top: 22%; }
.evidence-two { right: 7%; top: 35%; }
.evidence-three { left: 53%; top: 68%; }
.evidence-four { right: 10%; top: 78%; }

.answer-window {
  background: rgba(242, 231, 209, 0.97);
  border: 1px solid rgba(242, 231, 209, 0.74);
  bottom: 14%;
  box-shadow: 18px 22px 0 rgba(0, 0, 0, 0.22);
  color: var(--campaign-deep);
  display: grid;
  opacity: var(--answer-window-opacity, 0);
  padding: 22px 24px;
  position: absolute;
  right: 7%;
  transform: translate3d(var(--answer-window-x, 42px), var(--answer-window-y, 24px), 0);
  width: min(360px, 29vw);
  z-index: 4;
}

.answer-window strong {
  font-family: var(--campaign-serif);
  font-size: 2rem;
  font-weight: 400;
  line-height: 1.02;
  margin: 10px 0 9px;
}

.answer-window span { font-size: 0.75rem; line-height: 1.4; }

.scene-copy-web {
  left: 6vw;
  top: 19%;
  width: min(600px, 42vw);
}

.scene-copy-web > p { color: rgba(9, 44, 37, 0.72); }
.scene-copy-web > span { max-width: 410px; }

.web-blueprint {
  bottom: 10%;
  height: 68%;
  opacity: var(--web-blueprint-opacity, 0);
  position: absolute;
  right: 3vw;
  transform: translate3d(var(--web-blueprint-x, 70px), var(--web-blueprint-y, 28px), 0) rotate(var(--web-blueprint-rotate, -2deg));
  width: min(680px, 48vw);
  z-index: 3;
}

.web-window {
  background: var(--campaign-paper);
  border: 1px solid var(--campaign-deep);
  box-shadow: 24px 28px 0 rgba(9, 44, 37, 0.14);
  height: 100%;
}

.web-window-bar {
  align-items: center;
  border-bottom: 1px solid var(--campaign-deep);
  display: flex;
  gap: 7px;
  height: 48px;
  padding: 0 16px;
}

.web-window-bar i {
  border: 1px solid var(--campaign-deep);
  border-radius: 50%;
  height: 8px;
  width: 8px;
}

.web-window-bar span {
  border-left: 1px solid rgba(9, 44, 37, 0.26);
  font-family: var(--campaign-mono);
  font-size: 0.55rem;
  margin-left: 7px;
  padding-left: 14px;
}

.web-window-body {
  height: calc(100% - 48px);
  padding: 20px;
  position: relative;
}

.web-page {
  background: var(--campaign-paper);
  border: 1px solid rgba(9, 44, 37, 0.7);
  display: grid;
  min-height: 104px;
  opacity: var(--web-page-opacity, 0);
  padding: 16px;
  position: absolute;
  transform: translate3d(var(--web-page-x, 0), var(--web-page-y, 28px), 0);
  width: 38%;
}

.web-page strong {
  font-family: var(--campaign-serif);
  font-size: 1.45rem;
  font-weight: 400;
  line-height: 1;
  margin-top: 12px;
}

.web-page i {
  background: var(--campaign-terra);
  height: 3px;
  margin-top: 16px;
  width: var(--web-page-line, 0%);
}

.page-home {
  height: calc(100% - 40px);
  left: 20px;
  top: 20px;
  width: 46%;
}

.page-home strong { font-size: clamp(2rem, 3vw, 3.6rem); max-width: 280px; }
.page-service { right: 20px; top: 20px; }
.page-location { right: 20px; top: calc(34% + 20px); }
.page-guide { bottom: 20px; right: 20px; }

.story-chapters {
  align-items: center;
  bottom: 20px;
  display: flex;
  gap: 24px;
  left: 50%;
  position: absolute;
  transform: translateX(-50%);
  z-index: 20;
}

.story-chapter {
  color: currentColor;
  font-family: var(--campaign-mono);
  font-size: 0.56rem;
  font-weight: 600;
  opacity: 0.38;
  padding: 8px 0;
  position: relative;
  text-transform: uppercase;
  transition: color 260ms ease, opacity 260ms ease;
  white-space: nowrap;
}

.story-chapter::after {
  background: currentColor;
  bottom: 2px;
  content: "";
  height: 1px;
  left: 0;
  position: absolute;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 260ms ease;
  width: 100%;
}

.story-chapter.is-active { opacity: 1; }
.story-chapter.is-active::after { transform: scaleX(1); }
.world-sticky.is-light .story-chapters { color: var(--campaign-deep); }
.world-sticky:not(.is-light) .story-chapters { color: var(--campaign-paper); }

/* AI search becomes a living system rather than a checklist. */
.ai-story {
  background: var(--campaign-deep);
  height: 150svh;
  position: relative;
}

.ai-sticky {
  background: var(--campaign-deep);
  color: var(--campaign-paper);
  display: grid;
  gap: 6vw;
  grid-template-columns: minmax(340px, 0.92fr) minmax(520px, 1.08fr);
  height: 100svh;
  min-height: 700px;
  overflow: hidden;
  padding: 94px 6vw 68px;
  position: sticky;
  top: 0;
}

.ai-sticky::before {
  background-image:
    linear-gradient(rgba(251, 245, 233, 0.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(251, 245, 233, 0.07) 1px, transparent 1px);
  background-size: 64px 64px;
  content: "";
  inset: 0;
  opacity: 0.32;
  pointer-events: none;
  position: absolute;
  z-index: 1;
}

.ai-intro {
  align-self: center;
  opacity: var(--ai-intro-opacity, 0);
  position: relative;
  transform: translateY(var(--ai-intro-y, 46px));
  will-change: opacity, transform;
  z-index: 2;
}

.ai-intro > p:first-child,
.ai-system-label {
  color: var(--campaign-sage);
  font-family: var(--campaign-mono);
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
}

.ai-intro h2 {
  color: var(--campaign-paper);
  font-family: var(--campaign-serif);
  font-size: 5.6rem;
  font-weight: 400;
  line-height: 0.92;
  margin: 22px 0 28px;
  max-width: 620px;
}

.ai-summary {
  color: rgba(251, 245, 233, 0.86);
  font-size: 1.08rem;
  line-height: 1.5;
  max-width: 520px;
}

.ai-signal-system {
  align-self: center;
  position: relative;
  z-index: 2;
}

.ai-system-label {
  margin-bottom: 18px !important;
}

.ai-signals { position: relative; }

.ai-signals::before {
  background: linear-gradient(var(--campaign-terra), rgba(206, 116, 93, 0.08));
  content: "";
  height: var(--ai-system-growth, 0%);
  left: 4px;
  position: absolute;
  top: 26px;
  width: 1px;
}

.ai-signal {
  align-items: center;
  border-bottom: 1px solid rgba(251, 245, 233, 0.24);
  display: grid;
  gap: 18px;
  grid-template-columns: 10px minmax(170px, 0.78fr) minmax(250px, 1.22fr);
  opacity: var(--ai-signal-opacity, 0);
  padding: 20px 0;
  transform: translateX(var(--ai-signal-x, 60px));
  will-change: opacity, transform;
}

.ai-signal i {
  background: var(--campaign-terra);
  border: 2px solid var(--campaign-deep);
  box-shadow: 0 0 0 1px var(--campaign-terra), 0 0 20px rgba(206, 116, 93, 0.65);
  height: 9px;
  width: 9px;
}

.ai-signal span {
  color: var(--campaign-paper);
  font-family: var(--campaign-body);
  font-size: 1.65rem;
  font-weight: 600;
}

.ai-signal small {
  color: rgba(251, 245, 233, 0.78);
  font-size: 0.82rem;
  line-height: 1.45;
}

.ai-answer {
  background: var(--campaign-paper);
  border: 1px solid rgba(251, 245, 233, 0.55);
  box-shadow: 14px 16px 0 rgba(9, 44, 37, 0.32);
  color: var(--campaign-deep);
  display: grid;
  margin: 28px 0 0 12%;
  opacity: var(--ai-answer-opacity, 0);
  padding: 22px 24px;
  transform: translateY(var(--ai-answer-y, 34px));
  will-change: opacity, transform;
}

.ai-answer small {
  font-family: var(--campaign-mono);
  font-size: 0.58rem;
  font-weight: 600;
  text-transform: uppercase;
}

.ai-answer strong {
  font-family: var(--campaign-serif);
  font-size: 2.65rem;
  font-weight: 400;
  line-height: 1;
  margin: 10px 0 7px;
}

.ai-answer span {
  font-size: 0.83rem;
}

/* Services move through one continuous search atlas. */
.service-atlas {
  background: var(--campaign-cream);
  color: var(--campaign-deep);
  height: 200svh;
  position: relative;
}

.service-atlas-sticky {
  background-color: var(--campaign-cream);
  background-image:
    linear-gradient(rgba(9, 44, 37, 0.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(9, 44, 37, 0.08) 1px, transparent 1px);
  background-size: 72px 72px;
  height: 100svh;
  min-height: 700px;
  overflow: hidden;
  position: sticky;
  top: 0;
}

.service-atlas-art {
  height: 100%;
  overflow: hidden;
  position: absolute;
  right: 0;
  top: 0;
  width: 100%;
}

.service-atlas-art::after {
  background:
    linear-gradient(180deg, rgba(242, 231, 209, 0.22), transparent 24%, transparent 72%, rgba(242, 231, 209, 0.28)),
    linear-gradient(90deg, rgba(242, 231, 209, 0.16), transparent 34%, transparent 68%, rgba(242, 231, 209, 0.12));
  content: "";
  inset: 0;
  position: absolute;
}

.service-atlas-art img {
  height: 108%;
  object-fit: cover;
  object-position: center;
  transform: translate3d(var(--atlas-image-x, 0), var(--atlas-image-y, 0), 0) scale(var(--atlas-image-scale, 1.06));
  width: 108%;
  will-change: transform;
}

.service-atlas-copy {
  background: transparent;
  height: 100%;
  left: 0;
  padding: 94px 5vw 54px;
  position: absolute;
  top: 0;
  width: 100%;
  z-index: 2;
}

.service-atlas-copy::before {
  background: radial-gradient(ellipse 45% 48% at center, rgba(251, 245, 233, 0.98) 0%, rgba(242, 231, 209, 0.82) 52%, rgba(242, 231, 209, 0.18) 78%, transparent 100%);
  content: "";
  inset: 12% 0 6%;
  pointer-events: none;
  position: absolute;
}

.service-index-intro {
  position: relative;
  z-index: 2;
}

.service-index-intro > p {
  font-family: var(--campaign-mono);
  font-size: 0.68rem;
  font-weight: 600;
  margin-bottom: 18px;
  text-transform: uppercase;
}

.service-index-intro h2 {
  color: var(--campaign-deep);
  font-family: var(--campaign-serif);
  font-size: 4.1rem;
  font-weight: 400;
  line-height: 0.92;
  max-width: 500px;
}

.service-panels {
  bottom: 110px;
  left: 50%;
  position: absolute;
  top: 37%;
  transform: translateX(-50%);
  width: min(860px, calc(100% - 80px));
  z-index: 2;
}

.service-panel {
  align-items: center;
  color: var(--campaign-deep);
  display: flex;
  flex-direction: column;
  inset: 0;
  justify-content: center;
  opacity: var(--service-panel-opacity, 0);
  pointer-events: none;
  position: absolute;
  text-align: center;
  text-decoration: none;
  transform: translateY(var(--service-panel-y, 70px)) scale(var(--service-panel-scale, 0.98));
  transform-origin: left center;
  will-change: opacity, transform;
}

.service-panel:first-child {
  opacity: var(--service-panel-opacity, 1);
  pointer-events: auto;
}

.service-panel span {
  font-family: var(--campaign-serif);
  font-size: 8rem;
  font-weight: 400;
  line-height: 0.84;
  max-width: 620px;
}

.service-panel small {
  font-size: 1rem;
  line-height: 1.45;
  margin: 28px 0 24px;
  max-width: 500px;
}

.service-panel b {
  align-self: center;
  border-bottom: 1px solid currentColor;
  font-family: var(--campaign-mono);
  font-size: 0.66rem;
  font-weight: 600;
  padding-bottom: 7px;
  text-transform: uppercase;
}

.service-panel b i { font-style: normal; margin-left: 7px; }
.service-panel:hover b { color: var(--campaign-terra); }

.service-atlas-index {
  bottom: 42px;
  display: flex;
  font-family: var(--campaign-mono);
  font-size: 0.6rem;
  font-weight: 600;
  gap: 22px;
  left: 50%;
  position: absolute;
  text-transform: uppercase;
  transform: translateX(-50%);
  z-index: 3;
}

.service-atlas-index a {
  background: transparent;
  color: var(--campaign-deep);
  display: block;
  opacity: var(--service-index-opacity, 0.35);
  padding: 0;
  position: relative;
  text-decoration: none;
}

.campaign-home .service-atlas-index > a:last-child {
  background: transparent;
  color: var(--campaign-deep);
  display: block;
  padding: 0;
}

.service-atlas-index a::before {
  display: none;
}

/* Contact scene */
.contact-story {
  height: 135svh;
  position: relative;
}

.contact-sticky {
  background: var(--campaign-deep);
  color: var(--campaign-paper);
  height: 100svh;
  min-height: 680px;
  overflow: hidden;
  position: sticky;
  top: 0;
}

.contact-sticky::before {
  background-image:
    linear-gradient(rgba(251, 245, 233, 0.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(251, 245, 233, 0.055) 1px, transparent 1px);
  background-size: 64px 64px;
  content: "";
  inset: 0;
  opacity: 0.52;
  pointer-events: none;
  position: absolute;
}

.contact-copy {
  color: var(--campaign-paper);
  left: 6vw;
  opacity: var(--contact-copy-opacity, 0);
  position: absolute;
  top: 50%;
  transform: translateY(calc(-50% + var(--contact-copy-y, 40px)));
  width: min(610px, 43vw);
  z-index: 3;
}

.contact-copy > p {
  color: var(--campaign-yellow);
  font-family: var(--campaign-mono);
  font-size: 0.68rem;
  font-weight: 600;
  margin-bottom: 15px;
  text-transform: uppercase;
}

.contact-copy h2 {
  color: inherit;
  font-family: var(--campaign-serif);
  font-size: clamp(4.7rem, 6.2vw, 7.2rem);
  font-weight: 400;
  line-height: 0.9;
}

.contact-copy > span {
  color: rgba(251, 245, 233, 0.76);
  display: block;
  font-size: 1rem;
  line-height: 1.45;
  margin-top: 26px;
  max-width: 430px;
}

.contact-copy a {
  border-bottom: 1px solid currentColor;
  display: inline-block;
  font-family: var(--campaign-mono);
  font-size: 0.72rem;
  font-weight: 600;
  margin-top: 28px;
  padding-bottom: 7px;
  text-decoration: none;
  text-transform: uppercase;
}

.contact-copy a:hover {
  color: var(--campaign-yellow);
}

.campaign-home a.contact-inquiry {
  background: var(--campaign-paper);
  border-left: 5px solid var(--campaign-terra);
  box-shadow: 24px 28px 0 rgba(0, 0, 0, 0.18);
  color: var(--campaign-deep);
  display: grid;
  opacity: var(--contact-inquiry-opacity, 0);
  position: absolute;
  right: 6vw;
  text-decoration: none;
  top: 50%;
  transform: translateY(calc(-50% + var(--contact-inquiry-y, 60px))) rotate(var(--contact-inquiry-rotate, 1.8deg));
  width: min(560px, 42vw);
  z-index: 3;
}

.contact-inquiry-bar {
  align-items: center;
  border-bottom: 1px solid rgba(9, 44, 37, 0.3);
  display: flex;
  justify-content: space-between;
  padding: 17px 20px;
}

.contact-inquiry-bar small,
.contact-inquiry-question small,
.contact-inquiry-fields small {
  font-family: var(--campaign-mono);
  font-size: 0.56rem;
  font-style: normal;
  font-weight: 600;
  text-transform: uppercase;
}

.contact-inquiry-bar i {
  align-items: center;
  display: flex;
  font-family: var(--campaign-mono);
  font-size: 0.52rem;
  font-style: normal;
  gap: 7px;
  text-transform: uppercase;
}

.contact-inquiry-bar i::before {
  background: var(--campaign-terra);
  border-radius: 50%;
  content: "";
  height: 6px;
  width: 6px;
}

.contact-inquiry-question {
  display: grid;
  gap: 18px;
  padding: 34px 30px 30px;
}

.contact-inquiry-question strong {
  font-family: var(--campaign-serif);
  font-size: 3rem;
  font-weight: 400;
  line-height: 0.98;
}

.contact-inquiry-fields {
  display: grid;
  gap: 20px;
  padding: 0 30px 34px;
}

.contact-inquiry-fields > i {
  display: grid;
  font-style: normal;
  gap: 9px;
}

.contact-inquiry-fields b {
  background: rgba(9, 44, 37, 0.3);
  height: 1px;
  overflow: hidden;
  position: relative;
}

.contact-inquiry-fields b::after {
  background: var(--campaign-terra);
  content: "";
  height: 100%;
  left: 0;
  position: absolute;
  transform: scaleX(var(--contact-field-progress, 0));
  transform-origin: left;
  width: 100%;
}

.contact-inquiry-action {
  align-items: center;
  background: var(--campaign-deep);
  color: var(--campaign-paper);
  display: flex;
  font-family: var(--campaign-mono);
  font-size: 0.66rem;
  font-weight: 600;
  justify-content: space-between;
  padding: 19px 22px;
  text-transform: uppercase;
}

.contact-inquiry-action b {
  font-size: 1rem;
  font-weight: 400;
}

.contact-inquiry:hover .contact-inquiry-action {
  background: var(--campaign-terra);
}

/* Footer */
.campaign-footer {
  background: var(--campaign-paper);
  border-top: 1px solid rgba(9, 44, 37, 0.22);
  color: var(--campaign-deep);
  display: grid;
  gap: 64px 8vw;
  grid-template-columns: minmax(0, 1.35fr) minmax(340px, 0.65fr);
  min-height: 560px;
  padding: 76px 6vw 28px;
}

.campaign-footer-brand {
  align-items: center;
  display: inline-flex;
  font-size: 0.9rem;
  font-weight: 700;
  gap: 11px;
  text-decoration: none;
}

.campaign-footer-brand img {
  height: 26px;
  width: 26px;
}

.campaign-footer-lead > p {
  font-family: var(--campaign-serif);
  font-size: clamp(4rem, 6.1vw, 7rem);
  line-height: 0.84;
  margin-top: 48px;
}

.campaign-footer-action {
  align-items: center;
  background: var(--campaign-deep);
  color: var(--campaign-paper) !important;
  display: inline-flex;
  font-family: var(--campaign-mono);
  font-size: 0.64rem;
  font-weight: 600;
  gap: 22px;
  margin-top: 38px;
  padding: 15px 18px;
  text-decoration: none;
  text-transform: uppercase;
}

.campaign-footer-action:hover {
  background: var(--campaign-terra);
}

.campaign-footer-nav {
  align-self: start;
  display: grid;
  gap: 56px;
  grid-template-columns: 1fr 1fr;
  width: 100%;
}

.campaign-footer-nav > div {
  align-content: start;
  display: grid;
}

.campaign-footer-nav span {
  color: rgba(9, 44, 37, 0.58);
  font-family: var(--campaign-mono);
  font-size: 0.58rem;
  font-weight: 600;
  margin-bottom: 14px;
  text-transform: uppercase;
}

.campaign-footer-nav a {
  border-bottom: 1px solid rgba(9, 44, 37, 0.22);
  color: inherit;
  display: block;
  font-size: 0.96rem;
  padding: 12px 0;
  text-decoration: none;
}

.campaign-footer-nav a:hover {
  color: var(--campaign-terra);
}

.campaign-footer-bottom {
  align-items: end;
  border-top: 1px solid rgba(9, 44, 37, 0.28);
  display: flex;
  grid-column: 1 / -1;
  justify-content: space-between;
  padding-top: 24px;
}

.campaign-footer-bottom p {
  font-family: var(--campaign-serif);
  font-size: 1.45rem;
}

.campaign-footer-bottom small {
  font-family: var(--campaign-mono);
  font-size: 0.62rem;
  text-transform: uppercase;
}

@media (max-width: 1180px) {
  .world-opening h1 { font-size: 6.9rem; }
  .world-narrative h2 { font-size: 3.15rem; }
  .ai-sticky { grid-template-columns: minmax(300px, 0.85fr) minmax(500px, 1.15fr); }
  .ai-intro h2 { font-size: 4.8rem; }
  .service-panel span { font-size: 5.9rem; }
  .contact-copy h2 { font-size: 4.5rem; }
}

@media (max-width: 900px) {
  .campaign-header { height: 62px; padding: 0 20px; }
  .mobile-menu-toggle {
    background: transparent;
    border: 1px solid rgba(9, 44, 37, 0.32);
    color: var(--campaign-deep);
    cursor: pointer;
    display: inline-flex;
    font-family: var(--campaign-mono);
    font-size: 0.58rem;
    font-weight: 600;
    margin-left: auto;
    padding: 10px 12px;
    text-transform: uppercase;
  }
  .mobile-menu-toggle[aria-expanded="true"] {
    background: var(--campaign-deep);
    color: var(--campaign-paper);
  }
  .campaign-nav {
    align-content: start;
    background: var(--campaign-paper);
    border-bottom: 1px solid rgba(9, 44, 37, 0.22);
    box-shadow: 0 24px 60px rgba(9, 44, 37, 0.16);
    display: none;
    gap: 0;
    left: 0;
    max-height: calc(100svh - 62px);
    overflow-y: auto;
    padding: 16px 20px 24px;
    position: absolute;
    right: 0;
    top: 62px;
  }
  .campaign-nav.is-open { display: grid; }
  .campaign-nav > a:not(.campaign-contact-link),
  .campaign-nav-group,
  .campaign-nav > a:nth-last-child(2) { display: block; }

  .campaign-nav > a,
  .campaign-nav-group > a {
    border-bottom: 1px solid rgba(9, 44, 37, 0.16);
    color: var(--campaign-deep);
    padding: 14px 0;
  }
  .campaign-nav > a.campaign-contact-link {
    display: inline-flex;
    justify-content: center;
    margin-top: 16px;
    padding: 12px 14px;
  }
  .campaign-menu {
    background: var(--campaign-cream);
    border: 0;
    box-shadow: none;
    display: grid;
    left: auto;
    min-width: 0;
    opacity: 1;
    padding: 4px 14px 8px;
    pointer-events: auto;
    position: static;
    transform: none;
  }
  .campaign-menu a { padding: 11px 0; }

  .world-opening h1 { font-size: 5.1rem; top: 20%; }
  .hero-service-line { top: 69%; }

  .world-narrative h2 { font-size: 2.8rem; }
  .world-search { right: 4%; width: min(52vw, 560px); }
  .world-route { left: -16%; width: 720px; }
  .annotation-three { right: 22%; }

  .ai-sticky {
    gap: 4vw;
    grid-template-columns: minmax(280px, 0.85fr) minmax(420px, 1.15fr);
    padding: 84px 34px 56px;
  }
  .ai-intro h2 { font-size: 4.15rem; }
  .ai-signal { grid-template-columns: 10px minmax(130px, 0.7fr) minmax(210px, 1.3fr); }
  .ai-signal span { font-size: 1.4rem; }
  .service-atlas-art,
  .service-atlas-copy { width: 100%; }
  .service-index-intro h2 { font-size: 3.35rem; }
  .service-panel span { font-size: 6.2rem; }
  .service-panel small { max-width: 340px; }
  .contact-copy h2 { font-size: 3.8rem; }

  .campaign-footer {
    gap: 54px;
    grid-template-columns: 1fr;
    min-height: 0;
    padding: 64px 34px 28px;
  }
  .campaign-footer-brand { font-size: 0.9rem; }
  .campaign-footer-nav {
    justify-self: start;
    max-width: 620px;
  }
  .campaign-footer-bottom { align-items: center; }
}

@media (max-width: 620px) {
  .campaign-header { padding: 0 16px; }
  .campaign-brand { font-size: 0.82rem; }
  .campaign-brand img { height: 22px; width: 22px; }

  .world-story { height: 330svh; }
  .world-sticky { min-height: 620px; }
  .world-backdrop-base {
    height: 112%;
    left: -48%;
    object-position: center bottom;
    top: -6%;
    width: 196%;
  }

  .world-annotation { font-size: 0.45rem; width: 72px; }
  .annotation-one { left: 16px; top: 18%; }
  .annotation-two { display: none; }
  .annotation-three { right: 18px; top: 14%; }
  .annotation-four { display: none; }
  .world-detail { bottom: 10%; font-size: 0.43rem; width: 104px; }
  .detail-channels { left: 16px; }
  .detail-measurement { right: 16px; }

  .world-opening h1 {
    font-size: 3.35rem;
    line-height: 0.9;
    top: 22%;
    width: calc(100% - 32px);
  }

  .hero-service-line {
    font-size: 0.62rem;
    line-height: 1.4;
    top: 68%;
    width: calc(100% - 40px);
  }

  .campaign-scroll-cue { display: none; }

  .world-narrative { width: calc(100% - 32px); }
  .world-narrative > p { margin-bottom: 16px; }
  .world-narrative h2 { font-size: 1.8rem; line-height: 1.08; }

  .world-route {
    bottom: 12%;
    height: 330px;
    left: 20px;
    width: calc(100% - 40px);
  }

  .network-line {
    bottom: 8%;
    height: auto;
    left: 50%;
    right: auto;
    top: 8%;
    width: 2px;
  }

  .network-line::after {
    height: var(--network-progress, 0%);
    left: -2px;
    top: 0;
    width: 6px;
  }

  .network-node {
    height: 25%;
    left: 0;
    top: auto;
    width: 100%;
  }

  .network-node-one { top: 0; }
  .network-node-two { top: 25%; }
  .network-node-three { top: 50%; }
  .network-node-four { top: 75%; }

  .network-node i {
    left: 50%;
    top: calc(50% - 7px);
  }

  .route-label {
    font-size: 0.5rem;
    left: calc(50% + 24px);
    padding: 5px 6px;
    top: calc(50% - 12px);
    transform: none;
  }

  .world-search {
    left: 16px;
    right: 16px;
    top: 12%;
    width: auto;
  }

  .world-search-kicker { font-size: 1.55rem; margin-bottom: 12px !important; }
  .search-interface { box-shadow: 10px 12px 0 rgba(9, 44, 37, 0.13); }

  .search-query { gap: 9px; padding: 13px 14px; }
  .search-query strong { font-size: 0.9rem; }
  .search-query small,
  .search-result small { font-size: 0.52rem; }

  .search-result { padding: 13px 14px; }
  .search-result h3 { font-size: 1.45rem; margin: 7px 0 5px; }
  .search-result p { font-size: 0.7rem; }

  .ai-story { height: 190svh; }
  .ai-sticky {
    display: block;
    min-height: 700px;
    padding: 72px 20px 28px;
  }
  .ai-intro h2 {
    font-size: 3.15rem;
    line-height: 0.94;
    margin: 14px 0 16px;
  }
  .ai-summary { font-size: 0.9rem; line-height: 1.4; }
  .ai-signal-system { margin-top: 30px; }
  .ai-system-label { margin-bottom: 10px !important; }
  .ai-signal {
    gap: 5px 10px;
    grid-template-columns: 9px 1fr;
    padding: 10px 0;
  }
  .ai-signal span { font-size: 1.25rem; }
  .ai-signal small { font-size: 0.7rem; grid-column: 2; }
  .ai-answer {
    box-shadow: 8px 9px 0 rgba(9, 44, 37, 0.12);
    margin: 16px 0 0 9%;
    padding: 14px 16px;
  }
  .ai-answer strong { font-size: 2rem; margin: 7px 0 5px; }
  .ai-answer span { font-size: 0.72rem; }

  .service-atlas { height: 240svh; }
  .service-atlas-sticky { min-height: 680px; }
  .service-atlas-art { height: 100%; width: 100%; }
  .service-atlas-art::after {
    background: linear-gradient(180deg, rgba(242, 231, 209, 0.2), transparent 24%, transparent 70%, rgba(242, 231, 209, 0.26));
  }
  .service-atlas-art img { height: 112%; object-position: 58% center; width: 112%; }
  .service-atlas-copy {
    background: transparent;
    height: 100%;
    padding: 72px 20px 24px;
    top: 0;
    width: 100%;
  }
  .service-atlas-copy::before {
    background: radial-gradient(ellipse 72% 45% at center, rgba(242, 231, 209, 0.96) 0%, rgba(242, 231, 209, 0.72) 53%, rgba(242, 231, 209, 0.22) 78%, transparent 100%);
    inset: 14% -18% 8%;
  }
  .service-index-intro > p { margin-bottom: 8px; }
  .service-index-intro h2 { font-size: 2.35rem; max-width: 300px; }
  .service-panels {
    bottom: 74px;
    left: 50%;
    right: auto;
    top: 35%;
    transform: translateX(-50%);
    width: calc(100% - 40px);
  }
  .service-panel span { font-size: 4rem; max-width: 350px; }
  .service-panel small { font-size: 0.82rem; margin: 18px 0; max-width: 320px; }
  .service-panel b { font-size: 0.58rem; }
  .service-atlas-index { bottom: 24px; gap: 15px; left: 50%; }
  .service-atlas-index > * { display: block; }
  .service-atlas-index > a:last-child {
    background: transparent;
    color: inherit;
    display: block;
    padding: 9px 0 0;
  }

  .contact-story { height: 125svh; }
  .contact-sticky { min-height: 620px; }
  .contact-art::after {
    background: linear-gradient(180deg, rgba(242, 231, 209, 0.96) 0%, rgba(242, 231, 209, 0.76) 38%, transparent 66%);
  }
  .contact-art img {
    height: 118vw;
    left: -40%;
    top: 64%;
    width: 118vw;
  }
  .contact-copy {
    left: 20px;
    right: 20px;
    top: 11%;
    width: auto;
  }
  .contact-copy h2 { font-size: 3rem; line-height: 1; }

  .hero-project-link {
    font-size: 0.56rem;
    gap: 14px;
    margin-top: 18px;
    padding: 11px 13px;
  }

  .campaign-footer {
    gap: 46px;
    min-height: 0;
    padding: 52px 22px 24px;
  }
  .campaign-footer-brand { font-size: 0.86rem; gap: 10px; }
  .campaign-footer-brand img { height: 24px; width: 24px; }
  .campaign-footer-lead > p {
    font-size: 3.5rem;
    margin-top: 38px;
  }
  .campaign-footer-action { margin-top: 28px; }
  .campaign-footer-nav { gap: 32px; }
  .campaign-footer-nav a { font-size: 0.88rem; }
  .campaign-footer-bottom {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }
}

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

  .world-story,
  .ai-story,
  .service-atlas,
  .contact-story { height: auto; }

  .world-sticky {
    height: 2100px;
    min-height: 0;
    position: relative;
  }

  .world-opening { height: 760px; opacity: 1; transform: none; }
  .world-narrative { opacity: 1; top: 930px; transform: translate(-50%, 0); }
  .world-route { bottom: 120px; opacity: 0.72; transform: none; }
  .world-search { opacity: 1; top: 1370px; transform: none; }
  .search-result { opacity: 1; transform: none; }
  .world-wash { opacity: 0.75; }

  .ai-sticky,
  .contact-sticky { height: auto; min-height: 0; position: relative; }

  .ai-intro,
  .ai-signal,
  .ai-answer,
  .contact-art,
  .contact-copy {
    opacity: 1;
    position: relative;
    transform: none;
  }

  .ai-sticky { min-height: 900px; }
  .service-atlas-sticky { height: auto; min-height: 0; position: relative; }
  .service-atlas-art { height: 70svh; position: relative; width: 100%; }
  .service-atlas-copy {
    background: var(--campaign-cream);
    height: auto;
    padding: 62px 22px;
    position: relative;
    width: 100%;
  }
  .service-panels { inset: auto; margin-top: 52px; position: relative; }
  .service-panel {
    border-top: 1px solid var(--campaign-line);
    opacity: 1;
    padding: 34px 0;
    pointer-events: auto;
    position: relative;
    transform: none;
  }
  .service-atlas-index { display: none; }
  .contact-art { height: 85svh; }
  .contact-copy { background: var(--campaign-paper); left: 0; padding: 54px 22px; top: 0; width: 100%; }
}

@media (max-width: 900px) {
  .scene-copy h2 {
    font-size: clamp(3.7rem, 8.8vw, 5rem);
  }

  .scene-copy-hero h1 {
    font-size: clamp(5rem, 12vw, 7rem);
  }

  .scene-copy-local,
  .scene-copy-answer {
    width: min(480px, 44vw);
  }

  .scene-media-map,
  .scene-media-xray {
    left: 34%;
  }

  .web-blueprint {
    bottom: 8%;
    width: 54vw;
  }
}

@media (max-width: 620px) {
  .world-story {
    height: 430svh;
  }

  .world-sticky {
    min-height: 620px;
  }

  .scene-copy > p {
    font-size: 0.57rem;
    margin-bottom: 12px;
  }

  .scene-copy > span {
    font-size: 0.82rem;
    line-height: 1.42;
    margin-top: 16px;
  }

  .scene-copy h2 {
    font-size: 3.35rem;
    line-height: 0.92;
  }

  .scene-copy-hero {
    top: 46%;
    width: calc(100% - 28px);
  }

  .scene-copy-hero h1 {
    font-size: 4.35rem;
    line-height: 0.82;
  }

  .scene-copy-hero p {
    font-size: 0.56rem;
    line-height: 1.5;
    margin: 24px auto 0;
    max-width: 290px;
  }

  .scene-media-stars img {
    inset: -8% -34%;
    object-position: center;
    width: 168%;
  }

  .constellation-focus {
    height: 112vw;
    width: 112vw;
  }

  .scene-media-map {
    inset: 0;
  }

  .scene-media-map img {
    object-position: 58% 42%;
    transform: translate3d(var(--map-x, 0), var(--map-y, 0), 0) scale(var(--map-scale, 1.28));
  }

  .scene-media-map::after {
    background:
      linear-gradient(180deg, rgba(239, 228, 207, 0.98) 0%, rgba(239, 228, 207, 0.92) 25%, rgba(239, 228, 207, 0.15) 56%, rgba(239, 228, 207, 0.28) 100%),
      linear-gradient(90deg, rgba(239, 228, 207, 0.36), transparent);
  }

  .scene-copy-local {
    left: 20px;
    top: 14%;
    transform: none;
    width: calc(100% - 40px);
  }

  .map-pulse {
    height: 90px;
    left: 60%;
    top: 61%;
    width: 90px;
  }

  .local-listing {
    bottom: 14%;
    left: 22px;
    padding: 16px 18px;
    top: auto;
    width: 230px;
  }

  .scene-media-xray {
    inset: 28% -18% -8% 4%;
  }

  .scene-media-xray::after {
    background:
      linear-gradient(180deg, #16211e 0%, rgba(22, 33, 30, 0.92) 8%, rgba(22, 33, 30, 0.05) 46%, rgba(22, 33, 30, 0.74) 100%),
      radial-gradient(circle at 58% 58%, transparent, rgba(22, 33, 30, 0.46) 76%);
  }

  .scene-copy-answer {
    left: 20px;
    top: 13%;
    transform: none;
    width: calc(100% - 40px);
  }

  .answer-evidence {
    inset: 28% 0 0;
  }

  .evidence {
    font-size: 0.48rem;
  }

  .evidence-one { left: 11%; top: 26%; }
  .evidence-two { right: 8%; top: 38%; }
  .evidence-three { left: 15%; top: 59%; }
  .evidence-four { display: none; }

  .answer-window {
    bottom: 12%;
    left: 22px;
    padding: 17px 18px;
    right: auto;
    width: calc(100% - 44px);
  }

  .answer-window strong {
    font-size: 1.65rem;
  }

  .scene-copy-web {
    left: 20px;
    top: 12%;
    width: calc(100% - 40px);
  }

  .scene-copy-web h2 {
    font-size: 3.15rem;
  }

  .web-blueprint {
    bottom: 11%;
    height: 43%;
    right: 5%;
    width: 90%;
  }

  .web-window {
    box-shadow: 13px 15px 0 rgba(9, 44, 37, 0.13);
  }

  .web-window-bar {
    height: 38px;
    padding: 0 11px;
  }

  .web-window-body {
    height: calc(100% - 38px);
    padding: 11px;
  }

  .web-page {
    min-height: 72px;
    padding: 10px;
  }

  .web-page strong {
    font-size: 0.94rem;
    margin-top: 7px;
  }

  .page-home {
    height: calc(100% - 22px);
    left: 11px;
    top: 11px;
  }

  .page-home strong {
    font-size: 1.6rem;
  }

  .page-service { right: 11px; top: 11px; }
  .page-location { right: 11px; top: calc(34% + 11px); }
  .page-guide { bottom: 11px; right: 11px; }

  .story-chapters {
    bottom: 8px;
    gap: 12px;
    width: max-content;
  }

  .story-chapter {
    font-size: 0.43rem;
  }

  .contact-story {
    height: 145svh;
  }

  .contact-sticky {
    min-height: 760px;
  }

  .contact-copy {
    left: 20px;
    right: 20px;
    top: 10%;
    transform: translateY(var(--contact-copy-y, 34px));
    width: auto;
  }

  .contact-copy h2 {
    font-size: 3.15rem;
    line-height: 0.94;
  }

  .contact-copy > span {
    font-size: 0.82rem;
    margin-top: 16px;
  }

  .contact-copy a {
    font-size: 0.6rem;
    margin-top: 18px;
  }

  .campaign-home a.contact-inquiry {
    bottom: 9%;
    left: 20px;
    right: 20px;
    top: auto;
    transform: translateY(var(--contact-inquiry-y, 50px)) rotate(var(--contact-inquiry-rotate, 1.2deg));
    width: auto;
  }

  .contact-inquiry-question {
    gap: 12px;
    padding: 22px 20px 20px;
  }

  .contact-inquiry-question strong {
    font-size: 2rem;
  }

  .contact-inquiry-fields {
    gap: 15px;
    padding: 0 20px 22px;
  }

  .contact-inquiry-action {
    padding: 16px 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .world-story {
    height: auto;
  }

  .world-sticky {
    display: block;
    height: auto;
    min-height: 0;
    overflow: visible;
    position: relative;
  }

  .story-scene {
    min-height: 720px;
    opacity: 1;
    position: relative;
    transform: none;
  }

  .story-chapters {
    display: none;
  }

  .scene-media img,
  .constellation-focus,
  .map-pulse,
  .local-listing,
  .answer-window,
  .web-blueprint,
  .web-page {
    opacity: 1;
    transform: none;
  }

  .contact-story {
    height: auto;
  }

  .contact-sticky {
    min-height: 980px;
    position: relative;
  }

  .contact-copy,
  .contact-inquiry {
    opacity: 1;
    transform: none;
  }

  .contact-copy {
    background: transparent;
    color: var(--campaign-paper);
  }

  .contact-inquiry-fields b::after {
    transform: scaleX(1);
  }
}
