/* ==========================================================================
   Eco Minerals — main stylesheet
   Design source: Figma / PSD comps at 1920px. Sizes scale fluidly down to mobile.
   ========================================================================== */

/* ---------- Fonts ----------
   Transducer (headings) loads from the Adobe Fonts web kit linked in each page <head>.
   Until the kit is added, headings fall back to Archivo (self-hosted, widened) so the
   layout stays close to the design. Epilogue + Montserrat are self-hosted (OFL). */
@font-face {
  font-family: "Epilogue";
  src: url("../fonts/epilogue-var.woff2") format("woff2");
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Epilogue";
  src: url("../fonts/epilogue-italic-var.woff2") format("woff2");
  font-weight: 100 900; font-style: italic; font-display: swap;
}
@font-face {
  font-family: "Montserrat";
  src: url("../fonts/montserrat-var.woff2") format("woff2");
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Archivo Interim";
  src: url("../fonts/archivo-var.woff2") format("woff2");
  font-weight: 100 900; font-stretch: 62% 125%; font-style: normal; font-display: swap;
}

/* ---------- Tokens ---------- */
:root {
  color-scheme: dark;
  --navy: #101d32;
  --navy-panel: #1e3352;
  --navy-panel-2: #1d293f;
  --navy-band: #1f304a;
  --blue: #2463af;
  --blue-hover: #2c72c6;
  --sky: #2f9ae6;
  --white: #fff;
  --muted: #75767f;
  --rule: rgba(255, 255, 255, .33);

  /* Adobe Fonts CSS family names — confirm against the kit's CSS when it's added */
  /* Headings are Transducer Extended Black. The same stack serves both variables so every heading matches:
     the Adobe web kit name first, then locally installed Transducer (font-stretch 125% picks its Extended width). */
  --font-display: "transducer-extended", "Transducer Extended", "transducer", "Transducer", "Archivo Interim", "Arial Black", sans-serif;
  --font-display-x: "transducer-extended", "Transducer Extended", "transducer", "Transducer", "Archivo Interim", "Arial Black", sans-serif;
  --font-body: "Epilogue", "Helvetica Neue", Arial, sans-serif;

  --container: 1620px;
  --gutter: clamp(20px, 7.8125vw, 150px);

  /* type scale (desktop value = design px at 1920) */
  --fs-h1: clamp(38px, 3.75vw, 72px);
  --fs-h57: clamp(32px, 2.97vw, 57px);
  --fs-h2: clamp(30px, 2.71vw, 52px);
  --fs-h3: clamp(24px, 1.875vw, 36px);
  --fs-card: clamp(18px, 1.25vw, 24px);
  --fs-lead: clamp(18px, 1.25vw, 24px);
  --fs-body: clamp(16px, .9375vw, 18px);
  --fs-btn: clamp(14px, .833vw, 16px);

  --sec-pad: clamp(64px, 6.25vw, 120px);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0;
  background: var(--navy);
  color: var(--white);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: 1.667;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
img, video, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
h1, h2, h3, h4 { margin: 0; font-weight: 900; }
ul { margin: 0; padding: 0; }
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--sky); outline-offset: 3px; }

.sr-only {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link {
  position: absolute; left: 16px; top: -60px; z-index: 100;
  background: var(--white); color: var(--navy); padding: 10px 16px; border-radius: 4px;
  font-weight: 600; text-decoration: none; transition: top .2s;
}
.skip-link:focus { top: 16px; }

.container {
  width: 100%;
  max-width: calc(var(--container) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* ---------- Type ---------- */
.display, .h1, .h2, .h57, .h3 {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: 125%;
  letter-spacing: 0;
}
.display-x { font-family: var(--font-display-x); font-weight: 900; font-stretch: 125%; }
.h1 { font-size: var(--fs-h1); line-height: 1.11; }
.h57 { font-size: var(--fs-h57); line-height: 1.17; }
.h2 { font-size: var(--fs-h2); line-height: 1.2; }
.h3 { font-size: var(--fs-h3); line-height: 1.2; }
.lead { font-size: var(--fs-lead); line-height: 1.54; }
.text-blue { color: var(--blue); }
.text-navy { color: var(--navy); }
.center { text-align: center; }
.small { font-size: 14px; line-height: 1.45; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 14px;
  min-height: 55px; padding: 0 22px 0 26px;
  border-radius: 3px; border: 1px solid transparent;
  background: var(--blue); color: var(--white);
  font-family: var(--font-body); font-size: var(--fs-btn); font-weight: 400;
  line-height: 1; letter-spacing: .01em; text-transform: uppercase; text-decoration: none;
  cursor: pointer; transition: background-color .2s, border-color .2s, color .2s;
}
.btn:hover { background: var(--blue-hover); }
.btn .i-arrow { width: 18px; height: 18px; flex: none; }
.btn-outline { background: transparent; border-color: rgba(255,255,255,.85); }
.btn-outline:hover { background: rgba(255,255,255,.08); }
.btn-row { display: flex; flex-wrap: wrap; gap: clamp(14px, 1.5vw, 28px); }

/* ---------- Header / nav ---------- */
.site-header {
  position: absolute; inset: 0 0 auto 0; z-index: 20;
  padding-top: clamp(16px, 2.6vw, 50px);
}
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.logo { position: relative; z-index: 31; }
.logo img { width: clamp(150px, 16.1vw, 309px); height: auto; }
.site-nav { display: flex; align-items: center; gap: clamp(20px, 2.4vw, 46px); }
.site-nav ul { list-style: none; display: flex; align-items: center; gap: clamp(18px, 2.1vw, 40px); }
.site-nav ul a {
  font-size: clamp(15px, .9375vw, 18px); font-weight: 500; text-decoration: none; white-space: nowrap;
  padding: 6px 0; position: relative;
}
.site-nav ul a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: left; transition: transform .25s;
}
.site-nav ul a:hover::after { transform: scaleX(1); }
.site-nav ul a[aria-current="page"] { font-weight: 700; }
.btn-contact {
  min-height: 51px; padding: 0 36px; font-size: clamp(15px, .9375vw, 18px); font-weight: 500;
  text-transform: none; border-radius: 4px;
}
.nav-toggle { display: none; }
.logo { flex: none; }
@media (min-width: 1280px) and (max-width: 1599px) {
  .site-nav { gap: clamp(14px, 1.2vw, 20px); }
  .site-nav ul { gap: clamp(14px, 1.15vw, 22px); }
  .btn-contact { padding: 0 26px; }
  .site-header:not(.is-fixed) .logo svg { width: clamp(150px, 15vw, 240px); }
}

@media (max-width: 1279px) {
  .nav-toggle {
    display: inline-flex; align-items: center; justify-content: center;
    width: 48px; height: 48px; border: 0; background: transparent; cursor: pointer; position: relative; z-index: 31;
  }
  .nav-toggle .bars, .nav-toggle .bars::before, .nav-toggle .bars::after {
    content: ""; display: block; width: 26px; height: 2px; background: var(--white); border-radius: 2px;
    transition: transform .25s, opacity .25s;
  }
  .nav-toggle .bars { position: relative; }
  .nav-toggle .bars::before { position: absolute; top: -8px; }
  .nav-toggle .bars::after { position: absolute; top: 8px; }
  .nav-open .nav-toggle .bars { background: transparent; }
  .nav-open .nav-toggle .bars::before { transform: translateY(8px) rotate(45deg); }
  .nav-open .nav-toggle .bars::after { transform: translateY(-8px) rotate(-45deg); }

  .site-nav {
    position: fixed; inset: 0; z-index: 30;
    flex-direction: column; align-items: flex-start; justify-content: center; gap: 36px;
    padding: 100px var(--gutter) 60px;
    background: var(--navy);
    opacity: 0; visibility: hidden; transition: opacity .25s, visibility .25s;
  }
  .nav-open .site-nav { opacity: 1; visibility: visible; }
  .site-nav ul { flex-direction: column; align-items: flex-start; gap: 22px; }
  .site-nav ul a { font-size: clamp(20px, 5vw, 26px); }
  .nav-open { overflow: hidden; }
}

/* ---------- Hero: inner pages (animated topography lines) ---------- */
.hero {
  position: relative; overflow: hidden; background: var(--navy);
  padding-top: clamp(150px, 16.9vw, 325px);
  padding-bottom: clamp(56px, 5vw, 96px);
}
.hero-topo { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.hero-topo video, .hero-topo img {
  position: absolute; top: 0; right: 0; height: 100%; width: 83.5%;
  max-height: 930px; object-fit: cover; object-position: left top;
  mix-blend-mode: screen; opacity: .43;
}
.hero-topo::after {
  /* matches the "gradient copy 5" layer in the comps */
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(90deg, rgba(16,29,50,1) 0%, rgba(16,29,50,.99) 15.6%, rgba(16,29,50,.93) 31.25%,
      rgba(16,29,50,.73) 46.9%, rgba(16,29,50,.46) 62.5%, rgba(16,29,50,.23) 78.1%, rgba(16,29,50,.07) 99%),
    linear-gradient(180deg, rgba(16,29,50,0) 0%, rgba(16,29,50,0) 50%, rgba(16,29,50,.85) 88%, rgba(16,29,50,1) 100%);
}
.hero > .container { position: relative; z-index: 1; }
.hero h1 { margin-bottom: clamp(10px, .9vw, 16px); }
.hero .lead { max-width: 900px; }
.hero-split { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 40px; }
@media (max-width: 767px) {
  .hero-topo video, .hero-topo img { width: 140%; opacity: .35; }
  .hero-split { grid-template-columns: 1fr; }
}

/* ---------- Hero: home (video) ---------- */
.hero-home {
  position: relative; overflow: hidden; background: var(--navy);
  min-height: clamp(600px, 50.3vw, 965px);
  display: flex; align-items: center;
  padding: clamp(150px, 12vw, 230px) 0 clamp(110px, 8vw, 150px);
}
.hero-home__media { position: absolute; inset: 0; z-index: 0; }
.hero-home__media video, .hero-home__media img { width: 100%; height: 100%; object-fit: cover; object-position: center 60%; }
.hero-home__media::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(16,29,50,.55) 0%, rgba(16,29,50,.15) 22%, rgba(16,29,50,0) 45%),
    linear-gradient(90deg, rgba(16,29,50,.45) 0%, rgba(16,29,50,.15) 45%, rgba(16,29,50,0) 70%),
    linear-gradient(0deg, rgba(16,29,50,.9) 0%, rgba(16,29,50,0) 22%);
}
.hero-home > .container { position: relative; z-index: 1; width: 100%; }
.hero-home h1 { max-width: 1000px; margin-bottom: clamp(28px, 3.6vw, 69px); }
.hero-home .btn-row { gap: clamp(12px, 1.4vw, 28px); }
.hero-home__rule {
  position: absolute; left: 0; right: 0; bottom: 24px; z-index: 1; pointer-events: none;
}
.hero-home__rule span { display: block; height: 1px; background: rgba(255,255,255,.46); }
.scroll-cue {
  position: absolute; left: 50%; bottom: clamp(48px, 3.4vw, 65px); z-index: 2; transform: translateX(-50%);
  width: 26px; height: 26px; opacity: .9; animation: cue 2.4s ease-in-out infinite;
}
.scroll-cue img { width: 100%; height: 100%; }
@keyframes cue { 0%, 100% { transform: translate(-50%, 0); } 50% { transform: translate(-50%, 6px); } }
@media (prefers-reduced-motion: reduce) { .scroll-cue { animation: none; } }

/* ---------- Sections ---------- */
.section { position: relative; padding-block: var(--sec-pad); }
.section--tight { padding-block: clamp(48px, 4.4vw, 84px); }
.section--band {
  background: var(--navy-band) url("../img/bg-contour-band.webp") center / cover no-repeat;
}
.section--band-2 {
  background: #1b304f url("../img/bg-contour-band-2.webp") center / cover no-repeat;
}
.section--white { background: var(--white); color: var(--navy); }
.section-head { text-align: center; margin-bottom: clamp(32px, 3.4vw, 64px); }
.section-head .h1, .section-head .h57, .section-head .h2 { margin-bottom: clamp(12px, 1.2vw, 22px); }
.section-head p { max-width: 980px; margin-inline: auto; }
.rule { border: 0; height: 1px; background: var(--rule); margin: 0; }

.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(32px, 4.2vw, 80px); align-items: center; }
@media (max-width: 899px) { .grid-2 { grid-template-columns: 1fr; } }

.bullets { list-style: none; }
.bullets li { position: relative; padding-left: 22px; }
.bullets li + li { margin-top: .5em; }
.bullets li::before {
  content: ""; position: absolute; left: 2px; top: .62em; width: 8px; height: 8px; border-radius: 50%; background: currentColor;
}
.bullets--spaced li + li { margin-top: 1.1em; }
.bullets--tight li + li { margin-top: .1em; }

/* ---------- Home: What We Do ---------- */
.what-we-do { padding-block: clamp(64px, 5vw, 95px) clamp(72px, 7.2vw, 138px); }
.what-we-do .h1 { margin-bottom: clamp(20px, 2.4vw, 46px); }
.what-we-do p { max-width: 968px; margin-inline: auto; }

/* ---------- Home: split panels ---------- */
.split-panels { display: grid; grid-template-columns: 1fr 1fr; }
.split-panel { padding-block: clamp(56px, 4.1vw, 79px) clamp(56px, 4.2vw, 80px); display: flex; flex-direction: column; }
.split-panel:first-child { background: var(--navy-panel); padding-inline: var(--gutter) clamp(24px, 3.6vw, 70px); }
.split-panel:last-child { background: var(--navy-panel-2); padding-inline: clamp(24px, 2.4vw, 46px) var(--gutter); }
.split-panel .h2 { margin-bottom: clamp(20px, 2.9vw, 56px); }
.split-panel p { max-width: 746px; margin-bottom: clamp(28px, 2.9vw, 56px); }
.split-panel .btn { margin-top: auto; align-self: flex-start; }
@media (max-width: 899px) {
  .split-panels { grid-template-columns: 1fr; }
  .split-panel:first-child, .split-panel:last-child { padding-inline: var(--gutter); }
}

/* ---------- Nodules feature (home) ---------- */
.nodules-feature { padding-block: clamp(56px, 3.3vw, 64px); }
.nodules-feature .grid-2 { grid-template-columns: minmax(0, 690fr) minmax(0, 748fr); gap: clamp(32px, 8.6vw, 165px); }
.nodules-feature .h1 { margin-bottom: clamp(18px, 1.6vw, 30px); }
.nodules-feature p { margin-bottom: clamp(24px, 2vw, 38px); }
@media (max-width: 899px) { .nodules-feature .grid-2 { grid-template-columns: 1fr; } }

.photo-card { position: relative; border-radius: 6px; overflow: hidden; background: #0c1628; }
.photo-card img { width: 100%; height: 100%; object-fit: cover; }
.photo-card__label {
  position: absolute; left: clamp(20px, 1.9vw, 36px); bottom: clamp(18px, 1.8vw, 34px);
  font-size: var(--fs-h3); line-height: 1.02;
}
.photo-card--nodules { aspect-ratio: 748 / 531; }
.photo-card--nodules::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(16,29,50,.75) 0%, rgba(16,29,50,0) 45%);
}
.photo-card--nodules .photo-card__label { z-index: 1; }

/* ---------- Field operations (video strip) ---------- */
.field-ops { padding-block: clamp(56px, 4.7vw, 91px) clamp(40px, 3.1vw, 60px); }
.field-ops .h1 { margin-bottom: clamp(28px, 3.1vw, 60px); }
.field-ops--center { padding-block: clamp(56px, 4.7vw, 90px) clamp(56px, 4.4vw, 86px); }
.field-ops--center .h1 { text-align: center; }
.video-thumb {
  position: relative; display: block; width: 100%; aspect-ratio: 252 / 144; overflow: hidden;
  border: 0; padding: 0; background: #0b1322; cursor: pointer;
}
.video-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.video-thumb:hover img { transform: scale(1.04); }
.video-thumb::after {
  content: ""; position: absolute; left: 50%; top: 50%; width: 40px; height: 40px; transform: translate(-50%, -50%);
  border-radius: 50%; background: rgba(255,255,255,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M16 12.5v15l12-7.5z' fill='%23101d32' fill-opacity='.75'/%3E%3C/svg%3E") center / 100% no-repeat;
  transition: background-color .2s;
}
.video-thumb:hover::after { background-color: rgba(255,255,255,.8); }

/* ---------- Carousel ---------- */
.carousel { position: relative; }
.carousel__track {
  display: grid; grid-auto-flow: column; gap: var(--gap, 22px);
  grid-auto-columns: calc((100% - var(--gap, 22px) * (var(--per, 3) - 1)) / var(--per, 3));
  overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  scrollbar-width: none; list-style: none; margin: 0; padding: 0;
}
.carousel__track::-webkit-scrollbar { display: none; }
.carousel__track > * { scroll-snap-align: start; min-width: 0; }
.carousel__nav { display: flex; justify-content: flex-end; gap: 12px; margin-top: clamp(16px, 1.4vw, 26px); }
.carousel__btn {
  width: 32px; height: 32px; border: 0; background: transparent; cursor: pointer; padding: 6px; color: currentColor;
  display: grid; place-items: center; transition: opacity .2s;
}
.carousel__btn svg { width: 10px; height: 18px; }
.carousel__btn[disabled] { opacity: .3; cursor: default; }
.field-ops .carousel { --per: 6; --gap: 22px; }
@media (max-width: 1199px) { .field-ops .carousel { --per: 4; } }
@media (max-width: 767px) { .field-ops .carousel { --per: 2; --gap: 14px; } }

/* ---------- Latest news (home) ---------- */
.news { padding-block: clamp(64px, 6.2vw, 120px) clamp(56px, 4.4vw, 85px); }
.news__grid { display: grid; grid-template-columns: 515fr 574fr 562fr; gap: clamp(24px, 3vw, 58px); align-items: start; }
.news__item time { display: block; color: #2165ae; font-size: var(--fs-body); text-transform: uppercase; margin-bottom: 6px; }
.news__item h3 { font-family: var(--font-body); font-weight: 700; font-size: var(--fs-card); line-height: 1.46; max-width: 420px; }
.news__foot { display: flex; justify-content: flex-end; margin-top: clamp(32px, 6.2vw, 120px); }
@media (max-width: 899px) { .news__grid { grid-template-columns: 1fr; } }

/* ---------- Featured projects ---------- */
.projects { padding-block: 0 clamp(56px, 4.4vw, 84px); }
.projects--no-rule { padding-top: clamp(56px, 4.4vw, 84px); }
.projects .section-head p { line-height: 1.667; }
.projects .section-head p + p { margin-top: 13px; }
.projects .carousel { --per: 3; --gap: clamp(20px, 2.3vw, 44px); }
@media (max-width: 899px) { .projects .carousel { --per: 2; } }
@media (max-width: 599px) { .projects .carousel { --per: 1.15; } }
.project-card {
  position: relative; display: block; aspect-ratio: 534 / 271; border-radius: 4px; overflow: hidden; text-decoration: none; background: #0b1322;
}
.project-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.project-card:hover img { transform: scale(1.04); }
.project-card::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(0,0,0,.72) 0%, rgba(0,0,0,.25) 38%, rgba(0,0,0,0) 60%);
}
.project-card__title {
  position: absolute; z-index: 1; left: clamp(20px, 2.3vw, 44px); right: 20px; bottom: clamp(18px, 1.9vw, 36px);
  font-size: var(--fs-card); line-height: 1.46;
}
.projects__cta { display: flex; justify-content: center; margin-top: clamp(28px, 2.6vw, 50px); }

/* ---------- Footer ---------- */
.site-footer { padding-top: clamp(40px, 4.4vw, 84px); }
.footer-grid {
  display: grid; grid-template-columns: minmax(0, 1.25fr) repeat(3, minmax(0, 1fr)); gap: 32px 20px;
  padding-top: clamp(40px, 4.6vw, 88px);
}
.footer-logo svg { display: block; width: clamp(160px, 12.5vw, 240px); height: auto; overflow: visible; }
.footer-col h2 {
  font-family: var(--font-display-x); font-weight: 900; font-stretch: 125%;
  font-size: clamp(20px, 1.35vw, 26px); line-height: 1.1; margin-bottom: 14px;
}
.footer-col ul { list-style: none; }
.footer-col li + li { margin-top: clamp(10px, 1vw, 18px); }
.footer-col a {
  color: var(--muted); font-weight: 300; font-size: clamp(15px, .885vw, 17px); text-decoration: none; transition: color .2s;
}
.footer-col a:hover { color: var(--white); }
.social { display: grid; gap: clamp(10px, 1vw, 16px); }
.social li + li { margin-top: 0; }
.social a { display: inline-flex; align-items: center; gap: 12px; }
.social svg {
  width: 36px; height: 36px; padding: 8px; flex: none; border: 1px solid rgba(255,255,255,.25); border-radius: 50%;
  color: var(--white); transition: background-color .25s, border-color .25s, transform .3s cubic-bezier(.2,.7,.2,1);
}
.social a:hover svg { background: var(--blue); border-color: var(--blue); transform: translateY(-2px); }
.footer-bottom {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  padding-block: clamp(48px, 5.3vw, 102px) clamp(28px, 1.8vw, 36px);
  color: var(--muted); font-weight: 300; font-size: 15px;
}
.footer-bottom a { text-decoration: none; color: var(--muted); }
.footer-bottom a:hover { color: var(--white); }
.footer-bottom .sep { margin-inline: 8px; }
@media (max-width: 1023px) {
  .footer-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .footer-logo { grid-column: 1 / -1; }
}
@media (max-width: 599px) {
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-col--social { grid-column: 1 / -1; }
  .social { grid-template-columns: 1fr 1fr; }
}

/* ---------- ESS page ---------- */
.ess-hero-img { width: clamp(260px, 35vw, 671px); margin-right: clamp(-30px, -.4vw, 0px); margin-top: clamp(0px, 1.5vw, 30px); }
@media (max-width: 767px) { .ess-hero-img { width: 86%; margin: 10px auto 0; } }
.equipment { padding-block: clamp(40px, 2.5vw, 48px) 0; }
.equipment .h1 { margin-bottom: clamp(24px, 2.6vw, 50px); }
.equipment__intro { max-width: 946px; margin-bottom: clamp(36px, 3.8vw, 72px); }
.tabs { display: flex; gap: clamp(10px, 1vw, 33px); overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; }
.tabs::-webkit-scrollbar { display: none; }
.tab {
  flex: none; min-height: clamp(56px, 4.2vw, 80px); padding: 0 clamp(16px, 1.45vw, 40px);
  border: 1px solid rgba(255,255,255,.6); border-radius: 3px; background: transparent; cursor: pointer;
  font-weight: 700; font-size: var(--fs-card); line-height: 1; white-space: nowrap; transition: background-color .2s, color .2s;
}
.tab:hover { background: rgba(255,255,255,.08); }
.tab[aria-selected="true"] { background: var(--white); color: var(--navy); border-color: var(--white); }
.tabs-nav { display: flex; justify-content: flex-end; gap: 12px; margin-top: 8px; }
.tab-panel { display: grid; grid-template-columns: 535fr 809fr; gap: clamp(28px, 2.3vw, 44px); align-items: center;
  padding: clamp(24px, 2.2vw, 42px) clamp(0px, 3.9vw, 76px) clamp(56px, 5.7vw, 110px); }
.tab-panel[hidden] { display: none; }
.tab-panel__img { border-radius: 6px; overflow: hidden; }
.tab-panel__img img { width: 100%; aspect-ratio: 535 / 321; object-fit: cover; }
.tab-panel h3 { font-family: var(--font-body); font-weight: 700; font-size: var(--fs-card); line-height: 1.25; margin-bottom: 14px; }
.tab-panel p { margin-bottom: clamp(24px, 2.2vw, 42px); }
.tab-panel .btn { min-height: 54px; }
@media (max-width: 899px) { .tab-panel { grid-template-columns: 1fr; padding-inline: 0; } }

/* ---------- DSM page ---------- */
.why-dsm { padding-block: clamp(64px, 5.1vw, 98px) clamp(64px, 6.4vw, 124px); }
.why-dsm .h1 { text-align: center; margin-bottom: clamp(40px, 5.2vw, 100px); }
.why-dsm__grid { display: grid; grid-template-columns: 454px minmax(0, 1fr); gap: clamp(32px, 4.5vw, 87px); align-items: start; padding-left: clamp(0px, .75vw, 14px); }
.why-dsm__grid .h3 { margin-bottom: clamp(24px, 2.4vw, 46px); }
@media (max-width: 1023px) { .why-dsm__grid { grid-template-columns: 1fr; } .gallery { max-width: 454px; } }
.gallery__main {
  position: relative; border: 1px solid rgba(255,255,255,.55); border-radius: 6px; overflow: hidden; background: #0f1b30;
  aspect-ratio: 454 / 470; display: grid; place-items: center;
}
.gallery__main figure { margin: 0; width: 100%; height: 100%; display: flex; flex-direction: column; }
.gallery__main figcaption {
  font-family: "Montserrat", sans-serif; font-weight: 700; font-size: clamp(15px, .94vw, 18px); line-height: 1.2; text-align: center;
  padding: clamp(20px, 2.1vw, 40px) 40px 6px; min-height: 5.2em;
}
.gallery__main img { width: 100%; height: 0; flex: 1 1 0; min-height: 0; object-fit: contain; object-position: center bottom; }
.gallery__thumbs { display: flex; gap: 12px; margin-top: 22px; list-style: none; }
.gallery__thumbs button {
  width: 146px; aspect-ratio: 146 / 158; padding: 0; border: 1px solid rgba(255,255,255,.35); border-radius: 6px; overflow: hidden;
  background: #0f1b30; cursor: pointer; opacity: .7; transition: opacity .2s, border-color .2s;
}
.gallery__thumbs button[aria-pressed="true"], .gallery__thumbs button:hover { opacity: 1; border-color: rgba(255,255,255,.85); }
.gallery__thumbs img { width: 100%; height: 100%; object-fit: cover; }

/* Timeline (Why Now) */
.why-now { padding-block: clamp(64px, 4.7vw, 90px) clamp(64px, 5vw, 96px); }
.why-now .h1 { text-align: center; margin-bottom: clamp(40px, 5vw, 96px); }
.timeline { font-family: "Montserrat", sans-serif; container-type: inline-size; max-width: 1585px; margin-inline: auto; }
/* desktop: positions are taken from the comp artwork (1930 x 810 units) and scale with the container */
.timeline__events { list-style: none; position: relative; height: 41.97cqw; }
.timeline__axis { position: absolute; left: 1.97cqw; width: 94.2cqw; top: 23.9cqw; height: 2px; background: #fff; }
.timeline__axis::before { content: ""; position: absolute; left: -.35cqw; top: 50%; width: .7cqw; height: .7cqw; min-width: 7px; min-height: 7px; border-radius: 50%; background: #fff; transform: translateY(-50%); }
.timeline__axis::after { content: ""; position: absolute; right: -1.2cqw; top: 50%; transform: translateY(-50%); border-left: 1.25cqw solid #fff; border-top: .5cqw solid transparent; border-bottom: .5cqw solid transparent; }
.tl-year { position: absolute; left: var(--x); top: 19.4cqw; font-weight: 700; font-size: 4.25cqw; line-height: 1; }
.tl-date { position: absolute; left: var(--dx, var(--x)); top: 24.8cqw; font-weight: 700; color: var(--sky); font-size: 1.45cqw; text-transform: uppercase; line-height: 1; white-space: nowrap; }
.tl-item--last .tl-year { top: 19cqw; }
.tl-item--last .tl-date { top: 24.6cqw; }
.tl-note { position: absolute; left: var(--nx); top: var(--ty); width: var(--w, 24cqw); font-size: 1.7cqw; line-height: 1.16; }
.tl-note time { display: block; color: var(--sky); font-size: .8em; margin-bottom: .15em; }
.tl-note::before { content: ""; position: absolute; left: calc(var(--lx) - var(--nx)); top: var(--lt); height: var(--lh); width: 2px; background: #fff; }
.tl-note::after { content: ""; position: absolute; left: calc(var(--lx) - var(--nx) - .3cqw + 1px); top: calc(var(--dt) - .3cqw); width: .62cqw; height: .62cqw; min-width: 7px; min-height: 7px; border-radius: 50%; background: #fff; }
@media (max-width: 899px) {
  .timeline__events { height: auto; border-left: 2px solid #fff; margin-left: 6px; padding-left: 26px; }
  .timeline__axis { display: none; }
  .tl-item { display: block; position: relative; padding-bottom: 34px; }
  .tl-item::before { content: ""; position: absolute; left: -33px; top: 10px; width: 12px; height: 12px; border-radius: 50%; background: #fff; }
  .tl-year, .tl-date, .tl-note { position: static; width: auto; }
  .tl-year { display: block; font-size: 40px; margin-bottom: 6px; }
  .tl-date { display: block; font-size: 16px; margin-bottom: 12px; }
  .tl-note { font-size: 18px; line-height: 1.35; }
  .tl-note::before, .tl-note::after { display: none; }
}

/* Environmental considerations */
.environment { padding-block: clamp(64px, 5.6vw, 108px) clamp(64px, 4.2vw, 81px); }
.environment__grid { display: grid; grid-template-columns: minmax(0, 567fr) minmax(0, 563fr); gap: clamp(32px, 11.6vw, 222px); align-items: start; padding-left: clamp(0px, 6.7vw, 129px); padding-right: clamp(0px, 7.2vw, 139px); }
.environment .h2 { margin-bottom: clamp(24px, 2.2vw, 42px); }
.environment p { max-width: 566px; margin-bottom: clamp(18px, 1.5vw, 28px); }
.environment .bullets li + li { margin-top: 6px; }
.environment .bullets li::before { width: 6px; height: 6px; top: .72em; }
.rounded-img { border-radius: 8px; overflow: hidden; }
.rounded-img img { width: 100%; }
.figure-caption {
  position: absolute; left: 0; right: 0; bottom: clamp(14px, 1.3vw, 24px); padding: 0 24px; text-align: center;
  font-style: italic; font-size: 15px; line-height: 1.2;
}
@media (max-width: 1023px) {
  .environment__grid { grid-template-columns: 1fr; padding: 0; }
  .environment__grid .rounded-img { max-width: 563px; }
}

/* Partnership (TMC) */
.partnership {
  background: #0d1a2e url("../img/dsm-tmc-bg.webp") center / cover no-repeat;
  padding-block: clamp(64px, 4.5vw, 87px) clamp(64px, 4.1vw, 78px);
}
.partnership__grid { display: grid; grid-template-columns: minmax(0, 900fr) minmax(0, 660fr); gap: 40px; }
.partnership .h2 { max-width: 640px; margin-bottom: clamp(32px, 3vw, 58px); }
.partnership__block + .partnership__block { margin-top: clamp(28px, 2.6vw, 50px); }
.partnership__kicker { display: block; line-height: 1.4; }
.partnership__title { font-family: var(--font-body); font-weight: 700; font-size: clamp(24px, 1.875vw, 36px); line-height: 1.33; margin-bottom: 8px; }
.partnership .bullets li { padding-left: 18px; }
.partnership .bullets li + li { margin-top: 0; }
.partnership .bullets li::before { width: 4px; height: 4px; top: .78em; }
.quote { display: grid; grid-template-columns: 66px minmax(0, 1fr); gap: 25px; align-content: start; }
.quote img { width: 66px; margin-top: 6px; }
.quote blockquote { margin: 0; font-style: italic; font-size: var(--fs-lead); line-height: 1.54; }
.quote figcaption { font-size: var(--fs-lead); line-height: 1.8; margin-top: 2px; }
.partnership__logo { display: flex; justify-content: flex-end; margin-top: auto; }
.partnership__logo img { width: clamp(200px, 19.9vw, 382px); }
.partnership__right { display: flex; flex-direction: column; gap: 40px; }
@media (max-width: 1023px) { .partnership__grid { grid-template-columns: 1fr; } .partnership__logo { justify-content: flex-start; } }

/* ---------- Exploration Areas ---------- */
.stat-boxes { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 1.7vw, 33px); }
.stat-box { background: var(--navy-panel); border-radius: 4px; padding: clamp(24px, 2.3vw, 44px) clamp(22px, 2.6vw, 50px); display: flex; align-items: center; min-height: clamp(110px, 8.4vw, 162px); }
.stat-box p { font-family: var(--font-display); font-weight: 900; font-stretch: 125%; font-size: var(--fs-h3); line-height: 1.2; text-wrap: balance; }
@media (max-width: 767px) { .stat-boxes { grid-template-columns: 1fr; } }

.priority { padding-block: clamp(32px, 3.2vw, 62px) clamp(56px, 3.7vw, 70px); }
.priority__grid { display: grid; grid-template-columns: 903fr 684fr; gap: clamp(32px, 2.7vw, 52px); align-items: start; }
.priority__map img { border-radius: 4px; width: 100%; }
.priority__notes { display: flex; justify-content: space-between; gap: 24px; margin-top: 14px; font-size: 14px; line-height: 1.3; }
.priority__notes p:first-child { max-width: 460px; }
.priority .h2 { margin-bottom: clamp(18px, 1.6vw, 30px); max-width: 480px; }
.priority__sub { font-weight: 700; font-size: clamp(22px, 1.82vw, 35px); line-height: 1.07; margin-bottom: clamp(20px, 1.9vw, 36px); }
@media (max-width: 1023px) { .priority__grid { grid-template-columns: 1fr; } }
@media (max-width: 599px) { .priority__notes { flex-direction: column; } }

.first-mover { padding-block: clamp(64px, 5vw, 97px) clamp(56px, 4.6vw, 88px); }
.first-mover .h2 { text-align: center; margin-bottom: clamp(40px, 4.8vw, 92px); }
.pillars { display: grid; grid-template-columns: repeat(3, 1fr); list-style: none; }
.pillar { text-align: center; padding: 0 clamp(16px, 3.5vw, 68px); position: relative; }
.pillar + .pillar::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 2px; background: rgba(255,255,255,.23); }
.pillar img { height: 64px; width: auto; margin: 0 auto 22px; }
.pillar h3 { font-family: var(--font-body); font-weight: 700; font-size: var(--fs-card); line-height: 1.25; margin-bottom: 4px; }
.pillar p { line-height: 1.33; }
@media (max-width: 767px) {
  .pillars { grid-template-columns: 1fr; gap: 40px; }
  .pillar + .pillar::before { left: 20%; right: 20%; top: -20px; bottom: auto; width: auto; height: 1px; }
}

.accelerated { padding-block: clamp(64px, 5.1vw, 98px) clamp(64px, 4vw, 77px); }
.accelerated__grid { display: grid; grid-template-columns: minmax(0, 1069fr) minmax(0, 458fr); gap: clamp(32px, 3.9vw, 75px); align-items: start; }
.accelerated .h2 { margin-bottom: clamp(12px, 1vw, 20px); }
.accelerated p { margin-bottom: .6em; }
.accelerated .h2 + p + .h2, .accelerated p + .h2 { margin-top: clamp(24px, 2.2vw, 42px); }
.georgia { position: relative; margin-top: 40px; }
.georgia img, .georgia .ga { width: clamp(220px, 18.1vw, 348px); }
.georgia figcaption {
  position: absolute; left: clamp(200px, 14.8vw, 283px); top: -2px; width: clamp(150px, 9.2vw, 176px);
  font-style: italic; font-size: var(--fs-lead); line-height: 1.5;
}
@media (max-width: 1023px) { .accelerated__grid { grid-template-columns: 1fr; } }
@media (max-width: 599px) { .georgia figcaption { position: static; width: auto; margin-top: 14px; } }

.targets { padding-block: clamp(64px, 3.8vw, 72px) clamp(56px, 3.1vw, 60px); }
.targets .section-head { margin-bottom: clamp(28px, 1.8vw, 34px); }
.targets__foot { max-width: 1286px; margin: 18px auto 0; padding-inline: clamp(0px, 1.5vw, 29px); }
.targets__source { font-size: 12px; line-height: 1.33; margin-bottom: clamp(24px, 1.8vw, 34px); }
.targets__summary { max-width: 1145px; }

.data-table-wrap {
  max-width: 1366px; margin-inline: auto; background: #091c36; border: 1px solid rgba(90,150,230,.25); border-radius: 10px;
  padding: 16px 16px 12px; box-shadow: 0 10px 30px rgba(0,0,0,.25);
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.data-table-wrap h3 {
  font-family: inherit; font-weight: 700; font-size: 15px; letter-spacing: .08em; text-transform: uppercase;
  color: #3d8fe0; margin: 2px 4px 14px;
}
.data-table-scroll { overflow-x: auto; }
.data-table { width: 100%; min-width: 820px; border-collapse: collapse; font-size: clamp(14px, .93vw, 17px); color: #fff; }
.data-table th, .data-table td { padding: 9px 14px; text-align: right; white-space: nowrap; }
.data-table th:first-child, .data-table td:first-child { text-align: left; font-weight: 700; }
.data-table thead th { background: #0666f0; font-weight: 700; }
.data-table thead th:first-child { border-radius: 6px 0 0 6px; }
.data-table thead th:last-child { border-radius: 0 6px 6px 0; background: #0a57c4; }
.data-table tbody tr:nth-child(odd) td { background: #0b1f3c; }
.data-table tbody tr:nth-child(even) td { background: #0f2749; }
.data-table tbody td:last-child { background-color: #143560 !important; }
.data-table tfoot td { background: #0d4079; font-weight: 700; border-top: 2px solid #2f8bf0; }
.data-table tfoot td:first-child { border-radius: 0 0 0 6px; }
.data-table tfoot td:last-child { border-radius: 0 0 6px 0; }
.data-table .hl-mark { position: relative; display: inline-block; }
.hl-ring { position: absolute; left: -26px; top: -12px; width: calc(100% + 52px); height: calc(100% + 24px); max-width: none; overflow: visible; pointer-events: none; }
.hl-ring path { fill: none; stroke: #e0262f; stroke-width: 2.2; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.motion .hl-ring path { stroke-dasharray: 1 1; stroke-dashoffset: 1; }
.motion .data-table-wrap.is-in .hl-ring path { animation: hlDraw 1.1s cubic-bezier(.55,0,.35,1) .9s forwards, hlGlow 2.6s ease-in-out 2.2s infinite; }
@keyframes hlDraw { to { stroke-dashoffset: 0; } }
@keyframes hlGlow { 0%, 100% { filter: drop-shadow(0 0 0 rgba(224,38,47,0)); } 50% { filter: drop-shadow(0 0 5px rgba(224,38,47,.85)); } }

.offshore { padding-block: clamp(64px, 6.2vw, 120px) clamp(56px, 4.5vw, 86px); }
.offshore__grid { display: grid; grid-template-columns: 615fr 993fr; gap: clamp(32px, 2.4vw, 46px); align-items: start; }
.offshore .h57 { margin-bottom: clamp(20px, 1.8vw, 34px); }
.map-frame { border: 3px solid #fff; border-radius: 6px; overflow: hidden; background: #fff; }
.map-frame img { width: 100%; }
.map-caption { margin-top: 14px; font-size: 18px; line-height: 1.4; }
.map-caption strong { font-weight: 700; }
.map-thumbs { display: flex; gap: 31px; margin-top: 40px; list-style: none; }
.map-thumbs li { flex: 0 1 221px; min-width: 0; }
.map-thumbs figure { margin: 0; width: 100%; }
.map-thumbs .map-frame { border-width: 2px; aspect-ratio: 221 / 167; }
.map-thumbs .map-frame img { width: 100%; height: 100%; object-fit: cover; }
.map-thumbs figcaption { font-size: 10px; line-height: 1.8; margin-top: 8px; }
.map-thumbs figcaption strong { display: block; font-size: 14px; line-height: 1.2; }
.offshore h3 { font-family: var(--font-body); font-weight: 700; font-size: var(--fs-card); line-height: 1.25; margin: clamp(28px, 2.6vw, 50px) 0 clamp(18px, 1.6vw, 30px); }
.offshore .bullets li { line-height: 1.33; }
.offshore .bullets li + li { margin-top: 1.1em; }
.offshore .bullets li::before { top: .4em; width: 10px; height: 10px; left: 0; }
.offshore .def { font-weight: 700; font-size: var(--fs-card); margin-top: clamp(28px, 2.3vw, 44px); }
@media (max-width: 1023px) { .offshore__grid { grid-template-columns: 1fr; } }
@media (max-width: 599px) { .map-thumbs { gap: 16px; } .map-thumbs li { flex: 1 1 0; } }

.jurisdictions { padding-block: 0 clamp(40px, 3.2vw, 60px); }
.jurisdictions .section-head { margin-bottom: clamp(20px, 2vw, 40px); position: relative; z-index: 1; }

/* live Pacific map: dot-matrix land, CCZ zone, routes from HQ, numbered pins */
.jstage { position: relative; }
.jmap { position: relative; aspect-ratio: 1600 / 819; }
.jmap__dots, .jmap__fx { position: absolute; inset: 0; width: 100%; height: 100%; }
.jmap__dots {
  opacity: .9;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%), linear-gradient(180deg, transparent 0, #000 8%, #000 90%, transparent 100%);
  -webkit-mask-composite: source-in; mask-composite: intersect;
  mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%), linear-gradient(180deg, transparent 0, #000 8%, #000 90%, transparent 100%);
}
.jmap__fx { overflow: visible; }
.jmap__equator { stroke: rgba(140,195,255,.22); stroke-width: 1.2; stroke-dasharray: 6 8; }
.jmap__eqlabel { fill: rgba(140,195,255,.45); font: 600 12px "Montserrat", sans-serif; letter-spacing: .3em; }
.jmap__ccz rect { fill: rgba(47,154,230,.1); stroke: rgba(140,195,255,.55); stroke-width: 1.5; stroke-dasharray: 5 6; }
.jmap__ccz text { fill: rgba(140,195,255,.75); font: 700 14px "Montserrat", sans-serif; letter-spacing: .3em; }
.jmap__route { fill: none; stroke: rgba(140,195,255,.55); stroke-width: 1.6; stroke-dasharray: .012 .008; }
.jmap__traveller { fill: #fff; opacity: 0; filter: drop-shadow(0 0 6px #8cc3ff); }
.jmap__hqdot { fill: #fff; stroke: var(--sky); stroke-width: 4; }
.jmap__label { fill: #e8f1fb; font: 600 17px "Montserrat", sans-serif; letter-spacing: .02em; paint-order: stroke; stroke: rgba(16,29,50,.85); stroke-width: 5px; stroke-linejoin: round; }
.jmap__label--hq { font-size: 15px; fill: #bfe0ff; }
.jmap__label--sub { font-size: 13px; fill: #bcd6f5; font-weight: 500; }
.jmap__badge circle { fill: #2f9ae6; stroke: #fff; stroke-width: 3; }
.jmap__badge text { fill: #fff; font: 700 21px "Montserrat", sans-serif; }
.jmap__pin, .jmap__sub { transition: opacity .3s; }
.jmap__ping { fill: none; stroke: #8cc3ff; stroke-width: 2; opacity: 0; transform-box: fill-box; transform-origin: center; }
.jmap__sub circle { fill: rgba(47,154,230,.35); stroke: #8cc3ff; stroke-width: 2; }
.jmap__badge { transform-box: fill-box; transform-origin: center; transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.jmap.is-focus .jmap__pin:not(.is-active) { opacity: .35; }
.jmap__pin.is-active .jmap__badge { transform: scale(1.3); }

.motion .jmap__dots { opacity: 0; transform: scale(1.03); transition: opacity 1.4s ease, transform 2s cubic-bezier(.2,.7,.2,1); }
.motion .jmap.is-in .jmap__dots { opacity: .9; transform: none; }
.motion .jmap__ccz, .motion .jmap__hq, .motion .jmap__sub { opacity: 0; transition: opacity 1s ease .5s; }
.motion .jmap.is-in .jmap__ccz, .motion .jmap.is-in .jmap__hq, .motion .jmap.is-in .jmap__sub { opacity: 1; }
.motion .jmap__route { stroke-dasharray: 1 1; stroke-dashoffset: 1; }
.motion .jmap.is-in .jmap__route { animation: jRoute 1.3s cubic-bezier(.45,0,.3,1) calc(.9s + var(--i) * .35s) forwards; }
@keyframes jRoute { 80% { stroke-dasharray: 1 1; } 100% { stroke-dashoffset: 0; stroke-dasharray: .012 .008; } }
.motion .jmap__pin .jmap__badge { transform: scale(0); }
.motion .jmap.is-in .jmap__pin .jmap__badge { animation: jPop .6s cubic-bezier(.3,1.6,.5,1) calc(.7s + var(--i) * .22s) forwards; }
.motion .jmap.is-in .jmap__pin.is-active .jmap__badge { transform: scale(1.3); }
@keyframes jPop { from { transform: scale(0); } to { transform: scale(1); } }
.motion .jmap__pin .jmap__label { opacity: 0; transition: opacity .6s ease; }
.motion .jmap.is-in .jmap__pin .jmap__label { opacity: 1; transition-delay: calc(2.2s + var(--i) * .35s); }
.motion .jmap.is-in .jmap__ping { animation: jPing 2.8s ease-out calc(1.3s + var(--i) * .22s) infinite; }
.motion .jmap.is-in .jmap__ping--2 { animation-delay: calc(2.7s + var(--i) * .22s); }
@keyframes jPing { 0% { transform: scale(1); opacity: .8; } 100% { transform: scale(3.2); opacity: 0; } }
.motion .jmap.is-in .jmap__traveller { opacity: 1; transition: opacity .5s ease calc(2.4s + var(--i) * .35s); }
.motion .jmap.is-in .jmap__hqglow { animation: hqGlow 3s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes hqGlow { 0%, 100% { transform: scale(.8); opacity: .6; } 50% { transform: scale(1.15); opacity: 1; } }

.jpaths {
  position: relative; z-index: 1; width: min(600px, 100%); margin: clamp(-72px, -4vw, -24px) auto 0;
  display: grid; grid-template-columns: 1fr 1fr; gap: 4px 18px;
  border: 1.5px solid rgba(47,154,230,.9); border-radius: 12px; padding: 14px 20px 16px; text-align: left;
  font-family: "Montserrat", sans-serif; background: rgba(12,24,41,.78);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  box-shadow: 0 0 0 1px rgba(47,154,230,.15), 0 0 30px rgba(47,154,230,.25);
}
.jpaths h3 { grid-column: 1 / -1; font-family: inherit; font-size: 15px; margin-bottom: 6px; padding-bottom: 8px; border-bottom: 1px solid rgba(140,195,255,.3); }
.jpaths p { margin: 0; }
.jpaths p + p { border-left: 1px solid rgba(140,195,255,.3); padding-left: 18px; }
.jpaths p strong { display: block; font-weight: 700; font-size: 16px; }
.jpaths p span { display: block; color: #8cc3ff; font-size: 13px; }
.jcards { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 1.3vw, 24px); margin-top: clamp(24px, 2.2vw, 40px); font-family: "Montserrat", sans-serif; }
.jcard {
  border: 1.5px solid rgba(255,255,255,.6); border-radius: 10px; padding: 18px 20px; cursor: default; background: rgba(12,24,41,.4);
  transition: border-color .25s, background-color .25s, transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .25s;
}
.jcard:hover, .jcard:focus-visible, .jcard.is-active { border-color: var(--sky); background: rgba(30,51,82,.6); transform: translateY(-4px); box-shadow: 0 14px 30px rgba(0,0,0,.3); outline: none; }
.jcard h3 { display: flex; align-items: center; gap: 10px; font-family: inherit; font-weight: 700; font-size: 19px; margin-bottom: 10px; }
.jcard h3 span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--sky); font-size: 15px; flex: none; }
.jcard .bullets li { font-size: 15px; line-height: 1.35; padding-left: 16px; }
.jcard .bullets li::before { width: 5px; height: 5px; top: .55em; }
.jcard .bullets li:first-child { color: #8cc8ff; font-weight: 700; text-transform: uppercase; }
.jnote { font-style: italic; font-size: 12px; margin-top: 14px; }
@media (max-width: 1023px) { .jcards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
  .jpaths { width: auto; margin-top: 16px; grid-template-columns: 1fr; }
  .jpaths p + p { border-left: 0; padding-left: 0; border-top: 1px solid rgba(140,195,255,.3); padding-top: 8px; margin-top: 4px; }
  .jmap__label, .jmap__eqlabel, .jmap__ccz text { display: none; }
  .jmap__badge { scale: 1.6; }
}
@media (max-width: 599px) { .jcards { grid-template-columns: 1fr; } }

/* ---------- Nodules page ---------- */
.rich { padding-block: clamp(40px, 5.1vw, 98px) clamp(64px, 5vw, 96px); }
.rich__grid { display: grid; grid-template-columns: minmax(0, 700fr) minmax(0, 741fr); gap: clamp(32px, 3vw, 57px); align-items: center; }
.rich__img { padding-left: clamp(0px, 5.5vw, 106px); }
.rich__img img { width: 100%; max-width: 593px; }
.rich .h1, .rich .h3 { margin-bottom: clamp(18px, 2vw, 38px); }
@media (max-width: 899px) { .rich__grid { grid-template-columns: 1fr; } .rich__img { padding: 0; } }

.no-disturb { padding-block: clamp(56px, 3.5vw, 67px) clamp(56px, 3.1vw, 59px); }
.no-disturb__grid { display: grid; grid-template-columns: minmax(0, 711fr) minmax(0, 562fr); gap: 40px; align-items: center; padding-left: clamp(0px, 4.7vw, 90px); padding-right: clamp(0px, 6.5vw, 124px); }
.no-disturb .h1, .no-disturb .h3 { margin-bottom: clamp(18px, 1.9vw, 36px); max-width: 720px; }
.no-disturb p { max-width: 711px; }
.no-disturb figure { margin: 0; position: relative; }
@media (max-width: 1023px) { .no-disturb__grid { grid-template-columns: 1fr; padding: 0; } .no-disturb figure { max-width: 562px; } }

.strategic { padding-block: clamp(56px, 5.3vw, 102px) clamp(64px, 7.5vw, 144px); }
.strategic__grid { display: grid; grid-template-columns: minmax(0, 685fr) minmax(0, 748fr); gap: clamp(32px, 3.3vw, 64px); align-items: center; padding-left: 7px; }
.strategic .h1, .strategic .h3 { margin-bottom: clamp(18px, 2.1vw, 40px); }
.photo-card--strategic { aspect-ratio: 685 / 385; }
.photo-card--strategic .photo-card__label { font-size: var(--fs-h3); }
@media (max-width: 899px) { .strategic__grid { grid-template-columns: 1fr; } }

/* ---------- Video lightbox ---------- */
.lightbox {
  position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; padding: 24px;
  background: rgba(5, 10, 20, .92); opacity: 0; visibility: hidden; transition: opacity .25s, visibility .25s;
}
.lightbox.is-open { opacity: 1; visibility: visible; }
.lightbox__inner { width: min(1200px, 100%); }
.lightbox video { width: 100%; max-height: 80vh; background: #000; border-radius: 4px; }
.lightbox__close {
  position: absolute; top: 18px; right: 18px; width: 48px; height: 48px; border: 0; background: transparent; cursor: pointer;
}
.lightbox__close::before, .lightbox__close::after {
  content: ""; position: absolute; left: 11px; top: 23px; width: 26px; height: 2px; background: #fff;
}
.lightbox__close::before { transform: rotate(45deg); }
.lightbox__close::after { transform: rotate(-45deg); }
.lightbox__title { margin-top: 14px; color: #c9d2de; font-size: 15px; }

.targets .section-head p { max-width: none; }

/* ==========================================================================
   News — listing (matches ecominerals.com/new/news/) and article pages
   ========================================================================== */
.hero--short { padding-bottom: clamp(48px, 5.2vw, 100px); }
.news-list { padding-block: clamp(20px, 2vw, 40px) clamp(72px, 6.2vw, 120px); }

.news-grid {
  list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: clamp(20px, 1.6vw, 30px); row-gap: clamp(40px, 3.6vw, 68px);
}
@media (max-width: 1023px) { .news-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px) { .news-grid { grid-template-columns: 1fr; } }

.news-card__link { position: relative; display: flex; flex-direction: column; text-decoration: none; color: inherit; }
.news-card__media {
  display: block; aspect-ratio: 525 / 250; border-radius: 6px; overflow: hidden; background: #0b1322;
}
.news-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.news-card__link:hover .news-card__media img { transform: scale(1.04); }
.news-tag, .news-card__tag {
  display: inline-block; align-self: flex-start;
  background: var(--blue); color: var(--white); border-left: 5px solid var(--white);
  font-family: var(--font-body); font-weight: 300; font-size: 14px; line-height: 1; letter-spacing: .02em;
  text-transform: uppercase; padding: 8px 12px 7px 10px;
}
.news-card__tag { margin: -20px 0 0 20px; position: relative; z-index: 1; }
.news-card__date {
  display: block; margin: 20px 20px 8px; color: #6f9fd6;
  font-size: 14px; line-height: 1.2; text-transform: uppercase; letter-spacing: .04em;
}
.news-card__title {
  margin: 0 20px; font-family: var(--font-display-x); font-weight: 900; font-stretch: 125%;
  font-size: clamp(17px, 1.146vw, 22px); line-height: 1.32;
  transition: color .2s;
}
.news-card__link:hover .news-card__title { color: #bcd6f5; }
.news-card__link:focus-visible { outline-offset: 6px; }

/* home: latest news titles are links */
.news__item h3 a { text-decoration: none; }
.news__item h3 a:hover { text-decoration: underline; text-underline-offset: 4px; }

/* ---------- Article ---------- */
.hero--article { padding-bottom: clamp(40px, 3.6vw, 70px); }
.article-back {
  display: inline-flex; align-items: center; gap: 10px; margin-bottom: clamp(22px, 2vw, 38px);
  font-size: 15px; text-decoration: none; text-transform: uppercase; letter-spacing: .04em; opacity: .9;
}
.article-back svg { width: 8px; height: 14px; }
.article-back:hover span { text-decoration: underline; text-underline-offset: 4px; }
.article-hero__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-bottom: clamp(18px, 1.6vw, 30px); }
.article-hero__meta time { font-size: 15px; text-transform: uppercase; letter-spacing: .04em; color: #c9d4e3; }
.article-hero__title {
  font-family: var(--font-display); font-weight: 900; font-stretch: 125%;
  font-size: clamp(30px, 2.71vw, 52px); line-height: 1.16; max-width: 1240px; text-wrap: balance;
}
.article-hero__sub {
  max-width: 1000px; margin: clamp(14px, 1.2vw, 22px) 0 0; font-size: var(--fs-lead); line-height: 1.5; color: #c9d4e3;
}
.article-hero__sub + .article-hero__sub { margin-top: 8px; }

.article { padding-block: clamp(24px, 2.6vw, 50px) clamp(64px, 5.2vw, 100px); }
.article-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(40px, 6.2vw, 120px); align-items: start; }
.article-main { min-width: 0; }
.article-figure { margin: 0 0 clamp(32px, 2.9vw, 56px); border-radius: 6px; overflow: hidden; background: #0b1322; }
.article-figure img { width: 100%; aspect-ratio: 2 / 1; object-fit: cover; }
.article-figure--photo { max-width: 860px; }
.article-figure--photo img { aspect-ratio: auto; }
.article-figure figcaption { padding: 12px 16px; font-size: 14px; font-style: italic; color: #c9d4e3; background: #0e192b; }

.prose { max-width: 860px; font-size: var(--fs-body); line-height: 1.72; }
.prose p { margin: 0 0 1.15em; }
.prose a { color: #8cc3ff; text-underline-offset: 3px; word-break: break-word; }
.prose a:hover { color: var(--white); }
.prose strong { font-weight: 700; }
.prose h2 {
  font-family: var(--font-body); font-weight: 700; font-size: clamp(20px, 1.25vw, 24px); line-height: 1.3;
  margin: 1.9em 0 .7em;
}
.prose h3 { font-family: var(--font-body); font-weight: 700; font-size: 17px; line-height: 1.3; margin: 1.8em 0 .4em; }
.prose h3 + p { margin-top: 0; }
.prose ul { list-style: none; margin: 0 0 1.2em; padding: 0; }
.prose li { position: relative; padding-left: 22px; }
.prose li + li { margin-top: .5em; }
.prose li::before { content: ""; position: absolute; left: 2px; top: .7em; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.prose .is-legal { font-size: 15px; line-height: 1.65; color: #aeb9c9; }
.prose h2.is-legal { font-size: 18px; color: var(--white); }

.article-aside { position: sticky; top: 32px; display: grid; gap: 28px; }
.article-facts { margin: 0; border-top: 1px solid var(--rule); }
.article-facts > div { padding: 16px 0; border-bottom: 1px solid var(--rule); display: grid; gap: 4px; }
.article-facts dt { font-size: 13px; text-transform: uppercase; letter-spacing: .08em; color: #8e9bb0; }
.article-facts dd { margin: 0; font-size: 17px; }
.article-facts dd a { color: inherit; text-underline-offset: 3px; }
.article-share { list-style: none; display: flex; gap: 10px; margin-top: 6px; }
.article-share a {
  display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid rgba(255,255,255,.45); border-radius: 50%;
  transition: background-color .2s, border-color .2s;
}
.article-share a:hover { background: var(--blue); border-color: var(--blue); }
.article-share svg { width: 17px; height: 17px; }
.article-aside .btn { justify-self: start; }
@media (max-width: 1023px) {
  .article-layout { grid-template-columns: 1fr; }
  .article-aside { position: static; }
}

.news-more { padding-block: 0 clamp(64px, 5.2vw, 100px); }
.news-more__head {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px;
  margin: clamp(48px, 4.4vw, 84px) 0 clamp(28px, 2.6vw, 50px);
}

/* ==========================================================================
   Animated logo (header)
   ========================================================================== */
.logo svg { display: block; width: clamp(150px, 16.1vw, 309px); height: auto; overflow: visible; transition: width .35s ease; }
.logo-dots circle { transform-box: fill-box; transform-origin: center; }
.logo-svg.is-pulsing .logo-dots circle { animation: dotPass .8s cubic-bezier(.3,.7,.3,1) var(--d, 0ms) both; }
@keyframes dotPass {
  0% { transform: scale(1); filter: brightness(1); }
  35% { transform: scale(1.42); filter: brightness(1.5); }
  100% { transform: scale(1); filter: brightness(1); }
}

/* ==========================================================================
   Header: slides back in, compact, when scrolling up the page
   ========================================================================== */
.site-header.is-fixed {
  position: fixed; padding-block: 12px; background: rgba(16, 29, 50, .88);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  box-shadow: 0 1px 0 rgba(255,255,255,.08), 0 12px 30px rgba(0,0,0,.25);
  animation: headerIn .45s cubic-bezier(.2,.7,.2,1);
  transition: transform .4s cubic-bezier(.2,.7,.2,1);
}
.site-header.is-fixed .logo svg { width: clamp(130px, 10vw, 190px); }
.site-header.is-fixed .btn-contact { min-height: 44px; }
.site-header.is-fixed.is-hidden { transform: translateY(-110%); }
@keyframes headerIn { from { transform: translateY(-100%); } to { transform: none; } }
.nav-open .site-header.is-fixed { transform: none; background: transparent; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }

/* ==========================================================================
   Motion (only when JS adds .motion — never for reduced-motion visitors)
   ========================================================================== */
.motion .rv {
  opacity: 0; transform: translate3d(0, 34px, 0);
  transition: opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1);
  transition-delay: calc(var(--i, 0) * 90ms);
}
.motion .rv.is-in { opacity: 1; transform: none; }
.motion .rv-media { opacity: 0; clip-path: inset(9% 9% 9% 9% round 8px); transform: scale(.98);
  transition: clip-path 1.2s cubic-bezier(.2,.7,.2,1), opacity .6s ease, transform 1.2s cubic-bezier(.2,.7,.2,1);
  transition-delay: calc(var(--i, 0) * 110ms); }
.motion .rv-media img { transform: scale(1.14); transition: transform 1.6s cubic-bezier(.2,.7,.2,1); transition-delay: calc(var(--i, 0) * 110ms); }
.motion .rv-media.is-in { opacity: 1; clip-path: inset(0 0 0 0 round 0); transform: none; }
.motion .rv-media.is-in img { transform: none; }
.motion .project-card.rv-media.is-in img, .motion .news-card .rv-media.is-in img { transition-delay: 0s; }

/* headings rise word by word */
.split .w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .12em; margin-bottom: -.12em; }
.split .w > span { display: inline-block; }
.motion .split .w > span { transform: translate3d(0, 110%, 0); transition: transform 1s cubic-bezier(.2,.8,.2,1); transition-delay: calc(var(--wi, 0) * 55ms + var(--sd, 0ms)); }
.motion .split.is-in .w > span { transform: none; }

/* home hero video settles in */
.motion .hero-home__media video, .motion .hero-home__media img { animation: settle 2.8s cubic-bezier(.2,.7,.2,1) both; }
@keyframes settle { from { transform: scale(1.14); opacity: .2; } to { transform: none; opacity: 1; } }
.hero-home__media, .hero-topo { will-change: transform; }
.motion .hero-topo video { animation: topoIn 2.4s ease both; }
@keyframes topoIn { from { opacity: 0; } }

/* timeline draws itself */
.motion .timeline .timeline__axis { transform: scaleX(0); transform-origin: left center; transition: transform 1.4s cubic-bezier(.6,0,.2,1); }
.motion .timeline .tl-year, .motion .timeline .tl-date { opacity: 0; transform: translateY(18px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
.motion .timeline .tl-note { opacity: 0; transition: opacity .8s ease; }
.motion .timeline .tl-note::before { transform: scaleY(0); transform-origin: bottom; transition: transform .7s cubic-bezier(.2,.7,.2,1); }
.motion .timeline.is-in .timeline__axis { transform: none; }
.motion .timeline.is-in .tl-year, .motion .timeline.is-in .tl-date { opacity: 1; transform: none; }
.motion .timeline.is-in .tl-note { opacity: 1; }
.motion .timeline.is-in .tl-note::before { transform: none; }
.motion .timeline .tl-item:nth-child(2) > * { transition-delay: .35s; }
.motion .timeline .tl-item:nth-child(3) > *, .motion .timeline .tl-item:nth-child(3) .tl-note::before { transition-delay: .6s; }
.motion .timeline .tl-item:nth-child(4) > *, .motion .timeline .tl-item:nth-child(4) .tl-note::before { transition-delay: .85s; }
.motion .timeline .tl-item:nth-child(5) > *, .motion .timeline .tl-item:nth-child(5) .tl-note::before { transition-delay: 1.1s; }
.motion .timeline .tl-item:nth-child(6) > * { transition-delay: 1.35s; }

/* interaction polish */
.btn .i-arrow { transition: transform .3s cubic-bezier(.2,.7,.2,1); }
.btn:hover .i-arrow { transform: translateX(4px); }
.stat-box, .pillar img, .contact-card { transition: transform .4s cubic-bezier(.2,.7,.2,1), background-color .3s; }
.stat-box:hover { transform: translateY(-4px); background: #243c60; }
.pillar:hover img { transform: translateY(-6px) scale(1.06); }

@media (prefers-reduced-motion: reduce) {
  .site-header.is-fixed { animation: none; }
  .logo svg, .btn .i-arrow { transition: none; }
}

/* ==========================================================================
   Contact
   ========================================================================== */
.contact { padding-block: clamp(32px, 3.2vw, 60px) clamp(72px, 6.2vw, 120px); }
.contact__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(40px, 6.2vw, 120px); align-items: start; }
.contact .h2 { margin-bottom: clamp(24px, 2.4vw, 46px); }
@media (max-width: 1023px) { .contact__grid { grid-template-columns: 1fr; } }

.contact-form { display: grid; gap: 8px; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2vw, 40px); }
@media (max-width: 599px) { .field-row { grid-template-columns: 1fr; gap: 8px; } }
.field { position: relative; padding-top: 12px; }
.field input, .field textarea {
  display: block; width: 100%; padding: 22px 0 12px; border: 0; border-bottom: 1px solid rgba(255,255,255,.35);
  border-radius: 0; background: transparent; color: var(--white); font: inherit; font-size: clamp(17px, 1vw, 19px); line-height: 1.4;
  outline: none; transition: border-color .25s, background-size .45s cubic-bezier(.2,.7,.2,1);
  background: linear-gradient(var(--sky), var(--sky)) left bottom / 0% 2px no-repeat;
}
.field input:focus, .field textarea:focus { background-size: 100% 2px; }
.field textarea { resize: vertical; min-height: 150px; }
.field label {
  position: absolute; left: 0; top: 34px; color: #b9c4d4; font-size: clamp(17px, 1vw, 19px); pointer-events: none;
  transform-origin: left top; transition: transform .3s cubic-bezier(.2,.7,.2,1), color .3s;
}
.field label span { color: var(--sky); }
.field input:focus + label, .field input:not(:placeholder-shown) + label,
.field textarea:focus + label, .field textarea:not(:placeholder-shown) + label { transform: translateY(-26px) scale(.74); color: var(--sky); }
.field__error { min-height: 1.6em; margin: 6px 0 0; font-size: 14px; color: #ff9d9d; }
.field.is-invalid input, .field.is-invalid textarea { border-bottom-color: #ff9d9d; }
.field input:-webkit-autofill { -webkit-text-fill-color: var(--white); transition: background-color 9999s; }

.topic-chips { border: 0; margin: 10px 0 18px; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.topic-chips legend { width: 100%; margin-bottom: 12px; padding: 0; font-size: 13px; text-transform: uppercase; letter-spacing: .08em; color: #b9c4d4; }
.chip { position: relative; cursor: pointer; }
.chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.chip span {
  display: inline-block; padding: 11px 18px; border: 1px solid rgba(255,255,255,.45); border-radius: 3px;
  font-size: 15px; line-height: 1; transition: background-color .2s, color .2s, border-color .2s;
}
.chip:hover span { border-color: var(--white); }
.chip input:checked + span { background: var(--white); color: var(--navy); border-color: var(--white); font-weight: 600; }
.chip input:focus-visible + span { outline: 2px solid var(--sky); outline-offset: 3px; }

.hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.contact-form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; margin-top: 8px; }
.contact-form__note { margin: 0; font-size: 14px; color: #8e9bb0; }
.contact-form__note span { color: var(--sky); }
.contact-form__submit { min-width: 200px; justify-content: center; }
.contact-form__submit[disabled] { opacity: .7; cursor: progress; }
.contact-form__submit.is-sending .i-arrow { animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.contact-form__status { margin: 16px 0 0; min-height: 1.5em; font-size: 16px; }
.contact-form__status.is-ok { color: #8ee0b5; }
.contact-form__status.is-err { color: #ff9d9d; }
.contact-form.is-sent .field, .contact-form.is-sent .field-row, .contact-form.is-sent .topic-chips, .contact-form.is-sent .contact-form__foot { display: none; }
.contact-form.is-sent .contact-form__status { font-size: var(--fs-lead); line-height: 1.5; }

/* sonar location card */
.sonar { margin: 0; border: 1px solid rgba(255,255,255,.12); border-radius: 8px; overflow: hidden; background: #0c1829; }
.sonar__screen {
  position: relative; aspect-ratio: 16 / 10; overflow: hidden;
  background: radial-gradient(circle at 50% 50%, rgba(36,99,175,.28), rgba(12,24,41,.9) 70%), url("../img/bg-contour-band.webp") center / cover;
}
.sonar__ring, .sonar__ping, .sonar__dot, .sonar__sweep { position: absolute; left: 50%; top: 50%; border-radius: 50%; transform: translate(-50%, -50%); }
.sonar__ring { border: 1px solid rgba(140,195,255,.16); }
.sonar__ring:nth-of-type(2) { height: 30%; aspect-ratio: 1; }
.sonar__ring:nth-of-type(3) { height: 60%; aspect-ratio: 1; }
.sonar__ring:nth-of-type(4) { height: 90%; aspect-ratio: 1; }
.sonar__grid { position: absolute; inset: 0;
  background: linear-gradient(rgba(140,195,255,.14), rgba(140,195,255,.14)) center / 1px 100% no-repeat,
              linear-gradient(rgba(140,195,255,.14), rgba(140,195,255,.14)) center / 100% 1px no-repeat; }
.sonar__sweep { height: 90%; aspect-ratio: 1; background: conic-gradient(from 0deg, transparent 0deg 285deg, rgba(47,154,230,0) 285deg, rgba(47,154,230,.45) 360deg);
  animation: sweep 4.5s linear infinite; }
@keyframes sweep { to { transform: translate(-50%, -50%) rotate(360deg); } }
.sonar__dot { width: 14px; height: 14px; background: var(--sky); box-shadow: 0 0 0 4px rgba(47,154,230,.25), 0 0 24px 6px rgba(47,154,230,.55); }
.sonar__ping { height: 90%; aspect-ratio: 1; border: 1.5px solid rgba(140,195,255,.75); transform: translate(-50%, -50%) scale(0); animation: ping 3s cubic-bezier(.2,.6,.3,1) infinite; }
.sonar__ping + .sonar__ping { animation-delay: 1.5s; }
@keyframes ping { from { transform: translate(-50%, -50%) scale(.04); opacity: 1; } to { transform: translate(-50%, -50%) scale(1); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .sonar__sweep, .sonar__ping { animation: none; } .sonar__ping { display: none; } }
.sonar figcaption { display: grid; gap: 6px; padding: clamp(20px, 1.6vw, 30px); }
.sonar__label { font-size: 13px; text-transform: uppercase; letter-spacing: .08em; color: #6f9fd6; }
.sonar figcaption strong { font-family: var(--font-display); font-weight: 900; font-stretch: 125%; font-size: clamp(20px, 1.35vw, 26px); line-height: 1.2; }
.sonar__coords { font-family: "Montserrat", sans-serif; font-size: 14px; letter-spacing: .06em; font-variant-numeric: tabular-nums; color: #b9c4d4; }
.sonar__link { display: inline-flex; align-items: center; gap: 10px; margin-top: 8px; font-size: 15px; text-transform: uppercase; letter-spacing: .04em; text-decoration: none; }
.sonar__link .i-arrow { width: 18px; height: 18px; transition: transform .3s; }
.sonar__link:hover .i-arrow { transform: translateX(4px); }

.contact-cards { display: grid; gap: 0; margin-top: clamp(24px, 2vw, 36px); border-top: 1px solid var(--rule); }
.contact-card { padding: 22px 0; border-bottom: 1px solid var(--rule); }
.contact-card h3 { font-family: var(--font-body); font-weight: 700; font-size: 19px; margin-bottom: 8px; }
.contact-card p { margin: 0 0 6px; color: #d3dbe6; line-height: 1.55; }
.contact-card a { color: #8cc3ff; text-underline-offset: 3px; }
.contact-card a:hover { color: var(--white); }

/* ==========================================================================
   Projects — listing (same card layout as News) and individual project pages
   ========================================================================== */
.news-grid--projects .news-card__media { aspect-ratio: 16 / 10; }
.project-tile__summary { display: block; margin: 12px 20px 0; color: #c9d4e3; font-size: 16px; line-height: 1.55; }
.project-tile__more {
  display: inline-flex; align-items: center; gap: 10px; margin: 18px 20px 0;
  font-size: 14px; line-height: 1; letter-spacing: .06em; text-transform: uppercase; color: #8cc3ff;
}
.project-tile__more .i-arrow { width: 18px; height: 18px; transition: transform .3s cubic-bezier(.2,.7,.2,1); }
.news-card__link:hover .project-tile__more .i-arrow { transform: translateX(4px); }

/* project hero */
.project-hero__where { font-size: 15px; text-transform: uppercase; letter-spacing: .04em; color: #c9d4e3; }
.project-hero__title {
  font-family: var(--font-display); font-weight: 900; font-stretch: 125%;
  font-size: var(--fs-h1); line-height: 1.1; max-width: 1200px; text-wrap: balance; margin-bottom: clamp(12px, 1vw, 18px);
}
.hero--project .lead { max-width: 980px; }

/* image + project brief */
.project-intro { padding-block: clamp(4px, .8vw, 16px) clamp(48px, 4.4vw, 84px); }
.project-intro__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(28px, 3.4vw, 64px); align-items: start; }
@media (max-width: 1023px) { .project-intro__grid { grid-template-columns: 1fr; } }
.project-figure { margin: 0; }
.project-figure__view { position: relative; padding: 14px; }
.project-figure__frame { border-radius: 4px; overflow: hidden; background: #0b1322; }
.project-figure__frame img { width: 100%; height: auto; max-height: 640px; object-fit: cover; }
.project-figure figcaption { margin: 4px 14px 0; font-size: 14px; font-style: italic; color: #aeb9c9; }
.vf { position: absolute; width: 28px; height: 28px; border: 0 solid var(--sky); pointer-events: none; }
.vf--tl { top: 0; left: 0; border-top-width: 2px; border-left-width: 2px; }
.vf--tr { top: 0; right: 0; border-top-width: 2px; border-right-width: 2px; }
.vf--bl { bottom: 0; left: 0; border-bottom-width: 2px; border-left-width: 2px; }
.vf--br { bottom: 0; right: 0; border-bottom-width: 2px; border-right-width: 2px; }
.motion .vf { animation: vfIn 1.1s cubic-bezier(.2,.7,.2,1) .5s both; }
.motion .vf--tl { --vx: -14px; --vy: -14px; } .motion .vf--tr { --vx: 14px; --vy: -14px; }
.motion .vf--bl { --vx: -14px; --vy: 14px; }  .motion .vf--br { --vx: 14px; --vy: 14px; }
@keyframes vfIn { from { opacity: 0; transform: translate(var(--vx), var(--vy)); } to { opacity: 1; transform: none; } }

.mission-brief {
  position: relative; overflow: hidden; margin-top: 14px;
  border: 1px solid rgba(255,255,255,.12); border-radius: 8px;
  background: #0c1829 url("../img/bg-contour-band.webp") center / cover;
  padding: clamp(22px, 1.8vw, 34px);
}
.mission-brief::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(12,24,41,.84), rgba(12,24,41,.95)); }
.mission-brief > * { position: relative; }
.mission-brief__head {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px;
  padding-bottom: 16px; border-bottom: 1px solid var(--rule);
}
.mission-brief__label { font-family: "Montserrat", sans-serif; font-size: 13px; text-transform: uppercase; letter-spacing: .14em; color: #6f9fd6; }
.brief-status { display: inline-flex; align-items: center; gap: 9px; font-size: 13px; line-height: 1; text-transform: uppercase; letter-spacing: .08em; color: #d3dbe6; }
.brief-status i { width: 8px; height: 8px; border-radius: 50%; background: #5fe0a0; box-shadow: 0 0 0 0 rgba(95,224,160,.55); }
.motion .brief-status i { animation: statusPulse 2.2s ease-out infinite; }
@keyframes statusPulse { 0% { box-shadow: 0 0 0 0 rgba(95,224,160,.55); } 70%, 100% { box-shadow: 0 0 0 9px rgba(95,224,160,0); } }
.mission-brief__list { margin: 0; }
.mission-brief__list > div { display: grid; gap: 3px; padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.1); }
.mission-brief__list > div:last-child { border-bottom: 0; padding-bottom: 2px; }
.mission-brief__list dt { font-family: "Montserrat", sans-serif; font-size: 12px; text-transform: uppercase; letter-spacing: .1em; color: #8e9bb0; }
.mission-brief__list dd { margin: 0; font-size: 17px; line-height: 1.45; }
.mission-brief__scan {
  position: absolute !important; left: 0; right: 0; top: -80px; height: 80px; pointer-events: none;
  background: linear-gradient(180deg, rgba(47,154,230,0), rgba(47,154,230,.12) 80%, rgba(140,195,255,.45) 100%);
}
.motion .mission-brief__scan { animation: briefScan 7s cubic-bezier(.45,0,.55,1) 1.2s infinite; }
@keyframes briefScan { 0% { top: -80px; } 45%, 100% { top: 100%; } }

/* story */
.project-body { padding-block: 0 clamp(64px, 5.2vw, 100px); }
.project-body__grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(40px, 6.2vw, 120px); align-items: start; }
@media (max-width: 1023px) { .project-body__grid { grid-template-columns: 1fr; } }
.project-prose { max-width: 860px; }
.project-sec { padding-top: clamp(26px, 2.2vw, 40px); border-top: 1px solid var(--rule); }
.project-sec + .project-sec, .project-quote + .project-sec { margin-top: clamp(40px, 3.4vw, 64px); }
.project-sec__no { margin: 0 0 10px; font-family: "Montserrat", sans-serif; font-size: 14px; letter-spacing: .14em; color: var(--sky); }
.project-sec__title {
  font-family: var(--font-display-x); font-weight: 900; font-stretch: 125%;
  font-size: clamp(22px, 1.6vw, 30px); line-height: 1.2; margin-bottom: clamp(14px, 1.1vw, 20px);
}
.project-sec p { margin: 0 0 1.1em; line-height: 1.72; }
.project-sec p:last-child { margin-bottom: 0; }
.project-sec a { color: #8cc3ff; text-underline-offset: 3px; }
.project-sec a:hover { color: var(--white); }
.project-quote {
  margin: clamp(40px, 3.4vw, 64px) 0 0; padding: clamp(24px, 2.2vw, 40px);
  display: grid; grid-template-columns: 50px minmax(0, 1fr); gap: 10px 24px;
  background: var(--navy-panel); border-radius: 6px; border-left: 4px solid var(--sky);
}
.project-quote img { width: 46px; height: auto; grid-row: span 2; margin-top: 4px; }
.project-quote blockquote { margin: 0; font-size: var(--fs-lead); line-height: 1.5; font-style: italic; }
.project-quote blockquote p { margin: 0; }
.project-quote figcaption { display: grid; gap: 2px; font-size: 16px; line-height: 1.4; }
.project-quote figcaption strong { font-weight: 700; }
.project-quote figcaption span { color: #c9d4e3; }
@media (max-width: 599px) { .project-quote { grid-template-columns: 1fr; } .project-quote img { grid-row: auto; } }

.project-aside { position: sticky; top: 110px; display: grid; gap: 28px; }
@media (max-width: 1023px) { .project-aside { position: static; } }
.project-reading h2 {
  font-family: "Montserrat", sans-serif; font-weight: 500; font-size: 13px; text-transform: uppercase; letter-spacing: .12em;
  color: #8e9bb0; margin-bottom: 10px;
}
.project-reading ul { list-style: none; border-top: 1px solid var(--rule); }
.project-reading a {
  display: grid; gap: 4px; padding: 14px 0; border-bottom: 1px solid var(--rule);
  font-size: 16px; line-height: 1.4; text-decoration: none; transition: color .2s;
}
.project-reading a span { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #6f9fd6; }
.project-reading a:hover { color: #bcd6f5; }
.project-aside__cta { padding: 24px; border: 1px solid rgba(255,255,255,.14); border-radius: 6px; background: rgba(30,51,82,.35); }
.project-aside__cta p { margin: 0 0 16px; font-size: 18px; line-height: 1.4; font-weight: 600; }

/* next project */
.next-project {
  position: relative; display: flex; align-items: center; overflow: hidden; isolation: isolate;
  min-height: clamp(240px, 21vw, 400px); background: #0b1322; color: var(--white); text-decoration: none;
}
.next-project__bg { position: absolute; inset: 0; z-index: -2; }
.next-project__bg img { width: 100%; height: 100%; object-fit: cover; opacity: .55; transition: transform 1.2s cubic-bezier(.2,.7,.2,1), opacity .6s; }
.next-project::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(16,29,50,.96) 0%, rgba(16,29,50,.72) 45%, rgba(16,29,50,.25) 100%),
              linear-gradient(180deg, rgba(16,29,50,.5) 0%, rgba(16,29,50,0) 30%);
}
.next-project__inner { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px 32px; width: 100%; padding-block: clamp(40px, 4vw, 72px); }
.next-project__label { font-size: 14px; text-transform: uppercase; letter-spacing: .14em; color: #8cc3ff; }
.next-project__title { grid-column: 1; font-family: var(--font-display); font-weight: 900; font-stretch: 125%; font-size: var(--fs-h2); line-height: 1.15; }
.next-project__go {
  grid-column: 2; grid-row: 1 / span 2; display: grid; place-items: center;
  width: clamp(56px, 4.6vw, 88px); aspect-ratio: 1; border: 1px solid rgba(255,255,255,.6); border-radius: 50%;
  transition: background-color .3s, border-color .3s, transform .45s cubic-bezier(.2,.7,.2,1);
}
.next-project__go svg { width: 26%; height: auto; }
.next-project:hover .next-project__bg img { transform: scale(1.05); opacity: .72; }
.next-project:hover .next-project__go { background: var(--blue); border-color: var(--blue); transform: translateX(6px); }
.project-all { display: flex; justify-content: center; padding-top: clamp(40px, 3.6vw, 68px); }

/* ==========================================================================
   About
   ========================================================================== */
.about-hero__sub { margin-top: 14px; color: #c9d4e3; }
.eyebrow {
  display: inline-flex; align-items: center; gap: 14px; margin: 0 0 clamp(18px, 1.6vw, 30px);
  font-family: "Montserrat", sans-serif; font-size: 14px; text-transform: uppercase; letter-spacing: .14em; color: #8cc3ff;
}
.eyebrow::before { content: ""; width: 40px; height: 1px; background: currentColor; }
.about-mission { position: relative; overflow: hidden; isolation: isolate; padding-block: clamp(72px, 7vw, 136px) clamp(96px, 9vw, 170px); }
.about-mission__media { position: absolute; inset: 0; z-index: -1; }
.about-mission__media video { width: 100%; height: 100%; object-fit: cover; }
.about-mission__media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(16,29,50,.86) 0%, rgba(16,29,50,.58) 50%, rgba(16,29,50,.22) 100%),
              linear-gradient(180deg, rgba(16,29,50,1) 0%, rgba(16,29,50,0) 22%, rgba(16,29,50,0) 78%, rgba(16,29,50,1) 100%);
}
.about-mission__title { margin-bottom: clamp(20px, 2vw, 36px); }
.about-mission__body { max-width: 820px; }
.about-mission__body p { margin: 0 0 1em; }
.about-mission__body p:last-child { margin-bottom: 0; }

.about-panels .split-panel { position: relative; }
.about-panel__no {
  position: absolute; top: clamp(36px, 3.2vw, 60px); right: clamp(24px, 3.6vw, 70px); margin: 0;
  font-family: var(--font-display-x); font-weight: 900; font-stretch: 125%; font-size: clamp(64px, 6.25vw, 120px); line-height: 1;
  color: rgba(255,255,255,.06);
}
.about-panels .split-panel:last-child .about-panel__no { right: var(--gutter); }
.about-panel__icon { width: auto; height: clamp(44px, 3.3vw, 63px); margin-bottom: clamp(20px, 1.8vw, 34px); align-self: flex-start; }
.about-panels .h2 { margin-bottom: clamp(16px, 1.8vw, 34px); }
.about-panels .split-panel p { margin-bottom: 14px; }
.about-panels .split-panel p:last-of-type { margin-bottom: clamp(28px, 2.9vw, 56px); }

.leadership { padding-block: var(--sec-pad); }
.team-grid { list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 1.8vw, 34px); }
.team-card {
  display: grid; grid-template-columns: minmax(0, 38fr) minmax(0, 62fr);
  background: var(--navy-panel-2); border-radius: 6px; overflow: hidden;
  transition: transform .45s cubic-bezier(.2,.7,.2,1), box-shadow .45s;
}
.team-card:hover { transform: translateY(-6px); box-shadow: 0 24px 50px rgba(0,0,0,.35); }
.team-card__photo { position: relative; margin: 0; min-height: 100%; overflow: hidden; background: #cfd4da; }
.team-card__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.team-card:hover .team-card__photo img { transform: scale(1.04); }
.team-card__photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(270deg, rgba(29,41,63,.55) 0%, rgba(29,41,63,0) 30%); }
.team-card__body { padding: clamp(24px, 2.1vw, 40px) clamp(22px, 2vw, 38px); }
.team-card__name { font-family: var(--font-display-x); font-weight: 900; font-stretch: 125%; font-size: clamp(20px, 1.35vw, 26px); line-height: 1.2; }
.team-card__role {
  margin: 8px 0 18px; padding-bottom: 18px; border-bottom: 1px solid var(--rule);
  font-size: 14px; line-height: 1.45; text-transform: uppercase; letter-spacing: .06em; color: #8cc3ff;
}
.team-card__list { font-size: 15px; line-height: 1.55; color: #d3dbe6; }
.team-card__list li { padding-left: 18px; }
.team-card__list li + li { margin-top: .7em; }
.team-card__list li::before { width: 6px; height: 6px; top: .62em; left: 1px; background: var(--sky); }
@media (max-width: 1199px) {
  .team-card { grid-template-columns: 1fr; }
  .team-card__photo { min-height: 0; aspect-ratio: 4 / 5; max-height: 420px; }
  .team-card__photo::after { background: linear-gradient(0deg, rgba(29,41,63,.9) 0%, rgba(29,41,63,0) 26%); }
}
@media (max-width: 599px) { .team-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   Services hero: the HUGIN comes to life (hover, sonar pings, sheen, strobe, bubbles)
   ========================================================================== */
.auv-wrap { position: relative; }
.auv { display: block; width: 100%; height: auto; overflow: visible; }
.auv__sonar { opacity: 0; }
.auv__ping { fill: none; stroke: #8cc3ff; stroke-width: 1.4; vector-effect: non-scaling-stroke; opacity: 0; transform-box: view-box; transform-origin: 432px 146px; }
.auv__sheen { opacity: 0; }
.auv__strobe { fill: #c6ffd9; opacity: 0; filter: drop-shadow(0 0 5px #6dffa6); }
.auv__bubbles circle { fill: rgba(200,230,255,.1); stroke: rgba(210,235,255,.8); stroke-width: 1; opacity: 0; transform-box: fill-box; transform-origin: center; }

.motion .auv-wrap { animation: auvIn 2s cubic-bezier(.2,.7,.2,1) .15s both; }
.motion .auv { transform: translate3d(calc(var(--mx, 0) * 12px), calc(var(--my, 0) * 9px), 0); transition: transform 1.4s cubic-bezier(.2,.7,.2,1); }
.motion .auv__float { transform-box: view-box; transform-origin: 340px 110px; animation: auvFloat 7.5s ease-in-out infinite; }
.motion .auv__shadow { transform-box: view-box; transform-origin: 480px 200px; animation: auvShadow 7.5s ease-in-out infinite; }
.motion .auv__sonar { animation: fadeIn 1.4s ease 1.6s both; }
.motion .auv__ping { animation: auvPing 3.6s cubic-bezier(.3,.55,.4,1) infinite; }
.motion .auv__ping:nth-of-type(2) { animation-delay: 1.2s; }
.motion .auv__ping:nth-of-type(3) { animation-delay: 2.4s; }
.motion .auv__sheen { opacity: 1; animation: auvSheen 9s cubic-bezier(.45,0,.3,1) 2.4s infinite both; }
.motion .auv__strobe { animation: auvStrobe 3.2s linear infinite; }
.motion .auv__bubbles circle { animation: auvBubble 3.2s ease-out var(--bd, 0s) infinite; }
@keyframes auvIn { from { opacity: 0; transform: translate3d(-70px, 18px, 0); } to { opacity: 1; transform: none; } }
@keyframes auvFloat { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(5px, -11px) rotate(-1.1deg); } }
@keyframes auvShadow { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(.95, .9); opacity: .7; } }
@keyframes auvPing { 0% { transform: scale(.06); opacity: 0; } 12% { opacity: .85; } 100% { transform: scale(1); opacity: 0; } }
@keyframes auvSheen { 0% { transform: translateX(0) skewX(-18deg); } 38%, 100% { transform: translateX(1000px) skewX(-18deg); } }
@keyframes auvStrobe { 0%, 84%, 88%, 92%, 100% { opacity: 0; } 86%, 90% { opacity: 1; } }
@keyframes auvBubble { 0% { transform: translate(0, 0) scale(.3); opacity: 0; } 15% { opacity: .9; } 100% { transform: translate(var(--bx, -40px), var(--by, -30px)) scale(1.25); opacity: 0; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* ==========================================================================
   Legal pages
   ========================================================================== */
.legal { padding-block: clamp(16px, 1.6vw, 32px) clamp(72px, 6.2vw, 120px); }
.legal__body h2:first-child { margin-top: 0; }
.prose ol { margin: 0 0 1.2em; padding-left: 1.7em; }
.prose ol li { padding-left: .35em; }
.prose ol li::before { content: none; }
.legal__list { list-style: lower-roman; }

/* equipment tabs: all tabs visible (wrap), panel fades in, image credit */
.tabs { flex-wrap: wrap; overflow: visible; }
.tab-panel__img { position: relative; }
.tab-panel__credit {
  position: absolute; right: 8px; bottom: 8px; padding: 3px 8px; border-radius: 3px;
  background: rgba(16,29,50,.7); color: #d3dbe6; font-size: 11px; letter-spacing: .04em;
}
.tab-panel__more { margin: 16px 0 0 !important; font-size: 15px; }
.tab-panel__more a { color: #8cc3ff; text-underline-offset: 3px; }
.tab-panel__more a:hover { color: var(--white); }
.motion .tab-panel:not([hidden]) { animation: panelIn .55s cubic-bezier(.2,.7,.2,1) both; }
@keyframes panelIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* contact sonar: South Carolina coastline under the sweep */
.sonar__screen { background: radial-gradient(circle at 50% 50%, rgba(36,99,175,.22), rgba(9,19,34,.95) 75%), #0a1628; }
.sonar__map { position: absolute; inset: 0; width: 100%; height: 100%; }
.sonar__grat { fill: none; stroke: rgba(140,195,255,.07); stroke-width: 1; }
.sonar__states path { fill: rgba(47,154,230,.07); stroke: rgba(140,195,255,.28); stroke-width: 1.2; stroke-linejoin: round; }
.sonar__sc { fill: rgba(47,154,230,.2); stroke: #8cc3ff; stroke-width: 2.2; stroke-linejoin: round; filter: drop-shadow(0 0 6px rgba(47,154,230,.6)); }
.sonar__lbl { fill: rgba(214,232,255,.72); font-family: "Montserrat", sans-serif; font-size: 30px; font-weight: 600; letter-spacing: .32em; }
.sonar__lbl--sea { fill: rgba(140,195,255,.55); font-style: italic; font-weight: 500; letter-spacing: .4em; }
.motion .sonar__sc { stroke-dasharray: 1; stroke-dashoffset: 1; animation: scDraw 3.2s cubic-bezier(.45,0,.3,1) .4s forwards; }
@keyframes scDraw { to { stroke-dashoffset: 0; } }

/* offshore maps: click a thumbnail to swap it into the main frame */
.offshore-main { margin: 0; }
.offshore-main .map-frame { aspect-ratio: 1216 / 938; }
.offshore-main .map-frame img { width: 100%; height: 100%; object-fit: contain; }
.offshore-main .map-frame.is-swapping img { animation: mapIn .5s cubic-bezier(.2,.7,.2,1); }
@keyframes mapIn { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
.map-thumb {
  display: block; width: 100%; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer;
}
.map-thumb .map-frame { display: block; border-width: 2px; aspect-ratio: 221 / 167; transition: border-color .25s, box-shadow .25s, transform .35s cubic-bezier(.2,.7,.2,1); }
.map-thumb .map-frame img { width: 100%; height: 100%; object-fit: cover; }
.map-thumb:hover .map-frame, .map-thumb:focus-visible .map-frame { border-color: var(--sky); box-shadow: 0 0 0 3px rgba(47,154,230,.35); transform: translateY(-3px); }
.map-thumb:focus-visible { outline: none; }
.map-thumb__cap { display: block; font-size: 10px; line-height: 1.8; margin-top: 8px; }
.map-thumb__cap strong { display: block; font-size: 14px; line-height: 1.2; }

/* Exploration Areas: Georgia-for-scale graphic (swoosh around the border, handwritten name, flexing arrows) */
.ga { display: block; width: 100%; height: auto; overflow: visible; }
.ga__outline { fill: none; stroke: #2dabf8; stroke-width: 15; stroke-linejoin: round; }
.ga__text, .ga__arrow, .ga__diamond { fill: #2dabf8; }
.ga__script path { fill: #fff; }
.ga__swoosh { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.ga__swooshes { opacity: 0; }
.motion .ga.is-in .ga__swooshes { animation: fadeIn .6s ease 2.8s both; }
.ga__swoosh--glow { stroke: #8fd3ff; stroke-width: 26; }
.ga__swoosh--tail { stroke: #bfe6ff; stroke-width: 11; }
.ga__swoosh--core { stroke: #fff; stroke-width: 7; }
.motion .ga__swoosh { stroke-dasharray: calc(var(--a) * 1px) calc((1000 - var(--a)) * 1px); }
.motion .ga.is-in .ga__swoosh { animation: gaSwoosh 5.5s linear 2.8s infinite both; }
.ga__swoosh--glow { opacity: .55; }
.ga__swoosh--tail { opacity: .5; }
@keyframes gaSwoosh { from { stroke-dashoffset: calc((1000 + var(--a)) * 1px); } to { stroke-dashoffset: calc(var(--a) * 1px); } }
.motion .ga__w { stroke-dasharray: 1 1; stroke-dashoffset: 1; }
.motion .ga.is-in .ga__w { animation: gaWrite var(--wl) cubic-bezier(.4,0,.6,1) calc(var(--wd) + 500ms) forwards; }
@keyframes gaWrite { to { stroke-dashoffset: 0; } }
.ga__arrow, .ga__diamond { transform-box: fill-box; transform-origin: center; }
.motion .ga.is-in .ga__arrow { animation: gaFlex 3.2s cubic-bezier(.45,0,.2,1) 1.2s infinite; }
.motion .ga.is-in .ga__diamond { animation: gaCore 3.2s cubic-bezier(.45,0,.2,1) 1.2s infinite; }
@keyframes gaFlex { 0%, 62%, 100% { transform: translate(0, 0); } 22% { transform: translate(var(--ax), var(--ay)); } 34% { transform: translate(var(--ax), var(--ay)); } }
@keyframes gaCore { 0%, 62%, 100% { transform: scale(1); } 22%, 34% { transform: scale(1.28); } }

/* button arrows sit on the optical centre of the uppercase labels */
.btn .i-arrow, .project-tile__more .i-arrow { position: relative; top: -.07em; }

/* Deep-Sea Minerals partnership: kicker lines in the lighter blue */
.partnership__kicker { color: #8cc3ff; }

/* Until the Adobe Fonts kit is on the page, visitors without Transducer see the Archivo stand-in.
   Tighten its tracking a little so headings read closer to Transducer's compact spacing. */
.no-transducer :is(.display, .display-x, .h1, .h2, .h57, .h3, .article-hero__title, .project-hero__title, .next-project__title,
  .stat-box p, .sonar figcaption strong, .news-card__title, .footer-col h2, .team-card__name, .project-sec__title, .project-card__title) {
  letter-spacing: -.02em;
}
