.contact-section,
.site-footer { --contact-navy:#031426; --contact-cyan:#28c8dd; --contact-orange:#f36c2d; }

/* ---------- Contact hero (video background, centred) ---------- */
.contact-section.contact-hero {
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:min(88svh,820px);
  padding:clamp(104px,10vw,150px) 0 clamp(96px,9vw,140px);
  background:var(--contact-navy);
  overflow:clip;
  isolation:isolate;
}
.contact-hero__video {
  position:absolute;
  z-index:0;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  opacity:0;
  transition:opacity .8s ease;
}
.contact-hero__video.is-ready { opacity:1; }
/* Top stop matches the wave fill so the two meet without a seam. */
.contact-hero__scrim {
  position:absolute;
  z-index:1;
  inset:0;
  background:linear-gradient(180deg,
    var(--contact-navy) 0%,
    rgba(3,20,38,.47) 13%,
    rgba(3,20,38,.41) 47%,
    rgba(3,20,38,.80) 85%,
    var(--contact-navy) 100%);
  pointer-events:none;
}
.contact-hero__wave {
  position:absolute;
  z-index:2;
  top:-1px;
  left:0;
  width:100%;
  height:clamp(58px,6vw,96px);
  transform:scaleY(-1);
  fill:var(--contact-navy);
  pointer-events:none;
}

.contact-hero__layout {
  position:relative;
  z-index:3;
  min-width:0;
  width:min(calc(100% - (var(--page-gutter) * 2)),var(--page-max-width));
  margin-inline:auto;
  text-align:center;
}
.contact-hero__layout::before {
  content:"";
  position:absolute;
  z-index:-1;
  left:50%;
  top:50%;
  width:min(132%,1080px);
  height:min(150%,720px);
  transform:translate(-50%,-50%);
  background:radial-gradient(ellipse at center,rgba(3,20,38,.52) 0%,rgba(3,20,38,.30) 46%,rgba(3,20,38,0) 73%);
  pointer-events:none;
}
.contact-hero__eyebrow {
  margin:0 0 var(--section-heading-gap);
  color:var(--contact-cyan);
  font:var(--weight-medium) var(--type-label)/1 var(--font-body);
  letter-spacing:var(--tracking-label);
}
/* Same tokens as every other section title. */
.contact-hero__title {
  max-width:18ch;
  margin:0 auto;
  color:#fff;
  font:var(--weight-medium) var(--section-title-size)/var(--section-title-line-height) var(--font-heading);
  letter-spacing:var(--section-title-letter-spacing);
}
.contact-hero__title > span { display:block; }
.contact-hero__accent { color:#79e4ef; }
.contact-hero__copy {
  max-width:600px;
  margin:var(--section-copy-gap) auto 0;
  color:rgba(233,244,248,.76);
  font:var(--weight-regular) var(--type-body-lg)/var(--leading-body) var(--font-body);
}

/* Typewriter. Untyped characters keep their space so the centred lines never shift. */
.tw-word { display:inline-block; }
.contact-hero--enhanced .tw-char { opacity:0; }
.contact-hero--enhanced .tw-char.is-typed { opacity:1; }
.contact-hero--enhanced .tw-char.is-caret {
  margin-right:-.055em;
  border-right:.055em solid var(--contact-cyan);
  animation:contact-caret 1.05s steps(1,end) infinite;
}
@keyframes contact-caret {
  0%,55% { border-right-color:var(--contact-cyan); }
  56%,100% { border-right-color:transparent; }
}
/* Copy and buttons rise in once the headline finishes typing. */
.contact-hero--enhanced .contact-hero__copy,
.contact-hero--enhanced .contact-hero__actions {
  opacity:0;
  transform:translate3d(0,14px,0);
  transition:opacity .6s ease,transform .6s cubic-bezier(.22,.61,.36,1);
}
.contact-hero--enhanced.is-typed-out .contact-hero__copy,
.contact-hero--enhanced.is-typed-out .contact-hero__actions { opacity:1; transform:none; }
.contact-hero--enhanced.is-typed-out .contact-hero__actions { transition-delay:.12s; }

.contact-hero__actions {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:14px;
  margin-top:clamp(36px,3.6vw,52px);
}
.contact-action {
  display:inline-flex;
  align-items:center;
  gap:10px;
  border:1px solid transparent;
  border-radius:999px;
  padding:16px 28px;
  font:var(--weight-medium) var(--type-body-md)/1 var(--font-body);
  text-decoration:none;
  transition:background-color .25s ease,color .25s ease,border-color .25s ease,transform .25s ease;
}
.contact-action span { transition:transform .25s ease; }
.contact-action--solid { background:#fff; color:var(--contact-navy); }
.contact-action--solid:hover,
.contact-action--solid:focus-visible { background:var(--contact-cyan); transform:translateY(-2px); }
.contact-action--solid:hover span { transform:translateX(4px); }
.contact-action--ghost { border-color:rgba(255,255,255,.34); color:#fff; }
.contact-action--ghost:hover,
.contact-action--ghost:focus-visible { border-color:var(--contact-orange); color:var(--contact-orange); transform:translateY(-2px); }

.site-footer { min-height:0; color:#fff; background:#031426; padding:58px 0 28px; }
.footer-match-cut { height:clamp(70px,7vw,90px); margin-bottom:-1px; overflow:hidden; background:#031426; }
.footer-match-cut svg { display:block; width:100%; height:calc(100% + 1px); }
.footer-match-cut use { fill:#031426; }
.site-footer__container { width:min(calc(100% - (var(--page-gutter) * 2)),var(--page-max-width)); margin-inline:auto; }
.site-footer__grid { display:grid; grid-template-columns:minmax(240px,1.5fr) repeat(2,minmax(150px,.5fr)); gap:clamp(48px,7vw,110px); align-items:start; padding:0 0 52px; }
.site-footer__grid h3 { margin:0 0 21px; color:var(--contact-cyan); font-size:var(--type-label); font-weight:var(--weight-medium); line-height:1; letter-spacing:var(--tracking-label); }
.site-footer__grid a { color:rgba(231,243,247,.68); font-size:var(--type-body-sm); line-height:var(--leading-body); text-decoration:none; }
.site-footer__grid a { display:block; width:max-content; max-width:100%; margin:0 0 7px; transition:color .2s ease,transform .2s ease; }
.site-footer__grid a:hover { color:#fff; transform:translateX(3px); }
.site-footer__brand img { display:block; width:88px; height:auto; object-fit:contain; filter:none; }
.site-footer__bottom { display:flex; justify-content:flex-start; align-items:center; gap:32px; border-top:1px solid rgba(255,255,255,.12); padding-top:24px; }
.site-footer__bottom>p { margin:0; color:rgba(255,255,255,.42); font-size:var(--type-label); line-height:var(--leading-compact); }

@media (max-width:980px) {
  .contact-hero__layout,
  .site-footer__container { width:min(calc(100% - (var(--page-gutter) * 2)),var(--page-max-width)); }
  .contact-hero__title { max-width:none; }
  .site-footer__grid { grid-template-columns:1fr .6fr .6fr; }
  .site-footer__links { grid-column:auto; }
}

@media (max-width:820px) {
  .footer-match-cut { height:clamp(40px,12vw,55px); }
  .contact-section.contact-hero { min-height:min(80svh,680px); padding:100px 0 96px; }
  .contact-hero__wave { height:clamp(38px,11vw,58px); }
  .site-footer { min-height:0; padding:52px 0 26px; }
  .site-footer__grid { grid-template-columns:1fr 1fr; gap:34px 26px; padding:0 0 36px; }
  .site-footer__brand { grid-column:1/-1; }
  .site-footer__links { grid-column:auto; }
  .site-footer__bottom { align-items:flex-start; flex-direction:column; }
}

/* Matches the global mobile type tokens in hero.css. */
@media (max-width:640px) {
  .contact-section.contact-hero { min-height:min(76svh,600px); padding:86px 0 82px; }
  .contact-hero__title,
  .contact-hero__copy { max-width:none; }
  .contact-hero__layout::before { width:152%; height:164%; }
}

@media (max-width:520px) {
  .contact-hero__actions { gap:12px; margin-top:32px; }
  .contact-action { width:100%; justify-content:center; }
}

@media (max-width:430px) {
  .contact-hero__layout,
  .site-footer__container { width:min(calc(100% - (var(--page-gutter) * 2)),var(--page-max-width)); }
  .contact-section.contact-hero { padding:78px 0 74px; }
  .site-footer__grid { grid-template-columns:1fr; }
  .site-footer__brand,
  .site-footer__links { grid-column:1; }
  .site-footer__bottom { align-items:flex-start; }
}

@media (prefers-reduced-motion:reduce) {
  .site-footer a { transition:none!important; }
  .contact-hero__video { display:none; }
  .contact-hero--enhanced .tw-char { opacity:1; }
  .contact-hero--enhanced .tw-char.is-caret { border-right-color:transparent; animation:none; }
  .contact-hero--enhanced .contact-hero__copy,
  .contact-hero--enhanced .contact-hero__actions { opacity:1; transform:none; transition:none!important; }
  .contact-action,
  .contact-action span { transition:none!important; }
}
