/* V5 end sequence, kept on the V2 CMS data model. The WebGL organism itself
   remains the one continuous canvas from the earlier journey. */

.sc-reach {
  min-height: 100dvh;
  padding: 16vh var(--gutter);
  position: relative;
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(360px, .78fr);
  gap: clamp(36px, 4vw, 68px);
  align-items: center;
  overflow: clip;
  background: transparent !important;
  color: #101010;
}

.sc-reach .reach-panel { display: none !important; }
.v5-goo-defs { position: absolute; width: 0; height: 0; overflow: hidden; }

.sc-reach .reach-map-legacy { display: none; }

.sc-reach .reach-dot-map {
  --reach-map-accent: #608cd2;
  --reach-map-dot: #494949;
  --reach-map-pin: #ffffff;
  position: relative;
  width: 100%;
  max-width: 760px;
  margin-inline: auto;
  color: #101010;
  background: transparent;
}

.sc-reach .dot-map-meta,
.sc-reach .dot-map-regions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-family: "Aeonik", sans-serif;
  font-size: clamp(8px, .66vw, 10px);
  font-weight: 650;
  letter-spacing: .12em;
  line-height: 1.4;
  text-transform: uppercase;
}

.sc-reach .dot-map-meta {
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(16, 16, 16, .22);
  color: rgba(16, 16, 16, .54);
}

.sc-reach .dot-map-meta span:last-child { color: var(--reach-map-accent); }

.sc-reach .dot-map-stage {
  position: relative;
  display: grid;
  place-items: center;
  min-height: clamp(250px, 35vw, 430px);
  padding: clamp(22px, 2.8vw, 38px) 0;
  overflow: visible;
}

.sc-reach .reach-dot-map .worldmap {
  grid-column: 1;
  grid-row: 1;
  width: 100%;
  max-height: none;
  margin: 0;
  align-self: center;
  justify-self: stretch;
}

.sc-reach .reach-dot-map .wm-base {
  opacity: .68;
  filter: none;
  image-rendering: pixelated;
}

.sc-reach .reach-dot-map .wm-route {
  stroke-width: 1.1;
  opacity: .42;
}

.sc-reach .reach-dot-map .wm-pill,
.sc-reach .reach-dot-map .wm-pill.hub {
  display: none;
  gap: 5px;
  padding: 2px 5px;
  border: 0;
  border-radius: 0;
  background: var(--reach-map-pin, #fff);
  box-shadow: none;
}

.sc-reach .reach-dot-map .wm-pill::before {
  content: "";
  width: 4px;
  height: 4px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--reach-map-accent);
}

.sc-reach .reach-dot-map .wm-pill span,
.sc-reach .reach-dot-map .wm-pill.hub span {
  color: #101010;
  font-family: "Aeonik", sans-serif;
  font-size: 8.5px;
  font-weight: 620;
  letter-spacing: .06em;
}

.sc-reach .reach-dot-map .wm-pill.hub span { color: var(--reach-map-accent); }

.sc-reach .dot-map-regions {
  justify-content: flex-start;
  flex-wrap: wrap;
  padding-top: 12px;
  border-top: 1px solid rgba(16, 16, 16, .22);
  color: rgba(16, 16, 16, .48);
}

.sc-reach .dot-map-regions span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.sc-reach .dot-map-regions span::before {
  content: "";
  width: 4px;
  height: 4px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: currentColor;
}

.sc-reach .dot-map-regions .is-hub { color: var(--reach-map-accent); }

.sc-reach .dish-wrap { position: relative; aspect-ratio: 1; max-width: 640px; width: 100%; margin-inline: auto; }
.sc-reach .dish-ring { position: absolute; inset: 0; border-radius: 50%; border: 1px dashed rgba(16, 16, 16, 0.30); animation: v5-spin 60s linear infinite; }
.sc-reach .dish-ring::after { content: ""; position: absolute; inset: -7px; border-radius: 50%; border: 1px solid rgba(16, 16, 16, 0.09); }
.sc-reach .dish { position: absolute; inset: 4.5%; border-radius: 50%; overflow: clip; background: radial-gradient(90% 90% at 38% 32%, rgba(255,255,255,.42), rgba(255,255,255,.10) 70%); box-shadow: inset 0 0 0 1px rgba(16,16,16,.09), inset 0 24px 60px rgba(255,255,255,.30); }
.sc-reach .dish .cells { position: absolute; inset: 0; filter: url(#v5-reach-goo); }
.sc-reach .cell { position: absolute; display: grid; place-items: center; text-align: center; border-radius: 50%; background: #fff; color: #101010; font-weight: 640; letter-spacing: .06em; font-size: clamp(11px, 1.15vw, 15px); text-transform: uppercase; user-select: none; animation: v5-drift var(--t,17s) cubic-bezier(.83,0,.17,1) infinite alternate; }
.sc-reach .cell.hq { background: #101010; color: #fff; z-index: 2; letter-spacing: .14em; }
.sc-reach .cell.dot { width: 4.5%; height: 4.5%; }
.sc-reach .cell b { font-weight: inherit; pointer-events: none; }

.sc-reach .reach-copy h2,
.sc-reach .reach-copy h2[data-cms-html="reach.headline_html"] {
  max-width: none;
  margin: 0;
  color: #101010;
  font-size: clamp(40px, 5.6vw, 96px) !important;
  font-weight: 360;
  letter-spacing: -.045em !important;
  line-height: .98 !important;
}
.sc-reach .reach-copy h2 .serif { font-weight: inherit; }
.sc-reach .reach-copy { padding-left: clamp(12px, 2vw, 34px); }
.sc-reach .reach-copy > p { margin-top: clamp(20px, 3vh, 32px); max-width: 44ch; color: rgba(16,16,16,.70); font-size: clamp(14.5px, 1.15vw, 18px); line-height: 1.6; }
.sc-reach .reach-stats { margin-top: clamp(28px, 4.5vh, 52px); display: flex; gap: clamp(24px, 3.4vw, 56px); flex-wrap: wrap; border: 0; padding: 0; }
.sc-reach .reach-stats div { display: flex; flex-direction: column; gap: 6px; }
.sc-reach .reach-stats b { color: #101010; font-size: clamp(30px, 3.2vw, 54px); font-weight: 360; letter-spacing: -.04em; line-height: 1; font-variant-numeric: tabular-nums; }
.sc-reach .reach-stats small { color: rgba(16,16,16,.50); font-size: 10.5px; font-weight: 640; letter-spacing: .22em; text-transform: uppercase; }

.sc-contact {
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  position: relative;
  z-index: 4;
  padding: 18vh var(--gutter) 14vh;
  overflow: clip;
  background: transparent !important;
  color: #101010;
  text-align: center;
}

.sc-contact .contact-h,
.sc-contact .contact-h[data-cms-html="contact.headline_html"] { max-width: min(24ch, 92vw); margin: 0; color: #101010; font-size: clamp(44px, 8.2vw, 148px) !important; font-weight: 340; letter-spacing: -.05em !important; line-height: 1 !important; }
.sc-contact .contact-h .headline-keep { display: inline-block; white-space: nowrap; }
.sc-contact .contact-h .serif { font-weight: 680; }
.contact-actions { margin-top: clamp(34px, 6vh, 64px); display: flex; flex-direction: column; align-items: center; gap: 22px; }
.btn-core {
  --contact-cta-bg: #101010;
  --contact-cta-fg: #fff;
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .8em;
  overflow: clip;
  border: 0;
  border-radius: 99px;
  padding: clamp(18px, 2vh, 24px) clamp(34px, 4vw, 54px);
  background: var(--contact-cta-bg);
  color: var(--contact-cta-fg);
  font-size: clamp(13px, 1.05vw, 16px);
  font-weight: 660;
  letter-spacing: .16em;
  text-transform: uppercase;
  transition: background .35s, color .35s;
}
.btn-core:hover {
  background: #fff;
  color: var(--contact-cta-bg);
}
.contact-mail { position: relative; color: rgba(16,16,16,.70); font-size: clamp(15px, 1.5vw, 22px); letter-spacing: -.01em; transition: color .3s; }
.contact-mail::after { content: ""; position: absolute; left: 0; bottom: -4px; width: 100%; height: 1px; background: #101010; scale: 0 1; transform-origin: right; transition: scale .4s cubic-bezier(.23,1,.32,1); }
.contact-mail:hover { color: #101010; }
.contact-mail:hover::after { scale: 1 1; transform-origin: left; }

#site-footer {
  --footer-gutter: var(--gutter, clamp(22px, 4.1vw, 64px));
  position: relative;
  /* No z-index / isolation here on purpose: the footer must NOT form a
     stacking context, so the shared fixed organism canvas (#organism-gl,
     z-index:3) can sit above the footer image (z-index:0) and below the
     frosted panel (z-index:5) — layering the real "talk to us" blob into
     the footer rather than hiding it behind the whole footer. */
  overflow: hidden;
  margin-top: 0 !important;
  padding: clamp(30px, 4vw, 56px) var(--footer-gutter) !important;
  border-top: 0;
  background: var(--footer-home-bg, transparent);
  color: #101010 !important;
  font-family: "Aeonik", sans-serif !important;
}

#site-footer * { font-family: "Aeonik", sans-serif !important; }

#site-footer .foot-image {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  line-height: 0;
  background: transparent;
}

#site-footer .foot-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: left center;
}

#site-footer .foot-glass {
  position: relative;
  z-index: 5;
  display: grid;
  grid-template-columns: minmax(240px, .8fr) minmax(0, 2.2fr);
  gap: clamp(36px, 5vw, 80px);
  align-items: start;
  padding: clamp(28px, 3.4vw, 48px);
  border: 1px solid rgba(255,255,255,.72);
  border-radius: 0;
  background: rgba(255,255,255,.40);
  -webkit-backdrop-filter: blur(20px) saturate(120%);
  backdrop-filter: blur(20px) saturate(120%);
}

#site-footer .foot-legal {
  min-width: 0;
  color: #101010;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.5;
}

#site-footer .foot-legal-stack {
  display: flex;
  min-width: 0;
  min-height: 100%;
  flex-direction: column;
  align-items: flex-start;
}

#site-footer .foot-legal > span {
  display: block;
  max-width: 34ch;
}

#site-footer .foot-legal nav {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  margin-top: 18px;
}

#site-footer .foot-legal nav a[href*="privacy"] { order: -1; }
#site-footer .foot-legal a:hover { color: #101010; }

#site-footer .foot-social { margin-top: 22px; }
#site-footer .foot-social[hidden] { display: none; }
#site-footer .foot-social__label { display: block; margin: 0 0 10px; color: #101010; font-size: 12px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
#site-footer .foot-social__icons { display: flex; gap: 10px; }
#site-footer .foot-social__icon { display: grid; place-items: center; inline-size: 34px; block-size: 34px; border: 1px solid rgba(16,18,26,.22); border-radius: 0; color: #101010; transition: border-color .2s ease, background-color .2s ease; }
#site-footer .foot-social__icon[hidden] { display: none; }
#site-footer .foot-social__icon svg { inline-size: 16px; block-size: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
#site-footer .foot-social__icon[data-social-channel="x"] svg { inline-size: 12px; block-size: 12px; fill: currentColor; stroke: none; }
#site-footer .foot-social__icon:hover { border-color: #101010; background: #101010; color: #fff; }

#site-footer .foot-brand-logo {
  display: block;
  width: clamp(150px, 13vw, 206px);
  max-width: 100%;
  margin-top: auto;
  padding-top: clamp(36px, 4vw, 64px);
}

#site-footer .foot-brand-logo__mark {
  display: block;
  width: 100%;
  aspect-ratio: 1920 / 539;
  background: var(--brand-logo-on-light, var(--brand-logo)) center / contain no-repeat;
}

#site-footer .foot-brand-logo:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 5px;
}

#site-footer .foot-grid {
  display: grid;
  grid-template-columns: minmax(100px, .55fr) minmax(360px, 1.45fr);
  gap: clamp(24px, 3vw, 46px);
  margin: 0;
  padding: 0;
}

#site-footer .foot-grid h4 { margin: 0 0 14px; color: #101010; font-size: 14px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
#site-footer .foot-grid a,
#site-footer .foot-grid p,
#site-footer .foot-offices-body { display: block; margin: 0; color: #101010; font-size: 14px; font-weight: 400; line-height: 1.75; }
#site-footer .foot-menu a { font-weight: 400; }
#site-footer .foot-grid a:hover { color: #101010; }
#site-footer .foot-grid strong { display: block; color: #101010; font-size: 15px; font-weight: 500; }
#site-footer .foot-offices-body { display: flex; flex-wrap: wrap; align-items: flex-start; gap: clamp(24px, 3vw, 46px); }
#site-footer .foot-office { flex: 1 1 200px; min-inline-size: 0; margin: 0; }
#site-footer .foot-office > strong:first-child { margin: 0 0 14px; }
#site-footer .foot-office > strong:first-child + br,
#site-footer .foot-office > a + br { display: none; }
#site-footer .foot-local-time { display: flex; align-items: center; gap: .35em; width: fit-content; margin-top: 12px; padding: 2px 6px; background: #101010; color: #fff; font-size: 14px; font-weight: 400; line-height: 1.4; }
#site-footer .foot-office > .foot-local-time { margin-top: 12px; }
#site-footer .foot-local-time + strong { margin-top: 14px; }
#site-footer .foot-local-time__label,
#site-footer .foot-local-time time { font-weight: 400; }

@keyframes v5-spin { to { rotate: 360deg; } }
@keyframes v5-drift { 0% { translate: 0 0; border-radius: 50% 50% 48% 52% / 52% 48% 50% 50%; } 50% { translate: var(--dx,3%) var(--dy,-4%); border-radius: 46% 54% 58% 42% / 48% 44% 56% 52%; } 100% { translate: calc(var(--dx,3%) * -.7) calc(var(--dy,-4%) * -.8); border-radius: 55% 45% 44% 56% / 45% 57% 43% 55%; } }

@media (max-width: 920px) { .sc-reach { grid-template-columns: 1fr; padding-block: 12vh; } .sc-reach .reach-copy { padding-left: 0; } .sc-reach .reach-dot-map { max-width: 640px; } .sc-reach .dish-wrap { max-width: 520px; } }
/* Tablets: the full-viewport centered contact stage leaves ~900px of empty air
   in portrait. Let content set the height and keep generous but finite padding. */
@media (max-width: 1200px), (any-pointer: coarse) and (max-width: 1439px) {
  .sc-contact { min-height: auto; padding: clamp(88px, 14vh, 160px) var(--gutter); }
}
/* Tablet portrait: vh-based paddings inflate on the tall viewport — pin them
   near the phone's absolute rhythm (~100-120px). */
@media (min-width: 744px) and (max-width: 1200px) and (orientation: portrait) {
  .sc-reach { min-height: 0; padding-block: clamp(48px, 6vh, 84px); row-gap: clamp(24px, 3.5vh, 42px); }
  .sc-contact { padding: clamp(72px, 9vh, 120px) var(--gutter); }
}
@media (max-width: 900px) {
  #site-footer { padding-inline: var(--footer-gutter) !important; }
  #site-footer .foot-image img { object-position: 38% center; }
  #site-footer .foot-glass { grid-template-columns: 1fr; }
  #site-footer .foot-grid { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .sc-reach .dot-map-meta { align-items: flex-start; flex-direction: column; gap: 4px; }
  .sc-reach .dot-map-stage { min-height: 210px; padding-block: 18px; }
  .sc-reach .dot-map-regions { gap: 9px 14px; }
  .sc-reach .reach-dot-map .wm-pill span,
  .sc-reach .reach-dot-map .wm-pill.hub span { font-size: 11.5px; letter-spacing: .02em; }
  .sc-reach .reach-dot-map .wm-pill::before { width: 5px; height: 5px; }
  #site-footer { padding: 16px var(--footer-gutter) !important; }
  #site-footer .foot-glass { gap: 38px; padding: 28px 22px; }
  #site-footer .foot-grid { grid-template-columns: 1fr; gap: 34px; }
  #site-footer .foot-offices-col { grid-column: auto; }
}
@media (prefers-reduced-motion: reduce) { .sc-reach .dish-ring, .sc-reach .cell { animation: none; } }
